区块的结构 / go实现简易区块链 #1

in STEEM CN/中文2 years ago

利用假期学习些底层的知识,比如用go语言实现下区块链的逻辑。重新学习下区块的结构,区块链的结构,哈希函数这些。前期进展较慢,慢慢地,渐入佳境。

区块结构.jpg

区块结构示意图

type Block struct {
    Version       int64
    PrevBlockHash []byte
    Hash          []byte
    MerKelRoot    []byte
    TimeStamp     int64
    Bits          int64
    Nonce         int64
    Data          []byte
}

func NewBlock(data string, prevBlockHash []byte) *Block {
    var block Block
    block = Block{
        Version:       1,
        PrevBlockHash: prevBlockHash,
        MerKelRoot:    []byte{},
        TimeStamp:     time.Now().Unix(),
        Bits:          1,
        Nonce:         1,
        Data:          []byte(data)}
    block.SetHash()
    return &block
}

type BlockChain struct {
    blocks []*Block
}

func NewBlockChain() *BlockChain {
    block := NewGenesisBlock()
    return &BlockChain{blocks: []*Block{block}}
}

先用struct来实现区块和区块链,对比下真实的结构,感觉还是蛮有味的。

Coin Marketplace

STEEM 0.31
TRX 0.11
JST 0.033
BTC 64550.89
ETH 3156.32
USDT 1.00
SBD 4.30