Commit Graph

1116 Commits

Author SHA1 Message Date
Péter Szilágyi
28c7b54d68 core: fix #1921, decode all receipt field, not just consensus 2015-10-22 13:09:30 +03:00
Jeffrey Wilcke
58d0752fdd Merge pull request #1883 from obscuren/jit-vm-optimisations
core/vm: JIT segmentation
2015-10-21 12:34:32 -07:00
Jeffrey Wilcke
0467a6ceec Merge pull request #1889 from karalabe/fast-sync-rebase
eth/63 fast synchronization algorithm
2015-10-21 11:44:22 -07:00
Péter Szilágyi
5b0ee8ec30 core, eth, trie: fix data races and merge/review issues 2015-10-21 16:49:55 +03:00
Jeffrey Wilcke
80f26086ee core, tests: get_hash fix
Make sure that we're fetching the hash from the current chain and not
the canonical chain.
2015-10-21 02:31:46 +02:00
Péter Szilágyi
a9d8dfc8e7 core, eth: roll back uncertain headers in failed fast syncs 2015-10-19 10:03:10 +03:00
Péter Szilágyi
b97e34a8e4 eth/downloader: concurrent receipt and state processing 2015-10-19 10:03:10 +03:00
Péter Szilágyi
ab27bee25a core, eth, trie: direct state trie synchronization 2015-10-19 10:03:09 +03:00
Péter Szilágyi
832b37c822 core, eth: receipt chain reconstruction 2015-10-19 10:03:09 +03:00
Péter Szilágyi
42c8afd440 core: differentiate receipt concensus and storage decoding 2015-10-19 10:03:09 +03:00
Péter Szilágyi
b99fe27f8b core: fix block canonical mark / content write race 2015-10-19 10:03:09 +03:00
Péter Szilágyi
f186b39018 eth/downloader: add fast and light sync strategies 2015-10-19 10:03:09 +03:00
Péter Szilágyi
c33cc382b3 core: support inserting pure header chains 2015-10-19 10:03:09 +03:00
Felix Lange
de8d5aaa92 core, core/state: move gas tracking out of core/state
The amount of gas available for tx execution was tracked in the
StateObject representing the coinbase account. This commit makes the gas
counter a separate type in package core, which avoids unintended
consequences of intertwining the counter with state logic.
2015-10-17 10:24:34 +02:00
Jeffrey Wilcke
8c85532412 core/vm: added parsing utilities 2015-10-16 22:30:42 +02:00
Jeffrey Wilcke
b196278044 core/vm: added JIT segmenting / optimisations
* multi-push segments
* static jumps segments
2015-10-16 22:30:42 +02:00
Jeffrey Wilcke
9d61d78de6 core/vm: abstracted instruction execution away from JIT
Moved the execution of instructions to the instruction it self. This
will allow for specialised instructions (e.g. segments) to be execution
in the same manner as regular instructions.
2015-10-16 22:17:35 +02:00
Jeffrey Wilcke
10ed107ba2 Merge pull request #1899 from obscuren/mipmap-bloom
core, eth/filters, miner, xeth: Optimised log filtering
2015-10-16 12:35:24 -07:00
Jeffrey Wilcke
6dc14788a2 core, eth/filters, miner, xeth: Optimised log filtering
Log filtering is now using a MIPmap like approach where addresses of
logs are added to a mapped bloom bin. The current levels for the MIP are
in ranges of 1.000.000, 500.000, 100.000, 50.000, 1.000. Logs are
therefor filtered in batches of 1.000.
2015-10-16 21:28:59 +02:00
Jeffrey Wilcke
d5327ddc5f Merge pull request #1869 from Gustav-Simonsson/gpu_miner
all: Add GPU mining, disabled by default
2015-10-16 06:25:33 -07:00
Gustav Simonsson
1b1f293082 core/state, core, miner: handle missing root error from state.New 2015-10-16 02:22:06 +02:00
Jeffrey Wilcke
30f057aaf9 eth/filters: added benchmark 2015-10-15 19:45:44 +02:00
Jeffrey Wilcke
cefe5c80b1 Merge pull request #1898 from karalabe/eventmux-post-race
core, eth, event, miner, xeth: fix event post / subscription race
2015-10-15 10:44:30 -07:00
Péter Szilágyi
402fd6e8c6 core, eth, event, miner, xeth: fix event post / subscription race 2015-10-12 16:22:03 +03:00
Péter Szilágyi
af9afb686b core/vm: copy stack element to prevent overwrites 2015-10-12 00:14:35 +03:00
Jeffrey Wilcke
315a422ba7 Merge pull request #1888 from obscuren/testnet
cmd, core, eth: added official testnet
2015-10-09 01:31:37 -07:00
Jeffrey Wilcke
1de796f101 cmd, core, eth: added official testnet 2015-10-08 22:01:39 +02:00
Jeffrey Wilcke
bba4dcb72f Merge pull request #1880 from Gustav-Simonsson/core_transfer
core, core/vm, cmd/evm: remove redundant balance check
2015-10-08 11:32:30 -07:00
Gustav Simonsson
ec6a548ee3 all: Add GPU mining, disabled by default 2015-10-07 13:19:30 +02:00
Jeffrey Wilcke
f8786defd0 Merge pull request #1850 from karalabe/genesis-block-receipts
core: fix #1848, block receipts db entry for the genesis too
2015-10-07 01:50:37 -07:00
Gustav Simonsson
e1616f77c7 core, core/vm, cmd/evm: remove redundant balance check 2015-10-06 12:42:34 +02:00
Jeffrey Wilcke
20ab29f885 core: fixed head write on block insertion
Due to a rebase this probably got overlooked / ignored. This fixes the
issue of a block insertion never writing the last block.
2015-10-05 17:00:59 +02:00
Jeffrey Wilcke
7c7692933c cmd/geth, cmd/utils, core, rpc: renamed to blockchain
* Renamed ChainManager to BlockChain
* Checkpointing is no longer required and never really properly worked
when the state was corrupted.
2015-10-04 01:13:56 +02:00
Jeffrey Wilcke
361082ec4b cmd/evm, core/vm, test: refactored VM and core
* Moved `vm.Transfer` to `core` package and changed execution to call
`env.Transfer` instead of `core.Transfer` directly.
* core/vm: byte code VM moved to jump table instead of switch
* Moved `vm.Transfer` to `core` package and changed execution to call
  `env.Transfer` instead of `core.Transfer` directly.
* Byte code VM now shares the same code as the JITVM
* Renamed Context to Contract
* Changed initialiser of state transition & unexported methods
* Removed the Execution object and refactor `Call`, `CallCode` &
  `Create` in to their own functions instead of being methods.
* Removed the hard dep on the state for the VM. The VM now
  depends on a Database interface returned by the environment. In the
  process the core now depends less on the statedb by usage of the env
* Moved `Log` from package `core/state` to package `core/vm`.
2015-10-04 01:13:54 +02:00
Jeffrey Wilcke
f7a71996fb core, event/filter, xeth: refactored filter system
Moved the filtering system from `event` to `eth/filters` package and
removed the `core.Filter` object. The `filters.Filter` object now
requires a `common.Database` rather than a `eth.Backend` and invokes the
`core.GetBlockByX` directly rather than thru a "manager".
2015-10-02 22:47:43 +02:00
Jeffrey Wilcke
a6cc02f68f core: deadlock in chainmanager after posting RemovedTransactionEvent
This PR solves an issue with the chain manager posting a
`RemovedTransactionEvent`, the tx pool will try to
acquire the chainmanager lock which has previously been locked prior to
posting `RemovedTransactionEvent`. This results in a deadlock in the
core.
2015-10-02 12:20:18 +02:00
Jeffrey Wilcke
49ae538506 Merge pull request #1405 from fjl/lean-trie
core, trie: new trie
2015-10-01 04:34:38 -07:00
Péter Szilágyi
b8b996be74 core: fix a formatting loop in BadHashError 2015-09-29 09:11:38 +03:00
Péter Szilágyi
830ddcee60 core: fix #1848, block receipts db entry for the genesis too 2015-09-24 19:38:59 +03:00
Felix Lange
a2d5a60418 core, core/state: batch-based state sync 2015-09-22 22:57:37 +02:00
Felix Lange
565d9f2306 core, trie: new trie 2015-09-22 22:53:49 +02:00
Gustav Simonsson
bfde1a4305 core: Add BadHashErr and test for BadHashes handling 2015-09-22 18:02:26 +02:00
Felix Lange
70b6174748 cmd/geth, core: make "geth blocktest" work again
The test genesis block was not written properly, block insertion failed
immediately.

While here, fix the panic when shutting down "geth blocktest" with
Ctrl+C. The signal handler is now installed automatically, causing
ethereum.Stop to crash because everything is already stopped.
2015-09-22 23:55:31 +02:00
Jeffrey Wilcke
eaa4473dbd core, core/types: readd transactions after chain re-org
Added a `Difference` method to `types.Transactions` which sets the
receiver to the difference of a to b (NOTE: not a **and** b).

