接上篇这次一定好好学Solana(1):PoH共识简介同样这次还是自己做笔记,然后让Grok帮我整理我不会画各种账户分类的脑图,因为我发现这种死记硬背没啥用,我也不会拿以太坊举例,因为我压根没开发过,因此,通过研究我试图从本质上去解释我也不会研究太深入的东西,现阶
接上篇 这次一定好好学 Solana (1) : PoH 共识简介 同样这次还是自己做笔记, 然后让 Grok 帮我整理
我不会画各种账户分类的脑图, 因为我发现这种死记硬背没啥用, 我也不会拿以太坊举例, 因为我压根没开发过, 因此, 通过研究我试图从本质上去解释
我也不会研究太深入的东西, 现阶段没啥用, 因为我的目的是开发合约, 看懂链上数据, 进而赚钱
你的笔记已经非常生动有趣了,用 Web2 的经验类比 Solana 的账户体系,确实能让很多人更容易理解。我帮你整理一下,优化结构、语言流畅度和逻辑清晰度,同时保留你的幽默风格,方便你发到博客上。以下是整理后的版本:
网上都说 Solana 的账户体系复杂,我之前也这么觉得,学了好几次都没搞明白。这次我终于弄懂了,而且我保证也能让你懂!
Solana 的账户体系设计很“奇葩”,用我 10 多年 Web2 码农的经验来看,如果我老板看到这种设计,估计会立马开除我 —— “你告诉我,整个系统就 tm 一张表?”
但仔细琢磨,Solana 这套“一切都是 Account”的逻辑其实挺聪明。下面我用一个 SaaS 系统的类比,带你从 Web2 到 Web3,彻底搞懂它。
想象一下,你的公司运营一个 SaaS 系统(Solana),用户可以通过各种小程序(智能合约)实现不同的业务需求。如果让设计数据库,估计会这么设计:
这套设计是不是每个程序员都能看懂?Solana 其实也是类似的逻辑,只不过它把所有东西塞进了“Account”这个概念,通过分类实现上面这套功能。
Solana 的账户体系核心就三种类型,简单明了:
用户账户(Native Account / Wallet Account)
程序账户(Program Account)
数据账户(Data Account)
Solana 用几个关键属性区分账户类型,分别是:
executable: bool
:是否可执行。lamports: u64
:SOL 的最小单位,1 SOL = 10^9 Lamports。data: Vec<u8>
:存数据的字节数组。owner: Pubkey
:谁能操作这个账户。false
(不能执行)。true
(存代码,可执行)。false
(存数据,不能执行)。[]
),余额在 lamports
里,不需要额外数据。owner
表示哪个程序能操作这个账户, 而且只有程序能操作账户。举个例子:
11111111111111111111111111111111
)。class SystemProgram {
void transfer() {
验证签名; // 检查你的私钥签名
验证 SOL 余额; // 够不够转账
转账 SOL; // 更新 lamports
}
}
TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
)。class SPLTokenProgram {
void transfer() {
验证签名; // 检查你的私钥签名
验证 PDA 账户; // 你在这个程序下有记录吗
验证 Token 余额; // 够不够转账
转账 Token; // 更新 PDA 的 data
}
}
Solana 的账户模型简单,但 SPL-Token 引入了更具体的概念。你想发个 token,不用自己写合约,直接用 SPL-Token Program 就行。创建 token 后,会生成两个账户:
decimals
:小数位数(比如 USDC 是 6)。Authority
:权限控制:name
:名字(比如 “USDC”)。symbol
:符号(比如 “$”)。uri
:图片或描述文件的地址。metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s
)。mint
字段指向 Mint Account 的地址,单向绑定。EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
PDA(Program Derived Address)是数据账户的一种,类似 Web2 的 OpenID,用来标识用户在某个程序下的身份。它没有私钥,由程序控制。
以你的 USDC 账户为例,伪代码:
PDA = find_program_address(
[YourPubkey, TokenProgramID, MintAddress],
TokenProgramID
);
YourPubkey + TokenProgramID
只能生成一个 PDA,但你可能有 USDC、USDT 等多个代币。Solana 高吞吐量的秘密在于并行处理,逻辑很简单:
Solana 的账户体系并不复杂:
executable
、lamports
、data
、owner
定义账户角色。从 Web2 看,Solana 就像把数据库表的功能塞进了 Account,设计巧妙又高效。看懂了吧?快去试试 Solana,炒个 Meme 币也行!
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!