第77章 这是一本划时代的白皮书
作者:汪泽      更新:2021-04-10 20:45      字数:1998
  11.计算
  我们想象一个这样的场景,攻击者想用比诚实节点更快的速度产生一个替代链。
  即使成功了,也不会让系统能任意被修改,比如凭空产生价值或拿走不属于攻击者的钱。
  节点将不会接受一个无效的支付,并且诚实节点绝不会接受包含这种支付的区块。
  攻击者只能试着改变自己的交易来拿回本该花出去的钱。
  诚实的链和攻击链的竞争可以说是二项式随机走动。
  成功事件是诚实链延长一个区块,领先优势加一,失败事件是攻击链延长一个区块,缩小一个差距。
  一个攻击者从一个给定的赤字中追上的概率类似于一个赌徒破产问题。
  假设一个信用无限的赌徒从赤字开始,开始进行潜在次数无数的赌博,试图达到盈亏平衡。
  我们可以计算他达到盈亏平衡的概率,或者说是攻击链赶上诚实链的概率,如下:
  p=诚实节点发现下一个区块的概率
  q=攻击者找到下一个区块的概率
  qz =攻击者在落后z个区块的情况下,追上的概率
  假设p>q,随着落后区块数量(z)增加,攻击者追上的概率呈指数下降。
  这个概率情况对攻击者不利,如果他没有幸运的提前向前冲刺,落后越多希望就越渺茫。
  我们现在考虑接收者在收到新的交易的时候,需要等待多长时间才能完全确定交易不能被发送者修改。
  我们假设发送者是攻击者,他想让接收者暂时相信他已经付款了,然后过了一段时间又换成是支付给自己。
  这事发生的时候接收者会收到告警,但是发送者希望一切都晚了。
  接收者创建了一个新的密钥对,签名之前很短的时间把公钥给了发送者。
  这防止发送者提前准备一条链,持续在上面工作,直到他足够幸运达到了领先的程度,正好执行刚才这条交易。
  一旦这个交易发送了,不诚实的发送者开始在一个并行的链上秘密工作,这条链包含他的交易的另一个版本。
  接收者一直等待直到交易被添加到一个区块中,并且后面已经追加了z个区块了。
  他并不知道攻击者的准确进展,但是可以假设诚实区块每个区块花费的时间是平均期望时间,攻击者潜在的进展将服从泊松分布,期望值:
  为了得到目前攻击者仍能追上的概率,我们将他所取得的每一步进展的泊松密度乘以他可能从那一点赶上的概率。
  变换一下避免对分布的无穷尾部求和…
  转换成c代码…
  #include
  double attackersuccessprobability(double q, int z)
  {
  double p = 1.0 - q;
  double lambda = z *(q / p);
  double sum = 1.0;
  int i, k;
  for (k = 0; k
  {
  double poisson = exp(-lambda);
  for (i = 1; i
  poisson *= lambda / i;
  sum -= poisson *(1 - pow(q / p, z - k));
  }
  return sum;
  }
  运行结果,我们可以看到概率随z的增加呈指数下降。
  q=0.1
  z=0 p=1.0000000
  z=1 p=0.2045873
  z=2 p=0.0509779
  z=3 p=0.0131722
  z=4 p=0.0034552
  z=5 p=0.0009137
  z=6 p=0.0002428
  z=7 p=0.0000647
  z=8 p=0.0000173
  z=9 p=0.0000046
  z=10 p=0.0000012
  q=0.3
  z=0 p=1.0000000
  z=5 p=0.1773523
  z=10 p=0.0416605
  z=15 p=0.0101008
  z=20 p=0.0024804
  z=25 p=0.0006132
  z=30 p=0.0001522
  z=35 p=0.0000379
  z=40 p=0.0000095
  z=45 p=0.0000024
  z=50 p=0.0000006
  对于p
  p
  q=0.10 z=5
  q=0.15 z=8
  q=0.20 z=11
  q=0.25 z=15
  q=0.30 z=24
  q=0.35 z=41
  q=0.40 z=89
  q=0.45 z=340
  12.结论
  我们为无信任电子交易提出了一个系统。
  我们从数字签名币的常用框架开始,它对所有者有很强的控制,但是因为不能避免双花,所以还不完整。
  为了解决双花,我们提出了一个点对点的网络,这个网络使用工作量证明记录一个公共的交易历史,只要诚实节点控制大部分cpu算力,很快使得攻击者无法通过计算来改变交易历史。
  该网络的非结构化简单性使得它很稳健。
  节点同时工作,很少需要相互协调。
  他们不需要被识别,因为消息不需要路由到任何特定的位置,只需尽力传递就好。
  节点可以离开网络,也可以需要的时候重新加入网络,接受工作量链作为他离开的时候发生了什么的证据。
  他们用cpu算力投票,通过在有效区块上工作并延续它来表达对区块的接受,通过不在新区块上工作表示拒绝无效区块。
  任何需要的规则和激励都可以在这种共识机制下进行。
  ——bitcoin一种点对点的电子现金系统!
  喜欢海州少年请大家收藏:()海州少年18书包更新速度最快。