aboutsummaryrefslogtreecommitdiffstats
path: root/dex
diff options
context:
space:
mode:
authorBojie Wu <bojie@dexon.org>2018-10-31 12:16:50 +0800
committerWei-Ning Huang <w@dexon.org>2019-03-12 12:19:09 +0800
commit12e1d962d7ad2e5e25e41a084348a30f352bbfa4 (patch)
tree3f7f9d623d6118aa3d52c9decd428acb1bfcb6bb /dex
parent841eba830dd00d4734ee2e920d7251f2b9d235a5 (diff)
downloaddexon-12e1d962d7ad2e5e25e41a084348a30f352bbfa4.tar
dexon-12e1d962d7ad2e5e25e41a084348a30f352bbfa4.tar.gz
dexon-12e1d962d7ad2e5e25e41a084348a30f352bbfa4.tar.bz2
dexon-12e1d962d7ad2e5e25e41a084348a30f352bbfa4.tar.lz
dexon-12e1d962d7ad2e5e25e41a084348a30f352bbfa4.tar.xz
dexon-12e1d962d7ad2e5e25e41a084348a30f352bbfa4.tar.zst
dexon-12e1d962d7ad2e5e25e41a084348a30f352bbfa4.zip
app: refactor prepare logic
Diffstat (limited to 'dex')
-rw-r--r--dex/app.go28
1 files changed, 17 insertions, 11 deletions
diff --git a/dex/app.go b/dex/app.go
index 6c6d8da53..a226aaa0c 100644
--- a/dex/app.go
+++ b/dex/app.go
@@ -156,6 +156,12 @@ addressMap:
continue
}
+ balance := latestState.GetBalance(address)
+ cost, exist := d.blockchain.GetCostInConfirmedBlocks(address)
+ if exist {
+ balance = new(big.Int).Sub(balance, cost)
+ }
+
var expectNonce uint64
// get last nonce from confirmed blocks
lastConfirmedNonce, exist := d.blockchain.GetLastNonceInConfirmedBlocks(address)
@@ -166,18 +172,18 @@ addressMap:
expectNonce = lastConfirmedNonce + 1
}
- if expectNonce != txs[0].Nonce() {
- log.Debug("Nonce check error", "expect", expectNonce, "nonce", txs[0].Nonce())
- continue
- }
-
- balance := latestState.GetBalance(address)
- cost, exist := d.blockchain.GetCostInConfirmedBlocks(address)
- if exist {
- balance = new(big.Int).Sub(balance, cost)
- }
-
for _, tx := range txs {
+ if expectNonce == tx.Nonce() {
+ expectNonce++
+ } else if expectNonce < tx.Nonce() {
+ // break to do next address
+ break
+ } else if expectNonce > tx.Nonce() {
+ // continue to find next available
+ log.Debug("Nonce check error and continue next tx", "expect", expectNonce, "nonce", tx.Nonce())
+ continue
+ }
+
maxGasUsed := new(big.Int).Mul(new(big.Int).SetUint64(tx.Gas()), tx.GasPrice())
intrinsicGas, err := core.IntrinsicGas(tx.Data(), tx.To() == nil, true)
if err != nil {