Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test ApplyRip7560ValidationPhases #5

Merged
merged 10 commits into from
Jun 3, 2024

Conversation

drortirosh
Copy link

No description provided.

@drortirosh drortirosh force-pushed the test-ApplyRip7560ValidationPhases branch from 045b5d7 to 62955f4 Compare June 2, 2024 21:19
@drortirosh drortirosh force-pushed the test-ApplyRip7560ValidationPhases branch from 00110fe to 098b4ba Compare June 2, 2024 21:23
@drortirosh drortirosh changed the base branch from master to RIP-7560-revision-2 June 3, 2024 09:28
Comment on lines 98 to 110
case string:
buffer.Write(hexutils.HexToBytes(v))
case vm.OpCode:

buffer.WriteByte(byte(v))
case byte:

buffer.WriteByte(v)
case []byte:
buffer.Write(v)
case int8:
buffer.WriteByte(byte(v))
case int:
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think we want to or need to accept six different types of a parameter here. I am no Go expert but it seems like a JavaScript-y code to me. What do you think?

},
"0xed0a7aabc745fe5d8bc6ad625c767df86044d049": {
"balance": "0x0",
"code": "0x60a0604052600436101561003b575b3615610031573461002c57610024366000610c7e565b602081519101f35b6100a1565b610039610bf1565b005b610046600035610095565b806361379cb614610090578063be0cf0721461008b578063bf45c16614610086578063c19d93fb146100815763d826f88f0361000e57610522565b6104ed565b61029e565b610155565b6100c1565b60e01c90565b60405190565b600080fd5b600080fd5b60009103126100b657565b6100a6565b60000190565b346100ef576100d13660046100ab565b6100d9610873565b6100e161009b565b806100eb816100bb565b0390f35b6100a1565b1c90565b90565b61010b90600861011093026100f4565b6100f8565b90565b9061011e91546100fb565b90565b61012c600080610113565b90565b90565b61013b9061012f565b9052565b919061015390600060208501940190610132565b565b34610185576101653660046100ab565b610181610170610121565b61017861009b565b9182918261013f565b0390f35b6100a1565b600080fd5b6101988161012f565b0361019f57565b600080fd5b905035906101b18261018f565b565b90565b6101bf816101b3565b036101c657565b600080fd5b905035906101d8826101b6565b565b600080fd5b600080fd5b600080fd5b909182601f830112156102235781359167ffffffffffffffff831161021e57602001926001830284011161021957565b6101e4565b6101df565b6101da565b916060838303126102765761024082600085016101a4565b9261024e83602083016101cb565b92604082013567ffffffffffffffff81116102715761026d92016101e9565b9091565b61018a565b6100a6565b610284906101b3565b9052565b919061029c9060006020850194019061027b565b565b346102d2576102ce6102bd6102b4366004610228565b92919091610a4c565b6102c561009b565b91829182610288565b0390f35b6100a1565b634e487b7160e01b600052600060045260246000fd5b634e487b7160e01b600052602260045260246000fd5b9060016002830492168015610323575b602083101461031e57565b6102ed565b91607f1691610313565b60209181520190565b600052602060002090565b906000929180549061035c61035583610303565b809461032d565b916001811690816000146103b55750600114610378575b505050565b6103859192939450610336565b916000925b81841061039d5750500190388080610373565b6001816020929593955484860152019101929061038a565b92949550505060ff1916825215156020020190388080610373565b906103da91610341565b90565b601f801991011690565b634e487b7160e01b600052604160045260246000fd5b90610407906103dd565b810190811067ffffffffffffffff82111761042157604052565b6103e7565b9061044661043f9261043661009b565b938480926103d0565b03836103fd565b565b9060001061045c5761045990610426565b90565b6102d7565b61046e6001600090610448565b90565b5190565b60209181520190565b60005b838110610492575050906000910152565b806020918301518185015201610481565b6104c26104cb6020936104d0936104b981610471565b93848093610475565b9586910161047e565b6103dd565b0190565b6104ea91602082019160008184039101526104a3565b90565b3461051d576104fd3660046100ab565b610519610508610461565b61051061009b565b918291826104d4565b0390f35b6100a1565b34610550576105323660046100ab565b61053a610b69565b61054261009b565b8061054c816100bb565b0390f35b6100a1565b9061056861056161009b565b92836103fd565b565b67ffffffffffffffff8111610588576105846020916103dd565b0190565b6103e7565b9061059f61059a8361056a565b610555565b918252565b60007f616e79457865637574696f6e46756e6374696f6e000000000000000000000000910152565b6105d6601461058d565b906105e3602083016105a4565b565b6105ed6105cc565b90565b60001c90565b610602610607916105f0565b6100f8565b90565b61061490546105f6565b90565b906000929180549061063261062b83610303565b8094610475565b9160018116908160001461068b575060011461064e575b505050565b61065b9192939450610336565b916000925b8184106106735750500190388080610649565b60018160209295939554848601520191019290610660565b92949550505060ff1916825215156020020190388080610649565b60209181520190565b90826000939282370152565b91906106d5816106ce816106da956106a6565b80956106af565b6103dd565b0190565b6107086106fd6107159694959360608401908482036000860152610617565b946020830190610132565b60408185039101526106bb565b90565b600052602060002090565b601f602091010490565b1b90565b9190600861074d9102916107476000198461072d565b9261072d565b9181191691161790565b90565b61076e6107696107739261012f565b610757565b61012f565b90565b90565b919061078f61078a6107979361075a565b610776565b908354610731565b9055565b600090565b6107b2916107ac61079b565b91610779565b565b5b8181106107c0575050565b806107ce60006001936107a0565b016107b5565b9190601f81116107e4575b505050565b6107f061081593610718565b9060206107fc84610723565b8301931061081d575b61080e90610723565b01906107b4565b3880806107df565b915061080e81929050610805565b610840600861083a8354610303565b836107d4565b60107f6578656375746564000000000000000000000000000000000000000000000000019055565b6108719061082b565b565b61088361087e6105e5565b610dc8565b600161088f600061060a565b6000916108c9367fd576ec4571d865f5482c985a159db8010ba9f7f0985201cd2ca93bba5b5a4f07946108c061009b565b948594856106de565b0390a16108d66001610868565b565b600090565b60007f76616c69646174655472616e73616374696f6e00000000000000000000000000910152565b61090f601361058d565b9061091c602083016108dd565b565b610926610905565b90565b9291602061094661094e9360408701908782036000890152610617565b940190610132565b565b634e487b7160e01b600052601160045260246000fd5b61096f9061012f565b600019811461097e5760010190565b610950565b60001b90565b9061099660001991610983565b9181191691161790565b906109b56109b06109bc9261075a565b610776565b8254610989565b9055565b6109d560096109cf8354610303565b836107d4565b60127f76616c6964617465640000000000000000000000000000000000000000000000019055565b610a06906109c0565b565b90565b610a1f610a1a610a2492610a08565b610757565b61012f565b90565b610a36610a3c9193929361012f565b9261012f565b8201809211610a4757565b610950565b91610a75939192610a5b6108d8565b50610a6c610a6761091e565b610dc8565b92909192611231565b6001610a81600061060a565b7f950bf585cd9efbe1787dd3e6435f50bed093b98babb460e276d2c633f7b0ef6291610ab7610aae61009b565b92839283610929565b0390a1610ad6610acf610aca600061060a565b610966565b60006109a0565b610ae060016109fd565b610aff42610af942610af3612710610a0b565b90610a27565b90611427565b90565b610b176003610b118354610303565b836107d4565b60067f6e65770000000000000000000000000000000000000000000000000000000000019055565b610b4890610b02565b565b90565b610b61610b5c610b6692610b4a565b610757565b61012f565b90565b610b736001610b3f565b610b87610b806000610b4d565b60006109a0565b565b60007f6163636f756e7400000000000000000000000000000000000000000000000000910152565b610bbe6007602092610475565b610bc781610b89565b0190565b9190610bef906020610be7604086018681036000880152610bb1565b940190610132565b565b34610c287f1475cf49110ef35afefc92dde1984c7d40a8e65a99112746141084e56376447e91610c1f61009b565b91829182610bcb565b0390a1565b606090565b60007f6163636f756e742d72657475726e65642d646174612d68657265000000000000910152565b610c64601a61058d565b90610c7160208301610c32565b565b610c7b610c5a565b90565b5050610c88610c2d565b50610c91610c73565b90565b600090565b60018060a01b031690565b610cad90610c99565b90565b610cb990610ca4565b9052565b9f9e9d9c9b9a9998979695949392919f6080526080516101e001608051810360805160000152610cec916104a3565b9e608051602001610cfc91610132565b608051604001610d0b91610132565b608051606001610d1a91610132565b608051608001610d2991610132565b60805160a001610d3891610132565b60805160c001610d4791610132565b60805160e001610d5691610132565b60805161010001610d6691610132565b60805161012001610d7691610132565b60805161014001610d8691610cb0565b60805161016001610d9691610cb0565b60805161018001610da691610cb0565b6080516101a001610db691610cb0565b6080516101c001610dc691610cb0565b565b610dd061079b565b50610dd961079b565b50610de261079b565b50610deb61079b565b50610df461079b565b50610dfd61079b565b50610e0661079b565b50610e0f61079b565b50610e1861079b565b50610e21610c94565b50610e2a610c94565b50610e33610c94565b50610e3c610c94565b50610e45610c94565b50610e4e6108d8565b505a3a48913080319447914591429046329033923494419743929a9b9c9d99909192939495969798997f7fd2fadb22580f88446f4bb95e2ef0cc7c9ced869ec7bbc96afce6563b758fd69e610ea161009b565b9e8f9e8f9e610eaf9f610cbd565b0390a1565b916020610ed6929493610ecf60408201966000830190610132565b019061027b565b565b600080fd5b600080fd5b610eeb81610ca4565b03610ef257565b600080fd5b90503590610f0482610ee2565b565b600080fd5b67ffffffffffffffff8111610f2957610f256020916103dd565b0190565b6103e7565b90929192610f43610f3e82610f0b565b610555565b93818552602085019082840111610f5f57610f5d926106af565b565b610f06565b9080601f83011215610f8257816020610f7f93359101610f2e565b90565b6101da565b919091610180818403126110e157610fa0610180610555565b92610fae8160008401610ef7565b6000850152610fc081602084016101a4565b6020850152610fd281604084016101a4565b6040850152610fe481606084016101a4565b6060850152610ff681608084016101a4565b60808501526110088160a084016101a4565b60a085015261101a8160c084016101a4565b60c085015261102c8160e084016101a4565b60e085015261010082013567ffffffffffffffff81116110dc5781611052918401610f64565b61010085015261012082013567ffffffffffffffff81116110d75781611079918401610f64565b61012085015261014082013567ffffffffffffffff81116110d257816110a0918401610f64565b61014085015261016082013567ffffffffffffffff81116110cd576110c59201610f64565b610160830152565b610edd565b610edd565b610edd565b610edd565b610ed8565b9060208282031261111757600082013567ffffffffffffffff81116111125761110f9201610f87565b90565b61018a565b6100a6565b6111269051610ca4565b90565b611133905161012f565b90565b5190565b6111596111626020936111679361115081611136565b938480936106a6565b9586910161047e565b6103dd565b0190565b9a99989795939196949290966101808c019760008d0161118a91610cb0565b60208c0161119791610132565b60408b016111a491610132565b60608a016111b191610132565b608089016111be91610132565b60a088016111cb91610132565b60c087016111d891610132565b60e086016111e591610132565b8481036101008601526111f79161113a565b8381036101208501526112099161113a565b82810361014084015261121b9161113a565b9080820390610160015261122e9161113a565b90565b9061127b939291907fb80b6265e61634ae1f2f711376ce825a06f8655583a92b995c2d506a019524179161126f61126661009b565b92839283610eb4565b0390a1908101906110e6565b6112876000820161111c565b61129360208301611129565b906113306112a360408501611129565b936112b060608201611129565b906112bd60808201611129565b6112c960a08301611129565b6112d560c08401611129565b6112e160e08501611129565b906101008501519261012086015194610160610140880151970151977f0eaa55134db56fc26401bde6d5adf5b2691e06d153d390c39c73b766037c6f729c61132761009b565b9c8d9c8d61116b565b0390a1565b90565b63ffffffff60e01b1690565b60e01b90565b61135e61135961136392611335565b611344565b611338565b90565b61137363bf45c16661134a565b90565b90565b61138561138a91611338565b611376565b9052565b90565b61139d6113a29161012f565b61138e565b9052565b602093926113c66004836113be88956113ce97611379565b018092611391565b018092611391565b0190565b60200190565b6113e290516101b3565b90565b6113ff6113fa6113f483611136565b926113d2565b6113d8565b906020811061140d575b5090565b611420906000199060200360080261072d565b1638611409565b9061146861146d926114376108d8565b50611459611443611366565b919361144d61009b565b948593602085016113a6565b602082018103825203826103fd565b6113e5565b9056fea26469706673582212200e3d9e9d7dc1fb7fc07a8990305abbc5257c9219a49a46a30bc8af474e0e7b1b64736f6c63430008170033",
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this code? Is this needed? I would prefer it if we could avoid having a compiled solidity code checked into the repo for unit tests. We deploy contracts in Python integration tests and it is okay to have more things checked there IMO.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is a prestate dump of our pytest. the code is the account.
I will change the test to use the "withCode", and then we no longer need to load the prestate.

t *testing.T
chainContext *ethapi.ChainContext
config *params.ChainConfig
gaspool *core.GasPool
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think gaspool belongs to a testContext as it is pretty likely you will want a test with, for example, two transactions. I think gaspool is designed to track a single transaction's gas.

"testing"
)

