appliedzkp的zkevm(2)Bus mapping

1. 引言

state proof和EVM proof之间需要通信,需借助某种accumulator来实现。
若使用Merkle tree的话,需为每个opcode额外增加1000个constraints。
因此,zkevm中选用了bus mapping ——》a plookup key value mapping。

为VM构建snark的难点之一是:需要能随时读随机值或随机opcode。因此,为了解决该问题,需要使用key-value mappings。key value mappings为basically random linear combination of all elements。

2. plookup key-value mappings

在plookup中,可按如下方式构建key-value mappings:

def build_mapping():
    keys = [1,3,5]
    values = [2,4,6]
 
    randomness = hash(keys, values)
    
    mappings = []

    for key , value in zip(keys,values):
        mappings.append(key + randomness*value)
    return(mappings)

相应的open cost为3个plookups:

def open_mapping(mappings, keys, values):
    randomness = hash(keys,values)
    index = 1
    # Prover can chose any mapping, key , value
    mapping = plookup(mappings)
    key = plookup(keys)
    value = plookup(values)
    # But it has to satisfy this check
    require(mappings[index] == key[index] + randomness*value[index])
    # with overwhelming probablitiy will not find an invalid mapping.

3. Bus mapping

bus_mapping[global_counter] = {
    type_flag = ["stack", "memory", "storage"], 
    rw_flag,
    key, 
    value, 
    index: opcode,
    call_id: call_id,
    prog_counter: prog_counter
}

该bus mapping为Prover的witness。在EVM proof中,需确保Prover不会包含额外的变量。为此,需限制L1 EVM中的degree,同时在EVM proof中对每个单独的element进行检查。

对该bus mapping的commitment值为state proof和EVM proof的public input。

会将state proof中variables的commitments发送给evm proof。

bus mapping更低的degree意味着可同时verify更多的op。目前有四种设计方案,具体采用哪种会根据实际实现的evm circuit进行优化。【同时,下述方案中的compress可去除,因为 halo2 中已做了相应实现。】

3.1 bus mapping方案一

为evm circuit引入2个bus mapping entry:

  • DUP2.READ
  • DUP2.WRITE

在这里插入图片描述

3.2 bus mapping方案二

在方案一的基础上,额外引入了witness comp,使得只需要一个bus mapping entry。
由于无法对图中绿色box进行partial lookup,因此DUP2.WRITE无法保证DUP2.READ存在。
在这里插入图片描述

3.3 bus mapping方案三

在方案二的基础上增加了 inner bus mapping来支持partial bus mapping lookup。
在DUP2.WRITE row,若其lookup发现黄色box存在,则同时lookup绿色box,lookup方式为: 蓝 色 b o x + ( 黄 色 b o x − g c ⋅ r ) ⋅ r 3 蓝色box + (黄色box - gc \cdot r)\cdot r^3 box+(boxgcr)r3
在这里插入图片描述

3.4 bus mapping方案四

在方案三的基础上,去掉comp witness。因为可要求DUP2.WRITE知道其write操作。所以第一个lookup对应为 ( g c , k e y + 2 , v a l , R E A D ) (gc, key+2, val, READ) (gc,key+2,val,READ),第二个lookup同方案三。
在这里插入图片描述

参考资料

[1] https://hackmd.io/HfCsKWfWRT-B_k5j3LjIVw
[2] https://hackmd.io/AmhZ2ryITxicmhYFyQ0DEw

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值