本文介绍了零知识电路中的“计算后约束”设计模式,它首先在没有约束的情况下计算算法的正确输出,然后通过强制执行与算法相关的约束来验证解决方案的正确性。
本文介绍了在 Circom 中如何在循环中使用组件。由于 Circom 不允许在循环中直接实例化组件,文章提供了通过预先声明组件数组并在循环内指定组件类型的方式来解决这一问题,并提供了三个实际案例:求数组最大值、检查数组是否已排序以及确保数组中所有元素都是唯一的,展示了如何在循环中有效地使用 Circom 组件,以及一些使用 circom 的小技巧。
本文深入探讨了 Circom 中 if 语句的使用限制,明确指出信号不能用于改变 if 语句的行为,也不能在依赖于信号的 if 语句中赋值。
本文介绍了Quin Selector这一设计模式,它允许使用信号作为信号数组的索引。文章通过代码示例,展示了如何在Circom中实现Quin Selector,并讨论了优化方法。同时,文章还提到了Circomlib库中的multiplexer组件,它可以实现类似的功能,并提供了一个使用示例。最后,文章提到了该算法的历史渊源。
文章介绍了在算术电路中进行迭代计算(如幂、阶乘或计算斐波那契数列)时,如何通过预先计算所有可能的值并使用 Quin 选择器来解决条件停止的问题。文章通过阶乘和斐波那契数列的例子,展示了如何在 Circom 中实现这种方法,并强调了约束的重要性,最后提供了一个关于幂运算的练习。
本文介绍了如何在Circom中交换信号列表中的两个信号,这是排序算法的重要子程序,并解释了在ZK电路中执行此操作的复杂性,由于信号的不可变性,需要创建一个新数组并将旧值复制到新数组,在特定条件下进行修改,文章还指出了代码中的一个错误,即未考虑s等于t的情况,并提供了修复方案,最后总结了在Circom中操作数组的通用模式。
本文详细介绍了如何在 Circom 中创建一个栈数据结构,以及如何使用零知识证明(ZK proofs)来验证栈的操作,包括 push、pop 和 no change。通过定义栈的最大高度和使用栈指针(stack pointer)来跟踪栈的使用情况,并详细描述了在不同操作下栈状态的转换和约束。
本文介绍了如何在零知识证明(ZK)电路中模拟32位算术运算,由于ZK默认数据类型是有限域元素,而实际计算常用32位、64位或256位数字,因此需要用域元素来模拟传统数据类型。文章详细讲解了32位范围检查、加法、乘法、除法与取模、位移以及位运算的实现方法,并提供了相应的Circom代码示例,同时还讨论了ZK EVM如何处理256位数字。
本文详细介绍了如何在 Circom 中实现 MD5 哈希算法,包括计算哈希值和约束其正确性。文章首先介绍了 MD5 哈希的原理和步骤,然后展示了如何在 Circom 中构建实现 MD5 哈希所需的各种组件,如位运算、循环左移、32 位加法以及初始填充。并通过一个python的例子,展示了MD5哈希的计算过程。
本文介绍了在零知识证明友好的哈希函数,重点介绍了Minimal Multiplicative Complexity (MiMC) 和 Poseidon 这两个流行的 ZK 友好哈希函数的工作原理和性能, 并对比了他们的优劣. 此外还提及了基于椭圆曲线的Pedersen哈希,并指出了以太坊基金会悬赏征集MiMC哈希碰撞,以及对Poseidon安全性的研究。
本文档介绍了使用排列参数证明两个列表包含相同的元素,但顺序可能不同的证明。
本文介绍了零知识虚拟机(ZKVM)的概念,它能创建零知识证明来验证机器指令的正确执行。文章通过一个简化的栈式ZKVM示例,展示了如何使用Circom实现基本的算术运算,并探讨了提高ZKVM效率的现代方法,如查找表和递归证明。 ZKVM在零知识Layer2区块链中至关重要,并可用于验证机器学习算法的正确执行。
本文介绍了如何在零知识电路中证明选择排序算法的正确执行过程。由于ZK电路中信号的不可变性,每次交换都需要创建一个新的列表快照。为此,文章详细展示了如何通过多个中间状态的转换来证明排序的正确性,包括查找子列表中最小值的索引、交换列表中的两个元素等关键步骤, 并提供相应的代码模版。
该报告深入分析了 Solana 上 Jito Tips 的使用情况,Jito Tips已经从 MEV 提取的小众工具演变为Solana 交易优先级排序的主要机制,成为 Solana 执行层的引擎。
本文解释了Solodit checklist中关于防范Griefing攻击的两项检查(SOL-AM-GA-1和SOL-AM-GA-2),Griefing攻击旨在干扰或阻止正常用户执行功能,攻击者通常会付出成本(如gas费)。文章通过具体合约代码示例展示了攻击原理和PoC,并提供了修复建议,强调开发者需要从对抗的角度去思考,验证外部交互,确保状态一致性。
该文档介绍了micro-zk-proofs库,一个用于并行创建和验证零知识SNARK证明的工具,它支持Groth16协议,并计划支持PLONK等。
“Payjoin” 是一种革命性的协议,让钱包可以相互沟通并创建出合作式的、更加智能也更高效的比特币交易。它提供了一种批量处理(batching)支付的技术,使用这种技术的交换和支付的处理者可以节约手续费、保护自己和用户的金融隐私,同时还能增加比特币的可扩展性。
本文档详细描述了以太坊协议升级的流程,包括从开发网络、测试网络到主网络的升级管理,以及安全审查、分叉准备、测试协议和沟通策略。旨在标准化升级过程,从而提高网络的安全性和稳定性,并概述了在升级失败情况下的事件响应计划,确保问题能够得到迅速解决。
玩转Web3:用Viem库实现以太坊合约部署与交互想一窥Web3开发的奥秘?以太坊智能合约是通往区块链世界的大门,而Viem库让你轻松迈出第一步!本文通过一个TypeScript脚本,带你从连接本地以太坊测试网到部署合约、实现交互,全程手把手实战。不管你是Web3新手还是想探
扫一扫 - 使用登链小程序
204 篇文章,749 学分
492 篇文章,682 学分
67 篇文章,605 学分
132 篇文章,571 学分
413 篇文章,494 学分