区块链结构层设计与实现

undefined区块链结构层设计与实现

区块链结构主要包括Block、Blockchain、Transaction、UTXO,他们都与P2P网络无关,与第七版相比,这些结构的设计并没有太大的变动:

undefinedBlock

  1. type Block struct {
  2. Timestamp int64`json:"Timestamp"`
  3. Hash []byte`json:"Hash"`
  4. PrevHash []byte`json:"PrevHash"`
  5. Transactions []*Transaction `json:"Transactions"`
  6. Nonce int`json:"Nonce"`
  7. Height int`json:"Height"`
  8. MerkleRoot []byte`json:"MerkleRoot"`
  9. Difficulty int`json:"Difficulty"`
  10. TxCount int`json:"TxCount"`
  11. }

Block需要存储到数据库,所以需要为每一个字段给出json名称

undefinedBlockchain

  1. type Blockchain struct {
  2. LastHash []byte
  3. Database *badger.DB
  4. InstanceId string
  5. }

undefinedTransaction

  1. typeTransactionstruct {
  2. ID []byte
  3. Inputs []TxInput
  4. Outputs []TxOutput
  5. }

undefinedUTXO

与前一版设计与实现基本相同,utxo也是同样保存到数据库中,以提升效率。

undefinedMerkleTree

与前一版设计与实现相同

undefined数据存储

undefined数据库变更为更高效的badger.DB

badger.DB的操作与bolt.DB的操作有些区别。