本文详细介绍了Starknet/Cairo中三种哈希函数:Pedersen、Poseidon和Keccak-256。
本文详细介绍了Starknet中的系统调用(syscalls),包括存储读写、跨合约调用、部署合约、事件日志、区块哈希、执行上下文、类哈希、库调用、合约升级、Keccak-256、SHA-256、L1消息发送以及meta_tx_v0。每个syscall都与Solidity中的对应操作进行对比,并提供了完整的函数签名、参数说明和代码示例。文章还解释了Cairo中存储地址的哈希计算方式,以及如何通过低层级syscall访问任意存储槽。
本文详细讲解了逆数论变换(INTT)的手工计算方法。通过将多项式插值重新解释为对另一个多项式的评估,利用快速算法(类似NTT)避免矩阵乘法,将时间复杂度从O(k²)降至O(k log k)。文章以4阶多项式为例,展示了如何通过分组奇偶项和利用单位根性质进行递归计算,并验证了与范德蒙矩阵方法的一致性。最后推广至任意2的幂次阶多项式。
本文详细介绍了在Starknet上部署ERC-20合约的完整流程,包括使用Starknet Foundry(sncast)和Starknet.js两种方法。内容涵盖账户设置、合约类声明、实例部署以及与部署后合约的交互。提供了清晰的代码示例和截图,适合希望学习Starknet开发的人员。
本文详细介绍了Starknet上跨合约调用的两种方式:使用合约调度器(常规和安全)以及直接调用call_contract_syscall。通过银行合约示例展示了如何调用ERC-20代币合约的transfer和transfer_from函数,并对比了与Solidity的相似性。安全调度器允许捕获错误而不回滚整个交易,但系统级失败仍会导致回滚。文章推荐使用调度器进行类型安全的调用,仅在特殊需求时使用直接syscall。
本文证明了一个关键性质:对于由本原k次单位根ω生成的范德蒙德矩阵V(ω),其逆矩阵是1/k乘以另一个范德蒙德矩阵V(ω⁻¹)。通过两种方式证明:1) 直接矩阵乘法,利用单位根的正交性得到单位矩阵;2) 通过系数向量与多项式求值的变换,验证两次变换后恢复原系数。该性质是数论变换(NTT)逆变换的基础。
本文是《零知识书》中关于逆数论变换(INTT)的章节,详细解释了如何将多项式从点值形式(单位根上的求值)转换回系数形式(插值)。通过Vandermonde矩阵和其逆矩阵的乘法进行推导,以四次单位根为例,验证了逆矩阵的正确性,并推广到一般k次单位根的情形。
本文深入介绍了Starknet的原生多调用(Native Multicall)技术,它允许将多个合约调用捆绑为一个原子交易,从而解决传统DApp中批准和交换分开执行导致的安全和效率问题。文章从底层原理出发,解释了账户合约的__execute__函数如何接收Call数组,并通过starknet.js演示了如何实现代币批准和存款的原子操作。通过实际部署RareToken和RareBank合约,读者可以完整地体验一次原子交易的全过程。
本文详细介绍了 Starknet 上的原生账户抽象(Account Abstraction)实现。
本文详细介绍如何在Starknet上使用Cairo语言集成Pragma预言机,实现一个基于STRK价格条件的简单金库合约。文章从Pragma的两层数据聚合机制(数据源与发布者)讲起,逐步构建合约:定义接口、处理ERC20转账、使用Pragma的get_data_median获取中位价格,并通过价格阈值控制提款。最后展示合约部署、存款、查询价格和提款的全流程交互,并指出可扩展至动态NFT、借贷协议等场景。
get_data_median