param으로 준 addr와 그 nonce 값이 기존보다 작다면 가상 state db의 nonce를 업데이트한다.
(보통 tx가 drop되는 경우 효력을 갖는 듯)
noncer는 작은 가상 state db로, pool에 있는 account의 nonce를 관리한다. (unknown address 라면 실제 db로 fallback)
dir : core/txpool/noncer.go
noncer를 lock
txn.lock.Lock()
defer txn.lock.Unlock()
addr의 기존 nonce값을 가져온다. (처음보는 address라면 real state db로 fallback)
if _, ok := tx.nonces[addr]l !ok {
if nonce := txn.fallback.Getnonce(addr); nonce != 0 {
txn.nonces[addr] = nonce
}
}
기존 nonce값보다 새로운 nonce값이 작아졌다면 nonce값을 업데이트
if txn.nonces[addr] <= nonce {
return
}
txn.nonces[addr] = nonce
txpool.TxPool.truncatePending()