Jeffrey Wilcke
f0cbebb19f
core: added basic chain configuration
...
Added chain configuration options and write out during genesis database
insertion. If no "config" was found, nothing is written to the database.
Configurations are written on a per genesis base. This means
that any chain (which is identified by it's genesis hash) can have their
own chain settings.
2016-04-01 01:01:10 +02:00
Jeffrey Wilcke
14013372ae
core: Added EVM configuration options
...
The EVM is now initialised with an additional configured object that
allows you to turn on debugging options.
2016-03-23 23:02:42 +01:00
Jeffrey Wilcke
342ae7ce7d
core, core/vm, tests: changed the initialisation behaviour of the EVM
...
The EVM was previously initialised and created for every CALL, CALLCODE,
DELEGATECALL and CREATE. This PR changes this behaviour so that the same
EVM can be used through the session and beyond as long as the
Environment sticks around.
2016-03-23 00:04:00 +01:00
Leif Jurvetson
b7bb2d8589
core: various typos
2016-03-15 11:08:18 -07:00
Ricardo Catalinas Jiménez
436fc8d76a
all: Rename crypto.Sha3{,Hash}() to crypto.Keccak256{,Hash}()
...
As we aren't really using the standarized SHA-3
2016-02-21 22:34:34 +00:00
Jeffrey Wilcke
b6d88a0e9f
core, core/vm, crypto: fixes for homestead
...
* Removed some strange code that didn't apply state reverting properly
* Refactored code setting from vm & state transition to the executioner
* Updated tests
2016-02-18 10:11:48 +01:00
Gustav Simonsson
371871d685
parmas, crypto, core, core/vm: homestead consensus protocol changes
...
* change gas cost for contract creating txs
* invalidate signature with s value greater than secp256k1 N / 2
* OOG contract creation if not enough gas to store code
* new difficulty adjustment algorithm
* new DELEGATECALL op code
2016-02-18 10:08:11 +01:00
Jeffrey Wilcke
6cace73bea
core/vm/runtime: simplified runtime calling mechanism
...
Implemented `runtime.Call` which uses - unlike Execute - the given state
for the execution and the address of the contract you wish to execute.
Unlike `Execute`, `Call` requires a config.
2016-02-11 10:17:16 +01:00
Peter Pratscher
15780ead07
core/vm, rpc/api: renamed to debug.replayTransaction, migrated to new RPC, integrated feedback
...
Integrated code review suggestions
Integrated last review comments
2016-02-02 15:20:18 +01:00
Péter Szilágyi
752c75fb21
core/vm: resolve circular dependency to debug vm storage
2016-01-11 18:21:39 +02:00
Bas van Kervel
eae81465c1
rpc: new RPC implementation with pub/sub support
2015-12-14 16:34:05 +01:00
Jeffrey Wilcke
1372b991c3
core/vm/runtime: added simple execution runtime
...
The runtime environment can be used for simple basic execution of
contract code without the requirement of setting up a full stack and
operates fully in memory.
2015-11-18 16:50:20 +01: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
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
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
Péter Szilágyi
af9afb686b
core/vm: copy stack element to prevent overwrites
2015-10-12 00:14:35 +03:00
Gustav Simonsson
e1616f77c7
core, core/vm, cmd/evm: remove redundant balance check
2015-10-06 12:42:34 +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
Gustav Simonsson
b81a6e6ab8
core, core/vm, core/state: remove unused functions
2015-09-10 21:10:58 +02:00
Gustav Simonsson
7324176f70
Add tests for uncle timestamps and refactor timestamp type
2015-08-25 04:46:11 +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
eec38c5853
cmd/geth, core/vm: setup vm settings and defaulted JIT disabled
2015-08-09 02:06:16 +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
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
Jeffrey Wilcke
8b5a65c14a
core/vm: added str to op
2015-07-09 17:08:33 +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
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
Gustav Simonsson
0f04af5916
Fix core error forwarding, unify OOG VM err
2015-07-04 09:27:42 +02:00
Gustav Simonsson
4c490db6af
Use uint64 for block header timestamp
2015-06-30 10:52:11 +02:00
obscuren
430bcdb219
core/vm: clarified SSTORE
2015-06-18 12:25:02 +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
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
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
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
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
Gustav Simonsson
6e3b58e491
Remove unneeded if check on EC recover padding
2015-06-09 16:03:05 +02:00
Gustav Simonsson
ad5b5a4895
Pad precompiled EC recover input and add validations
2015-06-09 15:41:15 +02:00
obscuren
fa4aefee44
core/vm: cleanup and renames
2015-06-03 22:39:17 +02: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
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
obscuren
f5af1fdca8
core/vm: RETURN op code returns pointer to memory rather than copy
2015-05-20 00:21:23 +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
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
a0e44e3281
basic glog
2015-04-04 12:40: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
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
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
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
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
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
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
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
ebf4408d73
Decrement depth
2015-03-23 21:48:31 +01:00
obscuren
0330077d76
moved state and vm to core
2015-03-23 16:59:09 +01:00