如何应用可验证计算提高区块链性能?「干货」.docxVIP

  • 3
  • 0
  • 约6.17千字
  • 约 20页
  • 2021-11-05 发布于江苏
  • 举报

如何应用可验证计算提高区块链性能?「干货」.docx

区块链技术 可验证计算 VerifiableComputing 是指在分布式计算和云计算环境下,解决任务分包以及任务委托计算中产生的计算结果可信性问题的方法,是计算机科学和密码学领域较前沿的研究方向。随着分布式计算、尤其是区块链技术的发展, 对可信计算 Trusted Computing 和无需信任计算 Trustless Computing 提出更高需求,不少团队开始探索将可验证计算用于区块链领域,以解决目前区块链网络的性能瓶颈。 「区块链性能瓶颈亟需突破」 很多研究者在讨论如何对区块链进行扩容,这个话题中非常重要的一个问题是, 区块链达成共识的速度非常有限——这是现在区块链性能的瓶颈。 区块链技术 比如说,比特币的 TPS 其实只有 3 ~7 ,以太坊大概 15 ~25 ,一些比较新的提案可以把这个增加了很多,比如说 Algorand 可以做到 300tps ,Conflux 可以到 6000tps ,EOS 则做到了 4000tps 左右。还有有一些项目宣称可以达到 100 万 tps——这个目标很大,如果可以做到,至少几年内不用为性能发愁了。 传统的中心化网络能达到怎样的 TPS ?Paypal 平均的 TPS 为 200 左右,峰值可以达到 450 多;Visa 平均为 1600 ,峰值可以达到 5.6 万;淘宝峰值为 25.6 万 TPS 。 假设我们在一个非常理想的世界里,在这个理想环境下,带宽无限,传输没有延迟,任何时刻可以非常快选择一个领导者,大家知道这个领导者是谁,只要有数据,马上可以达成共识。 区块链技术 即使在这种理想环境中,是不是可以做到 100 万 TPS 呢?实际并不是,因为我们至少需要解决两个问题: 第一,单个节点处理能力处理不了。第二,区块链数据增长非常快。 让我们先来看看单个节点处理能力的问题。 在区块链系统中,本质上要求每笔交易都能被每个全节点进行验证。但是通常电脑处理能力非常有限,不可能处理特别多的交易。 如果是一个中心化的系统,这个问题其实很好解决,只要加急器就可以,用并行计算或者分布式计算,用这种方式加一台机器,处理能力至少多个几百块。 区块链技术 但是在区块链系统中,无法相信其他的节点,所有都要验证一遍,即所有的交易要验证是否有效、所有智能合约的执行要验证执行结果对不对。这样最终导致的结果是,即使有一千个节点,实际处理能力可能跟一个就点差不多,因为有一些额外的开销,实际上还不如一个节点的处理能力。比如,以太坊虽然是一个图灵完备、全球化的计算机,但是这个计算机的性能非常低。 如何解决单个节点处理能力的问题呢?一个非常简单的方式是既然解决不了,干脆放弃治疗,不解决这个问题,只更新状态而不去验证每笔交易是否合法的。 虽然说这样性能可以更高,但是在安全性上有很大的问题。比如说在 2015 年时发生过比特币有六个块的分叉,就是因为矿工在挖矿的时候没有事先验证好矿里的交易是否有效,挖了六个块之后才发现问题。这样的情况下,安全性问题很严重,需要六个块才可以确认交易。 区块链技术 另一个很容易想到的想法是,既然没有办法用一个节点处理整个网络所有的交易, 就减轻每个节点的负担。 很多第二层的方案都是用这种思路做,比如说分片或者用侧链的方式。用这种方式,每个节点处理全网交易里面的一部分,只验证一部分交易,剩下的会交给其他的节点验证,在安全性有部分牺牲的情况下,设立复杂的机制,确保别的分片中做的验证都是对的。可是,如果不对的话要怎么处理,这就比较复杂了。 第三种方法是,既然单个节点处理不够,增加处理能力这也可以是一个方法。 当然最简单的方法是用更强的计算机。这样的问题最终有一个中心化的趋势,如果说想一下希望达到 100 万 tps 的目标,即淘宝峰值 4 倍的交易量,需要计算机的性能非常强,能运行这样节点的公司全世界不会太多。 区块链技术 于此对应的另外一种方式是,减轻每笔交易或者验证智能合约执行时所能花的代价,这样,同样的节点、同样的计算能力,可以在短时间内处理更多的交易。 「可验证计算可以用来解决区块验证的问题」 首先,让我们看看验证一个区块需要做哪些事? 生产了区块之后,首先要验证区块头,这个代价比较小。代价比较大的是验证里面每笔交易,拿出来先看签名对的,每笔交易在 UTXO 合法,金额也是合法的, 之后把 UTXO 更新,再验证下一笔交易,一笔笔做下去。这是比较慢的地方。 区块链技术 用这种方式实际上要重复执行整个计算,把计算整个做一遍,才可以验证这个区块合法的。这是不是必要的一件事呢?是不是只能通过这种方式验证? 看起来不是那么必要。 现在大部分的节点只是需要验证区块内的交易等内容是合法的,这个工作在区块生成的时候打包者已经做过一遍了,其他的人并不需要重复这个工作

文档评论(0)

1亿VIP精品文档

相关文档