首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

跟着小樱学区块链(五)-双花问题

sdfd

金银花又名二花,双花,金花,银花和忍冬花,现代药理研究表明,金银花具有抑菌、抗病毒、抗炎、解热、调节免疫等作用 饮片可分生药、炒药、炭药三种。

小樱今天要说的可是比特币里的双花,不是这个金银花拉。

比特币作为区块链最成功的应用,带着天然的货币属性。自然免不了通过比特币进行交易行为。假设小明的账户里面只有1个比特币,但是他同时告诉小橙和小绿他要用这1个比特币购买他们手上的苹果手机。小橙和小绿确实各自都有苹果手机并且售价为1个比特币,在确认了小明有1个比特币后他们决定进行这个交易。这就是双重支付,也就是我们俗称的双花问题。

对于双花问题,比特币网络,或者说区块链网络,是这么应对的:

-每笔交易都需要先确认对应比特币之前的状态,判断他是否满足UTXO( 未花费交易) 和数字签名。如果不是UTXO,那么新的交易会被拒绝。

-如果先发起一笔交易,在它被确认前,也就是这个时间段的交易还未被记账成区块block时,进行矛盾的第二笔交易,那么在记账时,这些交易会被拒绝。

那么问题来了,

假设小明是个非常聪明的诈骗犯,他刻意把和小橙的交易向全网一半的用户广播,又把和小绿的交易向全网另一半的用户广播。正好两边各自有几个矿工在同一时间取得记账权。

但是,接下来矿工甲取得了记账权,他选择了在小橙后面继续记账。由于区块链总是选择最长的链,也就是说小绿的交易被宣布为无效。

如果小明想要保持两笔交易都被确认,那他需要对全网所有的节点进行对抗,保持在两个分叉链上同时更新,显然是没法做到的。在更多的情况下,当这两笔相矛盾的交易中的一笔被写入区块链,其中的一笔交易至少有6个验证过的block,就可以认为这笔交易获得了最终的确认。小橙和小绿只有等到6个区块时间之后,确认1个比特币的交易已经纳入区块账本中,就可以放心大胆的进行交易了。双花问题也就这么解决了。

好文!必须点赞

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180815G1846V00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券