* eth-sign: initial implementation
* sighash: pre-refactor
* sighash: refactor, all old tests pass
* sighash: test ovmsigner code paths for eip155 and eth_sign
* sighash: tx serialization tests
* sighash: refactor to sign bytes
* common/varbytes: use varbytes serialization from btcd
* transactionmeta: implement and test
* rawdb: add new index
* types/transaction: use txmeta
* blockchain: index tx meta on new block
* rpc: fix sendrawethsigntransaction docstring
* meta test: remove dead code
* ethapi: clean up comment
* lint: fix
* txmeta: clean up compares
* ethapi: remove rlp tag
* signer: remove rlp encoding tags from struct
* types: use factory pattern for getting sighash type
* sighash: migrate to using const
* tx pool: use ovmsigner for tx validation
* tx signing: fix eth_sign serialization
* sighash: new version
* sighash: commit to chainid
* sighash: bugfixes
* core/types: prevent panic on tx sort
* core/types: rename to transaction_meta
* core/blockchain: index txmeta
* sighash: no native value
* ethapi: use ovm signer
* sighash: move chainid
* Adding L1RollupTxId field to Transactions
* Adding rollup transactions signing key config and bug fixing within api.go. Signing key and endpoint will be removed when go handles batch fetching
* Adding L1MessageSender to Transaction
* Adding logic to omit L1MessageSender in encoding / decoding when nil and never use it in hash computation
Co-authored-by: ben-chain <ben@pseudonym.party>
This PR adds some hardening in the lower levels of the protocol stack, to bail early on invalid data. Primarily, attacks that this PR protects against are on the "annoyance"-level, which would otherwise write a couple of megabytes of data into the log output, which is a bit resource intensive.
This commit adds pluggable consensus engines to go-ethereum. In short, it
introduces a generic consensus interface, and refactors the entire codebase to
use this interface.
* accounts, cmd, eth, ethdb: port logs over to new system
* ethdb: drop concept of cache distribution between dbs
* eth: fix some log nitpicks to make them nicer
Reworked the EVM gas instructions to use 64bit integers rather than
arbitrary size big ints. All gas operations, be it additions,
multiplications or divisions, are checked and guarded against 64 bit
integer overflows.
In additon, most of the protocol paramaters in the params package have
been converted to uint64 and are now constants rather than variables.
* common/math: added overflow check ops
* core: vmenv, env renamed to evm
* eth, internal/ethapi, les: unmetered eth_call and cancel methods
* core/vm: implemented big.Int pool for evm instructions
* core/vm: unexported intPool methods & verification methods
* core/vm: added memoryGasCost overflow check and test
Reworked the EVM gas instructions to use 64bit integers rather than
arbitrary size big ints. All gas operations, be it additions,
multiplications or divisions, are checked and guarded against 64 bit
integer overflows.
In additon, most of the protocol paramaters in the params package have
been converted to uint64 and are now constants rather than variables.
* common/math: added overflow check ops
* core: vmenv, env renamed to evm
* eth, internal/ethapi, les: unmetered eth_call and cancel methods
* core/vm: implemented big.Int pool for evm instructions
* core/vm: unexported intPool methods & verification methods
* core/vm: added memoryGasCost overflow check and test
This commit implements EIP158 part 1, 2, 3 & 4
1. If an account is empty it's no longer written to the trie. An empty
account is defined as (balance=0, nonce=0, storage=0, code=0).
2. Delete an empty account if it's touched
3. An empty account is redefined as either non-existent or empty.
4. Zero value calls and zero value suicides no longer consume the 25k
reation costs.
params: moved core/config to params
Signed-off-by: Jeffrey Wilcke <jeffrey@ethereum.org>
TestMadeupParentBlockChainAttack has been deleted because it was too
hard to port and the attack that it checks the prevention of is being
averted in a different way (through a protocol change).