MCPcopy Create free account
hub / github.com/DNAProject/DNA / AddStateMerkleTreeRoot

Method AddStateMerkleTreeRoot

core/store/ledgerstore/state_store.go:189–214  ·  view source on GitHub ↗
(blockHeight uint32, writeSetHash common.Uint256)

Source from the content-addressed store, hash-verified

187}
188
189func (self *StateStore) AddStateMerkleTreeRoot(blockHeight uint32, writeSetHash common.Uint256) error {
190 if blockHeight < self.stateHashCheckHeight {
191 return nil
192 } else if blockHeight == self.stateHashCheckHeight {
193 self.deltaMerkleTree = merkle.NewTree(0, nil, nil)
194 }
195 key := self.genStateMerkleTreeKey()
196
197 self.deltaMerkleTree.AppendHash(writeSetHash)
198 treeSize := self.deltaMerkleTree.TreeSize()
199 hashes := self.deltaMerkleTree.Hashes()
200 value := common.NewZeroCopySink(make([]byte, 0, 4+len(hashes)*common.UINT256_SIZE))
201 value.WriteUint32(treeSize)
202 for _, hash := range hashes {
203 value.WriteHash(hash)
204 }
205 self.store.BatchPut(key, value.Bytes())
206
207 key = self.genStateMerkleRootKey(blockHeight)
208 value.Reset()
209 value.WriteHash(writeSetHash)
210 value.WriteHash(self.deltaMerkleTree.Root())
211 self.store.BatchPut(key, value.Bytes())
212
213 return nil
214}
215
216//AddBlockMerkleTreeRoot add a new tree root
217func (self *StateStore) AddBlockMerkleTreeRoot(txRoot common.Uint256) error {

Callers 2

TestStateMerkleRootFunction · 0.80
saveBlockToStateStoreMethod · 0.80

Calls 12

genStateMerkleTreeKeyMethod · 0.95
WriteUint32Method · 0.95
WriteHashMethod · 0.95
BytesMethod · 0.95
genStateMerkleRootKeyMethod · 0.95
ResetMethod · 0.95
NewTreeFunction · 0.92
AppendHashMethod · 0.80
TreeSizeMethod · 0.80
HashesMethod · 0.80
RootMethod · 0.80
BatchPutMethod · 0.65

Tested by 1

TestStateMerkleRootFunction · 0.64