Esempio n. 1
0
        protected static void AddCyptoToBalanceFromExternal(string walletAddress, string walletKey = null)
        {
            var api  = new BlockchainApi(BlockchainApi);
            var sign = new BlockchainSign(_currentSettings.Value.BlockchainSign);

            var transferSupported = api.Capabilities.GetCapabilities().GetResponseObject().IsTestingTransfersSupported;
            var recieveSupport    = api.Capabilities.GetCapabilities().GetResponseObject().IsReceiveTransactionRequired;

            if (transferSupported != null && transferSupported.Value)
            {
                api.Balances.PostBalances(walletAddress);
                TestingTransferRequest request = new TestingTransferRequest()
                {
                    amount = AMOUT_WITH_FEE, assetId = ASSET_ID, fromAddress = EXTERNAL_WALLET, fromPrivateKey = EXTERNAL_WALLET_KEY, toAddress = walletAddress
                };
                var response = api.Testing.PostTestingTransfer(request);
            }
            else if (BlockChainName == "RaiBlocks" || (recieveSupport != null && recieveSupport.Value))  //raiblocks - temp. will be removed after capablities enabled
            {
                AddCryptoToWalletWithRecieveTransaction(walletAddress, walletKey);
            }
            else
            {
                api.Balances.PostBalances(walletAddress);
                var model = new BuildSingleTransactionRequest()
                {
                    Amount             = AMOUT_WITH_FEE,
                    AssetId            = ASSET_ID,
                    FromAddress        = EXTERNAL_WALLET,
                    IncludeFee         = false,
                    OperationId        = Guid.NewGuid(),
                    ToAddress          = walletAddress,
                    FromAddressContext = EXTERNAL_WALLET_ADDRESS_CONTEXT
                };

                var    responseTransaction = api.Operations.PostTransactions(model).GetResponseObject();
                string operationId         = model.OperationId.ToString();

                var signResponse = sign.PostSign(new SignRequest()
                {
                    PrivateKeys = new List <string>()
                    {
                        EXTERNAL_WALLET_KEY
                    }, TransactionContext = responseTransaction.TransactionContext
                }).GetResponseObject();

                var response = api.Operations.PostTransactionsBroadcast(new BroadcastTransactionRequest()
                {
                    OperationId = model.OperationId, SignedTransaction = signResponse.SignedTransaction
                });

                var getResponse = api.Operations.GetOperationId(operationId);
                WaitForOperationGotCompleteStatus(operationId);
            }
            WaitForBalance(walletAddress);
        }
Esempio n. 2
0
 private void OpenView(TransactionModel tx)
 {
     this.ClearProps();
     LoadingData = true;
     _tiview     = new TxInfoView();
     _net        = Global.ActiveWallet.NetworkChoice;
     _blockapi   = new BlockchainApi(_net);
     _qbit       = new QBitNinjaClient(_net);
     _tx         = tx;
     ConfigureTxInfo();
     _tiview.ShowDialog();
 }
Esempio n. 3
0
        protected static void AddCyptoToBalanceFromExternal(string walletAddress)
        {
            var api  = new BlockchainApi(BlockchainApi);
            var sign = new BlockchainSign(_currentSettings.Value.BlockchainSign);

            bool transferSupported = api.Capabilities.GetCapabilities().GetResponseObject().IsTestingTransfersSupported;

            if (transferSupported)
            {
                api.Balances.PostBalances(EXTERNAL_WALLET);
                api.Balances.PostBalances(walletAddress);
                TestingTransferRequest request = new TestingTransferRequest()
                {
                    amount = "100001", assetId = ASSET_ID, fromAddress = EXTERNAL_WALLET, fromPrivateKey = EXTERNAL_WALLET_KEY, toAddress = walletAddress
                };
                var response = api.Testing.PostTestingTransfer(request);
            }
            else
            {
                api.Balances.PostBalances(walletAddress);
                var model = new BuildSingleTransactionRequest()
                {
                    Amount             = "100001",
                    AssetId            = ASSET_ID,
                    FromAddress        = EXTERNAL_WALLET,
                    IncludeFee         = false,
                    OperationId        = Guid.NewGuid(),
                    ToAddress          = walletAddress,
                    FromAddressContext = EXTERNAL_WALLET_ADDRESS_CONTEXT
                };

                var    responseTransaction = api.Operations.PostTransactions(model).GetResponseObject();
                string operationId         = model.OperationId.ToString("N");

                var signResponse = sign.PostSign(new SignRequest()
                {
                    PrivateKeys = new List <string>()
                    {
                        EXTERNAL_WALLET_KEY
                    }, TransactionContext = responseTransaction.TransactionContext
                }).GetResponseObject();

                var response = api.Operations.PostTransactionsBroadcast(new BroadcastTransactionRequest()
                {
                    OperationId = model.OperationId, SignedTransaction = signResponse.SignedTransaction
                });

                var getResponse = api.Operations.GetOperationId(operationId);
                // response.Validate.StatusCode(HttpStatusCode.OK, "Could not update Balance from external wallet");
                Assert.That(getResponse.GetResponseObject().OperationId, Is.EqualTo(model.OperationId));
            }
        }
