If you try and do a difficulty of 1 the UInt256 class used for comparison throws
an error because 2^256 is 33 bytes. Instead use 2^256-1 which is 32.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
When a chainID is not specifed in a genesis file for the purposes of the chainid
opcode we interpret that to mean chain ID 0.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
The revert reason returned from the EVM has been changed to a bytes value to
better represent the specification (of it being an ABI encoded data block).
This has meant that the TransactionReceipt returned from
ethGetTransactionReceipt now provides a hex-encoded string (rather than UTF-8).
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
This reverts commit 814b36e4
The needed chantes to get rid of Instant.now (which is also needed to get rid
of the wall clock dependency) are too deep and intrusive into IBFT to try and
speed patch them in that some APIs require re-work, so in the interst of test
stability this gets sheleved until it is all ready.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
* Renames various eea methods to priv methods, with associated docs
* Restructures packages
* Adds priv commandline switch
* Refactors eea_getTransactionCount and eea_getPrivateTransaction to priv
* Changes package structure and fixes TODO
* Remove whitespace
* Update docs with new method names
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
To allow us to reset the timestamp in the blockchain for Retesteth support
we need to pass a Clock to affected APIs and use that instead of the static method
System.currentTimeMillis(). The most consistent way to do this that will ensure
that the API does not sneak back in is to ban the method via ErrorProne.
TestClock.fixed() was altered to return the "now" time of the first time the fixed clock was requested, needed for many header validation tasks validating headers are not from the future.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
Note that EIP-1706 was already implemented elsewhere and this is
just the gas calculation updates.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
Reduce the non-zero byte of intrinsic gas cost from 68 to 16.
Keep all other values the same.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
Retesteh has some genesis file that specify a nonce in the relevant accounts.
Add support to the GenesisState class to pre-set nonces.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
Retesteth waits a second for a 100 Continue when setting chain params. This
significantly slows down the test run. Vertx can do it for us automatically.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
Add minimum remaining gas check to exceptional halt reasons. Configure it
to zero pre-istanbul and 2300 for istanbul.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
Add configurability to how the ECADD, ECMUL, and Pairing check precompiled
contracts calculate their gas price, and expose static methods for byzantium
and istanbul era prices.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
* Rename privacyGroupId to createPrivacyGroupId
Also add test for eea_createPrivacyGroup
* Update the JsonRpcError list
* Update orion version
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
* [PAN-2829] Add accountVersion to MessageFrame
Add the current contract's version to the message frame.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
* Fix bugs
Fix remote connection fraction calculation (order of operations bug),
remove early return, allow all remote connections to be prohibited,
change disconnect reason to TOO_MANY_PEERS.
* Fix comment
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
* [PAN-1683] Limit the fraction of wire connections initiated by peers
To protect against eclipse attacks, we should not allow all of our wire connections to be initiated from network peers. Some fraction of wire connections should be initiated by our node by connecting to peers in our discovery peer table. This PR ensures the fraction abides the limit.
* change fraction default value and add tests
* make fraction of remote wire connections configurable
- add a cli option to configure the fraction: `--fraction-remote-connections-allowed`
- introduce `Fraction` class to handle the conversion of the CLI option to a double and check if the value is between 0.0 and 1.0
- add tests
- fix broken tests
* remove unused local variable
* fix RunnerTest
* set fraction to 1.0 in PantheonFactoryConfigurationBuilder
* update test
* Introduce --limit-remote-wire-connections-enabled
* fix unused field
* fix conflict
* Update ethereum/p2p/src/main/java/tech/pegasys/pantheon/ethereum/p2p/rlpx/RlpxAgent.java
Co-Authored-By: Danno Ferrin <danno.ferrin@shemnon.com>
* Update ethereum/p2p/src/main/java/tech/pegasys/pantheon/ethereum/p2p/rlpx/RlpxAgent.java
Co-Authored-By: Danno Ferrin <danno.ferrin@shemnon.com>
* Update ethereum/p2p/src/main/java/tech/pegasys/pantheon/ethereum/p2p/rlpx/RlpxAgent.java
Co-Authored-By: Danno Ferrin <danno.ferrin@shemnon.com>
* fix PR discussion and tests
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
EIP-1602 specifies a new validation step. Add hooks for those to occur.
Move contract size checking into the validation hooks.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
Initial EIP-1702 versioning code. Version internally is an `int` for Java
reasons. In the future if the versions become sparse or large we will create a
"proxy" version index by putting the standardized indexes into an enum and
using the enum ordinal instead.
Reference tests all pass (hence the WorldStateMock if block) and
GenesisStateTest has an explicit version test now.
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>