diff --git a/learn/Nakiswen/Nakiswen.md b/learn/Nakiswen/Nakiswen.md new file mode 100644 index 000000000..693d75370 --- /dev/null +++ b/learn/Nakiswen/Nakiswen.md @@ -0,0 +1,12 @@ +# Mina zkApp 训练营 + + +#### 个人信息 + +- github Nakiswen +- OpenBuild 注册邮箱:c1hotvip@gmail.com +- Mina 钱包地址:B62qjZeawsLZY8QWEnrQe6Z5MptxVvb9th4Aa9acqj6RRrTcjT79via + +#### 自我介绍 + +- 资深前端工程师,想学习web3行业相关知识并期待往web3行业转型。 diff --git a/learn/Nakiswen/task1/task1.md b/learn/Nakiswen/task1/task1.md new file mode 100644 index 000000000..cfab53227 --- /dev/null +++ b/learn/Nakiswen/task1/task1.md @@ -0,0 +1,50 @@ +## 1.概述Mina所采用的证明系统(包括名称、特点) +Mina 使用的是 PLONK(Permutations over Lagrange-bases for Oecumenical Noninteractive arguments of Knowledge)证明系统的一个变体,具体为 Kimchi 证明系统,kimchi为zk-SNARKs家族中的一员。其主要特点包括: + +* 通用性:Kimchi 是一个通用的零知识证明系统,可以证明任意计算的正确性 +* 高效性:相比原始 PLONK,Kimchi 在证明生成时间和验证时间上都有显著改进 +* 可定制性:支持自定义门电路和查找表,使得证明系统更加灵活 +* 安全性:基于离散对数假设,具有良好的密码学安全性 +* 高度优化:专门针对 Mina 的递归证明需求进行了优化 + +## 2.概述递归零知识证明在 Mina 共识过程中的应用 + +#### a) 区块链状态压缩 + +每个新区块都会生成一个证明,证明包含了之前所有状态转换的有效性 +新的证明可以验证旧的证明,形成递归证明链 +这使得验证节点只需要保存最新的证明(约 11KB)即可验证整个链的历史 + +#### b) 共识过程中的应用 + +区块生产者在生成新区块时,需要生成证明证明: + +之前的状态转换是有效的 +新的交易执行是正确的 +整个状态更新符合协议规则 + + +验证者可以通过验证最新的证明来确认整个链的有效性 +递归证明保证了即使不存储完整历史,共识的安全性依然得到保证 + +#### c) 具体实现机制 + +使用 OCaml 语言编写的电路来描述状态转换规则 +通过 Kimchi 证明系统生成零知识证明 +证明的递归性质允许将之前的证明作为新证明的输入 +整个过程保持了零知识性,不泄露具体的状态信息 + +这种基于递归零知识证明的设计使得 Mina 能够保持恒定大小(约 22KB)的链状态,同时保证了完整的安全性和去中心化特性。这是一个突破性的创新,为区块链扩容提供了新的思路。 +值得注意的是,这种递归证明体系虽然在存储效率上有巨大优势,但也带来了较高的计算开销,这是目前 Mina 正在持续优化的方向。 + + +## tx hash + +XwxqfCXvLzrdVuKgXorYEswDVgoa7EacmvPij1CUjcStT + +### 递归零知识证明验证流程 + +- 1.将问题转换成电路描述(用o作写电路代码)。 +- 2.将电路编译(complie) 成plonkish格式 同时生成PK(proving key), Vk(verifying key)。 +- 3.证明者使用函数 Prove 函数生成证明(Proof)。 +- 4.验证者使用 Verify 函数,验证proof的的真假。 \ No newline at end of file diff --git a/learn/Nakiswen/task1/tx-hash.png b/learn/Nakiswen/task1/tx-hash.png new file mode 100644 index 000000000..1f06a56f9 Binary files /dev/null and b/learn/Nakiswen/task1/tx-hash.png differ diff --git a/learn/Nakiswen/task1/wallet.png b/learn/Nakiswen/task1/wallet.png new file mode 100644 index 000000000..3b24a81b4 Binary files /dev/null and b/learn/Nakiswen/task1/wallet.png differ