2017年3月26日日曜日

"Programming The Blockchain in C# 日本語"のトランザクションパート、Exercise1:「使われた」BTC情報の取得

NBitcoinのトランザクションパート、Exercise1:「使われた」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 = (Moneycoin.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と区別されているため直感的にはわかりづらかった。

0 件のコメント:

コメントを投稿