fae165a5de
core, eth, ethdb, trie: simplify range proofs
2021-04-29 10:59:08 +03:00
a81cf0d2b3
trie: remove redundant returns + use stacktrie where applicable ( #22760 )
...
* trie: add benchmark for proofless range
* trie: remove unused returns + use stacktrie
2021-04-28 22:47:48 +03:00
9e1bd0f367
trie: fix range prover ( #22210 )
...
Fixes a special case when the trie only has a single trie node and the range proof only contains a single element.
2021-01-22 10:11:24 +01:00
017831dd5b
core, eth: split eth package, implement snap protocol ( #21482 )
...
This commit splits the eth package, separating the handling of eth and snap protocols. It also includes the capability to run snap sync (https://github.com/ethereum/devp2p/blob/master/caps/snap.md ) , but does not enable it by default.
Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de >
Co-authored-by: Martin Holst Swende <martin@swende.se >
2020-12-14 10:27:15 +01:00
e5defccd58
trie: extend range proof ( #21250 )
...
* trie: support non-existent right proof
* trie: improve test
* trie: minor linter fix
Co-authored-by: Péter Szilágyi <peterke@gmail.com >
2020-09-23 12:44:09 +03:00
25b16085da
trie: support empty range proof ( #21199 )
2020-09-23 11:03:21 +03:00
e1365b2464
trie: fix gaped range proof test case ( #21484 )
2020-09-23 10:59:11 +03:00
389da6aa48
trie: enforce monotonic range in prover and return end marker ( #21130 )
...
* trie: add hasRightElement indicator
* trie: ensure the range is monotonic increasing
* trie: address comment and fix lint
* trie: address comment
* trie: make linter happy
Co-authored-by: Péter Szilágyi <peterke@gmail.com >
2020-05-27 17:37:37 +03:00
070a5e1252
trie: fix for range proof ( #21107 )
...
* trie: fix for range proof
* trie: fix typo
2020-05-26 13:11:29 +03:00
65ce550b37
trie: extend range proofs with non-existence ( #21000 )
...
* trie: implement range proof with non-existent edge proof
* trie: fix cornercase
* trie: consider empty range
* trie: add singleSide test
* trie: support all-elements range proof
* trie: fix typo
* trie: tiny typos and formulations
Co-authored-by: Péter Szilágyi <peterke@gmail.com >
2020-05-20 15:45:38 +03:00
5cdc2dffda
trie: fix TestBadRangeProof unit test ( #21034 )
2020-05-06 15:33:57 +02:00
44ff3f3dc9
trie: initial implementation for range proof ( #20908 )
...
* trie: initial implementation for range proof
* trie: add benchmark
* trie: fix lint
* trie: fix minor issue
* trie: unset the edge valuenode as well
* trie: unset the edge valuenode as nilValuenode
2020-04-24 14:37:56 +03:00
6402c42b67
all: simplify and fix database iteration with prefix/start ( #20808 )
...
* core/state/snapshot: start fixing disk iterator seek
* ethdb, rawdb, leveldb, memorydb: implement iterators with prefix and start
* les, core/state/snapshot: iterator fixes
* all: remove two iterator methods
* all: rename Iteratee.NewIteratorWith -> NewIterator
* ethdb: fix review concerns
2020-04-15 14:08:53 +03:00
8111b9dda5
ethdb, trie: tiny API tidy-up from the database rework pr
2019-03-12 12:32:02 +02:00
054412e335
all: clean up and proerly abstract database access
2019-03-06 13:35:03 +02:00
c934c06cc1
trie: support proof generation from the iterator
2018-05-23 13:02:20 +03:00
0fe47e98c4
trie: fixes to comply with golint ( #16771 )
2018-05-21 23:41:31 +03:00
7beccb29be
all: get rid of error when creating memory database ( #16716 )
...
* all: get rid of error when create mdb
* core: clean up variables definition
* all: inline mdb definition
2018-05-09 15:24:25 +03:00
ca376ead88
les, light: LES/2 protocol version ( #14970 )
...
This PR implements the new LES protocol version extensions:
* new and more efficient Merkle proofs reply format (when replying to
a multiple Merkle proofs request, we just send a single set of trie
nodes containing all necessary nodes)
* BBT (BloomBitsTrie) works similarly to the existing CHT and contains
the bloombits search data to speed up log searches
* GetTxStatusMsg returns the inclusion position or the
pending/queued/unknown state of a transaction referenced by hash
* an optional signature of new block data (number/hash/td) can be
included in AnnounceMsg to provide an option for "very light
clients" (mobile/embedded devices) to skip expensive Ethash check
and accept multiple signatures of somewhat trusted servers (still a
lot better than trusting a single server completely and retrieving
everything through RPC). The new client mode is not implemented in
this PR, just the protocol extension.
2017-10-24 15:19:09 +02:00
6fdd0893c3
all: fix go vet warnings
2016-04-15 11:17:27 +02:00
d04a2e7557
all: update license information
2016-04-15 09:48:05 +02:00
c1a352c108
trie: add merkle proof functions
2015-09-22 22:57:37 +02:00