Exemple #1
0
        public void create(TransactionTemporaryViewModel transactionVM)
        {
            var secret = new ExtKey().GetWif(_network);
            var source = BitcoinAddress.Create(transactionVM.SourceAddress);
            var client = new QBitNinjaClient(_network);

            Transaction tx    = new Transaction();
            var         input = new TxIn();

            var transactionId = uint256.Parse(transactionVM.PrevTransactionId);

            input.PrevOut   = new OutPoint(new uint256(transactionVM.Hex), 1); //Transaction ID
            input.ScriptSig = source.ScriptPubKey;
            tx.AddInput(input);

            TxOut output       = new TxOut();
            var   desctination = BitcoinAddress.Create(transactionVM.DestinationAddress);
            Money fee          = Money.Satoshis(40000);

            output.Value        = Money.Coins(0.1m) - fee;
            output.ScriptPubKey = desctination.ScriptPubKey;
            tx.AddOutput(output);

            tx.Sign(secret, false);

            BroadcastResponse broadcastResponse = client.Broadcast(tx).Result;
        }
        public IActionResult Contact(TransactionTemporaryViewModel transactionVM)
        {
            ViewData["Message"] = "Your contact page.";

            var network = Network.TestNet;

            // generate private key

            var privateKey        = new Key();
            var bitcoinPrivateKey = privateKey.GetWif(network);
            var address           = bitcoinPrivateKey.GetAddress();

            // get transaction info

            var client              = new QBitNinjaClient(network);
            var transactionId       = uint256.Parse(transactionVM.Hex);
            var transactionResponse = client.GetTransaction(transactionId).Result;

            // from where

            var      receivedCoins   = transactionResponse.ReceivedCoins;
            OutPoint outPointToSpend = null;

            foreach (var coin in receivedCoins)
            {
                if (coin.TxOut.ScriptPubKey == bitcoinPrivateKey.ScriptPubKey)
                {
                    outPointToSpend = coin.Outpoint;
                }
            }

            // create transaction

            var transaction = new Transaction();

            transaction.Inputs.Add(new TxIn()
            {
                PrevOut = outPointToSpend
            });

            // to where

            var destinationAddress = BitcoinAddress.Create("mzp4No5cmCXjZUpf112B1XWsvWBfws5bbB");

            // how match

            TxOut spentTxOut = new TxOut()
            {
                Value        = new Money((decimal)transactionVM.Quantity, MoneyUnit.BTC),
                ScriptPubKey = destinationAddress.ScriptPubKey
            };

            TxOut changeBackTxOut = new TxOut()
            {
                Value        = new Money((decimal)(transactionVM.Balance - transactionVM.Quantity - transactionVM.Fee), MoneyUnit.BTC),
                ScriptPubKey = bitcoinPrivateKey.ScriptPubKey
            };

            transaction.Outputs.Add(spentTxOut);
            transaction.Outputs.Add(changeBackTxOut);

            // sign transaction

            transaction.Sign(bitcoinPrivateKey, false);

            BroadcastResponse broadcastResponse = client.Broadcast(transaction).Result;

            return(View());
        }