Transaction pool subscribes to RemovedTransactionEvent adding back to
those potential missing from the chain.

When a chain re-org occurs remove any transactions that were removed
from the canonical chain during the re-org as well as the receipts that
were generated in the process.

Closes #1746
2015-09-21 20:33:28 +02:00
Péter Szilágyi
399c920380 core: separate and contain POW verifier, extensive tests 2015-09-21 10:24:49 +03:00
Jeffrey Wilcke
b94b9b0158 Merge pull request #1817 from obscuren/nonce-fix
core: transaction nonce recovery
2015-09-18 15:56:10 -07:00
Jeffrey Wilcke
b60a27627b core: transaction nonce recovery fix
When the transaction state recovery kicked in it assigned the last
(incorrect) nonce to the pending state which caused transactions with
the same nonce to occur.

Added test for nonce recovery
2015-09-18 11:59:21 +02:00
Péter Szilágyi
6f3cb12924 core: allow modifying test-chain block times 2015-09-17 13:43:52 +03:00
Jeffrey Wilcke
58fbcaa750 Merge pull request #1810 from karalabe/pure-header-verifications-2
core, eth, miner: use pure header validation
2015-09-16 14:21:12 -07:00
Péter Szilágyi
821619e1c3 core, eth, miner: use pure header validation 2015-09-16 10:46:28 +03:00
Felix Lange
8c4dab77ba all: move common.Database to package ethdb 2015-09-14 23:36:30 +02:00
Jeffrey Wilcke
55ed8d108d Merge pull request #1789 from Gustav-Simonsson/core_remove_unused_functions
core, core/vm, core/state: remove unused functions
2015-09-11 15:29:27 -07:00
Péter Szilágyi
cdc2662c40 core: split out TD from database and all internals 2015-09-11 17:42:25 +03:00
Péter Szilágyi
2b339cbbd8 core, eth: split the db blocks into headers and bodies 2015-09-11 17:42:25 +03:00
Gustav Simonsson
b81a6e6ab8 core, core/vm, core/state: remove unused functions 2015-09-10 21:10:58 +02:00
Gustav Simonsson
bf879ef230 core/state: test formatting adhering to Go convention 2015-09-09 00:26:18 +02:00
Gustav Simonsson
004ed786b4 core/state: deleted field in StateObject Copy() and unit test 2015-09-08 15:56:11 +02:00
Felix Lange
00b45acb9e core: improve block gas tracking 2015-09-01 23:11:03 +02:00
Maran
67225de255 Filter on addresses should work as an OR not an AND. 2015-09-01 09:19:45 +02:00
Felix Lange
6ec13e7e2b Merge pull request #1701 from karalabe/eth62-sync-rebase
eth: implement eth/62 synchronization logic
2015-08-27 00:03:59 +02:00
Péter Szilágyi
47a7fe5d22 eth: port the synchronisation algo to eth/62 2015-08-25 17:48:47 +03:00
Gustav Simonsson
7324176f70 Add tests for uncle timestamps and refactor timestamp type 2015-08-25 04:46:11 +02:00
Jeffrey Wilcke
3793991c0e remove 0x 2015-08-20 18:50:47 +02:00
Jeffrey Wilcke
b884d6ebaa canary update 2015-08-20 18:38:21 +02:00
Jeffrey Wilcke
36f7fe61c3 core, tests: Double SUICIDE fix 2015-08-20 18:22:50 +02:00
Jeffrey Wilcke
b4369e1015 core, miner: write miner receipts 2015-08-18 21:46:26 +02:00
Jeffrey Wilcke
9cacec70f9 cmd/evm, core/vm, tests: changed DisableVm to EnableVm 2015-08-11 18:43:22 +02:00
Jeffrey Wilcke
32395ddb89 core/vm: fixed jit error & added inline docs
opNumber did not create a new big int which could lead to the block's
number being modified.
2015-08-11 00:16:38 +02:00
Jeffrey Wilcke
2fcf7f1241 Merge pull request #1604 from obscuren/db-merge
core, eth, trie, xeth: merged state, chain, extra databases in one
2015-08-09 05:16:37 -07:00
Jeffrey Wilcke
07cb8092e7 Merge pull request #1611 from obscuren/expdiff-olympic-fix
cmd/utils, core: disable exp diff for olympic net
2015-08-09 05:15:13 -07:00
Jeffrey Wilcke
eec38c5853 cmd/geth, core/vm: setup vm settings and defaulted JIT disabled 2015-08-09 02:06:16 +02:00
Jeffrey Wilcke
a23478c0be core, eth, trie, xeth: merged state, chain, extra databases in one 2015-08-07 22:29:02 +02:00
Jeffrey Wilcke
ac697326a6 core/vm: reduced big int allocations
Reduced big int allocation by making stack items modifiable. Instead of
adding items such as `common.Big0` to the stack, `new(big.Int)` is
added instead. One must expect that any item that is added to the stack
might change.
2015-08-07 12:52:23 +02:00
Jeffrey Wilcke
184e9ae9a8 core, tests: reduced state copy by N calls
Reduced the amount of state copied that are required by N calls by doing
a balance check prior to any state modifications.
2015-08-07 12:52:23 +02:00
Jeffrey Wilcke
846f34f78b core/vm, tests: implemented semi-jit vm
* changed stack and removed stack ptr. Let go decide on slice reuse.
2015-08-07 12:52:17 +02:00
Jeffrey Wilcke
74f6d90153 cmd/utils, core: disable exp diff for olympic net 2015-08-06 13:29:06 +02:00
Jeffrey Wilcke
35f271b264 miner, core: sort txs by price, nonce 2015-08-05 17:44:19 +02:00
Jeffrey Wilcke
71d32f54f7 core, miner: added difficulty bomb 2015-08-05 13:09:09 +02:00
Gustav Simonsson
26c6e3b206 miner: gas limit strategy, target 3141592 & def gas price 50 Shannon 2015-08-04 15:20:28 +02:00
Jeffrey Wilcke
cc6c5846e5 Merge pull request #1568 from obscuren/issue-1559
core: added a running flag to prevent panics in the chainmanager
2015-08-03 07:15:19 -07:00
Jeffrey Wilcke
db988a46dd Merge pull request #1569 from obscuren/default-genesis
core: added default genesis block
2015-08-03 04:49:30 -07:00
Jeffrey Wilcke
7a75da63c6 core: added default genesis block
When a user runs a freshly setup geth w/o a database initialised the
default genesis block is decoded and inserted in to the database.
2015-08-02 01:23:02 +02:00
Jeffrey Wilcke
33efb3381c Merge pull request #1461 from bas-vk/eth_resend
Old transaction after resend was not removed from pool
2015-08-01 16:18:54 -07:00
Jeffrey Wilcke
a8b39b5cc0 Merge pull request #1541 from bas-vk/issue1518
Improved error handling for NewTransactionFromBytes
2015-08-01 08:47:32 -07:00
Jeffrey Wilcke
acd2c4e520 core: added a running flag to prevent panics in the chainmanager
The running flag will determine whether the chain manager is still
running or not. This will prevent the quit channel from being closed
twice resulting in a panic. This PR should fix this issue.

Closes #1559
2015-08-01 12:32:28 +02:00
Jeffrey Wilcke
f715547fc7 core/state: Set log index. Closes #1226 2015-07-29 15:08:59 +02:00
Bas van Kervel
81e2124ea2 improved error detection and handling for NewTransactionFromBytes
integrated review comments
2015-07-29 10:30:00 +02:00
Jeffrey Wilcke
1fad8798ec Merge pull request #1515 from fjl/license-fixes
all: fix license headers one more time
2015-07-28 04:29:42 -07:00
Bas van Kervel
7e31df3987 bugfix, pending transaction was resend with new gas price/limit but not removed from transaction pool 2015-07-28 10:42:31 +02:00
Jeffrey Wilcke
3530acb9e2 core: genesis extra data field fix 2015-07-26 14:44:54 +02:00
Jeffrey Wilcke
c1c895a36b core: fixed genesis write out to write only canon number 2015-07-25 21:48:53 +02:00
Jeffrey Wilcke
665eaff9b9 Merge pull request #1520 from obscuren/reward-5eth
core: 5 ether block reward
2015-07-25 08:57:33 -07:00
Jeffrey Wilcke
9afda6ab8c core: 5 ether block reward 2015-07-25 17:47:20 +02:00
Jeffrey Wilcke
0efcd7ed05 Merge pull request #1521 from obscuren/client-update
cmd/geth, core, eth: Version 1.0.0
2015-07-25 08:36:04 -07:00
Jeffrey Wilcke
0c718afe90 core: check genesis block before writeout 2015-07-25 16:53:35 +02:00
Jeffrey Wilcke
036e6301af cmd/geth, core, eth: Version 1.0.0
Genesis release. Closes #1402

Conflicts:
	cmd/geth/main.go
