mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-24 21:56:43 +00:00
internal/ethapi: fix test
This commit is contained in:
parent
b4bf2ae708
commit
3e4ed1cdc0
3 changed files with 59 additions and 24 deletions
|
|
@ -1519,17 +1519,18 @@ func (api *TransactionAPI) SendTransaction(ctx context.Context, args Transaction
|
|||
// processing (signing + broadcast).
|
||||
func (api *TransactionAPI) FillTransaction(ctx context.Context, args TransactionArgs) (*SignTransactionResult, error) {
|
||||
// Set some sanity defaults and terminate on failure
|
||||
config := sidecarConfig{
|
||||
blobSidecarAllowed: true,
|
||||
blobSidecarVersion: types.BlobSidecarVersion0,
|
||||
}
|
||||
sidecarVersion := types.BlobSidecarVersion0
|
||||
if len(args.Blobs) > 0 {
|
||||
chainHead := api.b.CurrentHeader()
|
||||
isOsaka := api.b.ChainConfig().IsOsaka(chainHead.Number, chainHead.Time)
|
||||
if isOsaka {
|
||||
config.blobSidecarVersion = types.BlobSidecarVersion1
|
||||
sidecarVersion = types.BlobSidecarVersion1
|
||||
}
|
||||
}
|
||||
config := sidecarConfig{
|
||||
blobSidecarAllowed: true,
|
||||
blobSidecarVersion: sidecarVersion,
|
||||
}
|
||||
if err := args.setDefaults(ctx, api.b, config); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,11 +34,9 @@ import (
|
|||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/ethereum/go-ethereum/accounts/abi"
|
||||
"github.com/ethereum/go-ethereum/internal/ethapi/override"
|
||||
|
||||
"github.com/ethereum/go-ethereum"
|
||||
"github.com/ethereum/go-ethereum/accounts"
|
||||
"github.com/ethereum/go-ethereum/accounts/abi"
|
||||
"github.com/ethereum/go-ethereum/accounts/keystore"
|
||||
"github.com/ethereum/go-ethereum/common"
|
||||
"github.com/ethereum/go-ethereum/common/hexutil"
|
||||
|
|
@ -56,6 +54,7 @@ import (
|
|||
"github.com/ethereum/go-ethereum/ethdb"
|
||||
"github.com/ethereum/go-ethereum/event"
|
||||
"github.com/ethereum/go-ethereum/internal/blocktest"
|
||||
"github.com/ethereum/go-ethereum/internal/ethapi/override"
|
||||
"github.com/ethereum/go-ethereum/params"
|
||||
"github.com/ethereum/go-ethereum/rpc"
|
||||
"github.com/holiman/uint256"
|
||||
|
|
@ -2661,19 +2660,53 @@ func TestSendBlobTransaction(t *testing.T) {
|
|||
|
||||
func TestFillBlobTransaction(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
testFillBlobTransaction(t, false)
|
||||
testFillBlobTransaction(t, true)
|
||||
}
|
||||
|
||||
func testFillBlobTransaction(t *testing.T, osaka bool) {
|
||||
// Initialize test accounts
|
||||
config := *params.MergedTestChainConfig
|
||||
if !osaka {
|
||||
config.OsakaTime = nil
|
||||
}
|
||||
var (
|
||||
key, _ = crypto.HexToECDSA("8a1f9a8f95be41cd7ccb6168179afb4504aefe388d1e14474d32c45c72ce7b7a")
|
||||
to = crypto.PubkeyToAddress(key.PublicKey)
|
||||
genesis = &core.Genesis{
|
||||
Config: params.MergedTestChainConfig,
|
||||
Config: &config,
|
||||
Alloc: types.GenesisAlloc{},
|
||||
}
|
||||
emptyBlob = new(kzg4844.Blob)
|
||||
emptyBlobs = []kzg4844.Blob{*emptyBlob}
|
||||
emptyBlobCommit, _ = kzg4844.BlobToCommitment(emptyBlob)
|
||||
emptyBlobProof, _ = kzg4844.ComputeBlobProof(emptyBlob, emptyBlobCommit)
|
||||
emptyBlobCellProofs, _ = kzg4844.ComputeCellProofs(emptyBlob)
|
||||
emptyBlobHash common.Hash = kzg4844.CalcBlobHashV1(sha256.New(), &emptyBlobCommit)
|
||||
|
||||
fillEmptyKZGProofs = func(blobs int) []kzg4844.Proof {
|
||||
if osaka {
|
||||
return make([]kzg4844.Proof, blobs*kzg4844.CellProofsPerBlob)
|
||||
}
|
||||
return make([]kzg4844.Proof, blobs)
|
||||
}
|
||||
expectSidecar = func() *types.BlobTxSidecar {
|
||||
if osaka {
|
||||
return types.NewBlobTxSidecar(
|
||||
types.BlobSidecarVersion1,
|
||||
emptyBlobs,
|
||||
[]kzg4844.Commitment{emptyBlobCommit},
|
||||
emptyBlobCellProofs,
|
||||
)
|
||||
}
|
||||
return types.NewBlobTxSidecar(
|
||||
types.BlobSidecarVersion0,
|
||||
emptyBlobs,
|
||||
[]kzg4844.Commitment{emptyBlobCommit},
|
||||
[]kzg4844.Proof{emptyBlobProof},
|
||||
)
|
||||
}
|
||||
)
|
||||
b := newTestBackend(t, 1, genesis, beacon.New(ethash.NewFaker()), func(i int, b *core.BlockGen) {
|
||||
b.SetPoS()
|
||||
|
|
@ -2733,7 +2766,7 @@ func TestFillBlobTransaction(t *testing.T) {
|
|||
Commitments: []kzg4844.Commitment{{}, {}},
|
||||
Proofs: []kzg4844.Proof{{}},
|
||||
},
|
||||
err: `number of blobs and proofs mismatch (have=1, want=2)`,
|
||||
err: fmt.Sprintf(`number of blobs and proofs mismatch (have=1, want=%d)`, len(fillEmptyKZGProofs(2))),
|
||||
},
|
||||
{
|
||||
name: "TestInvalidProofVerification",
|
||||
|
|
@ -2743,7 +2776,7 @@ func TestFillBlobTransaction(t *testing.T) {
|
|||
Value: (*hexutil.Big)(big.NewInt(1)),
|
||||
Blobs: []kzg4844.Blob{{}, {}},
|
||||
Commitments: []kzg4844.Commitment{{}, {}},
|
||||
Proofs: []kzg4844.Proof{{}, {}},
|
||||
Proofs: fillEmptyKZGProofs(2),
|
||||
},
|
||||
err: `failed to verify blob proof: short buffer`,
|
||||
},
|
||||
|
|
@ -2759,7 +2792,7 @@ func TestFillBlobTransaction(t *testing.T) {
|
|||
},
|
||||
want: &result{
|
||||
Hashes: []common.Hash{emptyBlobHash},
|
||||
Sidecar: types.NewBlobTxSidecar(types.BlobSidecarVersion0, emptyBlobs, []kzg4844.Commitment{emptyBlobCommit}, []kzg4844.Proof{emptyBlobProof}),
|
||||
Sidecar: expectSidecar(),
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
@ -2775,7 +2808,7 @@ func TestFillBlobTransaction(t *testing.T) {
|
|||
},
|
||||
want: &result{
|
||||
Hashes: []common.Hash{emptyBlobHash},
|
||||
Sidecar: types.NewBlobTxSidecar(types.BlobSidecarVersion0, emptyBlobs, []kzg4844.Commitment{emptyBlobCommit}, []kzg4844.Proof{emptyBlobProof}),
|
||||
Sidecar: expectSidecar(),
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
@ -2801,7 +2834,7 @@ func TestFillBlobTransaction(t *testing.T) {
|
|||
},
|
||||
want: &result{
|
||||
Hashes: []common.Hash{emptyBlobHash},
|
||||
Sidecar: types.NewBlobTxSidecar(types.BlobSidecarVersion0, emptyBlobs, []kzg4844.Commitment{emptyBlobCommit}, []kzg4844.Proof{emptyBlobProof}),
|
||||
Sidecar: expectSidecar(),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
|
|||
|
|
@ -306,9 +306,10 @@ func (args *TransactionArgs) setBlobTxSidecar(ctx context.Context, config sideca
|
|||
if args.Commitments != nil && len(args.Commitments) != n {
|
||||
return fmt.Errorf("number of blobs and commitments mismatch (have=%d, want=%d)", len(args.Commitments), n)
|
||||
}
|
||||
proofLen := n
|
||||
|
||||
// if V0: len(blobs) == len(proofs)
|
||||
// if V1: len(blobs) == len(proofs) * 128
|
||||
proofLen := n
|
||||
if config.blobSidecarVersion == types.BlobSidecarVersion1 {
|
||||
proofLen = n * kzg4844.CellProofsPerBlob
|
||||
}
|
||||
|
|
@ -326,7 +327,7 @@ func (args *TransactionArgs) setBlobTxSidecar(ctx context.Context, config sideca
|
|||
if args.Commitments == nil {
|
||||
var (
|
||||
commitments = make([]kzg4844.Commitment, n)
|
||||
proofs = make([]kzg4844.Proof, proofLen)
|
||||
proofs = make([]kzg4844.Proof, 0, proofLen)
|
||||
)
|
||||
for i, b := range args.Blobs {
|
||||
c, err := kzg4844.BlobToCommitment(&b)
|
||||
|
|
@ -341,11 +342,11 @@ func (args *TransactionArgs) setBlobTxSidecar(ctx context.Context, config sideca
|
|||
if err != nil {
|
||||
return fmt.Errorf("blobs[%d]: error computing proof: %v", i, err)
|
||||
}
|
||||
proofs[i] = p
|
||||
proofs = append(proofs, p)
|
||||
case types.BlobSidecarVersion1:
|
||||
ps, err := kzg4844.ComputeCellProofs(&b)
|
||||
if err != nil {
|
||||
return fmt.Errorf("blobs[%d]: error computing cell proof: %v", i, err)
|
||||
return fmt.Errorf("blobs[%d]: error computing proof: %v", i, err)
|
||||
}
|
||||
proofs = append(proofs, ps...)
|
||||
}
|
||||
|
|
@ -362,7 +363,7 @@ func (args *TransactionArgs) setBlobTxSidecar(ctx context.Context, config sideca
|
|||
}
|
||||
case types.BlobSidecarVersion1:
|
||||
if err := kzg4844.VerifyCellProofs(args.Blobs, args.Commitments, args.Proofs); err != nil {
|
||||
return fmt.Errorf("failed to verify blob cell proof: %v", err)
|
||||
return fmt.Errorf("failed to verify blob proof: %v", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue