首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用bitcoinj接收有关新块的通知

如何使用bitcoinj接收有关新块的通知
EN

Stack Overflow用户
提问于 2017-12-08 22:16:23
回答 2查看 453关注 0票数 7

我正在尝试接收有关比特币区块链中的块的通知。我正在使用这段代码,但是这个代码从2010年开始打印了数百个街区。

代码语言:javascript
复制
import org.bitcoinj.core.*;
import org.bitcoinj.net.discovery.DnsDiscovery;
import org.bitcoinj.params.MainNetParams;
import org.bitcoinj.store.BlockStore;
import org.bitcoinj.store.MemoryBlockStore;


public class BlockChainMonitorTest {


    BlockChainMonitorTest() throws Exception {

        NetworkParameters params = MainNetParams.get();

        BlockStore bs = new MemoryBlockStore(params);
        BlockChain bc = new BlockChain(params, bs);

        PeerGroup peerGroup = new PeerGroup(params, bc);
        peerGroup.setUserAgent("PeerMonitor", "1.0");
        peerGroup.setMaxConnections(4);
        peerGroup.addPeerDiscovery(new DnsDiscovery(params));

        bc.addNewBestBlockListener((StoredBlock block) -> {
            System.out.println("addNewBestBlockListener");
            System.out.println(block);
        });

        //peerGroup.setFastCatchupTimeSecs(1483228800); // 2017-01-01

        peerGroup.start();
        peerGroup.waitForPeers(4).get();
        Thread.sleep(1000 * 60 * 30);
        peerGroup.stop();

    }

    public static void main(String[] args) throws Exception {
        new BlockChainMonitorTest();
    }
}

我只想听新的街区。有什么想法吗?

我试过setFastCatchupTimeSecs,但似乎没有收到任何事件。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-18 13:23:20

因此,我进入了源代码,显然,不需要下载完整的块链,接收块通知的唯一方法就是修改bitcoinj源代码。

在AbstractBlockChain.java中,第352行左右:

将方法public boolean add(Block block)的主体替换为:

代码语言:javascript
复制
informListenersForNewBlock(block, NewBlockType.BEST_CHAIN, null, null, new StoredBlock(block, BigInteger.ZERO, 0));
return true;
票数 0
EN

Stack Overflow用户

发布于 2017-12-18 07:38:32

不如使用集合来存储已经找到的块,并检查块是否已经存在,如果没有,则只执行System.out.println调用。

代码语言:javascript
复制
bc.addNewBestBlockListener((StoredBlock block) -> {
    if (!blocksFoundMap.contains(block)) {
        System.out.println("addNewBestBlockListener");
        System.out.println(block);
    }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47722969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档