aboutsummaryrefslogtreecommitdiff
path: root/plugin
diff options
context:
space:
mode:
Diffstat (limited to 'plugin')
-rw-r--r--plugin/evm/vm.go7
1 files changed, 6 insertions, 1 deletions
diff --git a/plugin/evm/vm.go b/plugin/evm/vm.go
index 4fa2267..93e2fe2 100644
--- a/plugin/evm/vm.go
+++ b/plugin/evm/vm.go
@@ -25,6 +25,7 @@ import (
"github.com/ava-labs/go-ethereum/rlp"
"github.com/ava-labs/go-ethereum/rpc"
+ "github.com/ava-labs/gecko/api/admin"
"github.com/ava-labs/gecko/cache"
"github.com/ava-labs/gecko/database"
"github.com/ava-labs/gecko/ids"
@@ -32,7 +33,6 @@ import (
"github.com/ava-labs/gecko/snow/choices"
"github.com/ava-labs/gecko/snow/consensus/snowman"
"github.com/ava-labs/gecko/utils/timer"
- "github.com/ava-labs/gecko/api/admin"
commonEng "github.com/ava-labs/gecko/snow/engine/common"
)
@@ -59,6 +59,7 @@ var (
errUnknownBlock = errors.New("unknown block")
errBlockFrequency = errors.New("too frequent block issuance")
errUnsupportedFXs = errors.New("unsupported feature extensions")
+ errInvalidBlock = errors.New("invalid block")
)
func maxDuration(x, y time.Duration) time.Duration {
@@ -303,6 +304,10 @@ func (vm *VM) ParseBlock(b []byte) (snowman.Block, error) {
if err := rlp.DecodeBytes(b, ethBlock); err != nil {
return nil, err
}
+ // Coinbase must be zero on C-Chain
+ if bytes.Compare(ethBlock.Coinbase(), coreth.ZeroAddr) != 0 {
+ return nil, errInvalidBlock
+ }
block := &Block{
id: ids.NewID(ethBlock.Hash()),
ethBlock: ethBlock,