Solana基础概念笔记
Solana基础概念笔记
共识机制
POH
POS(权益证明)
他是由出块者和验证者,两者本身是质押了一些代码,Leader负责接收交易,Vaildator负责执行交易,在N轮交易过后,Leader会公布本地的状态,Vaildator会根据本地的状态决定肯定或者否定。当Leader收到2/3的肯定选票时,敲定交易成立且有效。
Solana有两大时间间隔,分别是Epoch和Slot,每个Slot约0.4-0.8,相当于一个区块的间隔。一个Epoch(大约43.2万个slot)执行完成之后,会更换所有的leader
账户
账户分成程序账户和数据账户,程序账户只存储不变数据,数据账户只存储可变数据,程序账户是在链上只读并且无状态,所有数据只存储在数据账户中。 solana会对所有链上的账户收取租金,当账户无法支付租金时,系统将会删除该账户,账户费用为每字节0.00000348 SOL/年,钱包数据大小为 372 字节,每个活跃钱包持有者必须保留 0.0026 SOL。
分类:
● 用户账户:普通的钱包用户,类似于以太坊的 EOA 账户。
● 程序账户:执行指定任务的账户,存储了程序的二进制文件,我们会在接下来的章节详细介绍。
● PDA(Program Derived Addresses):程序派生地址。该类账户存储程序的状态,即程序执行过程中存储的数据,跟以太坊的状态是一个概念,只不过在这里被拆分到了单独的账户中。在下一节会进行专门的介绍。
● ATA(Associated Token Account)账户:关联账户。它是用户与特定的 SPL(Solana Program Library)Token 代币关联的账户,主要作用是允许用户方便管理他们持有的代币。
PDA
PDA的主要目的是允许程序拥有和控制某些数据或资产,而不需要传统的私钥签名。
程序概念
Solana 的程序有哪几种
通常可以分为以下两种:
On-chain Programs:这些是部署在 Solana 上的用户编写的程序,由开发者在 Solana 网络上根据具体业务场景开发的程序。它们可以通过升级权限进行升级,该权限通常是部署程序的帐户或者指定的其他账户。
Native programs:这些是集成到 Solana 核心模块中的程序。它们提供了验证节点(validator)运行所需的基本功能。native programs 只能通过网络范围内的软件更新进行升级。常见的原生程序有 System Program、BPF Loader Program 、Vote program 和 Solana Program Libraries - SPL等。其中 System Program 这个程序负责管理建立新账户以及在两个账户之间转账SOL。Solana SPL 程序定义了一系列的链上活动,其中包括针对代币的创建,交换,借贷,以及创建质押池,维护链上域名解析服务等。
Solana 程序模型的显着特征之一是代码和数据的分离。程序存储在程序账户中,它是无状态的,这意味着它们不会在内部存储任何状态,但它是可执行的executable,会执行相应的逻辑。相反,它们需要操作的所有数据都存储在单独的数据帐户中,这些帐户在 Transaction 交易中通过引用传递给程序账户,因为它本身是不可执行的。
交易
交易属性:
'processed': 查询已通过连接节点获得1次确认的最新区块
'confirmed': 查询已通过集群获得1次确认的最新区块
'finalized': 查询已由集群完成的最新区块