fhEVM 创世(Genesis)指南:FHEVM-native 链启动时的合约预置与 FHE 密钥准备
fhEVM 创世Genesis指南FHEVM-native 链启动时的合约预置与 FHE 密钥准备【免费下载链接】fhevmFHEVM, a full-stack framework for integrating Fully Homomorphic Encryption (FHE) with blockchain applications项目地址: https://gitcode.com/GitHub_Trending/fh/fhevmFHEVM-native 区块链在启动、执行 FHE 计算之前必须在创世阶段解决两类前置依赖一是可供 EVM 执行符号计算的协议合约如 FHEVMExecutor、ACL 等是否就位二是 Executor 侧执行同态运算所需的 FHE 密钥材料是否可用。本文基于 fhEVM 仓库 coprocessor/docs/fundamentals/fhevm/native/genesis.md 展开结合协议合约与 FHEVM-native 架构说明链启动时的合约 密钥双维度准备流程帮助你理解创世块与第二个块之间的部署窗口、FHE 公钥的分发方式以及验证节点/全节点为何可以本地缓存 FHE 公钥。一、创世阶段的核心问题FHEVM-native 是一条内置 FHE 执行能力的区块链区块执行被拆分为**符号执行Symbolic Execution与FHE 计算FHE Computation**两段前者在 EVM 内通过 FHEVMExecutor 合约积累 FHE 操作及其输入/输出句柄后者由独立的 Executor 组件完成真正的同态运算。因此一条 FHEVM-native 链要跑得起来在创世时就必须满足两个前提合约前提链上存在执行符号执行所需的协议合约密钥前提Executor 拥有执行同态计算所需的 FHE 密钥材料最典型的是 FHE 公钥。genesis.md 正是针对这两个前提给出的简短规范说明本节先总览其要点后续小节再结合源码与配套文档逐一展开。二、合约创世块与第二块部署窗口2.1 哪些合约需要在链创建时就位关于创世时需要哪些合约genesis.md 直接引用了 Contracts 一节。后者列出了 FHEVM 协议层的关键合约及其职责合约核心职责仓库中的实现FHEVMExecutor符号执行的载体确定性生成密文句柄H keccak256(fheOperation, input1, ..., inputN)被链上节点以已知地址方式识别host-contracts/contracts/FHEVMExecutor.solACL密文访问控制以handle → 允许地址集合的映射决定谁可以使用某个密文host-contracts/contracts/ACL.solKMSVerifier供任意 dApp 校验收到的解密结果verifyDecryptionEIP712KMSSignatureshost-contracts/contracts/KMSVerifier.solInputVerifier校验用户输入新密文时的签名verifyInputhost-contracts/contracts/InputVerifier.solHCULimit按 Homomorphic Complexity Units 跟踪每笔交易的 FHE 计算量并超限回滚host-contracts/contracts/HCULimit.sol注contracts.md 中说明这些合约初始均部署在 UUPS 代理之后可由其 owner 随时升级只有 owner 放弃所有权后协议才可被视为不可变。这意味着创世时的合约地址通常是代理地址well-known address实现逻辑可在后续升级。2.2 不必在创世块第二块窗口的意义genesis.md 特别强调了一个灵活的部署窗口Strictly speaking, these contracts dont have to be available in the genesis block and can be deployed in the second block of the chain, at runtime.也就是说协议合约不必硬编码进创世块的 state完全可以由链创建流程在第二个块中以普通交易方式部署到运行时。这样做的好处是创世块的构造可以保持精简避免将合约字节码静态烘焙进创世配置部署逻辑可以复用标准的合约部署工具链如 foundry、hardhat并利用 UUPS 代理模式先部署代理再部署实现链一旦产生第二个块FHEVMExecutor 等合约即处于已知地址节点即可按 FHE Computation 描述的机制在检测到对该地址的 CALL/STATICCALL 时截获 FHE 操作并累积到当块计算列表中。配套的架构文档 native/architecture.md 也印证了合约已知地址的假设每个验证者节点通过 execution API 与各自的 Executor 通信全节点则通过 RPC/WebSocket 向 Gateway 提供存储证明、密文读取与事件监听能力FHEVMExecutor 的well-known address正是这些组件协同工作的地址锚点。三、密钥FHE 密钥材料是链正常运行的前提3.1 为什么 Executor 需要 FHE 公钥genesis.md 明确指出FHE 相关密钥必须可用链才能正常运行。以最典型的 FHE 公钥为例Executor 需要它才能对加密数据执行计算——这正是FHE 计算阶段的核心动作区块内符号执行结束时EVM 将累积的 FHE 操作以SyncComputeRequest网络调用发给 ExecutorExecutor 读取请求中的输入密文用 FHE 公钥以及配套的服务器计算密钥 server key执行同态运算结果以SyncComputeResponse返回EVM 再将其中的sstored句柄对应密文持久化上链。相关流程细节可参见 native/fhe_computation.md 中的时序图与说明。3.2 密钥材料的真实形态仓库中的 fhevm-keys仓库中确实存在一份可供链启动时加载的密钥材料目录 coprocessor/fhevm-engine/fhevm-keys/其内容即为 TFHE 相关的各类密钥/参数文件文件说明依据文件名与工程惯例pks公钥集public keys供加密与验证使用sks私钥集secret keys用于解密等场景cks/sns_pk计算密钥集computing keys与相关公钥pp公共参数public parametersxof-keyset/xof-cksXOF 派生密钥集及其计算密钥在 tfhe-worker/docker-compose.yml 中可以看到该目录被挂载进 tfhe-worker 容器- ../fhevm-keys:/fhevm-keystfhe-worker/benches/utils.rs 中则展示了数据库无密钥时导入测试密钥的引导逻辑SELECT count(1) FROM keys判断后写入印证了密钥材料需要预先准备、而 worker 在缺失时会循环等待数据库中没有找到密钥这一事实。也就是说FHE 密钥既可以由链/Executor 启动流程预置相当于 native 场景的创世密钥也可以在 worker 运行前通过生成/导入方式就位。对于 FHEVM-nativeExecutor 进程可通过generate-keys之类的二进制生成密钥见 fhevm-engine-common/Cargo.toml 中定义的[[bin]] name generate-keys或直接加载上述fhevm-keys目录中的预生成材料。3.3 作为便利在验证者/全节点上缓存 FHE 公钥genesis.md 的最后一句给出一个实用建议As a convenience, the FHE public key can also be stored on validators/full nodes.FHE 公钥是公开材料缓存到验证者/全节点上带来的好处包括dApp 侧取钥便捷在 native/architecture.md 中dApp 通过fhevmjs与 FHEVM 交互从全节点获取 FHE 公钥是 fhevmjs 的典型用例之一。将公钥存储在节点上等于为 fhevmjs 提供了本地化、低延迟的取钥端点Gateway 交互优化Gateway 通过 RPC/WebSocket 连接全节点节点缓存公钥可减少 Gateway 侧为获取密钥材料而发起的额外请求无需每次链下生成公钥在链生命周期内通常保持稳定节点本地缓存避免了反复从密钥管理层拉取配合 contracts.md 中密钥材料经 KMSVerifier 验证的机制仍可保证公钥的可信性用户可在链上通过 KMSVerifier 校验。四、创世流程合约部署 密钥就位的最小清单综合以上分析可以将 FHEVM-native 链的创世准备归纳为一份可执行的检查清单确定链参数确认节点、Executor 组件与 execution API 的联通方式参见 architecture.md准备密钥材料通过generate-keys生成或从 fhevm-keys/ 加载 FHE 密钥将 FHE 公钥交付给 Executor并可同步缓存在验证者/全节点构建创世块创世块只需包含最小化的链配置——协议合约允许在第二个块以运行时交易方式部署第二块部署合约部署 FHEVMExecutor、ACL、KMSVerifier、InputVerifier、HCULimit均为 UUPS 代理形态使链上出现节点可识别的 well-known 地址验证运行确认 Executor 可响应SyncCompute、EVM 可将sstored句柄密文持久化并配合 storage.md 中的GetCiphertextselectorff627e77读取链路完成端到端自检。五、关联阅读合约体系与符号执行基础Contracts、Symbolic Execution原生链运行机制Architecture、FHE Computation、Storage用户输入与密钥校验Inputs密钥管理仓库中的 fhevm-keys 目录以及 fhevm-engine-common/Cargo.toml 中定义的generate-keys二进制【免费下载链接】fhevmFHEVM, a full-stack framework for integrating Fully Homomorphic Encryption (FHE) with blockchain applications项目地址: https://gitcode.com/GitHub_Trending/fh/fhevm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考