2015-07-25 13:55:56 +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
Jeffrey Wilcke
8fc9830971 cmd/core,xeth: removed unneeded states & added batch writes 2015-07-23 10:45:31 +02:00
Jeffrey Wilcke
0cff61beda Merge pull request #1510 from fjl/license-fixes
all: license fixes
2015-07-23 01:43:11 -07:00
Jeffrey Wilcke
b403b9e4c3 Merge pull request #1508 from karalabe/database-caching
cmd, core, eth, ethdb: cache flag to allocate memory for db internal use
2015-07-23 01:17:18 -07:00
Péter Szilágyi
04bb89604e core: fix an RLP encoding data race due to deep struct copy 2015-07-22 20:54:53 +03: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
Péter Szilágyi
c7e7778f2a cmd, core, eth, ethdb: cache flag to allocate memory for db internal use 2015-07-22 14:00:52 +03:00
Vitalik Buterin
8160b8618d Fixed canary to require 2+ nonzero, not sum 2+ 2015-07-20 16:28:28 +02:00
Jeffrey Wilcke
e17d8ddbeb core: during chain reorg rewrite receipts and transactions
Added PutBlockReceipts; storing receipts by blocks. Eventually this will
require pruning during some cleanup cycle. During forks the receipts by
block are used to get the new canonical receipts and transactions.

This PR fixes #1473 by rewriting transactions and receipts from the point
of where the fork occured.
2015-07-14 18:40:03 +02:00
Jeffrey Wilcke
a32c51effd cmd, core, eth, common: genesis preparation
Implemented the --genesis flag thru which we can set a custom genesis
block, including the official Ethereum genesis block.
2015-07-10 17:37:41 +02:00
Jeffrey Wilcke
8b5a65c14a core/vm: added str to op 2015-07-09 17:08:33 +02:00
Jeffrey Wilcke
97d22be318 Merge pull request #1441 from obscuren/logs-return-fix
miner, xeth: fire log event during mining. Fix return raw tx
2015-07-09 07:24:35 -07:00
Jeffrey Wilcke
819ecd4508 miner, xeth: fire log event during mining. Fix return raw tx 2015-07-08 15:34:11 +02:00
Gustav Simonsson
5d6d40f329 Use uint64 on ts in chain_manager, block_processor 2015-07-08 13:21:06 +02:00
Felix Lange
4fb28e0dab all: goimports -w 2015-07-07 14:12:45 +02:00
Felix Lange
bdae4fd573 all: add some godoc synopsis comments 2015-07-07 14:12:45 +02:00
Felix Lange
ea54283b30 all: update license information 2015-07-07 14:12:44 +02:00
Jeffrey Wilcke
666a7dda36 core, eth, rpc: proper gas used. Closes #1417
Added some additional backward compatibility code for old receipts
2015-07-06 21:18:24 +02:00
Jeffrey Wilcke
e6bb9c1cad core, miner: removed vm errors from consensus err checking
Removed VM errors from the consensus errors. They now used for output
only.
2015-07-06 12:43:05 +02:00
Jeffrey Wilcke
aa4502060b Merge pull request #1400 from obscuren/badblock-reporting
core, miner, tests: added test, implemented bad block reporting
2015-07-06 02:03:50 -07:00
Jeffrey Wilcke
b533aaa765 Merge pull request #1409 from fjl/fix-tx-hash
core/types, xeth: separate tx hash and tx signature hash
2015-07-06 01:59:41 -07:00
Felix Lange
ec9620fb2f core/types, xeth: separate tx hash and tx signature hash 2015-07-06 10:45:45 +02:00
Jeffrey Wilcke
bcc1660abc core, miner, tests: added test, implemented bad block reporting 2015-07-05 15:14:31 +02:00
Gustav Simonsson
0f04af5916 Fix core error forwarding, unify OOG VM err 2015-07-04 09:27:42 +02:00
Jeffrey Wilcke
ab16ce70fc core, miner, tests: renamed state methods
* Update => SyncIntermediate
* Added SyncObjects

SyncIntermediate only updates whatever has changed, but, as a side
effect, requires much more disk space.

SyncObjects will only sync whatever is required for a block and will not
save intermediate state to disk. As drawback this requires more time
when more txs come in.
2015-07-04 02:51:36 +02:00
Jeffrey Wilcke
08caeedd84 core, core/state: only write necessary state. Skip intermediate 2015-07-04 02:51:36 +02:00
Jeffrey Wilcke
2feb23c1da core, eth, miner, xeth: receipt storage fix
* Added GetReceiptsFromBlock, GetReceipt, PutReceipts
* Added ContractAddress to receipt. See #1042
2015-07-04 02:32:10 +02:00
Jeffrey Wilcke
1cbab291a9 Merge pull request #1389 from obscuren/txpool-issues
core, miner: miner header validation, transaction & receipt writing
2015-07-03 07:50:30 -07:00
Taylor Gerring
6afdc52483 Prevent debug value from printing on console 2015-07-03 07:40:47 -05:00
Jeffrey Wilcke
29e2fb38f8 core, miner: miner header validation, transaction & receipt writing
* Miners do now verify their own header, not their state.
* Changed old putTx and putReceipts to be exported
* Moved writing of transactions and receipts out of the block processer
  in to the chain manager. Closes #1386
* Miner post ChainHeadEvent & ChainEvent. Closes #1388
2015-07-03 13:56:50 +02:00
Vitalik Buterin
9f6016e877 Merge branch 'develop' of github.com:ethereum/go-ethereum into develop 2015-07-02 05:27:31 -04:00
Jeffrey Wilcke
75f41dedca Merge pull request #1378 from obscuren/issue1367
core, xeth: core.AddressFromMessage removed => crypto.CreateAddress
2015-07-02 02:27:20 -07:00
Vitalik Buterin
744af9f497 Switched canary addresses 2015-07-02 05:27:19 -04:00
Jeffrey Wilcke
529fb7a7d7 core, xeth: core.AddressFromMessage removed => crypto.CreateAddress 2015-07-02 11:19:10 +02:00
Jeffrey Wilcke
70d5d791cc core, cmd/geth: improved recover functionality
`geth recover` now accepts both hashes and numbers using "#" and no
longer requires the ethereum instance.
2015-07-01 16:34:35 +02:00
Jeffrey Wilcke
bb418a43c1 Merge pull request #1370 from obscuren/force-checkpoint
core, cmd/geth: recover by number
2015-07-01 03:57:13 -07:00
Jeffrey Wilcke
29ab1fa8a5 core, cmd/geth: recover by number 2015-07-01 00:52:44 +02:00
Jeffrey Wilcke
a748afce03 core: txpool listen for ChainHeadEvent instead of ChainEvent
Changed the transaction pool to listen for ChainHeadEvent when resetting
the state instead of ChainEvent. It makes very little sense to burst
through transactions while we are catching up (e.g., have more than one
block to process)
2015-06-30 17:27:47 +02:00
Jeffrey Wilcke
c14f0a4471 core: added checkpoint for last block
* Add a checkpoint every X blocks
* Removed queued write
2015-06-30 17:27:47 +02:00
Jeffrey Wilcke
61ca780f3b core: reduce CPU load by reducing calls to checkQueue
* Reduced maxQueue count
* Added proper deletion past maxQueue limit
* Added cheap stats method to txpool

queueCheck was called for **every** transaction instead of:
1. add all txs
2. check queue

previously

1. add txs[i]
2. check queue
3. if i < len(txs) goto 1.
2015-06-30 14:01:12 +02:00
Jeffrey Wilcke
d8fe64acaa core, miner: added queued write to WriteBlock
This fixes an issue with the lru cache not being available when calling
WriteBlock. WriteBlock previously always assumed to be called from the
InsertChain where the lru cache was always created prior to calling
WriteBlock. When being called from the worker this could lead in to a
nil pointer exception being thrown and causing database corruption.
2015-06-30 11:14:43 +02:00
Gustav Simonsson
4c490db6af Use uint64 for block header timestamp 2015-06-30 10:52:11 +02:00
Péter Szilágyi
5f3792c2a7 cmd/geth: decent error message if metrics are disabled 2015-06-30 00:57:55 +02:00
Péter Szilágyi
01fe972113 cmd, core, eth, metrics, p2p: require enabling metrics 2015-06-30 00:51:46 +02:00
Jeffrey Wilcke
992e4f83cb core: replaced BlockCache with lru.Cache 2015-06-30 00:36:25 +02:00
Jeffrey Wilcke
a8ebf756c7 Merge branch 'miner-broadcast' into core-optimisations-2
Conflicts:
	core/chain_manager.go
	miner/worker.go
