防止重复事务

0
我正试图对比特币有更多的了解,我正在努力为这种情况找到答案。例如,我可以访问一个钱包,并且我可以让世界另一端的人访问同一个钱包(都使用bitcoin core wallet和bitcoin cli sendtoaddress)。我们在手机上,我们都有完全相同的平衡,在完全相同的街区高度。比特币如何防止我把钱送到一个地址,而一个有权使用相同钱包的人几乎同时把钱送到另一个地址?第一笔进入网络的交易会赢,而最后一笔却永远不会得到确认吗?分散的网络是如何决定的?
双倍消费
事务传播
分享
改进这个问题
跟随
9小时前编辑的
墨奇♦
51.8K33232金徽章143143银徽章452452铜徽章
3月14日15:12问
乔纳森
1333青铜徽章
1
这能回答你的问题吗?比特币分岔解决方案-分岔失败者下载以前的区块直到公共区块?–RedGrittyBrick 3月14日16:24
不,我在想为什么当我在不同的设备上有两个钱包在不同的位置,钱包收到钱,一个钱包在另一个之前收到交易。–乔纳森3月14日17:04
添加评论
1个答案
1
第一笔进入网络的交易会赢,而最后一笔却永远不会得到确认吗?
然而,这几乎不像“第一次”交易那么简单,但它本质上是一场竞赛。
当一个新的事务被广播到其他节点时,它进入一个称为mempool的节点。使用短语“mempool”可能会让人困惑,因为没有一个mempool,每个节点都有自己的mempool,它可能与另一个节点mempool不同。
在您的场景中,两个完全相同的钱包位于世界的不同角落,一个以较高费用广播事务的钱包可能“赢”,或者一个广播到连接更好的节点以便通过网络传播的钱包可能“赢”。
一旦事务在mempool中并且其他节点知道它,当您尝试广播已经花费的输入时,您可能会收到一个“missing inputs”错误。为了让双倍支出被注意到,交易不必在块中确认;它只需要在mempool中。如果网络使用率很高,并且该事务的事务费很低,则某些事务可以在mempool中保留数小时甚至数天,因此检查mempool中的事务是否有双倍开销非常重要。
在任何情况下,一项交易都不具有任何程度的永久性,除非它在一个区块中得到确认。即使有1个确认,在竞争最长链的情况下,事务也可能不是永久性的,失败的链将有孤立的块。
早在比特币年轻的时候,很多人会等6次确认后再考虑永久性交易。如今,一些确认书可能足以让大多数交易被视为永久性交易。
分享

Cryptocurrency and blockchain technology

发表评论

邮箱地址不会被公开。 必填项已用*标注