SuperAPI AI 工具集

snip-36

通用与其它

查看项目

更新于 10-16 06:22

技能介绍

用途:SNIP-36 允许在链下针对某个参考 Starknet 区块的状态执行一笔 INVOKE_TXN_V3,然后把 stwo-cairo 证明提交上链。证明在标准 v3 交易哈希后追加 proof_facts_hash,合约用 get_execution_info_v3_syscall 读取并校验。核心价值是把任意 Cairo 逻辑放到链下运行(重计算、隐私校验、游戏结果、属性证明),只把验证后的结果提交上链,不暴露私有输入。

主要能力:支持虚拟函数 create_proof,通过 send_message_to_l1_syscall 发出 L2→L1 消息作为证明输出;链上 verify_result 读取 proof_facts,重算消息哈希并断言 proof_facts[8] 一致后应用状态变更;可用 nullifier 模式做重放保护。proof_facts 布局中 [7] 为消息数量,[8] 为首条消息的 Poseidon 哈希。

使用方式:三步流程。CREATE 在链下构建已签名 INVOKE_TXN_V3,绝不广播,calldata 含 public_input 与 private_input;PROVE 由证明服务器执行 snip36 prove virtual-os,返回 proof、proofFacts、l2ToL1Messages,约 40-50 秒、约 18 GB 内存;VERIFY 链上执行 verify_call 并附带 { proof, proofFacts }。Scarb.toml 需设置 allowed-libfuncs-list.name = "all"。证明后端需克隆 snip-36-prover-backend,cargo build --release -p snip36-cli,运行 ./target/release/snip36 setup,并配置 STARKNET_RPC_URL、STARKNET_ACCOUNT_ADDRESS、STARKNET_PRIVATE_KEY、STARKNET_GATEWAY_URL、STARKNET_CHAIN_ID、PORT。前端通过 SSE 调用 POST /prove。

适用场景:重计算证明、隐私属性(年龄、白名单、投票权重)、可证明游戏、ZKThread 或分片状态转换。

限制:不适用于需正常广播和费用估算的标准交易;证明无法在浏览器运行,需原生二进制、磁盘和约 18 GB 内存;安全模型若要求 SNOS 原生验证则不适用。虚拟交易必须手动设置 resourceBounds,在线估算费用会泄露私有 calldata。需使用支持证明的 starknet.js 分支。L2→L1 的 to_address 对 SNIP-36 无实际投递用途。