/// <summary> /// 取的該錢包有多少餘額 /// </summary> /// <param name="ssAddress">錢包地址</param> /// <param name="confirmBalance">已確認的</param> /// <param name="unConfirmBalance">未確認的</param> public static void GetWalletBalance(string ssAddress, out decimal confirmBalance, out decimal unConfirmBalance) { //幾個確認判斷為已經確認完成 //預設你可以設定為 5 //但是因為測試所以>0 , 我就判斷已經當作確認過了 var confirmThres = 4; QBitNinja.Client.QBitNinjaClient client = new QBitNinja.Client.QBitNinjaClient(NBitcoin.Network.TestNet); var balance = client.GetBalance(new NBitcoin.BitcoinPubKeyAddress(ssAddress), false).Result; confirmBalance = 0; unConfirmBalance = 0; if (balance.Operations.Count > 0) { var unspentCoins = new System.Collections.Generic.List <NBitcoin.Coin>(); var unspentCoinsConfirmed = new System.Collections.Generic.List <NBitcoin.Coin>(); foreach (var operation in balance.Operations) { unspentCoins.AddRange(operation.ReceivedCoins.Select(coin => coin as NBitcoin.Coin)); if (operation.Confirmations > confirmThres) { unspentCoinsConfirmed.AddRange(operation.ReceivedCoins.Select(coin => coin as NBitcoin.Coin)); } unConfirmBalance = unspentCoins.Sum(x => x.Amount.ToDecimal(NBitcoin.MoneyUnit.BTC)); confirmBalance = unspentCoinsConfirmed.Sum(x => x.Amount.ToDecimal(NBitcoin.MoneyUnit.BTC)); } } }
private static async Task GetUnspentOnce(Settings settings, int count) { QBitNinja.Client.QBitNinjaClient client = new QBitNinja.Client.QBitNinjaClient (settings.BaseUrl, settings.Network); var balanceOutput = await client.GetBalance(settings.Address, true); var serializableBalanceOutput = balanceOutput.GetSerializable(); var serializedBalance = JsonConvert.SerializeObject(serializableBalanceOutput); var filename = String.Format("{0}\\log{1}.txt", settings.OutputDir, count); SaveStringToFile(serializedBalance, filename); }
private static void SendRecords(string walletAddress) { QBitNinja.Client.QBitNinjaClient client = new QBitNinja.Client.QBitNinjaClient(NBitcoin.Network.TestNet); var balance = client.GetBalance(new NBitcoin.BitcoinPubKeyAddress(walletAddress), false).Result; foreach (var operation in balance.Operations) { var transSum = operation.SpentCoins.Select(coin => coin as NBitcoin.Coin).Sum(x => x.Amount.ToDecimal(NBitcoin.MoneyUnit.BTC)); if (transSum > 0) { Console.WriteLine(operation.TransactionId + ":" + transSum); } } }
public static async Task <IList <SerializableCoin> > GetSpentCoins(Settings settings) { ConcurrentBag <SerializableCoin> coinCollection = new ConcurrentBag <SerializableCoin>(); QBitNinja.Client.QBitNinjaClient client = new QBitNinja.Client.QBitNinjaClient (settings.BaseUrl, settings.Network); var balanceOutput = await client.GetBalance(settings.Address, false); var serializableBalanceOutput = balanceOutput.GetSerializable(); serializableBalanceOutput.Operations .Where(o => o.Confirmations >= settings.RequiredConfirmations) .Select(o => o.SpentCoins).ToList().ForEach(u => u.ForEach(uItem => coinCollection.Add(uItem))); return(coinCollection.ToList()); }
private static void CheckWalletAllReceiveCoin(string walletAddress) { QBitNinja.Client.QBitNinjaClient client = new QBitNinja.Client.QBitNinjaClient(NBitcoin.Network.TestNet); var balance = client.GetBalance(new NBitcoin.BitcoinPubKeyAddress(walletAddress), false).Result; Console.WriteLine(""); Console.WriteLine("TransactionId : BitCoin , Index"); Console.WriteLine("-------------------------------------------"); foreach (var operation in balance.Operations) { Console.Write(operation.TransactionId + " : " + operation.ReceivedCoins.Select(coin => coin as NBitcoin.Coin).Sum(x => x.Amount.ToDecimal(NBitcoin.MoneyUnit.BTC)) + ","); //To highline INDEX so chnage color . Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine(string.Join(";", operation.ReceivedCoins.Select(coin => coin as NBitcoin.Coin).Select(x => x.Outpoint.N))); Console.ForegroundColor = ConsoleColor.White; } }
public override async Task <string> GetTransactionHex(string transactionId) { var settings = SettingsProvider.GetSettings(); string transactionHex = string.Empty; try { QBitNinja.Client.QBitNinjaClient client = new QBitNinja.Client.QBitNinjaClient(settings.QBitNinjaBaseUrl, settings.Network); var qbitNinjaResponse = await client.GetTransaction(new uint256(transactionId)); transactionHex = qbitNinjaResponse.Transaction.ToHex(); } catch (Exception exp) { throw exp; } return(transactionHex); }
public List <Coin> GetCoinsByAddress(BitcoinAddress Address, Network net = null, int confirmations = 6) { QBitNinja.Client.QBitNinjaClient cl = new QBitNinja.Client.QBitNinjaClient(net); QBitNinja.Client.Models.BalanceModel bm = cl.GetBalance(new BitcoinPubKeyAddress(Address.ToString())).Result; List <Coin> txs = new List <Coin>(); foreach (var operation in bm.Operations) { foreach (var cn in operation.ReceivedCoins) { if (operation.Confirmations >= confirmations) { Coin C = (Coin)cn; txs.Add(C); } } } return(txs); }
public async Task <GetTransactionHexResult> GetTransactionHex(Settings settings, string transactionId) { string transactionHex = string.Empty; bool errorOccured = false; string errorMessage = string.Empty; try { QBitNinja.Client.QBitNinjaClient client = new QBitNinja.Client.QBitNinjaClient(settings.QBitNinjaUrl, settings.Network); var qbitNinjaResponse = await client.GetTransaction(new uint256(transactionId)); transactionHex = qbitNinjaResponse.Transaction.ToHex(); } catch (Exception exp) { errorOccured = true; errorMessage = exp.ToString(); } return(new GetTransactionHexResult { HasErrorOccurred = errorOccured, TransactionHex = transactionHex, Error = errorMessage }); }