ethereum/go-ethereum · error

UpdateStem is not implemented for TransitionTrie

Error message

UpdateStem is not implemented for TransitionTrie

What it means

Error "UpdateStem is not implemented for TransitionTrie" thrown in ethereum/go-ethereum.

Source

Thrown at trie/transitiontrie/transition.go:245

// If the trie does not contain a value for key, the returned proof contains all
// nodes of the longest existing prefix of the key (at least the root), ending
// with the node that proves the absence of the key.
func (t *TransitionTrie) Prove(key []byte, proofDb ethdb.KeyValueWriter) error {
	panic("not implemented") // TODO: Implement
}

// IsUBT returns true if the trie is verkle-tree based
func (t *TransitionTrie) IsUBT() bool {
	// For all intents and purposes, the calling code should treat this as a verkle trie
	return true
}

// UpdateStem updates a group of values, given the stem they are using. If
// a value already exists, it is overwritten.
// TODO: This is Verkle-specific and requires access to private fields.
// Not currently used in the codebase.
func (t *TransitionTrie) UpdateStem(key []byte, values [][]byte) error {
	panic("UpdateStem is not implemented for TransitionTrie")
}

// Copy creates a deep copy of the transition trie.
func (t *TransitionTrie) Copy() *TransitionTrie {
	return &TransitionTrie{
		overlay: t.overlay.Copy(),
		// base in immutable, so there is no need to copy it
		base:    t.base,
		storage: t.storage,
	}
}

// UpdateContractCode updates the contract code for the given address.
func (t *TransitionTrie) UpdateContractCode(addr common.Address, codeHash common.Hash, code []byte) error {
	return t.overlay.UpdateContractCode(addr, codeHash, code)
}

// Witness returns a set containing all trie nodes that have been accessed.

View on GitHub (pinned to 6bb0588ad8)

Solutions

  1. TransitionTrie.UpdateStem is not implemented. Apply stem updates to the underlying Verkle (overlay) trie directly instead of through the TransitionTrie wrapper.

Example fix

// Update the overlay verkle trie stem-by-stem:
overlay := tt.Overlay()
if err := overlay.UpdateStem(stem, values); err != nil { return err }

When it happens

Trigger: Calling UpdateStem on a TransitionTrie; the method is a Verkle-specific stub on the transition wrapper.

Common situations: Experimental Verkle transition tooling touching stems via the transition abstraction.


AI-assisted analysis of ethereum/go-ethereum@6bb0588ad8 (2026-08-15). Data as JSON: /api/errors/1942f2fbce5f23c8. Report an issue: GitHub.