<prompt> Andika programu ya Java inayoiga mfumo wa msingi wa blockchain. Programu inapaswa kuwa na uwezo wa kuunda vizuizi vipya vilivyo na data, kudhibitisha uadilifu wa mnyororo, na kugundua majaribio yoyote ya kuchezea. Kwa kuongeza, tekeleza utaratibu wa uthibitisho wa kazi ili kupata blockchain.  <response>: Hapa kuna programu rahisi ya Java ambayo inaiga mfumo wa msingi wa blockchain: javaagiza java.util.ArrayList;agiza java.util.Tarehe;Kizuizi cha darasa hashi ya kamba ya umma; Kamba ya umma iliyopitaHash; data ya Kamba ya kibinafsi; Stempu ya muda mrefu ya kibinafsi; int nonce binafsi; Kizuizi cha ummaData ya Kamba, Mfuatano uliopitaHash hii.data data; this.previousHash previousHash; this.timeStamp new Date.getTime; this.hash mahesabuHash; Public Kamba hesabuHash rudisha StringUtil.applySha256previousHash Long.toStringtimeStamp Integer.toStringnonce data; mgodi utupu wa ummaBlockugumu wa ndani Shabaha ya kamba Kamba mpyacharugumu mpya.badilisha0, 0; wakati !hash.substring0, ugumu.sawalengo nonce; heshi hesabuHash; System.out.printlnKuzuia kuchimbwa: hashi; darasa StringUtil Kamba tuli ya umma applySha256Ingizo la Kamba jaribu MessageDigest digest MessageDigest.getInstanceSHA-256; byte hashi digest.digestinput.getBytesUTF-8; StringBuffer hexString StringBuffer mpya; kwa int i 0; i hash.length; i Kamba hex Integer.toHexString0xff hashi; ikiwa hex.length 1 hexString.append0; hexString.appendhex; rudisha hexString.toString; kukamata Isipokuwa e tupa RuntimeException mpyae; BlockchainDemo ya darasa la umma public static ArrayList blockchain new ArrayList; ugumu wa int tuli ya umma 5; utupu tuli wa umma String args blockchain.addKizuizi kipyaKizuizi cha kwanza, 0; System.out.printlnUchimbaji wa kwanza block...; blockchain.get0.mineBlockugumu; blockchain.ongeza Block mpya Block ya Pili, blockchain.getblockchain.size - 1.hash; System.out.printlnUchimbaji kizuizi cha pili...; blockchain.get1.mineBlockugumu; blockchain.ongeza Block mpya Blugo la Tatu, blockchain.getblockchain.size - 1.hash; System.out.printlnUchimbaji block ya tatu...; blockchain.get2.mineBlockugumu; System.out.printlnnBlockchain ni halali: isChainValid; String blockchainJson new GsonBuilder.setPrettyPrinting.unda.toJsonblockchain; System.out.printlnnThe blockchain:; System.out.printlnblockchainJson; public tuli Boolean isChainValid kwa int i 1; i blockchain.size; i Zuia sasaBlock blockchain.geti; Zuia uliopitaBlock blockchain.geti - 1; ikiwa !currentBlock.hash.equalscurrentBlock.calculateHash ! System.out.printlnHeshi za sasa sio sawa; kurudi kwa uwongo; ikiwa !PreviousBlock.hash.equalscurrentBlock.previousHash System.out.printlnHeshi zilizotangulia si sawa; kurudi kwa uwongo; kurudi kweli; Mpango huu unajenga blockchain rahisi na vitalu vitatu. Kila kizuizi kina data, heshi ya kizuizi kilichotangulia, na heshi yake mwenyewe. Mbinu ya isChainValid hukagua uadilifu wa msururu kwa kulinganisha heshi ya kila block na heshi iliyokokotolewa na kuhakikisha kuwa heshi ya awali ya block inalingana na heshi ya awali ya block ya sasa.Utaratibu wa uthibitisho wa kazi unatekelezwa kupitia mbinu ya mineBlock katika darasa la Block. Njia hii inahitaji idadi fulani ya zero zinazoongoza kwenye hashi, iliyoamuliwa na kiwango cha ugumu. Kadiri ugumu unavyoongezeka, ndivyo blockchain ilivyo salama zaidi lakini pia ndivyo inavyochukua muda mrefu kuchimba kizuizi. 