本文介绍了Cairo中如何使用assert宏实现访问控制,对比了Solidity中的modifier,展示了如何在Cairo中使用函数和assert或assert!宏来限制函数访问权限,并详细讲解了 assert 和 assert! 宏的区别、使用方法和类型限制,通过示例和练习,帮助读者理解在Cairo中实现访问控制的方法。
assert
modifier
assert!
本文介绍了如何在 Cairo 中使用 OpenZeppelin 库来构建智能合约组件,并通过 OpenZeppelin Wizard 生成 ERC20 代币合约的代码框架,然后详细解释了如何导入和集成 OpenZeppelin 组件,最后编写测试用例来测试合约的功能,包括暂停、取消暂停和铸币等。
本文介绍了 Starknet Foundry 中用于 Cairo 智能合约测试的常用 cheatcode,包括 caller_address、block_timestamp、store、load 以及 revert 测试等,并对比了与 Solidity Foundry 类似功能的异同。
本文详细介绍了Cairo中合约存储相关的概念,包括starknet::Store trait、访问trait(如StoragePointerReadAccess、StorageMapWriteAccess等),以及如何在storage中使用基本类型、Map、Vec、结构体和枚举等。
starknet::Store
StoragePointerReadAccess
StorageMapWriteAccess
本文深入探讨了Uniswap V3中添加流动性的机制,重点介绍了position的概念以及如何在UniswapV3Pool合约中使用mint函数来增加流动性。文章还详细解释了positions映射如何存储position信息,以及如何计算position所需的token数量,最后说明了mint函数需要通过position manager合约来调用。
UniswapV3Pool
mint
positions
本文通过可视化方法,利用单位圆解释了 n 次单位根的性质,特别是当两个单位根的指数相差 n/2 时,它们互为加法逆元。文章通过图示和动画生动地展示了单位根的乘法和加法运算在单位圆上的几何意义,并解释了如何在单位圆上可视化同余关系。
本文介绍了在指数形式下求平方根的方法,特别是在单位根上的应用。文章解释了只有偶数次幂的单位根才能开平方,并展示了如何通过开平方操作将k次单位根转化为2k次单位根,同时提供了相关的示例和练习题。
当对偶数阶的单位根集合中的每个元素进行平方时,得到的新集合大小是原来的一半。文章通过举例和证明,详细解释了这一现象,并说明了为什么k必须是偶数,同时证明了平方一个k次单位根会产生一个 k/2 次单位根。
本文介绍了图像保持定理,它是数论变换(NTT)的核心概念。该定理指出,对于多值函数,在特定条件下的图像与原始函数在不同定义域上的图像相同。通过重复取平方根来计算单位根,并展示了如何利用该定理来优化多项式求值,为后续章节中利用平方根扩展评估多值函数奠定基础。
本文讨论了将k次单位根 ω 提高到 k/2 次方的问题,结果只能是1或-1。文章给出了证明,当指数为偶数时,结果为1;当指数为奇数时,结果为-1。这种性质可以用于优化多项式在单位根上的求值计算,通过因式分解尽可能多地提取出 x^(k/2) 项,从而简化计算。