diff options
author | Jeffrey Wilcke <geffobscura@gmail.com> | 2016-06-18 17:17:57 +0800 |
---|---|---|
committer | Péter Szilágyi <peterke@gmail.com> | 2016-06-22 16:38:25 +0800 |
commit | 7a5b571c671e70e0e4807cf971c15e2d1e09d33d (patch) | |
tree | 4ae6b6e4be80171e26aab26b88124cd87a3c53d4 /core/execution.go | |
parent | 599e3c7b3f22b157c4f643a48d391cf972384099 (diff) | |
download | dexon-7a5b571c671e70e0e4807cf971c15e2d1e09d33d.tar dexon-7a5b571c671e70e0e4807cf971c15e2d1e09d33d.tar.gz dexon-7a5b571c671e70e0e4807cf971c15e2d1e09d33d.tar.bz2 dexon-7a5b571c671e70e0e4807cf971c15e2d1e09d33d.tar.lz dexon-7a5b571c671e70e0e4807cf971c15e2d1e09d33d.tar.xz dexon-7a5b571c671e70e0e4807cf971c15e2d1e09d33d.tar.zst dexon-7a5b571c671e70e0e4807cf971c15e2d1e09d33d.zip |
test, cmd/evm, core, core/vm: illegal code hash implementation
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.
Diffstat (limited to 'core/execution.go')
-rw-r--r-- | core/execution.go | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/core/execution.go b/core/execution.go index 82143443c..ec04f6140 100644 --- a/core/execution.go +++ b/core/execution.go @@ -85,6 +85,11 @@ func exec(env vm.Environment, caller vm.ContractRef, address, codeAddr *common.A createAccount = true } + // mark the code hash if the execution is a call, callcode or delegate. + if value.Cmp(common.Big0) > 0 { + env.MarkCodeHash(env.Db().GetCodeHash(caller.Address())) + } + snapshotPreTransfer := env.MakeSnapshot() var ( from = env.Db().GetAccount(caller.Address()) |