Esempio n. 1
0
        /// <summary>
        /// ATM calls this service to send BTC
        /// </summary>
        /// <param name="address"></param>
        /// <param name="btcAmount"></param>
        /// <returns></returns>
        public DC.Common.Models.Order CreateOrder(String address, Decimal btcAmount)
        {
            if (btcAmount > 0 && BitcoinHelper.IsValidAddress(address))
            {
                //Providers.IWallet wallet = Helpers.Factory.GetWallet();
                Providers.IWallet wallet = new Providers.BlockChainInfo()
                {
                    MerchantId = "4ea10592-e7cb-4170-9b5b-6e94e3236bb1", Password = "******"
                };                                                                                                                                         //ADD YOUR BLOCK CHAIN INFO CREDS HERE!

                //Move to a factory to spit out order model.
                DC.Common.Models.Order order = new DC.Common.Models.Order()
                {
                    Address = address,
                    BTC     = btcAmount
                };

                order.Txn = wallet.Send(address, btcAmount);
                return(order);
            }
            else
            {
                throw new ArgumentOutOfRangeException("Check the bitcoin address is valid and amount is greater than zero.");
            }
        }
Esempio n. 2
0
 public void DecodeWifTest()
 {
     //https://en.bitcoin.it/wiki/Wallet_import_format
     Org.BouncyCastle.Math.BigInteger actual = BitcoinHelper.DecodeWif("5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ");
     //Assert.IsTrue(actual.ToString() == "0C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D");
     Assert.IsTrue(actual.ToString() == "5500171714335001507730457227127633683517613019341760098818554179534751705629");
 }
Esempio n. 3
0
        public Header(string command)
        {
            var payload = new byte[] { };

            Magic         = 0xD9B4BEF9;
            Command       = command.PadRight(12, '\0');
            PayloadLength = 0;
            Checksum      = BitcoinHelper.CalculateChecksum(payload);
        }
Esempio n. 4
0
        public void Sign(byte[] privateKey)
        {
            var publicKey = BitcoinHelper.CreatePublicKeyFromPrivate(privateKey);

            var transactionHash = ComputeHashBeforeSigning();

            var signature = BitcoinHelper.Sign(transactionHash, privateKey);

            TxIns.First().CreateSignatureScript(signature, publicKey);
        }
Esempio n. 5
0
        public byte[] ComputeHashBeforeSigning()
        {
            var SIGHASH_ALL = new byte[] { 0x01, 0x00, 0x00, 0x00 };

            var payload         = GetPayload();
            var extendedPayload = payload.Concat(SIGHASH_ALL).ToArray();

            var hash = BitcoinHelper.CalculateHash(extendedPayload);

            return(hash);
        }
Esempio n. 6
0
        public async Task <IActionResult> Wallet(string txid)
        {
            _logger.LogInformation("New Transaction");
            if (BitcoinHelper.ChechTxid(txid) &&
                await _transactionService.IsNewSendReceiveTransactionAsync(txid))
            {
                var updateTransactionsHostedService = _hostedServices.FirstOrDefault(x => x is UpdateTransactionsHostedService) as UpdateTransactionsHostedService;
                updateTransactionsHostedService?.ContinueLoop();
            }

            return(StatusCode(200));
        }
Esempio n. 7
0
        public async Task <IActionResult> SendBtc([FromQuery] string address, [FromQuery] decimal amount, [FromQuery] string fromWallet = null)
        {
            if (!BitcoinHelper.CheckAddress(address) &&
                !(await _bitcoindClient.ValidateAddressAsync(address)).Isvalid)
            {
                return(StatusCode(400, $"invalid address ({address})"));
            }

            if (amount <= 0)
            {
                return(StatusCode(400, $"invalid amount ({amount})"));
            }

            await _bitcoindClient.SendToAddressAsync(address, amount, fromWallet);

            return(StatusCode(200));
        }
