跳到主要内容

Solana 中的术语

鱼雪

以下术语在 Solana 文档和开发生态系统中使用。

账户(account)

在 Solana 账本中记录数据或可执行程序的记录。

类似于传统银行的账户,Solana 账户可能持有称为 lamports 的资金。 像 Linux 中的文件一样,它可以通过密钥寻址,通常称为公钥或 pubkey

密钥可以是以下之一:

  • ed25519 公钥
  • 程序派生的账户地址(32 字节值强制脱离 ed25519 曲线)
  • 带有 32 字符串的 ed25519 公钥哈希

账户所有者(account owner)

拥有账户的程序地址。只有拥有程序能够修改账户。

应用程序(app)

与 Solana 集群交互的前端应用程序。

银行状态(bank state)

在给定的 tick 高度解释账本上所有程序的结果。

它至少包括持有非零原生代币的所有账户集。

区块(block)

账本上由投票覆盖的一组连续条目。领导者在每个插槽中最多生成一个区块。

区块哈希(blockhash)

标识记录(区块)的唯一值(哈希)。

Solana 从区块的最后一个条目 ID 计算区块哈希。

区块高度(block height)

当前区块下的区块数量。创世区块后的第一个区块高度为一。

引导验证者(bootstrap validator)

生成区块链创世(第一个)区块的验证者。

BPF 加载器(BPF loader)

拥有并加载链上 BPF 程序的 Solana 程序,允许程序与运行时接口。

客户端(client)

访问 Solana 服务器网络集群的计算机程序。

承诺(commitment)

区块的网络确认度量。

集群(cluster)

维护单个账本的一组验证者。

计算预算(compute budget)

每个交易消耗的最大计算单位数。

计算单位(compute unit)

区块链计算资源消耗的最小单位。

确认时间(confirmation time)

从领导者创建 tick 条目到创建已确认区块的时间。

已确认区块(confirmed block)

已收到账本投票超级多数的区块。

控制平面(control plane)

连接集群中所有节点的 gossip 网络。

冷却期(cooldown period)

在权益停用后的一些纪元内逐步可提取的时间。在此期间,权益被视为“正在停用”。

更多信息:暖期和冷却期

信用(credit)

参见投票信用。

跨程序调用(CPI)(cross-program invocation)

一个链上程序对另一个链上程序的调用。更多信息请参见程序间调用。

数据平面(data plane)

用于有效验证条目和达成共识的多播网络。

无人机(drone)

作为用户私钥保管人的链下服务。它通常用于验证和签署交易。

条目(entry)

账本上的条目,可能是 tick 或交易条目。

条目 ID(entry id)

条目最终内容的预映像抗性哈希,作为条目的全局唯一标识符。该哈希提供以下证据:

  • 条目在一段时间后生成
  • 包含的指定交易
  • 条目相对于账本中其他条目的位置

参见历史证明(Proof of History)。

纪元(epoch)

领导者时间表有效的时段,即插槽数量。

费用账户(fee account)

交易中的费用账户是支付将交易包括在账本中的费用的账户。

这是交易中的第一个账户。

由于支付交易费用会减少账户余额,因此该账户必须在交易中声明为可读写writable)。

最终性(finality)

当代表 2/3 权益的节点具有共同的根。

分叉(fork)

从共同条目派生但随后分叉的账本。

创世区块(genesis block)

链中的第一个区块。

创世配置文件(genesis config)

为创世区块准备账本的配置文件。

哈希(hash)

字节序列的数字指纹。

通胀(inflation)

随时间增加的代币供应,用于奖励验证和继续发展 Solana。

内部指令(inner instruction)

参见跨程序调用。

指令(instruction)

调用程序中特定指令处理器的调用。 指令还指定它希望读取或修改的账户,以及作为辅助输入提供给指令处理器的附加数据。 客户端必须在交易中至少包含一个指令,并且所有指令都必须完成,交易才被视为成功。

