|
|
|
@ -19,6 +19,14 @@ func (self Code) String() string { |
|
|
|
|
|
|
|
|
|
type Storage map[string]*ethutil.Value |
|
|
|
|
|
|
|
|
|
func (self Storage) String() (str string) { |
|
|
|
|
for key, value := range self { |
|
|
|
|
str += fmt.Sprintf("%X : %X\n", key, value.Bytes()) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (self Storage) Copy() Storage { |
|
|
|
|
cpy := make(Storage) |
|
|
|
|
for key, value := range self { |
|
|
|
@ -119,10 +127,9 @@ func (self *StateObject) GetStorage(key *big.Int) *ethutil.Value { |
|
|
|
|
} |
|
|
|
|
func (self *StateObject) SetStorage(key *big.Int, value *ethutil.Value) { |
|
|
|
|
self.SetState(key.Bytes(), value) |
|
|
|
|
self.dirty = true |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (self *StateObject) Storage() map[string]*ethutil.Value { |
|
|
|
|
func (self *StateObject) Storage() Storage { |
|
|
|
|
return self.storage |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -172,20 +179,22 @@ func (c *StateObject) AddBalance(amount *big.Int) { |
|
|
|
|
|
|
|
|
|
statelogger.Debugf("%x: #%d %v (+ %v)\n", c.Address(), c.nonce, c.balance, amount) |
|
|
|
|
} |
|
|
|
|
func (c *StateObject) AddAmount(amount *big.Int) { c.AddBalance(amount) } |
|
|
|
|
|
|
|
|
|
func (c *StateObject) SubBalance(amount *big.Int) { |
|
|
|
|
c.SetBalance(new(big.Int).Sub(c.balance, amount)) |
|
|
|
|
|
|
|
|
|
statelogger.Debugf("%x: #%d %v (- %v)\n", c.Address(), c.nonce, c.balance, amount) |
|
|
|
|
} |
|
|
|
|
func (c *StateObject) SubAmount(amount *big.Int) { c.SubBalance(amount) } |
|
|
|
|
|
|
|
|
|
func (c *StateObject) SetBalance(amount *big.Int) { |
|
|
|
|
c.balance = amount |
|
|
|
|
c.dirty = true |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (c *StateObject) St() Storage { |
|
|
|
|
return c.storage |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
// Gas setters and getters
|
|
|
|
|
//
|
|
|
|
@ -198,7 +207,7 @@ func (c *StateObject) ConvertGas(gas, price *big.Int) error { |
|
|
|
|
return fmt.Errorf("insufficient amount: %v, %v", c.balance, total) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
c.SubAmount(total) |
|
|
|
|
c.SubBalance(total) |
|
|
|
|
|
|
|
|
|
c.dirty = true |
|
|
|
|
|
|
|
|
@ -221,7 +230,7 @@ func (self *StateObject) BuyGas(gas, price *big.Int) error { |
|
|
|
|
rGas := new(big.Int).Set(gas) |
|
|
|
|
rGas.Mul(rGas, price) |
|
|
|
|
|
|
|
|
|
self.AddAmount(rGas) |
|
|
|
|
self.AddBalance(rGas) |
|
|
|
|
|
|
|
|
|
self.dirty = true |
|
|
|
|
|
|
|
|
|