使用Spring Boot实现模拟区块链

18-10-21 banq
         

任何对学习区块链感兴趣并且具有spring boot基础知识的初学者都可以使用这段代码。

块:

public class Block implements Serializable {
    
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    
    public int height;
    public String prevHash;
    public String data;
    
    
    public long nonce = 0;
    public String blockHash;

块链:

public class BlockChain {
    
    public static Stack<Block> chain = new Stack<Block>();
         
}

交易:

public class Transaction {
    
    public String fromAddr;
    public String data;
    

应用:

@Component
@Scope(value = "singleton")
public class CoreApp {

    private List<Transaction> tranList;

    public CoreApp() {
        System.out.println("Core App Object Creation");
        tranList = new ArrayList<>();
    }

    public void setupGenesis() {
        Block genesis = new Block(0, "0", "Genesis");
        genesis.blockHash = BlockUtils.getHashofBlock(genesis);
        BlockChain.chain.add(genesis);
    }

    public void addBlock() {
        
        if(tranList.size()==0)
            return;
        
        Block b = new Block(BlockUtils.getHeight() + 1, BlockUtils.getLastBlockHash(), tranList.toString());
        b.blockHash = BlockUtils.getHashofBlock(b);
        BlockChain.chain.add(b);
        tranList.clear();
        
    }

    public void updateTransactionList(Transaction tran) {
        tranList.add(tran);
    }

}​​​​​​​

github