Esempio n. 4
0
 private void ClearProps()
 {
     this.ActionAmount     = 0;
     this.ActionAmountCurr = 0;
     this.BlockHash        = string.Empty;
     this.BlockHeight      = string.Empty;
     this.IsBlockPresent   = false;
     this.Confirmations    = string.Empty;
     this.Date             = string.Empty;
     this.Fee      = Money.Zero;
     this.FeeCurr  = 0;
     this.TxHash   = string.Empty;
     this.TxStatus = string.Empty;
     _tx           = null;
     _blockapi     = null;
     _qbit         = null;
 }
Esempio n. 5
0
        public static void WaitForBalance(string wallet)
        {
            int i   = 0;
            var api = new BlockchainApi(BlockchainApi);

            while (i++ < 40)
            {
                if (!api.Balances.GetBalances("500", null).GetResponseObject().Items.Any(w => w.Address == wallet))
                {
                    System.Threading.Thread.Sleep(TimeSpan.FromSeconds(2));
                }
                else
                {
                    break;
                }
            }
        }
Esempio n. 6
0
            static void GetTransactionCompleteStatusTime(string operationId, out long time)
            {
                var sw      = new Stopwatch();
                var request = new BlockchainApi(BlockchainSpecificSettings().ApiUrl);

                time = 0;
                while (sw.Elapsed < TimeSpan.FromMinutes(10))
                {
                    var r = request.Operations.GetOperationId(operationId);
                    if (r.GetResponseObject().State != BroadcastedTransactionState.InProgress)
                    {
                        time = DateTime.Now.Ticks;
                        sw.Stop();
                        return;
                    }
                }
                sw.Stop();
            }
Esempio n. 7
0
            static void GetBalanceDissapearingTime(string startBalance, out long time)
            {
                var sw = new Stopwatch();

                time = 0;
                var request = new BlockchainApi(BlockchainSpecificSettings().ApiUrl);

                while (sw.Elapsed < TimeSpan.FromMinutes(10))
                {
                    if (int.Parse(request.Balances.GetBalances("500", null).GetResponseObject().Items.ToList().Find(a => a.Address == WALLET_SINGLE_USE).Balance) <
                        int.Parse(startBalance))
                    {
                        time = DateTime.Now.Ticks;
                        sw.Stop();
                        return;
                    }
                }
                sw.Stop();
            }
Esempio n. 8
0
        public static void WaitForOperationGotCompleteStatus(string operationId)
        {
            int i   = 0;
            var api = new BlockchainApi(BlockchainApi);

            while (i++ < 60)
            {
                var currentState = api.Operations.GetOperationId(operationId).GetResponseObject().State;
                if (currentState != BroadcastedTransactionState.Completed)
                {
                    if (currentState == BroadcastedTransactionState.Failed)
                    {
                        break;
                    }
                    System.Threading.Thread.Sleep(TimeSpan.FromSeconds(2));
                }
                else
                {
                    break;
                }
            }
        }
Esempio n. 9
0
            static void GetTransactionCompleteStatusTime(string operationId, out long time)
            {
                var sw      = new Stopwatch();
                var request = new BlockchainApi(BlockchainApi);

                time = 0;
                sw.Start();
                while (sw.Elapsed < TimeSpan.FromMinutes(10))
                {
                    var r = request.Operations.GetOperationId(operationId);
                    if (r.GetResponseObject().State != BroadcastedTransactionState.InProgress)
                    {
                        if (r.GetResponseObject().State == BroadcastedTransactionState.Failed)
                        {
                            Assert.Fail("Operation got 'Failed status'");
                        }

                        time = DateTime.Now.Ticks;
                        sw.Stop();
                        return;
                    }
                }
                sw.Stop();
            }
