Polygon zkEVM Merkle tree的circom约束
admin
2024-02-27 01:46:26
0

1. 引言

前序博客有:

  • Polygon zkEVM中的Merkle tree
  • Polygon zkEVM中Goldilocks域元素circom约束

代码见:

  • https://github.com/0xPolygonHermez/pil-stark/tree/main/circuits.gl

2. Poseidon哈希circom约束

3. LinearHash circom约束

template LinearHash(nInputs, eSize) {signal input in[nInputs][eSize]; //输入in元素数为nInputs*eSizesignal output out[4];var nHashes;if (nInputs*eSize <= 4) {nHashes = 0;} else {nHashes = (nInputs*eSize - 1)\8 +1;}component hash[nHashes];if (nInputs*eSize <= 4) {var curI=0;var curE=0;for (var i=0; i<4; i++) {if (i0) {hash[i].capacity[k] <== hash[i-1].out[k];} else {hash[i].capacity[k] <== 0;}}}for (var k=0; k<4; k++) {out[k] <== hash[nHashes-1].out[k];}}
}

4. Merkle tree circom约束

template Merkle(nLevels) { //nLevels表示树高度signal input value[4]; //叶子节点数据对应4个Goldilocks元素signal input siblings[nLevels][4]; //每个节点哈希值对应4个Goldilocks元素signal input key[nLevels]; //key数组表示所在各层的位置signal output root[4];component hash[nLevels];for (var i=0; i0) {hash[i].in[k  ] <== key[i]*(siblings[i][k]   - hash[i-1].out[k]) + hash[i-1].out[k];hash[i].in[k+4] <== key[i]*(hash[i-1].out[k] - siblings[i][k]  ) + siblings[i][k];} else {hash[i].in[k] <== key[i]*(siblings[i][k]   - value[k]        ) + value[k];hash[i].in[k+4] <== key[i]*(value[k]         - siblings[i][k]  ) + siblings[i][k];}hash[i].capacity[k] <== 0;}}for (var k=0; k<4; k++) {root[k] <== hash[nLevels-1].out[k];}}

5. MerkleHash circom约束

MerkleHash本质为:以values、siblings、key为输入,以root为输出,验证相应的Merkle证明与root是否匹配。
s0_merkle1[q] = MerkleHash(1, 2, 2048)=MerkleHash(eSize, elementsInLinear, nLinears) 为例:

  • 1)eSize:表示单个数据所需的Goldilocks元素数
  • 2)elementsInLinear:表示叶子节点对应的数据数
  • 3)nLinears:表示Merkle树中总的节点树
