有了Chainlink,以太坊layer 2能为Filecoin引流吗?(上)
最近,Chainlink 正在与 Filecoin 进行集成,以实现 Filecoin 网络与以太坊等支持智能合约的区块链之间的双向连接。这意味着Filecoin可以接收外部输入,通过定制Chainlink的外部适配器来实现触发Filecoin的链上存储功能,或者获取Filecoin的存储状态数据。
这个消息让我们有了在以太坊和Filecoin建立连结的想法,于是有了如下思考:
能否可以在不影响交易验证的安全性和网络去中心化的情况下,利用Filecoin或者IPFS去中心化和哈希寻址的特性,提高以太坊网络的可扩展性?
接下来,我们就来讨论一下他们之间的连结在哪里,以及如何实现?
以太坊的可扩展性
区块本身是一个批次交易数据的集合,每个区块中包含的交易量(数据量)与区块的生成速度相结合,决定了网络每秒可以处理的交易数量(TPS),而TPS和安全性等要素决定了主流大众对区块链的认可度和区块链市场的市值。
ETH vs Visa|14:1700,blockchair.com/ethereum
区块链上单个区块的大小很大程度上影响着网络的速度和容量。区块的扩容可以提高交易确认速度,同时降低交易的手续费。矿工现有的硬件条件和网络情况尚可应对目前5M左右的区块大小,然而如果超过一定体积会使节点存储、带宽和计算压力太大,导致记账网络中心化。同时,网络不能及时同步最新区块,分叉导致交易安全问题。
我们来看看当前以太坊全节点和存档节点的体积(10:1)
Archive node 当前量级:6.6T,etherscan.io
Full node当前量级:700GB,etherscan.io
平均区块大小被EIP-1559提出的单个区块Gas费总和所限制:
区块平均大小,etherscan.io
当前存在的可扩展方案可分为链上和链下两类:
链上扩容:
限制合约代码大小——EIP-170将合约代码限制在24kb以内;
分片——将一个交易批次分割成“碎片”,不同的节点只负责确认某些碎片,从而达到并行处理、提高系统性能的效果;
状态树修剪——状态数据被不断地修剪以删除不再相关的数据,如旧的帐户余额;
Gas返还(Negative gas cost)——以太坊通过退还智能合约执行期间使用的部分Gas费,鼓励删除已使用的存储变量和账户。
链下扩容
Plasma——是链下交易+侧链的解决方案,类似于比特币的支付通道(闪电网络);
ZK Rollup——是一种基于零知识证明的Layer 2解决方案。可提供关于整体状态转换正确性的零知识证明,从而保证链上状态有效,并允许立即撤出;
???
以太坊概念回顾
我们先来通过几个概念简单回顾一下以太坊。
什么是以太坊?
以太坊是一个基于交易的状态机,所有状态(State)的转换都由交易(Transaction)来启动,从一个状态转换为另一个状态。
以太坊中的状态是指什么?
以太坊中的状态称为世界状态,是一种从地址到账户的映射。每个地址代表了一个账户,账户分为“管钱”的外部账户(EOA)和合约账户。在外部账户包含的余额和nonce项之外,合约账户还包括账户的数据存储和代码。虽然账户或状态中存储数据,但是这些数据均不在链上存储,只在区块头保留数据的根哈希。也就是说,这里的数据大小并不影响区块大小。对外部账号(EOA)的交易主要是改变账户的余额,而对合约账户的交易是为了触发智能合约代码,在以太坊虚拟机(EVM)中执行后改变账户状态。
交易是如何实现状态转换的?
一笔交易包含的数据有:
那么,交易是如何实现状态转换的呢?
传递价值和发送数据
一个账户可以通过发送一笔交易到一个外部账户或合约账户传递价值;
同样,EOA和合约账户还可以通过交易发送数据到另一个合约账户来调用合约中的方法或者创建一个智能合约。
这种通过发送数据完成状态的转换,是通过运行合约代码计算完成的。而EVM就是以太坊网络的CPU,合约源代码(如solidity代码)经过编译转换为机器可读的字节码(bytecode),即EVM指令(instruction),来进行具体栈的操作——计算。
合约单月创建量,duneanalytics.com
面对每月百万级的合约创建量,如果我们能将这些交易中的数据量降下来,对区块瘦身以及系统可扩展性必将大有裨益。
总结:
以太坊区块正是为了记录交易数据而将它们打包在一起。而交易数据中除了与合约相关的“数据”项外,其它项的长度没有压缩空间,而且在交易数据中占的体积不大。
所以,针对挖矿节点,我们提出通过把IPFS作为以太坊的存储Layer 2,托管合约代码,降低区块大小。将更多交易打包进区块,降低交易手续费,增加可扩展性。
以上,我们给出了IPFS和以太坊的结合点,那么究竟该如何实现?将在文章的下半部分做出说明。
Scan QR code with WeChat