core, core/vm, cmd/evm: remove redundant balance check
This commit is contained in:
		@@ -217,8 +217,8 @@ func (self *VMEnv) AddLog(log *vm.Log) {
 | 
				
			|||||||
func (self *VMEnv) CanTransfer(from common.Address, balance *big.Int) bool {
 | 
					func (self *VMEnv) CanTransfer(from common.Address, balance *big.Int) bool {
 | 
				
			||||||
	return self.state.GetBalance(from).Cmp(balance) >= 0
 | 
						return self.state.GetBalance(from).Cmp(balance) >= 0
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
func (self *VMEnv) Transfer(from, to vm.Account, amount *big.Int) error {
 | 
					func (self *VMEnv) Transfer(from, to vm.Account, amount *big.Int) {
 | 
				
			||||||
	return core.Transfer(from, to, amount)
 | 
						core.Transfer(from, to, amount)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (self *VMEnv) Call(caller vm.ContractRef, addr common.Address, data []byte, gas, price, value *big.Int) ([]byte, error) {
 | 
					func (self *VMEnv) Call(caller vm.ContractRef, addr common.Address, data []byte, gas, price, value *big.Int) ([]byte, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,7 +17,6 @@
 | 
				
			|||||||
package core
 | 
					package core
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	"math/big"
 | 
						"math/big"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/ethereum/go-ethereum/common"
 | 
						"github.com/ethereum/go-ethereum/common"
 | 
				
			||||||
@@ -108,13 +107,7 @@ func exec(env vm.Environment, caller vm.ContractRef, address, codeAddr *common.A
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// generic transfer method
 | 
					// generic transfer method
 | 
				
			||||||
func Transfer(from, to vm.Account, amount *big.Int) error {
 | 
					func Transfer(from, to vm.Account, amount *big.Int) {
 | 
				
			||||||
	if from.Balance().Cmp(amount) < 0 {
 | 
					 | 
				
			||||||
		return errors.New("Insufficient balance in account")
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	from.SubBalance(amount)
 | 
						from.SubBalance(amount)
 | 
				
			||||||
	to.AddBalance(amount)
 | 
						to.AddBalance(amount)
 | 
				
			||||||
 | 
					 | 
				
			||||||
	return nil
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -51,7 +51,7 @@ type Environment interface {
 | 
				
			|||||||
	// Determines whether it's possible to transact
 | 
						// Determines whether it's possible to transact
 | 
				
			||||||
	CanTransfer(from common.Address, balance *big.Int) bool
 | 
						CanTransfer(from common.Address, balance *big.Int) bool
 | 
				
			||||||
	// Transfers amount from one account to the other
 | 
						// Transfers amount from one account to the other
 | 
				
			||||||
	Transfer(from, to Account, amount *big.Int) error
 | 
						Transfer(from, to Account, amount *big.Int)
 | 
				
			||||||
	// Adds a LOG to the state
 | 
						// Adds a LOG to the state
 | 
				
			||||||
	AddLog(*Log)
 | 
						AddLog(*Log)
 | 
				
			||||||
	// Adds a structured log to the env
 | 
						// Adds a structured log to the env
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -152,9 +152,7 @@ func (self *Env) SetDepth(i int) { self.depth = i }
 | 
				
			|||||||
func (self *Env) CanTransfer(from common.Address, balance *big.Int) bool {
 | 
					func (self *Env) CanTransfer(from common.Address, balance *big.Int) bool {
 | 
				
			||||||
	return true
 | 
						return true
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
func (self *Env) Transfer(from, to Account, amount *big.Int) error {
 | 
					func (self *Env) Transfer(from, to Account, amount *big.Int) {}
 | 
				
			||||||
	return nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
func (self *Env) Call(caller ContractRef, addr common.Address, data []byte, gas, price, value *big.Int) ([]byte, error) {
 | 
					func (self *Env) Call(caller ContractRef, addr common.Address, data []byte, gas, price, value *big.Int) ([]byte, error) {
 | 
				
			||||||
	return nil, nil
 | 
						return nil, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -81,8 +81,8 @@ func (self *VMEnv) SetSnapshot(copy vm.Database) {
 | 
				
			|||||||
	self.state.Set(copy.(*state.StateDB))
 | 
						self.state.Set(copy.(*state.StateDB))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (self *VMEnv) Transfer(from, to vm.Account, amount *big.Int) error {
 | 
					func (self *VMEnv) Transfer(from, to vm.Account, amount *big.Int) {
 | 
				
			||||||
	return Transfer(from, to, amount)
 | 
						Transfer(from, to, amount)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (self *VMEnv) Call(me vm.ContractRef, addr common.Address, data []byte, gas, price, value *big.Int) ([]byte, error) {
 | 
					func (self *VMEnv) Call(me vm.ContractRef, addr common.Address, data []byte, gas, price, value *big.Int) ([]byte, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -209,11 +209,11 @@ func (self *Env) SetSnapshot(copy vm.Database) {
 | 
				
			|||||||
	self.state.Set(copy.(*state.StateDB))
 | 
						self.state.Set(copy.(*state.StateDB))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (self *Env) Transfer(from, to vm.Account, amount *big.Int) error {
 | 
					func (self *Env) Transfer(from, to vm.Account, amount *big.Int) {
 | 
				
			||||||
	if self.skipTransfer {
 | 
						if self.skipTransfer {
 | 
				
			||||||
		return nil
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return core.Transfer(from, to, amount)
 | 
						core.Transfer(from, to, amount)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (self *Env) Call(caller vm.ContractRef, addr common.Address, data []byte, gas, price, value *big.Int) ([]byte, error) {
 | 
					func (self *Env) Call(caller vm.ContractRef, addr common.Address, data []byte, gas, price, value *big.Int) ([]byte, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user