- Dec 06, 2016
-
-
Jeffrey Wilcke authored
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.
-
- Nov 24, 2016
-
-
Felix Lange authored
-
Jeffrey Wilcke authored
Implemented proper touch revert journal entries and copied a Parity consensus bug in order to remain in sync with the current longest chain.
-
- Nov 14, 2016
-
-
Zsolt Felföldi authored
-
- Nov 13, 2016
-
-
Jeffrey Wilcke authored
-
Jeffrey Wilcke authored
-
Jeffrey Wilcke authored
-
Jeffrey Wilcke authored
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>
-
- Oct 14, 2016
-
-
Jeffrey Wilcke authored
This implements 1b & 1c of EIP150 by adding a new GasTable which must be returned from the RuleSet config method. This table is used to determine the gas prices for the current epoch. Please note that when the CreateBySuicide gas price is set it is assumed that we're in the new epoch phase. In addition this PR will serve as temporary basis while refactorisation in being done in the EVM64 PR, which will substentially overhaul the gas price code.
-
- Oct 06, 2016
-
-
Felix Lange authored
Two new tests are skipped because they're buggy. Making some newer random state tests work required implementing the 'compressed return value encoding'.
-
Felix Lange authored
This commit replaces the deep-copy based state revert mechanism with a linear complexity journal. This commit also hides several internal StateDB methods to limit the number of ways in which calling code can use the journal incorrectly. As usual consultation and bug fixes to the initial implementation were provided by @karalabe, @obscuren and @Arachnid. Thank you!
-
- Oct 01, 2016
-
-
Péter Szilágyi authored
-
- Sep 26, 2016
-
-
Felix Lange authored
This change introduces a global, per-state cache that keeps account data in the canon state. Thanks to @karalabe for lots of fixes.
-
- Aug 22, 2016
-
-
Nick Johnson authored
This CL makes several refactors: - Define a Tracer interface, implementing the `CaptureState` method - Add the VM environment as the first argument of `Tracer.CaptureState` - Rename existing functionality `StructLogger` an make it an implementation of `Tracer` - Delete `StructLogCollector` and make `StructLogger` collect the logs directly - Change all callers to use the new `StructLogger` where necessary and extract logs from that. - Deletes the apparently obsolete and likely nonfunctional 'TraceCall' from the eth API. Callers that only wish accumulated logs can use the `StructLogger` implementation straightforwardly. Callers that wish to efficiently capture VM traces and operate on them without excessive copying can now implement the `Tracer` interface to receive VM state at each step and do with it as they wish. This CL also removes the accumulation of logs from the vm.Environment; this was necessary as part of the refactor, but also simplifies it by removing a responsibility that doesn't directly belong to the Environment.
-
- Jul 15, 2016
-
-
Péter Szilágyi authored
-
Péter Szilágyi authored
-
- Jul 11, 2016
-
-
Zsolt Felföldi authored
-
- Jun 29, 2016
-
-
Péter Szilágyi authored
This reverts commit 7a5b571c.
-
- Jun 22, 2016
-
-
Jeffrey Wilcke authored
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.
-
- Jun 07, 2016
-
-
Zsolt Felföldi authored
-
- May 25, 2016
-
-
Felix Lange authored
We used to have reporting of bad blocks, but it was disabled before the Frontier release. We need it back because users are usually unable to provide the full RLP data of a bad block when it occurs. A shortcoming of this particular implementation is that the origin peer is not tracked for blocks received during eth/63 sync. No origin peer info is still better than no report at all though.
-
- Apr 15, 2016
-
-
Felix Lange authored
-
Felix Lange authored
-
- Apr 12, 2016
-
-
Felix Lange authored
Unlocking the accounts in the test doesn't help with anything.
-
- Mar 31, 2016
-
-
Jeffrey Wilcke authored
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.
-
- Mar 23, 2016
-
-
Jeffrey Wilcke authored
The EVM is now initialised with an additional configured object that allows you to turn on debugging options.
-
- Mar 22, 2016
-
-
Jeffrey Wilcke authored
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.
-
- Feb 24, 2016
-
-
Péter Szilágyi authored
-
- Feb 21, 2016
-
-
Ricardo Catalinas Jiménez authored
As we aren't really using the standarized SHA-3
-
- Feb 18, 2016
-
-
Jeffrey Wilcke authored
Assuming the following scenario where a miner has 15% of all hashing power and the ability to exert a moderate control over the network to the point where if the attacker sees a message A, it can't stop A from propagating, but what it **can** do is send a message B and ensure that most nodes see B before A. The attacker can then selfish mine and augment selfish mining strategy by giving his own blocks an advantage. This change makes the time at which a block is received less relevant and so the level of control an attacker has over the network no longer makes a difference. This change changes the current td algorithm `B_td > C_td` to the new algorithm `B_td > C_td || B_td == C_td && rnd < 0.5`.
-
Jeffrey Wilcke authored
* Removed some strange code that didn't apply state reverting properly * Refactored code setting from vm & state transition to the executioner * Updated tests
-
Jeffrey Wilcke authored
-
Gustav Simonsson authored
* 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
-
- Nov 27, 2015
-
-
Péter Szilágyi authored
-
- Nov 20, 2015
-
-
Gustav Simonsson authored
-
- Nov 05, 2015
-
-
Péter Szilágyi authored
-
- Oct 28, 2015
-
-
Henning Diedrich authored
-
- Oct 23, 2015
-
-
Gustav Simonsson authored
-
- Oct 21, 2015
-
-
Jeffrey Wilcke authored
Make sure that we're fetching the hash from the current chain and not the canonical chain.
-
- Oct 17, 2015
-
-
Felix Lange authored
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.
-