* create file if logBloom-current.cache is missing
Signed-off-by: Karim TAAM <karim.t2am@gmail.com>
* update populateLatestSegment in order to resolve the missing logs issue
Signed-off-by: Karim TAAM <karim.t2am@gmail.com>
* add lock for populateLatestSegment
Signed-off-by: Karim TAAM <karim.t2am@gmail.com>
LogsQuery may get passed in addresses in lists and topics in lists that do
not tolerate being checked for null members. This is an unexpected and
subtle situation hence the long comment.
This new test covers this case as it passes in null-intolerant lists.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
* remove max pivot block resets during fast sync
* increase max retry number and fix test
* change logs in the handleFailure method
* change logs related to suspicious number of retries
Signed-off-by: Karim TAAM <karim.t2am@gmail.com>
* Update SLOAD_GAS cost to 200 in Aztlan Gas Calculator
Change SLOAD_GAS cost in Aztlan Gas Calculator from 800 to 200 and
update functions that use SLOAD_GAS.
Signed-off-by: edwardmack <ed@edwardmack.com>
* Update SLOAD_GAS cost to 200 in Aztlan Gas Calculator
Change SLOAD_GAS cost in Aztlan Gas Calculator from 800 to 200 and
update functions that use SLOAD_GAS.
Signed-off-by: edwardmack <ed@edwardmack.com>
Signed-off-by: Edward Mack <ed@edwardmack.com>
* remove overrides
removed overrides of calculateStorageCost and
calculateStorageRefundAmount in AztlanGasCalculator because these were
causing aztlan fork not to sync with kotti testnet.
Signed-off-by: Edward Mack <ed@edwardmack.com>
* merge
Signed-off-by: Edward Mack <ed@edwardmack.com>
Do a cursory cache check at start up (file is present and correct size)
instead of re-generating the cache at startup.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
Make sure we cache the current cache segment with all of the data from
the beginning of the segment. Use a flip file approach since it will be
a partial file until done.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
Co-authored-by: Abdelhamid Bakhta <45264458+abdelhamidbakhta@users.noreply.github.com>
* rename the method isPersistingState to isPersistingPrivateState because that is what it is used for
Signed-off-by: Stefan Pingel <stefan.pingel@consensys.net>
* rename the method isPersistingState to isPersistingPrivateState because that is what it is used for
Signed-off-by: Stefan Pingel <stefan.pingel@consensys.net>
* rename the method isPersistingState to isPersistingPrivateState because that is what it is used for
Signed-off-by: Stefan Pingel <stefan.pingel@consensys.net>
* pop flat trace context when handling halts
* Better detection of precompiled and non-executed contracts
* correct from address when calling in init code
* fix some exotic nesting cases
* correct from field for init code calls at depth >1
* correct cost on a non-call
* changelog and notes
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
- Correct Reporting of reverts in nested call
- correct reporting and handling of value transfer in nested calls
- correct handling of precompiles via DELEGATECALL & CALLCODE
- Addition of precompiled contract gas costs
- Re-work handling of storage writes
- Initial handling of gas refunds
- fix bug in DELEGATECALL tests, we don't need gas in the stack
* this has a cascading effect on balances in diff tests
- rework depth detection in flat trace
- two new tests blocks
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
* correct refund addresses
* correct returned memory from static precompiled calls.
* update integration test
* precompiles sometimes get plain old CALLs
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
This PR introduces functionality to conform with ECIP-1061
https://ecips.ethereumclassic.org/ECIPs/ecip-1061
Signed-off-by: edwardmack <ed@edwardmack.com>
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
Co-authored-by: Danno Ferrin <danno.ferrin@shemnon.com>
* Handle CREATE and CREATE2 in flat trace
* precompile calls don't generate traces
* Handle REVERT in output and result nodes.
* output doesn't need to be held behind a supplier
* Handle padded output values when end is past memory
* Store memory in vm trace for MLOADs
* CREATE and CREATE2 store memory in vm-trace
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
* Fix strategy for getting next nonce for sender in `PendingTransactions`.
Added test.
Signed-off-by: Abdelhamid Bakhta <abdelhamid.bakhta@consensys.net>
* Introduced `TransactionsForSenderInfo` structure to have a less naive implementation, more robust against load testing.
A queue of gaps between used nonces is maintained.
`getNextNonceForSender` has been updated and have the following logic:
- if no infos corresponding to the nonce returns an empty optional
- if gap list is not empty returns the lowest nonce in the gap
- else returns the max nonce + 1
Signed-off-by: Abdelhamid Bakhta <abdelhamid.bakhta@consensys.net>
* spotless
Signed-off-by: Abdelhamid Bakhta <abdelhamid.bakhta@consensys.net>
* spotless
Signed-off-by: Abdelhamid Bakhta <abdelhamid.bakhta@consensys.net>
* added test
Signed-off-by: Abdelhamid Bakhta <abdelhamid.bakhta@consensys.net>
* spotless
Signed-off-by: Abdelhamid Bakhta <abdelhamid.bakhta@consensys.net>
* Handle CREATE and CREATE2 in flat trace
Handle create and create2 operations. Some other tests also got adjusted
as the source accounts were running out of test ether. Bumping up the
value in the genesis caused the statediff values to also go up.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
The iterative look back mechanism flat trace was using was missing
many of the nesting subtlties, so a stack based calculation is used.
A new test case with two levels of calls is also introduced.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
Switch the EVM Memory to a copy on write structure, so when the trace
reads the memory they don't have to copy mutable bytes but can instead
simply use the value as immutable.
Also, fix a state diff bug when an account is deleted that was also just
created in the TX don't report it as an all equal diff, as well as new accounts storage diffs.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
Following cli options are added to enable TLS client authentication and trusting client certificates.
--rpc-http-tls-client-auth-enabled - Enable TLS client authentication for the JSON-RPC HTTP service (default: false)
--rpc-http-tls-known-clients-file - Path to file containing client's certificate common name and fingerprint for client authentication.
--rpc-http-tls-ca-clients-enabled - Enable to accept clients certificate signed by a valid CA for client authentication (default: false)
If client-auth is enabled, then user must either enable CA signed clients OR provide a known-clients file. An error is reported if both CA signed clients is disabled and known-clients file is not specified.
Signed-off-by: Usman Saleem <usman@usmans.info>
When we calculate the cost of a SSTORE in trace we need to consider the
original value as of when the last transaction finished, not when the
whole block started.
To create a test for this the test blockchain also needed to be upgraded
to Istanbul. This resulted in a large number of cost only changes.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
-- SelfSignedP12Certificate in testSupport for JSON-RPC HTTP TLS testing
-- Generate self signed certificates in PKCS12 format with SAN extensions for testing
-- Remove pre-generated key stores and trust stores used by TLS tests
Signed-off-by: Usman Saleem <usman@usmans.info>
Now that BlockTracer has mutable state we cannot re-use it across
requests, instead we need to create a new one for each call.
To support this spec tests were upgraded to allow batched requests and
responses, which are processed sequentially.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
* Make priv_call use the PrivacyController
Signed-off-by: Stefan Pingel <stefan.pingel@consensys.net>
* minor changes after review
Signed-off-by: Stefan Pingel <stefan.pingel@consensys.net>
* Add tests to FilterParameter to demonstrate loading topics from JSON
Demonstrate that filter topics in JSON format consistent with eth_newFilter RPC requests
will be correctly loaded into the FilterParameter topics.
Previous tests were loading from an internal structure, which makes it difficult to see
coverage of scenarios.
- [] - matches anything
- [A] matches A in the first position, and anything after
- [A, B] - A in first position, and B in second position, then anything after
- [null, B] - matches anything in first position, and B in second position, and anything after.
- [[A,B],[A,B]] - Matches A OR B in first position, and A OR B in second position, and anything after.
Fixes Jira: [BESU-182]
Signed-off-by: Paul Harris <paul.harris@consensys.net>
Squash and merge
Signed-off-by: Sally MacFarlane <sally.macfarlane@consensys.net>
- Flat trace
* Support all call types
* Correct input for new tests
* Correctly report out of gas
* Report null result when no result but no error
- Remove need to keep messageFrame directly in traceframe
- Clean up StateDiffGenerator style
- Tighten type of updated accounts
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
* Handling of contracts that produce logs.
Added smart contracts to produce log records.
Fixes https://pegasys1.atlassian.net/browse/PIE-2224
Signed-off-by: Abdelhamid Bakhta <abdelhamid.bakhta@consensys.net>
* State diff
All but balances work at this point. And it has something to do with
upfront gas costs.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
* fix the balances bug
There was also a chained transactions bug. To address this I create a
new WorldUpdater for each iteration of a transaction through the block.
The current world updater has the new state, the prior the old one.
Diffs just fall out after that.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
* get rid of midBlock state, it's unneeded with the chained updaters.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
* remove rootWorld method, old code from a prior attempt.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
* remove println
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
* spotless
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
* spotless, comments, and cleanup
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
* spotless keeps missing this.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
* javadoc
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
* fix broken reference tests
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
* spotless
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
* tighten access
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
Generate the blocks.bin file from the json source. The approach used is
to just run the besu import commands as a part of the build script.
This removes a magical binary file from the test files that is now
generated from human readable json.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
Create plugin APIs for the block body (just transactions and ommers) and
add the block body to the block propagation listener context.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>