取消比特币交易

问题描述 投票:7回答:3

我正在编写一个比特币应用程序并希望实现“取消”功能。所有reddit都是参考,如果发生3次确认,技术上可以停止付款。也许只有一分钟或两分钟,但仍然。我在比特币api文档中找不到任何参考来证明如何做到这一点。我知道一个山寨币使用有意的60分钟间隙来证实这个原因。

有谁知道这是怎么做的?

bitcoin bitcoind
3个回答
14
投票

是否有可能取消比特币交易......

......还没播出?

是的,显然这是可能的。我建议你在你的比特币应用程序中选择这种方法,向用户显示几秒钟的确认屏幕,其中包含有关交易的信息以及一些说明cancelconfirm的按钮。 @nahtnam建议延迟60分钟,考虑到您可能会失去互联网访问权或希望交易尽快出现在区块链中。

......已经播出了?

也许......要取消这样的交易,您需要自己创建一个块,将原始交易的输入移动到您自己的地址之一。 (有效地使原始交易无效。)但是,到目前为止,创建块需要花费数千美元,并且无法保证找到块。

另一种可能性是广播另一个交易,其输入与原始交易相同,并将输出定位在您自己的地址/钱包之一。为了激励矿工包含此交易而不是原始交易,您需要增加交易费用。然而,一些客户可能不会将这种双重花费的交易转发给矿工,而一些矿工可能会拒绝双重花费的交易并包括原始交易(他们先收到的那个)。 (c.f. Bitpay encountered zero double spent in the first 10000 transactions.Cancelling an unconfirmed transaction by @theymos (bitcoin.stackexchange)

通过创建所谓的“非标准”交易,有一些技巧可以隐藏矿工的初始交易。或者,交易可能包括非常低的费用,以使矿工因经济原因拒绝它。 (参见Significant losses by double-spending unconfirmed transactions (bitcoin-dev mailing list)Double-spending by @petertodd (Reddit))但是,如果他们仔细观察并且他们很可能会要求您等到它有一个或多个确认,这会使您的交易看起来对接收者是可疑的。

最后,如果在原始事务上设置标志以指示可替换性,也可以。然后,您可以通过在替换事务中包含相同(一个或多个)输入来将原始事务替换为另一个事务。此外,您必须支付更高的费用。但是,并非所有矿工都尊重这个标志,有些可能仍然包括您的初始交易。 (参见BIP 125: Opt-in Full Replace-by-Fee Signaling

...包含在一个或多个块中?

不,非常不可能。您需要通过在原始事务发生之前从块开始重建区块链并使用height = (current public blockchain height) + 1结束块来控制大量的哈希功能来创建分支。因此,“你拥有的确认越多,这样的攻击就越难,越贵,越不可靠。” Source: @DannyHamilton (Bitcointalk) Satoshi Nakamoto的比特币论文解释说,当你控制超过50%的散列能力时,这总是可能的,并且如果控制的散列能力小于50%,则可能的概率小于1但大于0。见Bitcoin: A Peer-to-Peer Electronic Cash System。但是,如果您控制了大量的散列能力,那么您可能会通过撤消交易并间接损害您的采矿收入流来激励您不要破坏对比特币的信任。


3
投票

不可以。停止比特币交易是不可能的。这就是比特币如此不同的原因。除了让接收方将其发回给您之外,无法撤消交易。

另外,您仍然可以使用取消功能。您可以在发送交易之前设置60分钟的延迟,在这个差距中,有人可以取消,但正如我之前提到的那样,无法阻止已经到达区块链的交易。


0
投票

在进行比特币支付之前制定策略。检查付款人和收件人的比特币地址是否正确(使用复制和粘贴工具)。检查产品/服务和$金额的详细信息是否正确。检查您是否拥有正确的私钥详细信息。期待至少等待24小时确认。这允许矿工有时间验证交易。然后检查您的比特币帐户,确保通过将您的私钥详细信息插入Google搜索来正确完成交易,或检查您的比特币软件以获取交易详情。取消交易既复杂又昂贵。因此,在您付款之前,请先检查,检查并再次检查,然后再发送。

© www.soinside.com 2019 - 2024. All rights reserved.