aboutsummaryrefslogtreecommitdiffstats
path: root/core/execution.go
diff options
context:
space:
mode:
authorPéter Szilágyi <peterke@gmail.com>2016-06-24 18:09:36 +0800
committerGitHub <noreply@github.com>2016-06-24 18:09:36 +0800
commit848dec3da2dae77ef50ea229cf430ff0171766ed (patch)
tree06f7458835408f94116572d13d1bf0bf48b278f3 /core/execution.go
parentae0880997b7427d6f19fb8501b37f0168623f0c8 (diff)
parentba784bdf36f2daf7827ec1ec864f3393ba8d86a0 (diff)
downloaddexon-848dec3da2dae77ef50ea229cf430ff0171766ed.tar
dexon-848dec3da2dae77ef50ea229cf430ff0171766ed.tar.gz
dexon-848dec3da2dae77ef50ea229cf430ff0171766ed.tar.bz2
dexon-848dec3da2dae77ef50ea229cf430ff0171766ed.tar.lz
dexon-848dec3da2dae77ef50ea229cf430ff0171766ed.tar.xz
dexon-848dec3da2dae77ef50ea229cf430ff0171766ed.tar.zst
dexon-848dec3da2dae77ef50ea229cf430ff0171766ed.zip
Merge pull request #2725 from karalabe/obscuren-softfork-dao-2
DAO soft-fork
Diffstat (limited to 'core/execution.go')
-rw-r--r--core/execution.go10
1 files changed, 8 insertions, 2 deletions
diff --git a/core/execution.go b/core/execution.go
index 82143443c..d2008bc3e 100644
--- a/core/execution.go
+++ b/core/execution.go
@@ -84,7 +84,10 @@ func exec(env vm.Environment, caller vm.ContractRef, address, codeAddr *common.A
address = &addr
createAccount = true
}
-
+ // Mark all contracts doing outbound value transfers to allow DAO filtering.
+ if value.Cmp(common.Big0) > 0 {
+ env.MarkCodeHash(env.Db().GetCodeHash(caller.Address()))
+ }
snapshotPreTransfer := env.MakeSnapshot()
var (
from = env.Db().GetAccount(caller.Address())
@@ -143,7 +146,10 @@ func execDelegateCall(env vm.Environment, caller vm.ContractRef, originAddr, toA
caller.ReturnGas(gas, gasPrice)
return nil, common.Address{}, vm.DepthError
}
-
+ // Mark all contracts doing outbound value transfers to allow DAO filtering.
+ if value.Cmp(common.Big0) > 0 {
+ env.MarkCodeHash(env.Db().GetCodeHash(caller.Address()))
+ }
snapshot := env.MakeSnapshot()
var to vm.Account