Sync managed accounts to the network
This commit is contained in:
parent
31b086f511
commit
a953f3ec97
|
@ -90,6 +90,7 @@ func (pool *TxPool) ValidateTransaction(tx *types.Transaction) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *TxPool) addTx(tx *types.Transaction) {
|
func (self *TxPool) addTx(tx *types.Transaction) {
|
||||||
|
self.txs[tx.Hash()] = tx
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *TxPool) add(tx *types.Transaction) error {
|
func (self *TxPool) add(tx *types.Transaction) error {
|
||||||
|
@ -107,7 +108,7 @@ func (self *TxPool) add(tx *types.Transaction) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
self.txs[hash] = tx
|
self.addTx(tx)
|
||||||
|
|
||||||
var toname string
|
var toname string
|
||||||
if to := tx.To(); to != nil {
|
if to := tx.To(); to != nil {
|
||||||
|
@ -122,9 +123,7 @@ func (self *TxPool) add(tx *types.Transaction) error {
|
||||||
txplogger.Debugf("(t) %x => %s (%v) %x\n", from, toname, tx.Value, tx.Hash())
|
txplogger.Debugf("(t) %x => %s (%v) %x\n", from, toname, tx.Value, tx.Hash())
|
||||||
|
|
||||||
// Notify the subscribers
|
// Notify the subscribers
|
||||||
//println("post")
|
|
||||||
go self.eventMux.Post(TxPreEvent{tx})
|
go self.eventMux.Post(TxPreEvent{tx})
|
||||||
//println("done post")
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -436,6 +436,21 @@ func (self *Ethereum) txBroadcastLoop() {
|
||||||
for obj := range self.txSub.Chan() {
|
for obj := range self.txSub.Chan() {
|
||||||
event := obj.(core.TxPreEvent)
|
event := obj.(core.TxPreEvent)
|
||||||
self.net.Broadcast("eth", TxMsg, []*types.Transaction{event.Tx})
|
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)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue