比特币区块的存储是通过扁平化的区块文件(也可理解为区块“数据库”)以及索引数据库实现的,由于不是使用通用的关系型数据库,理解起来比较困难,通过关系型数据库设计是否会更好理解?然后再通过编程,将区块数据提取插入到关系型数据库中,例如MSSQLServer、MySQL等数据库中。最后还可以通过各种编程语言实现区块浏览器或与各种应用业务结合。
设计初稿如下:
一、E-R图设计
二、数据表简要设计
1、区块表:ID(主键:偏移量)、nVersion、hashPrevBlock、hashMerkleRoot、nTime、nBits、nNonce、vTxCount
2、交易表:ID(主键)、BlockHeaderID(外键关联)、TxNo、nVersion、InCount、OutCount、LockedTime
3、输入表:ID(主键)、TxID(外键关联)、TxInNo、TxOutHash、TxOutIdx、scriptSig、nSequence
4、输出表:ID(主键)、TxID(外键关联)、TxOutNo、TxOut_nValue、scriptPubKey
5、索引表:ID(主键)、phashKey(索引)、pprevID、pnextID、phashBlock、nFile(区块表)、nBlockPos(nBlockID)、nHeight、nVersion、hashMerkleRoot、nTime、nBits、nNonce、hashPrev、hashNext
6、钱包表:
???
7、最优链表:
???
说明:通过设计触发器,控制表中的数据只能添加、不能删除和修改。
添加数据时,通过程序(挖矿)控制写入,同时,写入,验证链上数据是否被篡改。
--------------------------------------------------------------------------------------
8、业务数据表
将增、删、改、查等业务操作,作为一笔交易,交由管理员审核或自动审核。
网友评论