template MerkleHash(eSize, elementsInLinear, nLinears) {var nBits = log2(nLinears); //2^11=2048,nBits为Merkle树高度assert(1 << nBits == nLinears); //要求nLinears为2的某幂次运算signal input values[elementsInLinear][eSize]; //values[2][1]signal input siblings[nBits][4]; //Merkle证明路径,每个节点为哈希值对应4个Goldilocks元素。signal input key[nBits];  //key数组表示所在各层的位置signal output root[4];//对 叶子节点下原始数据进行处理,为4个Goldilocks元素。component linearHash = LinearHash(elementsInLinear, eSize);for (var i=0; i

6. TreeSelector

s0_lowValues[q] = TreeSelector(4, 3) ;为例,表示:

template TreeSelector(nLevels, eSize) {var n = 1 << nLevels;signal input values[n][eSize];signal input key[nLevels];signal output out[eSize];signal im[n-1][eSize];var levelN = n\2;var o = 0;var lo = 0;for (var i=0; i

附录:Polygon Hermez 2.0 zkEVM系列博客

  • ZK-Rollups工作原理
  • Polygon zkEVM——Hermez 2.0简介
  • Polygon zkEVM网络节点
  • Polygon zkEVM 基本概念
  • Polygon zkEVM Prover
  • Polygon zkEVM工具——PIL和CIRCOM
  • Polygon zkEVM节点代码解析
  • Polygon zkEVM的pil-stark Fibonacci状态机初体验
  • Polygon zkEVM的pil-stark Fibonacci状态机代码解析
  • Polygon zkEVM PIL编译器——pilcom 代码解析
  • Polygon zkEVM Arithmetic状态机
  • Polygon zkEVM中的常量多项式
  • Polygon zkEVM Binary状态机
  • Polygon zkEVM Memory状态机
  • Polygon zkEVM Memory Align状态机
  • Polygon zkEVM zkASM编译器——zkasmcom
  • Polygon zkEVM哈希状态机——Keccak-256和Poseidon
  • Polygon zkEVM zkASM语法
  • Polygon zkEVM可验证计算简单状态机示例
  • Polygon zkEVM zkASM 与 以太坊虚拟机opcode 对应集合
  • Polygon zkEVM zkROM代码解析(1)
  • Polygon zkEVM zkASM中的函数集合
  • Polygon zkEVM zkROM代码解析(2)
  • Polygon zkEVM zkROM代码解析(3)
  • Polygon zkEVM公式梳理
  • Polygon zkEVM中的Merkle tree
  • Polygon zkEVM中Goldilocks域元素circom约束

相关内容

热门资讯

银行板块震荡上扬 中国银行等股... 观点网讯:7月8日,银行板块震荡上扬,中国银行、农业银行、建设银行、成都银行、工商银行等股纷纷上扬。...
AI Agent进入深水区:企... AI Agent从技术概念走向商业落地,企业付费意愿成为检验产品价值的唯一标准。过去两年大量AI创业...
一通智投APP内幕交易欺骗投资...   一通智投APP虚假现货订购交易为非法期货,投资者被宣传广告给诱导,下载了一通智投APP,结果在这...
港股科技股全线大涨!跌多了是基... 港股市场近日整体有明显反弹的科技股今日再度集体走强,恒生科技指数拉升涨超3%。个股中,联想涨超8%,...
一场博览会,看透低空经济风口全... 文丨许佳慧 低空经济风起,谁是真正的弄潮儿? 【观赛道:题材风口开启,全链布局成型】 低空经济有多火...
黄金单边牛市没那么快回来?预测... 黄金这波反弹刚冒头,没人敢直接砸重仓赌方向。Polymarket上的交易显示,黄金7月触及4300美...
超颖电子布局“A+H”:一季度... 瑞财经 吴文婷7月6日,超颖电子发布公告称,为满足公司业务发展需要,深入推进国际化战略,打造国际化资...
偏袒?阿根廷球员扇耳光+飞铲无... 北京时间7月8日,2026年世界杯1/8决赛,阿根廷3-2逆转埃及晋级八强。不过,本场比赛的判罚在赛...
原创 高... 在国际关系的复杂棋局中,盟友与对手从来都不是一成不变的。最近,俄罗斯通过中间渠道从日本进口航空燃油的...
优质药食同源食材选购指南:甘草... 在现代保健理念中,药食同源的概念越来越受到重视。许多人开始关注如何选购优质的药食同源食材,以便更好地...
AI产业进展提振信心,科创创业... 截至7月8日11点15分,上证指数涨0.28%,深证成指跌0.28%,创业板指涨0.51%。油气开采...
将多色3D打印提速5倍,消费级... 消费级3D打印企业快造科技(Snapmaker)近日完成10亿元C轮融资。本轮由凯辉基金领投,好未来...
“物理AI第一股”来了!Mom... 2026年7月8日,全球领先的物理AI公司Momenta正式在港交所挂牌上市,股票代码为6880.H...
投资需求增长的核心动力是什么? 在金融市场中,投资需求的增长受到多种因素的综合推动,这些因素构成了投资需求增长的核心动力。 首先,经...
苏州得鹿食品有限公司成立 注册... 天眼查App显示,近日,苏州得鹿食品有限公司成立,法定代表人为周锋,注册资本50万人民币,经营范围为...
刚刚,又一家厦门企业在港股上市... 最新消息! 厦门又迎来一家上市公司! 7月8日 厦门瑞为信息技术股份有限公司 (以下简称“瑞为技术”...
韩国综合指数转涨,盘初一度跌近... 8日,韩国综合指数转涨,一度涨超1.6%,现涨0.7%,盘初一度跌近4%。个股方面,SK海力士涨近4...
原创 7... 四千多欧洲人因为高温没了命,大半是装不起买不起空调的独居老人。现在老百姓抢着买能解决问题的中国空调,...
【明辉说油】美国撤销对伊朗石油... 市场讯息:7月7日(周二),美国取消对伊朗的售油豁免期,且伊方表示美国违反停火协议加剧紧张氛围,国际...