Codes in lesson5.1Codes in lesson5.2
代币创建(Create Token) 与 铸造(Mint)核心概念账户模型基础
数据账户
原生账户、代币账户、状态账户
铸币账户
程序账户
如何判断一个账户的类型?
123456789101112步骤 1:检查 executable(判断是程序账户 or 数据账户)如果为 true -> 程序...
solana 上的代币代币是代表对各种资产所有权的数字资产。代币化使得财产权的数字化成为可能,是管理 可替代和不可替代资产 的基本组成部分
可替代代币 代表同类型和同价值的可互换和可分割资产(例如 USDC)
不可替代代币(NFT) 代表不可分割资产的所有权(例如艺术品)
半可替代代币(如股权代币)
SPL(Solana Program Library)SPL Token 是 Solan...
Codes in lesson3
账户
数据账户,用来存储数据
系统所有账户
程序派生账户(PDA)
程序账户,用来存储可执行程序
原生账户,指 Solana 上的原生程序,例如:System,Stake,以及 Vote
账户结构体
Account
AccountInfo
Account123456789101112131415#[derive(Deserialize, Partia...
Codes in lesson2.1: startup_nativeCodes in lesson2.2: startup_anchorCodes in lesson2.3: startup_anchor_todo
Native Rust 搭建12cargo new --lib <project_name> # new projectcargo add solana-progra...
Sol 源码概览 & 区块链应用
Solana 区块链的工作原理
共识协议
高性能架构
高并发处理
低延迟
Runtime 模块
管理账户状态
智能合约执行
Programs 模块
Token Program Stake Program
Rust 和 区块链
Sol 课程目标 & 在区块链中的地位
掌握 Sol 的基础
Sol 开发的 8 大核心概念
Sol 的...
Codes in lesson26
使用共享来实现并发
Go 语言:不要用共享内存来通信,要用通信来共享内存
Rust 支持通过共享状态来实现并发
Channel 类似单所有权:一旦将值的所有权转移至 Channeel,就无法使用它了
共享内存并发类似多所有权:多个线程可以同时访问同一块内存
使用 Mutex 来每次只允许一个线程来访问数据
Mutex 是 mutualexclusion(...
Codes in lesson25
并发与并行的区别
并发(Concurrency):多个任务在时间上交替执行
并行(Parallelism):多个任务同时执行
进程与线程
在大部分 OS 里,代码运行在进程(process)中,OS同时管理多个进程
在程序里,各独立部分可以同时运行,运行这些独立部分的就是线程(thread)
多线程运行 可以提升性能表现 和 增加复杂性,但无法保障各线程...
Codes in lesson24.1
Codes in lesson24.2
Unit Test测试结构基本单元测试使用 #[cfg(test)] 属性标记测试模块:
123456789101112131415#[cfg(test)]mod tests { // 导入要测试的模块 use super::*; #[test] fn it_works(...
Codes in lesson23
什么是迭代器?
迭代器模式:对一系列项执行某些任务
迭代器负责:
遍历每个项
确定序列(遍历)何时完成
Rust 的迭代器:
懒惰的:除非调用消费迭代器的方法,否则迭代器本身没有任何效果
123456let v1 = vec![1, 2, 3];let v1_iter = v1.iter();// rust 的迭代器是懒惰的,除非调用消费迭代器的...
Codes in lesson22
闭包介绍
什么是闭包?
闭包是一个可以捕获所在环境中的变量的匿名函数
闭包通过 || 符号定义,可以像普通函数一样调用,但与函数不同,闭包可以访问外部作用域的变量
闭包的特点
可以捕获周围作用域的变量
支持作为参数传递给其他函数
可以返回闭包作为函数的返回值
闭包通常通过类型推断来确定参数和返回值的类型
闭包定义12let add_one =...