指令处理器(instruction handler)

处理来自交易的指令的程序函数。指令处理器可能包含一个或多个跨程序调用。

密钥对(keypair)

访问账户的公钥和相应的私钥。

lamport

值为 0.000000001 sol 的分数原生代币。

领导者(leader)

在账本中追加条目时验证者的角色。

领导者时间表(leader schedule)

验证者公钥映射到插槽的顺序。 集群使用领导者时间表确定当前时刻哪个验证者是领导者。

账本(ledger)

包含客户端签署交易的条目列表。 从概念上讲,这可以追溯到创世区块,但实际验证者的账本可能只包含较新的区块, 以减少存储,因为设计上不需要旧区块来验证未来的区块。

账本投票(ledger vote)

在给定 tick 高度的验证者状态哈希。 它包括验证者收到的区块已被验证的确认, 以及在特定时间段内(即锁定期)不投票给冲突区块(即分叉)的承诺。

轻客户端(light client)

可以验证其指向有效集群的客户端类型。它执行比薄客户端更多的账本验证,但比验证者少。

加载器(loader)

能够解释其他链上程序二进制编码的程序。

锁定期(lockout)

验证者无法对另一个分叉投票的时间段。

消息(message)

交易的结构化内容。通常包含头、账户地址数组、最近的区块哈希和指令数组。

了解更多关于交易内消息格式的信息。

中本聪系数(Nakamoto coefficient)

去中心化的衡量标准,中本聪系数是能够集体关闭区块链的最小独立实体数量。 该术语由 "Balaji S. Srinivasan" 和 "Leland Lee" 在《量化去中心化》中提出。

原生代币(native token)

用于跟踪集群中节点工作量的代币。

节点(node)

参与集群的计算机。

节点数量(node count)

参与集群的验证者数量。

链上程序(onchain program)

Solana 区块链上解释每个交易中发送的指令以读取和修改其控制的账户的可执行代码

这些程序在其他区块链上通常称为智能合约

PoH(Proof of History)

参见历史证明(Proof of History)。

点数(point)

奖励制度中的加权信用。 在验证者奖励制度中,赎回时应支付给权益的点数是获得的投票信用和权益 lamport 数的乘积。

私钥(private key)

密钥对的私钥。

程序(program)

参见链上程序。

程序派生账户(PDA)(program-derived account)

签名权限属于程序的账户,因此不像其他账户那样由私钥控制。

程序 ID(program id)

包含程序的账户公钥。

历史证明(PoH)(Proof of History)

一组证明,每个证明证明某些数据在创建证明之前存在,并且在前一个证明之前经过了精确的时间段。 像 VDF 一样,历史证明可以在比生成时间更短的时间内验证。

优先费用(priority fee)

用户可以在计算预算指令中指定的额外费用,以优先处理其交易。

优先费用通过将请求的最大计算单位数乘以计算单位价格(以 0.000001 lamport 每计算单位为增量) 并向上取整到最接近的 lamport 计算。

交易应请求执行所需的最小计算单位数,以尽量减少费用。

