From e3dc8549799a9f96f0f9cd743d2ea877bb50742f Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Mon, 24 Feb 2025 12:43:11 +0100 Subject: [PATCH] beacon/types: update base types for electra --- beacon/types/beacon_block.go | 21 +++++++++++++++++---- beacon/types/exec_header.go | 8 +++++--- go.mod | 2 +- go.sum | 2 ++ 4 files changed, 25 insertions(+), 8 deletions(-) diff --git a/beacon/types/beacon_block.go b/beacon/types/beacon_block.go index e4cd1340e5..01607d4932 100644 --- a/beacon/types/beacon_block.go +++ b/beacon/types/beacon_block.go @@ -22,11 +22,14 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" - "github.com/protolambda/zrnt/eth2/beacon/capella" zrntcommon "github.com/protolambda/zrnt/eth2/beacon/common" - "github.com/protolambda/zrnt/eth2/beacon/deneb" "github.com/protolambda/zrnt/eth2/configs" "github.com/protolambda/ztyp/tree" + + // beacon forks + "github.com/protolambda/zrnt/eth2/beacon/capella" + "github.com/protolambda/zrnt/eth2/beacon/deneb" + "github.com/protolambda/zrnt/eth2/beacon/electra" ) type blockObject interface { @@ -43,10 +46,12 @@ type BeaconBlock struct { func BlockFromJSON(forkName string, data []byte) (*BeaconBlock, error) { var obj blockObject switch forkName { - case "deneb": - obj = new(deneb.BeaconBlock) case "capella": obj = new(capella.BeaconBlock) + case "deneb": + obj = new(deneb.BeaconBlock) + case "electra": + obj = new(electra.BeaconBlock) default: return nil, fmt.Errorf("unsupported fork: %s", forkName) } @@ -63,6 +68,8 @@ func NewBeaconBlock(obj blockObject) *BeaconBlock { return &BeaconBlock{obj} case *deneb.BeaconBlock: return &BeaconBlock{obj} + case *electra.BeaconBlock: + return &BeaconBlock{obj} default: panic(fmt.Errorf("unsupported block type %T", obj)) } @@ -75,6 +82,8 @@ func (b *BeaconBlock) Slot() uint64 { return uint64(obj.Slot) case *deneb.BeaconBlock: return uint64(obj.Slot) + case *electra.BeaconBlock: + return uint64(obj.Slot) default: panic(fmt.Errorf("unsupported block type %T", b.blockObj)) } @@ -87,6 +96,8 @@ func (b *BeaconBlock) ExecutionPayload() (*types.Block, error) { return convertPayload(&obj.Body.ExecutionPayload, &obj.ParentRoot) case *deneb.BeaconBlock: return convertPayload(&obj.Body.ExecutionPayload, &obj.ParentRoot) + case *electra.BeaconBlock: + return convertPayload(&obj.Body.ExecutionPayload, &obj.ParentRoot) default: panic(fmt.Errorf("unsupported block type %T", b.blockObj)) } @@ -99,6 +110,8 @@ func (b *BeaconBlock) Header() Header { return headerFromZRNT(obj.Header(configs.Mainnet)) case *deneb.BeaconBlock: return headerFromZRNT(obj.Header(configs.Mainnet)) + case *electra.BeaconBlock: + return headerFromZRNT(obj.Header(configs.Mainnet)) default: panic(fmt.Errorf("unsupported block type %T", b.blockObj)) } diff --git a/beacon/types/exec_header.go b/beacon/types/exec_header.go index b5f90bae25..ae79b00841 100644 --- a/beacon/types/exec_header.go +++ b/beacon/types/exec_header.go @@ -22,10 +22,12 @@ import ( "github.com/ethereum/go-ethereum/beacon/merkle" "github.com/ethereum/go-ethereum/common" - "github.com/protolambda/zrnt/eth2/beacon/capella" zrntcommon "github.com/protolambda/zrnt/eth2/beacon/common" - "github.com/protolambda/zrnt/eth2/beacon/deneb" "github.com/protolambda/ztyp/tree" + + // beacon chain forks + "github.com/protolambda/zrnt/eth2/beacon/capella" + "github.com/protolambda/zrnt/eth2/beacon/deneb" ) type headerObject interface { @@ -43,7 +45,7 @@ func ExecutionHeaderFromJSON(forkName string, data []byte) (*ExecutionHeader, er switch forkName { case "capella": obj = new(capella.ExecutionPayloadHeader) - case "deneb": + case "deneb", "electra": // note: the payload type was not changed in electra obj = new(deneb.ExecutionPayloadHeader) default: return nil, fmt.Errorf("unsupported fork: %s", forkName) diff --git a/go.mod b/go.mod index ba26f2150e..9c0c447f3d 100644 --- a/go.mod +++ b/go.mod @@ -53,7 +53,7 @@ require ( github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7 github.com/pion/stun/v2 v2.0.0 github.com/protolambda/bls12-381-util v0.1.0 - github.com/protolambda/zrnt v0.32.2 + github.com/protolambda/zrnt v0.34.1 github.com/protolambda/ztyp v0.2.2 github.com/rs/cors v1.7.0 github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible diff --git a/go.sum b/go.sum index 1e4efeb697..d78778a4ee 100644 --- a/go.sum +++ b/go.sum @@ -464,6 +464,8 @@ github.com/protolambda/bls12-381-util v0.1.0 h1:05DU2wJN7DTU7z28+Q+zejXkIsA/MF8J github.com/protolambda/bls12-381-util v0.1.0/go.mod h1:cdkysJTRpeFeuUVx/TXGDQNMTiRAalk1vQw3TYTHcE4= github.com/protolambda/zrnt v0.32.2 h1:KZ48T+3UhsPXNdtE/5QEvGc9DGjUaRI17nJaoznoIaM= github.com/protolambda/zrnt v0.32.2/go.mod h1:A0fezkp9Tt3GBLATSPIbuY4ywYESyAuc/FFmPKg8Lqs= +github.com/protolambda/zrnt v0.34.1 h1:qW55rnhZJDnOb3TwFiFRJZi3yTXFrJdGOFQM7vCwYGg= +github.com/protolambda/zrnt v0.34.1/go.mod h1:A0fezkp9Tt3GBLATSPIbuY4ywYESyAuc/FFmPKg8Lqs= github.com/protolambda/ztyp v0.2.2 h1:rVcL3vBu9W/aV646zF6caLS/dyn9BN8NYiuJzicLNyY= github.com/protolambda/ztyp v0.2.2/go.mod h1:9bYgKGqg3wJqT9ac1gI2hnVb0STQq7p/1lapqrqY1dU= github.com/prysmaticlabs/gohashtree v0.0.1-alpha.0.20220714111606-acbb2962fb48 h1:cSo6/vk8YpvkLbk9v3FO97cakNmUoxwi2KMP8hd5WIw=