离线比特币交易ID,连锁多个离线交易

时间:2013-12-10 10:55:34

标签: transactions offline bitcoin

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

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

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

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

2 个答案:

答案 0 :(得分:0)

比特币协议中没有交易ID,但是交易哈希。 为了使其更清晰,您需要了解事务具有输入和输出。

  • 输入由前一个事务的哈希值和将证明您是硬币所有者的签名脚本组成。您可以注意到没有输入金额,因为地址的整个提供都将花费。更改将在交易输出中发回给您。

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

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

如果您同时发送 A B 会怎样? 交易 A 肯定会完成。之后至少有3个新区块 B 也可能会完成,但这并不是100%肯定,因为Miners可能会将B从内存中删除,直到 A 没有花费。< / p>

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

以及有关事务脚本的信息: https://en.bitcoin.it/wiki/Script

答案 1 :(得分:0)

在执行根据其他未经证实(甚至是离线)事务创建新事务之前,您必须记住的是您的事务A哈希(id)在挖掘过程中可能会发生变化。

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

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