Go-Ethereum

使用 go-ethereum/ethclient 等待交易

  • April 16, 2022

在 ethers.js 中,可以等待使用wait(). ethclientgo-ethereum作為包使用時有沒有辦法做到這一點?我想在繼續程序之前等待結果。

創建了這個函式來輪詢客戶端的交易,返回一個只有在交易被確認後才解除阻塞的通道(並通過通道發送所述交易)

// Returns a channel that blocks until the transaction is confirmed
func waitTxConfirmed(ctx context.Context, c *ethclient.Client, hash common.Hash) <-chan *types.Transaction {
   ch := make(chan *types.Transaction)
   go func() {
       for {
           tx, pending, _ := c.TransactionByHash(ctx, hash)
           if !pending {
               ch <- tx
           }

           time.Sleep(time.Millisecond * 500)
       }
   }()

   return ch
}

引用自:https://ethereum.stackexchange.com/questions/125718