Skip to content

Commit e1700ab

Browse files
committed
phipupt's update 10.08
1 parent 8a46514 commit e1700ab

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

phipupt.md

+49
Original file line numberDiff line numberDiff line change
@@ -439,4 +439,53 @@ Cairo 程序和 Starknet 合约
439439
- 外部函数:通过交易直接调用,可能修改状态。
440440
- 视图函数:读取状态但不修改。
441441

442+
443+
### 2024.10.08
444+
Starknet 智能合约构建笔记
445+
446+
引言
447+
448+
- 回顾了之前关于 Cairo 编写的智能合约基础部分。
449+
- 本节深入探讨智能合约的组件,包括合约接口、公共函数、储存和事件等概念。
450+
451+
合约储存
452+
453+
- 储存简介:智能合约的持久化储存空间,用于读写和修改数据。
454+
- 储存槽:拥有\(2^{251}\)个槽,每个槽初始为 0。
455+
- 储存变量:
456+
- 声明在特殊的 Storage 结构体中,需用#[storage]标注。
457+
- 使用 Store trait 以支持存储。
458+
459+
访问和使用储存变量
460+
461+
- 读取和写入:通过生成的 read 和 write 函数访问。
462+
- 复杂类型存储:需要实现 Store trait,自定义类型(如 struct 和 enum)可被存储。
463+
- 地址计算:使用 sn_keccak 哈希来计算储存变量的基础地址。
464+
465+
储存节点
466+
467+
- 定义:特别的 struct,用于包含 Map、Vec 等储存类型。
468+
- 优势:提升储存布局的复杂性和代码的可读性。
469+
470+
储存映射(Mappings)
471+
472+
- Map类型:用于声明映射关系。
473+
- 声明和使用:通过 entry 方法和 read/write 函数进行访问。
474+
- 嵌套映射:支持多重键值映射。
475+
476+
储存向量(Vectors)
477+
478+
- Vec 类型:用于存储集合。
479+
- 声明和使用:通过 append 添加元素,at 和 get 方法读取元素。
480+
- 地址计算:使用 sn_keccak 和 Pedersen 哈希函数。
481+
482+
整理
483+
484+
- 储存变量:数据持久化,特殊Storage结构体。
485+
- 访问储存:read和write方法。
486+
- 定制类型:需实现Store trait。
487+
- 结构与枚举布局:顺序存储元素和变体。
488+
- 存储节点:组织复杂储存布局。
489+
- 存储映射和向量:以键值对和集合进行存储操作。
490+
442491
<!-- Content_END -->

0 commit comments

Comments
 (0)