以太坊对区块链的发展具有创新性的意义,它使得区块链的应用不只局限于数字货币领域。以太坊给出了一套图灵完备的编程语言,让用户可以通过智能合约自由地开发去中心化App—Dapp,并且通过PoS共识机制实现了去中心化的数据库,让数据真正属于用户自己。这两个特征使得以太坊成了真正意义上的去中心化计算平台。本文将针对PoS(权益证明)以及去中心存储这两个概念展开叙述。

PoS的具体内容

利益证明(PoS)是一种共识算法,允许人们通过验证区块链上的区块而获得奖励。与工作证明(比特币使用)不同,权益证明不需要昂贵的硬件成本和大量电力。它根据个人拥有的代币数量随机选择验证者去验证区块。个人在网络中质押的代币越多,对应权益也越高,那么被选中进行验证的可能性就越大,因此称为“权益证明”。

在以太坊网络中,用户通过质押32枚以太币成为验证者,验证者需要保持自身网络和算力的稳定,否则可能受到扣除以太币的惩罚。如果有人想通过控制51%以上权益对网络发起攻击,那么他将会受到巨额的惩罚。也许PoS机制比PoW机制更能避免中心化问题。

在权益证明的模式下,传统矿工转型成为验证者,从而避免了大规模的算力竞争,这使得以太坊网络消耗更少的能源。因此,之前因为巨大能源消耗而拒绝eth的国家可能会考虑重新接受它。

以太坊上的去中心化存储

存储树(Storage Trie)是智能合约数据存储的位置。每一个以太坊账户都有自己的存储树。

智能合约的数据并不存在于区块中,而是存在于区块链的状态数据库(存储树)中,状态数据库(状态树)中包含了所有账户的存储、余额、代码及存储树的树根。

智能合约编译时为其中的变量(每一项数据)分配了地址,这些地址可以被转换成状态数据库中的一个key,根据key可以从状态数据库中取出对应的value,value即为合约的数据。key和value的大小都是32字节。

所提供的key的数量多达2^256个存储位置,每个位置都可以存储32字节的数据,所以一般认为智能合约的存储空间是无限大的。

以太坊本身可以用作分布式存储系统,所有智能合约的编码储存就是一种分布式存储。 然而,当涉及大量的数据存储时,就不太符合以太坊的最初目标。 这一区块链正在稳步增长,在本报告撰写之时,以太坊区块链约为 500GB - 1TB(取决于客户端),而网络上的每个节点都需要存储所有这些数据。 如果链上数据量继续扩大(例如 5TB),那么将导致所有节点都无法继续运行。 并且,由于燃料费用,将这么多数据部署到主网的费用将非常昂贵。

然而,专用以太坊来存储数据没有任何意义。以太坊应该只存储正常运行所需要的少量数据,并将数据存储委托给其他解决方案:如IPFS。

文件引用系统IPFS

不同于由一个公司或组织控制的中心服务器,星际文件系统(IPFS)由分别持有全局数据中部分数据的用户操作者组成 P2P 网络,形成了一个具有弹性的文件储存、共享系统。 这些可以应用于基于区块链的应用程序或任何 P2P 网络中。

IPFS 没有使用基于位置的寻址(用户指向中央服务器上文件的位置),而是使用基于内容的寻址,用户使用文件的唯一ID请求文件。

当用户在 IPFS 网络上上传文件时,文件会被分成更小的部分并使用密码散列进行加密。为了识别文件,网络为分割后的文件分配了一个唯一的标识符,称为散列或内容标识符 (CID)。 当用户想访问这个文件时,可以使用这个CID并询问网络上哪个节点拥有它对应的文件。任何拥有该文件的节点会将文件发送给请求的用户。一旦用户收到文件,用户的计算机就会存储该文件的副本,同时该用户将成为文件的另一个提供者。

用户通过指向文件的内容(CID)而不是文件所处的位置(url)来访问文件,这一特征就是为什么这种模式被称为基于内容的寻址。

每次将新数据添加到文件时,它都会创建一个具有新 CID 的新文件,同时在 IPFS 上保留该文件之前的版本。这意味着文件的整个历史可以永久地存储在 IPFS 中。

用户可以将文件对应的CID存储在区块链网络中,以此证明该用户为文件的所有者。利用IPFS的存储性能,以太坊生态得到了可观的扩展。Dapp的开发者可以将前端以及渲染数据存放在IPFS上,同时将智能合约部署在以太坊上,从而开发出真正意义上的去中心化应用程序。