aboutsummaryrefslogtreecommitdiffstats
path: root/core/vm/evm.go
diff options
context:
space:
mode:
authorJeffrey Wilcke <jeffrey@ethereum.org>2017-02-23 06:29:59 +0800
committerFelix Lange <fjl@users.noreply.github.com>2017-02-23 06:29:59 +0800
commit024d41d0c2660d8f1dfbeb14921c7109e30493a2 (patch)
treea2b4ed630b84084c7f439d1539ed0551ec729cbd /core/vm/evm.go
parent46ec4357e73dd0c43951d11638d9aed94f8ffd29 (diff)
downloaddexon-024d41d0c2660d8f1dfbeb14921c7109e30493a2.tar
dexon-024d41d0c2660d8f1dfbeb14921c7109e30493a2.tar.gz
dexon-024d41d0c2660d8f1dfbeb14921c7109e30493a2.tar.bz2
dexon-024d41d0c2660d8f1dfbeb14921c7109e30493a2.tar.lz
dexon-024d41d0c2660d8f1dfbeb14921c7109e30493a2.tar.xz
dexon-024d41d0c2660d8f1dfbeb14921c7109e30493a2.tar.zst
dexon-024d41d0c2660d8f1dfbeb14921c7109e30493a2.zip
core, core/state, core/vm: remove exported account getters (#3618)
Removed exported statedb object accessors, reducing the chance for nasty bugs to creep in. It's also ugly and unnecessary to have these methods.
Diffstat (limited to 'core/vm/evm.go')
-rw-r--r--core/vm/evm.go18
1 files changed, 8 insertions, 10 deletions
diff --git a/core/vm/evm.go b/core/vm/evm.go
index 0c5d998c2..d1fac6c10 100644
--- a/core/vm/evm.go
+++ b/core/vm/evm.go
@@ -116,7 +116,7 @@ func (evm *EVM) Call(caller ContractRef, addr common.Address, input []byte, gas
}
var (
- to Account
+ to = AccountRef(addr)
snapshot = evm.StateDB.Snapshot()
)
if !evm.StateDB.Exist(addr) {
@@ -124,9 +124,7 @@ func (evm *EVM) Call(caller ContractRef, addr common.Address, input []byte, gas
return nil, gas, nil
}
- to = evm.StateDB.CreateAccount(addr)
- } else {
- to = evm.StateDB.GetAccount(addr)
+ evm.StateDB.CreateAccount(addr)
}
evm.Transfer(evm.StateDB, caller.Address(), to.Address(), value)
@@ -169,7 +167,7 @@ func (evm *EVM) CallCode(caller ContractRef, addr common.Address, input []byte,
var (
snapshot = evm.StateDB.Snapshot()
- to = evm.StateDB.GetAccount(caller.Address())
+ to = AccountRef(caller.Address())
)
// initialise a new contract and set the code that is to be used by the
// E The contract is a scoped evmironment for this execution context
@@ -205,11 +203,11 @@ func (evm *EVM) DelegateCall(caller ContractRef, addr common.Address, input []by
var (
snapshot = evm.StateDB.Snapshot()
- to = evm.StateDB.GetAccount(caller.Address())
+ to = AccountRef(caller.Address())
)
// Iinitialise a new contract and make initialise the delegate values
- contract := NewContract(caller, to, caller.Value(), gas).AsDelegate()
+ contract := NewContract(caller, to, nil, gas).AsDelegate()
contract.SetCallCode(&addr, evm.StateDB.GetCodeHash(addr), evm.StateDB.GetCode(addr))
ret, err = evm.interpreter.Run(contract, input)
@@ -243,16 +241,16 @@ func (evm *EVM) Create(caller ContractRef, code []byte, gas uint64, value *big.I
snapshot := evm.StateDB.Snapshot()
contractAddr = crypto.CreateAddress(caller.Address(), nonce)
- to := evm.StateDB.CreateAccount(contractAddr)
+ evm.StateDB.CreateAccount(contractAddr)
if evm.ChainConfig().IsEIP158(evm.BlockNumber) {
evm.StateDB.SetNonce(contractAddr, 1)
}
- evm.Transfer(evm.StateDB, caller.Address(), to.Address(), value)
+ evm.Transfer(evm.StateDB, caller.Address(), contractAddr, value)
// initialise a new contract and set the code that is to be used by the
// E The contract is a scoped evmironment for this execution context
// only.
- contract := NewContract(caller, to, value, gas)
+ contract := NewContract(caller, AccountRef(contractAddr), value, gas)
contract.SetCallCode(&contractAddr, crypto.Keccak256Hash(code), code)
ret, err = evm.interpreter.Run(contract, nil)