2015-06-29 18:55:49 +02:00
Jeffrey Wilcke
e349fac97d core: fixed tests 2015-06-29 18:51:49 +02:00
Jeffrey Wilcke
aba901e13c core: removed write's go routine 2015-06-29 18:51:49 +02:00
obscuren
07db098ccf core: renamed next to pending & fixed tests 2015-06-29 18:51:49 +02:00
obscuren
855e76fddd core: reduced cache limit to 256 2015-06-29 18:51:49 +02:00
obscuren
6ca3a44638 core: switched to proper LRU 2015-06-29 18:51:49 +02:00
obscuren
4460dc9d1a core: added LRU caching and added batch writing when LDB is used 2015-06-29 18:51:49 +02:00
Felix Lange
76821d167a core, eth, rpc: avoid unnecessary block header copying 2015-06-29 18:51:48 +02:00
Felix Lange
fccc7d71eb core: remove superfluous big.Int allocations
With blocks now being immutable, use big.Int values from
accessor functions instead of copying their results.
2015-06-29 18:51:48 +02:00
Felix Lange
d0bb90c69e core: generate benchmark keys only once 2015-06-29 18:51:48 +02:00
Felix Lange
992dc74efd core: avoid duplicate calls to Transaction.Data 2015-06-29 18:51:48 +02:00
Felix Lange
0b22ad99c1 core: optimize IntrinsicGas 2015-06-29 18:51:48 +02:00
Felix Lange
a8889b092b core/types: cache computed block values 2015-06-29 18:51:48 +02:00
Felix Lange
11b8d1df59 core/types: cache computed transaction values 2015-06-29 18:51:48 +02:00
Felix Lange
c3d6228023 core: add InsertChain benchmarks 2015-06-29 18:51:47 +02:00
Felix Lange
ceaf1c080b core: add GenerateChain, GenesisBlockForTesting 2015-06-29 18:51:47 +02:00
Felix Lange
1d42888d30 core/types: make blocks immutable 2015-06-29 18:51:47 +02:00
Felix Lange
654564e164 core/types: make transactions immutable 2015-06-29 18:51:47 +02:00
Jeffrey Wilcke
b39042db56 core, miner: implemented canary 2015-06-29 13:31:49 +02:00
Jeffrey Wilcke
d1e93db3eb core, miner: added write block method & changed mining propagation 2015-06-29 13:31:49 +02:00
Péter Szilágyi
792b0ddccd core, eth, eth/fetcher, ethdb: polish metrics gathering a bit 2015-06-24 18:34:04 +03:00
Péter Szilágyi
43e4a6501b core, ethdb: instrument the block and state db
Conflicts:
	ethdb/database.go
2015-06-24 18:34:04 +03:00
Péter Szilágyi
7f92e708c5 cmd/geth, core: impl. percentile reporting, instrument insertions 2015-06-24 18:34:04 +03:00
Bas van Kervel
a4a4e9fcf8 removed old rpc structure and added new inproc api client 2015-06-22 09:17:09 +02:00
Jeffrey Wilcke
9cf7913c61 Merge pull request #1304 from obscuren/state-renames
core, miner, xeth: renamed gas methods
2015-06-21 16:49:47 -07:00
obscuren
07c3de3f75 core, miner, xeth: renamed gas methods
* BuyGas => SubGas
* RefundGas => AddGas
* SetGasPool => SetGasLimit
2015-06-21 17:09:19 +02:00
obscuren
c590b505ed core, ethdb, trie: validate database errors 2015-06-21 16:59:15 +02:00
obscuren
430bcdb219 core/vm: clarified SSTORE 2015-06-18 12:25:02 +02:00
obscuren
15e169e5b6 core: ValidatedHeader (method => function)
Changed header validation method to function in preparation of
@karalabe's PR.
2015-06-18 11:47:50 +02:00
obscuren
f5abc9f188 core, core/vm: state improvements and tx pool speed up
Removed full tx validation during state transitions
2015-06-17 17:10:22 +02:00
obscuren
753d62a4dd core: TMP testing code 2015-06-17 17:10:13 +02:00
obscuren
bdd63837ea core/state: removed trie copy 2015-06-17 13:39:19 +02:00
obscuren
aa699a1283 core/state: removed state from state object 2015-06-17 13:27:51 +02:00
obscuren
aaddc99c35 core/state: fixed state tests 2015-06-17 12:53:22 +02:00
obscuren
30b27336ea core/state: remove the need for common.Value 2015-06-17 11:30:42 +02:00
obscuren
787a61bb27 core/state, core/vm: reworked storage get / set to use common.Hash 2015-06-17 11:24:40 +02:00
obscuren
5721fcf668 core/state, core/vm: cleanup refunds 2015-06-17 10:20:33 +02:00
Jeffrey Wilcke
cc0b451119 Merge pull request #1260 from obscuren/tx-drop-low-tx
core: drop low gas tx
2015-06-15 09:09:44 -07:00
obscuren
e79cc42dfe core: moved check for max queue to checkQueue
Moved the queue to check to the checkQueue method so no undeeded loops
need to be initiated or sorting needs to happen twice.
2015-06-15 16:46:45 +02:00
zsfelfoldi
3c7b64ce20 removed duplicate function after rebase 2015-06-15 15:55:39 +02:00
zsfelfoldi
3f94d09c1f fixed saving receipts 2015-06-15 15:55:38 +02:00
obscuren
21fa29111b core: reduce max allowed queued txs per address
Transactions in the queue are now capped to a maximum of 200
transactions. This number is completely arbitrary.
2015-06-15 12:16:29 +02:00
obscuren
6d817e16c1 core, miner: tx pool drops txs below ask price 2015-06-15 11:33:08 +02:00
Jeffrey Wilcke
6f5c6150b7 Merge pull request #1255 from obscuren/chain-proc-interupt
eth, core: interrupt the chain processing on stop
2015-06-12 08:04:02 -07:00
obscuren
645dfd9693 core: changed interrupt strategy
Removed chain manager's select/channel approach when checking for
interrupts. Now using an atomic int32 instead which checked for every
block processed.
2015-06-12 16:52:54 +02:00
obscuren
90c4493a10 eth, core: interupt the chain processing on stop
Added an additional channel which is used to interupt the chain manager
when it's processing blocks.
2015-06-12 13:41:34 +02:00
obscuren
287f990891 core/vm: Improved error reporting for trace logging 2015-06-12 13:35:14 +02:00
obscuren
02d629af8f core/vm: fixed printable characters using unicode instead 2015-06-12 11:18:17 +02:00
Jeffrey Wilcke
6609d45ef4 Merge pull request #1228 from obscuren/vm-optimisations
core/vm: optimisations
2015-06-11 03:32:39 -07:00
obscuren
37111aa4bd core: retry block now also parellise nonce checks 2015-06-11 12:06:05 +02:00
obscuren
f599a1b5f1 core/vm: added a comment regarding the uint64 vs *big.Int 2015-06-11 11:59:30 +02:00
obscuren
e7627623b9 core/vm: reverse loop stack 2015-06-10 21:08:54 +02:00
obscuren
f94c5473ad core/vm: fixed a bug where Data ignored the stack ptr 2015-06-10 21:08:04 +02:00
obscuren
10af69b57c core, core/vm: moved logger and added gas cost to struct logging 2015-06-10 19:56:40 +02:00
obscuren
fc2a061d51 core/vm: unexported stack again. No longer required 2015-06-10 17:47:36 +02:00
obscuren
065aff9ffa core/vm: documentation and name changes 2015-06-10 17:47:36 +02:00
obscuren
4407524d13 core: fixed race condition for subscriptions 2015-06-10 17:13:32 +02:00
obscuren
29f7902fee core: fixed test 2015-06-10 17:13:32 +02:00
obscuren
65a48f9cd8 core: fixed race condition in the transaction pool
Removed `Stop/Start` mechanism from the transaction pool.
2015-06-10 17:13:32 +02:00
obscuren
1774c49456 core: log tx count for each set of blocks we're importing 2015-06-10 12:57:58 +02:00
obscuren
6fb6e6679e core/vm, core/state: added storage to structured vm logging 2015-06-10 12:57:37 +02:00
obscuren
38c61f6f25 core, core/vm: added structure logging
This also reduces the time required spend in the VM
2015-06-10 12:23:49 +02:00
obscuren
ff5b3ef087 core/vm: added structured logging 2015-06-10 10:59:44 +02:00
obscuren
468501cb86 core/vm: changed program counter to uint64 2015-06-10 10:44:46 +02:00
obscuren
bc6031e7bb core, xeth: moved nonce management burden from xeth to txpool 2015-06-09 21:01:02 +02:00
Péter Szilágyi
d652a58ada core: fix a race condition accessing the gas limit 2015-06-09 21:13:21 +03:00
Péter Szilágyi
fecf214175 core: fix a lock annoyance and potential deadlock 2015-06-09 21:02:26 +03:00
Felix Lange
73c355591f core, eth: document that result of GetTransactions is modifiable 2015-06-09 17:07:10 +02:00
Felix Lange
7aefe123e9 core/types: add Transaction.Size 2015-06-09 17:06:31 +02:00
Jeffrey Wilcke
c71ab2a6a3 Merge pull request #1219 from Gustav-Simonsson/precompiled_ec_recover_padding
Precompiled ec recover padding
2015-06-09 07:21:23 -07:00
Gustav Simonsson
6e3b58e491 Remove unneeded if check on EC recover padding 2015-06-09 16:03:05 +02:00
Jeffrey Wilcke
365576620a Merge pull request #1216 from karalabe/fix-eth-dataraces
Fix various data races in eth and core
2015-06-09 06:53:49 -07:00
Gustav Simonsson
ad5b5a4895 Pad precompiled EC recover input and add validations 2015-06-09 15:41:15 +02:00
Péter Szilágyi
ebf2aabd25 core: fix up a deadlock caused by double locking 2015-06-09 16:26:44 +03:00
Péter Szilágyi
ca8cb65b73 core: fix data race accessing ChainManager.currentBlock 2015-06-09 15:30:46 +03:00
Péter Szilágyi
07baf66200 core: fix data race in accessing ChainManager.td 2015-06-09 15:23:20 +03:00
obscuren
190c1b688a core: skip genesis block for reprocess. Closes #1202 2015-06-09 13:24:32 +02:00
obscuren
a5b977aa90 core: write accounts to statedb. Closes #1210 2015-06-09 11:37:01 +02:00
Jeffrey Wilcke
0f1cdfa53a Merge pull request #1193 from tgerring/hotbackup
Improve export command
2015-06-08 16:32:38 -07:00
obscuren
5245bd7b20 core: added a test for missing nonces
This test showed the logic in the queue was slightly flawed sending out
transactions to its peer it couldn't even resolve itself.
2015-06-09 00:41:47 +02:00
obscuren
6244b10a8f core: settable genesis nonce
You can set the nonce of the block with `--genesisnonce`. When the
genesis nonce changes and it doesn't match with the first block in your
database it will fail. A new `datadir` must be given if the nonce of the
genesis block changes.
2015-06-08 18:33:43 +02:00
Felix Lange
6c27e2aaf6 core: add bad block for the 'missing nonce check' fork 2015-06-08 02:54:10 +02:00
Felix Lange
0b493910d3 core: fix the nonce check one more time
The block nonce verification was effectively disabled by a typo.
This time, there is an actual test for it.
2015-06-08 02:19:39 +02:00
Taylor Gerring
4ab0cedf42 Export should start with block 0 2015-06-06 10:59:56 -04:00
Taylor Gerring
ed621aae33 Cleanup 2015-06-06 09:50:23 -04:00
Taylor Gerring
89c9320d80 Allow exporting subset of chain 2015-06-05 23:01:54 -04:00
obscuren
7ab87f9f6e wip 2015-06-05 17:33:30 +02:00
obscuren
912cf7ba04 core: added fork test & double nonce test 2015-06-04 19:28:39 +02:00
obscuren
0f51ee6c88 crypto: return common.Address rather than raw bytes 2015-06-04 19:28:39 +02:00
obscuren
dcdb4554d7 core: documented changes in tx pool 2015-06-04 16:19:22 +02:00
obscuren
cf5ad266f6 core: only change the nonce if the account nonce is lower 2015-06-04 15:44:42 +02:00
obscuren
9dd12a64a7 core: renamed txs to pending 2015-06-04 13:16:31 +02:00
obscuren
140d883901 core: test updates 2015-06-03 22:53:33 +02:00
obscuren
d09a6e5421 core, eth, miner: moved nonce management to tx pool.
Removed the managed tx state from the chain manager to the transaction
pool where it's much easier to keep track of nonces (and manage them).
The transaction pool now also uses the queue and pending txs differently
where queued txs are now moved over to the pending queue (i.e. txs ready
for processing and propagation).
2015-06-03 22:43:23 +02:00
Felix Lange
ec7a2c3442 core: don't remove transactions after block processing
The transaction pool drops processed transactions on its own
during pool maintenance.
2015-06-03 22:43:23 +02:00
Felix Lange
5721c43585 core: update documentation comments for TxPool 2015-06-03 22:43:23 +02:00
Felix Lange
ca31d71107 core: remove unused code from TxPool 2015-06-03 22:43:23 +02:00
Felix Lange
08befff8f1 core: compute less transaction hashes in TxPool 2015-06-03 22:43:23 +02:00
obscuren
770a0e7839 wip 2015-06-03 22:39:17 +02:00
obscuren
b26f5e0bb7 types: block json unmarshal method added 2015-06-03 22:39:17 +02:00
obscuren
fa4aefee44 core/vm: cleanup and renames 2015-06-03 22:39:17 +02:00
Jeffrey Wilcke
8610314918 Merge pull request #1167 from Gustav-Simonsson/check_ec_recover_err
Add missing err checks on From()
2015-06-03 10:29:47 -07:00
Jeffrey Wilcke
71d9367edc Merge pull request #1151 from fjl/parallel-nonce-2
core: re-add parallel nonce checks
2015-06-03 09:12:06 -07:00
Jeffrey Wilcke
122d2db095 Merge pull request #1150 from fjl/fix-jumpdest
core/vm: improve JUMPDEST analysis
2015-06-03 09:11:56 -07:00
Jeffrey Wilcke
02f785af70 Merge pull request #1166 from Gustav-Simonsson/add_ec_sig_validations
Add EC signature validations before call to libsecp256k1
2015-06-03 08:11:24 -07:00
Felix Lange
48fb0c3213 core/vm: check for 'no code' before doing any work 2015-06-03 16:25:06 +02:00
Felix Lange
ea2718c946 core/vm: improve JUMPDEST analysis
* JUMPDEST analysis is faster because less type conversions are performed.
* The map of JUMPDEST locations is now created lazily at the first JUMP.
* The result of the analysis is kept around for recursive invocations
  through CALL/CALLCODE.

