取消比特币交易

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

谁知道这是怎么做到的?

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

……还没播出?

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

…已经播出了?

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

另一种可能性是广播另一个交易,其输入与原始交易相同,并以您自己的地址/钱包中的输出为目标.为了激励矿工包含此交易而不是原始交易,您需要增加交易费用.然而,一些客户可能不会将这种双重花费的交易转发给矿工,而一些矿工可能会拒绝双重花费的交易并包括原始交易(他们先收到的那个). (参见Bitpay encounterd zero double spents in the first 10000 transactions.Cancelling an unconfirmed tranasaction 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)

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

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

相关文章
相关标签/搜索