【goを使ったブロックチェーン開発】チェーン上のデータを取得する(03)

前回の記事ではデータベースへの接続を完了しましたが、この章では 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)に注意してください。完全なコードを受け取るには、「チェーン上のデータを取得しに行く」と返信してください。

おすすめ

転載: blog.csdn.net/rao356/article/details/132227958