比特幣區(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ù)操作,作為一筆交易,交由管理員審核或自動審核。