diff --git a/core/state_processor_rip7560.go b/core/state_processor_rip7560.go index 2fc51deeb3..efde8dfd1f 100644 --- a/core/state_processor_rip7560.go +++ b/core/state_processor_rip7560.go @@ -136,7 +136,7 @@ func handleRip7560Transactions(transactions []*types.Transaction, index int, sta // todo: move to a suitable interface, whatever that is // todo 2: maybe handle the "shared gas pool" situation instead of just overriding it completely? func BuyGasRip7560Transaction(st *types.Rip7560AccountAbstractionTx, state vm.StateDB) error { - gasLimit := st.Gas + st.ValidationGas + st.PaymasterGas + st.PostOpGas + gasLimit := st.Gas + st.ValidationGasLimit + st.PaymasterValidationGasLimit + st.PostOpGas mgval := new(uint256.Int).SetUint64(gasLimit) gasFeeCap, _ := uint256.FromBig(st.GasFeeCap) mgval = mgval.Mul(mgval, gasFeeCap) @@ -358,7 +358,7 @@ func prepareDeployerMessage(baseTx *types.Transaction, config *params.ChainConfi From: config.DeployerCallerAddress, To: tx.Deployer, Value: big.NewInt(0), - GasLimit: tx.ValidationGas, + GasLimit: tx.ValidationGasLimit, GasPrice: tx.GasFeeCap, GasFeeCap: tx.GasFeeCap, GasTipCap: tx.GasTipCap, @@ -385,7 +385,7 @@ func prepareAccountValidationMessage(baseTx *types.Transaction, chainConfig *par From: chainConfig.EntryPointAddress, To: tx.Sender, Value: big.NewInt(0), - GasLimit: tx.ValidationGas - deploymentUsedGas, + GasLimit: tx.ValidationGasLimit - deploymentUsedGas, GasPrice: tx.GasFeeCap, GasFeeCap: tx.GasFeeCap, GasTipCap: tx.GasTipCap, @@ -416,7 +416,7 @@ func preparePaymasterValidationMessage(baseTx *types.Transaction, config *params From: config.EntryPointAddress, To: tx.Paymaster, Value: big.NewInt(0), - GasLimit: tx.PaymasterGas, + GasLimit: tx.PaymasterValidationGasLimit, GasPrice: tx.GasFeeCap, GasFeeCap: tx.GasFeeCap, GasTipCap: tx.GasTipCap, @@ -465,7 +465,7 @@ func preparePostOpMessage(vpr *ValidationPhaseResult, chainConfig *params.ChainC From: chainConfig.EntryPointAddress, To: tx.Paymaster, Value: big.NewInt(0), - GasLimit: tx.PaymasterGas - executionResult.UsedGas, + GasLimit: tx.PaymasterValidationGasLimit - executionResult.UsedGas, GasPrice: tx.GasFeeCap, GasFeeCap: tx.GasFeeCap, GasTipCap: tx.GasTipCap, diff --git a/core/types/transaction_signing_rip7560.go b/core/types/transaction_signing_rip7560.go index 0a84b46e56..79ef14efae 100644 --- a/core/types/transaction_signing_rip7560.go +++ b/core/types/transaction_signing_rip7560.go @@ -40,7 +40,7 @@ func (s rip7560Signer) Hash(tx *Transaction) common.Hash { aatx.PaymasterData, aatx.DeployerData, aatx.BuilderFee, - aatx.ValidationGas, - aatx.PaymasterGas, + aatx.ValidationGasLimit, + aatx.PaymasterValidationGasLimit, }) } diff --git a/core/types/tx_rip7560.go b/core/types/tx_rip7560.go index 59e2792570..2b47ec8e8c 100644 --- a/core/types/tx_rip7560.go +++ b/core/types/tx_rip7560.go @@ -35,16 +35,16 @@ type Rip7560AccountAbstractionTx struct { AccessList AccessList // extra fields - Sender *common.Address - Signature []byte - Paymaster *common.Address `rlp:"nil"` - PaymasterData []byte - Deployer *common.Address `rlp:"nil"` - DeployerData []byte - BuilderFee *big.Int - ValidationGas uint64 - PaymasterGas uint64 - PostOpGas uint64 + Sender *common.Address + Signature []byte + Paymaster *common.Address `rlp:"nil"` + PaymasterData []byte + Deployer *common.Address `rlp:"nil"` + DeployerData []byte + BuilderFee *big.Int + ValidationGasLimit uint64 + PaymasterValidationGasLimit uint64 + PostOpGas uint64 // removed fields To *common.Address `rlp:"nil"` @@ -66,16 +66,16 @@ func (tx *Rip7560AccountAbstractionTx) copy() TxData { GasTipCap: new(big.Int), GasFeeCap: new(big.Int), - Sender: copyAddressPtr(tx.Sender), - Signature: common.CopyBytes(tx.Signature), - Paymaster: copyAddressPtr(tx.Paymaster), - PaymasterData: common.CopyBytes(tx.PaymasterData), - Deployer: copyAddressPtr(tx.Deployer), - DeployerData: common.CopyBytes(tx.DeployerData), - BuilderFee: new(big.Int), - ValidationGas: tx.ValidationGas, - PaymasterGas: tx.PaymasterGas, - PostOpGas: tx.PostOpGas, + Sender: copyAddressPtr(tx.Sender), + Signature: common.CopyBytes(tx.Signature), + Paymaster: copyAddressPtr(tx.Paymaster), + PaymasterData: common.CopyBytes(tx.PaymasterData), + Deployer: copyAddressPtr(tx.Deployer), + DeployerData: common.CopyBytes(tx.DeployerData), + BuilderFee: new(big.Int), + ValidationGasLimit: tx.ValidationGasLimit, + PaymasterValidationGasLimit: tx.PaymasterValidationGasLimit, + PostOpGas: tx.PostOpGas, } copy(cpy.AccessList, tx.AccessList) if tx.Value != nil { @@ -140,21 +140,21 @@ func (tx *Rip7560AccountAbstractionTx) decode(input []byte) error { // Rip7560Transaction an equivalent of a solidity struct only used to encode the 'transaction' parameter type Rip7560Transaction struct { - Sender common.Address - Nonce *big.Int - ValidationGasLimit *big.Int - PaymasterGasLimit *big.Int - PostOpGasLimit *big.Int - CallGasLimit *big.Int - MaxFeePerGas *big.Int - MaxPriorityFeePerGas *big.Int - BuilderFee *big.Int - Paymaster *common.Address - PaymasterData []byte - Deployer *common.Address - DeployerData []byte - CallData []byte - Signature []byte + Sender common.Address + Nonce *big.Int + ValidationGasLimit *big.Int + PaymasterValidationGasLimit *big.Int + PostOpGasLimit *big.Int + CallGasLimit *big.Int + MaxFeePerGas *big.Int + MaxPriorityFeePerGas *big.Int + BuilderFee *big.Int + Paymaster *common.Address + PaymasterData []byte + Deployer *common.Address + DeployerData []byte + CallData []byte + Signature []byte } func (tx *Rip7560AccountAbstractionTx) AbiEncode() ([]byte, error) { @@ -162,7 +162,7 @@ func (tx *Rip7560AccountAbstractionTx) AbiEncode() ([]byte, error) { {Name: "sender", Type: "address"}, {Name: "nonce", Type: "uint256"}, {Name: "validationGasLimit", Type: "uint256"}, - {Name: "paymasterGasLimit", Type: "uint256"}, + {Name: "paymasterValidationGasLimit", Type: "uint256"}, {Name: "callGasLimit", Type: "uint256"}, {Name: "maxFeePerGas", Type: "uint256"}, {Name: "maxPriorityFeePerGas", Type: "uint256"}, @@ -177,18 +177,18 @@ func (tx *Rip7560AccountAbstractionTx) AbiEncode() ([]byte, error) { {Type: structThing, Name: "param_one"}, } record := &Rip7560Transaction{ - Sender: *tx.Sender, - Nonce: big.NewInt(int64(tx.Nonce)), - ValidationGasLimit: big.NewInt(int64(tx.ValidationGas)), - PaymasterGasLimit: big.NewInt(int64(tx.PaymasterGas)), - CallGasLimit: big.NewInt(int64(tx.Gas)), - MaxFeePerGas: tx.GasFeeCap, - MaxPriorityFeePerGas: tx.GasTipCap, - BuilderFee: tx.BuilderFee, - PaymasterData: tx.PaymasterData, - DeployerData: tx.DeployerData, - CallData: tx.Data, - Signature: tx.Signature, + Sender: *tx.Sender, + Nonce: big.NewInt(int64(tx.Nonce)), + ValidationGasLimit: big.NewInt(int64(tx.ValidationGasLimit)), + PaymasterValidationGasLimit: big.NewInt(int64(tx.PaymasterValidationGasLimit)), + CallGasLimit: big.NewInt(int64(tx.Gas)), + MaxFeePerGas: tx.GasFeeCap, + MaxPriorityFeePerGas: tx.GasTipCap, + BuilderFee: tx.BuilderFee, + PaymasterData: tx.PaymasterData, + DeployerData: tx.DeployerData, + CallData: tx.Data, + Signature: tx.Signature, } packed, err := args.Pack(&record) return packed, err diff --git a/eth/tracers/native/rip7560_validation.go b/eth/tracers/native/rip7560_validation.go index 9cdc90e2b3..832843dbae 100644 --- a/eth/tracers/native/rip7560_validation.go +++ b/eth/tracers/native/rip7560_validation.go @@ -33,8 +33,10 @@ type contractSizeVal struct { } type access struct { - Reads map[string]string `json:"reads"` - Writes map[string]uint64 `json:"writes"` + Reads map[string]string `json:"reads"` + Writes map[string]uint64 `json:"writes"` + TransientReads map[string]uint64 `json:"transientReads"` + TransientWrites map[string]uint64 `json:"transientWrites"` } // note - this means an individual 'frame' in 7560 (validate, execute, postOp) @@ -251,14 +253,16 @@ func (b *rip7560ValidationTracer) OnOpcode(pc uint64, op byte, gas, cost uint64, } b.lastOp = opcode - if opcode == "SLOAD" || opcode == "SSTORE" { + if opcode == "SLOAD" || opcode == "SSTORE" || opcode == "TLOAD" || opcode == "TSTORE" { slot := common.BytesToHash(StackBack(scope.StackData(), 0).Bytes()) slotHex := slot.Hex() addr := scope.Address() if _, ok := b.CurrentLevel.Access[addr]; !ok { b.CurrentLevel.Access[addr] = &access{ - Reads: map[string]string{}, - Writes: map[string]uint64{}, + Reads: map[string]string{}, + Writes: map[string]uint64{}, + TransientReads: map[string]uint64{}, + TransientWrites: map[string]uint64{}, } } access := *b.CurrentLevel.Access[addr] @@ -271,8 +275,12 @@ func (b *rip7560ValidationTracer) OnOpcode(pc uint64, op byte, gas, cost uint64, if !rOk && !wOk { access.Reads[slotHex] = b.env.StateDB.GetState(addr, slot).Hex() } - } else { + } else if opcode == "STORE" { b.incrementCount(access.Writes, slotHex) + } else if opcode == "TLOAD" { + b.incrementCount(access.TransientReads, slotHex) + } else if opcode == "TSTORE" { + b.incrementCount(access.TransientWrites, slotHex) } } diff --git a/internal/ethapi/transaction_args.go b/internal/ethapi/transaction_args.go index f8b891e656..b1a3ccd0d3 100644 --- a/internal/ethapi/transaction_args.go +++ b/internal/ethapi/transaction_args.go @@ -500,16 +500,16 @@ func (args *TransactionArgs) ToTransaction() *types.Transaction { Data: args.data(), AccessList: al, // RIP-7560 parameters - Sender: args.Sender, - Signature: *args.Signature, - Paymaster: args.Paymaster, - PaymasterData: *args.PaymasterData, - Deployer: args.Deployer, - DeployerData: *args.DeployerData, - BuilderFee: (*big.Int)(args.BuilderFee), - ValidationGas: uint64(*args.ValidationGas), - PaymasterGas: uint64(*args.PaymasterGas), - PostOpGas: uint64(*args.PostOpGas), + Sender: args.Sender, + Signature: *args.Signature, + Paymaster: args.Paymaster, + PaymasterData: *args.PaymasterData, + Deployer: args.Deployer, + DeployerData: *args.DeployerData, + BuilderFee: (*big.Int)(args.BuilderFee), + ValidationGasLimit: uint64(*args.ValidationGas), + PaymasterValidationGasLimit: uint64(*args.PaymasterGas), + PostOpGas: uint64(*args.PostOpGas), } data = &aatx hash := types.NewTx(data).Hash() diff --git a/tests/rip7560/deployer_test.go b/tests/rip7560/deployer_test.go index e07ea49ef1..dfcf4105ee 100644 --- a/tests/rip7560/deployer_test.go +++ b/tests/rip7560/deployer_test.go @@ -14,9 +14,9 @@ func TestValidationFailure_deployerRevert(t *testing.T) { withCode(DEFAULT_SENDER, []byte{}, DEFAULT_BALANCE). withCode(DEPLOYER.Hex(), revertWithData([]byte{}), 0), types.Rip7560AccountAbstractionTx{ - Deployer: &DEPLOYER, - ValidationGas: 1000000000, - GasFeeCap: big.NewInt(1000000000), + Deployer: &DEPLOYER, + ValidationGasLimit: 1000000000, + GasFeeCap: big.NewInt(1000000000), }, "account deployment failed: execution reverted") } @@ -25,9 +25,9 @@ func TestValidationFailure_deployerOOG(t *testing.T) { withCode(DEFAULT_SENDER, []byte{}, DEFAULT_BALANCE). withCode(DEPLOYER.Hex(), revertWithData([]byte{}), 0), types.Rip7560AccountAbstractionTx{ - Deployer: &DEPLOYER, - ValidationGas: 1, - GasFeeCap: big.NewInt(1000000000), + Deployer: &DEPLOYER, + ValidationGasLimit: 1, + GasFeeCap: big.NewInt(1000000000), }, "account deployment failed: out of gas") } @@ -36,9 +36,9 @@ func TestValidationFailure_senderNotDeployed(t *testing.T) { withCode(DEFAULT_SENDER, []byte{}, DEFAULT_BALANCE). withCode(DEPLOYER.Hex(), returnWithData([]byte{}), 0), types.Rip7560AccountAbstractionTx{ - Deployer: &DEPLOYER, - ValidationGas: 1000000000, - GasFeeCap: big.NewInt(1000000000), + Deployer: &DEPLOYER, + ValidationGasLimit: 1000000000, + GasFeeCap: big.NewInt(1000000000), }, "account deployment failed: sender not deployed") } @@ -50,10 +50,10 @@ func TestValidationFailure_senderAlreadyDeployed(t *testing.T) { withCode(sender.Hex(), accountCode, DEFAULT_BALANCE). withCode(DEPLOYER.Hex(), deployerCode, 0), types.Rip7560AccountAbstractionTx{ - Sender: &sender, - Deployer: &DEPLOYER, - ValidationGas: 1000000000, - GasFeeCap: big.NewInt(1000000000), + Sender: &sender, + Deployer: &DEPLOYER, + ValidationGasLimit: 1000000000, + GasFeeCap: big.NewInt(1000000000), }, "account deployment failed: sender already deployed") } @@ -65,10 +65,10 @@ func TestValidationFailure_senderReverts(t *testing.T) { withCode(sender.Hex(), []byte{}, DEFAULT_BALANCE). withCode(DEPLOYER.Hex(), deployerCode, 0), types.Rip7560AccountAbstractionTx{ - Sender: &sender, - Deployer: &DEPLOYER, - ValidationGas: 1000000000, - GasFeeCap: big.NewInt(1000000000), + Sender: &sender, + Deployer: &DEPLOYER, + ValidationGasLimit: 1000000000, + GasFeeCap: big.NewInt(1000000000), }, "execution reverted") } @@ -80,9 +80,9 @@ func TestValidation_deployer_ok(t *testing.T) { withCode(sender.Hex(), []byte{}, DEFAULT_BALANCE). withCode(DEPLOYER.Hex(), deployerCode, 0), types.Rip7560AccountAbstractionTx{ - Sender: &sender, - Deployer: &DEPLOYER, - ValidationGas: 1000000000, - GasFeeCap: big.NewInt(1000000000), + Sender: &sender, + Deployer: &DEPLOYER, + ValidationGasLimit: 1000000000, + GasFeeCap: big.NewInt(1000000000), }, "ok") } diff --git a/tests/rip7560/paymaster_test.go b/tests/rip7560/paymaster_test.go index b169e0be23..9e64226245 100644 --- a/tests/rip7560/paymaster_test.go +++ b/tests/rip7560/paymaster_test.go @@ -15,9 +15,9 @@ func TestPaymasterValidationFailure_nobalance(t *testing.T) { handleTransaction(newTestContextBuilder(t).withCode(DEFAULT_SENDER, createAccountCode(), 0). withCode(DEFAULT_PAYMASTER.String(), createCode(vm.PUSH0, vm.DUP1, vm.REVERT), 1), types.Rip7560AccountAbstractionTx{ - ValidationGas: 1000000000, - GasFeeCap: big.NewInt(1000000000), - Paymaster: &DEFAULT_PAYMASTER, + ValidationGasLimit: 1000000000, + GasFeeCap: big.NewInt(1000000000), + Paymaster: &DEFAULT_PAYMASTER, }, "insufficient funds for gas * price + value: address 0xaaAaaAAAAAbBbbbbBbBBCCCCcCCCcCdddDDDdddd have 1 want 1000000000000000000") } @@ -25,19 +25,19 @@ func TestPaymasterValidationFailure_oog(t *testing.T) { handleTransaction(newTestContextBuilder(t).withCode(DEFAULT_SENDER, createAccountCode(), 0). withCode(DEFAULT_PAYMASTER.String(), createCode(vm.PUSH0, vm.DUP1, vm.REVERT), DEFAULT_BALANCE), types.Rip7560AccountAbstractionTx{ - ValidationGas: 1000000000, - GasFeeCap: big.NewInt(1000000000), - Paymaster: &DEFAULT_PAYMASTER, + ValidationGasLimit: 1000000000, + GasFeeCap: big.NewInt(1000000000), + Paymaster: &DEFAULT_PAYMASTER, }, "out of gas") } func TestPaymasterValidationFailure_revert(t *testing.T) { handleTransaction(newTestContextBuilder(t).withCode(DEFAULT_SENDER, createAccountCode(), 0). withCode(DEFAULT_PAYMASTER.String(), createCode(vm.PUSH0, vm.DUP1, vm.REVERT), DEFAULT_BALANCE), types.Rip7560AccountAbstractionTx{ - ValidationGas: uint64(1000000000), - GasFeeCap: big.NewInt(1000000000), - Paymaster: &DEFAULT_PAYMASTER, - PaymasterGas: 1000000000, + ValidationGasLimit: uint64(1000000000), + GasFeeCap: big.NewInt(1000000000), + Paymaster: &DEFAULT_PAYMASTER, + PaymasterValidationGasLimit: 1000000000, }, "execution reverted") } @@ -45,20 +45,20 @@ func TestPaymasterValidationFailure_unparseable_return_value(t *testing.T) { handleTransaction(newTestContextBuilder(t).withCode(DEFAULT_SENDER, createAccountCode(), 0). withCode(DEFAULT_PAYMASTER.String(), createAccountCode(), DEFAULT_BALANCE), types.Rip7560AccountAbstractionTx{ - ValidationGas: 1000000000, - PaymasterGas: 1000000000, - GasFeeCap: big.NewInt(1000000000), - Paymaster: &DEFAULT_PAYMASTER, + ValidationGasLimit: 1000000000, + PaymasterValidationGasLimit: 1000000000, + GasFeeCap: big.NewInt(1000000000), + Paymaster: &DEFAULT_PAYMASTER, }, "paymaster return data: too short") } func TestPaymasterValidationFailure_wrong_magic(t *testing.T) { handleTransaction(newTestContextBuilder(t).withCode(DEFAULT_SENDER, createAccountCode(), 0). withCode(DEFAULT_PAYMASTER.String(), returnWithData(paymasterReturnValue(1, 2, 3, []byte{})), DEFAULT_BALANCE), types.Rip7560AccountAbstractionTx{ - ValidationGas: 1000000000, - PaymasterGas: 1000000000, - GasFeeCap: big.NewInt(1000000000), - Paymaster: &DEFAULT_PAYMASTER, + ValidationGasLimit: 1000000000, + PaymasterValidationGasLimit: 1000000000, + GasFeeCap: big.NewInt(1000000000), + Paymaster: &DEFAULT_PAYMASTER, }, "paymaster did not return correct MAGIC_VALUE") } @@ -77,39 +77,39 @@ func TestPaymasterValidationFailure_contextTooLarge(t *testing.T) { handleTransaction(newTestContextBuilder(t).withCode(DEFAULT_SENDER, createAccountCode(), 0). withCode(DEFAULT_PAYMASTER.String(), pmCode, DEFAULT_BALANCE), types.Rip7560AccountAbstractionTx{ - ValidationGas: 1000000000, - PaymasterGas: 1000000000, - GasFeeCap: big.NewInt(1000000000), - Paymaster: &DEFAULT_PAYMASTER, + ValidationGasLimit: 1000000000, + PaymasterValidationGasLimit: 1000000000, + GasFeeCap: big.NewInt(1000000000), + Paymaster: &DEFAULT_PAYMASTER, }, "paymaster return data: context too large") } func TestPaymasterValidationFailure_validAfter(t *testing.T) { handleTransaction(newTestContextBuilder(t).withCode(DEFAULT_SENDER, createAccountCode(), 0). withCode(DEFAULT_PAYMASTER.String(), returnWithData(paymasterReturnValue(core.MAGIC_VALUE_PAYMASTER, 300, 200, []byte{})), DEFAULT_BALANCE), types.Rip7560AccountAbstractionTx{ - ValidationGas: 1000000000, - PaymasterGas: 1000000000, - GasFeeCap: big.NewInt(1000000000), - Paymaster: &DEFAULT_PAYMASTER, + ValidationGasLimit: 1000000000, + PaymasterValidationGasLimit: 1000000000, + GasFeeCap: big.NewInt(1000000000), + Paymaster: &DEFAULT_PAYMASTER, }, "RIP-7560 transaction validity not reached yet") } func TestPaymasterValidationFailure_validUntil(t *testing.T) { handleTransaction(newTestContextBuilder(t).withCode(DEFAULT_SENDER, createAccountCode(), 0). withCode(DEFAULT_PAYMASTER.String(), returnWithData(paymasterReturnValue(core.MAGIC_VALUE_PAYMASTER, 1, 0, []byte{})), DEFAULT_BALANCE), types.Rip7560AccountAbstractionTx{ - ValidationGas: 1000000000, - PaymasterGas: 1000000000, - GasFeeCap: big.NewInt(1000000000), - Paymaster: &DEFAULT_PAYMASTER, + ValidationGasLimit: 1000000000, + PaymasterValidationGasLimit: 1000000000, + GasFeeCap: big.NewInt(1000000000), + Paymaster: &DEFAULT_PAYMASTER, }, "RIP-7560 transaction validity expired") } func TestPaymasterValidation_ok(t *testing.T) { handleTransaction(newTestContextBuilder(t).withCode(DEFAULT_SENDER, createAccountCode(), 0). withCode(DEFAULT_PAYMASTER.String(), returnWithData(paymasterReturnValue(core.MAGIC_VALUE_PAYMASTER, 0, 0, []byte{})), DEFAULT_BALANCE), types.Rip7560AccountAbstractionTx{ - ValidationGas: 1000000000, - PaymasterGas: 1000000000, - GasFeeCap: big.NewInt(1000000000), - Paymaster: &DEFAULT_PAYMASTER, + ValidationGasLimit: 1000000000, + PaymasterValidationGasLimit: 1000000000, + GasFeeCap: big.NewInt(1000000000), + Paymaster: &DEFAULT_PAYMASTER, }, "ok") } diff --git a/tests/rip7560/process_test.go b/tests/rip7560/process_test.go index c3973aaa7b..9ddb0fca08 100644 --- a/tests/rip7560/process_test.go +++ b/tests/rip7560/process_test.go @@ -42,10 +42,10 @@ func TestProcess1(t *testing.T) { withCode(DEFAULT_SENDER, createAccountCode(), 1000000000000000000). build(), []*types.Rip7560AccountAbstractionTx{ { - Sender: &Sender, - ValidationGas: uint64(1000000000), - GasFeeCap: big.NewInt(1000000000), - Data: []byte{1, 2, 3}, + Sender: &Sender, + ValidationGasLimit: uint64(1000000000), + GasFeeCap: big.NewInt(1000000000), + Data: []byte{1, 2, 3}, }, }) assert.NoError(t, err) diff --git a/tests/rip7560/validation_test.go b/tests/rip7560/validation_test.go index c7a75fdc91..2c5bd24321 100644 --- a/tests/rip7560/validation_test.go +++ b/tests/rip7560/validation_test.go @@ -30,23 +30,23 @@ func TestUnpackValidationData(t *testing.T) { func TestValidationFailure_OOG(t *testing.T) { handleTransaction(newTestContextBuilder(t).withCode(DEFAULT_SENDER, createAccountCode(), DEFAULT_BALANCE), types.Rip7560AccountAbstractionTx{ - ValidationGas: uint64(1), - GasFeeCap: big.NewInt(1000000000), + ValidationGasLimit: uint64(1), + GasFeeCap: big.NewInt(1000000000), }, "out of gas") } func TestValidationFailure_no_balance(t *testing.T) { handleTransaction(newTestContextBuilder(t).withCode(DEFAULT_SENDER, createAccountCode(), 1), types.Rip7560AccountAbstractionTx{ - ValidationGas: uint64(1), - GasFeeCap: big.NewInt(1000000000), + ValidationGasLimit: uint64(1), + GasFeeCap: big.NewInt(1000000000), }, "insufficient funds for gas * price + value: address 0x1111111111222222222233333333334444444444 have 1 want 1000000000") } func TestValidationFailure_sigerror(t *testing.T) { handleTransaction(newTestContextBuilder(t).withCode(DEFAULT_SENDER, returnWithData(core.PackValidationData(core.MAGIC_VALUE_SIGFAIL, 0, 0)), DEFAULT_BALANCE), types.Rip7560AccountAbstractionTx{ - ValidationGas: uint64(1000000000), - GasFeeCap: big.NewInt(1000000000), + ValidationGasLimit: uint64(1000000000), + GasFeeCap: big.NewInt(1000000000), }, "account signature error") } @@ -54,8 +54,8 @@ func TestValidationFailure_validAfter(t *testing.T) { handleTransaction(newTestContextBuilder(t).withCode(DEFAULT_SENDER, returnWithData(core.PackValidationData(core.MAGIC_VALUE_SENDER, 300, 200)), DEFAULT_BALANCE), types.Rip7560AccountAbstractionTx{ - ValidationGas: uint64(1000000000), - GasFeeCap: big.NewInt(1000000000), + ValidationGasLimit: uint64(1000000000), + GasFeeCap: big.NewInt(1000000000), }, "RIP-7560 transaction validity not reached yet") } @@ -63,45 +63,45 @@ func TestValidationFailure_validUntil(t *testing.T) { handleTransaction(newTestContextBuilder(t).withCode(DEFAULT_SENDER, returnWithData(core.PackValidationData(core.MAGIC_VALUE_SENDER, 1, 0)), DEFAULT_BALANCE), types.Rip7560AccountAbstractionTx{ - ValidationGas: uint64(1000000000), - GasFeeCap: big.NewInt(1000000000), + ValidationGasLimit: uint64(1000000000), + GasFeeCap: big.NewInt(1000000000), }, "RIP-7560 transaction validity expired") } func TestValidation_ok(t *testing.T) { handleTransaction(newTestContextBuilder(t).withCode(DEFAULT_SENDER, createAccountCode(), DEFAULT_BALANCE), types.Rip7560AccountAbstractionTx{ - ValidationGas: uint64(1000000000), - GasFeeCap: big.NewInt(1000000000), + ValidationGasLimit: uint64(1000000000), + GasFeeCap: big.NewInt(1000000000), }, "ok") } func TestValidation_ok_paid(t *testing.T) { aatx := types.Rip7560AccountAbstractionTx{ - ValidationGas: uint64(1000000000), - GasFeeCap: big.NewInt(1000000000), + ValidationGasLimit: uint64(1000000000), + GasFeeCap: big.NewInt(1000000000), } tb := newTestContextBuilder(t).withCode(DEFAULT_SENDER, createAccountCode(), DEFAULT_BALANCE) handleTransaction(tb, aatx, "ok") - maxCost := new(big.Int).SetUint64(aatx.ValidationGas + aatx.PaymasterGas + aatx.Gas) + maxCost := new(big.Int).SetUint64(aatx.ValidationGasLimit + aatx.PaymasterValidationGasLimit + aatx.Gas) maxCost.Mul(maxCost, aatx.GasFeeCap) } func TestValidationFailure_account_nonce(t *testing.T) { handleTransaction(newTestContextBuilder(t).withCode(DEFAULT_SENDER, createAccountCode(), DEFAULT_BALANCE), types.Rip7560AccountAbstractionTx{ - Nonce: 1234, - ValidationGas: uint64(1000000000), - GasFeeCap: big.NewInt(1000000000), + Nonce: 1234, + ValidationGasLimit: uint64(1000000000), + GasFeeCap: big.NewInt(1000000000), }, "nonce too high: address 0x1111111111222222222233333333334444444444, tx: 1234 state: 0") } func TestValidationFailure_account_revert(t *testing.T) { handleTransaction(newTestContextBuilder(t).withCode(DEFAULT_SENDER, createCode(vm.PUSH0, vm.DUP1, vm.REVERT), DEFAULT_BALANCE), types.Rip7560AccountAbstractionTx{ - ValidationGas: uint64(1000000000), - GasFeeCap: big.NewInt(1000000000), + ValidationGasLimit: uint64(1000000000), + GasFeeCap: big.NewInt(1000000000), }, "execution reverted") } @@ -110,24 +110,24 @@ func TestValidationFailure_account_revert_with_reason(t *testing.T) { reason := hexutils.HexToBytes("0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000568656c6c6f000000000000000000000000000000000000000000000000000000") handleTransaction(newTestContextBuilder(t).withCode(DEFAULT_SENDER, revertWithData(reason), DEFAULT_BALANCE), types.Rip7560AccountAbstractionTx{ - ValidationGas: uint64(1000000000), - GasFeeCap: big.NewInt(1000000000), + ValidationGasLimit: uint64(1000000000), + GasFeeCap: big.NewInt(1000000000), }, "execution reverted") } func TestValidationFailure_account_wrong_return_length(t *testing.T) { handleTransaction(newTestContextBuilder(t).withCode(DEFAULT_SENDER, returnWithData([]byte{1, 2, 3}), DEFAULT_BALANCE), types.Rip7560AccountAbstractionTx{ - ValidationGas: uint64(1000000000), - GasFeeCap: big.NewInt(1000000000), + ValidationGasLimit: uint64(1000000000), + GasFeeCap: big.NewInt(1000000000), }, "invalid account return data length") } func TestValidationFailure_account_no_return_value(t *testing.T) { handleTransaction(newTestContextBuilder(t).withCode(DEFAULT_SENDER, returnWithData([]byte{}), DEFAULT_BALANCE), types.Rip7560AccountAbstractionTx{ - ValidationGas: uint64(1000000000), - GasFeeCap: big.NewInt(1000000000), + ValidationGasLimit: uint64(1000000000), + GasFeeCap: big.NewInt(1000000000), }, "invalid account return data length") } @@ -136,8 +136,8 @@ func TestValidationFailure_account_wrong_return_value(t *testing.T) { handleTransaction(newTestContextBuilder(t).withCode(DEFAULT_SENDER, returnWithData(make([]byte, 32)), DEFAULT_BALANCE), types.Rip7560AccountAbstractionTx{ - ValidationGas: uint64(1000000000), - GasFeeCap: big.NewInt(1000000000), + ValidationGasLimit: uint64(1000000000), + GasFeeCap: big.NewInt(1000000000), }, "account did not return correct MAGIC_VALUE") }