* feat: add EIP-7702
* fix goimport
* add unit tests
* add api test
* sync txpool update
* update generated code
* make code readable
* fix goimport
* fix TestAsyncChecker unit test
* add AuthorizationList in fuzz tests for completeness sake
* add EuclidV2 test, EIP-7702 transaction in TestT8n
* clean up logs
* bump version
* fix TestAsyncChecker
* Revert "fix TestAsyncChecker"
This reverts commit 314478303d4a504a3948bd6595568916ba7d82f0.
* accept eip-7702 txns only after enabling eip-7702
* revert IntrinsicGas param name from setCodeAuthorizations to authList
* fix a bug
* align upstream implementation in Encoding Receipts
* fix one test case
* fix tracer
* return precode copy
* support setcode tx in EstimateGas and add unit tests
* add TestValidateAuthorizations
* poseidon hash fix
* migrate a fix before the fix pr is merged
* support setcode type transactions in TransactionData
* chore: auto version bump [bot]
* add a nonce-gapped-auth-does-not-block-pending-tx unit test
* make the auth invalid
* Apply suggestions from code review
* change usedAndLeftSlots and knownConflicts to util functions
* add comments about different return of applyAuthorization
* remove gencodec:required in transaction signatures
* fix goimport
* update StructLogger and AccessListTracer
* fix a bug
* fix flaky test
---------
Co-authored-by: colinlyguo <colinlyguo@users.noreply.github.com>
Co-authored-by: Péter Garamvölgyi <peter@scroll.io>
This change introduces 2 new optional methods; `enter()` and `exit()` for js tracers, and makes `step()` optiona. The two new methods are invoked when entering and exiting a call frame (but not invoked for the outermost scope, which has it's own methods). Currently these are the data fields passed to each of them:
enter: type (opcode), from, to, input, gas, value
exit: output, gasUsed, error
The PR also comes with a re-write of the callTracer. As a backup we keep the previous tracing script under the name `callTracerLegacy`. Behaviour of both tracers are equivalent for the most part, although there are some small differences (improvements), where the new tracer is more correct / has more information.
Fixes the CaptureStart api to include the EVM, thus being able to set the statedb early on. This pr also exposes the struct we used internally in the interpreter to encapsulate the contract, mem, stack, rstack, so we pass it as a single struct to the tracer, and removes the error returns on the capture methods.
* core/vm: use fixed uint256 library instead of big
* core/vm: remove intpools
* core/vm: upgrade uint256, fixes uint256.NewFromBig
* core/vm: use uint256.Int by value in Stack
* core/vm: upgrade uint256 to v1.0.0
* core/vm: don't preallocate space for 1024 stack items (only 16)
Co-authored-by: Martin Holst Swende <martin@swende.se>
This PR adds a new fork which disables EIP-1283. Internally it's called Petersburg,
but the genesis/config field is ConstantinopleFix.
The block numbers are:
7280000 for Constantinople on Mainnet
7280000 for ConstantinopleFix on Mainnet
4939394 for ConstantinopleFix on Ropsten
9999999 for ConstantinopleFix on Rinkeby (real number decided later)
This PR also defaults to using the same ConstantinopleFix number as whatever
Constantinople is set to. That is, it will default to mainnet behaviour if ConstantinopleFix
is not set.This means that for private networks which have already transitioned
to Constantinople, this PR will break the network unless ConstantinopleFix is
explicitly set!