Solana是一种新的区块链技术,使用Rust语言编写,使用DPoS保障安全性,每笔交易收取5000lamports的固定费用,每个Epoch分配质押奖励,使用base58表示大多数生态的同质化代币,核心代码的变更通过Solana代码库中的feature gates进行管理。
原文来源:X
原文作者:@0xNing0x
注:原文来自@0xNing0x 发布长推。
本指南将 EVM 概念转化为 Solana 概念。
区块
Solana 的出块时间为 400 毫秒,称为 Slot。Slot 和 区块高度在 Solana 中可能不同。
质押奖励每 Epoch 分配给验证者,约为 2-3 天,相当于 432,000 个 Slot。
Wei
SOL 的最小单位是 lamport,精度为 9(小数点后 9 位)。
大多数 Solana 生态的同质化代币默认是 6 位小数,而不是 18 位。
十六进制 / 二进制
Solana 中的数据大多以 base58 表示,可以使用 from_base58() 函数转换为十六进制。
PoS 与证明
Solana 默认使用委托权益证明(DPoS)来保障安全性。
验证者使用 PoH 共机制对 Slot 进行投票(领导者每个 Epoch 轮换)。
这些都在基础链上进行,有两种交易类型:投票和非投票。
地址
Solana 的地址也称为「账户」,有一种特殊的账户称为 「Program Derived Accounts」 (PDA)。
PDA 需要支付少量租金以防止状态膨胀。
智能合约
在 Solana 上称为「程序」。
程序通过 BPF 上传器部署,可随时升级。
交易数据
在 Solana 上称为「指令」。
每个交易都有多个「data」字段,嵌套在 「instructions」数组中。
可以使用 solana.instruction_calls 表处理指令。
From/To
From 是交易发起人,To 是指令的执行账户。
Traces
由于指令数据以嵌套数组存储,不像以太坊的 ethereum.traces。
可以使用 solana.instruction_calls 表代替。
函数签名
使用 「discriminators」 代替,可以是 1 字节、4 字节或 8 字节长。
可以使用 solana.discriminators 表识别。
事件签名
事件大多在日志消息中。Dune 尚未解码事件或存储事件签名。
Gas
使用 「compute units」表示计算量,可以在日志消息中找到。
原生程序(system、stake、vote)不消耗计算量。
Gas Fee
Solana 尚未实行基于使用量的定价,每笔交易收取 5000 lamports 的固定费用。
可以通过调用 「Set Compute Unit Price」指令来添加优先级费用。
50% 的交易费用和 50% 的租金费用被销毁。
编程语言
Solana 使用 Rust 语言进行程序开发,而以太坊使用 Solidity 语言。
Solana 提供了 Anchor 语言作为 Rust 的抽象层,简化开发。
ABI
Anchor 程序有 IDL(接口定义语言),而 SPL 程序需要手动转换为 IDL。
部分 Solana 项目会将 IDL 上传到链上,但并非所有项目都如此。
智能合约 Factory(集)/ 代理智能合约
Solana 程序通过主程序创建子账户(PDAs),而不是像以太坊使用工厂和代理合约。
存储
Solana 将数据存储在账户的二进制缓冲区中,而不是以太坊的存储槽。
通常会使用嵌套 / 树状结构的账户(PDAs)来存储数据。
代币
Solana 的代币都通过 spl_token 程序(或新版的 token2022 程序)部署。
代币余额存储在关联账户中,而不是以太坊的余额映射。
Staking
Solana 的 Staking 默认是流动的,无需锁定代币。
任何人都可以创建任意余额的质押账户并委托给验证者。
ERC 标准
Solana 没有类似以太坊的 ERC 标准,协议之间缺乏统一性。
核心标准变更
Solana 核心代码的变更通过 Solana 代码库中的 「feature gates」进行管理,不像以太坊有 EIP 流程。
以上内容编译自 ANDREW HONG 的 https://read.cryptodatabytes.com/p/a-guide-to-solana-for-ethereum-analysts