Java 类org.bitcoinj.core.CheckpointManager 实例源码

项目:xwallet    文件:BitcoinSetupAction.java   
/**
 *
 * @param callbacks
 */
@Override
public void execute(CoinActionCallback<CurrencyCoin>... callbacks) {
    this._callbacks = callbacks;
    NetworkParameters netParams = Constants.NETWORK_PARAMETERS;

    initWallet(netParams);

    _walletKit.setDownloadListener(this)
            .setBlockingStartup(false)
            .setCheckpoints(CheckpointManager.openStream(netParams))
            .setUserAgent(ServiceConsts.SERVICE_APP_NAME, "0.1");

    _walletKit.startAsync();
}
项目:uidcore-java    文件:NodeUtils.java   
/**
 * Synchronize a list of {@code Wallet} against the BlockChain.
 * 
 * @param params the NetworkParameters to use
 * @param wallets the list of Wallet
 * @param chainFile the chain file to use
 * @param listener the listener to inform for status changes
 */
public static void syncBlockChain(UniquidNodeConfiguration configuration, final List<Wallet> wallets, final File chainFile, 
        final DownloadProgressTracker listener, final NativePeerEventListener peerListener) {

    try {
        NetworkParameters params = configuration.getNetworkParameters();

        BlockStore chainStore = new SPVBlockStore(params, chainFile);

        for (Wallet wallet : wallets) {

            if ((wallet.getLastBlockSeenHeight() < 1) &&
                    (openStream(params) != null)) {

                try {

                    CheckpointManager.checkpoint(params, openStream(params), chainStore,
                            configuration.getCreationTime());

                    StoredBlock head = chainStore.getChainHead();
                    LOGGER.info("Skipped to checkpoint " + head.getHeight() + " at "
                             + Utils.dateTimeFormat(head.getHeader().getTimeSeconds() * 1000));

                } catch (Throwable t) {

                    LOGGER.warn("Problem using checkpoints", t);

                }

                break;
            }

        }

        BlockChain chain = new BlockChain(params, wallets, chainStore);

        final PeerGroup peerGroup = new PeerGroup(params, chain);
        peerGroup.setUserAgent("UNIQUID", "0.1");
        peerGroup.setMaxPeersToDiscoverCount(3);
        peerGroup.setMaxConnections(2);

        if (params.getDnsSeeds() != null &&
                params.getDnsSeeds().length > 0) {
            peerGroup.addPeerDiscovery(new DnsDiscovery(params));
        } else if (params.getAddrSeeds() != null &&
                    params.getAddrSeeds().length > 0) {
                        peerGroup.addPeerDiscovery(new SeedPeers(params.getAddrSeeds(), params));
        } else {
            throw new Exception("Problem with Peers discovery!");
        }

        LOGGER.info("BLOCKCHAIN Preparing to download blockchain...");

        peerGroup.addConnectedEventListener(peerListener);
        peerGroup.addDisconnectedEventListener(peerListener);
        peerGroup.addDiscoveredEventListener(peerListener);
        peerGroup.start();
        peerGroup.startBlockChainDownload(listener);
        listener.await();
        peerGroup.stop();
        chainStore.close();

        LOGGER.info("BLOCKCHAIN downloaded.");

    } catch (Exception ex) {

        LOGGER.error("Exception catched ", ex);

    }
}
项目:EternityWallAndroid    文件:EWWalletServiceTest.java   
@Test
public void btcWalletTestWithCheckpoint() throws Exception {
    final byte[] seed = Bitcoin.getEntropyFromPassphrase("sweet field bless symptom play cherry fault curious mechanic cross gift thunder");
    EWDerivation ewDerivation = new EWDerivation(seed);

    final MainNetParams params = MainNetParams.get();
    final String blockpath  = "./spvblockstore"  + System.currentTimeMillis();
    //final File blockChainFile = new File(getDir("blockstore_" + receivingId, Context.MODE_PRIVATE), "blockchain.spvchain");
    //final String pathname = "./spvblockstore" + System.currentTimeMillis();
    //final String pathname = "./spvblockstore1448448596283";

    File blockFile = new File(blockpath);

    BlockStore blockStore = new SPVBlockStore(params, blockFile);
    StoredBlock chainHead = blockStore.getChainHead();
    if(chainHead.getHeight()==0) {  //first run
        CheckpointManager.checkpoint(PARAMS, BitcoinNetwork.getInstance().getCheckPointsStream() , blockStore, EPOCH);
    }
    //final StoredBlock checkpointBefore = manager.getCheckpointBefore(startFrom);
    //blockStore.setChainHead(checkpointBefore);

    Wallet wallet = new Wallet(PARAMS);

    BlockChain chain = new BlockChain(params, wallet, blockStore);
    //BlockChain chain = new BlockChain(params, blockStore);
    PeerGroup peerGroup = new PeerGroup(params, chain);
    //peerGroup.addAddress(InetAddress.getByName("10.106.137.73"));
    peerGroup.setMaxConnections(1);
    peerGroup.setDownloadTxDependencies(false);

    //peerGroup.addPeerDiscovery(new DnsDiscovery(params));
    //EWFilterProvider provider = new EWFilterProvider( );
    //System.out.println("provider " + provider);

    //peerGroup.addPeerFilterProvider(provider);

    DownloadProgressTracker downloadProgressTracker = new DownloadProgressTracker();


    EWChainListener listener = new EWChainListener();
    chain.addListener(listener);
    //peerGroup.setMaxConnections(10);

    peerGroup.setFastCatchupTimeSecs(EPOCH);  //24 Giugno 2015 12:00
    peerGroup.startBlockChainDownload(downloadProgressTracker);


    long startDownload = System.currentTimeMillis();
    peerGroup.downloadBlockChain();
    final long endDownload = System.currentTimeMillis() - startDownload;
    System.out.println("Download run for " + endDownload);

    System.out.println("---------FINISH----------");
    System.out.println("peerGroup.getConnectedPeers()=" + peerGroup.getConnectedPeers());
    System.out.println("blockpath " + blockpath);
    System.out.println("chain.getBestChainHeight()=" + chain.getBestChainHeight() );
    System.out.println("chainHeadHeightAtBeginning=" + chainHead.getHeight() );

    System.out.println("TX# " + listener.counter);


    //System.out.println("checkpointBefore.getHeight()=" + checkpointBefore.getHeight() );
    //System.out.println("Derivation took " + l);

    blockStore.close();
    //wallet.addFollowingAccountKeys(a,2);

}