aboutsummaryrefslogtreecommitdiffstats
path: root/core/block_validator.go
Commit message (Collapse)AuthorAgeFilesLines
* core: use headers only where blocks are unnecessaryPéter Szilágyi2019-03-131-1/+1
|
* core, eth/downloader: fix validation flaw, fix downloader printout flaw (#17974)Martin Holst Swende2018-11-071-6/+6
|
* cmd, core, eth, miner, params: configurable gas floor and ceilPéter Szilágyi2018-08-291-8/+14
|
* all: remove the duplicate 'the' in annotations (#17509)Wenbiao Zheng2018-08-271-1/+1
|
* core, trie: intermediate mempool between trie and database (#15857)Péter Szilágyi2018-02-061-3/+6
| | | This commit reduces database I/O by not writing every state trie to disk.
* all: switch gas limits from big.Int to uint64Péter Szilágyi2018-01-031-20/+16
|
* core/state: access trie through Database interface, track errors (#14589)Felix Lange2017-06-271-9/+3
| | | | | | | | | With this commit, core/state's access to the underlying key/value database is mediated through an interface. Database errors are tracked in StateDB and returned by CommitTo or the new Error method. Motivation for this change: We can remove the light client's duplicated copy of core/state. The light client now supports node iteration, so tracing and storage enumeration can work with the light client (not implemented in this commit).
* consensus, core: drop all the legacy custom core error typesPéter Szilágyi2017-04-061-5/+5
|
* core, consensus: pluggable consensus engines (#3817)Péter Szilágyi2017-04-051-260/+15
| | | | | 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: swap out the C++ ethash to the pure Go one (mining todo)Péter Szilágyi2017-03-091-1/+1
|
* all: next batch of log polishes to contextual versionsPéter Szilágyi2017-02-281-1/+1
|
* common: move big integer math to common/math (#3699)Felix Lange2017-02-271-4/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * common: remove CurrencyToString Move denomination values to params instead. * common: delete dead code * common: move big integer operations to common/math This commit consolidates all big integer operations into common/math and adds tests and documentation. There should be no change in semantics for BigPow, BigMin, BigMax, S256, U256, Exp and their behaviour is now locked in by tests. The BigD, BytesToBig and Bytes2Big functions don't provide additional value, all uses are replaced by new(big.Int).SetBytes(). BigToBytes is now called PaddedBigBytes, its minimum output size parameter is now specified as the number of bytes instead of bits. The single use of this function is in the EVM's MSTORE instruction. Big and String2Big are replaced by ParseBig, which is slightly stricter. It previously accepted leading zeros for hexadecimal inputs but treated decimal inputs as octal if a leading zero digit was present. ParseUint64 is used in places where String2Big was used to decode a uint64. The new functions MustParseBig and MustParseUint64 are now used in many places where parsing errors were previously ignored. * common: delete unused big integer variables * accounts/abi: replace uses of BytesToBig with use of encoding/binary * common: remove BytesToBig * common: remove Bytes2Big * common: remove BigTrue * cmd/utils: add BigFlag and use it for error-checked integer flags While here, remove environment variable processing for DirectoryFlag because we don't use it. * core: add missing error checks in genesis block parser * common: remove String2Big * cmd/evm: use utils.BigFlag * common/math: check for 256 bit overflow in ParseBig This is supposed to prevent silent overflow/truncation of values in the genesis block JSON. Without this check, a genesis block that set a balance larger than 256 bits would lead to weird behaviour in the VM. * cmd/utils: fixup import
* all: blidly swap out glog to our log15, logs need reworkPéter Szilágyi2017-02-231-2/+2
|
* params: core, core/vm, miner: 64bit gas instructionsJeffrey Wilcke2017-02-141-1/+1
| | | | | | | | | | | | | | | | | Reworked the EVM gas instructions to use 64bit integers rather than arbitrary size big ints. All gas operations, be it additions, multiplications or divisions, are checked and guarded against 64 bit integer overflows. In additon, most of the protocol paramaters in the params package have been converted to uint64 and are now constants rather than variables. * common/math: added overflow check ops * core: vmenv, env renamed to evm * eth, internal/ethapi, les: unmetered eth_call and cancel methods * core/vm: implemented big.Int pool for evm instructions * core/vm: unexported intPool methods & verification methods * core/vm: added memoryGasCost overflow check and test
* Revert "params: core, core/vm, miner: 64bit gas instructions (#3514)"Jeffrey Wilcke2017-02-131-1/+1
| | | | This reverts commit 8b57c494908637a5c0e74f8f7a13b3218e026757.
* params: core, core/vm, miner: 64bit gas instructions (#3514)Jeffrey Wilcke2017-02-021-1/+1
| | | | | | | | | | | | | | | | Reworked the EVM gas instructions to use 64bit integers rather than arbitrary size big ints. All gas operations, be it additions, multiplications or divisions, are checked and guarded against 64 bit integer overflows. In additon, most of the protocol paramaters in the params package have been converted to uint64 and are now constants rather than variables. * common/math: added overflow check ops * core: vmenv, env renamed to evm * eth, internal/ethapi, les: unmetered eth_call and cancel methods * core/vm: implemented big.Int pool for evm instructions * core/vm: unexported intPool methods & verification methods * core/vm: added memoryGasCost overflow check and test
* core: improved bad block error reporting (#3320)Jeffrey Wilcke2016-11-231-8/+8
|
* core: Don't perform EIP150 hash check on uncles (#3303)v1.5.2Nick Johnson2016-11-181-1/+1
|
* core, core/state, trie: EIP158, reprice & skip empty account writeJeffrey Wilcke2016-11-131-10/+10
| | | | | | | | | | | | | | | 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, params: only set default fork configs for test and mainnetPéter Szilágyi2016-10-291-1/+1
|
* cmd/utils, core, params: explicitly pick reprice fork for fast syncPéter Szilágyi2016-10-291-1/+9
|
* cmd, core, eth, miner, params, tests: finalize the DAO forkPéter Szilágyi2016-07-151-28/+1
|
* core, eth: enforce network split post DAO hard-forkPéter Szilágyi2016-07-151-0/+7
|
* cmd, core, miner: add extradata validation to consensus rulesPéter Szilágyi2016-07-151-0/+21
|
* Revert "core: update DAO soft-fork number, clean up the code"Péter Szilágyi2016-06-291-5/+0
| | | | This reverts commit ba784bdf36f2daf7827ec1ec864f3393ba8d86a0.
* core: update DAO soft-fork number, clean up the codePéter Szilágyi2016-06-231-0/+5
|
* README, core, rpc: fix various typosFabio Berger2016-06-221-3/+3
|
* core: improved chainDb using sequential keyszsfelfoldi2016-06-071-1/+1
|
* core: fixed pointer assignmentJeffrey Wilcke2016-05-131-2/+2
| | | | | | This fixes an issue where it's theoretical possible to cause a consensus failure when hitting the lower end of the difficulty, though pratically impossible it's worth a fix.
* all: update license informationFelix Lange2016-04-151-1/+1
|
* core: added basic chain configurationJeffrey Wilcke2016-04-011-15/+17
| | | | | | | | | 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: various typosLeif Jurvetson2016-03-161-3/+3
|
* core, core/vm, crypto: fixes for homesteadJeffrey Wilcke2016-02-181-6/+5
| | | | | | * Removed some strange code that didn't apply state reverting properly * Refactored code setting from vm & state transition to the executioner * Updated tests
* parmas, crypto, core, core/vm: homestead consensus protocol changesGustav Simonsson2016-02-181-0/+131
| | | | | | | | * 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/+243
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).