From 4273efec1f972c0561b02cc501b97ba7fdb977ec Mon Sep 17 00:00:00 2001 From: Guillaume Ballet <3272758+gballet@users.noreply.github.com> Date: Fri, 5 Sep 2025 08:26:12 +0200 Subject: [PATCH] return a different error code for each potential failure step --- cmd/keeper/getpayload_example.go | 5 ++++- cmd/keeper/main.go | 12 ++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/cmd/keeper/getpayload_example.go b/cmd/keeper/getpayload_example.go index 9af25baea9..69cd7a47a3 100644 --- a/cmd/keeper/getpayload_example.go +++ b/cmd/keeper/getpayload_example.go @@ -19,7 +19,9 @@ package main import ( + "fmt" "math/big" + "os" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/stateless" @@ -95,7 +97,8 @@ func getInput() []byte { encoded, err := rlp.EncodeToBytes(payload) if err != nil { - panic(err) + fmt.Fprintf(os.Stderr, "failed to encode payload: %v\n", err) + os.Exit(20) } return encoded } diff --git a/cmd/keeper/main.go b/cmd/keeper/main.go index aeda579581..ba44360cde 100644 --- a/cmd/keeper/main.go +++ b/cmd/keeper/main.go @@ -18,6 +18,7 @@ package main import ( "fmt" + "os" "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/stateless" @@ -32,7 +33,7 @@ type Payload struct { } func main() { - input := getPayload() + input := getInput() var payload Payload rlp.DecodeBytes(input, &payload) @@ -41,12 +42,15 @@ func main() { crossStateRoot, crossReceiptRoot, err := core.ExecuteStateless(chainConfig, vmConfig, payload.Block, payload.Witness) if err != nil { - panic(fmt.Errorf("stateless self-validation failed: %v", err)) + fmt.Fprintf(os.Stderr, "stateless self-validation failed: %v\n", err) + os.Exit(10) } if crossStateRoot != payload.Block.Root() { - panic(fmt.Errorf("stateless self-validation root mismatch (cross: %x local: %x)", crossStateRoot, payload.Block.Root())) + fmt.Fprintf(os.Stderr, "stateless self-validation root mismatch (cross: %x local: %x)\n", crossStateRoot, payload.Block.Root()) + os.Exit(11) } if crossReceiptRoot != payload.Block.ReceiptHash() { - panic(fmt.Errorf("stateless self-validation receipt root mismatch (cross: %x local: %x)", crossReceiptRoot, payload.Block.ReceiptHash())) + fmt.Fprintf(os.Stderr, "stateless self-validation receipt root mismatch (cross: %x local: %x)\n", crossReceiptRoot, payload.Block.ReceiptHash()) + os.Exit(12) } }