区块
一般由这几部分构成:
基础数据、父块数据、普通转账交易数据、挖矿交易数据,可以根据具体需求进行扩展。
type Block struct {
Block_Header
Proof [32]byte `json:"-"` // Reserved for future
Tips []crypto.Hash `json:"tips"` // belongs_to_many,可关联多个父块
Tx_hashes []crypto.Hash `json:"tx_hashes"` // has_many,有多笔交易
}
主要关联对象:
- Miner_TX
- Tips
- Tx_hashes
self | has_one | has_many | belongs_to_many |
---|---|---|---|
Block_Header | Proof | Tx_hashes | Tips |
另,区块里没有类似“交易-默克尔树”之类的东西。
区块主要起到承载交易、验证交易合法性的作用,其次是通过排序确定区块在链上的顺序和通过调整难度控制发行曲线,矿工需要通过 PoW 工作量证明计算得到哈希值并确保符合难度要求,故有“挖矿”的说法。
DERO 采用的是 BlockDAG(区块呈有向无环图结构),并非 BlockChain(区块呈链结构),所以整体吞吐率会比之前有一个数量级的提升。并且,因为使用了 DAG 结构,一个区块可以引用多个父块,不再产生孤儿块、不再需要软分叉。