本文主要针对Plogyon 链进行介绍
Polygon PoS 是以太坊的 EVM 兼容型权益证明侧链,具有高吞吐量和低成本的特点。
Polygon PoS 是锚定在以太坊上的第二层(L2)记账证明网络,由以下两层组成:
CometBFT CometBFT 由两个主要技术组件组成:区块链共识引擎和通用应用程序接口。 共识引擎基于 Tendermint 共识算法,可确保每台机器上记录的交易顺序相同。 被称为应用区块链接口(ABCI)的应用接口将交易传送给应用程序进行处理。 与其他预装内置状态机(如花哨的键值存储或古怪的脚本语言)的区块链和共识解决方案不同,开发人员可以使用 CometBFT 对以任何编程语言和开发环境编写的应用程序进行 BFT 状态机复制。
以下循环工作流程概述了当今 Polygon PoS 架构的运行机制:
https://docs.polygon.technology/pos/
Polygon zkEVM 是以太坊虚拟机(EVM)的第 2 层网络,是一种零知识(ZK)滚动扩展解决方案。
各个存储位置的含义
合约中前四个状态变量都是 uint64 类型的,则四个状态变量的值会被打包成一个 32 字节的值存储在 0 位置。
对于代下载32字节以内的结构体同样也是顺序存储。
例如结构体变量索引定义在位置 0,结构体内部有两个成员,则这两个成员的依序为 0 和 1
map 存储位置是通过 keccak256 (bytes32(key) + bytes32(position) ) 计算得到的,position 表示 key 对应 storage 类型变量存储的位置。
同上,只要在 32 字节以内也是顺序存储,不过在编译时编译器会进行边界检查防止越界。
由于可变长度数组长度不定,一般在编译可变长度数组时候会提前预留存储空间,所以就会使用状态变量的位置存储数组的长度。 具体的数据地址会通过keccak256(bytes32(position))算出数组首地址,再加数组长度偏移量获得具体的元素。
理论的最大值是
当节数组和字符串长度大于31字节时
viem 是一个用于与以太坊区块链进行交互的 JavaScript 库。它提供了一个简单且高效的 API,用于执行各种以太坊相关操作,如发送交易、调用智能合约、监听事件等。