Making an attempt to provide a multi-sig transaction. I’ve this to date.
Despatched funds to : 2NDYqQujvtycWCvs7kjtHE9U3xWPsuaiXrG
https://mempool.area/testnet4/handle/2NDYqQujvtycWCvs7kjtHE9U3xWPsuaiXrG
I suppose firstly was that the flawed handle to ship to?
Right here is my tx hash:
010000000114bc1ab21ce478083eaacf55ce9442bc1b130bff443410f590b399d18d701ecc01000000fc00473044022013a2bc5d4d3f88bbbfb94fe29b43a69987b00a94093b8ddbf41c1a2e9b26f75a02206fbf1e3607f9287f4879a1f5822ae52338f610b5ee022ff53e083e0bf0dab0220147304402204ce389e1def4ea314c09bbd29c6f294bf7f401cc70c25c3e8debe291a9d232ef022073bab094326dcbed6cb10435768e53144927a4cf84ea0c7bf76b341e0d55fef9014c6952210319dcb49b83195a399a0530d2d40f86861a2e64dbf2f71ad63cd5caf1d1901ff82103a30e878456b11b5c30faa8aa90a7243d7bec78b5b8e181194c2d942cd943eadd210397e9ffb403fbd47bbfd04c8773388e8df4040621ad57bc8112dfe5f294f166a753aefdffffff022602000000000000160014945a3408d2f7cd07b7d1defbda62992481601d8e389d07000000000017a914deb72871a21fe9d480912890734e014c0b4273338700000000
I wrote this code to provide all this:
void Most important()
{
Community community = Community.TestNet4;
byte[] key1Bytes = ("Eliminated").HexToByteArray();
byte[] key2Bytes = ("Eliminated").HexToByteArray();
byte[] key3Bytes = ("Eliminated").HexToByteArray();
Key key1 = new Key(key1Bytes);
Key key2 = new Key(key2Bytes);
Key key3 = new Key(key3Bytes);
// Create a 2-of-3 multi-sig script
Script scriptPubKey = PayToMultiSigTemplate.Occasion.GenerateScriptPubKey(2, new[] { key1.PubKey, key2.PubKey, key3.PubKey });
Script redeemScript = scriptPubKey.PaymentScript;
//Get deposit handle '2NDYqQujvtycWCvs7kjtHE9U3xWPsuaiXrG'
BitcoinAddress multiSigAddress = redeemScript.Hash.GetAddress(community);
var sender = multiSigAddress.ToString();
Console.WriteLine("Multi-Sig Handle: " + multiSigAddress);
//cc1e708dd199b390f5103444ff0b131bbc4294ce55cfaa3e0878e41cb21abc14
//cc0bdc3c691c263407b1060169d44fc2c59b004cd182e6aa72873f0cc389dd96
//vout 1
OutPoint outPoint = new OutPoint(uint256.Parse("cc1e708dd199b390f5103444ff0b131bbc4294ce55cfaa3e0878e41cb21abc14"), 1);
Coin coin = new Coin(outPoint, new TxOut(Cash.Satoshis(500_000m), redeemScript));
ScriptCoin coinToSpend = new ScriptCoin(coin, scriptPubKey);
var txInAmount = coinToSpend.Quantity;
var minerFee = new Cash(450, MoneyUnit.Satoshi);
var sendAmount = new Cash(0.00001M, MoneyUnit.BTC);
var totalSpend = sendAmount - minerFee;
// Vacation spot handle
BitcoinAddress recipientAddress = BitcoinAddress.Create("tb1qj3drgzxj7lxs0d73mmaa5c5eyjqkq8vwjx7xak", community);
// Create the transaction
TransactionBuilder builder = community.CreateTransactionBuilder();
TransactionBuilder builderForKey1 = community.CreateTransactionBuilder();
TransactionBuilder builderForKey2 = community.CreateTransactionBuilder();
NBitcoin.Transaction unsigned = builder
.AddCoins(coinToSpend)
.Ship(recipientAddress, totalSpend)
.SendFees(minerFee)
.SetChange(multiSigAddress)
.SetOptInRBF(true)
.BuildTransaction(false);
NBitcoin.Transaction key1Signed =
builderForKey1
.AddCoins(coinToSpend)
.AddKeys(key1)
.SignTransaction(unsigned);
NBitcoin.Transaction key2Signed =
builderForKey2
.AddCoins(coinToSpend)
.AddKeys(key2)
.SignTransaction(key1Signed);
NBitcoin.Transaction fullySigned =
builder
.AddCoins(coinToSpend)
.CombineSignatures(key1Signed, key2Signed);
var txVerified = builder.Confirm(fullySigned);
var outcome = fullySigned.Verify();
txVerified.Dump();
outcome.Dump();
var hexTx = fullySigned.ToHex();
var hashTX = fullySigned.GetHash();
hexTx.Dump();
//Console.WriteLine(fullySigned);
// var hexTx = fullySigned.ToHex();
// var hashTX = fullySigned.GetHash();
//
// hexTx.Dump();
//BroadcastTransaction(fullySigned);
}
public static decimal BTCMultiplier = 100_000_000M;
void BroadcastTransaction(NBitcoin.Transaction transaction)
{
utilizing (var node = Node.Join(Community.TestNet4, "Eliminated"))
{
node.VersionHandshake();
node.SendMessage(new InvPayload(InventoryType.MSG_TX, transaction.GetHash()));
node.SendMessage(new TxPayload(transaction));
Thread.Sleep(500); // Wait a bit to make sure the transaction is shipped
}
}
public static class MyExtensions
{
public static byte[] HexToByteArray(this string hex)
{
var bytes = Enumerable.Vary(0, hex.Size / 2)
.Choose(x => Convert.ToByte(hex.Substring(x * 2, 2), 16))
.ToArray();
return bytes;
}
}
I’m form of at a loss and the transaction passes each the confirm and the examine, however once I go to broadcast in CLI I get Script evaluated with out error however completed with a false/empty prime stack factor)
Any assistance is appreciated.