golang geth 查询交易

  • lovo1
  • 更新于 2天前
  • 阅读 32

go getch 查询交易


import (
    "context"
    "fmt"
    "log"
    "math/big"

    "github.com/ethereum/go-ethereum/common"
    "github.com/ethereum/go-ethereum/ethclient"
)

func main() {
    var url string = "http://localhost:8545"
    client, err := ethclient.Dial(url)
    if err != nil {
        log.Fatal(err)
    }
       // 依据区块查询交易,设置区块编码
    blockNumber := big.NewInt(137)
    block, err := client.BlockByNumber(context.Background(), blockNumber)
    if err != nil {
        log.Fatal(err)
    }

       // 遍历区块下的交易
    for _, tx := range block.Transactions() {
        fmt.Println(tx.Hash().Hex())                // 
        fmt.Println("value: ", tx.Value().String()) // 10000000000000000
        fmt.Println(tx.Gas())                       // 105000
        fmt.Println(tx.GasPrice().Uint64())         // 102000000000
        fmt.Println(tx.Nonce())                     // 110644
        fmt.Println(tx.Data())                      // []

               // 查询事务数据  1 成功 0失败
        receipt, err := client.TransactionReceipt(context.Background(), tx.Hash())
        if err != nil {
            log.Fatal("receipt failed,", err)
        }

        fmt.Println("receipt.Status,", receipt.Status) 

    }

    txHash := common.HexToHash("0x2d470cde76abba4ea10a2d973dfb89f60d49064ab801cba7389af5954f01aa03")
    tx, isPending, err := client.TransactionByHash(context.Background(), txHash)
    if err != nil {
        log.Fatal("isPending error", err)
    }

    fmt.Println("sss", tx.Hash().Hex()) // 
    fmt.Println("sss22", isPending)     // false
}
  • 原创
  • 学分: 0
  • 分类: Go
  • 标签:
点赞 0
收藏 0
分享

0 条评论

请先 登录 后评论
lovo1
lovo1
0x604B...4E95
MY