前回の記事ではデータベースへの接続を完了しましたが、この章では ethclient の設定と初期化を完了します。
1. ethclientの設定
1.1. go-ethereum をインストールする
コマンドラインターミナルに次のコードを入力してインストールします。
go get github.com/ethereum/go-ethereum
1.2、Ethclient構成
1.2.1、新しい ethclient.go を作成する
config ディレクトリに新しい ethclient.go を作成し、次のコードを追加します。
package config
import (
"github.com/ethereum/go-ethereum/ethclient"
"go-chain-data/global"
)
func NewEthRpcClient() (*ethclient.Client, error) {
client, err := ethclient.Dial(global.BlockChainConfig.RpcUrl)
if err != nil {
return nil, err
}
return client, nil
}
ethclient.Dial() メソッドを通じて、ブロックチェーンの Rpc 呼び出しアドレスを渡すことができ、ethclient のインスタンス オブジェクトを作成できます。このオブジェクトを通じて、ブロックチェーンと対話できます。
2. ethclientの初期化
2.1、新しい構成
2.1.1. global.go を変更します。
global.go を開き、EthRpcClient の定義をグローバル変数に追加します。
EthRpcClient *ethclient.Client
2.1.2. config.go の変更
config.go を開き、SetupEthClient() メソッドを追加します。コードは次のとおりです。
func SetupEthClient() {
var err error
EthRpcClient, err = config.NewEthRpcClient()
if err != nil {
log.Panic("config.NewEthRpcClient error : ", err)
}
}
2.2. 呼び出しメソッド
main.go の init() メソッドを変更し、最後に SetupEthClient() への呼び出しを追加します。
func init() {
config.SetupConfig()
config.SetupDBEngine()
err := config.MigrateDb()
if err != nil {
log.Panic("config.MigrateDb error : ", err)
}
config.SetupEthClient()
}
3. 構成を確認する
3.1. ブロックチェーンの最新の高さを取得するテスト
main.go ファイルを開き、main() メソッドに次のコードを追加します。
blockNumber, err := global.EthRpcClient.BlockNumber(context.Background())
if err != nil {
log.Panic("EthRpcClient.BlockNumber error : ", err)
}
log.Println("blockNumber is : ", blockNumber)
次に、main() メソッドを実行します。
上記のようなエラーが発生した場合は、ターミナルで次のコマンドを実行して、不足している依存関係をプロジェクトに追加する必要があります。
go mod tidy
次に、main() メソッドを再度実行してみましょう。ターミナル出力は次のようになります。
これは、ethclient が正しく構成されたことを意味します。
この記事の学習を通じて、ethclient の設定と初期化が完了し、ブロックチェーンのブロック高さ情報を取得することに成功しました。次の章では、実際にチェーン上のデータを取得する操作に正式に入ります。
公式アカウント: Web3_preacher (web3_preacher)に注意してください。完全なコードを受け取るには、「チェーン上のデータを取得しに行く」と返信してください。