Príklad kódu pre blockchain v Jave
1. Definovanie Bloku
Každý blok v blockchaine obsahuje údaje, hash predchádzajúceho bloku a vlastný hash. Tu je jednoduchá trieda pre blok:
javaimport java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class Block { private String previousHash; private String hash; private String data; public Block(String data, String previousHash) { this.data = data; this.previousHash = previousHash; this.hash = calculateHash(); } public String calculateHash() { String text = previousHash + data; MessageDigest digest; try { digest = MessageDigest.getInstance("SHA-256"); } catch (NoSuchAlgorithmException e) { throw new RuntimeException(e); } byte[] hashBytes = digest.digest(text.getBytes()); StringBuilder sb = new StringBuilder(); for (byte b : hashBytes) { sb.append(String.format("%02x", b)); } return sb.toString(); } public String getHash() { return hash; } public String getPreviousHash() { return previousHash; } public String getData() { return data; } }
2. Definovanie Blockchainu
Blockchain bude spravovať bloky a zabezpečiť, aby každý blok bol správne pripojený k predchádzajúcemu bloku. Tu je základná trieda pre blockchain:
javaimport java.util.ArrayList; public class Blockchain { private ArrayList
chain; public Blockchain() { chain = new ArrayList<>(); // Inicializujeme blockchain s prvým blokom chain.add(new Block("Genesis Block", "0")); } public void addBlock(String data) { String previousHash = chain.get(chain.size() - 1).getHash(); Block newBlock = new Block(data, previousHash); chain.add(newBlock); } public boolean isChainValid() { for (int i = 1; i < chain.size(); i++) { Block currentBlock = chain.get(i); Block previousBlock = chain.get(i - 1); // Skontroluj hash predchádzajúceho bloku if (!currentBlock.getPreviousHash().equals(previousBlock.getHash())) { return false; } // Skontroluj hash aktuálneho bloku if (!currentBlock.getHash().equals(currentBlock.calculateHash())) { return false; } } return true; } public void printChain() { for (Block block : chain) { System.out.println("Block:"); System.out.println("Data: " + block.getData()); System.out.println("Hash: " + block.getHash()); System.out.println("Previous Hash: " + block.getPreviousHash()); System.out.println(); } } }
3. Testovanie Blockchainu
Teraz môžeme vyskúšať našu implementáciu blockchainu pridaním niekoľkých blokov a overením reťazca:
javapublic class BlockchainTest { public static void main(String[] args) { Blockchain myBlockchain = new Blockchain(); myBlockchain.addBlock("Block 1 Data"); myBlockchain.addBlock("Block 2 Data"); myBlockchain.addBlock("Block 3 Data"); myBlockchain.printChain(); System.out.println("Is blockchain valid? " + myBlockchain.isChainValid()); } }
Tento kód vytvorí blockchain, pridá niekoľko blokov a vypíše všetky bloky spolu s ich hashmi a hashmi predchádzajúcich blokov. Nakoniec overí, či je blockchain platný. Tento príklad je zjednodušenou verziou skutočných blockchainov, ktoré sú oveľa komplexnejšie a obsahujú ďalšie funkcie ako konsenzuálne algoritmy a inteligentné kontrakty.
Populárne komentáre
Zatiaľ žiadne komentáre