天天看點

java開發用amd處理器_用 Java 開發一個區塊鍊

導讀:在本篇文章中,我們将區塊鍊剝離到基本部分,并使用Java中的POJO建立一個區塊鍊,我們一起來看一看吧。
java開發用amd處理器_用 Java 開發一個區塊鍊

相信你我都聽說過加密貨币和區塊鍊,以及它們是如何互相關聯的,這是真實的情況。但它們實際上是互相差別并可以獨立存在。加密貨币更多的是一種産品,而區塊鍊是一種促進無信任團體間交易的技術。

完整的生産型區塊鍊應用非常龐大且複雜,但它的核心是很簡單且功能強大的實作。區塊鍊可以包含一個或多個交易的區塊集合。每個塊被哈希(散列)化,然後哈希配對,哈希再次配對,并再次哈希,直到單個哈希被保留,形成Merkle根。

每個塊存儲前一個塊的哈希,并将區塊連結在一起。這可確定所有的區塊無法被修改塊。

下面我們就用Java,開發最簡單的(Hello World)區塊鍊。

這是Java中的簡單塊表示(POJO)。它将資料儲存為一個字元串,但它可以是任何你可以想象到的,包括以太坊風格的智能合約。代碼如下:

package org.demo;import lombok.Getter;import lombok.ToString;import java.util.Arrays;@[email protected] class Block { private int previousHash; private String data; private int hash; public Block(String data, int previousHash) { this.data = data; this.previousHash = previousHash; // Mix the content of this block with previous hash to create the hash of this new block // and that's what makes it block chain this.hash = Arrays.hashCode(new Integer[]{data.hashCode(), previousHash}); }}

下面是一個簡單的區塊鍊實作,具備基本的驗證功能。代碼如下:

package org.demo;import java.util.ArrayList;import java.util.List;public class BlockChain { public static void main(String[] args) { ListblockChainList = new ArrayList<>(); Block genesis = new Block("BlockChain", 0); blockChainList.add(genesis); Block helloBlock = new Block("Hello", blockChainList.get(blockChainList.size()-1).getHash()); blockChainList.add(helloBlock); Block worldBlock = new Block("World", blockChainList.get(blockChainList.size()-1).getHash()); blockChainList.add(worldBlock); Block dZoneBlock = new Block("DZone", blockChainList.get(blockChainList.size()-1).getHash()); blockChainList.add(dZoneBlock); System.out.println("---------------------"); System.out.println("- BlockChain -"); System.out.println("---------------------"); blockChainList.forEach(System.out::println); System.out.println("---------------------"); System.out.println("Is valid?: " + validate(blockChainList)); System.out.println("---------------------"); // corrupt block chain by modifying one of the block Block hiBlock = new Block("Hi", genesis.getHash()); int index = blockChainList.indexOf(helloBlock); blockChainList.remove(index); blockChainList.add(index, hiBlock); System.out.println("Corrupted block chain by replacing 'Hello' block with 'Hi' Block"); System.out.println("---------------------"); System.out.println("- BlockChain -"); System.out.println("---------------------"); blockChainList.forEach(System.out::println); System.out.println("---------------------"); System.out.println("Is valid?: " + validate(blockChainList)); System.out.println("---------------------"); } private static boolean validate(ListblockChain) { boolean result = true; Block lastBlock = null; for(int i = blockChain.size() -1; i >= 0; i--) { if(lastBlock == null) { lastBlock = blockChain.get(i); } else { Block current = blockChain.get(i); if(lastBlock.getPreviousHash() != current.getHash()) { result = false; break; } lastBlock = current; } } return result; }}

免責聲明:本文轉載僅作分享,版權歸原作者所有。如侵權請聯系我們删除!