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@byzantine-lab.io>2019-06-12 17:27:17 +0800
commitc39cae8184809e76de995e5a326ea68504f5b760 (patch)
tree0ee90864a01865c924f9dd29936fe1d23143eea8 /dex
parentbd678d78e73b9eafaf3d1551f5614dd938cc5de3 (diff)
downloadgo-tangerine-c39cae8184809e76de995e5a326ea68504f5b760.tar
go-tangerine-c39cae8184809e76de995e5a326ea68504f5b760.tar.gz
go-tangerine-c39cae8184809e76de995e5a326ea68504f5b760.tar.bz2
go-tangerine-c39cae8184809e76de995e5a326ea68504f5b760.tar.lz
go-tangerine-c39cae8184809e76de995e5a326ea68504f5b760.tar.xz
go-tangerine-c39cae8184809e76de995e5a326ea68504f5b760.tar.zst
go-tangerine-c39cae8184809e76de995e5a326ea68504f5b760.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 {