Address-Generation
生成 bech32 地址需要什麼?
所以我用 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);
現在菌絲體的輸出地址和我的程序匹配。