首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用NBitcoin从ExtPrivKey获取比特币私钥

如何使用NBitcoin从ExtPrivKey获取比特币私钥
EN

Stack Overflow用户
提问于 2018-05-04 20:27:34
回答 1查看 572关注 0票数 1

所以,我试着用NBitcoin汇一些钱,有一个步骤我失败了,那就是创建de比特币秘密来签署交易,我有地址和ExtPrivKey,但我没有幸运地签署它,任何建议,这是我下面的代码。

代码语言:javascript
复制
 var priv = mbwallet.SelectedWallet.PrivateKeys[0].ToWif();
        //var ool = new BitcoinSecret(base58, App.Network);
        var privkey = mbwallet.SelectedWallet.PrivateKeys[0].PrivateKey.GetBitcoinSecret(App.Network).ToWif();
        var key = Key.Parse(privkey, App.Network);
        var keysT = key.GetWif(App.Network);
        //var myaddress = mbwallet.SelectedWallet.PrivateKeys[0].PrivateKey.PubKey.GetAddress(App.Network);
        var myaddress = mbwallet.SelectedWallet.CurrentAddress;


        string address = Address.Text;
        var destination = BitcoinAddress.Create(address, App.Network);
        decimal value = Convert.ToDecimal(Value.Text);

        var coins2 = GetCoins(value);


        TransactionBuilder txBuilder = new TransactionBuilder();
        var tx = txBuilder.AddCoins(coins2)
            .AddKeys(keysT)
            .SetChange(myaddress)
            .Send(destination, new Money(value, MoneyUnit.BTC))
            .SendFees("0.0002");
        //.BuildTransaction(true);
        var tx2 = txBuilder.BuildTransaction(true);
        //Console.WriteLine(txBuilder.Verify(tx));

        var hello = tx2.ToHex();
        var txRepo = new NoSqlTransactionRepository();
        //txRepo.Put(tx.GetHash(), tx);
        //Assert(txBuilder.Verify(tx)); //check fully signed


        List<ICoin> GetCoins(decimal sendAmount)
        {
            //var mbwallet = (root.DataContext as MainWindowViewModel);
            var amountMoney = new Money(sendAmount, MoneyUnit.BTC);
            var client = new QBitNinjaClient(App.Network);
            var txInAmount = Money.Zero;
            var coins1 = new List<ICoin>();
            foreach (var balance in client.GetBalance(mbwallet.SelectedWallet.CurrentAddress,//MBWallet.Wallet.Address,
        true).Result.Operations)
            {
                var transactionId = balance.TransactionId;
                var transactionResponse =
        client.GetTransaction(transactionId).Result;
                var receivedCoins = transactionResponse.ReceivedCoins;
                foreach (Coin coin in receivedCoins)
                {
                    if (coin.TxOut.ScriptPubKey ==
                        mbwallet.SelectedWallet.CurrentAddress.ScriptPubKey)//MBWallet.Wallet.BitcoinPrivateKey.ScriptPubKey) // this may not be necessary
                    {
                        coins1.Add(coin);
                        txInAmount += (coin.Amount as Money);
                    }
                }
            }
            return coins1;
        }
EN

回答 1

Stack Overflow用户

发布于 2019-01-18 02:38:43

根据我在代码中看到的,您已经将私钥添加到构建器中,所以基本上您只需要签名,如下所示

Transaction signed = txBuilder.SignTransaction(tx2);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50174961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档