Martin Holst Swende
074efe6c8d
core: fix two snapshot iterator flaws, decollide snap storage prefix
...
* core/state/snapshot/iterator: fix two disk iterator flaws
* core/rawdb: change SnapshotStoragePrefix to avoid prefix collision with preimagePrefix
2020-03-23 12:34:27 +02:00
Péter Szilágyi
36e93d2dd8
Merge pull request #20779 from meowsbits/patch-3
...
core/rawdb: fix freezer table test error check
2020-03-18 16:30:58 +02:00
gary rong
6283391c99
core/rawdb: improve table database ( #20703 )
...
This PR fixes issues in TableDatabase.
TableDatabase is a wrapper of underlying ethdb.Database with an additional prefix.
The prefix is applied to all entries it maintains. However when we try to retrieve entries
from it we don't handle the key properly. In theory the prefix should be truncated and
only user key is returned. But we don't do it in some cases, e.g. the iterator and batch
replayer created from it. So this PR is the fix to these issues.
2020-03-18 13:15:49 +01:00
meowsbits
20a092fb9f
core/rawdb: fix freezer table test error check
...
Fixes: Condition is always 'false' because 'err' is always 'nil'
2020-03-18 06:55:30 -05:00
Péter Szilágyi
fab0ee3bfa
core/state/snapshot: fix various iteration issues due to destruct set
2020-03-04 15:06:04 +02:00
Martin Holst Swende
bc5d742c66
core: more blockchain tests
2020-03-04 14:39:27 +02:00
Martin Holst Swende
eff7cfbb03
core/state/snapshot: handle deleted accounts in fast iterator
2020-03-04 14:38:55 +02:00
Péter Szilágyi
328de180a7
core/state: fix resurrection state clearing and access
2020-03-04 10:22:48 +02:00
Péter Szilágyi
dcb22a9f99
core/state: fix account root hash update point
2020-03-03 16:55:06 +02:00
Péter Szilágyi
a4cf279494
core/state: extend snapshotter to handle account resurrections
2020-03-03 15:52:00 +02:00
Péter Szilágyi
6e05ccd845
core/state/snapshot, tests: sync snap gen + snaps in consensus tests
2020-03-03 09:17:13 +02:00
Ali Atiia
556888c4a9
core/vm: fix method doc ( #20730 )
...
typo in func name in the comment
2020-03-02 19:20:27 +02:00
Martin Holst Swende
fe8347ea8a
squashme
2020-03-02 14:06:44 +01:00
Martin Holst Swende
361a6f08ac
core/tests: test for destroy+recreate contract with storage
2020-03-02 13:46:56 +01:00
Péter Szilágyi
92ec07d63b
core/state: fix an account resurrection issue
2020-02-27 15:03:10 +02:00
Péter Szilágyi
06d4470b41
core: fix broken tests due to API changes + linter
2020-02-25 12:51:16 +02:00
Martin Holst Swende
19099421dc
core/state/snapshot: faster account iteration, CLI integration
2020-02-25 12:51:15 +02:00
Péter Szilágyi
6ddb92a089
core/state/snapshot: full featured account iteration
2020-02-25 12:51:14 +02:00
Martin Holst Swende
e570835356
core/state/snapshot: implement iterator priority for fast direct data lookup
2020-02-25 12:51:14 +02:00
Péter Szilágyi
e567675473
core/state/snapshot: move iterator out into its own files
2020-02-25 12:51:13 +02:00
Martin Holst Swende
7e38996301
core/state/snapshot: implement snapshot layer iteration
2020-02-25 12:51:12 +02:00
Péter Szilágyi
22c494d399
core/state/snapshot: bloom, metrics and prefetcher fixes
2020-02-25 12:51:11 +02:00
Martin Holst Swende
3ad4335acc
core/state/snapshot: node behavioural difference on bloom content
2020-02-25 12:51:11 +02:00
Péter Szilágyi
fd39f722a3
core: journal the snapshot inside leveldb, not a flat file
2020-02-25 12:51:10 +02:00
Martin Holst Swende
d5d7c0c24b
core/state/snapshot: fix difflayer origin-initalization after flatten
2020-02-25 12:51:09 +02:00
Péter Szilágyi
351a5903b0
core/rawdb, core/state/snapshot: runtime snapshot generation
2020-02-25 12:51:08 +02:00
Martin Holst Swende
f300c0df01
core/state/snapshot: replace bigcache with fastcache
2020-02-25 12:51:08 +02:00
Péter Szilágyi
d754091a87
core/state/snapshot: unlink snapshots from blocks, quad->linear cleanup
2020-02-25 12:51:07 +02:00
Martin Holst Swende
cdf3f016df
snapshot: iteration and buffering optimizations
2020-02-25 12:51:06 +02:00
Péter Szilágyi
d7d81d7c12
core/state/snapshot: extract and split cap method, cover corners
2020-02-25 12:51:05 +02:00
Martin Holst Swende
e146fbe4e7
core/state: lazy sorting, snapshot invalidation
2020-02-25 12:51:05 +02:00
Péter Szilágyi
542df8898e
core: initial version of state snapshots
2020-02-25 12:51:04 +02:00
Gregory Markou
4be8840120
core/vm: use dedicated SLOAD gas constant for EIP-2200 ( #20646 )
2020-02-18 15:07:41 +01:00
Martin Holst Swende
855690523a
core: ensure state exists for prefetcher ( #20627 )
2020-02-14 10:54:02 +02:00
Péter Szilágyi
9938d954c8
eth: rework tx fetcher to use O(1) ops + manage network requests
2020-02-13 15:27:15 +02:00
rjl493456442
049e17116e
core, eth: implement eth/65 transaction fetcher
2020-02-11 13:56:36 +02:00
Martin Holst Swende
058a4ac5f1
core/evm: less iteration in blockhash ( #20589 )
...
* core/vm/runtime: add test for blockhash
* core/evm: less iteration in blockhash
* core/vm/runtime: nitpickfix
Co-authored-by: Péter Szilágyi <peterke@gmail.com>
2020-02-04 12:32:31 +02:00
Martin Holst Swende
5a9c96454e
trie: separate hashes and committer, collapse on commit
...
* trie: make db insert use size instead of full data
* core/state: minor optimization in state onleaf allocation
* trie: implement dedicated committer and hasher
* trie: use dedicated committer/hasher
* trie: linter nitpicks
* core/state, trie: avoid unnecessary storage trie load+commit
* trie: review feedback, mainly docs + minor changes
* trie: start deprecating old hasher
* trie: fix misspell+lint
* trie: deprecate hasher.go, make proof framework use new hasher
* trie: rename pure_committer/hasher to committer/hasher
* trie, core/state: fix review concerns
* trie: more review concerns
* trie: make commit collapse into hashnode, don't touch dirtyness
* trie: goimports fixes
* trie: remove panics
2020-02-03 17:28:30 +02:00
Guillaume Ballet
24cab2d535
core/vm/runtime: fix typos in comment ( #20608 )
2020-01-30 11:21:10 +01:00
gary rong
b88b4632c2
core: fix chain indexer unit test ( #20506 )
2020-01-20 10:38:08 +02:00
gary rong
770316dc20
core, light: write chain data in atomic way ( #20287 )
...
* core: write chain data in atomic way
* core, light: address comments
* core, light: fix linter
* core, light: address comments
2020-01-17 12:49:32 +02:00
Martin Holst Swende
b2de0bd87b
core: set max tx size down to 2 slots (64KB)
2020-01-14 11:49:36 +01:00
MichaelRiabzev-StarkWare
8bd37a1d91
core: count tx size in slots, bump max size ot 4x32KB ( #20352 )
...
* tests for tx size
* alow multiple slots transactions
* tests for tx size limit (32 KB)
* change tx size tests to use addRemoteSync instead of validateTx (requested in pool request).
* core: minor tx slotting polishes, add slot tracking metric
Co-authored-by: Michael Riabzev <RiabzevMichael@gmail.com>
Co-authored-by: Péter Szilágyi <peterke@gmail.com>
2020-01-10 11:40:03 +02:00
Martin Holst Swende
fc392395fb
core/state: add more verbosity to panic
2020-01-10 10:12:32 +01:00
Felix Lange
d90d1db609
eth/filters: remove use of event.TypeMux for pending logs ( #20312 )
2019-12-10 12:39:14 +01:00
Marius van der Wijden
f383eaa102
core: removed old invalid comment
2019-12-10 11:50:16 +01:00
Martin Holst Swende
bc01593afb
consensus/ethash, params: eip-2384: bump difficulty bomb ( #20347 )
...
* consensus/ethash, params: implement eip-2384: bump difficulty bomb
* params: EIP 2384 compat checks
* consensus, params: add Muir Glacier block number (mainnet,ropsten) + official name
* core/forkid: forkid tests for muir glacier
* params/config: address review concerns
* params, core/forkid: review nitpicks
* cmd/geth,eth,les: add override option for muir glacier
* params: nit fix
2019-12-06 11:36:40 +02:00
gary rong
fc7e0fe6c7
core, miner: remove PostChainEvents ( #19396 )
...
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.
2019-11-29 14:22:08 +01:00
Péter Szilágyi
58e33d9e5a
Merge pull request #20403 from karalabe/fix-freezer-reinit
...
core/rawdb: fix reinit regression caused by the hash check PR
2019-11-27 15:05:58 +02:00
Péter Szilágyi
717f8a4e8f
core/rawdb: fix reinit regression caused by the hash check PR
2019-11-27 14:41:47 +02:00
Guillaume Ballet
7b189d6f1f
core: fix staticcheck warnings ( #20384 )
...
* core: fix staticcheck warnings
* fix goimports
2019-11-27 09:50:30 +01:00
Michael Forney
3a0480e07d
core/asm: allow numbers in labels ( #20362 )
...
Numbers were already allowed when creating labels, just not when
referencing them.
2019-11-23 12:52:17 +01:00
Felix Lange
dd21f079e8
core/state: fix staticcheck warnings ( #20357 )
...
Also remove dependency on gopkg.in/check.v1 in tests.
2019-11-22 15:56:05 +01:00
Felix Lange
b6d4f6b66e
core/types: remove BlockBy sorting code ( #20355 )
2019-11-21 16:35:22 +02:00
Felix Lange
f71e85b8e2
core: fix staticcheck warnings ( #20323 )
2019-11-20 10:53:01 +02:00
gary rong
b9c90c5581
core/rawdb: check hash before return data from ancient db ( #20195 )
...
* core/rawdb: check hash before return data from ancient db
* core/rawdb: fix lint
* core/rawdb: calculate the hash in the fly
2019-11-19 12:32:57 +02:00
meowsbits
57d697629d
core: s/isEIP155/isHomestead/g (fix IntrinsicGas signature var name) ( #20300 )
...
* 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.
2019-11-18 11:41:49 +02:00
Felix Lange
689486449d
build: use golangci-lint ( #20295 )
...
* 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
2019-11-18 10:49:17 +02:00
nebojsa94
738b51ae31
core/vm: fix tracer interface parameter name ( #20294 )
2019-11-15 10:52:33 +02:00
Martin Holst Swende
b566cfdffd
core/evm: avoid copying memory for input in calls ( #20177 )
...
* 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
2019-11-04 11:31:09 +02:00
Martin Holst Swende
9278951a62
params, core/forkid: configure mainnet istanbul block 9069K ( #20222 )
...
* params: configure mainnet istanbul block 9069K
* core/forkid: add some more test items for mainnet istanbul
2019-10-31 11:04:26 +02:00
Péter Szilágyi
8927f7724a
cmd/devp2p, core/forkid: make forkid.Filter API uniform
2019-10-31 10:38:14 +02:00
Péter Szilágyi
93422e9d15
Merge pull request #20140 from karalabe/eth64-handshake-forkid
...
eth: eth/64 - extend handshake with with fork id
2019-10-30 13:21:25 +02:00
Péter Szilágyi
9641cacea8
core/forkid: add two clauses for more precise validation ( #20220 )
2019-10-30 12:05:31 +01:00
Péter Szilágyi
64571f9379
eth: eth/64 - extend handshake packet with fork id
2019-10-29 18:04:39 +02:00
Felix Lange
2c37142d2f
cmd/devp2p, p2p: dial using node iterator, discovery crawler ( #20132 )
...
* p2p/enode: add Iterator and associated utilities
* p2p/discover: add RandomNodes iterator
* p2p: dial using iterator
* cmd/devp2p: add discv4 crawler
* cmd/devp2p: WIP nodeset filter
* cmd/devp2p: fixup lesFilter
* core/forkid: add NewStaticFilter
* cmd/devp2p: make -eth-network filter actually work
* cmd/devp2p: improve crawl timestamp handling
* cmd/devp2p: fix typo
* p2p/enode: fix comment typos
* p2p/discover: fix comment typos
* p2p/discover: rename lookup.next to 'advance'
* p2p: lower discovery mixer timeout
* p2p/enode: implement dynamic FairMix timeouts
* cmd/devp2p: add ropsten support in -eth-network filter
* cmd/devp2p: tweak crawler log message
2019-10-29 17:08:57 +02:00
Michael Forney
b0b277525c
core/asm: assembly parser label fixes ( #20210 )
...
* 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.
2019-10-29 13:47:18 +01:00
gary rong
ecdbb402ee
trie: remove node ordering slice in sync batch ( #19929 )
...
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
2019-10-28 18:50:11 +01:00
Martin Holst Swende
c476460cb2
params: check fork ordering when initializing new genesis, fixes #20136 ( #20169 )
...
prevent users from misconfiguring their nodes so that fork ordering is not preserved.
2019-10-16 13:23:14 +02:00
Martin Holst Swende
ead711779d
core: initialize current block/fastblock atomics to nil, fix #19286 ( #19352 )
2019-09-26 11:10:35 +02:00
zcheng9
2133f18f15
core/state: fix database leak and copy tests ( #19306 )
2019-09-26 11:09:59 +02:00
ywzqwwt
1a6ef5ae58
core/blockchain: remove block from futureBlocks on error ( #19763 )
2019-09-26 10:57:51 +02:00
Ryan Schneider
ad03d9801c
internal/ethapi: support block number or hash on state-related methods ( #19491 )
...
This change adds support for EIP-1898.
2019-09-26 10:47:31 +02:00
Péter Szilágyi
a308f012ba
core/state: fix copy-commit-copy ( #20113 )
...
* core/state: revert noop finalise, fix copy-commit-copy
* core/state: reintroduce net sstore tracking, extend tests for it
2019-09-24 10:49:59 +03:00
gary rong
05347b3d98
core/state: fix state object deep copy ( #20100 )
...
deepCopy didn't copy pending storage updates, leading to the
creation of blocks with invalid state root.
2019-09-20 11:55:44 +02:00
Péter Szilágyi
f9eb307216
core/forkid, params: fix tests, enable Istanbul on Rinkeby + testers
2019-09-19 10:13:11 +03:00
Péter Szilágyi
f40ff23b7b
core: fix tx dedup return error count
2019-09-18 11:42:47 +03:00
Felföldi Zsolt
0ac9bbba6c
les: multiple server bugfixes ( #20079 )
...
* les: detailed relative cost metrics
* les: filter txpool relative request statistic
* les: initialize price factors
* les: increased connected bias to lower churn rate
* les: fixed clientPool.setLimits
* core: do not use mutex in GetAncestor
* les: bump factor db version again
* les: add metrics
* les, light: minor fixes
2019-09-17 16:28:41 +03:00
Péter Szilágyi
056183c056
core: dedup known transactions without global lock, track metrics
2019-09-17 15:55:06 +03:00
Martin Holst Swende
8d41e885e6
core: smaller txpool status locking ( #20080 )
...
* txpool: smaller lock portion
* core/tx_pool: fix data race
2019-09-17 10:34:28 +03:00
Martin Holst Swende
f49d6e5ec0
core: add blockchain test too for revert cornercase
2019-09-16 11:42:14 +03:00
Péter Szilágyi
223b950944
core/state: accumulate writes and only update tries when must
2019-09-16 11:05:57 +03:00
Rob Mulholand
3b6c9902f3
core: remove unused gas return in ApplyTransaction ( #20065 )
2019-09-12 22:22:22 +03:00
Péter Szilágyi
305ed955db
Merge pull request #20038 from holiman/minor_encodingfix
...
core/state: optimize some internals during encoding
2019-09-10 17:12:06 +03:00
Martin Holst Swende
72045dff4f
core/state: optimize some internals during encoding
2019-09-10 15:15:34 +02:00
Péter Szilágyi
72d5a27a39
core, metrics, p2p: switch some invalid counters to gauges
2019-09-10 14:39:07 +03:00
Péter Szilágyi
cc9eb91d30
Merge pull request #20004 from karalabe/istanbul-override
...
cmd, core, eth, les: support --override.istanbul
2019-08-23 12:38:05 +03:00
Péter Szilágyi
e39b2a2bde
acmd, core, eth, les: support --override.istanbul
2019-08-23 12:09:27 +03:00
Péter Szilágyi
c8a1c0a115
Merge pull request #19993 from karalabe/istanbul-eip-integration
...
core/vm: enable istanbul EIPs in the jump table
2019-08-23 11:55:43 +03:00
Felix Lange
54b271a86d
crypto: add SignatureLength constant and use it everywhere ( #19996 )
...
Original change by @jpeletier
2019-08-22 15:14:06 +02:00
Péter Szilágyi
060e33fb4c
core/vm: enable istanbul EIPs in the jump table
2019-08-22 13:41:55 +03:00
HackyMiner
7c229941ac
core: log chain reorg/split metrics ( #18950 )
...
* core: log chain reorg/split metrics
* core: report 1-block reorgs on the metrics too
2019-08-22 12:28:23 +03:00
Péter Szilágyi
22fdbee8ed
Merge pull request #19972 from keep-network/istanbul-eip-152-blake2b-f-precompile
...
core/vm, crypto/blake2b: add BLAKE2b compression func at 0x09
2019-08-22 11:09:31 +03:00
Péter Szilágyi
1bccafe5ef
core/vm, crypto/blake2b: add SSE, AVX and AVX2 code
2019-08-21 13:09:15 +03:00
Piotr Dyraga
2890f060b7
core/vm, crypto/blake2b: add BLAKE2b compression func at 0x09
...
The precompile at 0x09 wraps the BLAKE2b F compression function:
https://tools.ietf.org/html/rfc7693#section-3.2
The precompile requires 6 inputs tightly encoded, taking exactly 213
bytes, as explained below.
- `rounds` - the number of rounds - 32-bit unsigned big-endian word
- `h` - the state vector - 8 unsigned 64-bit little-endian words
- `m` - the message block vector - 16 unsigned 64-bit little-endian words
- `t_0, t_1` - offset counters - 2 unsigned 64-bit little-endian words
- `f` - the final block indicator flag - 8-bit word
[4 bytes for rounds][64 bytes for h][128 bytes for m][8 bytes for t_0]
[8 bytes for t_1][1 byte for f]
The boolean `f` parameter is considered as `true` if set to `1`.
The boolean `f` parameter is considered as `false` if set to `0`.
All other values yield an invalid encoding of `f` error.
The precompile should compute the F function as specified in the RFC
(https://tools.ietf.org/html/rfc7693#section-3.2 ) and return the updated
state vector `h` with unchanged encoding (little-endian).
See EIP-152 for details.
2019-08-21 13:09:15 +03:00
gary rong
2ed729d38e
les: handler separation ( #19639 )
...
les: handler separation
2019-08-21 11:29:34 +02:00
Martin Holst Swende
4aee0d1994
core: fix crash in chain reimport ( #19986 )
...
* blockchain: fix flaw in block import
* core/blockchain: address review concerns
* core/blockchain: go format with 's'
2019-08-21 10:17:19 +03:00
Péter Szilágyi
3bb9b49afb
core/vm, params: implement EIP2200, SSTORE optimizations ( #19964 )
...
* core/vm, params: implement EIP2200, SSTORE optimizations
* core/vm, params: switch EIP2200 to Wei's version
2019-08-19 14:39:38 +03:00
gary rong
c2c4c9f1e5
core, light, params: implement eip2028 ( #19931 )
...
* core, light, params: implement eip2028
* core, light: address comments
* core: address comments
* tests: disable Istanbul tx tests (until updated)
* core: address comment
2019-08-14 15:53:21 +03:00
gary rong
df6c08a485
core, trie: decode the value for storage dump ( #19943 )
...
* core, trie: decode the value for storage dump
* core/state: address comment
2019-08-12 17:14:40 +03:00