我正在编写一款比特币应用程序,并希望实现“取消”功能。Reddit上到处都是参考资料,如果少于3个确认已发生,则从技术上讲可以停止支付。可能只有一两分钟的时间,但仍然可以停止。
我找不到比特币API文档中任何参考资料来演示如何完成此操作。
我知道某种替代币使用有意的60分钟间隔进行确认,正是出于这个原因。
有人知道这是如何完成的吗?
我正在编写一款比特币应用程序,并希望实现“取消”功能。Reddit上到处都是参考资料,如果少于3个确认已发生,则从技术上讲可以停止支付。可能只有一两分钟的时间,但仍然可以停止。
我找不到比特币API文档中任何参考资料来演示如何完成此操作。
我知道某种替代币使用有意的60分钟间隔进行确认,正是出于这个原因。
有人知道这是如何完成的吗?
... 这个问题吗?
当然可以。 我建议在比特币应用程序中选择这种方法,向用户显示一个确认屏幕,其中包含有关交易的信息和一些按钮,如取消
和 确认
。@nahtnam提出了60分钟的延迟时间,这太长了,因为您可能会失去互联网连接或希望交易尽快出现在区块链中。
... 这个问题呢?
也许可以... 要取消这样的交易,您需要自己创建一个块,将原始交易的输入移动到您自己的一个地址。(有效地使原始交易无效) 但是,目前创建一个块的成本为数千美元,而且找到一个块是不保证的。
另一个可能性是广播另一个交易,其输入与原始交易相同,并将输出定位到您自己的一个地址/钱包。为了激励矿工将此交易包括在内,而不是原始交易,您需要增加交易费。但是,一些客户端可能不会将这样的双重花费交易中继到矿工,而一些矿工可能会拒绝双重花费交易并包括原始的那个(他们首先收到的)。(参见Bitpay在前10000笔交易中没有遇到过双重支付和取消未确认的交易by@theymos(bitcoin.stackexchange))
有一些技巧可以通过创建所谓的“非标准”交易来隐藏您的初始交易,以避免矿工发现。或者,该交易可以包含非常低的手续费,使得矿工因经济原因拒绝处理它。(参考链接:Bitcoin开发邮件列表中的未确认交易被双花的重大损失和petertodd在Reddit上的双重支付) 但这会让您的交易看起来可疑,并且如果收件人仔细查看它,他们很可能要求您等待一个或多个确认。最后,如果在原始交易上设置了一个标记来指示可替代性,那么也有可能进行替换。您可以通过在替换交易中包括相同的一个或多个输入来替换原始交易。同时,您必须支付更高的费用。但是,并非所有矿工都遵守此标记,某些矿工仍可能包括您的初始交易。(参考链接:BIP 125:选择性全额替换信号)
......它是否包含在一个或多个块中?
不,非常不可能。您需要控制相当数量的哈希功率,从初始交易发生前的块重新构建区块链,并以height =(当前公共区块链高度)+1
的块结束,因此“您拥有的确认越多,就越难、更昂贵、更不可靠地进行这样的攻击。”。(参考链接:@DannyHamilton (Bitcointalk))
不,无法停止比特币交易。这就是比特币与众不同的地方。除了让接收者将其退回给您外,没有反转交易的方法。
另外,你仍然可以有一个取消功能。你可以在发送交易之前设置60分钟的延迟,在这个间隙中,有人可以取消,但正如我之前提到的,已经到达区块链的交易是无法停止的。
在进行比特币支付之前,制定好策略。检查付款方和收款方的比特币地址是否正确(使用复制和粘贴功能)。检查产品/服务和金额的详细信息是否正确。检查您是否拥有正确的私钥详细信息。预计至少等待24小时以进行确认。这样可以让矿工验证交易。然后通过将您的私钥详细信息插入Google搜索或检查比特币软件的交易详细信息来检查您的比特币账户,以确保交易已正确完成。 取消交易是复杂且昂贵的。因此,在发送之前,请反复检查。