Guillaume Ballet 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							443afc975c 
							
						 
					 
					
						
						
							
							core/state: move state account to core/types + abstracted "write account to trie" ( #23567 )  
						
						... 
						
						
						
						* core/state: abstracted "write account to trie" method
* fix appveyor build
* Apply suggestions from code review
Co-authored-by: Martin Holst Swende <martin@swende.se>
* review feedback
* core/state/accounts: move Account to core/types
* core/types: rename Account -> StateAccount
* core/state: restore EncodeRLP for stateObject
* core/types: add the missing file
* more review feedback
* more review feedback
Co-authored-by: Martin Holst Swende <martin@swende.se>
Co-authored-by: Felix Lange <fjl@twurst.com> 
						
					 
					
						2021-09-28 10:48:07 +02:00 
						 
				 
			
				
					
						
							
							
								gary rong 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							a5a5237178 
							
						 
					 
					
						
						
							
							core, light, tests, trie: add state metrics ( #23433 )  
						
						
						
					 
					
						2021-08-24 22:00:42 +03:00 
						 
				 
			
				
					
						
							
							
								gary rong 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							23524f8900 
							
						 
					 
					
						
						
							
							all: disable recording preimage of trie keys ( #21402 )  
						
						... 
						
						
						
						* cmd, core, eth, light, trie: disable recording preimage by default
* core, eth: fix unit tests
* core: fix import
* all: change to nopreimage
* cmd, core, eth, trie: use cache.preimages flag
* cmd: enable preimages for archive node
* cmd/utils, trie: simplify preimage tracking a bit
* core: fix linter
Co-authored-by: Péter Szilágyi <peterke@gmail.com> 
						
					 
					
						2020-11-18 11:51:33 +02:00 
						 
				 
			
				
					
						
							
							
								Péter Szilágyi 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							eeaf191633 
							
						 
					 
					
						
						
							
							core, eth, trie: prepare trie sync for path based operation  
						
						
						
					 
					
						2020-09-02 13:21:32 +03:00 
						 
				 
			
				
					
						
							
							
								gary rong 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							87c0ba9213 
							
						 
					 
					
						
						
							
							core, eth, les, trie: add a prefix to contract code ( #21080 )  
						
						
						
					 
					
						2020-08-21 15:10:40 +03:00 
						 
				 
			
				
					
						
							
							
								Martin Holst Swende 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							295693759e 
							
						 
					 
					
						
						
							
							core/vm: less allocations for various call variants  ( #21222 )  
						
						... 
						
						
						
						* core/vm/runtime/tests: add more benchmarks
* core/vm: initial work on improving alloc count for calls to precompiles
name                                  old time/op    new time/op    delta
SimpleLoop/identity-precompile-10M-6     117ms ±75%      43ms ± 1%  -63.09%  (p=0.008 n=5+5)
SimpleLoop/loop-10M-6                   79.6ms ± 4%    70.5ms ± 1%  -11.42%  (p=0.008 n=5+5)
name                                  old alloc/op   new alloc/op   delta
SimpleLoop/identity-precompile-10M-6    24.4MB ± 0%     4.9MB ± 0%  -79.94%  (p=0.008 n=5+5)
SimpleLoop/loop-10M-6                   13.2kB ± 0%    13.2kB ± 0%     ~     (p=0.357 n=5+5)
name                                  old allocs/op  new allocs/op  delta
SimpleLoop/identity-precompile-10M-6      382k ± 0%      153k ± 0%  -59.99%  (p=0.000 n=5+4)
SimpleLoop/loop-10M-6                     40.0 ± 0%      40.0 ± 0%     ~     (all equal)
* core/vm: don't allocate big.int for touch
name                                  old time/op    new time/op    delta
SimpleLoop/identity-precompile-10M-6    43.3ms ± 1%    42.4ms ± 7%     ~     (p=0.151 n=5+5)
SimpleLoop/loop-10M-6                   70.5ms ± 1%    76.7ms ± 1%   +8.67%  (p=0.008 n=5+5)
name                                  old alloc/op   new alloc/op   delta
SimpleLoop/identity-precompile-10M-6    4.90MB ± 0%    2.46MB ± 0%  -49.83%  (p=0.008 n=5+5)
SimpleLoop/loop-10M-6                   13.2kB ± 0%    13.2kB ± 1%     ~     (p=0.571 n=5+5)
name                                  old allocs/op  new allocs/op  delta
SimpleLoop/identity-precompile-10M-6      153k ± 0%       76k ± 0%  -49.98%  (p=0.029 n=4+4)
SimpleLoop/loop-10M-6                     40.0 ± 0%      40.0 ± 0%     ~     (all equal)
* core/vm: reduce allocs in staticcall
name                                  old time/op    new time/op    delta
SimpleLoop/identity-precompile-10M-6    42.4ms ± 7%    37.5ms ± 6%  -11.68%  (p=0.008 n=5+5)
SimpleLoop/loop-10M-6                   76.7ms ± 1%    69.1ms ± 1%   -9.82%  (p=0.008 n=5+5)
name                                  old alloc/op   new alloc/op   delta
SimpleLoop/identity-precompile-10M-6    2.46MB ± 0%    0.02MB ± 0%  -99.35%  (p=0.008 n=5+5)
SimpleLoop/loop-10M-6                   13.2kB ± 1%    13.2kB ± 0%     ~     (p=0.143 n=5+5)
name                                  old allocs/op  new allocs/op  delta
SimpleLoop/identity-precompile-10M-6     76.4k ± 0%      0.1k ± 0%     ~     (p=0.079 n=4+5)
SimpleLoop/loop-10M-6                     40.0 ± 0%      40.0 ± 0%     ~     (all equal)
* trie: better use of hasher keccakState
* core/state/statedb: reduce allocations in getDeletedStateObject
* core/vm: reduce allocations in all call derivates
* core/vm: reduce allocations in call variants
- Make returnstack `uint32`
- Use a `sync.Pool` of `stack`s
* core/vm: fix tests
* core/vm: goimports
* core/vm: tracer fix + staticcall gas fix
* core/vm: add back snapshot to staticcall
* core/vm: review concerns + make returnstack pooled + enable returndata in traces
* core/vm: fix some test tracer method signatures
* core/vm: run gencodec, minor comment polish
Co-authored-by: Péter Szilágyi <peterke@gmail.com> 
						
					 
					
						2020-07-16 15:06:19 +03:00 
						 
				 
			
				
					
						
							
							
								Martin Holst Swende 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							a1313b5b1e 
							
						 
					 
					
						
						
							
							trie: make hasher parallel when number of changes are large ( #20488 )  
						
						... 
						
						
						
						* trie: make hasher parallel when number of changes are large
* trie: remove unused field dirtyCount
* trie: rename unhashedCount/unhashed 
						
					 
					
						2020-02-04 14:02:38 +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 
						 
				 
			
				
					
						
							
							
								Péter Szilágyi 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							91eec1251c 
							
						 
					 
					
						
						
							
							cmd, core, eth, trie: get rid of trie cache generations ( #19262 )  
						
						... 
						
						
						
						* cmd, core, eth, trie: get rid of trie cache generations
* core, trie: get rid of remainder of cache gen boilerplate 
						
					 
					
						2019-03-14 15:25:12 +02:00 
						 
				 
			
				
					
						
							
							
								kiel barry 
							
						 
					 
					
						
						
						
						
							
						
						
							0fe47e98c4 
							
						 
					 
					
						
						
							
							trie: fixes to comply with golint ( #16771 )  
						
						
						
					 
					
						2018-05-21 23:41:31 +03:00 
						 
				 
			
				
					
						
							
							
								Péter Szilágyi 
							
						 
					 
					
						
						
						
						
							
						
						
							55599ee95d 
							
						 
					 
					
						
						
							
							core, trie: intermediate mempool between trie and database ( #15857 )  
						
						... 
						
						
						
						This commit reduces database I/O by not writing every state trie to disk. 
						
					 
					
						2018-02-05 17:40:32 +01:00 
						 
				 
			
				
					
						
							
							
								Péter Szilágyi 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							216e584899 
							
						 
					 
					
						
						
							
							Revert "trie: make fullnode children hash calculation concurrently ( #15131 )" ( #15889 )  
						
						... 
						
						
						
						This reverts commit 0f7fbb85d6 
						
					 
					
						2018-01-15 15:32:14 +02:00 
						 
				 
			
				
					
						
							
							
								gary rong 
							
						 
					 
					
						
						
						
						
							
						
						
							0f7fbb85d6 
							
						 
					 
					
						
						
							
							trie: make fullnode children hash calculation concurrently ( #15131 )  
						
						... 
						
						
						
						* trie: make fullnode children hash calculation concurrently
* trie: thread out only on topmost fullnode
* trie: clean up full node children hash calculation
* trie: minor code fixups 
						
					 
					
						2017-11-27 13:34:17 +02:00 
						 
				 
			
				
					
						
							
							
								Felix Lange 
							
						 
					 
					
						
						
						
						
							
						
						
							9e5f03b6c4 
							
						 
					 
					
						
						
							
							core/state: access trie through Database interface, track errors ( #14589 )  
						
						... 
						
						
						
						With this commit, core/state's access to the underlying key/value database is
mediated through an interface. Database errors are tracked in StateDB and
returned by CommitTo or the new Error method.
Motivation for this change: We can remove the light client's duplicated copy of
core/state. The light client now supports node iteration, so tracing and storage
enumeration can work with the light client (not implemented in this commit). 
						
					 
					
						2017-06-27 15:57:06 +02:00 
						 
				 
			
				
					
						
							
							
								Felix Lange 
							
						 
					 
					
						
						
						
						
							
						
						
							4047ccad2f 
							
						 
					 
					
						
						
							
							trie: add start key to NodeIterator constructors  
						
						... 
						
						
						
						The 'step' method is split into two parts, 'peek' and 'push'. peek
returns the next state but doesn't make it current.
The end of iteration was previously tracked by setting 'trie' to nil.
End of iteration is now tracked using the 'iteratorEnd' error, which is
slightly cleaner and requires less code. 
						
					 
					
						2017-04-25 02:14:31 +02:00 
						 
				 
			
				
					
						
							
							
								Felix Lange 
							
						 
					 
					
						
						
						
						
							
						
						
							a13e920af0 
							
						 
					 
					
						
						
							
							trie: clean up iterator constructors  
						
						... 
						
						
						
						Make it so each iterator has exactly one public constructor:
- NodeIterators can be created through a method.
- Iterators can be created through NewIterator on any NodeIterator. 
						
					 
					
						2017-04-25 02:14:31 +02:00 
						 
				 
			
				
					
						
							
							
								Péter Szilágyi 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							d4fd06c3dc 
							
						 
					 
					
						
						
							
							all: blidly swap out glog to our log15, logs need rework  
						
						
						
					 
					
						2017-02-23 12:16:44 +02:00 
						 
				 
			
				
					
						
							
							
								Nick Johnson 
							
						 
					 
					
						
						
						
						
							
						
						
							555273495b 
							
						 
					 
					
						
						
							
							trie: add difference iterator ( #3637 )  
						
						... 
						
						
						
						This PR implements a differenceIterator, which allows iterating over trie nodes
that exist in one trie but not in another. This is a prerequisite for most GC
strategies, in order to find obsolete nodes. 
						
					 
					
						2017-02-22 23:49:34 +01:00 
						 
				 
			
				
					
						
							
							
								Felix Lange 
							
						 
					 
					
						
						
						
						
							
						
						
							40cdcf1183 
							
						 
					 
					
						
						
							
							trie, core/state: improve memory usage and performance ( #3135 )  
						
						... 
						
						
						
						* trie: store nodes as pointers
This avoids memory copies when unwrapping node interface values.
name      old time/op  new time/op  delta
Get        388ns ± 8%   215ns ± 2%  -44.56%  (p=0.000 n=15+15)
GetDB      363ns ± 3%   202ns ± 2%  -44.21%  (p=0.000 n=15+15)
UpdateBE  1.57µs ± 2%  1.29µs ± 3%  -17.80%  (p=0.000 n=13+15)
UpdateLE  1.92µs ± 2%  1.61µs ± 2%  -16.25%  (p=0.000 n=14+14)
HashBE    2.16µs ± 6%  2.18µs ± 6%     ~     (p=0.436 n=15+15)
HashLE    7.43µs ± 3%  7.21µs ± 3%   -2.96%  (p=0.000 n=15+13)
* trie: close temporary databases in GetDB benchmark
* trie: don't keep []byte from DB load around
Nodes decoded from a DB load kept hashes and values as sub-slices of
the DB value. This can be a problem because loading from leveldb often
returns []byte with a cap that's larger than necessary, increasing
memory usage.
* trie: unload old cached nodes
* trie, core/state: use cache unloading for account trie
* trie: use explicit private flags (fixes Go 1.5 reflection issue).
* trie: fixup cachegen overflow at request of nick
* core/state: rename journal size constant 
						
					 
					
						2016-10-14 19:04:33 +03:00 
						 
				 
			
				
					
						
							
							
								Péter Szilágyi 
							
						 
					 
					
						
						
						
						
							
						
						
							710435b51b 
							
						 
					 
					
						
						
							
							core, eth, trie: reuse trie journals in all our code  
						
						
						
					 
					
						2016-09-28 11:27:31 +03:00 
						 
				 
			
				
					
						
							
							
								Felix Lange 
							
						 
					 
					
						
						
						
						
							
						
						
							cd791bd855 
							
						 
					 
					
						
						
							
							core, trie: replace state caches with trie journal  
						
						
						
					 
					
						2016-09-28 11:27:28 +03:00 
						 
				 
			
				
					
						
							
							
								Péter Szilágyi 
							
						 
					 
					
						
						
						
						
							
						
						
							748d1c171d 
							
						 
					 
					
						
						
							
							core, core/state, trie: enterprise hand-tuned multi-level caching  
						
						
						
					 
					
						2016-05-26 16:33:09 +03:00 
						 
				 
			
				
					
						
							
							
								Péter Szilágyi 
							
						 
					 
					
						
						
						
						
							
						
						
							f3d4ce0d16 
							
						 
					 
					
						
						
							
							core/state, ethdb, trie: test intermediate secure key leak, fix memdb bug  
						
						
						
					 
					
						2016-01-20 16:06:28 +02:00 
						 
				 
			
				
					
						
							
							
								Péter Szilágyi 
							
						 
					 
					
						
						
						
						
							
						
						
							886478b18b 
							
						 
					 
					
						
						
							
							core/state, trie: don't leak database writes before commit  
						
						
						
					 
					
						2016-01-20 12:09:24 +02:00 
						 
				 
			
				
					
						
							
							
								zsfelfoldi 
							
						 
					 
					
						
						
						
						
							
						
						
							52904ae32f 
							
						 
					 
					
						
						
							
							trie: added error handling  
						
						... 
						
						
						
						Created alternate versions of Trie and SecureTrie functions that can return a MissingNodeError (used by ODR services) 
						
					 
					
						2015-12-01 01:38:32 +01:00 
						 
				 
			
				
					
						
							
							
								Felix Lange 
							
						 
					 
					
						
						
						
						
							
						
						
							565d9f2306 
							
						 
					 
					
						
						
							
							core, trie: new trie  
						
						
						
					 
					
						2015-09-22 22:53:49 +02:00 
						 
				 
			
				
					
						
							
							
								Felix Lange 
							
						 
					 
					
						
						
						
						
							
						
						
							bfbcfbe4a9 
							
						 
					 
					
						
						
							
							all: fix license headers one more time  
						
						... 
						
						
						
						I forgot to update one instance of "go-ethereum" in commit 3f047be5a 
						
					 
					
						2015-07-23 18:35:11 +02:00 
						 
				 
			
				
					
						
							
							
								Felix Lange 
							
						 
					 
					
						
						
						
						
							
						
						
							3f047be5aa 
							
						 
					 
					
						
						
							
							all: update license headers to distiguish GPL/LGPL  
						
						... 
						
						
						
						All code outside of cmd/ is licensed as LGPL. The headers
now reflect this by calling the whole work "the go-ethereum library". 
						
					 
					
						2015-07-22 18:51:45 +02:00 
						 
				 
			
				
					
						
							
							
								Felix Lange 
							
						 
					 
					
						
						
						
						
							
						
						
							ea54283b30 
							
						 
					 
					
						
						
							
							all: update license information  
						
						
						
					 
					
						2015-07-07 14:12:44 +02:00 
						 
				 
			
				
					
						
							
							
								obscuren 
							
						 
					 
					
						
						
						
						
							
						
						
							bbe795455a 
							
						 
					 
					
						
						
							
							Secure trie shakey / key matching  
						
						
						
					 
					
						2015-03-24 15:14:03 +01:00 
						 
				 
			
				
					
						
							
							
								obscuren 
							
						 
					 
					
						
						
						
						
							
						
						
							b909a5ec18 
							
						 
					 
					
						
						
							
							Trie => SecureTrie  
						
						
						
					 
					
						2015-03-03 12:25:44 +01:00 
						 
				 
			
				
					
						
							
							
								obscuren 
							
						 
					 
					
						
						
						
						
							
						
						
							bf5365b317 
							
						 
					 
					
						
						
							
							Delet => Delete  
						
						
						
					 
					
						2015-03-03 12:15:58 +01:00 
						 
				 
			
				
					
						
							
							
								obscuren 
							
						 
					 
					
						
						
						
						
							
						
						
							ae45a39dc1 
							
						 
					 
					
						
						
							
							Secure trie  
						
						
						
					 
					
						2015-02-28 20:52:29 +01:00