* 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
* Remove broken gas metering attempt
* Add newline to fix lint
* hardcode return value of eth_estimateGas to gas limit
* evm: fix log message
* state manager: safer calling
* rpc: leave comment to help future debugging
Co-authored-by: Karl Floersch <karl@karlfloersch.com>
Co-authored-by: Kevin Ho <kevinjho1996@gmail.com>
* Making geth only update timestamp when it is over 600s older than current timestamp.
* Commenting out logic check to validate timestamp works the way it no longer works
* Get basic getStorage/setStorage stubs working
* Clean up tests
* Add state_manager
* Add StateManager set & getStorage
* Add state mananger create function
* Add get & increment nonce
* Add getCodeContractBytecode
* Add GetCodeContractHash
* Add getCodeContractHash to the state manager
* Add associateCodeContract to state manager
* Pass the tests
* go fmt
* Add stateTransition to test with
* Fix tests
* Test deploying contract with transition state
* Call executeTransaction on contract deployment
* Added ExecutionManager deployment
* Get contract deployments working
* Cleanup logging
* Get stubbed ExecutionManager working
* Get a simple contract to deploy through the ExecutionManager
* Refactor simpleAbiEncode
* Revert unnecessary changes
* Remove comments
* Revert changes outside of this PR
* Revert changes outside of this PR
* Revert changes outside of this PR
* Fix broken tests
* Move OVM bytecode & ABI into constants
* Add crazy printlines
* Remove crazy comments
* Add a bunch of debug printlns
* Add helper fn for applying msgs to the EVM
* Update ExecutionManager bytecode
* Shim CREATE for EM to use correct addr
* Add SimpleStorage test
* Add the EM/SM to all new states
* Force all txs to be routed through the EM
* Remove unused files
* Remove unused comments
* Increment nonce after failed tx
* Add debug statements
* Use evm.Time for timestamp
* Change EM deployment, fix broken tests, clean up
* Add an OVM test & remove printlns
* Fix lint errors & remove final printlns
* Final cleanup--remove some comments
* Limiting Geth to one transaction per block (#3)
* Limiting Geth to one transaction per block
* Adding TransitionBatchBuilder to build & submit rollup blocks
* Adding L1MessageSender to Transaction (#4)
* 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>
* Fixing Geth Tests (#6)
Fixing broken tests, skipping tests we intentionally break, and configuring CI within Github Actions
* Hex Trie -> Binary Trie (#7)
*** Changing Hex Trie to Binary Trie ***
Note: This changes and/or comments out a bunch of tests, so if things break down the line, this is likely the cause!
* Ingest Block Batches (#8)
Handling BlockBatches in Geth at `SendBlockBatches` endpoint (eth_sendBlockBatches)
Other:
* Adding PR template
* Adding ability to set timestamp and making blocks use configured timestamp
* Adding ability to encode original tx nonce in calldata
* Adding L1MessageSender to Contract Creation Txs
* Add L1MessageSender to Message
* Increment nonce on CREATE failure
* Fix bug where evm.Time=0
* Use state dump with hardcoded EM & SM addrs
- ExecutionMgr address should always be 0x0000...dead0000
- StateMgr address should always be 0x0000...dead0001
* Move EM deployment into genesis block maker
* Update EM contracts to latest version
* Update EM to remove events
* Fix the OVM tests
* Skip an ungodly number of tests
* Fix lint errors
* Clean up logging
* Cleanup more logs
* Use local reference to state manager
* Rename applyOvmToState(..)
* Remove unneeded check
* Clean up logging & add EM ABI panic
* Add gas metering to SM & small refactor
* Update core/vm/state_manager.go
Co-authored-by: Kevin Ho <kevinjho1996@gmail.com>
Co-authored-by: Mason Fischer <mason@kissr.co>
Co-authored-by: Will Meister <william.k.meister@gmail.com>
Co-authored-by: ben-chain <ben@pseudonym.party>
Co-authored-by: Kevin Ho <kevinjho1996@gmail.com>
* 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
Handling BlockBatches in Geth at `SendBlockBatches` endpoint (eth_sendBlockBatches)
Other:
* Adding PR template
* Adding ability to set timestamp and making blocks use configured timestamp
* Adding ability to encode original tx nonce in calldata
* Adding L1MessageSender to Contract Creation Txs
*** Changing Hex Trie to Binary Trie ***
Note: This changes and/or comments out a bunch of tests, so if things break down the line, this is likely the cause!
* 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 change:
- removes the PostChainEvents method on core.BlockChain.
- sorts 'removed log' events by block number.
- fire the NewChainHead event if we inject a canonical block into the chain
even if the entire insertion is not successful.
- guarantees correct event ordering in all cases.
* core: s/isEIP155/isEIP2/ (fix)
This signature variable name reflects a spec'd change
in gas cost for creating contracts as documented in EIP2 (Homestead HF).
https://github.com/ethereum/EIPs/blob/master/EIPS/eip-2.md#specification
* core: s/isEIP2/sIsHomestead/g
Use isHomestead since Homestead is what the caller
and rest of the code uses.
* build: use golangci-lint
This changes build/ci.go to download and run golangci-lint instead
of gometalinter.
* core/state: fix unnecessary conversion
* p2p/simulations: fix lock copying (found by go vet)
* signer/core: fix unnecessary conversions
* crypto/ecies: remove unused function cmpPublic
* core/rawdb: remove unused function print
* core/state: remove unused function xTestFuzzCutter
* core/vm: disable TestWriteExpectedValues in a different way
* core/forkid: remove unused function checksum
* les: remove unused type proofsData
* cmd/utils: remove unused functions prefixedNames, prefixFor
* crypto/bn256: run goimports
* p2p/nat: fix goimports lint issue
* cmd/clef: avoid using unkeyed struct fields
* les: cancel context in testRequest
* rlp: delete unreachable code
* core: gofmt
* internal/build: simplify DownloadFile for Go 1.11 compatibility
* build: remove go test --short flag
* .travis.yml: disable build cache
* whisper/whisperv6: fix ineffectual assignment in TestWhisperIdentityManagement
* .golangci.yml: enable goconst and ineffassign linters
* build: print message when there are no lint issues
* internal/build: refactor download a bit
* core/evm, contracts: avoid copying memory for input in calls + make ecrecover not modify input buffer
* core/vm: optimize mstore a bit
* core/vm: change Get -> GetCopy in vm memory access
* core/asm: Fix encoding of pushed labels
EVM uses big-endian byte-order, so to pad a label value to 4 bytes,
zeros must be added to the front, not the end.
* core/asm: Fix PC calculations when a label is pushed
Incrementing PC by 5 is only correct if the label appears after a jump,
in which case there is an implicit push. When it appears after an explicit
push, PC should only be incremented by 4.
* core/asm: Allow JUMP with no argument
This way, a label can be pushed explicitly, or loaded from memory to
implement a jump table.
When we flush a batch of trie nodes into database during the state
sync, we should guarantee that all children should be flushed before
parent.
Actually the trie nodes commit order is strict by: children -> parent.
But when we flush all ready nodes into db, we don't need the order
anymore since
(1) they are all ready nodes (no more dependency)
(2) underlying database provides write atomicity