Fixes #1147
2015-06-03 16:25:05 +02:00
Gustav Simonsson
55bf5051ad Unsupport bruncles 2015-06-01 22:43:05 +02:00
Gustav Simonsson
147a699c65 Add missing err checks on From() (skip RPC for now) 2015-06-01 22:12:03 +02:00
Gustav Simonsson
32e1b104f8 Add EC signature validations before call to libsecp256k1 2015-06-01 21:06:52 +02:00
Felix Lange
55b60e699b core: insert less length zero chains
This reduces the amount of queueEvents that are sent internally.
2015-06-01 12:48:12 +02:00
Felix Lange
e7e2cbfc01 core: re-add parallel nonce checks
In this incancation, the processor waits until the nonce
has been verified before handling the block.
2015-06-01 12:47:13 +02:00
Felix Lange
a906a84950 Merge pull request #1155 from karalabe/fix-chainmanager-datarace
core: fix #1154, sort out data race accessing the future blocks
2015-05-30 01:21:09 +02:00
Péter Szilágyi
b7fc85d68e core: fix #1154, sort out data race accessing the future blocks 2015-05-29 23:46:10 +03:00
obscuren
12b90600eb core: moved guards 2015-05-28 18:18:23 +02:00
Jeffrey Wilcke
b6e137b2b4 Merge pull request #1141 from obscuren/parallelisation-issue
Parallelisation issue
2015-05-28 07:37:37 -07:00
Jeffrey Wilcke
03178a77b6 Merge pull request #1132 from obscuren/log_optimisations
core: log optimisations
2015-05-28 07:35:07 -07:00
obscuren
16038b4e67 core: added bad block 2015-05-28 16:26:19 +02:00
obscuren
109f995684 core: log block hash during nonce error 2015-05-28 15:46:36 +02:00
obscuren
75f5ae80fd core: partially removed nonce parallelisation and added merge error chk
Invalid forks are now detected

Current setup of parellelisation actually inserts bad blocks. This fix
is tmp until a better one is found
2015-05-28 15:35:50 +02:00
Péter Szilágyi
29b0480cfb core, eth/downloader: expose the bad hashes, check in downloader 2015-05-28 14:03:10 +03:00
obscuren
e3253b5d5e core: fixed an issue with storing receipts 2015-05-28 01:00:23 +02:00
obscuren
7595716816 core: adjust gas calculation 2015-05-27 17:01:28 +02:00
Jeffrey Wilcke
8951a03db3 Merge pull request #1121 from obscuren/miner_time_fix
Miner time fix
2015-05-27 04:51:42 -07:00
obscuren
12650e16d3 core, miner: fixed miner time issue and removed future blocks
* Miner should no longer generate blocks with a time stamp less or equal
than it's parent.
* Future blocks are no longer processed and queued directly.
  Closes #1118