Esempio n. 8
0
        public VersionMessage(ShortNetworkAddress recipientAddress,
                              ShortNetworkAddress senderAddress)
        {
            Header           = new Header("version");
            ProtocolVersion  = 70002;
            Services         = 1;
            Timestamp        = BitcoinHelper.GetCurrentTimeStamp();
            RecipientAddress = recipientAddress;
            SenderAddress    = senderAddress;
            Nonce            = 0;
            UserAgent        = "/MikoleuszBlogBitcoinTinyClient:1.0/";
            UserAgentLength  = new VarInt(Convert.ToUInt64(UserAgent.Length));
            StartHeight      = 460650;
            Relay            = true;

            ComputeHeader();
        }
Esempio n. 9
0
        public static TxMessage Create(
            string previousTransactionIdHex,
            string senderBitcoinAddress,
            string senderPrivateKeyHex,
            string recipientBitcoinAddress,
            double transactionAmountInBtc)
        {
            var txMessage = new TxMessage();

            var senderPrivateKey = StringHelper.HexStringToByteArray(senderPrivateKeyHex);

            var scriptPubKeyPreviousTransaction = new ScriptPubKey(
                BitcoinHelper.Create160BitPublicKeyFromBitcoinAddress(senderBitcoinAddress)
                );

            var scriptPubKeyCurrentTransaction = new ScriptPubKey(
                BitcoinHelper.Create160BitPublicKeyFromBitcoinAddress(recipientBitcoinAddress)
                );

            var txInOutPoint = new OutPoint(
                StringHelper.HexStringToByteArray(previousTransactionIdHex), 0
                );

            txMessage.TxInsCount = new VarInt(1);
            txMessage.TxIns      = new List <TxIn>
            {
                new TxIn(txInOutPoint, scriptPubKeyPreviousTransaction.ToBytes())
            };

            txMessage.TxOutsCount = new VarInt(1);
            txMessage.TxOuts      = new List <TxOut>
            {
                new TxOut(
                    Convert.ToUInt64(transactionAmountInBtc * 100000000),
                    scriptPubKeyCurrentTransaction
                    )
            };

            txMessage.Sign(senderPrivateKey);

            return(txMessage);
        }
Esempio n. 10
0
        /// <summary>
        /// ATM calls this service to send BTC
        /// </summary>
        /// <param name="address"></param>
        /// <param name="btcAmount"></param>
        /// <returns></returns>
        public DC.Common.Models.Order CreateOrder(String address, Decimal btcAmount)
        {
            if (btcAmount > 0 && BitcoinHelper.IsValidAddress(address))
            {
                // Buy  Bitcoin- https://blockchain.info/address/1QJQMFhgyoiLLUZXpr913T2TaEaX7pNFaF
                DigitalBTC digitalbtc = new DigitalBTC();
                PriceData  pricedata  = digitalbtc.GetSpotPrice2(btcAmount, "USD");
                if (pricedata.Price > 0)
                {
                    pricedata.Price += 1M;


                    float     price          = (float)pricedata.Price;
                    float     btcorderamount = (float)btcAmount;
                    OrderData orderdata      = digitalbtc.Order(price, btcorderamount);
                }

                // Sell Bitcoin
                //Providers.IWallet wallet = Helpers.Factory.GetWallet();
                Providers.IWallet wallet = new Providers.BlockChainInfo()
                {
                    MerchantId = "4ea10592-e7cb-4170-9b5b-6e94e3236bb1", Password = "******"
                };                                                                                                                                          //ADD YOUR BLOCK CHAIN INFO CREDS HERE!

                //Move to a factory to spit out order model.
                DC.Common.Models.Order order = new DC.Common.Models.Order()
                {
                    Address = address,
                    BTC     = btcAmount
                };

                order.Txn = wallet.Send(address, btcAmount);



                return(order);
            }
            else
            {
                throw new ArgumentOutOfRangeException("Check the bitcoin address is valid and amount is greater than zero.");
            }
        }
Esempio n. 11
0
 public void CalculateChecksum(byte[] payload)
 {
     PayloadLength = Convert.ToUInt32(payload.Length);
     Checksum      = BitcoinHelper.CalculateChecksum(payload);
 }