{"record":{"id":"8dbdd40574110341","repo":"ethereum/go-ethereum","slug":"ethash-pow-sealing-not-supported-any-more","errorCode":null,"errorMessage":"ethash (pow) sealing not supported any more","messagePattern":"ethash \\(pow\\) sealing not supported any more","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"critical","filePath":"consensus/ethash/ethash.go","lineNumber":77,"sourceCode":"\n// NewFullFaker creates an ethash consensus engine with a full fake scheme that\n// accepts all blocks as valid, without checking any consensus rules whatsoever.\nfunc NewFullFaker() *Ethash {\n\treturn &Ethash{\n\t\tfakeFull: true,\n\t}\n}\n\n// Close closes the exit channel to notify all backend threads exiting.\nfunc (ethash *Ethash) Close() error {\n\treturn nil\n}\n\n// Seal generates a new sealing request for the given input block and pushes\n// the result into the given channel. For the ethash engine, this method will\n// just panic as sealing is not supported anymore.\nfunc (ethash *Ethash) Seal(chain consensus.ChainHeaderReader, block *types.Block, results chan<- *types.Block, stop <-chan struct{}) error {\n\tpanic(\"ethash (pow) sealing not supported any more\")\n}\n","sourceCodeStart":59,"sourceCodeEnd":79,"githubUrl":"https://github.com/ethereum/go-ethereum/blob/6bb0588ad8e7f922e4ad5580f51265a4097af08f/consensus/ethash/ethash.go#L59-L79","documentation":"Ethash.Seal unconditionally panics with 'ethash (pow) sealing not supported any more'. The Ethash engine remains for verifying historical PoW headers (difficulty, seal checks), but mining/sealing new blocks through the Engine API was removed from this codebase, so calling Seal is a hard programming/configuration error.","triggerScenarios":"Starting geth with --mine on a PoW chain in this fork, or calling ethash.Seal(chain, block, results, stop) from miner code or tests. Every call panics; there is no supported PoW production path.","commonSituations":"Legacy mining setups or CI tests that assumed the miner calls engine.Seal; upgrading a codebase that forked geth's miner onto a version where Ethash.Seal is a stub panic; tutorials describing pre-merge CPU/GPU mining.","solutions":["Disable PoW mining (--mine / miner threads) against chains verified by this engine.","For private networks, use a chain with a supported consensus/sealer.","In code, remove miner paths that call Seal on the Ethash engine.","If PoW sealing is required, maintain a fork restoring the removed ethash sealing code."],"exampleFix":"// before\nethash.Seal(chain, block, results, stop) // panics\n\n// after\n// Verification only: use ethash.VerifySeal etc.; never call Seal.","handlingStrategy":"validation","validationCode":"// refuse to start mining on verify-only engines\nfunc validateMinerEngine(engine consensus.Engine) error {\n\tif _, ok := engine.(*ethash.Ethash); ok {\n\t\treturn errors.New(\"ethash sealing removed; disable --mine or use a supported sealer\")\n\t}\n\treturn nil\n}","typeGuard":"func isEthash(e consensus.Engine) bool {\n\t_, ok := e.(*ethash.Ethash)\n\treturn ok\n}","tryCatchPattern":null,"preventionTips":["Remove miner code paths that call Seal on PoW engines.","Gate mining flags behind a supported-sealer check at node startup.","Treat Ethash in this codebase as verification-only."],"tags":["go-ethereum","ethash","pow","consensus","panic"],"backgroundTag":null,"analyzedSha":"6bb0588ad8e7f922e4ad5580f51265a4097af08f","analyzedAt":"2026-08-15T10:06:53.996Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}