2015-05-27 13:30:52 +02:00
Gustav Simonsson
bf5f0b1d0c Update ValidateHeader comments 2015-05-27 13:30:24 +02:00
Gustav Simonsson
14955bd454 Revert "core: block.gasLimit - parent.gasLimit <= parent.gasLimit / GasLimitBoundDivisor"
This reverts commit be2b0501b5.
2015-05-27 13:01:06 +02:00
obscuren
be2b0501b5 core: block.gasLimit - parent.gasLimit <= parent.gasLimit / GasLimitBoundDivisor 2015-05-27 01:52:03 +02:00
obscuren
b2f2806055 cmd/geth, core: Updated DB version & seedhash debug method 2015-05-27 01:38:41 +02:00
obscuren
c37389f19c core: check negative value transactions. Closes #1109 2015-05-26 20:38:26 +02:00
obscuren
eae0927597 core: prevent crash when last block fails 2015-05-26 15:35:51 +02:00
obscuren
a6b46420d0 core: ban hash 38f5bb...a714bc
Hash 38f5bbbffd74804820ffa4bab0cd540e9de229725afb98c1a7e57936f4a714bc
ignored.
2015-05-26 13:48:10 +02:00
obscuren
f6f81169fe core/vm: Fork fix. Removal of appending 0 bytes in memset 2015-05-26 13:48:10 +02:00
Jeffrey Wilcke
5044eb4b26 Merge pull request #1101 from obscuren/issue-1096
core/vm: Cleanups & SUB output fix. Closes #1096
2015-05-26 03:50:27 -07:00
obscuren
b419e2631a core/vm: Cleanups & SUB output fix. Closes #1096 2015-05-26 12:42:33 +02:00
obscuren
7381be8edb core/vm, rpc: added disasm to ext_ RPC 2015-05-22 15:38:46 +02:00
Jeffrey Wilcke
90b672f1af Merge pull request #1062 from Gustav-Simonsson/tests_updates
Tests updates
2015-05-21 04:49:23 -07:00
obscuren
ef8744d9fc core: switched back to set.Set for uncle verification 2015-05-21 11:36:39 +02:00
Jeffrey Wilcke
9bde7fd72e Merge pull request #1043 from obscuren/test_fixes
core/vm: optimisation on RETURN and updated tests
2015-05-20 03:06:04 -07:00
zsfelfoldi
00ec4132f8 Storing tx receipts in extraDb 2015-05-20 06:41:50 +02:00
obscuren
f5af1fdca8 core/vm: RETURN op code returns pointer to memory rather than copy 2015-05-20 00:21:23 +02:00
obscuren
8dac28f2e3 core: block cache Has method thread safe 2015-05-19 21:50:56 +02:00
obscuren
87a05c8f38 core: skipped tests while cache disabled 2015-05-19 21:50:26 +02:00
obscuren
7d9a13e0d5 core: disable cash tmp 2015-05-19 12:59:58 +02:00
Jeffrey Wilcke
bd0c0a633b Merge pull request #1022 from obscuren/parallel_nonce_checks
Parallelise nonce checks
2015-05-18 11:13:53 -07:00
obscuren
40717465bc core: fixed tests 2015-05-18 18:16:53 +02:00
obscuren
59c0d01418 core: chain manager no longer exports genesis block 2015-05-18 18:16:53 +02:00
Gustav Simonsson
1d51cada3c Handle call depth exception for CREATE 2015-05-18 16:23:20 +02:00
obscuren
c67424ecc8 core: parallelise nonce checking when processing blocks
ChainManager now uses a parallel approach to block processing where all
nonces are checked seperatly from the block processing process. This
speeds up the process by about 3 times on my i7
2015-05-18 13:59:22 +02:00
obscuren
67d44519ce core: bugfix test 2. set => hash map 2015-05-18 10:49:09 +02:00
obscuren
54f0f82dd1 ret 2015-05-18 10:14:48 +02:00
obscuren
e323f0e831 core: tmp diagnostic logs 2015-05-18 10:13:50 +02:00
obscuren
27782bbade core: global chain insert lock 2015-05-17 00:55:02 +02:00
obscuren
d98a6f85fc core: further improved uncle error messages 2015-05-16 13:02:30 +02:00
obscuren
7ea76fcf99 core, cmd/geth, cmd/mist: cleanup. bump version 0.9.21 2015-05-16 00:26:36 +02:00
obscuren
5cec1aad15 core, miner: fork resolving and restart miner after sync op
Fork resolving fixes #940
2015-05-15 20:26:15 +02:00
Gustav Simonsson
32276e8b01 Update StateTests and nil create return on failed code deposit 2015-05-15 18:49:31 +02:00
obscuren
cfb2b51b74 eth/downloader: fixed test 2015-05-15 12:47:32 +02:00
obscuren
f6669db001 core: fixed mining strategy 2015-05-15 12:24:29 +02:00
obscuren
b71091e337 eth, eth/downloader, miner: use download events to check miner start 2015-05-15 00:43:10 +02:00
obscuren
0f76a1c6df core: changed how head events are checked 2015-05-15 00:42:06 +02:00
obscuren
580bae0a86 core: improved uncle messages 2015-05-15 00:40:07 +02:00
obscuren
b19bf3ec78 core: changed log message for forks. closes #952 2015-05-14 17:16:46 +02:00
Vitalik Buterin
bc83761996 Fixed max uncle count error message 2015-05-13 20:29:57 -04:00
Bas van Kervel
95773b9673 removed redundant newlines in import block 2015-05-12 15:20:53 +02:00
Bas van Kervel
b79dd188d9 replaced several path.* with filepath.* which is platform independent 2015-05-12 14:24:11 +02:00
obscuren
3c6c891680 core: optimise pending transaction processing 2015-05-11 11:39:33 +02:00
obscuren
a2919b5e17 core, eth, miner: improved tx removal & fatal error on db sync err
* core: Added GasPriceChange event
* eth: When one of the DB flush methods error a fatal error log message
  is given. Hopefully this will prevent corrupted databases from
  occuring.
* miner: remove transactions with low gas price. Closes #906, #903
2015-05-11 11:39:33 +02:00
Jeffrey Wilcke
45c070fc8b Merge pull request #833 from ethersphere/frontier/solidity
solidity compiler and contract metadocs integration
2015-05-08 03:43:31 -07:00
obscuren
dcfecebe1f core: get transaction by hash from transaction pool 2015-05-07 18:22:57 +02:00
obscuren
7e160a677d xeth, core, event/filter, rpc: new block and transaction filters 2015-05-07 14:44:32 +02:00
zelig
009b221692 solidity compiler and contract metadocs integration
* common/compiler: solidity compiler + tests
* rpc: eth_compilers, eth_compileSolidity + tests
* fix natspec test using keystore API, notice exp dynamically changes addr, cleanup
* resolver implements registrars and needs to create reg contract (temp)
* xeth: solidity compiler. expose getter Solc() and paths setter SetSolc(solcPath)
* ethereumApi: implement compiler related RPC calls using XEth - json struct tests
* admin: make use of XEth.SetSolc to allow runtime setting of compiler paths
* cli: command line flags solc to set custom solc bin path
* js admin api with new features debug and contractInfo modules
* wiki is the doc https://github.com/ethereum/go-ethereum/wiki/Contracts-and-Transactions
2015-05-07 12:58:21 +02:00
Gustav Simonsson
2808409fbd Add genesis block total difficulty in tests 2015-05-06 23:22:49 +02:00
Jeffrey Wilcke
323216ed85 Merge pull request #861 from obscuren/transaction_pool_fixes
core: transaction pool fixes & resending transactions
2015-05-06 11:23:58 -07:00
obscuren
92f998c7ef core: use removeTx instead of delete 2015-05-06 18:30:55 +02:00
Gustav Simonsson
b1cc9cdc74 Integrate new ethash API and change geth makedag cmd 2015-05-05 08:24:15 +02:00
obscuren
37770ed0d3 core: added unix timestamp to debug output for block proc 2015-05-03 21:49:19 +02:00
obscuren
c5b8acbaf0 core: print ignored blocks 2015-05-03 14:09:50 +02:00
obscuren
c6ad3aec05 eth,core: changed NewTicker to Tick 2015-05-03 13:27:37 +02:00
obscuren
b298928c49 core: added 'ignored' status 2015-05-01 16:00:30 +02:00
obscuren
15873fafc0 core: added a wait group to chain manager for graceful shutdown 2015-04-30 17:50:47 +02:00
obscuren
e4dba36892 core: check for parent in calc TD. TD = (N != 0 == parent.TD) || (== D) 2015-04-30 14:55:21 +02:00
obscuren
28b39267d9 core, eth: verify td of received blocks 2015-04-30 13:50:59 +02:00
obscuren
88292f35db core: remove txs from queue in addition to removal of pending 2015-04-30 00:20:59 +02:00
obscuren
2590a7dabb core: added some additional chain tests for shortest chain 2015-04-30 00:14:41 +02:00
obscuren
9e63798d03 core/types, eth: meassure and display propagation times 2015-04-29 19:55:30 +02:00
obscuren
c930045834 core: fixed tetst to reflect (int, error) return by insertChain 2015-04-29 15:27:04 +02:00
obscuren
735b029db9 core: return the index of the block that failed when inserting a chain 2015-04-29 14:00:24 +02:00
obscuren
4e07967711 core: fixed chain reorg during splits
Chain reorgs weren't properly handled when a chain was further ahead.
Previously we'd end up with mixed chains in our canonical numbering
sequence. Added test for this type of forking.

```
     /-o-o-o   A
o-C-+
     \-o-o-o-o B
```

