如何下载完整的块?

浏览537次
0
我想用Java和bitcoinj下载一个完整的块,然后把它解析成一个数组来使用它。下面是一些(非常基本的)伪代码:
接入网络;
下载最新块;
写/转换块到可读数组;
读取块数组;
sout:blockArray[23][55]//这应该可以得到一个txid,地址。。。
//或者类似的。我只想能够从块中读取值
有办法吗?我在这里找到了以下解决方案(使用bitcoinj发现对等点并下载块链):
公共类DumpLastBlock{
public static void main(字符串args[])引发异常{
WalletAppKit=新的WalletAppKit(MainNetParams.get获取(),新java.io.File文件(“,”测试“);
开始和等待();
区块链=链条套件();
区块商店bs=chain.getBlockStore链接();
对等=套件.对等组().getDownloadPeer();
b区=对等.getBlock(bs.GET链头().getHeader().getHash()).get();
系统输出打印(b) ;
}
}
不幸的是,开始和等待()不再可用。
有人能帮我得到最新的块,并能够读取其值吗?
非常感谢:)
比特币
分享
改进这个问题
跟随
编辑时间:12月2日14:10
12月2日17:46被问到
交流
12511银质徽章1313青铜徽章
添加评论
1个答案
0
bitcoinj源代码中的示例正是您要查找的:
BriefLogFormatter.init();
//分析命令行参数
OptionParser=新建OptionParser();
optiostopts=null;
List<String>nonOpts=null;
试试看{
解析器.接受(“localhost”,“连接到localhost节点”);
解析器.接受(“帮助”,“显示程序选项”);
选项=解析器.parse(args);
如果(选择has(“帮助”)){
系统输出打印(“用法:org.bitcoinj.示例.FetchBlock[–localhost]<blockHash>“);
解析器.printHelpOn(系统输出);
返回;
}
非选项=选项非可选参数();
如果(非选项大小() != 1) {
抛出新的IllegalArgumentException(“块散列数不正确,请只提供一个块散列。”);
}
}捕获(OptionException | IllegalArgumentException e){
系统错误打印(如getMessage());
系统错误打印(“用法:org.bitcoinj.示例.FetchBlock[–localhost]<blockHash>“);
解析器.printHelpOn(系统错误);
返回;
}
//连接到testnet并查找对等方
系统输出打印(“连接到节点”);
最终网络参数params=TestNet3参数获取();
BlockStore BlockStore=新内存BlockStore(params);
区块链=新区块链(params,blockStore);
PeerGroup PeerGroup=新PeerGroup(params,chain);
如果(!选择has(“本地主机”)){
peerGroup.addPeerDiscovery文件(新DnsDiscovery(params));
}其他{
PeerAddress addr=新PeerAddress(参数,InetAddress.getLocalHost());
peerGroup.addAddress地址(地址);
}
peerGroup.start开始();
peerGroup.waitForPeers对等(1) .get();
对等=peerGroup.getConnectedPeers节点().get(0);
//通过对等机检索块
Sha256Hash blockHash=Sha256哈希.wrap(不选择。获取(0));
未来<Block>未来=对等.getBlock(区块散列);
系统输出打印(“正在等待节点向我们发送请求的块:”+blockHash);
块=未来。获取();
系统输出打印(块);
对等组.stopAsync();
分享
改进这个答案
跟随
编辑:2018年6月2日13:06
回复时间:2018年5月25日18:11
尼基塔
3544青铜徽章
请在您的答案中添加与问题相关的链接的详细信息。在目前的答案中,如果链接停止工作,未来的用户将无法从中获得任何信息。–Raghav Sood 2018年5月26日7:46
添加评论

T500定制 (29)blockchainBTC比特币区块链

发表评论

邮箱地址不会被公开。 必填项已用*标注