{"record":{"id":"01d8ab81ebf49746","repo":"ethereum/go-ethereum","slug":"not-implemented-01d8ab","errorCode":null,"errorMessage":"not implemented","messagePattern":"not implemented","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"trie/transitiontrie/transition.go","lineNumber":220,"sourceCode":"// corresponding node hash. All collected nodes(including dirty leaves if\n// collectLeaf is true) will be encapsulated into a nodeset for return.\n// The returned nodeset can be nil if the trie is clean(nothing to commit).\n// Once the trie is committed, it's not usable anymore. A new trie must\n// be created with new root and updated trie database for following usage\nfunc (t *TransitionTrie) Commit(collectLeaf bool) (common.Hash, *trienode.NodeSet) {\n\t// Just return if the trie is a storage trie: otherwise,\n\t// the overlay trie will be committed as many times as\n\t// there are storage tries. This would kill performance.\n\tif t.storage {\n\t\treturn common.Hash{}, nil\n\t}\n\treturn t.overlay.Commit(collectLeaf)\n}\n\n// NodeIterator returns an iterator that returns nodes of the trie. Iteration\n// starts at the key after the given start key.\nfunc (t *TransitionTrie) NodeIterator(startKey []byte) (trie.NodeIterator, error) {\n\tpanic(\"not implemented\") // TODO: Implement\n}\n\n// Prove constructs a Merkle proof for key. The result contains all encoded nodes\n// on the path to the value at key. The value itself is also included in the last\n// node and can be retrieved by verifying the proof.\n//\n// If the trie does not contain a value for key, the returned proof contains all\n// nodes of the longest existing prefix of the key (at least the root), ending\n// with the node that proves the absence of the key.\nfunc (t *TransitionTrie) Prove(key []byte, proofDb ethdb.KeyValueWriter) error {\n\tpanic(\"not implemented\") // TODO: Implement\n}\n\n// IsUBT returns true if the trie is verkle-tree based\nfunc (t *TransitionTrie) IsUBT() bool {\n\t// For all intents and purposes, the calling code should treat this as a verkle trie\n\treturn true\n}","sourceCodeStart":202,"sourceCodeEnd":238,"githubUrl":"https://github.com/ethereum/go-ethereum/blob/6bb0588ad8e7f922e4ad5580f51265a4097af08f/trie/transitiontrie/transition.go#L202-L238","documentation":"Error \"not implemented\" thrown in ethereum/go-ethereum.","triggerScenarios":"Calling NodeIterator on a TransitionTrie (MPT-to-Verkle transition wrapper), which has no iterator implementation.","commonSituations":"Debug/snap/iteration code paths running against a chain in the Verkle transition period.","solutions":["TransitionTrie.NodeIterator is not implemented. Use the underlying overlay/base trie's iterator (e.g., iterate the Verkle/stem trie or the MPT base) instead of iterating the transition wrapper directly.","Avoid calling NodeIterator on a TransitionTrie during the transition period; gate the call on trie type."],"exampleFix":"if tt, ok := tr.(*transitiontrie.TransitionTrie); ok {\n    return tt.Base().NodeIterator(startKey) // or Overlay(), as appropriate\n}\nreturn tr.NodeIterator(startKey)","handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"6bb0588ad8e7f922e4ad5580f51265a4097af08f","analyzedAt":"2026-08-15T10:06:53.996Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}