diff options
author | obscuren <geffobscura@gmail.com> | 2015-05-27 01:50:42 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2015-05-27 02:38:26 +0800 |
commit | c37389f19ced68c8eb3bd6589f206b8a14d9a00a (patch) | |
tree | 521de84ace66e7bd06e0074ca86e7d06eb7cfafb /core/transaction_pool.go | |
parent | a55f408c10ea7ed40e2bd843668b6eb6c2dc038b (diff) | |
download | dexon-c37389f19ced68c8eb3bd6589f206b8a14d9a00a.tar dexon-c37389f19ced68c8eb3bd6589f206b8a14d9a00a.tar.gz dexon-c37389f19ced68c8eb3bd6589f206b8a14d9a00a.tar.bz2 dexon-c37389f19ced68c8eb3bd6589f206b8a14d9a00a.tar.lz dexon-c37389f19ced68c8eb3bd6589f206b8a14d9a00a.tar.xz dexon-c37389f19ced68c8eb3bd6589f206b8a14d9a00a.tar.zst dexon-c37389f19ced68c8eb3bd6589f206b8a14d9a00a.zip |
core: check negative value transactions. Closes #1109
Diffstat (limited to 'core/transaction_pool.go')
-rw-r--r-- | core/transaction_pool.go | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/core/transaction_pool.go b/core/transaction_pool.go index e68f7406a..c896488d1 100644 --- a/core/transaction_pool.go +++ b/core/transaction_pool.go @@ -25,6 +25,7 @@ var ( ErrInsufficientFunds = errors.New("Insufficient funds for gas * price + value") ErrIntrinsicGas = errors.New("Intrinsic gas too low") ErrGasLimit = errors.New("Exceeds block gas limit") + ErrNegativeValue = errors.New("Negative value") ) const txPoolQueueSize = 50 @@ -125,6 +126,10 @@ func (pool *TxPool) ValidateTransaction(tx *types.Transaction) error { return ErrGasLimit } + if tx.Amount.Cmp(common.Big0) < 0 { + return ErrNegativeValue + } + total := new(big.Int).Mul(tx.Price, tx.GasLimit) total.Add(total, tx.Value()) if pool.currentState().GetBalance(from).Cmp(total) < 0 { |