C#でBitcoin (1) アドレスの生成
NBitcoinは.NET用のBitcoinライブラリです。まずはBitcoinのアドレスを作ってみます。
NBitcoin関連リンク
日本語の情報は少なくて、上の解説サイトが参考になります。
プロジェクトの準備
- VS2019 でプロジェクト新規作成 > Console(C#) & .NET5.0 を選択
- NuGet で NBitcoin をインストール
Bitcoinアドレスの生成
// using NBitcoin; を追加しておく var privateKey = new Key(); // 秘密鍵を作成 var wif = privateKey.GetWif(Network.Main); // WIFを作成 var publicKey = privateKey.PubKey; // 公開鍵を作成 var address1 = publicKey.GetAddress(ScriptPubKeyType.Legacy, Network.Main); // Legacyアドレスを作成 var address2 = publicKey.GetAddress(ScriptPubKeyType.SegwitP2SH, Network.Main); // Segwitアドレスを作成 var address3 = publicKey.GetAddress(ScriptPubKeyType.Segwit, Network.Main); // NativeSegwitアドレスを作成 Console.WriteLine(wif); Console.WriteLine(publicKey); Console.WriteLine(address1); Console.WriteLine(address2); Console.WriteLine(address3); /* 出力例 KwuNkaii2w5hXU2wB1BkXWib7tzHxeSb3LBQ456hVh5gH1MoucgT 03f57135bd647501ada06047f95ac0860a21de902b348c9355851d023a4c66cc2e 1BM8PcC7hTWWVanVEAD3UF8GGJZW9sRxkW 36Lm2LeyCmMA949Z6ZFkSo6qd6gWvpNBhV bc1qw9lma6gcykc20uhusp5xv99f26ufjh5neprlks */
秘密鍵とWIF
秘密鍵は単なる256bitの値です。 そのままでは使いにくいので、privateKey.GetWif(...)メソッドで、WIF (Wallet Import Format)形式に変換して扱います。 名前のとおりウォレットに秘密鍵をインポートするときなどに使います。
秘密鍵の生の値を見たいなら privateKey.ToHex()で確認できます。
公開鍵
秘密鍵から公開鍵を作ります。本来は複雑な計算が必要ですが、NBitcoinなら privateKey.PubKey で取得できます。なんて簡単。
アドレス
publicKeyのGetAddress(...)メソッドで公開鍵からアドレスを取得します。 最初の引数のScriptPubKeyTypeは、アドレスのタイプです。
名前 | ScriptPubKeyType | 説明 |
---|---|---|
Legacy | Legacy | 1からはじまるアドレス |
Segwit | SegwitP2SH | 3からはじまるアドレス |
NativeSegwit | Segwit | bc1から始まるアドレス |
2つ目の引数は、MainNet用かTestNet用かを指定します。