本文详细介绍了 Cairo 中类型转换的概念、Into 和 TryInto 两个 trait 的区别和使用场景,以及 felt252、uint、Address、ByteArray、String 和 bool 等类型之间的转换方法。Cairo 强调类型安全和显式转换,避免了隐式转换可能导致的数据丢失和错误,提高了智能合约的可靠性。
Into
TryInto
felt252
uint
Address
ByteArray
String
bool
本文介绍了Cairo中构造函数的使用方法,包括构造函数在合约部署时的作用、Cairo构造函数与Solidity构造函数的不同之处,以及如何在Cairo中传递复杂类型和处理构造函数的返回值。此外,还提到了Cairo中没有像Solidity那样直接支持payable构造函数。
本文介绍了如何在 Cairo 中实现类似 Solidity 中 internal、private 和 pure 函数的功能。
本文介绍了 Cairo 中的 Component 概念,它类似于 Solidity 中的抽象合约,可以定义存储、事件和函数,但不能独立部署。文章通过一个示例,详细讲解了如何在 Cairo 中创建和使用 Component,包括接口定义、Component 声明、合约集成以及存储和事件的导入。
本文介绍了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 时,它们互为加法逆元。文章通过图示和动画生动地展示了单位根的乘法和加法运算在单位圆上的几何意义,并解释了如何在单位圆上可视化同余关系。