Esempio n. 10
0
        public GeneratedWallet GenerateWalletFile(string password)
        {
            GeneratedWallet wallet = new GeneratedWallet();

            BlockchainApi blockchainApi = new BlockchainApi();

            //Generate mnemonic
            string mnemonic = blockchainApi.GenerateMnemonic();

            //Create wallet
            string walletName = Guid.NewGuid().ToString().Substring(0, 8).ToUpper();

            blockchainApi.CreateWallet(mnemonic, password, password, walletName);

            //Read wallet address
            string walletAddress = ReadWalletAddressFromFile(walletName);

            //Prepare output
            wallet.WalletName    = walletName;
            wallet.WalletAddress = walletAddress;
            wallet.Mnemonic      = mnemonic;

            return(wallet);
        }
            static long?GetTransactionCompleteStatusTime(string operationId, string wallet)
            {
                var  sw      = new Stopwatch();
                var  request = new BlockchainApi(BlockchainApi);
                long?block   = -1;

                sw.Start();
                while (sw.Elapsed < TimeSpan.FromMinutes(BLOCKCHAIN_MINING_TIME))
                {
                    var r = request.Operations.GetOperationId(operationId);
                    if (r.GetResponseObject().State != BroadcastedTransactionState.InProgress)
                    {
                        if (r.GetResponseObject().State == BroadcastedTransactionState.Failed)
                        {
                            Assert.Fail("Operation got 'Failed status'");
                        }
                        block = request.Balances.GetBalances("500", null).GetResponseObject().Items.ToList().FirstOrDefault(a => a.Address == wallet)?.Block;
                        break;
                    }
                    System.Threading.Thread.Sleep(TimeSpan.FromSeconds(2));
                }
                sw.Stop();
                return(block);
            }
Esempio n. 12
0
 public void Init()
 {
     instance = new BlockchainApi();
 }
Esempio n. 13
0
        protected static void AddCryptoToWalletWithRecieveTransaction(string walletAddress, string walletKey)
        {
            var api  = new BlockchainApi(BlockchainApi);
            var sign = new BlockchainSign(_currentSettings.Value.BlockchainSign);

            //build send transaction
            api.Balances.PostBalances(walletAddress);
            var model = new BuildSingleTransactionRequest()
            {
                Amount             = AMOUT_WITH_FEE,
                AssetId            = ASSET_ID,
                FromAddress        = EXTERNAL_WALLET,
                IncludeFee         = false,
                OperationId        = Guid.NewGuid(),
                ToAddress          = walletAddress,
                FromAddressContext = EXTERNAL_WALLET_ADDRESS_CONTEXT
            };

            var    responseTransaction = api.Operations.PostTransactions(model).GetResponseObject();
            string operationId         = model.OperationId.ToString();

            var signResponse = sign.PostSign(new SignRequest()
            {
                PrivateKeys = new List <string>()
                {
                    EXTERNAL_WALLET_KEY
                }, TransactionContext = responseTransaction.TransactionContext
            }).GetResponseObject();

            var response = api.Operations.PostTransactionsBroadcast(new BroadcastTransactionRequest()
            {
                OperationId = model.OperationId, SignedTransaction = signResponse.SignedTransaction
            });

            // wait for wallet present in history

            var history = api.Operations.GetTransactionHistorToAddress(walletAddress, "500").GetResponseObject();

            int i = 0;

            while (i++ < 150 && api.Operations.GetTransactionHistorToAddress(walletAddress, "500").GetResponseObject().Length == 0)
            {
                System.Threading.Thread.Sleep(TimeSpan.FromSeconds(2));
            }

            history = api.Operations.GetTransactionHistorToAddress(walletAddress, "500").GetResponseObject();
            //BuildSingleReceiveTransactionRequest recieve transaction

            var reciveModel = new BuildSingleReceiveTransactionRequest()
            {
                operationId = Guid.NewGuid(), sendTransactionHash = history.ToList().First().hash
            };
            var recieve            = api.Operations.PostTranstactionSingleRecieve(reciveModel).GetResponseObject();
            var signReciveResponse = sign.PostSign(new SignRequest()
            {
                PrivateKeys = new List <string>()
                {
                    walletKey
                }, TransactionContext = recieve.transactionContext
            }).GetResponseObject();

            var responseRecieve = api.Operations.PostTransactionsBroadcast(new BroadcastTransactionRequest()
            {
                OperationId = reciveModel.operationId, SignedTransaction = signReciveResponse.SignedTransaction
            });

            WaitForBalance(walletAddress);
        }
Esempio n. 14
0
 public void Init()
 {
     _net      = Network.Main;
     _blockapi = new BlockchainApi(_net);
 }