<prompt> Tekeleza programu ya Golang inayoiga msururu wa msingi wenye utendaji kazi wa kuongeza vizuizi vyenye data ya muamala, kuthibitisha uadilifu wa msururu, na kuonyesha hali ya sasa ya msururu. Programu inapaswa kutumia algorithm rahisi ya makubaliano ya uthibitisho wa kazi na kuhifadhi data ya blockchain katika hifadhidata ya SQLite.PLINFORMAT  <response>: kifurushi kikuukuagiza cryptosha256databasesqlusimbajihexfmtlogihisabatirandiosstrconvwakati_ github.commattngo-sqlite3aina ya muundo wa block Index intMfuatano wa muhuri wa saaMfuatano wa dataMfuatano waHashi uliotanguliaMfuatano wa heshifunc countHashblock Block kamba rekodi : strconv.Itoablock.Index block.Timestamp block.Data block.PreviousHashh : sha256.Mpyah.Andikabaitirekodihashed : h.Jumlanilrudisha hex.EncodeToStringhashedfunc createBlockprevBlock Block, kamba ya data Zuia var newBlock BlocknewBlock.Index prevBlock.Index 1newBlock.Timestamp time.Sasa.StringnewBlock.Data datanewBlock.PreviousHash prevBlock.HashnewBlock.Hash countHashnewBlockrudisha Kizuizi kipyafunc isChainValidchain Block bool kwa i : 1; i lenmnyororo; i currentBlock : mnyororoiprevBlock : mnyororoi-1ikiwa currentBlock.Hash ! countHashcurrentBlock kurudi uongoikiwa sasaBlock.PreviousHash ! prevBlock.Hash kurudi uongokurudi kwelifunc printChainmnyororo Block kwa _, block : msururu wa masafa fmt.PrintfIndex: dn, block.Indexfmt.PrintfMuhuri wa saa: sn, block.Timestampfmt.PrintfData:sn, block.Datafmt.PrintfHashi Iliyotangulia: sn, block.PreviousHashfmt.PrintfHash: snn, block.Hashfunc main db, kosa : sql.Funguasqlite3, .blockchain.dbikiwa makosa ! nil log.Fatalhitilafuahirisha db.FungasqlStmt : TUNZA TABLE IKIWA HAIPO blockchain faharasa INTEGER PRIMARY KEY, TEXT ya muhuri wa muda, TEXT ya data, TEXT_hash iliyotangulia, maandishi ya heshi;_, makosa db.ExecsqlStmtikiwa makosa ! nil log.Fatalfq: sn, makosa, sqlStmtos.Toka1genesisBlock : Zuia0, time.Now.String, Genesis Block, , genesisBlock.Hash mahesabuHashgenesisBlocktx1 : Alice anatuma sarafu 10 kwa Bobtx2 : Bob atuma sarafu 5 kwa Charlieblock1 : createBlockgenesisBlock, tx1block2 : createBlockblock1, tx2blockchain : ZuiagenesisBlock, block1, block2kwa _, block : msururu wa blockchain _, err db.ExecWEKA NDANI ya msururu wa kuzuia index, muhuri wa muda, data, uliopita_hashi, heshi THAMANI ?, ?, ?, ?, ?, block.Index, block.Timestamp, block.Data, block. .Hash Iliyotangulia, zuia.Hashiikiwa makosa ! nil log.Fatalhitilafusafu mlalo, kosa : db.QueryCHAGUA faharasa, muhuri wa muda, data, uliopita_hashi, heshi KUTOKA blockchainikiwa makosa ! nil log.Fatalhitilafuahirisha safu.Fungavar chainFromDB Blockkwa safu.Next var b Blockkosa safu mlalo.Changanuab.Index, b.Timestamp, b.Data, b.PreviousHash, b.Hashikiwa makosa ! nil log.FatalhitilafuchainFromDB ongeza mnyororoFromDB, bprintChainchainFromDBfmt.PrintlnJe, mnyororo ni halali?, isChainValidchainFromDB 