Ends up with with C A1, A2, A3, B4
2015-04-29 12:51:05 +02:00
obscuren
af73d1d682 core/types: added fake parent hash / hash to String() output 2015-04-29 12:51:05 +02:00
obscuren
7ac24d551b core: seperated proccing mutex and getting mutex 2015-04-29 12:51:04 +02:00
obscuren
9f32117457 core: bump database version 2015-04-29 12:51:04 +02:00
obscuren
a4b79f1dac core: moved mutex locks in insert blocks to start of function
Insert blocks will no longer allow processing of multiple chains at the
same time. The block lock has been moved to start of the function.
2015-04-29 12:51:04 +02:00
obscuren
04a09b7e2d core: set min gas price at startup 2015-04-29 12:51:04 +02:00
obscuren
145e02fc54 core, miner: added value check on tx validation
* Changed CalcGasLimit to no longer need current block
* Added a gas * price + value on tx validation
* Transactions in the pool are now re-validated once every X
2015-04-26 11:19:40 +02:00
Jeffrey Wilcke
8d09f95bc7 Merge pull request #805 from obscuren/download_improvements
eth, eth/downloader: improve downloader and remove asynchronousness
2015-04-24 15:56:17 -07:00
obscuren
405720b218 xeth, core, cmd/utils: Transaction can not be over block gas limit
Transactions will be invalidated when the tx.gas_limit > block.gas_limit
2015-04-24 17:48:13 +02:00
obscuren
cd2782f59c core: fixed wildcard topic filters. Closes #725 2015-04-24 13:45:21 +02:00
Bas van Kervel
c273ed7d82 Moved leveldb update loop to eth/backend
change order of block insert and update LastBlock

bugfix, wrong hash stored in blockDb
2015-04-23 17:58:58 +02:00
obscuren
7f14fbd579 core: pending txs now re-validated once every second 2015-04-23 11:50:12 +02:00
obscuren
fba40e18d9 core: added accessor for queued transactions 2015-04-23 11:50:12 +02:00
obscuren
d3be1a2719 eth: moved mined, tx events to protocol-hnd and improved tx propagation
Transactions are now propagated to peers from which we have not yet
received the transaction. This will significantly reduce the chatter on
the network.

Moved new mined block handler to the protocol handler and moved
transaction handling to protocol handler.
2015-04-23 11:50:12 +02:00
obscuren
888ece0cb2 core: fixed test 2015-04-23 11:50:12 +02:00
obscuren
7edbb0110f core: set the state for the managed tx state
Set the state for the managed tx state instead of creating a new
managed state.
2015-04-23 11:50:12 +02:00
obscuren
1506e00a23 core: improved error message for invalid nonce txs 2015-04-23 11:50:11 +02:00
obscuren
7138404cb0 core: only post event once per tx & fixed test 2015-04-23 11:50:11 +02:00
obscuren
498b24270a core: implemented a queued approach processing transactions
Implemented a new transaction queue. Transactions with a holes in their
nonce sequence are also not propagated over the network.

N: 0,1,2,5,6,7 = propagate 0..2 -- 5..N is kept in the tx pool
2015-04-23 11:50:11 +02:00
Gustav Simonsson
4e0a2c8e8c Validate block header UncleHash against calculated hash 2015-04-22 23:16:19 +02:00
obscuren
ed0817c55d core/rpc: fix for null entries in log filters. Closes #725
You can now specify `null` as a way of saying "not interested in this
topic, match all". core.Filter assumes the zero'd address to be the
wildcard. JSON rpc assumes empty strings to be wildcards.
2015-04-21 12:00:57 +02:00
obscuren
093d6d5074 core: removed nonce resetting from the block processor.
All nonce error handling has been moved to the worker
2015-04-21 11:27:12 +02:00
obscuren
b8160cc6d4 core: shuffled some code 2015-04-20 20:37:40 +02:00
obscuren
f28b2bb6ed core: upgraded block chain version 2015-04-20 18:12:05 +02:00
obscuren
36ec42e50c Merge branch 'frontier/natspec' of https://github.com/ethersphere/go-ethereum into ethersphere-frontier/natspec 2015-04-20 18:08:14 +02:00
obscuren
72d065d491 core: force block process & fixed chain manager test 2015-04-20 16:02:50 +02:00
obscuren
97a9753f87 core: added chain reset mechanism on bad blocks 2015-04-20 12:58:17 +02:00
obscuren
45da3e17e2 core: added chain head reset to known block 2015-04-20 12:29:02 +02:00
obscuren
97b0c4b697 core: moved TD calculation from proc to chain 2015-04-20 12:01:20 +02:00
zsfelfoldi
d8fb834386 test account is no longer permanently in genesis block, only put there when testing 2015-04-19 20:57:49 +01:00
zsfelfoldi
dba2367157 NatSpec contracts are now not in the genesis block but added by the test 2015-04-19 20:57:49 +01:00
zsfelfoldi
b635cad9fe NatSpec passing end to end test 2015-04-19 20:57:49 +01:00
zsfelfoldi
94489b2269 s 2015-04-19 20:57:49 +01:00
zsfelfoldi
e2d333d209 NatSpec contracts in genesis block, end to end test (unfinished) 2015-04-19 20:57:49 +01:00
obscuren
8f3a7e41de Merge branch 'rlp-size-validation' of https://github.com/fjl/go-ethereum into fjl-rlp-size-validation
Conflicts:
	eth/protocol.go
2015-04-19 17:07:40 +02:00
obscuren
164b878854 cleanup 2015-04-19 00:08:57 +02:00
obscuren
d34e4dc5ac Merge branch 'develop' into downloader-proto 2015-04-18 21:26:43 +02:00
obscuren
84f1af6413 core: merge using equal block numbers rather than the current block 2015-04-18 21:23:42 +02:00
obscuren
1bc2d83b6f core: improved uncle validation error message 2015-04-18 14:24:44 +02:00
Felix Lange
574d5d6ae6 core/types: add rlp tag "nil" for Transaction.Recipient 2015-04-17 14:45:10 +02:00
obscuren
dff39553d4 core: changed split detection to also account for number less than 2015-04-16 00:11:40 +02:00
obscuren
5d2138a2b2 core: fixed issue for logs filter. Closes #629
Log filter `Address` field was cast to a Hash which causes it to always
fail.
2015-04-15 11:59:41 +02:00
obscuren
ccb4722a59 core/types: Changed bloom lookup to take anything bytes backed 2015-04-15 11:58:45 +02:00
obscuren
8310bcda61 state: fixed mutex lockes 2015-04-14 12:47:54 +02:00
obscuren
333d4e0f27 core: during split properly insert parent blocks
During a split parent and grand parent were included in the database but
not in the canonical chain (numbered chain). Added a `merge` function
which finds the common ancestor of the chains and reinserts the missing
blocks.
2015-04-14 00:20:29 +02:00
obscuren
d423305f07 state: fixed nonce issue in managed state
Rlock => Lock when creating a new nonce
2015-04-13 22:57:03 +02:00
Jeffrey Wilcke
1fa844aaf5 Merge pull request #702 from ethersphere/frontier/blockpool
blockpool stability fixes:
2015-04-13 17:35:25 +02:00
Jeffrey Wilcke
5f9346bc7a Merge pull request #700 from bas-vk/issue_650
Added blockchain DB versioning support, closes #650
2015-04-13 17:34:34 +02:00
zelig
3d57e377a4 blockpool stability fixes:
- follow up locks and fix them
- chainManager: call SetQueued for parentErr future blocks, uncomment TD checks, unskip test
- make ErrIncorrectTD non-fatal to be forgiving to genuine mistaken nodes (temp) but demote them to guard against stuck best peers.
- add purging to bounded nodeCache (config nodeCacheSize)
- use nodeCache when creating blockpool entries and let non-best peers add blocks (performance boost)
- minor error in addError
- reduce idleBestPeerTimeout to 1 minute
- correct status counts and unskip status passing status test
- glogified logging
2015-04-13 13:13:55 +01:00
Bas van Kervel
49a513bdeb Added blockchain DB versioning support, closes #650 2015-04-13 10:13:52 +02:00
obscuren
3aa5437a10 Set input to nil for create 2015-04-10 19:59:01 +02:00
obscuren
46898f1e55 Merge branch 'frontier/blockpool' of https://github.com/ethersphere/go-ethereum into ethersphere-frontier/blockpool 2015-04-09 16:54:32 +02:00
obscuren
0636e17dbe Added default registrar 2015-04-09 16:37:04 +02:00
zelig
262714fc6c future queued block support
- queued       bool // flag for blockpool to skip TD check
- set to true when future block queued
- in checkTD: skip check if queued
- TODO: add test (insertchain sets future block)
2015-04-09 13:58:35 +01:00
obscuren
204ac81188 Moved handling of nonces to the managed state 2015-04-08 23:30:07 +02:00
obscuren
6e2f78ebdd Default log to stderr 2015-04-08 22:18:16 +02:00
obscuren
6184781b49 Improved transaction pool
The transaction pool will now some easily be able to pre determine the
validity of a transaction by checking the following:

