diff --git a/changelog/potuz_remove_copy_beaconblock.md b/changelog/potuz_remove_copy_beaconblock.md new file mode 100644 index 0000000000..ad2ba0e97c --- /dev/null +++ b/changelog/potuz_remove_copy_beaconblock.md @@ -0,0 +1,3 @@ +### Removed + +- Remove `Copy()` from the `ReadOnlyBeaconBlock` interface. \ No newline at end of file diff --git a/consensus-types/blocks/getters.go b/consensus-types/blocks/getters.go index cb99e52ec1..3d221a0959 100644 --- a/consensus-types/blocks/getters.go +++ b/consensus-types/blocks/getters.go @@ -1107,50 +1107,6 @@ func (b *BeaconBlock) AsSignRequestObject() (validatorpb.SignRequestObject, erro } } -func (b *BeaconBlock) Copy() (interfaces.ReadOnlyBeaconBlock, error) { - if b == nil { - return nil, nil - } - - pb, err := b.Proto() - if err != nil { - return nil, err - } - switch b.version { - case version.Phase0: - return initBlockFromProtoPhase0(pb.(*eth.BeaconBlock).Copy()) - case version.Altair: - return initBlockFromProtoAltair(pb.(*eth.BeaconBlockAltair).Copy()) - case version.Bellatrix: - if b.IsBlinded() { - return initBlindedBlockFromProtoBellatrix(pb.(*eth.BlindedBeaconBlockBellatrix).Copy()) - } - return initBlockFromProtoBellatrix(pb.(*eth.BeaconBlockBellatrix).Copy()) - case version.Capella: - if b.IsBlinded() { - return initBlindedBlockFromProtoCapella(pb.(*eth.BlindedBeaconBlockCapella).Copy()) - } - return initBlockFromProtoCapella(pb.(*eth.BeaconBlockCapella).Copy()) - case version.Deneb: - if b.IsBlinded() { - return initBlindedBlockFromProtoDeneb(pb.(*eth.BlindedBeaconBlockDeneb).Copy()) - } - return initBlockFromProtoDeneb(pb.(*eth.BeaconBlockDeneb).Copy()) - case version.Electra: - if b.IsBlinded() { - return initBlindedBlockFromProtoElectra(pb.(*eth.BlindedBeaconBlockElectra).Copy()) - } - return initBlockFromProtoElectra(pb.(*eth.BeaconBlockElectra).Copy()) - case version.Fulu: - if b.IsBlinded() { - return initBlindedBlockFromProtoFulu(pb.(*eth.BlindedBeaconBlockFulu).Copy()) - } - return initBlockFromProtoFulu(pb.(*eth.BeaconBlockFulu).Copy()) - default: - return nil, errIncorrectBlockVersion - } -} - // IsNil checks if the block body is nil. func (b *BeaconBlockBody) IsNil() bool { return b == nil diff --git a/consensus-types/blocks/getters_test.go b/consensus-types/blocks/getters_test.go index 29cc86644d..147f09b50c 100644 --- a/consensus-types/blocks/getters_test.go +++ b/consensus-types/blocks/getters_test.go @@ -169,70 +169,6 @@ func Test_BeaconBlock_Body(t *testing.T) { assert.Equal(t, bb, b.Body()) } -func Test_BeaconBlock_Copy(t *testing.T) { - bb := &BeaconBlockBody{randaoReveal: bytesutil.ToBytes96([]byte{246}), graffiti: bytesutil.ToBytes32([]byte("graffiti"))} - b := &BeaconBlock{body: bb, slot: 123, proposerIndex: 456, parentRoot: bytesutil.ToBytes32([]byte("parentroot")), stateRoot: bytesutil.ToBytes32([]byte("stateroot"))} - cp, err := b.Copy() - require.NoError(t, err) - assert.NotEqual(t, cp, b) - assert.NotEqual(t, cp.Body(), bb) - - b.version = version.Altair - b.body.version = b.version - cp, err = b.Copy() - require.NoError(t, err) - assert.NotEqual(t, cp, b) - assert.NotEqual(t, cp.Body(), bb) - - b.version = version.Bellatrix - b.body.version = b.version - cp, err = b.Copy() - require.NoError(t, err) - assert.NotEqual(t, cp, b) - assert.NotEqual(t, cp.Body(), bb) - - b.version = version.Capella - b.body.version = b.version - cp, err = b.Copy() - require.NoError(t, err) - assert.NotEqual(t, cp, b) - assert.NotEqual(t, cp.Body(), bb) - - b.version = version.Bellatrix - b.body.version = b.version - cp, err = b.Copy() - require.NoError(t, err) - assert.NotEqual(t, cp, b) - assert.NotEqual(t, cp.Body(), bb) - - b.version = version.Capella - b.body.version = b.version - cp, err = b.Copy() - require.NoError(t, err) - assert.NotEqual(t, cp, b) - assert.NotEqual(t, cp.Body(), bb) - - payload := &pb.ExecutionPayloadDeneb{ExcessBlobGas: 123} - header := &pb.ExecutionPayloadHeaderDeneb{ExcessBlobGas: 223} - payloadInterface, err := WrappedExecutionPayloadDeneb(payload) - require.NoError(t, err) - headerInterface, err := WrappedExecutionPayloadHeaderDeneb(header) - require.NoError(t, err) - bb = &BeaconBlockBody{executionPayload: payloadInterface, executionPayloadHeader: headerInterface, randaoReveal: bytesutil.ToBytes96([]byte{246}), graffiti: bytesutil.ToBytes32([]byte("graffiti"))} - b = &BeaconBlock{body: bb, slot: 123, proposerIndex: 456, parentRoot: bytesutil.ToBytes32([]byte("parentroot")), stateRoot: bytesutil.ToBytes32([]byte("stateroot"))} - b.version = version.Deneb - b.body.version = b.version - cp, err = b.Copy() - require.NoError(t, err) - assert.NotEqual(t, cp, b) - assert.NotEqual(t, cp.Body(), bb) - e, err := cp.Body().Execution() - require.NoError(t, err) - gas, err := e.ExcessBlobGas() - require.NoError(t, err) - require.DeepEqual(t, gas, uint64(123)) -} - func Test_BeaconBlock_IsNil(t *testing.T) { t.Run("nil block", func(t *testing.T) { var b *BeaconBlock diff --git a/consensus-types/interfaces/beacon_block.go b/consensus-types/interfaces/beacon_block.go index 1e9c704d2e..02c6bb513c 100644 --- a/consensus-types/interfaces/beacon_block.go +++ b/consensus-types/interfaces/beacon_block.go @@ -47,7 +47,6 @@ type ReadOnlyBeaconBlock interface { ssz.HashRoot Version() int AsSignRequestObject() (validatorpb.SignRequestObject, error) - Copy() (ReadOnlyBeaconBlock, error) } // ReadOnlyBeaconBlockBody describes the method set employed by an object diff --git a/consensus-types/mock/block.go b/consensus-types/mock/block.go index 9b855644a6..a0ad5fb8dc 100644 --- a/consensus-types/mock/block.go +++ b/consensus-types/mock/block.go @@ -163,10 +163,6 @@ func (BeaconBlock) SetParentRoot(_ []byte) { panic("implement me") } -func (BeaconBlock) Copy() (interfaces.ReadOnlyBeaconBlock, error) { - panic("implement me") -} - type BeaconBlockBody struct{} func (BeaconBlockBody) RandaoReveal() [field_params.BLSSignatureLength]byte {