mirror of
				https://github.com/Qortal/altcoinj.git
				synced 2025-11-03 05:57:21 +00:00 
			
		
		
		
	Add new BlockImporter.
This commit is contained in:
		@@ -0,0 +1,71 @@
 | 
			
		||||
package com.google.bitcoin.tools;
 | 
			
		||||
 | 
			
		||||
import java.io.File;
 | 
			
		||||
 | 
			
		||||
import com.google.bitcoin.core.AbstractBlockChain;
 | 
			
		||||
import com.google.bitcoin.core.Block;
 | 
			
		||||
import com.google.bitcoin.core.BlockChain;
 | 
			
		||||
import com.google.bitcoin.core.FullPrunedBlockChain;
 | 
			
		||||
import com.google.bitcoin.core.NetworkParameters;
 | 
			
		||||
import com.google.bitcoin.core.PrunedException;
 | 
			
		||||
import com.google.bitcoin.core.VerificationException;
 | 
			
		||||
import com.google.bitcoin.store.BlockStore;
 | 
			
		||||
import com.google.bitcoin.store.BlockStoreException;
 | 
			
		||||
import com.google.bitcoin.store.BoundedOverheadBlockStore;
 | 
			
		||||
import com.google.bitcoin.store.DiskBlockStore;
 | 
			
		||||
import com.google.bitcoin.store.FullPrunedBlockStore;
 | 
			
		||||
import com.google.bitcoin.store.H2FullPrunedBlockStore;
 | 
			
		||||
import com.google.bitcoin.store.MemoryBlockStore;
 | 
			
		||||
import com.google.bitcoin.store.MemoryFullPrunedBlockStore;
 | 
			
		||||
import com.google.bitcoin.store.SPVBlockStore;
 | 
			
		||||
import com.google.bitcoin.utils.BlockFileLoader;
 | 
			
		||||
import com.google.common.base.Preconditions;
 | 
			
		||||
 | 
			
		||||
/** Very thin wrapper around {@link com.google.bitcoin.util.BlockFileLoader} */
 | 
			
		||||
public class BlockImporter {
 | 
			
		||||
    public static void main(String[] args) throws BlockStoreException, VerificationException, PrunedException {
 | 
			
		||||
        System.out.println("USAGE: BlockImporter (prod|test) (H2|BoundedOverhead|Disk|MemFull|Mem|SPV) [blockStore]");
 | 
			
		||||
        System.out.println("       blockStore is required unless type is Mem or MemFull");
 | 
			
		||||
        System.out.println("       eg BlockImporter prod H2 /home/user/bitcoinj.h2store");
 | 
			
		||||
        System.out.println("       Does full verification if the store supports it");
 | 
			
		||||
        Preconditions.checkArgument(args.length == 2 || args.length == 3);
 | 
			
		||||
        
 | 
			
		||||
        NetworkParameters params = null;
 | 
			
		||||
        if (args[0].equals("test"))
 | 
			
		||||
            params = NetworkParameters.testNet();
 | 
			
		||||
        else
 | 
			
		||||
            params = NetworkParameters.prodNet();
 | 
			
		||||
        
 | 
			
		||||
        BlockStore store = null;
 | 
			
		||||
        if (args[1].equals("H2")) {
 | 
			
		||||
            Preconditions.checkArgument(args.length == 3);
 | 
			
		||||
            store = new H2FullPrunedBlockStore(params, args[2], 100);
 | 
			
		||||
        } else if (args[1].equals("BoundedOverhead")) {
 | 
			
		||||
            Preconditions.checkArgument(args.length == 3);
 | 
			
		||||
            store = new BoundedOverheadBlockStore(params, new File(args[2]));
 | 
			
		||||
        } else if (args[1].equals("Disk")) {
 | 
			
		||||
            Preconditions.checkArgument(args.length == 3);
 | 
			
		||||
            store = new DiskBlockStore(params, new File(args[2]));
 | 
			
		||||
        } else if (args[1].equals("MemFull")) {
 | 
			
		||||
            Preconditions.checkArgument(args.length == 2);
 | 
			
		||||
            store = new MemoryFullPrunedBlockStore(params, 100);
 | 
			
		||||
        } else if (args[1].equals("Mem")) {
 | 
			
		||||
            Preconditions.checkArgument(args.length == 2);
 | 
			
		||||
            store = new MemoryBlockStore(params);
 | 
			
		||||
        } else if (args[1].equals("SPV")) {
 | 
			
		||||
            Preconditions.checkArgument(args.length == 3);
 | 
			
		||||
            store = new SPVBlockStore(params, new File(args[2]));
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        AbstractBlockChain chain = null;
 | 
			
		||||
        if (store instanceof FullPrunedBlockStore)
 | 
			
		||||
            chain = new FullPrunedBlockChain(params, (FullPrunedBlockStore) store);
 | 
			
		||||
        else
 | 
			
		||||
            chain = new BlockChain(params, store);
 | 
			
		||||
        
 | 
			
		||||
        BlockFileLoader loader = new BlockFileLoader(params, BlockFileLoader.getReferenceClientBlockFileList());
 | 
			
		||||
        
 | 
			
		||||
        for (Block block : loader)
 | 
			
		||||
            chain.add(block);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user