Commit Graph

7902 Commits

Author SHA1 Message Date
Felix Lange
177cab5fe7 trie: ensure resolved nodes stay loaded
Commit 40cdcf1183 broke the optimisation which kept nodes resolved
during Get in the trie. The decoder assigned cache generation 0
unconditionally, causing resolved nodes to get flushed on Commit.

This commit fixes it and adds two tests.
2016-10-18 04:57:47 +02:00
Felix Lange
187d6a66a5 trie: avoid loading the root node twice
New checks whether the root node is present by loading it from the
database. Keep the node around instead of discarding it.
2016-10-18 04:57:47 +02:00
Felix Lange
6952fe3a5c Merge pull request #3100 from kobigurk/develop
internal/ethapi, internal/web3ext: adds raw tx retrieval methods
2016-10-17 16:55:28 +02:00
Péter Szilágyi
b19b7c39ac Merge pull request #3142 from fjl/trie-sync-fix
trie: fix regression that linked all downloaded nodes together
2016-10-15 10:58:54 +03:00
Jeffrey Wilcke
9276c4e163 Merge pull request #3141 from obscuren/reprice-block-number
params: set reprice block number to 2463000
2016-10-15 00:50:45 +02:00
Felix Lange
2cd7a0395d trie: fix regression that linked all downloaded nodes together
The trie sync code links subtries using pointers into node structs.
Since commit 40cdcf1183 nodes are no longer copied when unpacking from
an interface value, causing all nodes to get linked up as the sync
progresses. Fix it by breaking the pointer chain with an explicit copy.
2016-10-15 00:42:52 +02:00
Jeffrey Wilcke
f2be249385 params: set reprice block number to 2463000 2016-10-15 00:36:49 +02:00
Péter Szilágyi
81b01f1c2b Merge pull request #3111 from obscuren/gas-price-fork
core, core/vm: added gas price variance table (EIP #150)
2016-10-14 19:32:11 +03:00
Péter Szilágyi
a4d9e63d12 Merge pull request #3138 from karalabe/txpool-pending-limits
core: add global (soft) limits on the pending transactions
2016-10-14 19:10:55 +03:00
Jeffrey Wilcke
64af2aafda core, core/vm: added gas price variance table
This implements 1b & 1c of EIP150 by adding a new GasTable which must be
returned from the RuleSet config method. This table is used to determine
the gas prices for the current epoch.

Please note that when the CreateBySuicide gas price is set it is assumed
that we're in the new epoch phase.

In addition this PR will serve as temporary basis while refactorisation
in being done in the EVM64 PR, which will substentially overhaul the gas
price code.
2016-10-14 18:09:17 +02: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
182d9cb752 core: add global (soft) limits on the pending transactions 2016-10-14 15:57:58 +03:00
Péter Szilágyi
c2ddfb343a Merge pull request #3136 from Arachnid/expvar
metrics, internal/debug: Add --pprofaddr flag, expose metrics via gexp
2016-10-14 15:01:59 +03:00
Nick Johnson
9e9bfc4e26 metrics, internal/debug: Add --pprofaddr flag, expose metrics via gexp 2016-10-14 12:29:08 +01:00
Viktor Trón
f63c6c008f Merge pull request #3133 from ethersphere/http-fix
swarm: fix http API's last problems
2016-10-13 12:43:57 -07:00
Daniel A. Nagy
eb2f01aee8 swarm/storage: Allow EOF at the end of the reader in the chunker. Handle the case when Read returns less than length of target slice 2016-10-13 21:23:28 +02:00
Felix Lange
30fb5c3e81 Merge pull request #3108 from homotopycolimit/FixChunkerWithBrokenReader
swarm/storage: fixes for tree chunker in the context of a broken reader
2016-10-13 19:45:29 +02:00
Felix Lange
c780901cd5 Merge pull request #3120 from obscuren/reporter-fix
core: fixed import reporter
2016-10-12 20:14:19 +02:00
Jeffrey Wilcke
ca419f3cd8 core: fixed import reporter 2016-10-11 00:16:08 +02:00
aron
a45421baaf swarm/storage: fix chunker when reader is broken
* brokenLimitedReader gives error after half size
* TestRandomBrokenData tests chunker with broken reader
* add blocking quitC (instead of errC) and use errC only for errors
* don't close chunkC in tester Split,
* use quitC to quit chunk storage loop
2016-10-10 23:34:44 +02:00
Felix Lange
be6a3696a9 Merge pull request #3104 from fjl/core-import-log
core: print import stats more often
2016-10-10 20:38:27 +02:00
Felix Lange
7943ecb812 Merge pull request #3117 from fjl/txpool-low-limit
core: lower transaction pool max queue limit
2016-10-10 16:06:10 +02:00
Felix Lange
16d8397e30 core: lower transaction pool max queue limit 2016-10-10 15:32:06 +02:00
Kobi Gurkan
1a6682c21d internal/ethapi, internal/web3ext: adds raw tx retrieval methods 2016-10-10 12:57:15 +03:00
Felix Lange
82b14a05f2 eth: move "timed out DAO fork check, dropping" to debug level 2016-10-07 21:03:38 +02:00
Felix Lange
e66b158f0b core: print import stats more often
If geth is busy importing 2048 heavy blocks it can take a while before
it prints anything. This change ensures that a message gets printed
every 8s.
2016-10-07 21:03:38 +02:00
Felix Lange
c88e435724 Merge pull request #3088 from bas-vk/rpc-block-output
core/types: renamed receiptRoot to receiptsRoot
2016-10-06 18:32:27 +02:00
Felix Lange
eeb2a1a6e3 Merge pull request #3094 from fjl/tests-update
tests: update test files from github.com/ethereum/tests @ 45bc1d21d3c1
2016-10-06 16:19:53 +02:00
Jeffrey Wilcke
7335a70a02 Merge pull request #3092 from fjl/state-journal
core/state: implement reverts by journaling all changes
2016-10-06 16:14:22 +02:00
Felix Lange
1b7b2ba216 tests: update test files from github.com/ethereum/tests @ 45bc1d21d3c1
Two new tests are skipped because they're buggy. Making some newer
random state tests work required implementing the 'compressed return
value encoding'.
2016-10-06 15:36:21 +02:00
Felix Lange
3c836dd71b core/state: optimize GetState
There is no need to use the reflection-based decoder to decode []byte.
2016-10-06 15:32:17 +02:00
Felix Lange
90fce8bfa6 core/state: rename Delete/IsDeleted to Suicide/HasSuicided
The delete/remove naming has caused endless confusion in the past.
2016-10-06 15:32:17 +02:00
Felix Lange
1f1ea18b54 core/state: implement reverts by journaling all changes
This commit replaces the deep-copy based state revert mechanism with a
linear complexity journal. This commit also hides several internal
StateDB methods to limit the number of ways in which calling code can
use the journal incorrectly.

As usual consultation and bug fixes to the initial implementation were
provided by @karalabe, @obscuren and @Arachnid. Thank you!
2016-10-06 15:32:16 +02:00
Jeffrey Wilcke
07caa3fccd Merge pull request #3090 from karalabe/fix-eth-header-indexing
eth: monitor malicious header retrieval requests
2016-10-06 13:52:08 +02:00
Felix Lange
83fc6fdb34 Merge pull request #3089 from bas-vk/resend
internal/ethapi: bugfix gas price and limit swapped in eth_resend
2016-10-06 01:42:42 +02:00
Péter Szilágyi
2acb9a6ea7 Merge pull request #3081 from ethernomad/cors-max-age
rpc: set CORS Max-Age to reduce preflight OPTIONS requests
2016-10-05 16:47:10 +03:00
Péter Szilágyi
e482b5694f eth: monitor malicious header retrieval requests 2016-10-05 16:34:07 +03:00
Bas van Kervel
6c959207db internal/ethapi: bugfix gas price and limit swapped in eth_resend 2016-10-05 14:21:03 +02:00
Bas van Kervel
71e8ae01b8 core/types: renamed receiptRoot to receiptsRoot 2016-10-05 12:24:42 +02:00
Felix Lange
a7cc3248fe Merge pull request #3082 from fjl/build-fix-tag-appveyor
internal/build: fix git tag env variable for AppVeyor
2016-10-03 20:28:04 +02:00
Felix Lange
82e09c17a9 internal/build: fix git tag env variable for AppVeyor 2016-10-03 17:19:43 +02:00
Jonathan Brown
ae341b31c8 rpc: set CORS Max-Age to reduce preflight OPTIONS requests 2016-10-03 20:24:58 +07:00
Péter Szilágyi
ab7adb0027 Merge pull request #3073 from fjl/build-git17
internal/build: use less edgy command to get the branch name
2016-10-03 11:34:28 +03:00
Felix Lange
b4b5921dd0 internal/build: use less edgy command to get the branch name 2016-10-03 10:22:14 +02:00
Péter Szilágyi
c683e4aaa2 Merge pull request #3072 from karalabe/state-storage-dirty
core/state: track dirty state entries for each object
2016-10-03 11:15:48 +03:00
Péter Szilágyi
b7159818f9 core/state: track dirty state entries for each object 2016-10-03 10:48:01 +03:00
Péter Szilágyi
d4b55fc5b2 Merge pull request #3066 from fjl/build-env
build: improve debian packaging
2016-10-02 14:44:30 +03:00
Felix Lange
4f7627972e build: improve debian packaging
This commit tweaks the debian packaging tool:

* All build environment metadata can now be overriden on the command
  line. This allows testing the CI build behaviour locally.
* -unstable packages now actually contain the binaries (oops)
* packages use Go 1.7 to build
* archiving is skipped for PR builds
2016-10-02 13:08:56 +02:00
Felix Lange
920e1ccfe0 Merge pull request #3068 from fjl/update-sha3
crypto/sha3: update from golang.org/x/crypto/sha3 a 80b25ed4
2016-10-01 21:45:29 +02:00
Felix Lange
54ea317375 crypto/sha3: update from golang.org/x/crypto/sha3 a 80b25ed4
This pulls in the assembly implementation of keccakf1600 for amd64.
2016-10-01 21:26:43 +02:00