附录 E - 编写合约所需最常见的类型 和Trait以及Cairo Prelude

Prelude

Cairo预设是一个常用模块、函数、数据类型和特性的集合,它们会自动引入到Cairo crate中每个模块的作用域中,无需显式的导入语句。Cairo的预设提供了开发者开始编写Cairo程序和智能合约所需的基本构建块。

核心库预设定义在 corelib crate 的lib.cairo文件中,包含了Cairo的基本数据类型、traits、操作符和实用函数。其中包括:

  • 数据类型:felts、bools、arrays、dicts等。
  • Traits:用于算术、比较、序列化的行为。
  • 操作符:算术、逻辑、位运算符。
  • 实用函数:用于数组、映射、包装等的辅助函数。 核心库预设提供了基本的Cairo程序所需的基本编程构造和操作,无需显式导入元素。由于核心库预设被自动导入,其内容可在任何Cairo crate中使用,无需显式导入。这避免了重复工作,提供了更好的开发体验。这就是为什么你可以在不显式引入的情况下使用 ArrayTrait::append()Default 特性的原因。

常见类型和trait列表

以下部分简要概述了在开发Cairo程序时常用的类型和特性。大多数这些都包含在预设中,无需显式导入 - 但并非全部。

ImportPathUsage
OptionTraitcore::option::OptionTraitOptionTrait<T> 定义了一组操作可选值所需的方法.
ResultTraitcore::result::ResultTraitResultTrait<T, E> 是用于表示Starknet合约地址的类型,其取值范围为[0, 2 ** 251).
ContractAddressstarknet::ContractAddressContractAddress 是一种用于表示智能合约地址的类型
ContractAddressZeroablestarknet::contract_address::ContractAddressZeroableContractAddressZeroable 是对 ContractAddress 类型实现的Zeroable trait。它用于检查t:ContractAddress 的值是否为零。
contract_address_conststarknet::contract_address_constcontract_address_const! 是一个函数,允许实例化常量合约地址值。
Intotraits::Into;Into<T> 是用于类型转换的 trait。如果对类型T和S存在Into<T,S>的实现,那么可以将T转换为S
TryIntotraits::TryInto;TryInto<T> 是用于类型转换的 trait。如果对类型T和S存在TryInto<T,S>的实现,那么可以将T转换为S.
get_caller_addressstarknet::get_caller_addressget_caller_address() 是一个函数,用于返回调用合约的地址。它可以用于识别合约函数的调用者
get_contract_addressstarknet::info::get_contract_addressget_contract_address() 是一个函数,用于返回当前合约的地址。它可以用于获取正在执行的合约的地址.

这并不是一个详尽的列表,但它涵盖了合约开发中一些常用的类型和trait。关于更多的细节,请参考官方文档并参考可用的库以及框架。

Last change: 2023-11-19, commit: a15432b