const PREDEPLOYED_SENDER = "0xed0a7aabc745fe5d8bc6ad625c767df86044d049"
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This address is usually overridden anyways, let's make it 0x777777....777777 for clarity?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is the real address of our predeployed sample account... will get removed when I use "withCode" instead.


func TestValidation_account_revert(t *testing.T) {
validatePhase(newTestContext(t).withCode(PREDEPLOYED_SENDER, []byte{
byte(vm.PUSH1), 0, byte(vm.DUP1), byte(vm.REVERT),
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why not use createCode everywhere you are building code from opcodes?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes.. I simply wrote this first, and then created createCode, and dind't go back to fix.

validatePhase(newTestContext(t), types.Rip7560AccountAbstractionTx{
ValidationGas: uint64(1000000000),
GasFeeCap: big.NewInt(1000000000),
}, "")
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P.S. Checking "error is an empty string" is not pretty, should check there is no error IMO.

run: go mod download

- name: Test
run: go test ./tests/rip7560
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please make the tests more verbose

@forshtat forshtat marked this pull request as ready for review June 3, 2024 16:23
@forshtat forshtat merged this pull request into RIP-7560-revision-2 Jun 3, 2024
1 check passed
@forshtat forshtat deleted the test-ApplyRip7560ValidationPhases branch June 3, 2024 16:24
drortirosh added a commit that referenced this pull request Jun 3, 2024
* initial UT for ApplyRip7560ValidationPhases

test ./tests/rip7560/

* refactor test context

* add some error tests

* returnData helper

* github actions for rip7560 tests

* update path

* refactor test utils

* refactor textContextBuilder

* remove prestate json.

* pr comments
shahafn added a commit that referenced this pull request Jan 7, 2025
…port (#49)

* WIP: manually bring over RIP-7560 related code; compiles but does not run

* TMP: check in commands to run the validator and beacon chain node

* TMP: check in ignored files

* Create a separate 'cleanup.sh' command

* Set slot time to 3 seconds; check in "--dev" mode idea command

* Remove code related to EOA-based RIP-7560 transactions

* Remove BigNonce and NonceManager logic as it has moved to separate RIP

* Fix issue: charging 'from' address (EntryPoint) for inner frames gas

* remove expectedRevenue

* remove StateTransition rip7560Frame bool

is msg.isRip7560Frame,
which allows usage of plain ApplyMessage

* add paymaster, deployer optional params (#4)

* Remove unused EOA-era function

* Fix comment

* Test ApplyRip7560ValidationPhases (#5)

* initial UT for ApplyRip7560ValidationPhases

test ./tests/rip7560/

* refactor test context

* add some error tests

* returnData helper

* github actions for rip7560 tests

* update path

* refactor test utils

* refactor textContextBuilder

* remove prestate json.

* pr comments

* merge master (#6)

* initial Process test (#7)

initial test for the full "Process" call, to handle mixed legacy and AA
transactions

* remove stub message (#8)

* remove stub message

was created just to create the vm.Txontext

* update

* WIP: create the 'debug_traceRip7560Validation' API

* WIP: Execute 'ApplyRip7560ValidationPhases' with 'rip7560Validation' tracer

* refactor dev genesis (#10)

* check error

* update tests, match return values to RIP

* refactor: test HandleRip7560Transactions

(instead of individual validation methods)

* test nonce

* added time-range tests

* pr issues

* initial paymaster test flows

* returnWithData, revertWithData

arbitrary-length return or revert
(currently, can't test it, since we check "error", and actual revert
data is hidden. will be probably needed when testing paymaster.)

* test paymaster validations

* paymaster time-range checking

* pr reviews

* test deployer flows

* initial paymaster test flows

* returnWithData, revertWithData

arbitrary-length return or revert
(currently, can't test it, since we check "error", and actual revert
data is hidden. will be probably needed when testing paymaster.)

* test paymaster validations

* paymaster time-range checking

* pr reviews

* AA-247: Implement tracer (#11)

* WIP: bring in old 4337 Bundler Collector Tracer code (compiles)

* Fix runtime errors (WIP)

* Adding missing fields, using OnEnter hook

* Fix using [0:20] bytes of "PaymasterData" instead of the new "Paymaster" field

* Fix banned opcode checks for Factory frame

* Add 'nil' check

---------

Co-authored-by: shahafn <[email protected]>

* Fix syntax error

* I don't understand why would we need & 0xFF here, please elaborate

* Fixing validationData packing

* Fix: do not lose the AA tx application error; fix lost 'nonce' value

* Move the 'TraceRip7560Validation' API to the 'eth' namespace, from the 'debug'

* check gas, nonce form ApplyRip7560ValidationPhases (#16)

move validations into the validation phase.
note that it breaks some tests which rely on wrong nonce.

* fix nonce, entrypoint (#17)

- add correct sender address for AA transactions (AA_ENTRY_POINT, and AA_CREATOR for the deployment frame)
- disable nonce increment in TransitionDb if the sender is either of these magic addresses
- add AA-specific nonce increment for the transaction sender.

* AA-403: Fix RIP-7560 transaction hash calculation (#19)

* AA-378: Completing native tracer (#15)

* Renaming, Adding tstore/tload support

* Fixing tracer wip

* Adding handling of value, onExit

* Removing method id

* Fix abi encoding of nil fields

* typo

* Removing logs

* AA-394 receipt fields (#21)

* handle transaction receipt status
  effectiveGasUsed
  refund excess to account/paymaster

* AA-381: Create a "pull bundle" block building mode and a 'getRip7560Bundle' method (#18)

* Fix crash

* getTransaction (#24)

* AA-257: Return useful errors and on-chain revert reasons to the RPC response message (#22)

* Propagate validation on-chain revert reasons to the RPC response message
* Explicit error for missing both deployed code and factory
* Bubble up the real 'RevertReason' through the 'TraceRip7560Validation' API

* AA-411: Parse calls to EntryPoint address for account/paymaster 'acceptance' (#23)

* AA-411: Parse calls to EntryPoint address for account/paymaster 'acceptance'
* Extract ABI encoding&decoding into file; use ABI instead of manual bit parsing
* Remove rudimentary mentions of "magic" in RIP-7560 related code
* Copy the "evm.Config.Tracer" instead of overriding the original object
* Remove depth check, compare addresses instead

* AA-336 Revert excution when postOp reverts (#29)

* Revert excution when postOp reverts

* Fixing execution,postOp

* Adding statedb access list functions to be able to snapshot/revert

* AA-412: Implement RIP-7712 NonceManager support (#27)

* Add RIP-7712 nonce field to the RIP-7560 transaction type

* Do not increment legacy nonce for RIP-7712 transactions

* Handle on-chain NonceManager revert

* AA-419: "signature" -> "authorizationData" & "calldata" -> "executionData" (#30)

* AA-419: "signature" -> "authorizationData", "calldata" -> "executionData"

* AA-417: Fix ignored paymaster revert (#31)

* AA-419: "signature" -> "authorizationData", "calldata" -> "executionData"

* AA-422: Fix transaction hash function - add all missing fields (#32)

* AA-422: Fix transaction hash function - add all missing fields

* AA-425: Directly execute call frames without "ApplyMessage" wrapper & AA-432: Penalization gas postOp observability (#33)

* CallFrame

* move checkNonce

* refactor Nonce handling

* execution phase

* refactor prepare-msgs

* refactor json-abi

* fix errors

* Make 'sumGas' accept vararg inputs

* Extract 'performNonceCheckFrameRip7712' function

* Update comment

* Remove rudimentary modifications to the original ApplyMessage flow

* Account for CallDataGas in 'postOp'; move code to Tx type interface

---------

Co-authored-by: Alex Forshtat <[email protected]>

* AA-344: During block building simply skip invalid RIP-7560 transactions (#35)

* AA-344: (WIP) During block building simply skip invalid RIP-7560 transactions

* Create 'eth_getRip7560TransactionDebugInfo' API to observe late invalidation

* Remove unnecessary override

* AA-382: Inject system events (#34)

* WIP: Inject system events

* WIP: Encode the event correctly and pass relevant data

* Implement revert reason system events

* Fix crash

* Fix unhandled error

* Remove unncecessary gas fields, expose failure type in status

* Add 'ExecutionStatusExecutionAndPostOpFailure' status

* Add 'RIP7560AccountDeployed' event; add 'nonceKey' event parameter; cleanup

* AA-402: 'CallDataGasCost' is not a separate component of 'TotalGasLimit' (#36)

* AA-402: (WIP) 'CallDataGasCost' is not a separate component of 'TotalGasLimit'

* Remove

* Fix 'CumulativeGasUsed' not being calculated correctly (#38)

* Fix 'CumulativeGasUsed' not being calculated correctly

* call Prepare to initialize warm addresses

* remove prints

---------

Co-authored-by: Dror Tirosh <[email protected]>

* AA-445: Charge validation gas for calldata and repurpose 'CallDataUsedGas' as 'PreTransactionGasCost' (#39)

* AA-408 deduct gas for aatx (#28)

* AA-408 deduct gas, pay coinbase

* Fix 'CumulativeGasUsed' not being calculated correctly

* call Prepare to initialize warm addresses

* remove prints

* reformat

* PR comments

---------

Co-authored-by: Alex Forshtat <[email protected]>

* AA-414: Consume block gas limit for RIP-7560 transactions

* Remove unused function; extract 'validationPhaseUsedGas'

* Expose gas limit reached error through the debug API

* AA-405: Perform multiple static validations on an RIP-7560 transaction (#42)

* Remove print and comment

* Rename

* AA-446: Separate 'nonce' into two 256-bit values 'nonceKey' and 'nonceSequence' (#40)

* AA-446: Separate 'nonce' into two 256-bit values 'nonceKey' and 'nonceSequence'

* Fix nonce manager address

* Print nonce manager address

---------

Co-authored-by: shahafn <[email protected]>

* Include ERC-7562 tracer

Remove checking the 'OnlyTopCall' as it doesn't fit the use-case

Remove most of the string-based opcode manipulation

Fix

Construct the correct tracer object

Bring in 'OnTxEnd' and 'GetResult' functions

Missing 'OnOpcode' hook

native bundlerCollectorTracer

Rename to erc7562Tracer

Fixing tracer wip

WIP: Make 'allowed opcodes' a configurable parameter with a hex string input

WIP: Remove all inefficient code working with opcodes as strings

erc7562 tracer wip

Fixing pointer

Fixing contract size type

Fixing handleExtOpcodes

Fixing stack pointers

Changing UsedOpcodes type

Fixing ignoredOpcodes

Adding isCall(), fixing PR comments

Remving callTracer, callTracerConfig, adding erc7562TracerConfig

Detecting OOG in OnExit instead of OnOpcode

Removing unused function

Removing unused

Changing Keccak member from array to mapping

Replacing lastSeenOpcodes for lastOpWithStack

---------

Co-authored-by: Alex Forshtat <[email protected]>
Co-authored-by: Dror Tirosh <[email protected]>
Co-authored-by: Dror Tirosh <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants