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