以太坊交易
- eth_call 读取链上状态或者调用不用改写状态的函数(view/pure),不需要消耗gas
- eth_sendTransaction 需要改写区块链的状态,需要消耗gas
gas 计算
- 以太坊目前平均区块大小保持在1500w gas
- 以太坊区块大小上限为3000w gas
- 以太坊单笔最小交易需要占用2.1w gas
- 以太坊出块时间为14秒作用(以太坊最大每秒处理交易量为102)
不可能三角
- 安全性
- 去中心化
- 可拓展性
如何扩容区块链
layer2是一个建立在layer1(主要是以太坊)之上的网络,不同于layer1项目,layer2可以继承layer1的安全性,从而在可拓展性上进行扩展。目前的layer2主要是指rollups技术。
什么是Rollups
- 链下执行:将执行以及状态维护等消耗大量资源的操作放在链下
- 链上存档: 链上只存交易的输入(calldata)
交易所需要花费的gas有三部分组成:
- calldata (交易输入)
- computational(计算)
- storage(存储)
如果在L1上做交易,则成本会很高(计算和存储的成本很高)
如果在L2上做交易,计算和存储被转移到链下,只需要calldata正确,就能获取正确的状态。因为计算和存储放到链下,他的成本会很低,而且交易的速度也会比较快。
Rollups分类
- Optimistic Rollups 使用有效性证明来保证安全性,提款需要7天等待期,链下计算开销低
- Zk Rollups 使用欺诈证明来保证安全性,在证明被提交至layer1后即可提款,链下计算开销高(需要生成加密证明)
layer2相关的名词解释
- fullnode(全节点):拥有layer2网络的状态,并不断监听更新,同时可以转发用户交易
- sequencer:layer2上的交易排序者,在收到用户的交易后有权直接确定用户的交易,进而给用户交易瞬时确认(会生成sequencer区块)
- calldata:交易调用数据,改数据作为用户对于区块链执行的输入,区块链收到后会按calldata的指定操作进行执行
- inbox合约:layer2交易的calldata存放在layer1的位置
- rollup合约:管理arbitrum rollup协议的合约,会生成rollup区块
- sequencer链:由sequencer提议的状态链,与layer1的链类似
- rollup链:质押状态,保证状态正确的链。并能在该链上进行欺诈证明
架构图
sequencer chain 是抽象出来的与其他区块链一样的链式数据结构
Rollups chain 为验证者质押链