blockchain区块链是什么?(2)

现在我们先来看一看简化的 bitcoin consensus algorithm:

  1. 一个新交易向整个网络或者所有节点广播。
  2. 每个节点独立的将自己池子里面的交易组装成一个新的区块。
  3. 在每一轮,随机选中某个节点,此节点大声向所有节点广播她新组装的区块。
  4. 当且仅当这个新区块中所有的交易被验证为有限时,其他的节点才接受这个新块
  5. 每个节点将这个新区块的hash值写入自身的区块链中,代表接受这个新区块。

在这个协议中假设了多轮的节点选择,必须严格符合数学上的随机性。那么为什么这个协议可以有效工作呢?我们假设自己是一个恶意节点,有如下几个方式来攻击破坏这个consensus的过程:

盗取比特币bitcoins
假如在上篇的令狐冲网络中,令狐少侠能不能盗取别人的比特币呢?答案是否定的。在区块链网络中,你必须发起一个有限的交易transaction来转移比特币,这就要求令狐少侠伪造被盗者的数字签名,但是我们拥有密码学的数学公理这个强大武器,来保证数字签名无法伪造。

拒绝服务攻击
假设岳不群排挤令狐少侠,凡是包含令狐的交易,他都不塞入自己的新区块中,并且这一次随机选中了岳不群节点来广播。也就是岳不群拒绝服务令狐冲。大家仔细考虑一下,这实际上并不是一个好的攻击方式。因为令狐冲只需等待片刻,下一轮的时候任盈盈就会为他服务,因为网络中还存在大量的诚实节点。

重复消费Double Spend
这是bitcoin比特币网络中最为著名的攻击方式。假设令狐冲向盈盈支付1个币,那么盈盈就允许其在她的网站上下载笑傲江湖的曲谱。这个交易广播了,盈盈也看到了,所以就开放了下载权给令狐冲。但是,请注意广播并不代表被整个网络的节点确认为有效,并写入区块链的唯一数字账本。

这一轮恰巧被随机选中写入账本的节点是岳灵珊,她是受令狐冲控制的,于是令狐冲又广播一个交易,将之前的那1个币(必须是同一个)支付给自己控制的账户。那么岳灵珊选择将这个交易写入账本,而选择没听到令狐支付盈盈的交易。这就是最经典的重复消费攻击。

那么区块链网络如何选择呢,其他节点会接受哪一个交易呢?令狐–盈盈 或者 令狐–令狐?哪一个会最终被写入全局唯一的区块链账本。诚实节点将会遵循这样一个原则:他们只接受最长的区块链分支为有限分支,选择跟随这个最长分支,并紧跟在其后。因此长的分支会越来越长。

这里请注意,从道德的角度判断,令狐–盈盈这个分支是符合商业伦理的,因为我们是人类,知道令狐冲把同一笔钱花了两次。但从技术的视角出发,这两个交易没有本质区别的,都是有效交易。对于区块链网络中的节点来说,它们是无法分辨的。甚至令狐节点还可能贿赂周边节点来接受他的重复消费交易。

double spend

这里有个时间的微妙差别,加入盈盈没有马上开放下载权给令狐少侠,那么他就不会立即广播第二个重复消费的交易。因此聪明的盈盈选择等待,当她发现有其他诚实的节点选择接受令狐–盈盈这个交易,并将其写入block时才开放下载权。那么需要几个诚实节点来保证阻止这个恶意的重复消费呢? 多少个confirmation transaction

在数学分析中,Double spend成功的概率,是随着confirmation的数量成指数下降的。因此在比特币网络中,6个confirmation就已经足够将这种攻击消灭。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值