aboutsummaryrefslogtreecommitdiffstats
path: root/eth
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2015-04-08 19:07:21 +0800
committerobscuren <geffobscura@gmail.com>2015-04-08 19:07:21 +0800
commita953f3ec971fc6aebd28fed78d44778107ee4033 (patch)
treeafe3217314fc03524bb94faf8c0923854deae042 /eth
parent31b086f5111e4bd506a4ae468a9247bff24dd5cb (diff)
downloadgo-tangerine-a953f3ec971fc6aebd28fed78d44778107ee4033.tar.gz
go-tangerine-a953f3ec971fc6aebd28fed78d44778107ee4033.tar.zst
go-tangerine-a953f3ec971fc6aebd28fed78d44778107ee4033.zip
Sync managed accounts to the network
Diffstat (limited to 'eth')
-rw-r--r--eth/backend.go15
1 files changed, 15 insertions, 0 deletions
diff --git a/eth/backend.go b/eth/backend.go
index 6b60af1f1..317ee7373 100644
--- a/eth/backend.go
+++ b/eth/backend.go
@@ -436,6 +436,21 @@ func (self *Ethereum) txBroadcastLoop() {
for obj := range self.txSub.Chan() {
event := obj.(core.TxPreEvent)
self.net.Broadcast("eth", TxMsg, []*types.Transaction{event.Tx})
+ self.syncAccounts(event.Tx)
+ }
+}
+
+// keep accounts synced up
+func (self *Ethereum) syncAccounts(tx *types.Transaction) {
+ from, err := tx.From()
+ if err != nil {
+ return
+ }
+
+ if self.accountManager.HasAccount(from.Bytes()) {
+ if self.chainManager.TxState().GetNonce(from) < tx.Nonce() {
+ self.chainManager.TxState().SetNonce(from, tx.Nonce()+1)
+ }
}
}