{"record":{"id":"7b636c25827b027a","repo":"ethereum/go-ethereum","slug":"not-implemented","errorCode":null,"errorMessage":"not implemented","messagePattern":"not implemented","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"trie/bintrie/trie.go","lineNumber":396,"sourceCode":"\n\treturn t.Hash(), nodeset\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 *BinaryTrie) NodeIterator(startKey []byte) (trie.NodeIterator, error) {\n\treturn newBinaryNodeIterator(t, nil)\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 *BinaryTrie) Prove(key []byte, proofDb ethdb.KeyValueWriter) error {\n\tpanic(\"not implemented\")\n}\n\n// Copy creates a deep copy of the trie.\nfunc (t *BinaryTrie) Copy() *BinaryTrie {\n\treturn &BinaryTrie{\n\t\tstore:      t.store.Copy(),\n\t\treader:     t.reader,\n\t\ttracer:     t.tracer.Copy(),\n\t\tgroupDepth: t.groupDepth,\n\t\trecorder:   t.recorder,\n\t}\n}\n\n// IsUBT returns true if the trie is a Verkle tree.\nfunc (t *BinaryTrie) IsUBT() bool {\n\t// TODO @gballet This is technically NOT a verkle tree, but it has the same\n\t// behavior and basic structure, so for all intents and purposes, it can be\n\t// treated as such. Rename this when verkle gets removed.","sourceCodeStart":378,"sourceCodeEnd":414,"githubUrl":"https://github.com/ethereum/go-ethereum/blob/6bb0588ad8e7f922e4ad5580f51265a4097af08f/trie/bintrie/trie.go#L378-L414","documentation":"BinaryTrie.Prove is a stub that panics with 'not implemented'. The binary (Verkle-style) trie in this codebase does not support Merkle-proof construction yet; calling Prove always panics regardless of arguments.","triggerScenarios":"Calling trie.Prove(key, proofDb) on a *bintrie.BinaryTrie obtained from a binary trie instance; generic code that accepts a trie interface and calls Prove when the concrete type is the binary trie.","commonSituations":"Reusing proof-generation code written for the Merkle Patricia trie against the binary trie; witness/proof tooling migrated to a chain using binary tries; testing an API surface that is not yet available in this version.","solutions":["Do not call Prove on BinaryTrie; use the trie package's proof APIs (trie.Prove on the Merkle Patricia trie) for keys in a Merkle trie.","Use the supported witness/recorder APIs (trie.Recorder) if you need authenticated data from the binary trie.","Track upstream: implement or wait for Prove support in bintrie before enabling proof paths for binary tries."],"exampleFix":"// before\nerr := binaryTrie.Prove(key, proofDb) // panics: not implemented\n\n// after\nif _, isBin := t.(*bintrie.BinaryTrie); isBin {\n    return errors.New(\"proofs not supported for binary trie\")\n}\nerr := mptTrie.Prove(key, proofDb)","handlingStrategy":"type-guard","validationCode":"if _, isBinary := t.(*bintrie.BinaryTrie); isBinary {\n    return errors.New(\"proofs not supported for binary trie\")\n}","typeGuard":"func supportsProve(t interface{ Prove([]byte, ethdb.KeyValueWriter) error }) bool {\n    if _, ok := t.(*bintrie.BinaryTrie); ok {\n        return false // Prove panics: not implemented\n    }\n    return true\n}","tryCatchPattern":null,"preventionTips":["Feature-detect proof support by concrete trie type before calling Prove.","Keep proof code paths separate per trie flavor instead of sharing one interface call.","Watch upstream release notes for bintrie proof support before enabling it."],"tags":["trie","bintrie","not-implemented","proofs","unsupported-operation","panic","go"],"backgroundTag":null,"analyzedSha":"6bb0588ad8e7f922e4ad5580f51265a4097af08f","analyzedAt":"2026-08-15T10:06:53.996Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}