-2

I am trying to figure this out for like three days now. I think my problem is not in transaction builder but in .AddCoins part.

TransactionBuilder builder = Network.TestNet.CreateTransactionBuilder();

var transaction = builder
                .AddCoins(coins)
                .AddKeys(myPrivateKey)
                .Send(addressThatIamSendingTo, Money.Coins(amountToSend))
                .SetChange(addressThatIamSendingFrom);
            
var fee = transaction.EstimateFees(new FeeRate(1m));
                
var finalTransaction = transaction.SendFees(fee).BuildTransaction(true);

My coins in .AddCoins are from here:

var balance = client.GetBalance(myBtcAddress); // client is from QBitNinjaClient client = new QBitNinjaClient(Network.TestNet);

var sum = 0m;
            
            
foreach (var operation in balance.Result.Operations)
{
    sum += operation.Amount.ToDecimal(MoneyUnit.BTC);
                
}
            
Console.WriteLine("Sum {0} is ", sum);
            
var amountToSend = 0.0002m;
var transaction = Network.TestNet.CreateTransaction();
transaction.Outputs.Add(new TxOut(Money.Coins(sum), myScriptPubKey));
            
Coin[] coins = transaction.Outputs.AsCoins().ToArray();

Thing is that builder.Verify(finalTransaction) says True but after broadcast with QBitNinja or Local Node that is configured to hit TestNet even, I got transaction id, i can not see it anywhere and BTC is not transferred.

pregmatch
  • 2,629
  • 6
  • 31
  • 68
  • var coins = client.GetBalance(myAddress, true).Result.Operations.SelectMany(op => op.ReceivedCoins).ToArray(); – pregmatch Feb 14 '22 at 21:18

1 Answers1

0

So it turns out i was calling this freaking balance in wrong way.

client.GetBalance(myAddress, true)// where true is un spent coins ....

and then transaction coins are .AddCoins(client.GetBalance(myAddress, true).Result.Operations.SelectMany(op => op.ReceivedCoins).ToArray())

pregmatch
  • 2,629
  • 6
  • 31
  • 68