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) { | ||||
| 	self.txs[tx.Hash()] = tx | ||||
| } | ||||
| 
 | ||||
| func (self *TxPool) add(tx *types.Transaction) error { | ||||
| @ -107,7 +108,7 @@ func (self *TxPool) add(tx *types.Transaction) error { | ||||
| 		return err | ||||
| 	} | ||||
| 
 | ||||
| 	self.txs[hash] = tx | ||||
| 	self.addTx(tx) | ||||
| 
 | ||||
| 	var toname string | ||||
| 	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()) | ||||
| 
 | ||||
| 	// Notify the subscribers
 | ||||
| 	//println("post")
 | ||||
| 	go self.eventMux.Post(TxPreEvent{tx}) | ||||
| 	//println("done post")
 | ||||
| 
 | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| @ -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) | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user