Constantine是一个高性能密码学库,专注于区块链协议和零知识证明系统。它提供常数时间实现的密码学原语,支持多种椭圆曲线和协议,包括以太坊BLS签名、KZG承诺等,并提供Nim、C、Rust、Go等多种语言的接口。该库旨在提供快速、紧凑和强化的椭圆曲线密码学解决方案。
Flashbots 发布了 Builder Playground,这是一个开源框架,用于快速启动 L1 和 L2 的全面区块构建测试环境。它通过简化部署、优化性能和降低认知负荷,解决了现有工具在速度、灵活性和复杂性方面的挑战,旨在提高区块构建测试的效率和可靠性。
CREATE2是以太坊的一条EVM指令,用于部署智能合约。与传统的CREATE指令不同,CREATE2允许通过计算得到合约地址,而不是依赖发送方的nonce。这种方式使得合约地址在部署之前就可以被预测,方便一些高级用例,例如「工厂模式」和「合约钱包的预部署地址」。
本文介绍了如何在 Backpack 钱包中使用自定义 Solana RPC,以提高速度和可靠性,尤其是在使用 Devnet 或 Mainnet 进行开发时。文章详细说明了如何注册 Helius 并获取 API 密钥,以及如何在 Backpack 钱包中配置和切换到自定义 RPC URL。此外,还包括了获取免费 Devnet SOL 代币的方法和安全提示。
本文介绍了如何在Monad测试网上使用Blinks创建一个NFT minting界面。结合Monad的高性能和Blinks的可嵌入链接特性,简化了用户与区块链NFT的交互流程。文章详细阐述了Blinks的架构,并指导开发者如何配置Monad scaffold项目,将NFT minting逻辑集成到Blink中,最终实现通过一个可分享的URL直接在用户的钱包中完成NFT铸造。
我们监测到 Bybit Cold Wallet 发起⼀笔⼤额转账,转出 401,346 ETH 价值约 1.5 BillionUSD 。经过多⽅确认,确定这是⼀起针对 Bybit 的攻击。
本文用简洁的语言,通过最少的代码、丰富的示例图,来清晰地呈现Solidity语言的语法特性。帮助你一小时之内熟悉 Solidity 的语法特性,适合初学者学习借鉴。
在Solana链上管理代币时,放弃不必要的权限能大大提升代币的去中心化程度,增强项目的透明度和社区的信任。开发者或项目方可以通过SlerfTools工具轻松放弃代币的权限,比如更新权限、冻结权限和铸币权限。
本文介绍了 Circom 编程语言,它用于创建 Rank 1 Constraint Systems (R1CS) 并填充 R1CS 的 witness 向量,主要是为了简化约束系统的设计和自动化 witness 的生成。文章还解释了 Circom 存在的意义,以及它如何帮助开发者更轻松地进行零知识证明相关的开发,最后说明了学习 Circom 的理由,并概述了资源结构,包括语法和约束设计。
本文介绍了Circom代码与其编译成的Rank 1 Constraint System (R1CS)之间的关系,并通过几个例子详细解释了如何在Circom中编写约束,以及如何使用Circom命令行工具编译电路、生成witness,并验证电路的正确性。文章还介绍了zkRepl在线IDE的使用,以及Circom中有限域的概念,以及如何将snarkjs导出的R1CS约束转换为Circom中的原始约束。
本文介绍了Circom中定义Rank 1约束系统(R1CS)的基本语法,包括模板参数的使用、循环和变量的声明与应用、以及如何在满足特定条件时生成约束。此外,还强调了在Circom中约束必须是静态的,不能依赖于信号动态改变,但变量可以作为常量参与R1CS运算,并解释了if语句在Circom中的使用限制,着重介绍了 variables 的使用方法,以及 signals 的使用限制。
if
本文介绍了Circom中Rank 1约束系统的规则,即每个约束最多只能有一个信号间的乘法,超过则会报错。文章通过正反例解释了这一规则,并说明了常量乘法、加法、减法是被允许的。此外,还解释了Circom如何处理除法,以及为何数组索引、模运算、左移等操作不被允许。最后总结了约束系统的限制,并提及了绕过这些限制的设计模式。
本文介绍了Circom中的符号变量,它是被赋值为信号值的变量,常用于在循环中对信号求和。文章解释了符号变量的定义、使用场景,例如校验数组求和、校验二进制表示,以及如何避免因符号变量导致的二次约束冲突。此外,还阐述了非符号变量在模运算和位移操作中的使用限制,以及符号变量在循环边界和条件判断中的禁用。
本文介绍了 Circom 中的 <== 和 ==> 操作符,它们用于在电路中自动计算和赋值中间信号,从而避免手动提供所有信号作为输入。文章还展示了如何使用模板将电路拆分成更易于管理的模块,以及如何在组件之间传递结果。此外,还强调了组件的输出信号必须被约束使用,以防止恶意证明者篡改。
<==
==>
本文介绍了在 Circom 中使用 indicator signals 和 Circomlib comparator library 来实现复杂约束条件的方法。
本文介绍了零知识电路中的“计算后约束”设计模式,它首先在没有约束的情况下计算算法的正确输出,然后通过强制执行与算法相关的约束来验证解决方案的正确性。
本文介绍了在 Circom 中如何在循环中使用组件。由于 Circom 不允许在循环中直接实例化组件,文章提供了通过预先声明组件数组并在循环内指定组件类型的方式来解决这一问题,并提供了三个实际案例:求数组最大值、检查数组是否已排序以及确保数组中所有元素都是唯一的,展示了如何在循环中有效地使用 Circom 组件,以及一些使用 circom 的小技巧。
本文深入探讨了 Circom 中 if 语句的使用限制,明确指出信号不能用于改变 if 语句的行为,也不能在依赖于信号的 if 语句中赋值。
本文介绍了Quin Selector这一设计模式,它允许使用信号作为信号数组的索引。文章通过代码示例,展示了如何在Circom中实现Quin Selector,并讨论了优化方法。同时,文章还提到了Circomlib库中的multiplexer组件,它可以实现类似的功能,并提供了一个使用示例。最后,文章提到了该算法的历史渊源。
文章介绍了在算术电路中进行迭代计算(如幂、阶乘或计算斐波那契数列)时,如何通过预先计算所有可能的值并使用 Quin 选择器来解决条件停止的问题。文章通过阶乘和斐波那契数列的例子,展示了如何在 Circom 中实现这种方法,并强调了约束的重要性,最后提供了一个关于幂运算的练习。
扫一扫 - 使用登链小程序
114 篇文章,705 学分
388 篇文章,475 学分
67 篇文章,425 学分
118 篇文章,352 学分
163 篇文章,339 学分