core/state, core/vm: reworked storage get / set to use common.Hash
This commit is contained in:
@ -506,14 +506,14 @@ func (self *Vm) Run(context *Context, input []byte) (ret []byte, err error) {
|
||||
|
||||
case SLOAD:
|
||||
loc := common.BigToHash(stack.pop())
|
||||
val := common.Bytes2Big(statedb.GetState(context.Address(), loc))
|
||||
val := statedb.GetState(context.Address(), loc).Big()
|
||||
stack.push(val)
|
||||
|
||||
case SSTORE:
|
||||
loc := common.BigToHash(stack.pop())
|
||||
val := stack.pop()
|
||||
|
||||
statedb.SetState(context.Address(), loc, val)
|
||||
statedb.SetState(context.Address(), loc, common.BigToHash(val))
|
||||
|
||||
case JUMP:
|
||||
if err := jump(pc, stack.pop()); err != nil {
|
||||
@ -686,10 +686,10 @@ func (self *Vm) calculateGasAndSize(context *Context, caller ContextRef, op OpCo
|
||||
var g *big.Int
|
||||
y, x := stack.data[stack.len()-2], stack.data[stack.len()-1]
|
||||
val := statedb.GetState(context.Address(), common.BigToHash(x))
|
||||
if len(val) == 0 && len(y.Bytes()) > 0 {
|
||||
if common.EmptyHash(val) && !common.EmptyHash(common.BigToHash(y)) {
|
||||
// 0 => non 0
|
||||
g = params.SstoreSetGas
|
||||
} else if len(val) > 0 && len(y.Bytes()) == 0 {
|
||||
} else if !common.EmptyHash(val) && common.EmptyHash(common.BigToHash(y)) {
|
||||
statedb.Refund(params.SstoreRefundGas)
|
||||
|
||||
g = params.SstoreClearGas
|
||||
@ -697,6 +697,13 @@ func (self *Vm) calculateGasAndSize(context *Context, caller ContextRef, op OpCo
|
||||
// non 0 => non 0 (or 0 => 0)
|
||||
g = params.SstoreClearGas
|
||||
}
|
||||
|
||||
/*
|
||||
if len(val) == 0 && len(y.Bytes()) > 0 {
|
||||
} else if len(val) > 0 && len(y.Bytes()) == 0 {
|
||||
} else {
|
||||
}
|
||||
*/
|
||||
gas.Set(g)
|
||||
case SUICIDE:
|
||||
if !statedb.IsDeleted(context.Address()) {
|
||||
|
Reference in New Issue
Block a user