# Verification Layer

任何人都可以运行验证节点，以确保MEMO协议以去中心化且安全的运行，我们认为验证节点越多MEMO协议越安全。验证节点需要完成的任务包括：验证TEE认证结果，验证DA证明，验证零知识证明。MEMO的DA证明还支持链上验证。

## TEE认证结果验证

在计算层中TEE节点完成计算后，TEE节点需要将计算结果以及TEE认证结果一并发布到链上，并由验证节点订阅链上证明并验证链上证明后，该计算结果才是有效的。

## DA证明

在数据存储层中，当用户提交数据至Meeda的存储节点后，Meeda存储节点需要定期生成数据的可用性证明并聚合后发布到链上。Meeda采用乐观证明的机制，仅当验证节点发现存储节点生成的可用性证明有误时，验证节点会对存储节点发起挑战，要求其生成进一步的证明，并最终由链上合约验证证明的有效性。

## 零知识证明（Zero-Knowledge Proof）

MEMO 采用 zk-SNARK 的 Plonk 协议，并结合 KZG（Kate Polynomial Commitment） 作为验证机制，同时在以太坊的可信设置（trusted setup）中额外引入随机性，进一步提升了系统的安全性和灵活性。

通过对以太坊的可信设置添加额外的随机性，MEMO 的验证机制有效降低了单一可信设置中的潜在信任假设风险。即使原始可信设置中某些参数泄露，额外的随机性提供了额外保护。

Plonk 本身是一种通用、高效的 zk-SNARK 协议，支持较少的验证器和更快的证明生成。结合 KZG，可以进一步优化零知识证明的性能，在存储和计算资源的使用上更具优势。

采用 Plonk 的泛用性，使 MEMO 可以支持各种数据层中的复杂计算需求，而无需为每个具体场景重新构建证明机制。KZG 承诺方案提供了更高效的多项式承诺验证，特别适用于大型去中心化数据系统。

通过引入 zk-SNARK 的 Plonk 协议和 KZG 作为验证机制，并在以太坊可信设置上额外添加随机性，MEMO 提升了系统的安全性、效率和去中心化程度。这不仅优化了数据层的验证流程，也为更广泛的去中心化应用提供了高效、安全的基础设施支持。
