NBitcoinのトランザクションパートでエラーが出る
問題
今回はこちらの勉強をしていたところ以下のようなエラーが発生。
file: 'file:///Program.cs'severity: 'エラー'message: 'The type or namespace name 'QBitNinjaClient' could not be found (are you missing a using directive or an assembly reference?) [/Users/kichino/Documents/nbtc/nbtc.csproj]'at: '48,13'source: ''
QBitNinjaClientが見つからないけどつまり参照がうまくできてないんじゃない?というご指摘を受けた。問題のコードは以下でした。
//QBitNinjaクライアントオブジェクトを作成
QBitNinjaClient client = new QBitNinjaClient(Network.Main);
対処法
以下のように適切なライブラリを使うことで解決する。
今回不足していたのは4つ目のQBitNinja.Clientだった。
using System;
using NBitcoin;
using QBitNinja.Client.Models;
using QBitNinja.Client;
結果
以下にコードとその実行結果を示す。
//QBitNinjaクライアントオブジェクトを作成
QBitNinjaClient client = new QBitNinjaClient(Network.Main);
//文字型のトランザクションIdをパースしてuint256型に変換。これで、クライアントオブジェクトに渡せる
var transactionId = uint256.Parse("f13dc48fb035bbf0a6e989a26b3ecb57b84f85e0836e777d6edf60d87a4a2d94");
//QBitNinjaサーバー側に問いかける
GetTransactionResponse transactionResponse = client.GetTransaction(transactionId).Result;
//transactionResponseからNBitcoin.Transaaction型のオブジェクトを取り出す
NBitcoin.Transaction transaction = transactionResponse.Transaction;
//上記2つの例からTransaction IDを取り出す
Console.WriteLine(transactionResponse.TransactionId);
Console.WriteLine(transaction.GetHash());
以上によりQBitNinjaのAPI経由で16進数表現のトランザクション情報からトランザクションIDを抽出することができたと同時にトランザクションのハッシュ値とトランザクションIDが等しいことも確認できた。

0 件のコメント:
コメントを投稿