编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

长推:Solana 基本概念指南,与 EVM 有何不同?

wxchong 2024-09-01 06:38:32 开源技术 9 ℃ 0 评论

注:原文来自@0xNing0x 发布长推。

本指南将 EVM 概念转化为 Solana 概念。

Transaction(事务 / 交易)相关的概念

区块

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

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表