mirror of
https://github.com/OffchainLabs/prysm.git
synced 2026-01-08 21:08:10 -05:00
Return payload value in Wei from /eth/v3/validator/blocks (#13497)
* Add value in Wei to execution payload * simplify how payload is returned * test fix * fix issues * review * fix block handlers
This commit is contained in:
@@ -165,7 +165,7 @@ func WrappedBuilderBidCapella(p *ethpb.BuilderBidCapella) (Bid, error) {
|
|||||||
// Header returns the execution data interface.
|
// Header returns the execution data interface.
|
||||||
func (b builderBidCapella) Header() (interfaces.ExecutionData, error) {
|
func (b builderBidCapella) Header() (interfaces.ExecutionData, error) {
|
||||||
// We have to convert big endian to little endian because the value is coming from the execution layer.
|
// We have to convert big endian to little endian because the value is coming from the execution layer.
|
||||||
return blocks.WrappedExecutionPayloadHeaderCapella(b.p.Header, blocks.PayloadValueToGwei(b.p.Value))
|
return blocks.WrappedExecutionPayloadHeaderCapella(b.p.Header, blocks.PayloadValueToWei(b.p.Value))
|
||||||
}
|
}
|
||||||
|
|
||||||
// BlobKzgCommitments --
|
// BlobKzgCommitments --
|
||||||
@@ -249,7 +249,7 @@ func (b builderBidDeneb) HashTreeRootWith(hh *ssz.Hasher) error {
|
|||||||
// Header --
|
// Header --
|
||||||
func (b builderBidDeneb) Header() (interfaces.ExecutionData, error) {
|
func (b builderBidDeneb) Header() (interfaces.ExecutionData, error) {
|
||||||
// We have to convert big endian to little endian because the value is coming from the execution layer.
|
// We have to convert big endian to little endian because the value is coming from the execution layer.
|
||||||
return blocks.WrappedExecutionPayloadHeaderDeneb(b.p.Header, blocks.PayloadValueToGwei(b.p.Value))
|
return blocks.WrappedExecutionPayloadHeaderDeneb(b.p.Header, blocks.PayloadValueToWei(b.p.Value))
|
||||||
}
|
}
|
||||||
|
|
||||||
// BlobKzgCommitments --
|
// BlobKzgCommitments --
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
"math/big"
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
@@ -357,7 +358,7 @@ func (c *Client) SubmitBlindedBlock(ctx context.Context, sb interfaces.ReadOnlyS
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, errors.Wrapf(err, "could not extract proto message from payload")
|
return nil, nil, errors.Wrapf(err, "could not extract proto message from payload")
|
||||||
}
|
}
|
||||||
payload, err := blocks.WrappedExecutionPayloadCapella(p, 0)
|
payload, err := blocks.WrappedExecutionPayloadCapella(p, big.NewInt(0))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, errors.Wrapf(err, "could not wrap execution payload in interface")
|
return nil, nil, errors.Wrapf(err, "could not wrap execution payload in interface")
|
||||||
}
|
}
|
||||||
@@ -394,7 +395,7 @@ func (c *Client) SubmitBlindedBlock(ctx context.Context, sb interfaces.ReadOnlyS
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, errors.Wrapf(err, "could not extract proto message from payload")
|
return nil, nil, errors.Wrapf(err, "could not extract proto message from payload")
|
||||||
}
|
}
|
||||||
payload, err := blocks.WrappedExecutionPayloadDeneb(p, 0)
|
payload, err := blocks.WrappedExecutionPayloadDeneb(p, big.NewInt(0))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, errors.Wrapf(err, "could not wrap execution payload in interface")
|
return nil, nil, errors.Wrapf(err, "could not wrap execution payload in interface")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -911,7 +911,6 @@ func Test_validateMergeTransitionBlock(t *testing.T) {
|
|||||||
name: "state older than Bellatrix, nil payload",
|
name: "state older than Bellatrix, nil payload",
|
||||||
stateVersion: 1,
|
stateVersion: 1,
|
||||||
payload: nil,
|
payload: nil,
|
||||||
errString: "attempted to wrap nil",
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "state older than Bellatrix, empty payload",
|
name: "state older than Bellatrix, empty payload",
|
||||||
@@ -940,7 +939,6 @@ func Test_validateMergeTransitionBlock(t *testing.T) {
|
|||||||
name: "state is Bellatrix, nil payload",
|
name: "state is Bellatrix, nil payload",
|
||||||
stateVersion: 2,
|
stateVersion: 2,
|
||||||
payload: nil,
|
payload: nil,
|
||||||
errString: "attempted to wrap nil",
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "state is Bellatrix, empty payload",
|
name: "state is Bellatrix, empty payload",
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package testing
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"math/big"
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/prysmaticlabs/prysm/v4/api/client/builder"
|
"github.com/prysmaticlabs/prysm/v4/api/client/builder"
|
||||||
@@ -54,13 +55,13 @@ func (s *MockBuilderService) SubmitBlindedBlock(_ context.Context, b interfaces.
|
|||||||
}
|
}
|
||||||
return w, nil, s.ErrSubmitBlindedBlock
|
return w, nil, s.ErrSubmitBlindedBlock
|
||||||
case version.Capella:
|
case version.Capella:
|
||||||
w, err := blocks.WrappedExecutionPayloadCapella(s.PayloadCapella, 0)
|
w, err := blocks.WrappedExecutionPayloadCapella(s.PayloadCapella, big.NewInt(0))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, errors.Wrap(err, "could not wrap capella payload")
|
return nil, nil, errors.Wrap(err, "could not wrap capella payload")
|
||||||
}
|
}
|
||||||
return w, nil, s.ErrSubmitBlindedBlock
|
return w, nil, s.ErrSubmitBlindedBlock
|
||||||
case version.Deneb:
|
case version.Deneb:
|
||||||
w, err := blocks.WrappedExecutionPayloadDeneb(s.PayloadDeneb, 0)
|
w, err := blocks.WrappedExecutionPayloadDeneb(s.PayloadDeneb, big.NewInt(0))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, errors.Wrap(err, "could not wrap deneb payload")
|
return nil, nil, errors.Wrap(err, "could not wrap deneb payload")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package blocks_test
|
package blocks_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"math/big"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/prysmaticlabs/prysm/v4/beacon-chain/core/blocks"
|
"github.com/prysmaticlabs/prysm/v4/beacon-chain/core/blocks"
|
||||||
@@ -609,7 +610,7 @@ func Test_ProcessPayloadCapella(t *testing.T) {
|
|||||||
random, err := helpers.RandaoMix(st, time.CurrentEpoch(st))
|
random, err := helpers.RandaoMix(st, time.CurrentEpoch(st))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
payload.PrevRandao = random
|
payload.PrevRandao = random
|
||||||
wrapped, err := consensusblocks.WrappedExecutionPayloadCapella(payload, 0)
|
wrapped, err := consensusblocks.WrappedExecutionPayloadCapella(payload, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
_, err = blocks.ProcessPayload(st, wrapped)
|
_, err = blocks.ProcessPayload(st, wrapped)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
@@ -873,7 +874,7 @@ func emptyPayloadHeaderCapella() (interfaces.ExecutionData, error) {
|
|||||||
BlockHash: make([]byte, fieldparams.RootLength),
|
BlockHash: make([]byte, fieldparams.RootLength),
|
||||||
TransactionsRoot: make([]byte, fieldparams.RootLength),
|
TransactionsRoot: make([]byte, fieldparams.RootLength),
|
||||||
WithdrawalsRoot: make([]byte, fieldparams.RootLength),
|
WithdrawalsRoot: make([]byte, fieldparams.RootLength),
|
||||||
}, 0)
|
}, big.NewInt(0))
|
||||||
}
|
}
|
||||||
|
|
||||||
func emptyPayload() *enginev1.ExecutionPayload {
|
func emptyPayload() *enginev1.ExecutionPayload {
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package blocks_test
|
package blocks_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"math/big"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
@@ -642,7 +643,10 @@ func TestProcessBlindWithdrawals(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
wdRoot, err := ssz.WithdrawalSliceRoot(test.Args.Withdrawals, fieldparams.MaxWithdrawalsPerPayload)
|
wdRoot, err := ssz.WithdrawalSliceRoot(test.Args.Withdrawals, fieldparams.MaxWithdrawalsPerPayload)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
p, err := consensusblocks.WrappedExecutionPayloadHeaderCapella(&enginev1.ExecutionPayloadHeaderCapella{WithdrawalsRoot: wdRoot[:]}, 0)
|
p, err := consensusblocks.WrappedExecutionPayloadHeaderCapella(
|
||||||
|
&enginev1.ExecutionPayloadHeaderCapella{WithdrawalsRoot: wdRoot[:]},
|
||||||
|
big.NewInt(0),
|
||||||
|
)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
post, err := blocks.ProcessWithdrawals(st, p)
|
post, err := blocks.ProcessWithdrawals(st, p)
|
||||||
if test.Control.ExpectedError {
|
if test.Control.ExpectedError {
|
||||||
@@ -1060,7 +1064,7 @@ func TestProcessWithdrawals(t *testing.T) {
|
|||||||
}
|
}
|
||||||
st, err := prepareValidators(spb, test.Args)
|
st, err := prepareValidators(spb, test.Args)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
p, err := consensusblocks.WrappedExecutionPayloadCapella(&enginev1.ExecutionPayloadCapella{Withdrawals: test.Args.Withdrawals}, 0)
|
p, err := consensusblocks.WrappedExecutionPayloadCapella(&enginev1.ExecutionPayloadCapella{Withdrawals: test.Args.Withdrawals}, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
post, err := blocks.ProcessWithdrawals(st, p)
|
post, err := blocks.ProcessWithdrawals(st, p)
|
||||||
if test.Control.ExpectedError {
|
if test.Control.ExpectedError {
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package kv
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
|
"math/big"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"strconv"
|
"strconv"
|
||||||
"testing"
|
"testing"
|
||||||
@@ -99,7 +100,7 @@ func TestState_CanSaveRetrieve(t *testing.T) {
|
|||||||
BlockHash: make([]byte, 32),
|
BlockHash: make([]byte, 32),
|
||||||
TransactionsRoot: make([]byte, 32),
|
TransactionsRoot: make([]byte, 32),
|
||||||
WithdrawalsRoot: make([]byte, 32),
|
WithdrawalsRoot: make([]byte, 32),
|
||||||
}, 0)
|
}, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.NoError(t, st.SetLatestExecutionPayloadHeader(p))
|
require.NoError(t, st.SetLatestExecutionPayloadHeader(p))
|
||||||
return st
|
return st
|
||||||
@@ -124,7 +125,7 @@ func TestState_CanSaveRetrieve(t *testing.T) {
|
|||||||
BlockHash: make([]byte, 32),
|
BlockHash: make([]byte, 32),
|
||||||
TransactionsRoot: make([]byte, 32),
|
TransactionsRoot: make([]byte, 32),
|
||||||
WithdrawalsRoot: make([]byte, 32),
|
WithdrawalsRoot: make([]byte, 32),
|
||||||
}, 0)
|
}, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.NoError(t, st.SetLatestExecutionPayloadHeader(p))
|
require.NoError(t, st.SetLatestExecutionPayloadHeader(p))
|
||||||
return st
|
return st
|
||||||
|
|||||||
@@ -260,7 +260,7 @@ func (s *Service) GetPayload(ctx context.Context, payloadId [8]byte, slot primit
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, false, handleRPCError(err)
|
return nil, nil, false, handleRPCError(err)
|
||||||
}
|
}
|
||||||
ed, err := blocks.WrappedExecutionPayloadDeneb(result.Payload, blocks.PayloadValueToGwei(result.Value))
|
ed, err := blocks.WrappedExecutionPayloadDeneb(result.Payload, blocks.PayloadValueToWei(result.Value))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, false, err
|
return nil, nil, false, err
|
||||||
}
|
}
|
||||||
@@ -273,7 +273,7 @@ func (s *Service) GetPayload(ctx context.Context, payloadId [8]byte, slot primit
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, false, handleRPCError(err)
|
return nil, nil, false, handleRPCError(err)
|
||||||
}
|
}
|
||||||
ed, err := blocks.WrappedExecutionPayloadCapella(result.Payload, blocks.PayloadValueToGwei(result.Value))
|
ed, err := blocks.WrappedExecutionPayloadCapella(result.Payload, blocks.PayloadValueToWei(result.Value))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, false, err
|
return nil, nil, false, err
|
||||||
}
|
}
|
||||||
@@ -734,7 +734,7 @@ func fullPayloadFromExecutionBlock(
|
|||||||
BlockHash: blockHash[:],
|
BlockHash: blockHash[:],
|
||||||
Transactions: txs,
|
Transactions: txs,
|
||||||
Withdrawals: block.Withdrawals,
|
Withdrawals: block.Withdrawals,
|
||||||
}, 0) // We can't get the block value and don't care about the block value for this instance
|
}, big.NewInt(0)) // We can't get the block value and don't care about the block value for this instance
|
||||||
case version.Deneb:
|
case version.Deneb:
|
||||||
ebg, err := header.ExcessBlobGas()
|
ebg, err := header.ExcessBlobGas()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -763,7 +763,7 @@ func fullPayloadFromExecutionBlock(
|
|||||||
Withdrawals: block.Withdrawals,
|
Withdrawals: block.Withdrawals,
|
||||||
BlobGasUsed: bgu,
|
BlobGasUsed: bgu,
|
||||||
ExcessBlobGas: ebg,
|
ExcessBlobGas: ebg,
|
||||||
}, 0) // We can't get the block value and don't care about the block value for this instance
|
}, big.NewInt(0)) // We can't get the block value and don't care about the block value for this instance
|
||||||
default:
|
default:
|
||||||
return nil, fmt.Errorf("unknown execution block version %d", block.Version)
|
return nil, fmt.Errorf("unknown execution block version %d", block.Version)
|
||||||
}
|
}
|
||||||
@@ -811,7 +811,7 @@ func fullPayloadFromPayloadBody(
|
|||||||
BlockHash: header.BlockHash(),
|
BlockHash: header.BlockHash(),
|
||||||
Transactions: body.Transactions,
|
Transactions: body.Transactions,
|
||||||
Withdrawals: body.Withdrawals,
|
Withdrawals: body.Withdrawals,
|
||||||
}, 0) // We can't get the block value and don't care about the block value for this instance
|
}, big.NewInt(0)) // We can't get the block value and don't care about the block value for this instance
|
||||||
case version.Deneb:
|
case version.Deneb:
|
||||||
ebg, err := header.ExcessBlobGas()
|
ebg, err := header.ExcessBlobGas()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -840,7 +840,7 @@ func fullPayloadFromPayloadBody(
|
|||||||
Withdrawals: body.Withdrawals,
|
Withdrawals: body.Withdrawals,
|
||||||
ExcessBlobGas: ebg,
|
ExcessBlobGas: ebg,
|
||||||
BlobGasUsed: bgu,
|
BlobGasUsed: bgu,
|
||||||
}, 0) // We can't get the block value and don't care about the block value for this instance
|
}, big.NewInt(0)) // We can't get the block value and don't care about the block value for this instance
|
||||||
default:
|
default:
|
||||||
return nil, fmt.Errorf("unknown execution block version for payload %d", bVersion)
|
return nil, fmt.Errorf("unknown execution block version for payload %d", bVersion)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -127,7 +127,7 @@ func TestClient_IPC(t *testing.T) {
|
|||||||
require.Equal(t, true, ok)
|
require.Equal(t, true, ok)
|
||||||
req, ok := fix["ExecutionPayloadCapella"].(*pb.ExecutionPayloadCapella)
|
req, ok := fix["ExecutionPayloadCapella"].(*pb.ExecutionPayloadCapella)
|
||||||
require.Equal(t, true, ok)
|
require.Equal(t, true, ok)
|
||||||
wrappedPayload, err := blocks.WrappedExecutionPayloadCapella(req, 0)
|
wrappedPayload, err := blocks.WrappedExecutionPayloadCapella(req, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
latestValidHash, err := srv.NewPayload(ctx, wrappedPayload, []common.Hash{}, &common.Hash{})
|
latestValidHash, err := srv.NewPayload(ctx, wrappedPayload, []common.Hash{}, &common.Hash{})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
@@ -476,7 +476,7 @@ func TestClient_HTTP(t *testing.T) {
|
|||||||
client := newPayloadV2Setup(t, want, execPayload)
|
client := newPayloadV2Setup(t, want, execPayload)
|
||||||
|
|
||||||
// We call the RPC method via HTTP and expect a proper result.
|
// We call the RPC method via HTTP and expect a proper result.
|
||||||
wrappedPayload, err := blocks.WrappedExecutionPayloadCapella(execPayload, 0)
|
wrappedPayload, err := blocks.WrappedExecutionPayloadCapella(execPayload, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
resp, err := client.NewPayload(ctx, wrappedPayload, []common.Hash{}, &common.Hash{})
|
resp, err := client.NewPayload(ctx, wrappedPayload, []common.Hash{}, &common.Hash{})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
@@ -490,7 +490,7 @@ func TestClient_HTTP(t *testing.T) {
|
|||||||
client := newPayloadV3Setup(t, want, execPayload)
|
client := newPayloadV3Setup(t, want, execPayload)
|
||||||
|
|
||||||
// We call the RPC method via HTTP and expect a proper result.
|
// We call the RPC method via HTTP and expect a proper result.
|
||||||
wrappedPayload, err := blocks.WrappedExecutionPayloadDeneb(execPayload, 0)
|
wrappedPayload, err := blocks.WrappedExecutionPayloadDeneb(execPayload, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
resp, err := client.NewPayload(ctx, wrappedPayload, []common.Hash{}, &common.Hash{'a'})
|
resp, err := client.NewPayload(ctx, wrappedPayload, []common.Hash{}, &common.Hash{'a'})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
@@ -518,7 +518,7 @@ func TestClient_HTTP(t *testing.T) {
|
|||||||
client := newPayloadV2Setup(t, want, execPayload)
|
client := newPayloadV2Setup(t, want, execPayload)
|
||||||
|
|
||||||
// We call the RPC method via HTTP and expect a proper result.
|
// We call the RPC method via HTTP and expect a proper result.
|
||||||
wrappedPayload, err := blocks.WrappedExecutionPayloadCapella(execPayload, 0)
|
wrappedPayload, err := blocks.WrappedExecutionPayloadCapella(execPayload, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
resp, err := client.NewPayload(ctx, wrappedPayload, []common.Hash{}, &common.Hash{})
|
resp, err := client.NewPayload(ctx, wrappedPayload, []common.Hash{}, &common.Hash{})
|
||||||
require.ErrorIs(t, ErrAcceptedSyncingPayloadStatus, err)
|
require.ErrorIs(t, ErrAcceptedSyncingPayloadStatus, err)
|
||||||
@@ -532,7 +532,7 @@ func TestClient_HTTP(t *testing.T) {
|
|||||||
client := newPayloadV3Setup(t, want, execPayload)
|
client := newPayloadV3Setup(t, want, execPayload)
|
||||||
|
|
||||||
// We call the RPC method via HTTP and expect a proper result.
|
// We call the RPC method via HTTP and expect a proper result.
|
||||||
wrappedPayload, err := blocks.WrappedExecutionPayloadDeneb(execPayload, 0)
|
wrappedPayload, err := blocks.WrappedExecutionPayloadDeneb(execPayload, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
resp, err := client.NewPayload(ctx, wrappedPayload, []common.Hash{}, &common.Hash{'a'})
|
resp, err := client.NewPayload(ctx, wrappedPayload, []common.Hash{}, &common.Hash{'a'})
|
||||||
require.ErrorIs(t, ErrAcceptedSyncingPayloadStatus, err)
|
require.ErrorIs(t, ErrAcceptedSyncingPayloadStatus, err)
|
||||||
@@ -560,7 +560,7 @@ func TestClient_HTTP(t *testing.T) {
|
|||||||
client := newPayloadV2Setup(t, want, execPayload)
|
client := newPayloadV2Setup(t, want, execPayload)
|
||||||
|
|
||||||
// We call the RPC method via HTTP and expect a proper result.
|
// We call the RPC method via HTTP and expect a proper result.
|
||||||
wrappedPayload, err := blocks.WrappedExecutionPayloadCapella(execPayload, 0)
|
wrappedPayload, err := blocks.WrappedExecutionPayloadCapella(execPayload, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
resp, err := client.NewPayload(ctx, wrappedPayload, []common.Hash{}, &common.Hash{})
|
resp, err := client.NewPayload(ctx, wrappedPayload, []common.Hash{}, &common.Hash{})
|
||||||
require.ErrorIs(t, ErrInvalidBlockHashPayloadStatus, err)
|
require.ErrorIs(t, ErrInvalidBlockHashPayloadStatus, err)
|
||||||
@@ -574,7 +574,7 @@ func TestClient_HTTP(t *testing.T) {
|
|||||||
client := newPayloadV3Setup(t, want, execPayload)
|
client := newPayloadV3Setup(t, want, execPayload)
|
||||||
|
|
||||||
// We call the RPC method via HTTP and expect a proper result.
|
// We call the RPC method via HTTP and expect a proper result.
|
||||||
wrappedPayload, err := blocks.WrappedExecutionPayloadDeneb(execPayload, 0)
|
wrappedPayload, err := blocks.WrappedExecutionPayloadDeneb(execPayload, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
resp, err := client.NewPayload(ctx, wrappedPayload, []common.Hash{}, &common.Hash{'a'})
|
resp, err := client.NewPayload(ctx, wrappedPayload, []common.Hash{}, &common.Hash{'a'})
|
||||||
require.ErrorIs(t, ErrInvalidBlockHashPayloadStatus, err)
|
require.ErrorIs(t, ErrInvalidBlockHashPayloadStatus, err)
|
||||||
@@ -602,7 +602,7 @@ func TestClient_HTTP(t *testing.T) {
|
|||||||
client := newPayloadV2Setup(t, want, execPayload)
|
client := newPayloadV2Setup(t, want, execPayload)
|
||||||
|
|
||||||
// We call the RPC method via HTTP and expect a proper result.
|
// We call the RPC method via HTTP and expect a proper result.
|
||||||
wrappedPayload, err := blocks.WrappedExecutionPayloadCapella(execPayload, 0)
|
wrappedPayload, err := blocks.WrappedExecutionPayloadCapella(execPayload, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
resp, err := client.NewPayload(ctx, wrappedPayload, []common.Hash{}, &common.Hash{})
|
resp, err := client.NewPayload(ctx, wrappedPayload, []common.Hash{}, &common.Hash{})
|
||||||
require.ErrorIs(t, ErrInvalidPayloadStatus, err)
|
require.ErrorIs(t, ErrInvalidPayloadStatus, err)
|
||||||
@@ -616,7 +616,7 @@ func TestClient_HTTP(t *testing.T) {
|
|||||||
client := newPayloadV3Setup(t, want, execPayload)
|
client := newPayloadV3Setup(t, want, execPayload)
|
||||||
|
|
||||||
// We call the RPC method via HTTP and expect a proper result.
|
// We call the RPC method via HTTP and expect a proper result.
|
||||||
wrappedPayload, err := blocks.WrappedExecutionPayloadDeneb(execPayload, 0)
|
wrappedPayload, err := blocks.WrappedExecutionPayloadDeneb(execPayload, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
resp, err := client.NewPayload(ctx, wrappedPayload, []common.Hash{}, &common.Hash{'a'})
|
resp, err := client.NewPayload(ctx, wrappedPayload, []common.Hash{}, &common.Hash{'a'})
|
||||||
require.ErrorIs(t, ErrInvalidPayloadStatus, err)
|
require.ErrorIs(t, ErrInvalidPayloadStatus, err)
|
||||||
@@ -1537,7 +1537,7 @@ func Test_fullPayloadFromExecutionBlockCapella(t *testing.T) {
|
|||||||
p, err := blocks.WrappedExecutionPayloadCapella(&pb.ExecutionPayloadCapella{
|
p, err := blocks.WrappedExecutionPayloadCapella(&pb.ExecutionPayloadCapella{
|
||||||
BlockHash: wantedHash[:],
|
BlockHash: wantedHash[:],
|
||||||
Transactions: [][]byte{},
|
Transactions: [][]byte{},
|
||||||
}, 0)
|
}, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
return p
|
return p
|
||||||
},
|
},
|
||||||
@@ -1545,7 +1545,7 @@ func Test_fullPayloadFromExecutionBlockCapella(t *testing.T) {
|
|||||||
}
|
}
|
||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
t.Run(tt.name, func(t *testing.T) {
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
wrapped, err := blocks.WrappedExecutionPayloadHeaderCapella(tt.args.header, 0)
|
wrapped, err := blocks.WrappedExecutionPayloadHeaderCapella(tt.args.header, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
got, err := fullPayloadFromExecutionBlock(tt.args.version, wrapped, tt.args.block)
|
got, err := fullPayloadFromExecutionBlock(tt.args.version, wrapped, tt.args.block)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -1598,7 +1598,7 @@ func Test_fullPayloadFromExecutionBlockDeneb(t *testing.T) {
|
|||||||
p, err := blocks.WrappedExecutionPayloadDeneb(&pb.ExecutionPayloadDeneb{
|
p, err := blocks.WrappedExecutionPayloadDeneb(&pb.ExecutionPayloadDeneb{
|
||||||
BlockHash: wantedHash[:],
|
BlockHash: wantedHash[:],
|
||||||
Transactions: [][]byte{},
|
Transactions: [][]byte{},
|
||||||
}, 0)
|
}, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
return p
|
return p
|
||||||
},
|
},
|
||||||
@@ -1606,7 +1606,7 @@ func Test_fullPayloadFromExecutionBlockDeneb(t *testing.T) {
|
|||||||
}
|
}
|
||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
t.Run(tt.name, func(t *testing.T) {
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
wrapped, err := blocks.WrappedExecutionPayloadHeaderDeneb(tt.args.header, 0)
|
wrapped, err := blocks.WrappedExecutionPayloadHeaderDeneb(tt.args.header, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
got, err := fullPayloadFromExecutionBlock(tt.args.version, wrapped, tt.args.block)
|
got, err := fullPayloadFromExecutionBlock(tt.args.version, wrapped, tt.args.block)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ go_library(
|
|||||||
"//consensus-types/payload-attribute:go_default_library",
|
"//consensus-types/payload-attribute:go_default_library",
|
||||||
"//consensus-types/primitives:go_default_library",
|
"//consensus-types/primitives:go_default_library",
|
||||||
"//encoding/bytesutil:go_default_library",
|
"//encoding/bytesutil:go_default_library",
|
||||||
"//math:go_default_library",
|
|
||||||
"//proto/engine/v1:go_default_library",
|
"//proto/engine/v1:go_default_library",
|
||||||
"//proto/prysm/v1alpha1:go_default_library",
|
"//proto/prysm/v1alpha1:go_default_library",
|
||||||
"//time/slots:go_default_library",
|
"//time/slots:go_default_library",
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ import (
|
|||||||
payloadattribute "github.com/prysmaticlabs/prysm/v4/consensus-types/payload-attribute"
|
payloadattribute "github.com/prysmaticlabs/prysm/v4/consensus-types/payload-attribute"
|
||||||
"github.com/prysmaticlabs/prysm/v4/consensus-types/primitives"
|
"github.com/prysmaticlabs/prysm/v4/consensus-types/primitives"
|
||||||
"github.com/prysmaticlabs/prysm/v4/encoding/bytesutil"
|
"github.com/prysmaticlabs/prysm/v4/encoding/bytesutil"
|
||||||
"github.com/prysmaticlabs/prysm/v4/math"
|
|
||||||
pb "github.com/prysmaticlabs/prysm/v4/proto/engine/v1"
|
pb "github.com/prysmaticlabs/prysm/v4/proto/engine/v1"
|
||||||
"github.com/prysmaticlabs/prysm/v4/time/slots"
|
"github.com/prysmaticlabs/prysm/v4/time/slots"
|
||||||
)
|
)
|
||||||
@@ -63,14 +62,14 @@ func (e *EngineClient) ForkchoiceUpdated(
|
|||||||
// GetPayload --
|
// GetPayload --
|
||||||
func (e *EngineClient) GetPayload(_ context.Context, _ [8]byte, s primitives.Slot) (interfaces.ExecutionData, *pb.BlobsBundle, bool, error) {
|
func (e *EngineClient) GetPayload(_ context.Context, _ [8]byte, s primitives.Slot) (interfaces.ExecutionData, *pb.BlobsBundle, bool, error) {
|
||||||
if slots.ToEpoch(s) >= params.BeaconConfig().DenebForkEpoch {
|
if slots.ToEpoch(s) >= params.BeaconConfig().DenebForkEpoch {
|
||||||
ed, err := blocks.WrappedExecutionPayloadDeneb(e.ExecutionPayloadDeneb, math.Gwei(e.BlockValue))
|
ed, err := blocks.WrappedExecutionPayloadDeneb(e.ExecutionPayloadDeneb, big.NewInt(int64(e.BlockValue)))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, false, err
|
return nil, nil, false, err
|
||||||
}
|
}
|
||||||
return ed, e.BlobsBundle, e.BuilderOverride, nil
|
return ed, e.BlobsBundle, e.BuilderOverride, nil
|
||||||
}
|
}
|
||||||
if slots.ToEpoch(s) >= params.BeaconConfig().CapellaForkEpoch {
|
if slots.ToEpoch(s) >= params.BeaconConfig().CapellaForkEpoch {
|
||||||
ed, err := blocks.WrappedExecutionPayloadCapella(e.ExecutionPayloadCapella, math.Gwei(e.BlockValue))
|
ed, err := blocks.WrappedExecutionPayloadCapella(e.ExecutionPayloadCapella, big.NewInt(int64(e.BlockValue)))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, false, err
|
return nil, nil, false, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -559,7 +559,7 @@ func (b *SignedBlindedBeaconBlockBellatrix) ToGeneric() (*eth.GenericSignedBeaco
|
|||||||
Block: bl,
|
Block: bl,
|
||||||
Signature: sig,
|
Signature: sig,
|
||||||
}
|
}
|
||||||
return ð.GenericSignedBeaconBlock{Block: ð.GenericSignedBeaconBlock_BlindedBellatrix{BlindedBellatrix: block}, IsBlinded: true, PayloadValue: 0 /* can't get payload value from blinded block */}, nil
|
return ð.GenericSignedBeaconBlock{Block: ð.GenericSignedBeaconBlock_BlindedBellatrix{BlindedBellatrix: block}, IsBlinded: true}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *BlindedBeaconBlockBellatrix) ToGeneric() (*eth.GenericBeaconBlock, error) {
|
func (b *BlindedBeaconBlockBellatrix) ToGeneric() (*eth.GenericBeaconBlock, error) {
|
||||||
@@ -567,7 +567,7 @@ func (b *BlindedBeaconBlockBellatrix) ToGeneric() (*eth.GenericBeaconBlock, erro
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return ð.GenericBeaconBlock{Block: ð.GenericBeaconBlock_BlindedBellatrix{BlindedBellatrix: block}, IsBlinded: true, PayloadValue: 0 /* can't get payload value from blinded block */}, nil
|
return ð.GenericBeaconBlock{Block: ð.GenericBeaconBlock_BlindedBellatrix{BlindedBellatrix: block}, IsBlinded: true}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *BlindedBeaconBlockBellatrix) ToConsensus() (*eth.BlindedBeaconBlockBellatrix, error) {
|
func (b *BlindedBeaconBlockBellatrix) ToConsensus() (*eth.BlindedBeaconBlockBellatrix, error) {
|
||||||
@@ -1016,7 +1016,7 @@ func (b *SignedBlindedBeaconBlockCapella) ToGeneric() (*eth.GenericSignedBeaconB
|
|||||||
Block: bl,
|
Block: bl,
|
||||||
Signature: sig,
|
Signature: sig,
|
||||||
}
|
}
|
||||||
return ð.GenericSignedBeaconBlock{Block: ð.GenericSignedBeaconBlock_BlindedCapella{BlindedCapella: block}, IsBlinded: true, PayloadValue: 0 /* can't get payload value from blinded block */}, nil
|
return ð.GenericSignedBeaconBlock{Block: ð.GenericSignedBeaconBlock_BlindedCapella{BlindedCapella: block}, IsBlinded: true}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *BlindedBeaconBlockCapella) ToGeneric() (*eth.GenericBeaconBlock, error) {
|
func (b *BlindedBeaconBlockCapella) ToGeneric() (*eth.GenericBeaconBlock, error) {
|
||||||
@@ -1024,7 +1024,7 @@ func (b *BlindedBeaconBlockCapella) ToGeneric() (*eth.GenericBeaconBlock, error)
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return ð.GenericBeaconBlock{Block: ð.GenericBeaconBlock_BlindedCapella{BlindedCapella: block}, IsBlinded: true, PayloadValue: 0 /* can't get payload value from blinded block */}, nil
|
return ð.GenericBeaconBlock{Block: ð.GenericBeaconBlock_BlindedCapella{BlindedCapella: block}, IsBlinded: true}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *BlindedBeaconBlockCapella) ToConsensus() (*eth.BlindedBeaconBlockCapella, error) {
|
func (b *BlindedBeaconBlockCapella) ToConsensus() (*eth.BlindedBeaconBlockCapella, error) {
|
||||||
|
|||||||
@@ -223,7 +223,7 @@ func (s *Server) produceBlockV3(ctx context.Context, w http.ResponseWriter, r *h
|
|||||||
}
|
}
|
||||||
|
|
||||||
w.Header().Set(api.ExecutionPayloadBlindedHeader, fmt.Sprintf("%v", v1alpha1resp.IsBlinded))
|
w.Header().Set(api.ExecutionPayloadBlindedHeader, fmt.Sprintf("%v", v1alpha1resp.IsBlinded))
|
||||||
w.Header().Set(api.ExecutionPayloadValueHeader, fmt.Sprintf("%d", v1alpha1resp.PayloadValue))
|
w.Header().Set(api.ExecutionPayloadValueHeader, v1alpha1resp.PayloadValue)
|
||||||
w.Header().Set(api.ConsensusBlockValueHeader, consensusBlockValue)
|
w.Header().Set(api.ConsensusBlockValueHeader, consensusBlockValue)
|
||||||
|
|
||||||
phase0Block, ok := v1alpha1resp.Block.(*eth.GenericBeaconBlock_Phase0)
|
phase0Block, ok := v1alpha1resp.Block.(*eth.GenericBeaconBlock_Phase0)
|
||||||
@@ -310,7 +310,7 @@ func handleProducePhase0V3(
|
|||||||
w http.ResponseWriter,
|
w http.ResponseWriter,
|
||||||
isSSZ bool,
|
isSSZ bool,
|
||||||
blk *eth.GenericBeaconBlock_Phase0,
|
blk *eth.GenericBeaconBlock_Phase0,
|
||||||
payloadValue uint64,
|
payloadValue string,
|
||||||
) {
|
) {
|
||||||
if isSSZ {
|
if isSSZ {
|
||||||
sszResp, err := blk.Phase0.MarshalSSZ()
|
sszResp, err := blk.Phase0.MarshalSSZ()
|
||||||
@@ -329,8 +329,8 @@ func handleProducePhase0V3(
|
|||||||
httputil.WriteJson(w, &ProduceBlockV3Response{
|
httputil.WriteJson(w, &ProduceBlockV3Response{
|
||||||
Version: version.String(version.Phase0),
|
Version: version.String(version.Phase0),
|
||||||
ExecutionPayloadBlinded: false,
|
ExecutionPayloadBlinded: false,
|
||||||
ExecutionPayloadValue: fmt.Sprintf("%d", payloadValue), // mev not available at this point
|
ExecutionPayloadValue: payloadValue, // mev not available at this point
|
||||||
ConsensusBlockValue: "", // rewards not applicable before altair
|
ConsensusBlockValue: "", // rewards not applicable before altair
|
||||||
Data: jsonBytes,
|
Data: jsonBytes,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -339,7 +339,7 @@ func handleProduceAltairV3(
|
|||||||
w http.ResponseWriter,
|
w http.ResponseWriter,
|
||||||
isSSZ bool,
|
isSSZ bool,
|
||||||
blk *eth.GenericBeaconBlock_Altair,
|
blk *eth.GenericBeaconBlock_Altair,
|
||||||
executionPayloadValue uint64,
|
executionPayloadValue string,
|
||||||
consensusPayloadValue string,
|
consensusPayloadValue string,
|
||||||
) {
|
) {
|
||||||
if isSSZ {
|
if isSSZ {
|
||||||
@@ -359,7 +359,7 @@ func handleProduceAltairV3(
|
|||||||
httputil.WriteJson(w, &ProduceBlockV3Response{
|
httputil.WriteJson(w, &ProduceBlockV3Response{
|
||||||
Version: version.String(version.Altair),
|
Version: version.String(version.Altair),
|
||||||
ExecutionPayloadBlinded: false,
|
ExecutionPayloadBlinded: false,
|
||||||
ExecutionPayloadValue: fmt.Sprintf("%d", executionPayloadValue), // mev not available at this point
|
ExecutionPayloadValue: executionPayloadValue, // mev not available at this point
|
||||||
ConsensusBlockValue: consensusPayloadValue,
|
ConsensusBlockValue: consensusPayloadValue,
|
||||||
Data: jsonBytes,
|
Data: jsonBytes,
|
||||||
})
|
})
|
||||||
@@ -369,7 +369,7 @@ func handleProduceBellatrixV3(
|
|||||||
w http.ResponseWriter,
|
w http.ResponseWriter,
|
||||||
isSSZ bool,
|
isSSZ bool,
|
||||||
blk *eth.GenericBeaconBlock_Bellatrix,
|
blk *eth.GenericBeaconBlock_Bellatrix,
|
||||||
executionPayloadValue uint64,
|
executionPayloadValue string,
|
||||||
consensusPayloadValue string,
|
consensusPayloadValue string,
|
||||||
) {
|
) {
|
||||||
if isSSZ {
|
if isSSZ {
|
||||||
@@ -394,7 +394,7 @@ func handleProduceBellatrixV3(
|
|||||||
httputil.WriteJson(w, &ProduceBlockV3Response{
|
httputil.WriteJson(w, &ProduceBlockV3Response{
|
||||||
Version: version.String(version.Bellatrix),
|
Version: version.String(version.Bellatrix),
|
||||||
ExecutionPayloadBlinded: false,
|
ExecutionPayloadBlinded: false,
|
||||||
ExecutionPayloadValue: fmt.Sprintf("%d", executionPayloadValue), // mev not available at this point
|
ExecutionPayloadValue: executionPayloadValue, // mev not available at this point
|
||||||
ConsensusBlockValue: consensusPayloadValue,
|
ConsensusBlockValue: consensusPayloadValue,
|
||||||
Data: jsonBytes,
|
Data: jsonBytes,
|
||||||
})
|
})
|
||||||
@@ -404,7 +404,7 @@ func handleProduceBlindedBellatrixV3(
|
|||||||
w http.ResponseWriter,
|
w http.ResponseWriter,
|
||||||
isSSZ bool,
|
isSSZ bool,
|
||||||
blk *eth.GenericBeaconBlock_BlindedBellatrix,
|
blk *eth.GenericBeaconBlock_BlindedBellatrix,
|
||||||
executionPayloadValue uint64,
|
executionPayloadValue string,
|
||||||
consensusPayloadValue string,
|
consensusPayloadValue string,
|
||||||
) {
|
) {
|
||||||
if isSSZ {
|
if isSSZ {
|
||||||
@@ -429,7 +429,7 @@ func handleProduceBlindedBellatrixV3(
|
|||||||
httputil.WriteJson(w, &ProduceBlockV3Response{
|
httputil.WriteJson(w, &ProduceBlockV3Response{
|
||||||
Version: version.String(version.Bellatrix),
|
Version: version.String(version.Bellatrix),
|
||||||
ExecutionPayloadBlinded: true,
|
ExecutionPayloadBlinded: true,
|
||||||
ExecutionPayloadValue: fmt.Sprintf("%d", executionPayloadValue),
|
ExecutionPayloadValue: executionPayloadValue,
|
||||||
ConsensusBlockValue: consensusPayloadValue,
|
ConsensusBlockValue: consensusPayloadValue,
|
||||||
Data: jsonBytes,
|
Data: jsonBytes,
|
||||||
})
|
})
|
||||||
@@ -439,7 +439,7 @@ func handleProduceBlindedCapellaV3(
|
|||||||
w http.ResponseWriter,
|
w http.ResponseWriter,
|
||||||
isSSZ bool,
|
isSSZ bool,
|
||||||
blk *eth.GenericBeaconBlock_BlindedCapella,
|
blk *eth.GenericBeaconBlock_BlindedCapella,
|
||||||
executionPayloadValue uint64,
|
executionPayloadValue string,
|
||||||
consensusPayloadValue string,
|
consensusPayloadValue string,
|
||||||
) {
|
) {
|
||||||
if isSSZ {
|
if isSSZ {
|
||||||
@@ -464,7 +464,7 @@ func handleProduceBlindedCapellaV3(
|
|||||||
httputil.WriteJson(w, &ProduceBlockV3Response{
|
httputil.WriteJson(w, &ProduceBlockV3Response{
|
||||||
Version: version.String(version.Capella),
|
Version: version.String(version.Capella),
|
||||||
ExecutionPayloadBlinded: true,
|
ExecutionPayloadBlinded: true,
|
||||||
ExecutionPayloadValue: fmt.Sprintf("%d", executionPayloadValue),
|
ExecutionPayloadValue: executionPayloadValue,
|
||||||
ConsensusBlockValue: consensusPayloadValue,
|
ConsensusBlockValue: consensusPayloadValue,
|
||||||
Data: jsonBytes,
|
Data: jsonBytes,
|
||||||
})
|
})
|
||||||
@@ -474,7 +474,7 @@ func handleProduceCapellaV3(
|
|||||||
w http.ResponseWriter,
|
w http.ResponseWriter,
|
||||||
isSSZ bool,
|
isSSZ bool,
|
||||||
blk *eth.GenericBeaconBlock_Capella,
|
blk *eth.GenericBeaconBlock_Capella,
|
||||||
executionPayloadValue uint64,
|
executionPayloadValue string,
|
||||||
consensusPayloadValue string,
|
consensusPayloadValue string,
|
||||||
) {
|
) {
|
||||||
if isSSZ {
|
if isSSZ {
|
||||||
@@ -499,7 +499,7 @@ func handleProduceCapellaV3(
|
|||||||
httputil.WriteJson(w, &ProduceBlockV3Response{
|
httputil.WriteJson(w, &ProduceBlockV3Response{
|
||||||
Version: version.String(version.Capella),
|
Version: version.String(version.Capella),
|
||||||
ExecutionPayloadBlinded: false,
|
ExecutionPayloadBlinded: false,
|
||||||
ExecutionPayloadValue: fmt.Sprintf("%d", executionPayloadValue), // mev not available at this point
|
ExecutionPayloadValue: executionPayloadValue, // mev not available at this point
|
||||||
ConsensusBlockValue: consensusPayloadValue,
|
ConsensusBlockValue: consensusPayloadValue,
|
||||||
Data: jsonBytes,
|
Data: jsonBytes,
|
||||||
})
|
})
|
||||||
@@ -509,7 +509,7 @@ func handleProduceBlindedDenebV3(
|
|||||||
w http.ResponseWriter,
|
w http.ResponseWriter,
|
||||||
isSSZ bool,
|
isSSZ bool,
|
||||||
blk *eth.GenericBeaconBlock_BlindedDeneb,
|
blk *eth.GenericBeaconBlock_BlindedDeneb,
|
||||||
executionPayloadValue uint64,
|
executionPayloadValue string,
|
||||||
consensusPayloadValue string,
|
consensusPayloadValue string,
|
||||||
) {
|
) {
|
||||||
if isSSZ {
|
if isSSZ {
|
||||||
@@ -534,7 +534,7 @@ func handleProduceBlindedDenebV3(
|
|||||||
httputil.WriteJson(w, &ProduceBlockV3Response{
|
httputil.WriteJson(w, &ProduceBlockV3Response{
|
||||||
Version: version.String(version.Deneb),
|
Version: version.String(version.Deneb),
|
||||||
ExecutionPayloadBlinded: true,
|
ExecutionPayloadBlinded: true,
|
||||||
ExecutionPayloadValue: fmt.Sprintf("%d", executionPayloadValue),
|
ExecutionPayloadValue: executionPayloadValue,
|
||||||
ConsensusBlockValue: consensusPayloadValue,
|
ConsensusBlockValue: consensusPayloadValue,
|
||||||
Data: jsonBytes,
|
Data: jsonBytes,
|
||||||
})
|
})
|
||||||
@@ -544,7 +544,7 @@ func handleProduceDenebV3(
|
|||||||
w http.ResponseWriter,
|
w http.ResponseWriter,
|
||||||
isSSZ bool,
|
isSSZ bool,
|
||||||
blk *eth.GenericBeaconBlock_Deneb,
|
blk *eth.GenericBeaconBlock_Deneb,
|
||||||
executionPayloadValue uint64,
|
executionPayloadValue string,
|
||||||
consensusBlockValue string,
|
consensusBlockValue string,
|
||||||
) {
|
) {
|
||||||
if isSSZ {
|
if isSSZ {
|
||||||
@@ -570,7 +570,7 @@ func handleProduceDenebV3(
|
|||||||
httputil.WriteJson(w, &ProduceBlockV3Response{
|
httputil.WriteJson(w, &ProduceBlockV3Response{
|
||||||
Version: version.String(version.Deneb),
|
Version: version.String(version.Deneb),
|
||||||
ExecutionPayloadBlinded: false,
|
ExecutionPayloadBlinded: false,
|
||||||
ExecutionPayloadValue: fmt.Sprintf("%d", executionPayloadValue), // mev not available at this point
|
ExecutionPayloadValue: executionPayloadValue, // mev not available at this point
|
||||||
ConsensusBlockValue: consensusBlockValue,
|
ConsensusBlockValue: consensusBlockValue,
|
||||||
Data: jsonBytes,
|
Data: jsonBytes,
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ func TestProduceBlockV2(t *testing.T) {
|
|||||||
writer.Body = &bytes.Buffer{}
|
writer.Body = &bytes.Buffer{}
|
||||||
server.ProduceBlockV2(writer, request)
|
server.ProduceBlockV2(writer, request)
|
||||||
assert.Equal(t, http.StatusOK, writer.Code)
|
assert.Equal(t, http.StatusOK, writer.Code)
|
||||||
want := fmt.Sprintf(`{"version":"phase0","execution_payload_blinded":false,"execution_payload_value":"0","consensus_block_value":"","data":%s}`, string(jsonBytes))
|
want := fmt.Sprintf(`{"version":"phase0","execution_payload_blinded":false,"execution_payload_value":"","consensus_block_value":"","data":%s}`, string(jsonBytes))
|
||||||
body := strings.ReplaceAll(writer.Body.String(), "\n", "")
|
body := strings.ReplaceAll(writer.Body.String(), "\n", "")
|
||||||
require.Equal(t, want, body)
|
require.Equal(t, want, body)
|
||||||
require.Equal(t, "phase0", writer.Header().Get(api.VersionHeader))
|
require.Equal(t, "phase0", writer.Header().Get(api.VersionHeader))
|
||||||
@@ -84,7 +84,6 @@ func TestProduceBlockV2(t *testing.T) {
|
|||||||
SkipMevBoost: true,
|
SkipMevBoost: true,
|
||||||
}).Return(
|
}).Return(
|
||||||
func() (*eth.GenericBeaconBlock, error) {
|
func() (*eth.GenericBeaconBlock, error) {
|
||||||
|
|
||||||
return block.Message.ToGeneric()
|
return block.Message.ToGeneric()
|
||||||
}())
|
}())
|
||||||
server := &Server{
|
server := &Server{
|
||||||
@@ -98,7 +97,7 @@ func TestProduceBlockV2(t *testing.T) {
|
|||||||
writer.Body = &bytes.Buffer{}
|
writer.Body = &bytes.Buffer{}
|
||||||
server.ProduceBlockV2(writer, request)
|
server.ProduceBlockV2(writer, request)
|
||||||
assert.Equal(t, http.StatusOK, writer.Code)
|
assert.Equal(t, http.StatusOK, writer.Code)
|
||||||
want := fmt.Sprintf(`{"version":"altair","execution_payload_blinded":false,"execution_payload_value":"0","consensus_block_value":"10","data":%s}`, string(jsonBytes))
|
want := fmt.Sprintf(`{"version":"altair","execution_payload_blinded":false,"execution_payload_value":"","consensus_block_value":"10","data":%s}`, string(jsonBytes))
|
||||||
body := strings.ReplaceAll(writer.Body.String(), "\n", "")
|
body := strings.ReplaceAll(writer.Body.String(), "\n", "")
|
||||||
require.Equal(t, want, body)
|
require.Equal(t, want, body)
|
||||||
require.Equal(t, "altair", writer.Header().Get(api.VersionHeader))
|
require.Equal(t, "altair", writer.Header().Get(api.VersionHeader))
|
||||||
@@ -118,7 +117,10 @@ func TestProduceBlockV2(t *testing.T) {
|
|||||||
SkipMevBoost: true,
|
SkipMevBoost: true,
|
||||||
}).Return(
|
}).Return(
|
||||||
func() (*eth.GenericBeaconBlock, error) {
|
func() (*eth.GenericBeaconBlock, error) {
|
||||||
return block.Message.ToGeneric()
|
b, err := block.Message.ToGeneric()
|
||||||
|
require.NoError(t, err)
|
||||||
|
b.PayloadValue = "2000"
|
||||||
|
return b, nil
|
||||||
}())
|
}())
|
||||||
server := &Server{
|
server := &Server{
|
||||||
V1Alpha1Server: v1alpha1Server,
|
V1Alpha1Server: v1alpha1Server,
|
||||||
@@ -132,7 +134,7 @@ func TestProduceBlockV2(t *testing.T) {
|
|||||||
writer.Body = &bytes.Buffer{}
|
writer.Body = &bytes.Buffer{}
|
||||||
server.ProduceBlockV2(writer, request)
|
server.ProduceBlockV2(writer, request)
|
||||||
assert.Equal(t, http.StatusOK, writer.Code)
|
assert.Equal(t, http.StatusOK, writer.Code)
|
||||||
want := fmt.Sprintf(`{"version":"bellatrix","execution_payload_blinded":false,"execution_payload_value":"0","consensus_block_value":"10","data":%s}`, string(jsonBytes))
|
want := fmt.Sprintf(`{"version":"bellatrix","execution_payload_blinded":false,"execution_payload_value":"2000","consensus_block_value":"10","data":%s}`, string(jsonBytes))
|
||||||
body := strings.ReplaceAll(writer.Body.String(), "\n", "")
|
body := strings.ReplaceAll(writer.Body.String(), "\n", "")
|
||||||
require.Equal(t, want, body)
|
require.Equal(t, want, body)
|
||||||
require.Equal(t, "bellatrix", writer.Header().Get(api.VersionHeader))
|
require.Equal(t, "bellatrix", writer.Header().Get(api.VersionHeader))
|
||||||
@@ -184,7 +186,10 @@ func TestProduceBlockV2(t *testing.T) {
|
|||||||
SkipMevBoost: true,
|
SkipMevBoost: true,
|
||||||
}).Return(
|
}).Return(
|
||||||
func() (*eth.GenericBeaconBlock, error) {
|
func() (*eth.GenericBeaconBlock, error) {
|
||||||
return block.Message.ToGeneric()
|
b, err := block.Message.ToGeneric()
|
||||||
|
require.NoError(t, err)
|
||||||
|
b.PayloadValue = "2000"
|
||||||
|
return b, nil
|
||||||
}())
|
}())
|
||||||
server := &Server{
|
server := &Server{
|
||||||
V1Alpha1Server: v1alpha1Server,
|
V1Alpha1Server: v1alpha1Server,
|
||||||
@@ -198,7 +203,7 @@ func TestProduceBlockV2(t *testing.T) {
|
|||||||
writer.Body = &bytes.Buffer{}
|
writer.Body = &bytes.Buffer{}
|
||||||
server.ProduceBlockV2(writer, request)
|
server.ProduceBlockV2(writer, request)
|
||||||
assert.Equal(t, http.StatusOK, writer.Code)
|
assert.Equal(t, http.StatusOK, writer.Code)
|
||||||
want := fmt.Sprintf(`{"version":"capella","execution_payload_blinded":false,"execution_payload_value":"0","consensus_block_value":"10","data":%s}`, string(jsonBytes))
|
want := fmt.Sprintf(`{"version":"capella","execution_payload_blinded":false,"execution_payload_value":"2000","consensus_block_value":"10","data":%s}`, string(jsonBytes))
|
||||||
body := strings.ReplaceAll(writer.Body.String(), "\n", "")
|
body := strings.ReplaceAll(writer.Body.String(), "\n", "")
|
||||||
require.Equal(t, want, body)
|
require.Equal(t, want, body)
|
||||||
require.Equal(t, "capella", writer.Header().Get(api.VersionHeader))
|
require.Equal(t, "capella", writer.Header().Get(api.VersionHeader))
|
||||||
@@ -216,10 +221,7 @@ func TestProduceBlockV2(t *testing.T) {
|
|||||||
SkipMevBoost: true,
|
SkipMevBoost: true,
|
||||||
}).Return(
|
}).Return(
|
||||||
func() (*eth.GenericBeaconBlock, error) {
|
func() (*eth.GenericBeaconBlock, error) {
|
||||||
g, err := block.Message.ToGeneric()
|
return block.Message.ToGeneric()
|
||||||
require.NoError(t, err)
|
|
||||||
g.PayloadValue = 2000 //some fake value
|
|
||||||
return g, err
|
|
||||||
}())
|
}())
|
||||||
server := &Server{
|
server := &Server{
|
||||||
V1Alpha1Server: v1alpha1Server,
|
V1Alpha1Server: v1alpha1Server,
|
||||||
@@ -253,7 +255,10 @@ func TestProduceBlockV2(t *testing.T) {
|
|||||||
SkipMevBoost: true,
|
SkipMevBoost: true,
|
||||||
}).Return(
|
}).Return(
|
||||||
func() (*eth.GenericBeaconBlock, error) {
|
func() (*eth.GenericBeaconBlock, error) {
|
||||||
return block.ToUnsigned().ToGeneric()
|
b, err := block.ToUnsigned().ToGeneric()
|
||||||
|
require.NoError(t, err)
|
||||||
|
b.PayloadValue = "2000"
|
||||||
|
return b, nil
|
||||||
}())
|
}())
|
||||||
server := &Server{
|
server := &Server{
|
||||||
V1Alpha1Server: v1alpha1Server,
|
V1Alpha1Server: v1alpha1Server,
|
||||||
@@ -267,7 +272,7 @@ func TestProduceBlockV2(t *testing.T) {
|
|||||||
writer.Body = &bytes.Buffer{}
|
writer.Body = &bytes.Buffer{}
|
||||||
server.ProduceBlockV2(writer, request)
|
server.ProduceBlockV2(writer, request)
|
||||||
assert.Equal(t, http.StatusOK, writer.Code)
|
assert.Equal(t, http.StatusOK, writer.Code)
|
||||||
want := fmt.Sprintf(`{"version":"deneb","execution_payload_blinded":false,"execution_payload_value":"0","consensus_block_value":"10","data":%s}`, string(jsonBytes))
|
want := fmt.Sprintf(`{"version":"deneb","execution_payload_blinded":false,"execution_payload_value":"2000","consensus_block_value":"10","data":%s}`, string(jsonBytes))
|
||||||
body := strings.ReplaceAll(writer.Body.String(), "\n", "")
|
body := strings.ReplaceAll(writer.Body.String(), "\n", "")
|
||||||
require.Equal(t, want, body)
|
require.Equal(t, want, body)
|
||||||
require.Equal(t, "deneb", writer.Header().Get(api.VersionHeader))
|
require.Equal(t, "deneb", writer.Header().Get(api.VersionHeader))
|
||||||
@@ -566,7 +571,7 @@ func TestProduceBlockV2SSZ(t *testing.T) {
|
|||||||
func() (*eth.GenericBeaconBlock, error) {
|
func() (*eth.GenericBeaconBlock, error) {
|
||||||
g, err := block.Message.ToGeneric()
|
g, err := block.Message.ToGeneric()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
g.PayloadValue = 2000 //some fake value
|
g.PayloadValue = "2000"
|
||||||
return g, err
|
return g, err
|
||||||
}())
|
}())
|
||||||
server := &Server{
|
server := &Server{
|
||||||
@@ -780,7 +785,10 @@ func TestProduceBlindedBlock(t *testing.T) {
|
|||||||
SkipMevBoost: false,
|
SkipMevBoost: false,
|
||||||
}).Return(
|
}).Return(
|
||||||
func() (*eth.GenericBeaconBlock, error) {
|
func() (*eth.GenericBeaconBlock, error) {
|
||||||
return block.Message.ToGeneric()
|
b, err := block.Message.ToGeneric()
|
||||||
|
require.NoError(t, err)
|
||||||
|
b.PayloadValue = "2000"
|
||||||
|
return b, nil
|
||||||
}())
|
}())
|
||||||
server := &Server{
|
server := &Server{
|
||||||
V1Alpha1Server: v1alpha1Server,
|
V1Alpha1Server: v1alpha1Server,
|
||||||
@@ -794,7 +802,7 @@ func TestProduceBlindedBlock(t *testing.T) {
|
|||||||
writer.Body = &bytes.Buffer{}
|
writer.Body = &bytes.Buffer{}
|
||||||
server.ProduceBlindedBlock(writer, request)
|
server.ProduceBlindedBlock(writer, request)
|
||||||
assert.Equal(t, http.StatusOK, writer.Code)
|
assert.Equal(t, http.StatusOK, writer.Code)
|
||||||
want := fmt.Sprintf(`{"version":"bellatrix","execution_payload_blinded":true,"execution_payload_value":"0","consensus_block_value":"10","data":%s}`, string(jsonBytes))
|
want := fmt.Sprintf(`{"version":"bellatrix","execution_payload_blinded":true,"execution_payload_value":"2000","consensus_block_value":"10","data":%s}`, string(jsonBytes))
|
||||||
body := strings.ReplaceAll(writer.Body.String(), "\n", "")
|
body := strings.ReplaceAll(writer.Body.String(), "\n", "")
|
||||||
require.Equal(t, want, body)
|
require.Equal(t, want, body)
|
||||||
require.Equal(t, "bellatrix", writer.Header().Get(api.VersionHeader))
|
require.Equal(t, "bellatrix", writer.Header().Get(api.VersionHeader))
|
||||||
@@ -848,7 +856,7 @@ func TestProduceBlindedBlock(t *testing.T) {
|
|||||||
func() (*eth.GenericBeaconBlock, error) {
|
func() (*eth.GenericBeaconBlock, error) {
|
||||||
g, err := block.Message.ToGeneric()
|
g, err := block.Message.ToGeneric()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
g.PayloadValue = 2000 //some fake value
|
g.PayloadValue = "2000"
|
||||||
return g, err
|
return g, err
|
||||||
}())
|
}())
|
||||||
server := &Server{
|
server := &Server{
|
||||||
@@ -915,7 +923,10 @@ func TestProduceBlindedBlock(t *testing.T) {
|
|||||||
SkipMevBoost: false,
|
SkipMevBoost: false,
|
||||||
}).Return(
|
}).Return(
|
||||||
func() (*eth.GenericBeaconBlock, error) {
|
func() (*eth.GenericBeaconBlock, error) {
|
||||||
return block.Message.ToGeneric()
|
b, err := block.Message.ToGeneric()
|
||||||
|
require.NoError(t, err)
|
||||||
|
b.PayloadValue = "2000"
|
||||||
|
return b, nil
|
||||||
}())
|
}())
|
||||||
server := &Server{
|
server := &Server{
|
||||||
V1Alpha1Server: v1alpha1Server,
|
V1Alpha1Server: v1alpha1Server,
|
||||||
@@ -929,7 +940,7 @@ func TestProduceBlindedBlock(t *testing.T) {
|
|||||||
writer.Body = &bytes.Buffer{}
|
writer.Body = &bytes.Buffer{}
|
||||||
server.ProduceBlindedBlock(writer, request)
|
server.ProduceBlindedBlock(writer, request)
|
||||||
assert.Equal(t, http.StatusOK, writer.Code)
|
assert.Equal(t, http.StatusOK, writer.Code)
|
||||||
want := fmt.Sprintf(`{"version":"deneb","execution_payload_blinded":true,"execution_payload_value":"0","consensus_block_value":"10","data":%s}`, string(jsonBytes))
|
want := fmt.Sprintf(`{"version":"deneb","execution_payload_blinded":true,"execution_payload_value":"2000","consensus_block_value":"10","data":%s}`, string(jsonBytes))
|
||||||
body := strings.ReplaceAll(writer.Body.String(), "\n", "")
|
body := strings.ReplaceAll(writer.Body.String(), "\n", "")
|
||||||
require.Equal(t, want, body)
|
require.Equal(t, want, body)
|
||||||
require.Equal(t, "deneb", writer.Header().Get(api.VersionHeader))
|
require.Equal(t, "deneb", writer.Header().Get(api.VersionHeader))
|
||||||
@@ -1027,11 +1038,11 @@ func TestProduceBlockV3(t *testing.T) {
|
|||||||
writer.Body = &bytes.Buffer{}
|
writer.Body = &bytes.Buffer{}
|
||||||
server.ProduceBlockV3(writer, request)
|
server.ProduceBlockV3(writer, request)
|
||||||
assert.Equal(t, http.StatusOK, writer.Code)
|
assert.Equal(t, http.StatusOK, writer.Code)
|
||||||
want := fmt.Sprintf(`{"version":"phase0","execution_payload_blinded":false,"execution_payload_value":"0","consensus_block_value":"","data":%s}`, string(jsonBytes))
|
want := fmt.Sprintf(`{"version":"phase0","execution_payload_blinded":false,"execution_payload_value":"","consensus_block_value":"","data":%s}`, string(jsonBytes))
|
||||||
body := strings.ReplaceAll(writer.Body.String(), "\n", "")
|
body := strings.ReplaceAll(writer.Body.String(), "\n", "")
|
||||||
require.Equal(t, want, body)
|
require.Equal(t, want, body)
|
||||||
require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader))
|
require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader))
|
||||||
require.Equal(t, "0", writer.Header().Get(api.ExecutionPayloadValueHeader))
|
require.Equal(t, "", writer.Header().Get(api.ExecutionPayloadValueHeader))
|
||||||
require.Equal(t, "phase0", writer.Header().Get(api.VersionHeader))
|
require.Equal(t, "phase0", writer.Header().Get(api.VersionHeader))
|
||||||
require.Equal(t, "", writer.Header().Get(api.ConsensusBlockValueHeader))
|
require.Equal(t, "", writer.Header().Get(api.ConsensusBlockValueHeader))
|
||||||
})
|
})
|
||||||
@@ -1063,11 +1074,11 @@ func TestProduceBlockV3(t *testing.T) {
|
|||||||
writer.Body = &bytes.Buffer{}
|
writer.Body = &bytes.Buffer{}
|
||||||
server.ProduceBlockV3(writer, request)
|
server.ProduceBlockV3(writer, request)
|
||||||
assert.Equal(t, http.StatusOK, writer.Code)
|
assert.Equal(t, http.StatusOK, writer.Code)
|
||||||
want := fmt.Sprintf(`{"version":"altair","execution_payload_blinded":false,"execution_payload_value":"0","consensus_block_value":"10","data":%s}`, string(jsonBytes))
|
want := fmt.Sprintf(`{"version":"altair","execution_payload_blinded":false,"execution_payload_value":"","consensus_block_value":"10","data":%s}`, string(jsonBytes))
|
||||||
body := strings.ReplaceAll(writer.Body.String(), "\n", "")
|
body := strings.ReplaceAll(writer.Body.String(), "\n", "")
|
||||||
require.Equal(t, want, body)
|
require.Equal(t, want, body)
|
||||||
require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader))
|
require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader))
|
||||||
require.Equal(t, "0", writer.Header().Get(api.ExecutionPayloadValueHeader))
|
require.Equal(t, "", writer.Header().Get(api.ExecutionPayloadValueHeader))
|
||||||
require.Equal(t, "altair", writer.Header().Get(api.VersionHeader))
|
require.Equal(t, "altair", writer.Header().Get(api.VersionHeader))
|
||||||
require.Equal(t, "10", writer.Header().Get(api.ConsensusBlockValueHeader))
|
require.Equal(t, "10", writer.Header().Get(api.ConsensusBlockValueHeader))
|
||||||
})
|
})
|
||||||
@@ -1085,7 +1096,10 @@ func TestProduceBlockV3(t *testing.T) {
|
|||||||
SkipMevBoost: false,
|
SkipMevBoost: false,
|
||||||
}).Return(
|
}).Return(
|
||||||
func() (*eth.GenericBeaconBlock, error) {
|
func() (*eth.GenericBeaconBlock, error) {
|
||||||
return block.Message.ToGeneric()
|
b, err := block.Message.ToGeneric()
|
||||||
|
require.NoError(t, err)
|
||||||
|
b.PayloadValue = "2000"
|
||||||
|
return b, nil
|
||||||
}())
|
}())
|
||||||
server := &Server{
|
server := &Server{
|
||||||
V1Alpha1Server: v1alpha1Server,
|
V1Alpha1Server: v1alpha1Server,
|
||||||
@@ -1098,11 +1112,11 @@ func TestProduceBlockV3(t *testing.T) {
|
|||||||
writer.Body = &bytes.Buffer{}
|
writer.Body = &bytes.Buffer{}
|
||||||
server.ProduceBlockV3(writer, request)
|
server.ProduceBlockV3(writer, request)
|
||||||
assert.Equal(t, http.StatusOK, writer.Code)
|
assert.Equal(t, http.StatusOK, writer.Code)
|
||||||
want := fmt.Sprintf(`{"version":"bellatrix","execution_payload_blinded":false,"execution_payload_value":"0","consensus_block_value":"10","data":%s}`, string(jsonBytes))
|
want := fmt.Sprintf(`{"version":"bellatrix","execution_payload_blinded":false,"execution_payload_value":"2000","consensus_block_value":"10","data":%s}`, string(jsonBytes))
|
||||||
body := strings.ReplaceAll(writer.Body.String(), "\n", "")
|
body := strings.ReplaceAll(writer.Body.String(), "\n", "")
|
||||||
require.Equal(t, want, body)
|
require.Equal(t, want, body)
|
||||||
require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader))
|
require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader))
|
||||||
require.Equal(t, "0", writer.Header().Get(api.ExecutionPayloadValueHeader))
|
require.Equal(t, "2000", writer.Header().Get(api.ExecutionPayloadValueHeader))
|
||||||
require.Equal(t, "bellatrix", writer.Header().Get(api.VersionHeader))
|
require.Equal(t, "bellatrix", writer.Header().Get(api.VersionHeader))
|
||||||
require.Equal(t, "10", writer.Header().Get(api.ConsensusBlockValueHeader))
|
require.Equal(t, "10", writer.Header().Get(api.ConsensusBlockValueHeader))
|
||||||
})
|
})
|
||||||
@@ -1120,7 +1134,10 @@ func TestProduceBlockV3(t *testing.T) {
|
|||||||
SkipMevBoost: false,
|
SkipMevBoost: false,
|
||||||
}).Return(
|
}).Return(
|
||||||
func() (*eth.GenericBeaconBlock, error) {
|
func() (*eth.GenericBeaconBlock, error) {
|
||||||
return block.Message.ToGeneric()
|
b, err := block.Message.ToGeneric()
|
||||||
|
require.NoError(t, err)
|
||||||
|
b.PayloadValue = "2000"
|
||||||
|
return b, nil
|
||||||
}())
|
}())
|
||||||
server := &Server{
|
server := &Server{
|
||||||
V1Alpha1Server: v1alpha1Server,
|
V1Alpha1Server: v1alpha1Server,
|
||||||
@@ -1133,11 +1150,11 @@ func TestProduceBlockV3(t *testing.T) {
|
|||||||
writer.Body = &bytes.Buffer{}
|
writer.Body = &bytes.Buffer{}
|
||||||
server.ProduceBlockV3(writer, request)
|
server.ProduceBlockV3(writer, request)
|
||||||
assert.Equal(t, http.StatusOK, writer.Code)
|
assert.Equal(t, http.StatusOK, writer.Code)
|
||||||
want := fmt.Sprintf(`{"version":"bellatrix","execution_payload_blinded":true,"execution_payload_value":"0","consensus_block_value":"10","data":%s}`, string(jsonBytes))
|
want := fmt.Sprintf(`{"version":"bellatrix","execution_payload_blinded":true,"execution_payload_value":"2000","consensus_block_value":"10","data":%s}`, string(jsonBytes))
|
||||||
body := strings.ReplaceAll(writer.Body.String(), "\n", "")
|
body := strings.ReplaceAll(writer.Body.String(), "\n", "")
|
||||||
require.Equal(t, want, body)
|
require.Equal(t, want, body)
|
||||||
require.Equal(t, "true", writer.Header().Get(api.ExecutionPayloadBlindedHeader))
|
require.Equal(t, "true", writer.Header().Get(api.ExecutionPayloadBlindedHeader))
|
||||||
require.Equal(t, "0", writer.Header().Get(api.ExecutionPayloadValueHeader))
|
require.Equal(t, "2000", writer.Header().Get(api.ExecutionPayloadValueHeader))
|
||||||
require.Equal(t, "bellatrix", writer.Header().Get(api.VersionHeader))
|
require.Equal(t, "bellatrix", writer.Header().Get(api.VersionHeader))
|
||||||
require.Equal(t, "10", writer.Header().Get(api.ConsensusBlockValueHeader))
|
require.Equal(t, "10", writer.Header().Get(api.ConsensusBlockValueHeader))
|
||||||
})
|
})
|
||||||
@@ -1155,7 +1172,10 @@ func TestProduceBlockV3(t *testing.T) {
|
|||||||
SkipMevBoost: false,
|
SkipMevBoost: false,
|
||||||
}).Return(
|
}).Return(
|
||||||
func() (*eth.GenericBeaconBlock, error) {
|
func() (*eth.GenericBeaconBlock, error) {
|
||||||
return block.Message.ToGeneric()
|
b, err := block.Message.ToGeneric()
|
||||||
|
require.NoError(t, err)
|
||||||
|
b.PayloadValue = "2000"
|
||||||
|
return b, nil
|
||||||
}())
|
}())
|
||||||
server := &Server{
|
server := &Server{
|
||||||
V1Alpha1Server: v1alpha1Server,
|
V1Alpha1Server: v1alpha1Server,
|
||||||
@@ -1168,11 +1188,11 @@ func TestProduceBlockV3(t *testing.T) {
|
|||||||
writer.Body = &bytes.Buffer{}
|
writer.Body = &bytes.Buffer{}
|
||||||
server.ProduceBlockV3(writer, request)
|
server.ProduceBlockV3(writer, request)
|
||||||
assert.Equal(t, http.StatusOK, writer.Code)
|
assert.Equal(t, http.StatusOK, writer.Code)
|
||||||
want := fmt.Sprintf(`{"version":"capella","execution_payload_blinded":false,"execution_payload_value":"0","consensus_block_value":"10","data":%s}`, string(jsonBytes))
|
want := fmt.Sprintf(`{"version":"capella","execution_payload_blinded":false,"execution_payload_value":"2000","consensus_block_value":"10","data":%s}`, string(jsonBytes))
|
||||||
body := strings.ReplaceAll(writer.Body.String(), "\n", "")
|
body := strings.ReplaceAll(writer.Body.String(), "\n", "")
|
||||||
require.Equal(t, want, body)
|
require.Equal(t, want, body)
|
||||||
require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader))
|
require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader))
|
||||||
require.Equal(t, "0", writer.Header().Get(api.ExecutionPayloadValueHeader))
|
require.Equal(t, "2000", writer.Header().Get(api.ExecutionPayloadValueHeader))
|
||||||
require.Equal(t, "capella", writer.Header().Get(api.VersionHeader))
|
require.Equal(t, "capella", writer.Header().Get(api.VersionHeader))
|
||||||
require.Equal(t, "10", writer.Header().Get(api.ConsensusBlockValueHeader))
|
require.Equal(t, "10", writer.Header().Get(api.ConsensusBlockValueHeader))
|
||||||
})
|
})
|
||||||
@@ -1192,7 +1212,7 @@ func TestProduceBlockV3(t *testing.T) {
|
|||||||
func() (*eth.GenericBeaconBlock, error) {
|
func() (*eth.GenericBeaconBlock, error) {
|
||||||
g, err := block.Message.ToGeneric()
|
g, err := block.Message.ToGeneric()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
g.PayloadValue = 2000 //some fake value
|
g.PayloadValue = "2000"
|
||||||
return g, err
|
return g, err
|
||||||
}())
|
}())
|
||||||
server := &Server{
|
server := &Server{
|
||||||
@@ -1228,7 +1248,10 @@ func TestProduceBlockV3(t *testing.T) {
|
|||||||
SkipMevBoost: false,
|
SkipMevBoost: false,
|
||||||
}).Return(
|
}).Return(
|
||||||
func() (*eth.GenericBeaconBlock, error) {
|
func() (*eth.GenericBeaconBlock, error) {
|
||||||
return block.ToUnsigned().ToGeneric()
|
b, err := block.ToUnsigned().ToGeneric()
|
||||||
|
require.NoError(t, err)
|
||||||
|
b.PayloadValue = "2000"
|
||||||
|
return b, nil
|
||||||
}())
|
}())
|
||||||
server := &Server{
|
server := &Server{
|
||||||
V1Alpha1Server: v1alpha1Server,
|
V1Alpha1Server: v1alpha1Server,
|
||||||
@@ -1241,11 +1264,11 @@ func TestProduceBlockV3(t *testing.T) {
|
|||||||
writer.Body = &bytes.Buffer{}
|
writer.Body = &bytes.Buffer{}
|
||||||
server.ProduceBlockV3(writer, request)
|
server.ProduceBlockV3(writer, request)
|
||||||
assert.Equal(t, http.StatusOK, writer.Code)
|
assert.Equal(t, http.StatusOK, writer.Code)
|
||||||
want := fmt.Sprintf(`{"version":"deneb","execution_payload_blinded":false,"execution_payload_value":"0","consensus_block_value":"10","data":%s}`, string(jsonBytes))
|
want := fmt.Sprintf(`{"version":"deneb","execution_payload_blinded":false,"execution_payload_value":"2000","consensus_block_value":"10","data":%s}`, string(jsonBytes))
|
||||||
body := strings.ReplaceAll(writer.Body.String(), "\n", "")
|
body := strings.ReplaceAll(writer.Body.String(), "\n", "")
|
||||||
require.Equal(t, want, body)
|
require.Equal(t, want, body)
|
||||||
require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader))
|
require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader))
|
||||||
require.Equal(t, "0", writer.Header().Get(api.ExecutionPayloadValueHeader))
|
require.Equal(t, "2000", writer.Header().Get(api.ExecutionPayloadValueHeader))
|
||||||
require.Equal(t, "deneb", writer.Header().Get(api.VersionHeader))
|
require.Equal(t, "deneb", writer.Header().Get(api.VersionHeader))
|
||||||
require.Equal(t, "10", writer.Header().Get(api.ConsensusBlockValueHeader))
|
require.Equal(t, "10", writer.Header().Get(api.ConsensusBlockValueHeader))
|
||||||
})
|
})
|
||||||
@@ -1263,7 +1286,10 @@ func TestProduceBlockV3(t *testing.T) {
|
|||||||
SkipMevBoost: false,
|
SkipMevBoost: false,
|
||||||
}).Return(
|
}).Return(
|
||||||
func() (*eth.GenericBeaconBlock, error) {
|
func() (*eth.GenericBeaconBlock, error) {
|
||||||
return block.Message.ToGeneric()
|
b, err := block.Message.ToGeneric()
|
||||||
|
require.NoError(t, err)
|
||||||
|
b.PayloadValue = "2000"
|
||||||
|
return b, nil
|
||||||
}())
|
}())
|
||||||
server := &Server{
|
server := &Server{
|
||||||
V1Alpha1Server: v1alpha1Server,
|
V1Alpha1Server: v1alpha1Server,
|
||||||
@@ -1276,11 +1302,11 @@ func TestProduceBlockV3(t *testing.T) {
|
|||||||
writer.Body = &bytes.Buffer{}
|
writer.Body = &bytes.Buffer{}
|
||||||
server.ProduceBlockV3(writer, request)
|
server.ProduceBlockV3(writer, request)
|
||||||
assert.Equal(t, http.StatusOK, writer.Code)
|
assert.Equal(t, http.StatusOK, writer.Code)
|
||||||
want := fmt.Sprintf(`{"version":"deneb","execution_payload_blinded":true,"execution_payload_value":"0","consensus_block_value":"10","data":%s}`, string(jsonBytes))
|
want := fmt.Sprintf(`{"version":"deneb","execution_payload_blinded":true,"execution_payload_value":"2000","consensus_block_value":"10","data":%s}`, string(jsonBytes))
|
||||||
body := strings.ReplaceAll(writer.Body.String(), "\n", "")
|
body := strings.ReplaceAll(writer.Body.String(), "\n", "")
|
||||||
require.Equal(t, want, body)
|
require.Equal(t, want, body)
|
||||||
require.Equal(t, "true", writer.Header().Get(api.ExecutionPayloadBlindedHeader))
|
require.Equal(t, "true", writer.Header().Get(api.ExecutionPayloadBlindedHeader))
|
||||||
require.Equal(t, "0", writer.Header().Get(api.ExecutionPayloadValueHeader))
|
require.Equal(t, "2000", writer.Header().Get(api.ExecutionPayloadValueHeader))
|
||||||
require.Equal(t, "deneb", writer.Header().Get(api.VersionHeader))
|
require.Equal(t, "deneb", writer.Header().Get(api.VersionHeader))
|
||||||
require.Equal(t, "10", writer.Header().Get(api.ConsensusBlockValueHeader))
|
require.Equal(t, "10", writer.Header().Get(api.ConsensusBlockValueHeader))
|
||||||
})
|
})
|
||||||
@@ -1383,7 +1409,7 @@ func TestProduceBlockV3SSZ(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, string(ssz), writer.Body.String())
|
require.Equal(t, string(ssz), writer.Body.String())
|
||||||
require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader))
|
require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader))
|
||||||
require.Equal(t, "0", writer.Header().Get(api.ExecutionPayloadValueHeader))
|
require.Equal(t, "", writer.Header().Get(api.ExecutionPayloadValueHeader))
|
||||||
require.Equal(t, "phase0", writer.Header().Get(api.VersionHeader))
|
require.Equal(t, "phase0", writer.Header().Get(api.VersionHeader))
|
||||||
require.Equal(t, "", writer.Header().Get(api.ConsensusBlockValueHeader))
|
require.Equal(t, "", writer.Header().Get(api.ConsensusBlockValueHeader))
|
||||||
})
|
})
|
||||||
@@ -1421,7 +1447,7 @@ func TestProduceBlockV3SSZ(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, string(ssz), writer.Body.String())
|
require.Equal(t, string(ssz), writer.Body.String())
|
||||||
require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader))
|
require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader))
|
||||||
require.Equal(t, "0", writer.Header().Get(api.ExecutionPayloadValueHeader))
|
require.Equal(t, "", writer.Header().Get(api.ExecutionPayloadValueHeader))
|
||||||
require.Equal(t, "altair", writer.Header().Get(api.VersionHeader))
|
require.Equal(t, "altair", writer.Header().Get(api.VersionHeader))
|
||||||
require.Equal(t, "10", writer.Header().Get(api.ConsensusBlockValueHeader))
|
require.Equal(t, "10", writer.Header().Get(api.ConsensusBlockValueHeader))
|
||||||
})
|
})
|
||||||
@@ -1437,7 +1463,10 @@ func TestProduceBlockV3SSZ(t *testing.T) {
|
|||||||
SkipMevBoost: false,
|
SkipMevBoost: false,
|
||||||
}).Return(
|
}).Return(
|
||||||
func() (*eth.GenericBeaconBlock, error) {
|
func() (*eth.GenericBeaconBlock, error) {
|
||||||
return block.Message.ToGeneric()
|
b, err := block.Message.ToGeneric()
|
||||||
|
require.NoError(t, err)
|
||||||
|
b.PayloadValue = "2000"
|
||||||
|
return b, nil
|
||||||
}())
|
}())
|
||||||
mockChainService := &blockchainTesting.ChainService{}
|
mockChainService := &blockchainTesting.ChainService{}
|
||||||
server := &Server{
|
server := &Server{
|
||||||
@@ -1460,7 +1489,7 @@ func TestProduceBlockV3SSZ(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, string(ssz), writer.Body.String())
|
require.Equal(t, string(ssz), writer.Body.String())
|
||||||
require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader))
|
require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader))
|
||||||
require.Equal(t, "0", writer.Header().Get(api.ExecutionPayloadValueHeader))
|
require.Equal(t, "2000", writer.Header().Get(api.ExecutionPayloadValueHeader))
|
||||||
require.Equal(t, "bellatrix", writer.Header().Get(api.VersionHeader))
|
require.Equal(t, "bellatrix", writer.Header().Get(api.VersionHeader))
|
||||||
require.Equal(t, "10", writer.Header().Get(api.ConsensusBlockValueHeader))
|
require.Equal(t, "10", writer.Header().Get(api.ConsensusBlockValueHeader))
|
||||||
})
|
})
|
||||||
@@ -1476,7 +1505,10 @@ func TestProduceBlockV3SSZ(t *testing.T) {
|
|||||||
SkipMevBoost: false,
|
SkipMevBoost: false,
|
||||||
}).Return(
|
}).Return(
|
||||||
func() (*eth.GenericBeaconBlock, error) {
|
func() (*eth.GenericBeaconBlock, error) {
|
||||||
return block.Message.ToGeneric()
|
b, err := block.Message.ToGeneric()
|
||||||
|
require.NoError(t, err)
|
||||||
|
b.PayloadValue = "2000"
|
||||||
|
return b, nil
|
||||||
}())
|
}())
|
||||||
server := &Server{
|
server := &Server{
|
||||||
V1Alpha1Server: v1alpha1Server,
|
V1Alpha1Server: v1alpha1Server,
|
||||||
@@ -1498,7 +1530,7 @@ func TestProduceBlockV3SSZ(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, string(ssz), writer.Body.String())
|
require.Equal(t, string(ssz), writer.Body.String())
|
||||||
require.Equal(t, "true", writer.Header().Get(api.ExecutionPayloadBlindedHeader))
|
require.Equal(t, "true", writer.Header().Get(api.ExecutionPayloadBlindedHeader))
|
||||||
require.Equal(t, "0", writer.Header().Get(api.ExecutionPayloadValueHeader))
|
require.Equal(t, "2000", writer.Header().Get(api.ExecutionPayloadValueHeader))
|
||||||
require.Equal(t, "bellatrix", writer.Header().Get(api.VersionHeader))
|
require.Equal(t, "bellatrix", writer.Header().Get(api.VersionHeader))
|
||||||
require.Equal(t, "10", writer.Header().Get(api.ConsensusBlockValueHeader))
|
require.Equal(t, "10", writer.Header().Get(api.ConsensusBlockValueHeader))
|
||||||
})
|
})
|
||||||
@@ -1514,7 +1546,10 @@ func TestProduceBlockV3SSZ(t *testing.T) {
|
|||||||
SkipMevBoost: false,
|
SkipMevBoost: false,
|
||||||
}).Return(
|
}).Return(
|
||||||
func() (*eth.GenericBeaconBlock, error) {
|
func() (*eth.GenericBeaconBlock, error) {
|
||||||
return block.Message.ToGeneric()
|
b, err := block.Message.ToGeneric()
|
||||||
|
require.NoError(t, err)
|
||||||
|
b.PayloadValue = "2000"
|
||||||
|
return b, nil
|
||||||
}())
|
}())
|
||||||
server := &Server{
|
server := &Server{
|
||||||
V1Alpha1Server: v1alpha1Server,
|
V1Alpha1Server: v1alpha1Server,
|
||||||
@@ -1536,7 +1571,7 @@ func TestProduceBlockV3SSZ(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, string(ssz), writer.Body.String())
|
require.Equal(t, string(ssz), writer.Body.String())
|
||||||
require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader))
|
require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader))
|
||||||
require.Equal(t, "0", writer.Header().Get(api.ExecutionPayloadValueHeader))
|
require.Equal(t, "2000", writer.Header().Get(api.ExecutionPayloadValueHeader))
|
||||||
require.Equal(t, "capella", writer.Header().Get(api.VersionHeader))
|
require.Equal(t, "capella", writer.Header().Get(api.VersionHeader))
|
||||||
require.Equal(t, "10", writer.Header().Get(api.ConsensusBlockValueHeader))
|
require.Equal(t, "10", writer.Header().Get(api.ConsensusBlockValueHeader))
|
||||||
})
|
})
|
||||||
@@ -1554,7 +1589,7 @@ func TestProduceBlockV3SSZ(t *testing.T) {
|
|||||||
func() (*eth.GenericBeaconBlock, error) {
|
func() (*eth.GenericBeaconBlock, error) {
|
||||||
g, err := block.Message.ToGeneric()
|
g, err := block.Message.ToGeneric()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
g.PayloadValue = 2000 //some fake value
|
g.PayloadValue = "2000"
|
||||||
return g, err
|
return g, err
|
||||||
}())
|
}())
|
||||||
server := &Server{
|
server := &Server{
|
||||||
@@ -1593,7 +1628,10 @@ func TestProduceBlockV3SSZ(t *testing.T) {
|
|||||||
SkipMevBoost: false,
|
SkipMevBoost: false,
|
||||||
}).Return(
|
}).Return(
|
||||||
func() (*eth.GenericBeaconBlock, error) {
|
func() (*eth.GenericBeaconBlock, error) {
|
||||||
return block.ToUnsigned().ToGeneric()
|
b, err := block.ToUnsigned().ToGeneric()
|
||||||
|
require.NoError(t, err)
|
||||||
|
b.PayloadValue = "2000"
|
||||||
|
return b, nil
|
||||||
}())
|
}())
|
||||||
server := &Server{
|
server := &Server{
|
||||||
V1Alpha1Server: v1alpha1Server,
|
V1Alpha1Server: v1alpha1Server,
|
||||||
@@ -1615,7 +1653,7 @@ func TestProduceBlockV3SSZ(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, string(ssz), writer.Body.String())
|
require.Equal(t, string(ssz), writer.Body.String())
|
||||||
require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader))
|
require.Equal(t, "false", writer.Header().Get(api.ExecutionPayloadBlindedHeader))
|
||||||
require.Equal(t, "0", writer.Header().Get(api.ExecutionPayloadValueHeader))
|
require.Equal(t, "2000", writer.Header().Get(api.ExecutionPayloadValueHeader))
|
||||||
require.Equal(t, "deneb", writer.Header().Get(api.VersionHeader))
|
require.Equal(t, "deneb", writer.Header().Get(api.VersionHeader))
|
||||||
require.Equal(t, "10", writer.Header().Get(api.ConsensusBlockValueHeader))
|
require.Equal(t, "10", writer.Header().Get(api.ConsensusBlockValueHeader))
|
||||||
})
|
})
|
||||||
@@ -1631,7 +1669,10 @@ func TestProduceBlockV3SSZ(t *testing.T) {
|
|||||||
SkipMevBoost: false,
|
SkipMevBoost: false,
|
||||||
}).Return(
|
}).Return(
|
||||||
func() (*eth.GenericBeaconBlock, error) {
|
func() (*eth.GenericBeaconBlock, error) {
|
||||||
return block.Message.ToGeneric()
|
b, err := block.Message.ToGeneric()
|
||||||
|
require.NoError(t, err)
|
||||||
|
b.PayloadValue = "2000"
|
||||||
|
return b, nil
|
||||||
}())
|
}())
|
||||||
server := &Server{
|
server := &Server{
|
||||||
V1Alpha1Server: v1alpha1Server,
|
V1Alpha1Server: v1alpha1Server,
|
||||||
@@ -1653,7 +1694,7 @@ func TestProduceBlockV3SSZ(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, string(ssz), writer.Body.String())
|
require.Equal(t, string(ssz), writer.Body.String())
|
||||||
require.Equal(t, "true", writer.Header().Get(api.ExecutionPayloadBlindedHeader))
|
require.Equal(t, "true", writer.Header().Get(api.ExecutionPayloadBlindedHeader))
|
||||||
require.Equal(t, "0", writer.Header().Get(api.ExecutionPayloadValueHeader))
|
require.Equal(t, "2000", writer.Header().Get(api.ExecutionPayloadValueHeader))
|
||||||
require.Equal(t, "deneb", writer.Header().Get(api.VersionHeader))
|
require.Equal(t, "deneb", writer.Header().Get(api.VersionHeader))
|
||||||
require.Equal(t, "10", writer.Header().Get(api.ConsensusBlockValueHeader))
|
require.Equal(t, "10", writer.Header().Get(api.ConsensusBlockValueHeader))
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -76,6 +76,7 @@ go_library(
|
|||||||
"//crypto/rand:go_default_library",
|
"//crypto/rand:go_default_library",
|
||||||
"//encoding/bytesutil:go_default_library",
|
"//encoding/bytesutil:go_default_library",
|
||||||
"//encoding/ssz:go_default_library",
|
"//encoding/ssz:go_default_library",
|
||||||
|
"//math:go_default_library",
|
||||||
"//monitoring/tracing:go_default_library",
|
"//monitoring/tracing:go_default_library",
|
||||||
"//network/forks:go_default_library",
|
"//network/forks:go_default_library",
|
||||||
"//proto/engine/v1:go_default_library",
|
"//proto/engine/v1:go_default_library",
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/prysmaticlabs/prysm/v4/consensus-types/interfaces"
|
"github.com/prysmaticlabs/prysm/v4/consensus-types/interfaces"
|
||||||
|
"github.com/prysmaticlabs/prysm/v4/math"
|
||||||
enginev1 "github.com/prysmaticlabs/prysm/v4/proto/engine/v1"
|
enginev1 "github.com/prysmaticlabs/prysm/v4/proto/engine/v1"
|
||||||
ethpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
|
ethpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
|
||||||
"github.com/prysmaticlabs/prysm/v4/runtime/version"
|
"github.com/prysmaticlabs/prysm/v4/runtime/version"
|
||||||
@@ -22,7 +23,7 @@ func (vs *Server) constructGenericBeaconBlock(sBlk interfaces.SignedBeaconBlock,
|
|||||||
}
|
}
|
||||||
|
|
||||||
isBlinded := sBlk.IsBlinded()
|
isBlinded := sBlk.IsBlinded()
|
||||||
payloadValue := sBlk.ValueInGwei()
|
payloadValue := sBlk.ValueInWei()
|
||||||
|
|
||||||
switch sBlk.Version() {
|
switch sBlk.Version() {
|
||||||
case version.Deneb:
|
case version.Deneb:
|
||||||
@@ -41,30 +42,30 @@ func (vs *Server) constructGenericBeaconBlock(sBlk interfaces.SignedBeaconBlock,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Helper functions for constructing blocks for each version
|
// Helper functions for constructing blocks for each version
|
||||||
func (vs *Server) constructDenebBlock(blockProto proto.Message, isBlinded bool, payloadValue uint64, bundle *enginev1.BlobsBundle) *ethpb.GenericBeaconBlock {
|
func (vs *Server) constructDenebBlock(blockProto proto.Message, isBlinded bool, payloadValue math.Wei, bundle *enginev1.BlobsBundle) *ethpb.GenericBeaconBlock {
|
||||||
if isBlinded {
|
if isBlinded {
|
||||||
return ðpb.GenericBeaconBlock{Block: ðpb.GenericBeaconBlock_BlindedDeneb{BlindedDeneb: blockProto.(*ethpb.BlindedBeaconBlockDeneb)}, IsBlinded: true, PayloadValue: payloadValue}
|
return ðpb.GenericBeaconBlock{Block: ðpb.GenericBeaconBlock_BlindedDeneb{BlindedDeneb: blockProto.(*ethpb.BlindedBeaconBlockDeneb)}, IsBlinded: true, PayloadValue: (*payloadValue).String()}
|
||||||
}
|
}
|
||||||
denebContents := ðpb.BeaconBlockContentsDeneb{Block: blockProto.(*ethpb.BeaconBlockDeneb)}
|
denebContents := ðpb.BeaconBlockContentsDeneb{Block: blockProto.(*ethpb.BeaconBlockDeneb)}
|
||||||
if bundle != nil {
|
if bundle != nil {
|
||||||
denebContents.KzgProofs = bundle.Proofs
|
denebContents.KzgProofs = bundle.Proofs
|
||||||
denebContents.Blobs = bundle.Blobs
|
denebContents.Blobs = bundle.Blobs
|
||||||
}
|
}
|
||||||
return ðpb.GenericBeaconBlock{Block: ðpb.GenericBeaconBlock_Deneb{Deneb: denebContents}, IsBlinded: false, PayloadValue: payloadValue}
|
return ðpb.GenericBeaconBlock{Block: ðpb.GenericBeaconBlock_Deneb{Deneb: denebContents}, IsBlinded: false, PayloadValue: (*payloadValue).String()}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (vs *Server) constructCapellaBlock(pb proto.Message, isBlinded bool, payloadValue uint64) *ethpb.GenericBeaconBlock {
|
func (vs *Server) constructCapellaBlock(pb proto.Message, isBlinded bool, payloadValue math.Wei) *ethpb.GenericBeaconBlock {
|
||||||
if isBlinded {
|
if isBlinded {
|
||||||
return ðpb.GenericBeaconBlock{Block: ðpb.GenericBeaconBlock_BlindedCapella{BlindedCapella: pb.(*ethpb.BlindedBeaconBlockCapella)}, IsBlinded: true, PayloadValue: payloadValue}
|
return ðpb.GenericBeaconBlock{Block: ðpb.GenericBeaconBlock_BlindedCapella{BlindedCapella: pb.(*ethpb.BlindedBeaconBlockCapella)}, IsBlinded: true, PayloadValue: (*payloadValue).String()}
|
||||||
}
|
}
|
||||||
return ðpb.GenericBeaconBlock{Block: ðpb.GenericBeaconBlock_Capella{Capella: pb.(*ethpb.BeaconBlockCapella)}, IsBlinded: false, PayloadValue: payloadValue}
|
return ðpb.GenericBeaconBlock{Block: ðpb.GenericBeaconBlock_Capella{Capella: pb.(*ethpb.BeaconBlockCapella)}, IsBlinded: false, PayloadValue: (*payloadValue).String()}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (vs *Server) constructBellatrixBlock(pb proto.Message, isBlinded bool, payloadValue uint64) *ethpb.GenericBeaconBlock {
|
func (vs *Server) constructBellatrixBlock(pb proto.Message, isBlinded bool, payloadValue math.Wei) *ethpb.GenericBeaconBlock {
|
||||||
if isBlinded {
|
if isBlinded {
|
||||||
return ðpb.GenericBeaconBlock{Block: ðpb.GenericBeaconBlock_BlindedBellatrix{BlindedBellatrix: pb.(*ethpb.BlindedBeaconBlockBellatrix)}, IsBlinded: true, PayloadValue: payloadValue}
|
return ðpb.GenericBeaconBlock{Block: ðpb.GenericBeaconBlock_BlindedBellatrix{BlindedBellatrix: pb.(*ethpb.BlindedBeaconBlockBellatrix)}, IsBlinded: true, PayloadValue: (*payloadValue).String()}
|
||||||
}
|
}
|
||||||
return ðpb.GenericBeaconBlock{Block: ðpb.GenericBeaconBlock_Bellatrix{Bellatrix: pb.(*ethpb.BeaconBlockBellatrix)}, IsBlinded: false, PayloadValue: payloadValue}
|
return ðpb.GenericBeaconBlock{Block: ðpb.GenericBeaconBlock_Bellatrix{Bellatrix: pb.(*ethpb.BeaconBlockBellatrix)}, IsBlinded: false, PayloadValue: (*payloadValue).String()}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (vs *Server) constructAltairBlock(pb proto.Message) *ethpb.GenericBeaconBlock {
|
func (vs *Server) constructAltairBlock(pb proto.Message) *ethpb.GenericBeaconBlock {
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ func TestServer_setExecutionData(t *testing.T) {
|
|||||||
|
|
||||||
beaconDB := dbTest.SetupDB(t)
|
beaconDB := dbTest.SetupDB(t)
|
||||||
capellaTransitionState, _ := util.DeterministicGenesisStateCapella(t, 1)
|
capellaTransitionState, _ := util.DeterministicGenesisStateCapella(t, 1)
|
||||||
wrappedHeaderCapella, err := blocks.WrappedExecutionPayloadHeaderCapella(&v1.ExecutionPayloadHeaderCapella{BlockNumber: 1}, 0)
|
wrappedHeaderCapella, err := blocks.WrappedExecutionPayloadHeaderCapella(&v1.ExecutionPayloadHeaderCapella{BlockNumber: 1}, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.NoError(t, capellaTransitionState.SetLatestExecutionPayloadHeader(wrappedHeaderCapella))
|
require.NoError(t, capellaTransitionState.SetLatestExecutionPayloadHeader(wrappedHeaderCapella))
|
||||||
b2pbCapella := util.NewBeaconBlockCapella()
|
b2pbCapella := util.NewBeaconBlockCapella()
|
||||||
@@ -59,7 +59,7 @@ func TestServer_setExecutionData(t *testing.T) {
|
|||||||
require.NoError(t, beaconDB.SaveFeeRecipientsByValidatorIDs(context.Background(), []primitives.ValidatorIndex{0}, []common.Address{{}}))
|
require.NoError(t, beaconDB.SaveFeeRecipientsByValidatorIDs(context.Background(), []primitives.ValidatorIndex{0}, []common.Address{{}}))
|
||||||
|
|
||||||
denebTransitionState, _ := util.DeterministicGenesisStateDeneb(t, 1)
|
denebTransitionState, _ := util.DeterministicGenesisStateDeneb(t, 1)
|
||||||
wrappedHeaderDeneb, err := blocks.WrappedExecutionPayloadHeaderDeneb(&v1.ExecutionPayloadHeaderDeneb{BlockNumber: 2}, 0)
|
wrappedHeaderDeneb, err := blocks.WrappedExecutionPayloadHeaderDeneb(&v1.ExecutionPayloadHeaderDeneb{BlockNumber: 2}, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.NoError(t, denebTransitionState.SetLatestExecutionPayloadHeader(wrappedHeaderDeneb))
|
require.NoError(t, denebTransitionState.SetLatestExecutionPayloadHeader(wrappedHeaderDeneb))
|
||||||
b2pbDeneb := util.NewBeaconBlockDeneb()
|
b2pbDeneb := util.NewBeaconBlockDeneb()
|
||||||
@@ -356,7 +356,7 @@ func TestServer_setExecutionData(t *testing.T) {
|
|||||||
t.Run("Builder configured. Local block has higher value", func(t *testing.T) {
|
t.Run("Builder configured. Local block has higher value", func(t *testing.T) {
|
||||||
blk, err := blocks.NewSignedBeaconBlock(util.NewBeaconBlockCapella())
|
blk, err := blocks.NewSignedBeaconBlock(util.NewBeaconBlockCapella())
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
vs.ExecutionEngineCaller = &powtesting.EngineClient{PayloadIDBytes: id, ExecutionPayloadCapella: &v1.ExecutionPayloadCapella{BlockNumber: 3}, BlockValue: 2}
|
vs.ExecutionEngineCaller = &powtesting.EngineClient{PayloadIDBytes: id, ExecutionPayloadCapella: &v1.ExecutionPayloadCapella{BlockNumber: 3}, BlockValue: 2 * 1e9}
|
||||||
b := blk.Block()
|
b := blk.Block()
|
||||||
localPayload, _, err := vs.getLocalPayload(ctx, b, capellaTransitionState)
|
localPayload, _, err := vs.getLocalPayload(ctx, b, capellaTransitionState)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
@@ -377,7 +377,7 @@ func TestServer_setExecutionData(t *testing.T) {
|
|||||||
|
|
||||||
blk, err := blocks.NewSignedBeaconBlock(util.NewBeaconBlockCapella())
|
blk, err := blocks.NewSignedBeaconBlock(util.NewBeaconBlockCapella())
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
vs.ExecutionEngineCaller = &powtesting.EngineClient{PayloadIDBytes: id, ExecutionPayloadCapella: &v1.ExecutionPayloadCapella{BlockNumber: 3}, BlockValue: 1}
|
vs.ExecutionEngineCaller = &powtesting.EngineClient{PayloadIDBytes: id, ExecutionPayloadCapella: &v1.ExecutionPayloadCapella{BlockNumber: 3}, BlockValue: 1 * 1e9}
|
||||||
b := blk.Block()
|
b := blk.Block()
|
||||||
localPayload, _, err := vs.getLocalPayload(ctx, b, capellaTransitionState)
|
localPayload, _, err := vs.getLocalPayload(ctx, b, capellaTransitionState)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
@@ -748,7 +748,7 @@ func TestServer_getPayloadHeader(t *testing.T) {
|
|||||||
require.DeepEqual(t, want, h)
|
require.DeepEqual(t, want, h)
|
||||||
}
|
}
|
||||||
if tc.returnedHeaderCapella != nil {
|
if tc.returnedHeaderCapella != nil {
|
||||||
want, err := blocks.WrappedExecutionPayloadHeaderCapella(tc.returnedHeaderCapella, 0) // value is a mock
|
want, err := blocks.WrappedExecutionPayloadHeaderCapella(tc.returnedHeaderCapella, big.NewInt(197121)) // value is a mock
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.DeepEqual(t, want, h)
|
require.DeepEqual(t, want, h)
|
||||||
}
|
}
|
||||||
@@ -805,7 +805,7 @@ func Test_matchingWithdrawalsRoot(t *testing.T) {
|
|||||||
})
|
})
|
||||||
t.Run("could not get builder withdrawals root", func(t *testing.T) {
|
t.Run("could not get builder withdrawals root", func(t *testing.T) {
|
||||||
local := &v1.ExecutionPayloadCapella{}
|
local := &v1.ExecutionPayloadCapella{}
|
||||||
p, err := blocks.WrappedExecutionPayloadCapella(local, 0)
|
p, err := blocks.WrappedExecutionPayloadCapella(local, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
header := &v1.ExecutionPayloadHeader{}
|
header := &v1.ExecutionPayloadHeader{}
|
||||||
h, err := blocks.WrappedExecutionPayloadHeader(header)
|
h, err := blocks.WrappedExecutionPayloadHeader(header)
|
||||||
@@ -815,10 +815,10 @@ func Test_matchingWithdrawalsRoot(t *testing.T) {
|
|||||||
})
|
})
|
||||||
t.Run("withdrawals mismatch", func(t *testing.T) {
|
t.Run("withdrawals mismatch", func(t *testing.T) {
|
||||||
local := &v1.ExecutionPayloadCapella{}
|
local := &v1.ExecutionPayloadCapella{}
|
||||||
p, err := blocks.WrappedExecutionPayloadCapella(local, 0)
|
p, err := blocks.WrappedExecutionPayloadCapella(local, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
header := &v1.ExecutionPayloadHeaderCapella{}
|
header := &v1.ExecutionPayloadHeaderCapella{}
|
||||||
h, err := blocks.WrappedExecutionPayloadHeaderCapella(header, 0)
|
h, err := blocks.WrappedExecutionPayloadHeaderCapella(header, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
matched, err := matchingWithdrawalsRoot(p, h)
|
matched, err := matchingWithdrawalsRoot(p, h)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
@@ -832,13 +832,13 @@ func Test_matchingWithdrawalsRoot(t *testing.T) {
|
|||||||
Amount: 3,
|
Amount: 3,
|
||||||
}}
|
}}
|
||||||
local := &v1.ExecutionPayloadCapella{Withdrawals: wds}
|
local := &v1.ExecutionPayloadCapella{Withdrawals: wds}
|
||||||
p, err := blocks.WrappedExecutionPayloadCapella(local, 0)
|
p, err := blocks.WrappedExecutionPayloadCapella(local, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
header := &v1.ExecutionPayloadHeaderCapella{}
|
header := &v1.ExecutionPayloadHeaderCapella{}
|
||||||
wr, err := ssz.WithdrawalSliceRoot(wds, fieldparams.MaxWithdrawalsPerPayload)
|
wr, err := ssz.WithdrawalSliceRoot(wds, fieldparams.MaxWithdrawalsPerPayload)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
header.WithdrawalsRoot = wr[:]
|
header.WithdrawalsRoot = wr[:]
|
||||||
h, err := blocks.WrappedExecutionPayloadHeaderCapella(header, 0)
|
h, err := blocks.WrappedExecutionPayloadHeaderCapella(header, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
matched, err := matchingWithdrawalsRoot(p, h)
|
matched, err := matchingWithdrawalsRoot(p, h)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package validator
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
|
"math/big"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
@@ -60,7 +61,7 @@ func TestServer_getExecutionPayload(t *testing.T) {
|
|||||||
}))
|
}))
|
||||||
|
|
||||||
capellaTransitionState, _ := util.DeterministicGenesisStateCapella(t, 1)
|
capellaTransitionState, _ := util.DeterministicGenesisStateCapella(t, 1)
|
||||||
wrappedHeaderCapella, err := blocks.WrappedExecutionPayloadHeaderCapella(&pb.ExecutionPayloadHeaderCapella{BlockNumber: 1}, 0)
|
wrappedHeaderCapella, err := blocks.WrappedExecutionPayloadHeaderCapella(&pb.ExecutionPayloadHeaderCapella{BlockNumber: 1}, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.NoError(t, capellaTransitionState.SetLatestExecutionPayloadHeader(wrappedHeaderCapella))
|
require.NoError(t, capellaTransitionState.SetLatestExecutionPayloadHeader(wrappedHeaderCapella))
|
||||||
b2pbCapella := util.NewBeaconBlockCapella()
|
b2pbCapella := util.NewBeaconBlockCapella()
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package state_native
|
package state_native
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"math/big"
|
||||||
|
|
||||||
"github.com/prysmaticlabs/prysm/v4/consensus-types/blocks"
|
"github.com/prysmaticlabs/prysm/v4/consensus-types/blocks"
|
||||||
"github.com/prysmaticlabs/prysm/v4/consensus-types/interfaces"
|
"github.com/prysmaticlabs/prysm/v4/consensus-types/interfaces"
|
||||||
enginev1 "github.com/prysmaticlabs/prysm/v4/proto/engine/v1"
|
enginev1 "github.com/prysmaticlabs/prysm/v4/proto/engine/v1"
|
||||||
@@ -22,10 +24,10 @@ func (b *BeaconState) LatestExecutionPayloadHeader() (interfaces.ExecutionData,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if b.version == version.Capella {
|
if b.version == version.Capella {
|
||||||
return blocks.WrappedExecutionPayloadHeaderCapella(b.latestExecutionPayloadHeaderCapellaVal(), 0)
|
return blocks.WrappedExecutionPayloadHeaderCapella(b.latestExecutionPayloadHeaderCapellaVal(), big.NewInt(0))
|
||||||
}
|
}
|
||||||
|
|
||||||
return blocks.WrappedExecutionPayloadHeaderDeneb(b.latestExecutionPayloadHeaderDenebVal(), 0)
|
return blocks.WrappedExecutionPayloadHeaderDeneb(b.latestExecutionPayloadHeaderDenebVal(), big.NewInt(0))
|
||||||
}
|
}
|
||||||
|
|
||||||
// latestExecutionPayloadHeaderVal of the beacon state.
|
// latestExecutionPayloadHeaderVal of the beacon state.
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package state_native_test
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"math/big"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/prysmaticlabs/go-bitfield"
|
"github.com/prysmaticlabs/go-bitfield"
|
||||||
@@ -253,7 +254,7 @@ func TestComputeFieldRootsWithHasher_Capella(t *testing.T) {
|
|||||||
require.NoError(t, beaconState.SetInactivityScores([]uint64{1, 2, 3}))
|
require.NoError(t, beaconState.SetInactivityScores([]uint64{1, 2, 3}))
|
||||||
require.NoError(t, beaconState.SetCurrentSyncCommittee(syncCommittee("current")))
|
require.NoError(t, beaconState.SetCurrentSyncCommittee(syncCommittee("current")))
|
||||||
require.NoError(t, beaconState.SetNextSyncCommittee(syncCommittee("next")))
|
require.NoError(t, beaconState.SetNextSyncCommittee(syncCommittee("next")))
|
||||||
wrappedHeader, err := blocks.WrappedExecutionPayloadHeaderCapella(executionPayloadHeaderCapella(), 0)
|
wrappedHeader, err := blocks.WrappedExecutionPayloadHeaderCapella(executionPayloadHeaderCapella(), big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.NoError(t, beaconState.SetLatestExecutionPayloadHeader(wrappedHeader))
|
require.NoError(t, beaconState.SetLatestExecutionPayloadHeader(wrappedHeader))
|
||||||
require.NoError(t, beaconState.SetNextWithdrawalIndex(123))
|
require.NoError(t, beaconState.SetNextWithdrawalIndex(123))
|
||||||
|
|||||||
@@ -187,6 +187,11 @@ func (executionPayload) PbDeneb() (*enginev1.ExecutionPayloadDeneb, error) {
|
|||||||
return nil, consensus_types.ErrUnsupportedField
|
return nil, consensus_types.ErrUnsupportedField
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ValueInWei --
|
||||||
|
func (executionPayload) ValueInWei() (math.Wei, error) {
|
||||||
|
return nil, consensus_types.ErrUnsupportedField
|
||||||
|
}
|
||||||
|
|
||||||
// ValueInGwei --
|
// ValueInGwei --
|
||||||
func (executionPayload) ValueInGwei() (uint64, error) {
|
func (executionPayload) ValueInGwei() (uint64, error) {
|
||||||
return 0, consensus_types.ErrUnsupportedField
|
return 0, consensus_types.ErrUnsupportedField
|
||||||
@@ -363,6 +368,11 @@ func (executionPayloadHeader) PbBellatrix() (*enginev1.ExecutionPayload, error)
|
|||||||
return nil, consensus_types.ErrUnsupportedField
|
return nil, consensus_types.ErrUnsupportedField
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ValueInWei --
|
||||||
|
func (executionPayloadHeader) ValueInWei() (math.Wei, error) {
|
||||||
|
return nil, consensus_types.ErrUnsupportedField
|
||||||
|
}
|
||||||
|
|
||||||
// ValueInGwei --
|
// ValueInGwei --
|
||||||
func (executionPayloadHeader) ValueInGwei() (uint64, error) {
|
func (executionPayloadHeader) ValueInGwei() (uint64, error) {
|
||||||
return 0, consensus_types.ErrUnsupportedField
|
return 0, consensus_types.ErrUnsupportedField
|
||||||
@@ -400,13 +410,14 @@ func PayloadToHeader(payload interfaces.ExecutionData) (*enginev1.ExecutionPaylo
|
|||||||
// This wrapper allows us to conform to a common interface so that beacon
|
// This wrapper allows us to conform to a common interface so that beacon
|
||||||
// blocks for future forks can also be applied across Prysm without issues.
|
// blocks for future forks can also be applied across Prysm without issues.
|
||||||
type executionPayloadCapella struct {
|
type executionPayloadCapella struct {
|
||||||
p *enginev1.ExecutionPayloadCapella
|
p *enginev1.ExecutionPayloadCapella
|
||||||
value uint64
|
weiValue math.Wei
|
||||||
|
gweiValue uint64
|
||||||
}
|
}
|
||||||
|
|
||||||
// WrappedExecutionPayloadCapella is a constructor which wraps a protobuf execution payload into an interface.
|
// WrappedExecutionPayloadCapella is a constructor which wraps a protobuf execution payload into an interface.
|
||||||
func WrappedExecutionPayloadCapella(p *enginev1.ExecutionPayloadCapella, value math.Gwei) (interfaces.ExecutionData, error) {
|
func WrappedExecutionPayloadCapella(p *enginev1.ExecutionPayloadCapella, value math.Wei) (interfaces.ExecutionData, error) {
|
||||||
w := executionPayloadCapella{p: p, value: uint64(value)}
|
w := executionPayloadCapella{p: p, weiValue: value, gweiValue: uint64(math.WeiToGwei(value))}
|
||||||
if w.IsNil() {
|
if w.IsNil() {
|
||||||
return nil, consensus_types.ErrNilObjectWrapped
|
return nil, consensus_types.ErrNilObjectWrapped
|
||||||
}
|
}
|
||||||
@@ -568,22 +579,28 @@ func (executionPayloadCapella) PbBellatrix() (*enginev1.ExecutionPayload, error)
|
|||||||
return nil, consensus_types.ErrUnsupportedField
|
return nil, consensus_types.ErrUnsupportedField
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ValueInWei --
|
||||||
|
func (e executionPayloadCapella) ValueInWei() (math.Wei, error) {
|
||||||
|
return e.weiValue, nil
|
||||||
|
}
|
||||||
|
|
||||||
// ValueInGwei --
|
// ValueInGwei --
|
||||||
func (e executionPayloadCapella) ValueInGwei() (uint64, error) {
|
func (e executionPayloadCapella) ValueInGwei() (uint64, error) {
|
||||||
return e.value, nil
|
return e.gweiValue, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// executionPayloadHeaderCapella is a convenience wrapper around a blinded beacon block body's execution header data structure
|
// executionPayloadHeaderCapella is a convenience wrapper around a blinded beacon block body's execution header data structure
|
||||||
// This wrapper allows us to conform to a common interface so that beacon
|
// This wrapper allows us to conform to a common interface so that beacon
|
||||||
// blocks for future forks can also be applied across Prysm without issues.
|
// blocks for future forks can also be applied across Prysm without issues.
|
||||||
type executionPayloadHeaderCapella struct {
|
type executionPayloadHeaderCapella struct {
|
||||||
p *enginev1.ExecutionPayloadHeaderCapella
|
p *enginev1.ExecutionPayloadHeaderCapella
|
||||||
value uint64
|
weiValue math.Wei
|
||||||
|
gweiValue uint64
|
||||||
}
|
}
|
||||||
|
|
||||||
// WrappedExecutionPayloadHeaderCapella is a constructor which wraps a protobuf execution header into an interface.
|
// WrappedExecutionPayloadHeaderCapella is a constructor which wraps a protobuf execution header into an interface.
|
||||||
func WrappedExecutionPayloadHeaderCapella(p *enginev1.ExecutionPayloadHeaderCapella, value math.Gwei) (interfaces.ExecutionData, error) {
|
func WrappedExecutionPayloadHeaderCapella(p *enginev1.ExecutionPayloadHeaderCapella, value math.Wei) (interfaces.ExecutionData, error) {
|
||||||
w := executionPayloadHeaderCapella{p: p, value: uint64(value)}
|
w := executionPayloadHeaderCapella{p: p, weiValue: value, gweiValue: uint64(math.WeiToGwei(value))}
|
||||||
if w.IsNil() {
|
if w.IsNil() {
|
||||||
return nil, consensus_types.ErrNilObjectWrapped
|
return nil, consensus_types.ErrNilObjectWrapped
|
||||||
}
|
}
|
||||||
@@ -745,9 +762,14 @@ func (executionPayloadHeaderCapella) PbBellatrix() (*enginev1.ExecutionPayload,
|
|||||||
return nil, consensus_types.ErrUnsupportedField
|
return nil, consensus_types.ErrUnsupportedField
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ValueInWei --
|
||||||
|
func (e executionPayloadHeaderCapella) ValueInWei() (math.Wei, error) {
|
||||||
|
return e.weiValue, nil
|
||||||
|
}
|
||||||
|
|
||||||
// ValueInGwei --
|
// ValueInGwei --
|
||||||
func (e executionPayloadHeaderCapella) ValueInGwei() (uint64, error) {
|
func (e executionPayloadHeaderCapella) ValueInGwei() (uint64, error) {
|
||||||
return e.value, nil
|
return e.gweiValue, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PayloadToHeaderCapella converts `payload` into execution payload header format.
|
// PayloadToHeaderCapella converts `payload` into execution payload header format.
|
||||||
@@ -839,6 +861,9 @@ func PayloadToHeaderDeneb(payload interfaces.ExecutionData) (*enginev1.Execution
|
|||||||
// IsEmptyExecutionData checks if an execution data is empty underneath. If a single field has
|
// IsEmptyExecutionData checks if an execution data is empty underneath. If a single field has
|
||||||
// a non-zero value, this function will return false.
|
// a non-zero value, this function will return false.
|
||||||
func IsEmptyExecutionData(data interfaces.ExecutionData) (bool, error) {
|
func IsEmptyExecutionData(data interfaces.ExecutionData) (bool, error) {
|
||||||
|
if data == nil {
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
if !bytes.Equal(data.ParentHash(), make([]byte, fieldparams.RootLength)) {
|
if !bytes.Equal(data.ParentHash(), make([]byte, fieldparams.RootLength)) {
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
@@ -897,13 +922,14 @@ func IsEmptyExecutionData(data interfaces.ExecutionData) (bool, error) {
|
|||||||
// This wrapper allows us to conform to a common interface so that beacon
|
// This wrapper allows us to conform to a common interface so that beacon
|
||||||
// blocks for future forks can also be applied across Prysm without issues.
|
// blocks for future forks can also be applied across Prysm without issues.
|
||||||
type executionPayloadHeaderDeneb struct {
|
type executionPayloadHeaderDeneb struct {
|
||||||
p *enginev1.ExecutionPayloadHeaderDeneb
|
p *enginev1.ExecutionPayloadHeaderDeneb
|
||||||
value uint64
|
weiValue math.Wei
|
||||||
|
gweiValue uint64
|
||||||
}
|
}
|
||||||
|
|
||||||
// WrappedExecutionPayloadHeaderDeneb is a constructor which wraps a protobuf execution header into an interface.
|
// WrappedExecutionPayloadHeaderDeneb is a constructor which wraps a protobuf execution header into an interface.
|
||||||
func WrappedExecutionPayloadHeaderDeneb(p *enginev1.ExecutionPayloadHeaderDeneb, value math.Gwei) (interfaces.ExecutionData, error) {
|
func WrappedExecutionPayloadHeaderDeneb(p *enginev1.ExecutionPayloadHeaderDeneb, value math.Wei) (interfaces.ExecutionData, error) {
|
||||||
w := executionPayloadHeaderDeneb{p: p, value: uint64(value)}
|
w := executionPayloadHeaderDeneb{p: p, weiValue: value, gweiValue: uint64(math.WeiToGwei(value))}
|
||||||
if w.IsNil() {
|
if w.IsNil() {
|
||||||
return nil, consensus_types.ErrNilObjectWrapped
|
return nil, consensus_types.ErrNilObjectWrapped
|
||||||
}
|
}
|
||||||
@@ -1030,17 +1056,17 @@ func (e executionPayloadHeaderDeneb) Withdrawals() ([]*enginev1.Withdrawal, erro
|
|||||||
return nil, consensus_types.ErrUnsupportedField
|
return nil, consensus_types.ErrUnsupportedField
|
||||||
}
|
}
|
||||||
|
|
||||||
// WitdrawalsRoot --
|
// WithdrawalsRoot --
|
||||||
func (e executionPayloadHeaderDeneb) WithdrawalsRoot() ([]byte, error) {
|
func (e executionPayloadHeaderDeneb) WithdrawalsRoot() ([]byte, error) {
|
||||||
return e.p.WithdrawalsRoot, nil
|
return e.p.WithdrawalsRoot, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// BlobGasUsed
|
// BlobGasUsed --
|
||||||
func (e executionPayloadHeaderDeneb) BlobGasUsed() (uint64, error) {
|
func (e executionPayloadHeaderDeneb) BlobGasUsed() (uint64, error) {
|
||||||
return e.p.BlobGasUsed, nil
|
return e.p.BlobGasUsed, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// ExcessBlobGas
|
// ExcessBlobGas --
|
||||||
func (e executionPayloadHeaderDeneb) ExcessBlobGas() (uint64, error) {
|
func (e executionPayloadHeaderDeneb) ExcessBlobGas() (uint64, error) {
|
||||||
return e.p.ExcessBlobGas, nil
|
return e.p.ExcessBlobGas, nil
|
||||||
}
|
}
|
||||||
@@ -1060,8 +1086,14 @@ func (executionPayloadHeaderDeneb) PbCapella() (*enginev1.ExecutionPayloadCapell
|
|||||||
return nil, consensus_types.ErrUnsupportedField
|
return nil, consensus_types.ErrUnsupportedField
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ValueInWei --
|
||||||
|
func (e executionPayloadHeaderDeneb) ValueInWei() (math.Wei, error) {
|
||||||
|
return e.weiValue, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ValueInGwei --
|
||||||
func (e executionPayloadHeaderDeneb) ValueInGwei() (uint64, error) {
|
func (e executionPayloadHeaderDeneb) ValueInGwei() (uint64, error) {
|
||||||
return e.value, nil
|
return e.gweiValue, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsBlinded returns true if the underlying data is blinded.
|
// IsBlinded returns true if the underlying data is blinded.
|
||||||
@@ -1073,13 +1105,14 @@ func (e executionPayloadHeaderDeneb) IsBlinded() bool {
|
|||||||
// This wrapper allows us to conform to a common interface so that beacon
|
// This wrapper allows us to conform to a common interface so that beacon
|
||||||
// blocks for future forks can also be applied across Prysm without issues.
|
// blocks for future forks can also be applied across Prysm without issues.
|
||||||
type executionPayloadDeneb struct {
|
type executionPayloadDeneb struct {
|
||||||
p *enginev1.ExecutionPayloadDeneb
|
p *enginev1.ExecutionPayloadDeneb
|
||||||
value uint64
|
weiValue math.Wei
|
||||||
|
gweiValue uint64
|
||||||
}
|
}
|
||||||
|
|
||||||
// WrappedExecutionPayloadDeneb is a constructor which wraps a protobuf execution payload into an interface.
|
// WrappedExecutionPayloadDeneb is a constructor which wraps a protobuf execution payload into an interface.
|
||||||
func WrappedExecutionPayloadDeneb(p *enginev1.ExecutionPayloadDeneb, value math.Gwei) (interfaces.ExecutionData, error) {
|
func WrappedExecutionPayloadDeneb(p *enginev1.ExecutionPayloadDeneb, value math.Wei) (interfaces.ExecutionData, error) {
|
||||||
w := executionPayloadDeneb{p: p, value: uint64(value)}
|
w := executionPayloadDeneb{p: p, weiValue: value, gweiValue: uint64(math.WeiToGwei(value))}
|
||||||
if w.IsNil() {
|
if w.IsNil() {
|
||||||
return nil, consensus_types.ErrNilObjectWrapped
|
return nil, consensus_types.ErrNilObjectWrapped
|
||||||
}
|
}
|
||||||
@@ -1234,8 +1267,14 @@ func (e executionPayloadDeneb) PbDeneb() (*enginev1.ExecutionPayloadDeneb, error
|
|||||||
return e.p, nil
|
return e.p, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ValueInWei --
|
||||||
|
func (e executionPayloadDeneb) ValueInWei() (math.Wei, error) {
|
||||||
|
return e.weiValue, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ValueInGwei --
|
||||||
func (e executionPayloadDeneb) ValueInGwei() (uint64, error) {
|
func (e executionPayloadDeneb) ValueInGwei() (uint64, error) {
|
||||||
return e.value, nil
|
return e.gweiValue, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsBlinded returns true if the underlying data is blinded.
|
// IsBlinded returns true if the underlying data is blinded.
|
||||||
@@ -1243,6 +1282,12 @@ func (e executionPayloadDeneb) IsBlinded() bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// PayloadValueToWei returns a Wei value given the payload's value
|
||||||
|
func PayloadValueToWei(value []byte) math.Wei {
|
||||||
|
// We have to convert big endian to little endian because the value is coming from the execution layer.
|
||||||
|
return big.NewInt(0).SetBytes(bytesutil.ReverseByteOrder(value))
|
||||||
|
}
|
||||||
|
|
||||||
// PayloadValueToGwei returns a Gwei value given the payload's value
|
// PayloadValueToGwei returns a Gwei value given the payload's value
|
||||||
func PayloadValueToGwei(value []byte) math.Gwei {
|
func PayloadValueToGwei(value []byte) math.Gwei {
|
||||||
// We have to convert big endian to little endian because the value is coming from the execution layer.
|
// We have to convert big endian to little endian because the value is coming from the execution layer.
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package blocks_test
|
package blocks_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"math/big"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
fieldparams "github.com/prysmaticlabs/prysm/v4/config/fieldparams"
|
fieldparams "github.com/prysmaticlabs/prysm/v4/config/fieldparams"
|
||||||
@@ -105,11 +106,14 @@ func TestWrapExecutionPayloadCapella(t *testing.T) {
|
|||||||
Amount: 77,
|
Amount: 77,
|
||||||
}},
|
}},
|
||||||
}
|
}
|
||||||
payload, err := blocks.WrappedExecutionPayloadCapella(data, 10)
|
payload, err := blocks.WrappedExecutionPayloadCapella(data, big.NewInt(10*1e9))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
v, err := payload.ValueInGwei()
|
wei, err := payload.ValueInWei()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, uint64(10), v)
|
assert.Equal(t, 0, big.NewInt(10*1e9).Cmp(wei))
|
||||||
|
gwei, err := payload.ValueInGwei()
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.Equal(t, uint64(10), gwei)
|
||||||
|
|
||||||
assert.DeepEqual(t, data, payload.Proto())
|
assert.DeepEqual(t, data, payload.Proto())
|
||||||
}
|
}
|
||||||
@@ -132,12 +136,15 @@ func TestWrapExecutionPayloadHeaderCapella(t *testing.T) {
|
|||||||
TransactionsRoot: []byte("transactionsroot"),
|
TransactionsRoot: []byte("transactionsroot"),
|
||||||
WithdrawalsRoot: []byte("withdrawalsroot"),
|
WithdrawalsRoot: []byte("withdrawalsroot"),
|
||||||
}
|
}
|
||||||
payload, err := blocks.WrappedExecutionPayloadHeaderCapella(data, 10)
|
payload, err := blocks.WrappedExecutionPayloadHeaderCapella(data, big.NewInt(10*1e9))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
v, err := payload.ValueInGwei()
|
wei, err := payload.ValueInWei()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, uint64(10), v)
|
assert.Equal(t, 0, big.NewInt(10*1e9).Cmp(wei))
|
||||||
|
gwei, err := payload.ValueInGwei()
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.Equal(t, uint64(10), gwei)
|
||||||
|
|
||||||
assert.DeepEqual(t, data, payload.Proto())
|
assert.DeepEqual(t, data, payload.Proto())
|
||||||
|
|
||||||
@@ -151,22 +158,22 @@ func TestWrapExecutionPayloadHeaderCapella(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestWrapExecutionPayloadCapella_IsNil(t *testing.T) {
|
func TestWrapExecutionPayloadCapella_IsNil(t *testing.T) {
|
||||||
_, err := blocks.WrappedExecutionPayloadCapella(nil, 0)
|
_, err := blocks.WrappedExecutionPayloadCapella(nil, big.NewInt(0))
|
||||||
require.Equal(t, consensus_types.ErrNilObjectWrapped, err)
|
require.Equal(t, consensus_types.ErrNilObjectWrapped, err)
|
||||||
|
|
||||||
data := &enginev1.ExecutionPayloadCapella{GasUsed: 54}
|
data := &enginev1.ExecutionPayloadCapella{GasUsed: 54}
|
||||||
payload, err := blocks.WrappedExecutionPayloadCapella(data, 0)
|
payload, err := blocks.WrappedExecutionPayloadCapella(data, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
assert.Equal(t, false, payload.IsNil())
|
assert.Equal(t, false, payload.IsNil())
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestWrapExecutionPayloadHeaderCapella_IsNil(t *testing.T) {
|
func TestWrapExecutionPayloadHeaderCapella_IsNil(t *testing.T) {
|
||||||
_, err := blocks.WrappedExecutionPayloadHeaderCapella(nil, 0)
|
_, err := blocks.WrappedExecutionPayloadHeaderCapella(nil, big.NewInt(0))
|
||||||
require.Equal(t, consensus_types.ErrNilObjectWrapped, err)
|
require.Equal(t, consensus_types.ErrNilObjectWrapped, err)
|
||||||
|
|
||||||
data := &enginev1.ExecutionPayloadHeaderCapella{GasUsed: 54}
|
data := &enginev1.ExecutionPayloadHeaderCapella{GasUsed: 54}
|
||||||
payload, err := blocks.WrappedExecutionPayloadHeaderCapella(data, 0)
|
payload, err := blocks.WrappedExecutionPayloadHeaderCapella(data, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
assert.Equal(t, false, payload.IsNil())
|
assert.Equal(t, false, payload.IsNil())
|
||||||
@@ -267,11 +274,14 @@ func TestWrapExecutionPayloadDeneb(t *testing.T) {
|
|||||||
BlobGasUsed: 88,
|
BlobGasUsed: 88,
|
||||||
ExcessBlobGas: 99,
|
ExcessBlobGas: 99,
|
||||||
}
|
}
|
||||||
payload, err := blocks.WrappedExecutionPayloadDeneb(data, 420)
|
payload, err := blocks.WrappedExecutionPayloadDeneb(data, big.NewInt(420*1e9))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
v, err := payload.ValueInGwei()
|
wei, err := payload.ValueInWei()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, uint64(420), v)
|
assert.Equal(t, 0, big.NewInt(420*1e9).Cmp(wei))
|
||||||
|
gwei, err := payload.ValueInGwei()
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.Equal(t, uint64(420), gwei)
|
||||||
|
|
||||||
g, err := payload.BlobGasUsed()
|
g, err := payload.BlobGasUsed()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
@@ -302,12 +312,15 @@ func TestWrapExecutionPayloadHeaderDeneb(t *testing.T) {
|
|||||||
BlobGasUsed: 88,
|
BlobGasUsed: 88,
|
||||||
ExcessBlobGas: 99,
|
ExcessBlobGas: 99,
|
||||||
}
|
}
|
||||||
payload, err := blocks.WrappedExecutionPayloadHeaderDeneb(data, 10)
|
payload, err := blocks.WrappedExecutionPayloadHeaderDeneb(data, big.NewInt(10*1e9))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
v, err := payload.ValueInGwei()
|
wei, err := payload.ValueInWei()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, uint64(10), v)
|
assert.Equal(t, 0, big.NewInt(10*1e9).Cmp(wei))
|
||||||
|
gwei, err := payload.ValueInGwei()
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.Equal(t, uint64(10), gwei)
|
||||||
|
|
||||||
g, err := payload.BlobGasUsed()
|
g, err := payload.BlobGasUsed()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
@@ -409,7 +422,7 @@ func createWrappedPayloadCapella(t testing.TB) interfaces.ExecutionData {
|
|||||||
BlockHash: make([]byte, fieldparams.RootLength),
|
BlockHash: make([]byte, fieldparams.RootLength),
|
||||||
Transactions: make([][]byte, 0),
|
Transactions: make([][]byte, 0),
|
||||||
Withdrawals: make([]*enginev1.Withdrawal, 0),
|
Withdrawals: make([]*enginev1.Withdrawal, 0),
|
||||||
}, 0)
|
}, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
return payload
|
return payload
|
||||||
}
|
}
|
||||||
@@ -431,7 +444,7 @@ func createWrappedPayloadHeaderCapella(t testing.TB) interfaces.ExecutionData {
|
|||||||
BlockHash: make([]byte, fieldparams.RootLength),
|
BlockHash: make([]byte, fieldparams.RootLength),
|
||||||
TransactionsRoot: make([]byte, fieldparams.RootLength),
|
TransactionsRoot: make([]byte, fieldparams.RootLength),
|
||||||
WithdrawalsRoot: make([]byte, fieldparams.RootLength),
|
WithdrawalsRoot: make([]byte, fieldparams.RootLength),
|
||||||
}, 0)
|
}, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
return payload
|
return payload
|
||||||
}
|
}
|
||||||
@@ -455,7 +468,7 @@ func createWrappedPayloadDeneb(t testing.TB) interfaces.ExecutionData {
|
|||||||
Withdrawals: make([]*enginev1.Withdrawal, 0),
|
Withdrawals: make([]*enginev1.Withdrawal, 0),
|
||||||
BlobGasUsed: 0,
|
BlobGasUsed: 0,
|
||||||
ExcessBlobGas: 0,
|
ExcessBlobGas: 0,
|
||||||
}, 0)
|
}, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
return payload
|
return payload
|
||||||
}
|
}
|
||||||
@@ -479,7 +492,7 @@ func createWrappedPayloadHeaderDeneb(t testing.TB) interfaces.ExecutionData {
|
|||||||
WithdrawalsRoot: make([]byte, fieldparams.RootLength),
|
WithdrawalsRoot: make([]byte, fieldparams.RootLength),
|
||||||
BlobGasUsed: 0,
|
BlobGasUsed: 0,
|
||||||
ExcessBlobGas: 0,
|
ExcessBlobGas: 0,
|
||||||
}, 0)
|
}, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
return payload
|
return payload
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package blocks
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"math/big"
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/prysmaticlabs/prysm/v4/consensus-types/interfaces"
|
"github.com/prysmaticlabs/prysm/v4/consensus-types/interfaces"
|
||||||
@@ -228,9 +229,9 @@ func BuildSignedBeaconBlockFromExecutionPayload(
|
|||||||
case *enginev1.ExecutionPayload:
|
case *enginev1.ExecutionPayload:
|
||||||
wrappedPayload, wrapErr = WrappedExecutionPayload(p)
|
wrappedPayload, wrapErr = WrappedExecutionPayload(p)
|
||||||
case *enginev1.ExecutionPayloadCapella:
|
case *enginev1.ExecutionPayloadCapella:
|
||||||
wrappedPayload, wrapErr = WrappedExecutionPayloadCapella(p, 0)
|
wrappedPayload, wrapErr = WrappedExecutionPayloadCapella(p, big.NewInt(0))
|
||||||
case *enginev1.ExecutionPayloadDeneb:
|
case *enginev1.ExecutionPayloadDeneb:
|
||||||
wrappedPayload, wrapErr = WrappedExecutionPayloadDeneb(p, 0)
|
wrappedPayload, wrapErr = WrappedExecutionPayloadDeneb(p, big.NewInt(0))
|
||||||
default:
|
default:
|
||||||
return nil, fmt.Errorf("%T is not a type of execution payload", p)
|
return nil, fmt.Errorf("%T is not a type of execution payload", p)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package blocks
|
|||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"errors"
|
"errors"
|
||||||
|
"math/big"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
fieldparams "github.com/prysmaticlabs/prysm/v4/config/fieldparams"
|
fieldparams "github.com/prysmaticlabs/prysm/v4/config/fieldparams"
|
||||||
@@ -515,7 +516,7 @@ func TestBuildSignedBeaconBlockFromExecutionPayload(t *testing.T) {
|
|||||||
ExcessBlobGas: 123,
|
ExcessBlobGas: 123,
|
||||||
BlobGasUsed: 321,
|
BlobGasUsed: 321,
|
||||||
}
|
}
|
||||||
wrapped, err := WrappedExecutionPayloadDeneb(payload, 123)
|
wrapped, err := WrappedExecutionPayloadDeneb(payload, big.NewInt(123))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
header, err := PayloadToHeaderDeneb(wrapped)
|
header, err := PayloadToHeaderDeneb(wrapped)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package blocks
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"math/big"
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
ssz "github.com/prysmaticlabs/fastssz"
|
ssz "github.com/prysmaticlabs/fastssz"
|
||||||
@@ -9,6 +10,7 @@ import (
|
|||||||
consensus_types "github.com/prysmaticlabs/prysm/v4/consensus-types"
|
consensus_types "github.com/prysmaticlabs/prysm/v4/consensus-types"
|
||||||
"github.com/prysmaticlabs/prysm/v4/consensus-types/interfaces"
|
"github.com/prysmaticlabs/prysm/v4/consensus-types/interfaces"
|
||||||
"github.com/prysmaticlabs/prysm/v4/consensus-types/primitives"
|
"github.com/prysmaticlabs/prysm/v4/consensus-types/primitives"
|
||||||
|
"github.com/prysmaticlabs/prysm/v4/math"
|
||||||
enginev1 "github.com/prysmaticlabs/prysm/v4/proto/engine/v1"
|
enginev1 "github.com/prysmaticlabs/prysm/v4/proto/engine/v1"
|
||||||
eth "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
|
eth "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
|
||||||
validatorpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1/validator-client"
|
validatorpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1/validator-client"
|
||||||
@@ -371,7 +373,26 @@ func (b *SignedBeaconBlock) IsBlinded() bool {
|
|||||||
return b.version >= version.Bellatrix && b.block.body.executionPayload == nil
|
return b.version >= version.Bellatrix && b.block.body.executionPayload == nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// ValueInGwei metadata on the payload value returned by the builder. Value is 0 by default if local.
|
// ValueInWei metadata on the payload value returned by the builder.
|
||||||
|
func (b *SignedBeaconBlock) ValueInWei() math.Wei {
|
||||||
|
exec, err := b.block.body.Execution()
|
||||||
|
if err != nil {
|
||||||
|
if !errors.Is(err, consensus_types.ErrUnsupportedField) {
|
||||||
|
log.WithError(err).Warn("failed to retrieve execution payload")
|
||||||
|
}
|
||||||
|
return big.NewInt(0)
|
||||||
|
}
|
||||||
|
val, err := exec.ValueInWei()
|
||||||
|
if err != nil {
|
||||||
|
if !errors.Is(err, consensus_types.ErrUnsupportedField) {
|
||||||
|
log.WithError(err).Warn("failed to retrieve execution payload")
|
||||||
|
}
|
||||||
|
return big.NewInt(0)
|
||||||
|
}
|
||||||
|
return val
|
||||||
|
}
|
||||||
|
|
||||||
|
// ValueInGwei metadata on the payload value returned by the builder.
|
||||||
func (b *SignedBeaconBlock) ValueInGwei() uint64 {
|
func (b *SignedBeaconBlock) ValueInGwei() uint64 {
|
||||||
exec, err := b.block.body.Execution()
|
exec, err := b.block.body.Execution()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -1038,71 +1059,11 @@ func (b *BeaconBlockBody) Execution() (interfaces.ExecutionData, error) {
|
|||||||
switch b.version {
|
switch b.version {
|
||||||
case version.Phase0, version.Altair:
|
case version.Phase0, version.Altair:
|
||||||
return nil, consensus_types.ErrNotSupported("Execution", b.version)
|
return nil, consensus_types.ErrNotSupported("Execution", b.version)
|
||||||
case version.Bellatrix:
|
|
||||||
if b.IsBlinded() {
|
|
||||||
var ph *enginev1.ExecutionPayloadHeader
|
|
||||||
var ok bool
|
|
||||||
if b.executionPayloadHeader != nil {
|
|
||||||
ph, ok = b.executionPayloadHeader.Proto().(*enginev1.ExecutionPayloadHeader)
|
|
||||||
if !ok {
|
|
||||||
return nil, errPayloadHeaderWrongType
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return WrappedExecutionPayloadHeader(ph)
|
|
||||||
}
|
|
||||||
var p *enginev1.ExecutionPayload
|
|
||||||
var ok bool
|
|
||||||
if b.executionPayload != nil {
|
|
||||||
p, ok = b.executionPayload.Proto().(*enginev1.ExecutionPayload)
|
|
||||||
if !ok {
|
|
||||||
return nil, errPayloadWrongType
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return WrappedExecutionPayload(p)
|
|
||||||
case version.Capella:
|
|
||||||
if b.IsBlinded() {
|
|
||||||
var ph *enginev1.ExecutionPayloadHeaderCapella
|
|
||||||
var ok bool
|
|
||||||
if b.executionPayloadHeader != nil {
|
|
||||||
ph, ok = b.executionPayloadHeader.Proto().(*enginev1.ExecutionPayloadHeaderCapella)
|
|
||||||
if !ok {
|
|
||||||
return nil, errPayloadHeaderWrongType
|
|
||||||
}
|
|
||||||
return WrappedExecutionPayloadHeaderCapella(ph, 0)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var p *enginev1.ExecutionPayloadCapella
|
|
||||||
var ok bool
|
|
||||||
if b.executionPayload != nil {
|
|
||||||
p, ok = b.executionPayload.Proto().(*enginev1.ExecutionPayloadCapella)
|
|
||||||
if !ok {
|
|
||||||
return nil, errPayloadWrongType
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return WrappedExecutionPayloadCapella(p, 0)
|
|
||||||
case version.Deneb:
|
|
||||||
if b.IsBlinded() {
|
|
||||||
var ph *enginev1.ExecutionPayloadHeaderDeneb
|
|
||||||
var ok bool
|
|
||||||
if b.executionPayloadHeader != nil {
|
|
||||||
ph, ok = b.executionPayloadHeader.Proto().(*enginev1.ExecutionPayloadHeaderDeneb)
|
|
||||||
if !ok {
|
|
||||||
return nil, errPayloadHeaderWrongType
|
|
||||||
}
|
|
||||||
return WrappedExecutionPayloadHeaderDeneb(ph, 0)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var p *enginev1.ExecutionPayloadDeneb
|
|
||||||
var ok bool
|
|
||||||
if b.executionPayload != nil {
|
|
||||||
p, ok = b.executionPayload.Proto().(*enginev1.ExecutionPayloadDeneb)
|
|
||||||
if !ok {
|
|
||||||
return nil, errPayloadWrongType
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return WrappedExecutionPayloadDeneb(p, 0)
|
|
||||||
default:
|
default:
|
||||||
return nil, errIncorrectBlockVersion
|
if b.IsBlinded() {
|
||||||
|
return b.executionPayloadHeader, nil
|
||||||
|
}
|
||||||
|
return b.executionPayload, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package blocks
|
package blocks
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"math/big"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
ssz "github.com/prysmaticlabs/fastssz"
|
ssz "github.com/prysmaticlabs/fastssz"
|
||||||
@@ -214,9 +215,9 @@ func Test_BeaconBlock_Copy(t *testing.T) {
|
|||||||
|
|
||||||
payload := &pb.ExecutionPayloadDeneb{ExcessBlobGas: 123}
|
payload := &pb.ExecutionPayloadDeneb{ExcessBlobGas: 123}
|
||||||
header := &pb.ExecutionPayloadHeaderDeneb{ExcessBlobGas: 223}
|
header := &pb.ExecutionPayloadHeaderDeneb{ExcessBlobGas: 223}
|
||||||
payloadInterface, err := WrappedExecutionPayloadDeneb(payload, 123)
|
payloadInterface, err := WrappedExecutionPayloadDeneb(payload, big.NewInt(123))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
headerInterface, err := WrappedExecutionPayloadHeaderDeneb(header, 123)
|
headerInterface, err := WrappedExecutionPayloadHeaderDeneb(header, big.NewInt(123))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
bb = &BeaconBlockBody{executionPayload: payloadInterface, executionPayloadHeader: headerInterface, randaoReveal: bytesutil.ToBytes96([]byte{246}), graffiti: bytesutil.ToBytes32([]byte("graffiti"))}
|
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 = &BeaconBlock{body: bb, slot: 123, proposerIndex: 456, parentRoot: bytesutil.ToBytes32([]byte("parentroot")), stateRoot: bytesutil.ToBytes32([]byte("stateroot"))}
|
||||||
@@ -411,7 +412,7 @@ func Test_BeaconBlockBody_Execution(t *testing.T) {
|
|||||||
assert.DeepEqual(t, result, e)
|
assert.DeepEqual(t, result, e)
|
||||||
|
|
||||||
executionCapella := &pb.ExecutionPayloadCapella{BlockNumber: 1}
|
executionCapella := &pb.ExecutionPayloadCapella{BlockNumber: 1}
|
||||||
eCapella, err := WrappedExecutionPayloadCapella(executionCapella, 0)
|
eCapella, err := WrappedExecutionPayloadCapella(executionCapella, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
bb = &SignedBeaconBlock{version: version.Capella, block: &BeaconBlock{body: &BeaconBlockBody{version: version.Capella}}}
|
bb = &SignedBeaconBlock{version: version.Capella, block: &BeaconBlock{body: &BeaconBlockBody{version: version.Capella}}}
|
||||||
require.NoError(t, bb.SetExecution(eCapella))
|
require.NoError(t, bb.SetExecution(eCapella))
|
||||||
@@ -420,7 +421,7 @@ func Test_BeaconBlockBody_Execution(t *testing.T) {
|
|||||||
assert.DeepEqual(t, result, eCapella)
|
assert.DeepEqual(t, result, eCapella)
|
||||||
|
|
||||||
executionCapellaHeader := &pb.ExecutionPayloadHeaderCapella{BlockNumber: 1}
|
executionCapellaHeader := &pb.ExecutionPayloadHeaderCapella{BlockNumber: 1}
|
||||||
eCapellaHeader, err := WrappedExecutionPayloadHeaderCapella(executionCapellaHeader, 0)
|
eCapellaHeader, err := WrappedExecutionPayloadHeaderCapella(executionCapellaHeader, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
bb = &SignedBeaconBlock{version: version.Capella, block: &BeaconBlock{version: version.Capella, body: &BeaconBlockBody{version: version.Capella}}}
|
bb = &SignedBeaconBlock{version: version.Capella, block: &BeaconBlock{version: version.Capella, body: &BeaconBlockBody{version: version.Capella}}}
|
||||||
require.NoError(t, bb.SetExecution(eCapellaHeader))
|
require.NoError(t, bb.SetExecution(eCapellaHeader))
|
||||||
@@ -429,7 +430,7 @@ func Test_BeaconBlockBody_Execution(t *testing.T) {
|
|||||||
assert.DeepEqual(t, result, eCapellaHeader)
|
assert.DeepEqual(t, result, eCapellaHeader)
|
||||||
|
|
||||||
executionDeneb := &pb.ExecutionPayloadDeneb{BlockNumber: 1, ExcessBlobGas: 123}
|
executionDeneb := &pb.ExecutionPayloadDeneb{BlockNumber: 1, ExcessBlobGas: 123}
|
||||||
eDeneb, err := WrappedExecutionPayloadDeneb(executionDeneb, 0)
|
eDeneb, err := WrappedExecutionPayloadDeneb(executionDeneb, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
bb = &SignedBeaconBlock{version: version.Deneb, block: &BeaconBlock{body: &BeaconBlockBody{version: version.Deneb}}}
|
bb = &SignedBeaconBlock{version: version.Deneb, block: &BeaconBlock{body: &BeaconBlockBody{version: version.Deneb}}}
|
||||||
require.NoError(t, bb.SetExecution(eDeneb))
|
require.NoError(t, bb.SetExecution(eDeneb))
|
||||||
@@ -441,7 +442,7 @@ func Test_BeaconBlockBody_Execution(t *testing.T) {
|
|||||||
require.DeepEqual(t, gas, uint64(123))
|
require.DeepEqual(t, gas, uint64(123))
|
||||||
|
|
||||||
executionDenebHeader := &pb.ExecutionPayloadHeaderDeneb{BlockNumber: 1, ExcessBlobGas: 223}
|
executionDenebHeader := &pb.ExecutionPayloadHeaderDeneb{BlockNumber: 1, ExcessBlobGas: 223}
|
||||||
eDenebHeader, err := WrappedExecutionPayloadHeaderDeneb(executionDenebHeader, 0)
|
eDenebHeader, err := WrappedExecutionPayloadHeaderDeneb(executionDenebHeader, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
bb = &SignedBeaconBlock{version: version.Deneb, block: &BeaconBlock{version: version.Deneb, body: &BeaconBlockBody{version: version.Deneb}}}
|
bb = &SignedBeaconBlock{version: version.Deneb, block: &BeaconBlock{version: version.Deneb, body: &BeaconBlockBody{version: version.Deneb}}}
|
||||||
require.NoError(t, bb.SetExecution(eDenebHeader))
|
require.NoError(t, bb.SetExecution(eDenebHeader))
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package blocks
|
package blocks
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"math/big"
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
consensus_types "github.com/prysmaticlabs/prysm/v4/consensus-types"
|
consensus_types "github.com/prysmaticlabs/prysm/v4/consensus-types"
|
||||||
"github.com/prysmaticlabs/prysm/v4/encoding/bytesutil"
|
"github.com/prysmaticlabs/prysm/v4/encoding/bytesutil"
|
||||||
@@ -844,7 +846,7 @@ func initBlockBodyFromProtoCapella(pb *eth.BeaconBlockBodyCapella) (*BeaconBlock
|
|||||||
return nil, errNilBlockBody
|
return nil, errNilBlockBody
|
||||||
}
|
}
|
||||||
|
|
||||||
p, err := WrappedExecutionPayloadCapella(pb.ExecutionPayload, 0)
|
p, err := WrappedExecutionPayloadCapella(pb.ExecutionPayload, big.NewInt(0))
|
||||||
// We allow the payload to be nil
|
// We allow the payload to be nil
|
||||||
if err != nil && err != consensus_types.ErrNilObjectWrapped {
|
if err != nil && err != consensus_types.ErrNilObjectWrapped {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -871,7 +873,7 @@ func initBlindedBlockBodyFromProtoCapella(pb *eth.BlindedBeaconBlockBodyCapella)
|
|||||||
return nil, errNilBlockBody
|
return nil, errNilBlockBody
|
||||||
}
|
}
|
||||||
|
|
||||||
ph, err := WrappedExecutionPayloadHeaderCapella(pb.ExecutionPayloadHeader, 0)
|
ph, err := WrappedExecutionPayloadHeaderCapella(pb.ExecutionPayloadHeader, big.NewInt(0))
|
||||||
// We allow the payload to be nil
|
// We allow the payload to be nil
|
||||||
if err != nil && err != consensus_types.ErrNilObjectWrapped {
|
if err != nil && err != consensus_types.ErrNilObjectWrapped {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -898,7 +900,7 @@ func initBlockBodyFromProtoDeneb(pb *eth.BeaconBlockBodyDeneb) (*BeaconBlockBody
|
|||||||
return nil, errNilBlockBody
|
return nil, errNilBlockBody
|
||||||
}
|
}
|
||||||
|
|
||||||
p, err := WrappedExecutionPayloadDeneb(pb.ExecutionPayload, 0)
|
p, err := WrappedExecutionPayloadDeneb(pb.ExecutionPayload, big.NewInt(0))
|
||||||
// We allow the payload to be nil
|
// We allow the payload to be nil
|
||||||
if err != nil && err != consensus_types.ErrNilObjectWrapped {
|
if err != nil && err != consensus_types.ErrNilObjectWrapped {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -926,7 +928,7 @@ func initBlindedBlockBodyFromProtoDeneb(pb *eth.BlindedBeaconBlockBodyDeneb) (*B
|
|||||||
return nil, errNilBlockBody
|
return nil, errNilBlockBody
|
||||||
}
|
}
|
||||||
|
|
||||||
ph, err := WrappedExecutionPayloadHeaderDeneb(pb.ExecutionPayloadHeader, 0)
|
ph, err := WrappedExecutionPayloadHeaderDeneb(pb.ExecutionPayloadHeader, big.NewInt(0))
|
||||||
// We allow the payload to be nil
|
// We allow the payload to be nil
|
||||||
if err != nil && err != consensus_types.ErrNilObjectWrapped {
|
if err != nil && err != consensus_types.ErrNilObjectWrapped {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package blocks
|
package blocks
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"math/big"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/prysmaticlabs/go-bitfield"
|
"github.com/prysmaticlabs/go-bitfield"
|
||||||
@@ -1331,7 +1332,7 @@ func bodyBlindedBellatrix(t *testing.T) *BeaconBlockBody {
|
|||||||
|
|
||||||
func bodyCapella(t *testing.T) *BeaconBlockBody {
|
func bodyCapella(t *testing.T) *BeaconBlockBody {
|
||||||
f := getFields()
|
f := getFields()
|
||||||
p, err := WrappedExecutionPayloadCapella(f.execPayloadCapella, 0)
|
p, err := WrappedExecutionPayloadCapella(f.execPayloadCapella, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
return &BeaconBlockBody{
|
return &BeaconBlockBody{
|
||||||
version: version.Capella,
|
version: version.Capella,
|
||||||
@@ -1355,7 +1356,7 @@ func bodyCapella(t *testing.T) *BeaconBlockBody {
|
|||||||
|
|
||||||
func bodyBlindedCapella(t *testing.T) *BeaconBlockBody {
|
func bodyBlindedCapella(t *testing.T) *BeaconBlockBody {
|
||||||
f := getFields()
|
f := getFields()
|
||||||
ph, err := WrappedExecutionPayloadHeaderCapella(f.execPayloadHeaderCapella, 0)
|
ph, err := WrappedExecutionPayloadHeaderCapella(f.execPayloadHeaderCapella, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
return &BeaconBlockBody{
|
return &BeaconBlockBody{
|
||||||
version: version.Capella,
|
version: version.Capella,
|
||||||
@@ -1379,7 +1380,7 @@ func bodyBlindedCapella(t *testing.T) *BeaconBlockBody {
|
|||||||
|
|
||||||
func bodyDeneb(t *testing.T) *BeaconBlockBody {
|
func bodyDeneb(t *testing.T) *BeaconBlockBody {
|
||||||
f := getFields()
|
f := getFields()
|
||||||
p, err := WrappedExecutionPayloadDeneb(f.execPayloadDeneb, 0)
|
p, err := WrappedExecutionPayloadDeneb(f.execPayloadDeneb, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
return &BeaconBlockBody{
|
return &BeaconBlockBody{
|
||||||
version: version.Deneb,
|
version: version.Deneb,
|
||||||
@@ -1404,7 +1405,7 @@ func bodyDeneb(t *testing.T) *BeaconBlockBody {
|
|||||||
|
|
||||||
func bodyBlindedDeneb(t *testing.T) *BeaconBlockBody {
|
func bodyBlindedDeneb(t *testing.T) *BeaconBlockBody {
|
||||||
f := getFields()
|
f := getFields()
|
||||||
ph, err := WrappedExecutionPayloadHeaderDeneb(f.execPayloadHeaderDeneb, 0)
|
ph, err := WrappedExecutionPayloadHeaderDeneb(f.execPayloadHeaderDeneb, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
return &BeaconBlockBody{
|
return &BeaconBlockBody{
|
||||||
version: version.Deneb,
|
version: version.Deneb,
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ go_library(
|
|||||||
deps = [
|
deps = [
|
||||||
"//config/fieldparams:go_default_library",
|
"//config/fieldparams:go_default_library",
|
||||||
"//consensus-types/primitives:go_default_library",
|
"//consensus-types/primitives:go_default_library",
|
||||||
|
"//math:go_default_library",
|
||||||
"//proto/engine/v1:go_default_library",
|
"//proto/engine/v1:go_default_library",
|
||||||
"//proto/prysm/v1alpha1:go_default_library",
|
"//proto/prysm/v1alpha1:go_default_library",
|
||||||
"//proto/prysm/v1alpha1/validator-client:go_default_library",
|
"//proto/prysm/v1alpha1/validator-client:go_default_library",
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import (
|
|||||||
ssz "github.com/prysmaticlabs/fastssz"
|
ssz "github.com/prysmaticlabs/fastssz"
|
||||||
field_params "github.com/prysmaticlabs/prysm/v4/config/fieldparams"
|
field_params "github.com/prysmaticlabs/prysm/v4/config/fieldparams"
|
||||||
"github.com/prysmaticlabs/prysm/v4/consensus-types/primitives"
|
"github.com/prysmaticlabs/prysm/v4/consensus-types/primitives"
|
||||||
|
"github.com/prysmaticlabs/prysm/v4/math"
|
||||||
enginev1 "github.com/prysmaticlabs/prysm/v4/proto/engine/v1"
|
enginev1 "github.com/prysmaticlabs/prysm/v4/proto/engine/v1"
|
||||||
ethpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
|
ethpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
|
||||||
validatorpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1/validator-client"
|
validatorpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1/validator-client"
|
||||||
@@ -32,6 +33,7 @@ type ReadOnlySignedBeaconBlock interface {
|
|||||||
ssz.Unmarshaler
|
ssz.Unmarshaler
|
||||||
Version() int
|
Version() int
|
||||||
IsBlinded() bool
|
IsBlinded() bool
|
||||||
|
ValueInWei() math.Wei
|
||||||
ValueInGwei() uint64
|
ValueInGwei() uint64
|
||||||
Header() (*ethpb.SignedBeaconBlockHeader, error)
|
Header() (*ethpb.SignedBeaconBlockHeader, error)
|
||||||
}
|
}
|
||||||
@@ -130,5 +132,6 @@ type ExecutionData interface {
|
|||||||
PbCapella() (*enginev1.ExecutionPayloadCapella, error)
|
PbCapella() (*enginev1.ExecutionPayloadCapella, error)
|
||||||
PbBellatrix() (*enginev1.ExecutionPayload, error)
|
PbBellatrix() (*enginev1.ExecutionPayload, error)
|
||||||
PbDeneb() (*enginev1.ExecutionPayloadDeneb, error)
|
PbDeneb() (*enginev1.ExecutionPayloadDeneb, error)
|
||||||
|
ValueInWei() (math.Wei, error)
|
||||||
ValueInGwei() (uint64, error)
|
ValueInGwei() (uint64, error)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ go_library(
|
|||||||
"//config/fieldparams:go_default_library",
|
"//config/fieldparams:go_default_library",
|
||||||
"//consensus-types/interfaces:go_default_library",
|
"//consensus-types/interfaces:go_default_library",
|
||||||
"//consensus-types/primitives:go_default_library",
|
"//consensus-types/primitives:go_default_library",
|
||||||
|
"//math:go_default_library",
|
||||||
"//proto/prysm/v1alpha1:go_default_library",
|
"//proto/prysm/v1alpha1:go_default_library",
|
||||||
"//proto/prysm/v1alpha1/validator-client:go_default_library",
|
"//proto/prysm/v1alpha1/validator-client:go_default_library",
|
||||||
"@com_github_prysmaticlabs_fastssz//:go_default_library",
|
"@com_github_prysmaticlabs_fastssz//:go_default_library",
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import (
|
|||||||
field_params "github.com/prysmaticlabs/prysm/v4/config/fieldparams"
|
field_params "github.com/prysmaticlabs/prysm/v4/config/fieldparams"
|
||||||
"github.com/prysmaticlabs/prysm/v4/consensus-types/interfaces"
|
"github.com/prysmaticlabs/prysm/v4/consensus-types/interfaces"
|
||||||
"github.com/prysmaticlabs/prysm/v4/consensus-types/primitives"
|
"github.com/prysmaticlabs/prysm/v4/consensus-types/primitives"
|
||||||
|
"github.com/prysmaticlabs/prysm/v4/math"
|
||||||
eth "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
|
eth "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
|
||||||
validatorpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1/validator-client"
|
validatorpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1/validator-client"
|
||||||
"google.golang.org/protobuf/proto"
|
"google.golang.org/protobuf/proto"
|
||||||
@@ -106,6 +107,10 @@ func (SignedBeaconBlock) Header() (*eth.SignedBeaconBlockHeader, error) {
|
|||||||
panic("implement me")
|
panic("implement me")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (SignedBeaconBlock) ValueInWei() math.Wei {
|
||||||
|
panic("implement me")
|
||||||
|
}
|
||||||
|
|
||||||
func (SignedBeaconBlock) ValueInGwei() uint64 {
|
func (SignedBeaconBlock) ValueInGwei() uint64 {
|
||||||
panic("implement me")
|
panic("implement me")
|
||||||
}
|
}
|
||||||
|
|||||||
1802
proto/prysm/v1alpha1/beacon_block.pb.go
generated
1802
proto/prysm/v1alpha1/beacon_block.pb.go
generated
File diff suppressed because it is too large
Load Diff
@@ -53,7 +53,7 @@ message GenericSignedBeaconBlock {
|
|||||||
SignedBlindedBeaconBlockDeneb blinded_deneb = 8;
|
SignedBlindedBeaconBlockDeneb blinded_deneb = 8;
|
||||||
}
|
}
|
||||||
bool is_blinded = 100;
|
bool is_blinded = 100;
|
||||||
uint64 payload_value = 101;
|
uint64 payload_value = 101 [deprecated = true];
|
||||||
}
|
}
|
||||||
|
|
||||||
message GenericBeaconBlock {
|
message GenericBeaconBlock {
|
||||||
@@ -82,7 +82,7 @@ message GenericBeaconBlock {
|
|||||||
BlindedBeaconBlockDeneb blinded_deneb = 8;
|
BlindedBeaconBlockDeneb blinded_deneb = 8;
|
||||||
}
|
}
|
||||||
bool is_blinded = 100;
|
bool is_blinded = 100;
|
||||||
uint64 payload_value = 101;
|
string payload_value = 101;
|
||||||
}
|
}
|
||||||
|
|
||||||
// The Ethereum consensus beacon block. The message does not contain a validator signature.
|
// The Ethereum consensus beacon block. The message does not contain a validator signature.
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package interop
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"math/big"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/core/types"
|
"github.com/ethereum/go-ethereum/core/types"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
@@ -595,7 +596,7 @@ func (s *PremineGenesisConfig) setExecutionPayload(g state.BeaconState) error {
|
|||||||
Transactions: make([][]byte, 0),
|
Transactions: make([][]byte, 0),
|
||||||
Withdrawals: make([]*enginev1.Withdrawal, 0),
|
Withdrawals: make([]*enginev1.Withdrawal, 0),
|
||||||
}
|
}
|
||||||
wep, err := blocks.WrappedExecutionPayloadCapella(payload, 0)
|
wep, err := blocks.WrappedExecutionPayloadCapella(payload, big.NewInt(0))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -603,7 +604,7 @@ func (s *PremineGenesisConfig) setExecutionPayload(g state.BeaconState) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
ed, err = blocks.WrappedExecutionPayloadHeaderCapella(eph, 0)
|
ed, err = blocks.WrappedExecutionPayloadHeaderCapella(eph, big.NewInt(0))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -627,7 +628,7 @@ func (s *PremineGenesisConfig) setExecutionPayload(g state.BeaconState) error {
|
|||||||
ExcessBlobGas: *gb.ExcessBlobGas(),
|
ExcessBlobGas: *gb.ExcessBlobGas(),
|
||||||
BlobGasUsed: *gb.BlobGasUsed(),
|
BlobGasUsed: *gb.BlobGasUsed(),
|
||||||
}
|
}
|
||||||
wep, err := blocks.WrappedExecutionPayloadDeneb(payload, 0)
|
wep, err := blocks.WrappedExecutionPayloadDeneb(payload, big.NewInt(0))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -635,7 +636,7 @@ func (s *PremineGenesisConfig) setExecutionPayload(g state.BeaconState) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
ed, err = blocks.WrappedExecutionPayloadHeaderDeneb(eph, 0)
|
ed, err = blocks.WrappedExecutionPayloadHeaderDeneb(eph, big.NewInt(0))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ go_library(
|
|||||||
"//consensus-types/primitives:go_default_library",
|
"//consensus-types/primitives:go_default_library",
|
||||||
"//crypto/bls:go_default_library",
|
"//crypto/bls:go_default_library",
|
||||||
"//encoding/bytesutil:go_default_library",
|
"//encoding/bytesutil:go_default_library",
|
||||||
"//math:go_default_library",
|
|
||||||
"//network:go_default_library",
|
"//network:go_default_library",
|
||||||
"//network/authorization:go_default_library",
|
"//network/authorization:go_default_library",
|
||||||
"//proto/engine/v1:go_default_library",
|
"//proto/engine/v1:go_default_library",
|
||||||
|
|||||||
@@ -33,7 +33,6 @@ import (
|
|||||||
|
|
||||||
"github.com/prysmaticlabs/prysm/v4/crypto/bls"
|
"github.com/prysmaticlabs/prysm/v4/crypto/bls"
|
||||||
"github.com/prysmaticlabs/prysm/v4/encoding/bytesutil"
|
"github.com/prysmaticlabs/prysm/v4/encoding/bytesutil"
|
||||||
"github.com/prysmaticlabs/prysm/v4/math"
|
|
||||||
"github.com/prysmaticlabs/prysm/v4/network"
|
"github.com/prysmaticlabs/prysm/v4/network"
|
||||||
"github.com/prysmaticlabs/prysm/v4/network/authorization"
|
"github.com/prysmaticlabs/prysm/v4/network/authorization"
|
||||||
v1 "github.com/prysmaticlabs/prysm/v4/proto/engine/v1"
|
v1 "github.com/prysmaticlabs/prysm/v4/proto/engine/v1"
|
||||||
@@ -429,7 +428,7 @@ func (p *Builder) handleHeaderRequestCapella(w http.ResponseWriter) {
|
|||||||
weiVal := big.NewInt(0).SetBytes(bytesutil.ReverseByteOrder(b.Value))
|
weiVal := big.NewInt(0).SetBytes(bytesutil.ReverseByteOrder(b.Value))
|
||||||
// we set the payload value as twice its actual one so that it always chooses builder payloads vs local payloads
|
// we set the payload value as twice its actual one so that it always chooses builder payloads vs local payloads
|
||||||
weiVal = weiVal.Mul(weiVal, big.NewInt(2))
|
weiVal = weiVal.Mul(weiVal, big.NewInt(2))
|
||||||
wObj, err := blocks.WrappedExecutionPayloadCapella(b.Payload, math.WeiToGwei(weiVal))
|
wObj, err := blocks.WrappedExecutionPayloadCapella(b.Payload, weiVal)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
p.cfg.logger.WithError(err).Error("Could not wrap execution payload")
|
p.cfg.logger.WithError(err).Error("Could not wrap execution payload")
|
||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||||
@@ -510,7 +509,7 @@ func (p *Builder) handleHeaderRequestDeneb(w http.ResponseWriter) {
|
|||||||
weiVal := big.NewInt(0).SetBytes(bytesutil.ReverseByteOrder(b.Value))
|
weiVal := big.NewInt(0).SetBytes(bytesutil.ReverseByteOrder(b.Value))
|
||||||
// we set the payload value as twice its actual one so that it always chooses builder payloads vs local payloads
|
// we set the payload value as twice its actual one so that it always chooses builder payloads vs local payloads
|
||||||
weiVal = weiVal.Mul(weiVal, big.NewInt(2))
|
weiVal = weiVal.Mul(weiVal, big.NewInt(2))
|
||||||
wObj, err := blocks.WrappedExecutionPayloadDeneb(b.Payload, math.WeiToGwei(weiVal))
|
wObj, err := blocks.WrappedExecutionPayloadDeneb(b.Payload, weiVal)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
p.cfg.logger.WithError(err).Error("Could not wrap execution payload")
|
p.cfg.logger.WithError(err).Error("Could not wrap execution payload")
|
||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package operations
|
package operations
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"math/big"
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
"strings"
|
"strings"
|
||||||
@@ -53,7 +54,7 @@ func RunExecutionPayloadTest(t *testing.T, config string) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
payload, err := blocks2.WrappedExecutionPayloadCapella(block.ExecutionPayload, 0)
|
payload, err := blocks2.WrappedExecutionPayloadCapella(block.ExecutionPayload, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
file, err := util.BazelFileBytes(testsFolderPath, folder.Name(), "execution.yaml")
|
file, err := util.BazelFileBytes(testsFolderPath, folder.Name(), "execution.yaml")
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package operations
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"math/big"
|
||||||
"path"
|
"path"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
@@ -43,7 +44,7 @@ func RunWithdrawalsTest(t *testing.T, config string) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
p, err := consensusblocks.WrappedExecutionPayloadCapella(&enginev1.ExecutionPayloadCapella{Withdrawals: withdrawals}, 0)
|
p, err := consensusblocks.WrappedExecutionPayloadCapella(&enginev1.ExecutionPayloadCapella{Withdrawals: withdrawals}, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
return blocks.ProcessWithdrawals(s, p)
|
return blocks.ProcessWithdrawals(s, p)
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package operations
|
package operations
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"math/big"
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
"strings"
|
"strings"
|
||||||
@@ -56,7 +57,7 @@ func RunExecutionPayloadTest(t *testing.T, config string) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
payload, err := blocks2.WrappedExecutionPayloadDeneb(body.ExecutionPayload, 0)
|
payload, err := blocks2.WrappedExecutionPayloadDeneb(body.ExecutionPayload, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
file, err := util.BazelFileBytes(testsFolderPath, folder.Name(), "execution.yaml")
|
file, err := util.BazelFileBytes(testsFolderPath, folder.Name(), "execution.yaml")
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package operations
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"math/big"
|
||||||
"path"
|
"path"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
@@ -40,7 +41,7 @@ func RunWithdrawalsTest(t *testing.T, config string) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
p, err := consensusblocks.WrappedExecutionPayloadDeneb(&enginev1.ExecutionPayloadDeneb{Withdrawals: withdrawals}, 0)
|
p, err := consensusblocks.WrappedExecutionPayloadDeneb(&enginev1.ExecutionPayloadDeneb{Withdrawals: withdrawals}, big.NewInt(0))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
return blocks.ProcessWithdrawals(s, p)
|
return blocks.ProcessWithdrawals(s, p)
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user