NBitcoinのトランザクションパート、Exercise1:「使われた」BTC情報の取得
前回の投稿に引き続き、こちらについてで、途中にある一つ目のエクササイズに関して。特に迷うことはなかったが、これからトライする人の参考のために。
問題
Exercise : QBitNinjaのGetTransactionResponseクラスを使って、「使われた」BTCの情報を表示してみよう!
さて今度は、NBitcoinのTransactionクラスを使って、QBitNinjaで表示した「受け取った」BTCの情報と同じものを、どのように表示するか見てみよう。
回答
Exercise : QBitNinjaのGetTransactionResponseクラスを使って、「使われた」BTCの情報を表示してみよう!
さて今度は、NBitcoinのTransactionクラスを使って、QBitNinjaで表示した「受け取った」BTCの情報と同じものを、どのように表示するか見てみよう。
「受け取った」BTCの情報を得るために書いたコードを少しだけ変更した。
1行目:transactionResponse.ReceivedCoins→transactionResponse.SpentCoins
2行目:foreach(var coin in receivedCoins) → foreach(var coin spentCoins)
List<ICoin> spentCoins = transactionResponse.SpentCoins;//「使われた」BTCの情報を取得する
foreach (var coin in spentCoins)
{
Money amount = (Money) coin.Amount;
Console.WriteLine(amount.ToDecimal(MoneyUnit.BTC));
var paymentScript2 = coin.TxOut.ScriptPubKey;
Console.WriteLine(paymentScript2); //これはScriptPubKey
var address = paymentScript2.GetDestinationAddress(Network.Main);
Console.WriteLine(address);
Console.WriteLine();
}
List<ICoin> spentCoins = transactionResponse.SpentCoins;//「使われた」BTCの情報を取得する
foreach (var coin in spentCoins)
{
Money amount = (Money) coin.Amount;
Console.WriteLine(amount.ToDecimal(MoneyUnit.BTC));
var paymentScript2 = coin.TxOut.ScriptPubKey;
Console.WriteLine(paymentScript2); //これはScriptPubKey
var address = paymentScript2.GetDestinationAddress(Network.Main);
Console.WriteLine(address);
Console.WriteLine();
}
結果
結果
結果の正誤確認方法
トランザクションのインプットは大体複数のインプットから成り立っているため合ってそうな気がするが念のためこちらで確認する。
正しいことが確認できた。
まとめ
このExerciseでは「使われた」BTCの情報をトランザクションIDを頼りに取得する方法を学ぶことができた。少し違和感を感じたのは一般的にTX_IN、TX_OUTというようにインプット、アウトプットでトランザクションを区別していたがこのライブラリではSpentCoins、ReceivedCoinsと区別されているため直感的にはわかりづらかった。

