Address-Generation

生成 bech32 地址需要什麼?

  • November 2, 2020

所以我用 C# 用 NBitcoin 庫寫了一個虛榮地址生成器。當我使用用於生成地址的私鑰並將其輸入 Mycelium 時,它會輸出一個不同的地址。使用舊地址時不會發生這種情況,所以我猜我需要的不僅僅是私鑰來生成隔離見證地址。是贖回腳本還是什麼?當我輸入私鑰時,如何確保我在錢包中獲得相同的地址?

           var bitcoinPrivateKey = new BitcoinSecret("cPof7e5g6xfgB6AZrc6XVTVwA4efLJurh9kVxa6FRChbr8Jyqaon", Network.TestNet);

           var legacy_address = bitcoinPrivateKey.GetAddress(ScriptPubKeyType.Legacy);
           var segwitp2sh_address = bitcoinPrivateKey.GetAddress(ScriptPubKeyType.SegwitP2SH);
           var nativesegwit_address = bitcoinPrivateKey.GetAddress(ScriptPubKeyType.Segwit);

           Console.WriteLine("Private Key :" + bitcoinPrivateKey);
           Console.WriteLine("Legacy Address :" + legacy_address);
           Console.WriteLine("Segwit-P2SH Address :" + segwitp2sh_address);
           Console.WriteLine("Bech32 Address :" + nativesegwit_address);

輸出

菌絲體測試網比特幣錢包:

菌絲體

謝謝大家的解釋。所以是的,只有一個私鑰就足以生成一個 bech32 地址。我的問題似乎是我正在使用

var addr = key1.ScriptPubKey.GetWitScriptAddress(net);

代替

Key key1 = new Key();

var secret = new BitcoinSecret(key1, net);

var addr = secret.GetAddress(ScriptPubKeyType.Segwit);

現在菌絲體的輸出地址和我的程序匹配。

引用自:https://bitcoin.stackexchange.com/questions/99793