使用 Golang 語言取得以太坊上的交易訊息:以著名的事件為例

in go •  6 years ago  (edited)

0、要在 Windows 10 上使用 Golang 存取以太坊網路,請先完成以下設置:
https://steemit.com/go/@oneleo/windows-10-golang-rinkeby
https://steemkr.com/go/@oneleo/windows-10-golang-rinkeby

1、編譯並執行以下 Golang 程式碼:

// 設定套件名稱,若設置為 main 則為程式執行入口。
package main

// 匯入需要用的套件。
import (
    "context"
    "fmt"
    "log"

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

// main 函數為程式執行入口第一個會執行的函數
func main() {
    // 連線至指定的以太坊位址:https://mainnet.infura.io
    client, err := ethclient.Dial("https://mainnet.infura.io")
    // 確認連線是否有誤
    if err != nil {
        // 若連線錯誤則將錯誤訊息紀錄後,強制結束程式執行。
        log.Fatal(err)
    }
    // 設置要查詢的 Transaction 交易 Hash 碼。
    // 這次要查詢的交易可至此查看:https://etherscan.io/tx/0x2d6a7b0f6adeff38423d4c62cd8b6ccb708ddad85da5d3d06756ad4d8a04a6a2
    txHashTku := common.HexToHash("0x2d6a7b0f6adeff38423d4c62cd8b6ccb708ddad85da5d3d06756ad4d8a04a6a2")
    // 從上述指定的以太坊地址找到指定的交易資訊。
    txTku, _, err := client.TransactionByHash(context.Background(), txHashTku)
    // 確認是否有找到指定的交易。
    if err != nil {
        // 若沒有找到指定的交易則將錯誤訊息紀錄後,強制結束程式執行。
        log.Fatal(err)
    }
    // 將交易資訊中的 Input Data 取出後,轉換成文字形式並印出。
    fmt.Println("【Transaction Hash】",txHashTku.Hex())
    fmt.Println("【The transaction tx data string】\n", string(txTku.Data()))

    fmt.Println("--------------------------------------------------")

    // 設置要查詢的 Transaction 交易 Hash 碼。
    // 這次要查詢的交易可至此查看:https://etherscan.io/tx/0x3ff976bb56ffd5b56284964596f07157f6b2009dec34373b70091d3eb82ab596
    txHashAbs := common.HexToHash("0x3ff976bb56ffd5b56284964596f07157f6b2009dec34373b70091d3eb82ab596")
    // 從上述指定的以太坊地址找到指定的交易資訊。
    txAbs, _, err := client.TransactionByHash(context.Background(), txHashAbs)
    // 確認是否有找到指定的交易。
    if err != nil {
        // 若沒有找到指定的交易則將錯誤訊息紀錄後,強制結束程式執行。
        log.Fatal(err)
    }
    // 將交易資訊中的 Input Data 取出後,轉換成文字形式並印出。
    fmt.Println("【Transaction Hash】",txHashAbs.Hex())
    fmt.Println("【The transaction tx data string】\n", string(txAbs.Data()))
}

輸出:

【Transaction Hash】 0x2d6a7b0f6adeff38423d4c62cd8b6ccb708ddad85da5d3d06756ad4d8a04a6a2
【The transaction tx data string】
(…略)
--------------------------------------------------
【Transaction Hash】 0x3ff976bb56ffd5b56284964596f07157f6b2009dec34373b70091d3eb82ab596
【The transaction tx data string】
(…略)

Donate ADA:
DdzFFzCqrhsup2Q4nnhKJJZ5BRuPkYUSPqDJn72t2dtHtVqsz5kQQmopMQR16Sv9qS5NC4w8Kv5P8XrDH2n2FD2akxtrntjc8hbgAmTz

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!