-
Notifications
You must be signed in to change notification settings - Fork 11
Full Node Crashes with Different Proposer Address on Contract Deployment #17
Description
Description
When deploying a contract to a full node synced with our sequencer, the node crashes with a panic. While simple transfer transactions work fine, contract deployment fails with an error indicating the validator does not exist for a particular consensus address.
Error Message
goroutine 361 [running]: github.com/rollkit/rollkit/block.(*Manager).trySyncNextBlock(0xc001367800, {0x935a710, 0xc0028a0500}, 0x51c691)
/home/root/go/pkg/mod/github.com/rollkit/[email protected]/block/manager.go:548 +0x81c
ERR Transaction verification failed error="failed to get evm config from context: failed to obtain coinbase address: failed to retrieve validator from block proposer address artvalcons1cmgs93cgwmhpzwdyvw80zm4av20jdrvgh9lz8f: validator does not exist [artela-rollkit/x/evm/keeper/proposer.go:16]" module=server
Investigation
I've added logging to print the proposerAddress inside the EVM config.
The issue appears in:
return ctx, fmt.Errorf("failed to get evm config from context: %w", err) artela-rollkit/x/evm/keeper/config.go
Line 29 in a2e9af5
return nil, errorsmod.Wrap(err, "failed to obtain coinbase address")
Key Finding
Most log messages show the correct sequencer address, matching the sequencer logs. However, the last message shows a different validator address, which causes the error.
Hypothesis
The GetProposerAddress function in the code takes a parameter (proposerAddress) but should potentially be retrieving the consensus address . For some reason, during contract deployment, the function is being called with an incorrect validator address that doesn't exist in the registry.
Reproduction Steps
- Deploy a full node with the sequencer
- Sync the node (transfer transactions work fine)
- Attempt to deploy a contract
- Node crashes with the validator error