风险提示:理性看待区块链,提高风险意识!

怎样防止一个比特币被使用两次?

2个回答

资深韭菜君2星评价

2020-11-04 15:28:25

怎样防止一个比特币被使用两次?

比特币区块链作为一个去中心化的点对点电子现金系统,主要依靠UTXO和时间戳来应对"双花"问题。"双花"是指同一笔款项被重复支付了两次,也就是双重支付的情况。

比特币区块链作为一个去中心化的点对点电子现金系统,主要依靠UTXO (UnspentTransaction Output)和时间戳来应对"双花"的问题。 当某一笔比特币交易被创建一签名一广播到区块链网络之中后,每一个节点(比特币交易参与者)会对这笔交易进行验证,看交易的输出是否存在于UTX0 (Unspent Transaction Output ),即"未花费过的交易输出"中。

如果A拥有的1BTC被证实确实是"未花费过的交易输出",他要是将这1BTC同时转账给Bl、B2两人,挖矿节点会选择性地记录一笔交易,或许是最先收到的,或许是手续费更高的。

如果这两笔交易是先后被挖矿节点接收到的,那依据时间戳,先被接收到的交易会被验证成功,而后被接收到的交易则会因交易输入己经不存在于UTX0而验证失败。

如果两个挖矿节点分别同时记录了 "From A To B1"和"From A To B2"这两笔交易,并且这两笔交易被分别证明是合法的,此时这两个挖矿节点会将各自挖到的新区块广播到全网。

这时链就会分叉。其他参与挖矿的节点会随机选择一条链继续挖矿,哪条链先产生了新区块,哪条链就会成为当前最长的链,记录在最长链上的交易最终会被认证是成功的,而记录在另一条链上的交易则不会被认证。

一笔交易创建后若未被记录进区块中,为0确认;若被记录进区块中,则为1确认。为防止恶意制造最长链来进行"双花",建议等待6个新区块产生,也就是"6确认"之后再完成交易。

一分自然卷4星评价

2020-10-14 16:06:05

一个区块要能够进入区块链, 该区块输入的比特币(就是区块里in的部分)必须是没有被其他区块用过(在主链中的其它任何区块的输入in中出现过)。如果该比特币已经在一个区块里作为输入(in),而且该区块已经在主链中了,这个比特币已经有记录被花掉了,就不可能被重复使用第二次。

这个问题应该问的应该是,在两个交易中同时使用同一个比特币,而这两个交易对应的区块都还没有经过其他矿工(一般是6个矿工)的验证,交易能不能做成?就是重复支付(double spending)的问题。

重复支付在比特币里的处理原则是不能阻止,但可以检测到。 最终进入主链的只有一个区块,而另一个区块成为孤块(orphan block)。举例来说,A拿同一个比特币同时向B和C购买上商品,只要B和C坚持等到支付的区块被验证并加入主链后才给A发货的话,在这种情况下,重复支付是不会成功的,因为这两个区块最终只有一个区块链被接收。

另一种情况,就是在51%攻击时,重复支付可能成功。例如,A用同一个比特币向用户B和用户C同时购买商品,分别产生两个区块X和Y。支付给B的区块X最先被接收进入主链,用户B发现区块X被接收后,就发货给A。但A控制了整个系统超过51%的算力,这时,A在区块X被接收后,快速挖矿,在区块Y之上,快速加上一个其它的区块,这时系统出现两个分支,区块X所在分支和区块Y所在分支。但区块Y所在的分支已经比区块X所在的分支长,最终被系统接收,这时用户C看到区块Y被接收,把商品送给A。A达到了一个比特币购买同时购买两个商品,重复支付成功。

控制51%的算力几乎是不可能的,但这的确是基于工作量(pow)的挖矿证明的一个缺点,而基于股票(POS)的挖矿证明可以稍微好些地解决51%算力被控制的问题。

热搜币种 更多

币种价格24H 涨跌幅
  • FTT

    FarmaTrust

    ¥17.61

    2.4923 USDT
    -3%
  • BTC

    比特币

    ¥440,347.47

    62338.61 USDT
    -1.88%
  • CFX

    Conflux Token

    ¥1.31

    0.1852 USDT
    -0.91%
  • XCH

    奇亚

    ¥113.90

    16.1241 USDT
    -7.54%
  • DOGE

    狗狗币

    ¥0.76

    0.1073 USDT
    -5.71%
  • TRX

    波场币

    ¥2.24

    0.31770 USDT
    +1.4%
  • FIL

    Filecoin

    ¥26.11

    3.6964 USDT
    -2.2%
  • SOL

    Solana

    ¥1,013.23

    143.44 USDT
    -3.67%
  • SHIB

    柴犬币

    ¥0.00

    1.735E-5 USDT
    -5.81%
  • CELO

    Celo

    ¥4.99

    0.7065 USDT
    -8.96%
  • DYDX

    dYdX

    ¥6.36

    0.9004 USDT
    -0.96%
  • HT

    火币积分

    ¥3.69

    0.5226 USDT
    -4.51%