added a transfer method to vm env
This commit is contained in:
@ -1,6 +1,7 @@
|
||||
package vm
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"math/big"
|
||||
|
||||
"github.com/ethereum/eth-go/ethstate"
|
||||
@ -18,9 +19,28 @@ type Environment interface {
|
||||
Difficulty() *big.Int
|
||||
BlockHash() []byte
|
||||
GasLimit() *big.Int
|
||||
Transfer(from, to Account, amount *big.Int) error
|
||||
}
|
||||
|
||||
type Object interface {
|
||||
GetStorage(key *big.Int) *ethutil.Value
|
||||
SetStorage(key *big.Int, value *ethutil.Value)
|
||||
}
|
||||
|
||||
type Account interface {
|
||||
SubBalance(amount *big.Int)
|
||||
AddBalance(amount *big.Int)
|
||||
Balance() *big.Int
|
||||
}
|
||||
|
||||
// generic transfer method
|
||||
func Transfer(from, to Account, amount *big.Int) error {
|
||||
if from.Balance().Cmp(amount) < 0 {
|
||||
return errors.New("Insufficient balance in account")
|
||||
}
|
||||
|
||||
from.SubBalance(amount)
|
||||
to.AddBalance(amount)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user