weiihann
|
88fd10529f
|
nomt/merkle: add Phase 2 merkle engine (PageWalker, PageSet, ElidedChildren)
Implement the in-memory batch update engine for the NOMT binary merkle trie:
- elided.go: ElidedChildren 64-bit bitfield for tracking elided child pages
- pageset.go: PageSet interface + MemoryPageSet in-memory implementation
- pagewalker.go: PageWalker left-to-right walker with partial compaction
- AdvanceAndReplace: replace terminal nodes with sub-tries
- AdvanceAndPlaceNode: place pre-computed child page roots
- Conclude: finalize walk and return new root + updated pages
- compactUp/compactStep: hash upward with leaf/terminator compaction
- core/triepos.go: add SharedDepth method needed by PageWalker
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-02-12 17:10:58 +08:00 |
|
weiihann
|
7aebfb3c71
|
nomt/core: add Phase 1 core primitives for NOMT binary merkle trie
Implement foundational types and algorithms for the NOMT storage engine:
- node.go: Node/KeyPath/ValueHash types with MSB-based kind discrimination
- hasher.go: Keccak256 hashing with leaf/internal MSB labeling
- page.go: 4096-byte RawPage layout (126 nodes + elided children + pageID)
- pageid.go: PageID encode/decode with shift-then-add encoding
- triepos.go: TriePosition navigation (Down/Up/Sibling/PageID/NodeIndex)
- pagediff.go: 128-bit PageDiff bitfield for tracking changed nodes
- update.go: BuildTrie 3-pointer left-frontier algorithm, LeafOpsSpliced
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-02-12 17:05:00 +08:00 |
|