solana账户总结

系统账户 System Account

最基本的账户类型,用于存储sol代币,可通过SystemProgram.createAccount创建,拥有密钥对

Nonce账户(Nonce Account)

为特定情况下的交易提供一个唯一的 nonce,用于防止交易重放攻击。

原生sol账户 (Native Account)

存储sol,所有参与者(用户或智能合约)在网络中交互时都必须有一个原生 SOL 账户,通过一个 PublicKey(公钥)进行唯一标识。
所有参与者(用户或智能合约)在网络中交互时都必须有一个原生 SOL 账户。无法直接存储其他代币或数据。

代币账户 (Token Account)

用户可以手动创建多个代币账户,适用于多个不同代币。
存储 spl 代币,使用 spl-token CLI 或调用 SPL 代币库中的方法来创建。用于存储特定代币的余额,可以执行转账、交易等操作。
每个代币账户与一个特定的代币合约相关联,记录该账户持有的代币数量和所有者。

关联代币账户 Associated Token Account (ATA)

由 SPL Token Program 自动创建,且与特定钱包地址和代币 mint 地址绑定。
ATA 简化了代币账户 (Token Account) 的管理,不需要用户手动创建代币账户。
ATA 是一种专用于存储特定 SPL 代币的账户,并且与某个主地址(钱包地址)相关联。
每个主地址(钱包)对于每种 SPL 代币有一个唯一的 ATA。
每个用户主地址在接收某种新的 SPL 代币时,系统会自动生成一个 ATA 来存储该代币。
ATA 是由主地址派生出的一个 PDA(Program Derived Address),用于专门存储某种 SPL 代币的余额。

多签账户 (Multisig Account)

用于管理 SPL 代币的多签名(multisig)账户,设置签名阀值,多签账户由多个公钥控制。
使用 spl-token CLI 工具或 SPL Token 程序库中的方法来创建多签账户。

Staking账户(Stake Account)

用于存储 Staking 信息,如用户质押的 SOL、投票权重和收益信息。
通过质押 SOL,账户持有者可以获得奖励,并参与到网络的 PoH(Proof of History)共识机制中。

验证者账户(Validator Account)

用于存储验证者节点的身份信息和质押信息。网络中的验证者(Validator)需要一个验证者账户来存储其信息,并接受来自其他账户的委托。

程序账户 (Program Account)

生成方式:通过部署智能合约生成
存储和执行程序逻辑,即智能合约。用于在区块链上部署并管理程序代码。
可以存储程序状态数据(例如,某个计数值、映射关系等),以便在多次调用之间保持数据持久。
通过调用程序的指令(Instruction)实现交互,并支付计算费用来执行逻辑。

程序派生账户 PDA - Program Derived Address

生成方式: 使用程序地址 + 种子数据派生
存储程序状态和数据,控制访问权限
PDA 常用于存储程序的状态数据,如账户余额、用户信息等。PDA 可用于创建与程序逻辑相关联的账户,如多签账户、代币账户等。
是由程序(智能合约)通过特定的种子(seeds)和 bump(一个随机数)生成的特殊地址。PDA 不关联任何私钥,只能由生成它们的程序管理。

数据账户 (Data Account)

存储程序数据
由特定程序拥有管理
可以存储任意数据
需要支付租金

Durable Nonce Account(持久化随机数账户)

创建 Durable Nonce Account时,开发者需要指定一个主账户作为授权者 authorizedPubkey 该主账户可以对 Nonce Account 进行管理和更新。
Durable Nonce Account,这是一种特殊的账户,用于在多次交易中使用同一个 nonce 值,避免每次都需要更新 recentBlockhash。
全部评论(0)