aboutsummaryrefslogtreecommitdiffstats
path: root/core/state_processor.go
Commit message (Collapse)AuthorAgeFilesLines
* Change import go github.com/dexon-foundation/dexonWei-Ning Huang2019-06-121-8/+8
|
* core: fix typo in comment (#17586)Hyung-Kyu Hqueue Choi2018-09-051-1/+1
|
* all: remove the duplicate 'the' in annotations (#17509)Wenbiao Zheng2018-08-271-1/+1
|
* core: relax type requirement for bc in ApplyTransaction (#16901)ledgerwatch2018-06-071-1/+1
|
* all: switch gas limits from big.Int to uint64Péter Szilágyi2018-01-031-19/+15
|
* consensus, core, params: rebrand Metro to ByzantiumPéter Szilágyi2017-09-141-1/+1
|
* core/state: revert metro suicide map addition (#15024)Péter Szilágyi2017-08-241-1/+1
|
* core: implement Metropolis EIP 658, receipt status byterjl4934564422017-08-221-2/+2
|
* core, ethclient: implement Metropolis EIP 98 (#14750)Péter Szilágyi2017-07-171-2/+8
| | | Implements ethereum/EIPs#98
* consensus, core/*, params: metropolis preparation refactorJeffrey Wilcke2017-05-181-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | This commit is a preparation for the upcoming metropolis hardfork. It prepares the state, core and vm packages such that integration with metropolis becomes less of a hassle. * Difficulty calculation requires header instead of individual parameters * statedb.StartRecord renamed to statedb.Prepare and added Finalise method required by metropolis, which removes unwanted accounts from the state (i.e. selfdestruct) * State keeps record of destructed objects (in addition to dirty objects) * core/vm pre-compiles may now return errors * core/vm pre-compiles gas check now take the full byte slice as argument instead of just the size * core/vm now keeps several hard-fork instruction tables instead of a single instruction table and removes the need for hard-fork checks in the instructions * core/vm contains a empty restruction function which is added in preparation of metropolis write-only mode operations * Adds the bn256 curve * Adds and sets the metropolis chain config block parameters (2^64-1)
* consensus, core, ethstats: use engine specific block beneficiary (#14318)Péter Szilágyi2017-04-121-3/+4
| | | | | | * consensus, core, ethstats: use engine specific block beneficiary * core, eth, les, miner: use explicit beneficiary during mining
* core, consensus: pluggable consensus engines (#3817)Péter Szilágyi2017-04-051-33/+11
| | | | | This commit adds pluggable consensus engines to go-ethereum. In short, it introduces a generic consensus interface, and refactors the entire codebase to use this interface.
* all: next batch of log polishes to contextual versionsPéter Szilágyi2017-02-281-4/+0
|
* all: blidly swap out glog to our log15, logs need reworkPéter Szilágyi2017-02-231-3/+3
|
* cmd/geth, core: add support for recording SHA3 preimages (#3543)Nick Johnson2017-01-171-1/+1
|
* core/vm: move Log to core/typesFelix Lange2017-01-061-2/+2
| | | | | | | | This significantly reduces the dependency closure of ethclient, which no longer depends on core/vm as of this change. All uses of vm.Logs are replaced by []*types.Log. NewLog is gone too, the constructor simply returned a literal.
* core/vm: improved EVM run loop & instruction calling (#3378)Jeffrey Wilcke2017-01-051-11/+10
| | | | | | | | | | | | | | | The run loop, which previously contained custom opcode executes have been removed and has been simplified to a few checks. Each operation consists of 4 elements: execution function, gas cost function, stack validation function and memory size function. The execution function implements the operation's runtime behaviour, the gas cost function implements the operation gas costs function and greatly depends on the memory and stack, the stack validation function validates the stack and makes sure that enough items can be popped off and pushed on and the memory size function calculates the memory required for the operation and returns it. This commit also allows the EVM to go unmetered. This is helpful for offline operations such as contract calls.
* core, core/vm: implemented a generic environment (#3348)Jeffrey Wilcke2016-12-061-7/+15
| | | | | | | | Environment is now a struct (not an interface). This reduces a lot of tech-debt throughout the codebase where a virtual machine environment had to be implemented in order to test or run it. The new environment is suitable to be used en the json tests, core consensus and light client.
* core, core/state: fixed consensus issue added touch revertJeffrey Wilcke2016-11-251-0/+1
| | | | | Implemented proper touch revert journal entries and copied a Parity consensus bug in order to remain in sync with the current longest chain.
* core, core/types: refactored tx chain id checkingJeffrey Wilcke2016-11-141-5/+0
| | | | Refactored explicit chain id checking in to the Sender deriviation method
* core/types, params: EIP#155Jeffrey Wilcke2016-11-131-5/+14
|
* core, core/state, trie: EIP158, reprice & skip empty account writeJeffrey Wilcke2016-11-131-4/+5
| | | | | | | | | | | | | | | This commit implements EIP158 part 1, 2, 3 & 4 1. If an account is empty it's no longer written to the trie. An empty account is defined as (balance=0, nonce=0, storage=0, code=0). 2. Delete an empty account if it's touched 3. An empty account is redefined as either non-existent or empty. 4. Zero value calls and zero value suicides no longer consume the 25k reation costs. params: moved core/config to params Signed-off-by: Jeffrey Wilcke <jeffrey@ethereum.org>
* cmd, core, eth, miner, params, tests: finalize the DAO forkPéter Szilágyi2016-07-151-17/+0
|
* accounts, core, eth: pass chain config for chain maker to test DAOPéter Szilágyi2016-07-151-1/+1
|
* core, params, tests: add DAO hard-fork balance movesPéter Szilágyi2016-07-151-1/+22
|
* Revert "test, cmd/evm, core, core/vm: illegal code hash implementation"Péter Szilágyi2016-06-291-21/+3
| | | | This reverts commit 7a5b571c671e70e0e4807cf971c15e2d1e09d33d.
* Revert "core: add voting and result tracking for the dao soft-fork"Péter Szilágyi2016-06-291-61/+10
| | | | This reverts commit c4de28938ff8c688c4444c8b3e8e28a52cbc62ff.
* Revert "core: update DAO soft-fork number, clean up the code"Péter Szilágyi2016-06-291-11/+16
| | | | This reverts commit ba784bdf36f2daf7827ec1ec864f3393ba8d86a0.
* Revert "core: update the DAO soft fork proposal to the final block"Péter Szilágyi2016-06-291-1/+1
| | | | This reverts commit 1e3a7d4fab36df9382d023519ef10e3c34bafa3b.
* core: update the DAO soft fork proposal to the final blockPéter Szilágyi2016-06-241-1/+1
|
* core: update DAO soft-fork number, clean up the codePéter Szilágyi2016-06-231-16/+11
|
* core: add voting and result tracking for the dao soft-forkPéter Szilágyi2016-06-231-10/+61
|
* test, cmd/evm, core, core/vm: illegal code hash implementationJeffrey Wilcke2016-06-221-3/+21
| | | | | | | | This implements a generic approach to enabling soft forks by allowing anyone to put in hashes of contracts that should not be interacted from. This will help "The DAO" in their endevour to stop any whithdrawals from any DAO contract by convincing the mining community to accept their code hash.
* all: update license informationFelix Lange2016-04-151-0/+16
|
* core: added basic chain configurationJeffrey Wilcke2016-04-011-7/+16
| | | | | | | | | 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.
* core: Added EVM configuration optionsJeffrey Wilcke2016-03-241-4/+4
| | | | | The EVM is now initialised with an additional configured object that allows you to turn on debugging options.
* core: various typosLeif Jurvetson2016-03-161-1/+1
|
* parmas, crypto, core, core/vm: homestead consensus protocol changesGustav Simonsson2016-02-181-1/+0
| | | | | | | | * 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
* core, eth, rpc: split out block validator and state processorJeffrey Wilcke2015-11-181-0/+107
This removes the burden on a single object to take care of all validation and state processing. Now instead the validation is done by the `core.BlockValidator` (`types.Validator`) that takes care of both header and uncle validation through the `ValidateBlock` method and state validation through the `ValidateState` method. The state processing is done by a new object `core.StateProcessor` (`types.Processor`) and accepts a new state as input and uses that to process the given block's transactions (and uncles for rewords) to calculate the state root for the next block (P_n + 1).