比特幣區(qū)塊的存儲是通過扁平化的區(qū)塊文件(也可理解為區(qū)塊“數(shù)據(jù)庫”)以及索引數(shù)據(jù)庫實現(xiàn)的髓棋,由于不是使用通用的關(guān)系型數(shù)據(jù)庫实檀,理解起來比較困難,通過關(guān)系型數(shù)據(jù)庫設(shè)計是否會更好理解按声?然后再通過編程膳犹,將區(qū)塊數(shù)據(jù)提取插入到關(guān)系型數(shù)據(jù)庫中,例如MSSQLServer签则、MySQL等數(shù)據(jù)庫中须床。最后還可以通過各種編程語言實現(xiàn)區(qū)塊瀏覽器或與各種應(yīng)用業(yè)務(wù)結(jié)合。
設(shè)計初稿如下:
一怀愧、E-R圖設(shè)計
二侨颈、數(shù)據(jù)表簡要設(shè)計
1、區(qū)塊表:ID(主鍵:偏移量)芯义、nVersion哈垢、hashPrevBlock、hashMerkleRoot扛拨、nTime耘分、nBits、nNonce绑警、vTxCount
2求泰、交易表:ID(主鍵)、BlockHeaderID(外鍵關(guān)聯(lián))计盒、TxNo渴频、nVersion、InCount北启、OutCount卜朗、LockedTime
3拔第、輸入表:ID(主鍵)、TxID(外鍵關(guān)聯(lián))场钉、TxInNo蚊俺、TxOutHash、TxOutIdx逛万、scriptSig泳猬、nSequence
4、輸出表:ID(主鍵)宇植、TxID(外鍵關(guān)聯(lián))得封、TxOutNo、TxOut_nValue当纱、scriptPubKey
5呛每、索引表:ID(主鍵)、phashKey(索引)坡氯、pprevID、pnextID洋腮、phashBlock箫柳、nFile(區(qū)塊表)、nBlockPos(nBlockID)啥供、nHeight悯恍、nVersion、hashMerkleRoot伙狐、nTime涮毫、nBits、nNonce贷屎、hashPrev罢防、hashNext
6、錢包表:
“χ丁咒吐??属划?
7恬叹、最優(yōu)鏈表:
同眯?绽昼??
說明:通過設(shè)計觸發(fā)器须蜗,控制表中的數(shù)據(jù)只能添加硅确、不能刪除和修改目溉。
? ? ? 添加數(shù)據(jù)時,通過程序(挖礦)控制寫入疏魏,同時停做,寫入,驗證鏈上數(shù)據(jù)是否被篡改大莫。
--------------------------------------------------------------------------------------
8蛉腌、業(yè)務(wù)數(shù)據(jù)表
將增、刪只厘、改烙丛、查等業(yè)務(wù)操作,作為一筆交易羔味,交由管理員審核或自動審核河咽。