aboutsummaryrefslogtreecommitdiffstats
path: root/core/execution.go
diff options
context:
space:
mode:
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