diff options
author | obscuren <geffobscura@gmail.com> | 2014-02-18 08:31:51 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2014-02-18 08:31:51 +0800 |
commit | bb3e28310ee3c2cfc5b3153510d4a1d220a22e81 (patch) | |
tree | 7f95ff49afe89b494b28e2bbb8b516da2157b320 /ethchain | |
parent | a5b7279cb507de93fde39d86c414e417f2d0b3e3 (diff) | |
download | go-tangerine-bb3e28310ee3c2cfc5b3153510d4a1d220a22e81.tar go-tangerine-bb3e28310ee3c2cfc5b3153510d4a1d220a22e81.tar.gz go-tangerine-bb3e28310ee3c2cfc5b3153510d4a1d220a22e81.tar.bz2 go-tangerine-bb3e28310ee3c2cfc5b3153510d4a1d220a22e81.tar.lz go-tangerine-bb3e28310ee3c2cfc5b3153510d4a1d220a22e81.tar.xz go-tangerine-bb3e28310ee3c2cfc5b3153510d4a1d220a22e81.tar.zst go-tangerine-bb3e28310ee3c2cfc5b3153510d4a1d220a22e81.zip |
If sender is receiver only subtract the fee
Diffstat (limited to 'ethchain')
-rw-r--r-- | ethchain/transaction_pool.go | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/ethchain/transaction_pool.go b/ethchain/transaction_pool.go index c2d65a2a7..75a8aa5d1 100644 --- a/ethchain/transaction_pool.go +++ b/ethchain/transaction_pool.go @@ -106,17 +106,25 @@ func (pool *TxPool) ProcessTransaction(tx *Transaction, block *Block) (err error } } - // Subtract the amount from the senders account - sender.Amount.Sub(sender.Amount, totAmount) - sender.Nonce += 1 - // Get the receiver receiver := block.GetAddr(tx.Recipient) - // Add the amount to receivers account which should conclude this transaction - receiver.Amount.Add(receiver.Amount, tx.Value) + sender.Nonce += 1 + + // Send Tx to self + if bytes.Compare(tx.Recipient, tx.Sender()) == 0 { + // Subtract the fee + sender.Amount.Sub(sender.Amount, new(big.Int).Mul(TxFee, TxFeeRat)) + } else { + // Subtract the amount from the senders account + sender.Amount.Sub(sender.Amount, totAmount) + + // Add the amount to receivers account which should conclude this transaction + receiver.Amount.Add(receiver.Amount, tx.Value) + + block.UpdateAddr(tx.Recipient, receiver) + } block.UpdateAddr(tx.Sender(), sender) - block.UpdateAddr(tx.Recipient, receiver) return } |