公钥(pubkey

密钥对的公钥。

租金(rent

账户和程序为在区块链上存储数据支付的费用。当账户余额不足以支付租金时,可能会被垃圾回收。

另见租金豁免。了解更多关于租金的信息:什么是租金?

租金豁免(rent exempt

账户维持与其存储的数据量成比例的最低 lamport 余额。

所有新创建的账户都永久存储在链上,直到账户关闭。无法创建低于租金豁免门槛的账户。

根(root

在验证者上达到最大锁定的区块或插槽。根是所有活动分叉的共同祖先的最高区块。 根的所有祖先区块也是传递性的根。 根的块与根的后代无关的块被排除在共识之外,可以被丢弃。

运行时(runtime)

负责程序执行的验证者组件。

Sealevel

Solana 的链上程序并行运行时。

分片(shard)

区块的一部分;验证者之间发送的最小单位。

签名(signature)

64 字节ed25519 签名,包含 R32 字节)和 S32 字节)。 要求 R 是非小序的打包Edwards 点,S0 <= S < L 范围内的标量。

这个要求确保没有签名的可篡改性。

每个交易必须至少有一个费用账户签名。

因此,交易中的第一个签名可以作为交易 ID

跳过率(skip rate)

当前纪元中跳过插槽占领导者插槽总数的百分比。 由于在纪元边界之后样本量小,以及对领导者插槽数量少的验证者高方差,这个指标可能会误导, 但有时也有助于识别节点配置错误。

跳过插槽(skipped slot)

由于领导者离线或集群共识选择了更好的替代分叉,未生成区块的过去插槽。 跳过的插槽不会出现在后续插槽的祖先中,也不会增加区块高度, 也不会使最旧的 recent_blockhash 过期。

只有在成为最新根(因此未跳过)插槽之后,才能确定插槽是否已跳过。

插槽(slot)

每个领导者摄取交易并生成区块的时间段。

总体上,插槽创建了一个逻辑时钟。插槽按顺序排列且不重叠, 按 PoH 大致相等的真实世界时间组成。

智能合约(smart contract)

参见链上程序。

sol

Solana 集群的原生代币。

Solana 程序库(SPL) (Solana Program Library)

Solana 上的程序库,如 spl-token,用于执行创建和使用代币等任务。

权益(stake)

如果能证明验证者行为恶意,集群没收的代币。

权益加权服务质量(SWQoS)(Stake-weighted Quality of Service)

SWQoS 允许优先处理来自抵押验证者的交易。

超级多数(supermajority)

集群的 2/3

系统变量(sysvar)

系统账户。系统变量提供集群状态信息,如当前 tick 高度、奖励点数值等。 程序可以通过系统变量账户(pubkey)或通过系统调用查询系统变量。

薄客户端(thin client)

一种相信其正在与有效集群通信的客户端类型。

tick

估计挂钟时间的账本条目。

tick 高度(tick height)

账本中的第 N 个 tick。

代币(token)

可数字转移的资产。

代币扩展程序(Token Extensions Program)

代币扩展程序的程序 ID 为 TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb, 包含与代币程序相同的所有功能,但带有扩展功能,如机密转账、自定义转账逻辑、扩展元数据等。

代币程序(Token Program)

代币程序的程序 ID 为 TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA, 提供转账、冻结和铸造代币的基本功能。

tps(transactions per second)

每秒交易数。

tpu(transaction processing unit)

交易处理单元。

交易(transaction)

由客户端使用一个或多个密钥对签名的一个或多个指令,并以原子方式执行,只有两种可能结果:成功或失败。

交易 ID(transaction id)

交易中的第一个签名,可用于跨完整账本唯一标识交易。

交易确认(transactions confirmations)

交易被接受到账本后确认的区块数量。当交易的区块成为根时,交易被最终确定。

交易条目(transaction entry)

可以并行执行的一组交易。

tvu(transaction validation unit)

交易验证单元。

验证者(validator)

在 Solana 网络集群中生成新区块的完全参与者。验证者验证添加到账本中的交易。

VDF(Verifiable Delay Function

参见可验证延迟函数。

可验证延迟函数(VDF

需要固定时间执行的函数,生成一个证明其运行的证明, 该证明可以在比生成时间更短的时间内验证。

投票(vote)

参见账本投票。

投票信用(vote credit)

验证者的奖励累计。当验证者达到一个根时,在其投票账户中获得一个投票信用。

钱包(wallet)

允许用户管理其资金的密钥对集合

预热期(warmup period)

在权益被委托后的几个纪元(epoch)内逐步生效的时间。 在此期间,权益被视为“正在激活”。 更多信息:暖期和冷却期。

中年老码农,专注于自由职业与远程全栈开发