什么是系统帐户与令牌帐户?

What is a System vs. Token Account?

这里是 Solana 菜鸟。

我试图更好地理解 PDA 和 ATA,我首先想了解的一件事是系统帐户和令牌帐户之间的区别。

每种类型的帐户持有哪些类型的数据? 一个是从另一个派生的吗? 一个程序可以关联两种类型的帐户吗?

上下文:https://spl.solana.com/associated-token-account

系统账户是由Solana系统程序创建的。通常这些在概念上通常被认为是 wallet

令牌帐户是令牌程序“拥有”的帐户。这使 Token 程序能够更新该帐户中的信息,而如果其他程序试图修改数据,则执行将失败。

哪些数据(如果有)在这些程序拥有的帐户之一中,它由拥有它的程序定义。

其他说明:

  1. 程序本身是 BPFLoader 程序拥有的帐户

您可以从命令行中发现什么是什么: solana account ...

(有关更多选项,请参阅 solana account --help

例如,在 devnet 中的程序帐户上:

Public Key: SampGgdt3wioaoMZhC6LTSbg4pnuvQnSfJpDYeuXQBv
Balance: 0.00114144 SOL
Owner: BPFLoaderUpgradeab1e11111111111111111111111
Executable: true
Rent Epoch: 213
Length: 36 (0x24) bytes
0000:   02 00 00 00  a4 6d da 51  48 e4 d4 48  b1 19 5e 80   .....m.QH..H..^.
0010:   a7 ff 85 8a  c9 06 49 f3  63 d8 5f 7f  8b 32 6a 4d   ......I.c._..2jM
0020:   9a a6 00 d6                                          ....

所有者是 BPF 程序加载器

而我的 devnet 默认钱包:

solana account .config/solana/id.json

Public Key: 5VhBw95K4NYEgQDgEA7335znvVgwUifMPVy6cqFVq5rZ
Balance: 29.355201517 SOL
Owner: 11111111111111111111111111111111
Executable: false
Rent Epoch: 270

所有者是系统程序