【问题标题】:How to get/understand Bitcoin Transaction ID如何获取/理解比特币交易 ID
【发布时间】:2017-11-29 18:14:08
【问题描述】:

我正在使用 c# 和 NBitcoin 编写我自己的程序。 (阅读《编程区块链》一书) 我可以很好地发送比特币,但非常复杂。这是因为我对交易 ID 缺乏了解。

目前我需要从我的比特币中获取最后一个交易 ID。在这个 ID 的帮助下,我可以将这个比特币发送到其他地方。

这也是我的主要问题。我是否必须保存我收到的每个比特币的每个交易 ID?在这句话中,我使用“比特币”来表示任意数量的比特币。如果我有一个收到 2 个比特币 (1+1) 的地址并且我现在想花费 1.5 个比特币怎么办?如果我花了一个“完整”的硬币,我可以忘记交易 ID,只需要保留剩下的一半?

一个更清楚地表达我的困惑的例子: 我有一个地址 (ABCDEFGH),我收到了 10 个比特币,其中有 10 笔不同的交易(交易 ID 1-10) 由于我没有参与发送(有人把它送给我),我不知道这 10 笔交易的交易 ID。我如何以编程方式获取它们? 获得所有 TransactionID 后,我是否必须现在将它们全部写下来并跟踪它们以用于我的 ABCDEFGH 地址以备将来支出,或者有什么方法可以说“花费 x 数量的这个地址”?

从这本书中,我不知何故明白,每次交易我都需要花费 1 个比特币。因此,如果我想发送 0.3 个比特币,我必须将 0.3 个比特币发送给接收方,然后将 0.7 个比特币返回给我?!?!

有没有办法像这样编程:

交易(MoneyAmount,RecieverAddress,SenderAddress);

【问题讨论】:

  • 简而言之:我如何以编程方式获取地址的 TransactionID,以便我可以花掉硬币?

标签: c# transactions bitcoin nbitcoin


【解决方案1】:

我想我找到了一种方法来做到这一点,但缺少最后一点 C# 智慧:

var balance = client.GetBalance(new BitcoinPubKeyAddress(bitcoinPrivateKey.GetAddress().ToString())).Result;

var tid = new List<String>();
foreach (var operation in balance.Operations)
                //Console.WriteLine(operation.TransactionId.ToString());
                tid.AddRange(operation.TransactionId.ToString());

如果我使用 Console.WriteLine,我会得到正确的事务 ID。但由于某种原因,我无法将 TransactionID 字符串添加到列表中。它说它不能将“字符串”转换为 System.Collections.Generic.IEnumerable

【讨论】:

  • 好吧,我很愚蠢。解决方案是使用 tid.Add(...) 而不是 AddRange
猜你喜欢
  • 1970-01-01
  • 2014-01-22
  • 2022-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-15
  • 2017-03-11
相关资源
最近更新 更多