* Account existst
* gas limit higher than the instrinsic gas
* enough funds to pay upfront costs
* nonce check
2015-04-08 20:47:32 +02:00
obscuren
f08e9cbe42 ignore invalid txs right after being added if they prove incorrect 2015-04-08 18:08:21 +02:00
obscuren
1c872ddf4b Changed how logs are being recorded
Logs are now recorded per transactions instead of tossing them out after
each transaction. This should also fix an issue with
`eth_getFilterLogs` (#629) Also now implemented are the `transactionHash,
blockHash, transactionIndex, logIndex` on logs. Closes #654.
2015-04-08 17:15:45 +02:00
obscuren
a953f3ec97 Sync managed accounts to the network 2015-04-08 13:07:21 +02:00
obscuren
31b086f511 Added additional methods to the managed state
* GetNonce Returns the canonical nonce
* SetNonce Set the managed account's nonce
2015-04-08 13:06:56 +02:00
obscuren
09147a50ed Improved tx pool to ignore invalid transactions
Transaction pool will attempt to ignore invalid transactions it had
previously encountered.
2015-04-08 00:31:23 +02:00
Jeffrey Wilcke
758205b187 Merge pull request #648 from Gustav-Simonsson/forward_ecrecover_err_and_remove_dup_checks
Forward and log EC recover err and remove dup pubkey len check
2015-04-07 20:48:56 +02:00
obscuren
688d118c7e Updated logging 2015-04-07 14:57:04 +02:00
obscuren
43454053b0 Fixed tests 2015-04-07 13:10:12 +02:00
Gustav Simonsson
2591883a18 Use logger.Error instead of 0 with glog 2015-04-07 12:48:19 +02:00
Gustav Simonsson
3f306f63d4 Forward and log EC recover err and remove dup pubkey len check 2015-04-07 12:48:19 +02:00
obscuren
9c55576c7b Block header changed & console miner control
* miner control moved to `admin.miner`
* miner option to set extra data
* block extra now bytes
2015-04-05 18:59:18 +02:00
obscuren
736aefe9b5 time lapse 2015-04-05 17:59:38 +02:00
obscuren
053d5552ab Updated logging 2015-04-04 23:04:19 +02:00
obscuren
eb1c26746d Changed R S to big int and fixed tests 2015-04-04 21:41:24 +02:00
obscuren
eb8f0b85f7 Changed R & S to *big.Int 2015-04-04 21:32:24 +02:00
obscuren
c39484bc4b Added thread safe each 2015-04-04 20:34:10 +02:00
obscuren
eff6a43419 Removed debugging 2015-04-04 18:29:11 +02:00
obscuren
7a18a39351 prevent deadlock 2015-04-04 18:23:51 +02:00
obscuren
e1ed8c33bd Improved chain manager, improved block processor, fixed tests
* ChainManager allows cached future blocks for later processing
* BlockProcessor allows a 4 second window on future blocks
* Fixed tests
2015-04-04 16:35:23 +02:00
obscuren
29f120206e Added block cache delete method 2015-04-04 16:33:12 +02:00
obscuren
c985ce4d78 Changed log to new logging 2015-04-04 13:41:58 +02:00
obscuren
1889727144 Moved logging to logger.Core 2015-04-04 13:24:01 +02:00
obscuren
218bfeb60e check for nil block (tmp).
@zelig this needs to be addressed in the block pool.
2015-04-04 12:40:48 +02:00
obscuren
a0e44e3281 basic glog 2015-04-04 12:40:11 +02:00
obscuren
ec8a6e0a2b Merge branch 'develop' into glog 2015-04-03 17:19:22 +02:00
obscuren
f9d94c7462 do not include BlockEqualTS as valid uncles 2015-04-03 17:19:09 +02:00
obscuren
36452afd4e glog wip 2015-04-03 17:09:11 +02:00
obscuren
f49e398ebe bool => int 2015-04-03 12:28:55 +02:00
obscuren
c59c826ab4 fixed stack level 2015-04-03 11:27:56 +02:00
obscuren
b8124ec791 Removed old (unused) argument 2015-04-01 23:58:26 +02:00
Jeffrey Wilcke
219d94c1dd Merge pull request #623 from Gustav-Simonsson/read_protocol_values_from_common_params
Read most protocol params from common/params.json
2015-04-01 23:37:17 +02:00
Gustav Simonsson
c26c8d3a44 Read most protocol params from common/params.json
* Add params package with exported variables generated from
  github.com/ethereum/common/blob/master/params.json
* Use params package variables in applicable places
* Add check for minimum gas limit in validation of block's gas limit
* Remove common/params.json from go-ethereum to avoid
  outdated version of it
2015-04-02 06:22:32 +02:00
obscuren
344b3556eb Fixed uncle rewards in miner
The uncle rewards were changed in the block processor. This change will
reflect those changes in the miner as well.
2015-04-01 21:18:41 +02:00
obscuren
516ec28544 sha3 stack check 2015-04-01 17:51:22 +02:00
obscuren
96cf776f81 Check stack for BALANCE. Closes #622 2015-04-01 17:45:38 +02:00
zelig
6ffea34d8b check TxMsg
- add validation on TxMsg checking for nil
- add test for nil transaction
- add test for zero value transaction (no extra validation needed)
2015-04-01 12:32:42 +01:00
zelig
82da6bf4d2 test for invalid rlp encoding of block in BlocksMsg
- rename Validate -> ValidateFields not to confure consensus block validation
- add nil transaction and nil uncle header validation
- remove bigint field checks: rlp already decodes *big.Int to big.NewInt(0)
- add test for nil header, nil transaction
2015-04-01 12:32:42 +01:00
zelig
e1be34bce1 eth: SEC-29 eth wire protocol decoding invalid message data crashes client
- add validate method to types.Block
- validate after Decode -> error
- add tests for NewBlockMsg
2015-04-01 12:32:42 +01:00
obscuren
6afc5e762a Merge branch 'hexify' of https://github.com/tgerring/go-ethereum into tgerring-hexify 2015-04-01 12:49:10 +02:00
Taylor Gerring
86ba7432a9 txMeta storage as struct 2015-04-01 12:14:35 +02:00
obscuren
f468364e4d fixed tests 2015-04-01 11:42:02 +02:00
obscuren
0a554a1f27 Blocktest fixed, Execution fixed
* Added new CreateAccount method which properly overwrites previous
  accounts (excluding balance)
* Fixed block tests (100% success)
2015-04-01 10:53:32 +02:00
Taylor Gerring
40ea466200 Store and retrieve tx context metadata #608
Improving this in the future will allow for cleaning up a bit of legacy
code.
2015-03-31 22:40:12 +02:00
obscuren
3453f8c5d2 Added Code field 2015-03-31 15:30:55 +02:00
Gustav Simonsson
9feed3f61e Correct gas limit validation according to new algorithm
* Use absolute value of (block's gas limit) - (parent's gas limit)
  in comparison with diff limit.
* Ensure the diff is strictly smaller than the allowed size.
2015-03-30 16:07:24 +02:00
obscuren
61c5edcb57 Cleanup. 2015-03-29 15:02:49 +02:00
obscuren
af153e7884 Merge branch 'fix_ecrecover' of https://github.com/ebuchman/go-ethereum into ebuchman-fix_ecrecover 2015-03-29 13:34:41 +02:00
Jeffrey Wilcke
b9ca5eef58 Merge pull request #579 from tgerring/rpcargs
RPC Args
2015-03-28 20:42:45 +01:00
obscuren
368ebe63a9 Cleanup VM.
* CALLDATA use getData
* removed old context get range value
* removed casting big => int for some cases
* pc now big int #457
2015-03-28 20:30:38 +01:00
obscuren
3b7e4173ce Cleanup VM 2015-03-28 20:03:25 +01:00
obscuren
3ea8c7301e PUSH gas fix 2015-03-27 16:53:05 +01:00
Taylor Gerring
43d521e90e Decouple core from rpc 2015-03-27 16:36:01 +01:00
obscuren
df648cbc60 Removed comments 2015-03-27 16:11:19 +01:00
obscuren
8a22cd5e6c Removed defer/panic. #503 2015-03-27 16:09:57 +01:00
obscuren
00f8319faf Explicitly check memory's data store. #515 2015-03-27 14:22:38 +01:00
obscuren
c32bca45ad Stack limit 2015-03-26 17:45:09 +01:00
obscuren
eb433731aa Fixed filter and refactored code 2015-03-26 12:06:14 +01:00
obscuren
505f1fbcbb added tx tests and fixed block tests 2015-03-25 17:05:29 +01:00
obscuren
9de1ad6546 fixed tests 2015-03-24 15:27:05 +01:00
obscuren
ff9d66e096 Cleaned up changes 2015-03-24 15:23:16 +01:00
obscuren
23bccbbc58 Modified according to poc 9 changes
* Refund of value
2015-03-24 15:15:17 +01:00
obscuren
bbe795455a Secure trie shakey / key matching 2015-03-24 15:14:03 +01:00
obscuren
0ec171ccdf Copy fix 2015-03-24 13:38:16 +01:00
obscuren
576df064e5 Updated for PV59
* Value XFER are refunded back to the sender if the execution fails
2015-03-24 11:49:30 +01:00