以太坊是一台「世界计算机」,其设计初衷即是在区块链上完成计算和存储。在链上做计算意味着区块链网络中的所有节点都必须对计算过程进行处理,链上计算模式的成本不可能太低。就算采用二层的扩容方式,也仅仅是对数据和计算进行了压缩,但仍然需要计算过程(验证)在一层进行处理。 本文旨在介绍一种新的计算范式,与以太坊在链上计算的模式不同,该计算范式将计算完全放在链下,链上只作存储,此时区块链仅需要保证存储的可用性和确定性。假设一个计算的入参是确定性的,那么这个计算的输出结果也应该是确定的。比如 x + y = z 这个程序,如果 x 和 y 的值都是在链上记录,分别是 x = 1 和 y = 2,那么公式在任何地方计算结果 z 始终为 3。只要程序的参数在链上确定性的记录下来,那么程序其实也不需要在链上运行(任何人任何地方链下运行),其结果依然是确定可信的。由于计算过程与链完全解耦,计算参数完全依赖确定性存储,我们将这样的计算范式称为:存储计算范式。 图灵机,回归本源的存储计算范式我们知道,不管是冯诺依曼结构还是哈佛结构的计算机,其本质都是一台通用图灵机。 图灵机是一台假想的机器,由一条无限长的纸带和一个带状态寄存器的纸带读取机器组成。读取器会在纸带上来回移动并将新的参数写入纸带。这样一台假想的机器可以进行任意复杂的计算(图灵完备)。 借助区块链技术,我们可以将图灵机的纸带替换为区块链,可以得到下图中的新型计算模型(存储计算范式): 可以编写一个业务程序,将程序的代码提前上传到区块链上(上图区块高度 102)。任何人都可以将程序从可信的区块链中下载并运行起来,程序的读取和输出端都是区块链(纸带)。由于区块链具备可追溯、不可伪造的特性,因此链下程序的输入输出也具备确定性。程序加载来自区块链的确定性参数,最终生成的程序状态也是确定性的。 存储计算范式将程序的源代码、输入输出存储在区块链上。运行程序时,加载链上可信的源代码,对链上的可信参数进行链下计算,输出状态也必定具备一致性。任何人都可以运行程序,任何人运行的结果都一致的,达到可信计算的目的。 模型理论上可行,但将以太坊作为确定性存储依然过于昂贵,会到导致应用的成本激增。使用以太坊有限的区块大小作为存储也会使应用的扩展性大打折扣。借助 Arweave,一条以永久存储为目标的区块链,我们可以将存储计算范式进行实践。 (责任编辑:admin) |