【问题标题】:get offline Bitcoin transaction id, chain multiple offline transactions获取离线比特币交易id,链接多个离线交易
【发布时间】:2013-12-10 10:55:33
【问题描述】:

假设我创建了一个有效的交易(离线但不发送,例如:http://brainwallet.org/#tx。我们称之为“A

a)在发送A之前,我可以得到A的交易ID吗?

b)我希望创建一个新的离线交易(称为B),使用 A 的输出作为 B 的输入。但是,A 尚未发送到比特币网络。这可能吗?

c) 如果 b) 部分可行,我发送 A,然后立即将 B 发送到比特币网络。会发生什么?

【问题讨论】:

标签: transactions offline bitcoin


【解决方案1】:

比特币协议中没有交易ID,只有交易哈希。 为了更清楚,您需要了解交易有输入和输出。

  • 输入由上一笔交易的哈希和证明您是硬币所有者的签名脚本组成。如您所见,没有输入金额,因为地址的全部提供都将被花费。更改将在交易输出中发回给您。

  • 输出由金额和签名脚本组成。在这种情况下,签名脚本给出解锁硬币需要填写的条件。

所以是的,您可以创建 B 而无需将 A 发送到网络。

如果同时发送AB会怎样? 交易A肯定会完成。之后的至少 3 个新区块 B 也可能会完成,但这不是 100% 确定的,因为矿工可能会从他们的记忆中删除 B,直到 A 没有花费。

您可以在此处获取有关交易的更多详细信息: https://en.bitcoin.it/wiki/Transactions

关于这里的交易脚本: https://en.bitcoin.it/wiki/Script

【讨论】:

    【解决方案2】:

    在根据另一个未确认(甚至离线)交易创建新交易之前,您必须记住的是,您的交易哈希(id)可能会在挖掘过程中发生变化。

    因此,您可以随时将所有 A 和 B 交易发送到网络,但有多种选择:

    1. 交易 A 将被包含在下一个区块中并得到确认,因此当交易 B 将包含在下一个区块中时,一切都会好起来的。
    2. 您的交易 A 将在挖掘过程中更改其哈希(请参阅交易延展性)并包含在具有不同哈希 (id) 的下一个区块中。在这种情况下,您的交易 B(取决于交易 A 的离线计算的哈希值,不再有效)将永远不会被网络接受。

    【讨论】:

      猜你喜欢
      • 2020-05-31
      • 1970-01-01
      • 2014-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-15
      • 2017-03-11
      相关资源
      最近更新 更多