* replace sha256 with pedersen_hash
* fix: prevent an OOB
* workaround timeout in unit test
* update go-ipa and reduce the timeout
* fix for unit tests: do not call NewAccessWitness in NewEVMTxContext (#49)
* potential fix: do not call NewAccessWitness in NewEVMTxContext
* more fixes: check for the existence of Accesses
* fix absence of witness in copy
* fix another witness issue
* workaround: ensure the prefetcher is off in verkle mode
* fix the remaining issues in tests
* review feedback
* fix witness allocation in stateless test
* make push dynamically-charged. charge witness gas costs for push. refactor evm witness gas charging to move logic for touching a range of bytecode into a helper method 'touchEachChunksAndChargeGas'
* add witness gas calculation for CodeCopy, ExtCodeCopy, SLoad back to gas_table.go
* witness gas charging for CALL
* remove explicit reference to evm.TxContext
* core/vm: make touchEachChunksAndCharge gas handle nil code value
* core/vm: call implementation, separate out witnesses into touch/set
* some fixes
* remove witness touching from opCall: this will go in evm.go
* remove witness touching for call from gas_table.go
* (hopefully) fix tests
* add SSTORE witness charging that was removed mistakenly
* charge witness gas for call
* clean up and comment touchEachChunksAndChargeGas
* make suggested changes
* address remaining points
* fix build issues
* remove double-charging for contract creation witness gas charging
upgrade to latest go-verkle
update go-verkle to get more fixes
simplify code by removing all stateless references (#25)
fix verkle proof test by enforcing values alignment to 32 bytes
remove unneeded KZG tag
fix the stateless test
Move AccessWitness into StateDB (#27)
* move AccessWitness into StateDB
* set Accesses in TxContext constructor
* Ensures that a statedb is initialized with a witness
* copy AccessWitness in StateDB.Copy. use copied state in miner worker.commit.
* remove redundant line
Co-authored-by: Guillaume Ballet <3272758+gballet@users.noreply.github.com>
Fix contract creation issue
When we map a file for generating the DAG, we do a simple truncate to e.g. 1Gb. This is fine, even if we have nowhere near 1Gb disk available, as the actual file doesn't take up the full 1Gb, merely a few bytes. When we start generating into it, however, it eventually crashes with a unexpected fault address .
This change fixes it (on linux systems) by using the Fallocate syscall, which preallocates suffcient space on disk to avoid that situation.
Co-authored-by: Felix Lange <fjl@twurst.com>
This change adds the --catalyst flag, enabling an RPC API for eth2 integration.
In this initial version, catalyst mode also disables all peer-to-peer networking.
Co-authored-by: Mikhail Kalinin <noblesse.knight@gmail.com>
Co-authored-by: Felix Lange <fjl@twurst.com>
The PR implements the --miner.notify.full flag that enables full pending block
notifications. When this flag is used, the block notifications sent to mining
endpoints contain the complete block header JSON instead of a work package
array.
Co-authored-by: AlexSSD7 <alexandersadovskyi7@protonmail.com>
Co-authored-by: Martin Holst Swende <martin@swende.se>
The PR makes use of the stacktrie, which is is more lenient on resource consumption, than the regular trie, in cases where we only need it for DeriveSha
This PR implements the following modifications
- Don't shortcut check if block is present, thus avoid disk lookup
- Don't check hash ancestry in early-check (it's still done in parallel checker)
- Don't check time.Now for every single header
Charts and background info can be found here: https://github.com/holiman/headerimport/blob/main/README.md
With these changes, writing 1M headers goes down to from 80s to 62s.
This PR adds re-written difficulty calculators, which are based on uint256. It also adds a fuzzer + oss-fuzz integration for the new fuzzer. It does differential fuzzing between the new and old calculators.
Note: this PR does not actually enable the new calculators.
* consensus/ethash: only use *reflect.SliceHeader, not reflect.SliceHeader. See comment here: https://github.com/golang/go/issues/40397\#issuecomment-663748689
* consensus/ethash: pr feedback from @mdempsky, makes a copy of dest such that is not mutated
* consensus/ethash: remove noop assign
* consensus/ethash: apply same fix to another location
Co-authored-by: Péter Szilágyi <peterke@gmail.com>
Co-authored-by: Martin Holst Swende <martin@swende.se>
The original idea behind this change was to remove a use of the
deprecated CancelRequest method. Simply removing it would've been an
option, but I couldn't resist and did a bit of a refactoring instead.
All remote sealing code was contained in a single giant function. Remote
sealing is now extracted into its own object, remoteSealer.
* travis: Enable ARM support
* Include fixes from 20039
* Add a trace to debug the invalid lookup issue
* Try increasing the timeout to see if the arm test passes
* Investigate the resolver issue
* Increase arm64 timeout for clique test
* increase timeout in tests for arm64
* Only test the failing tests
* Review feedback: don't export epsilon
* Remove investigation tricks+include fjl's feeback
* Revert the retry ahead of using the mock resolver
* Fix rebase errors