玩转 Solana 一文掌握 Solana 核心概念

时间:2024-09-22 编辑: 浏览:(457)

2024年,Solana异军突起,TVL从年初的十亿美元飙升至如今的近五十亿美元,一跃成为第4大公链。

与Ethereum相比,Solana以更快的速度和更低廉的费用为用户带来了更为优越的体验。其基于POH的共识机制和异步的交易执行模式为开发者提供了高吞吐量和低延迟的区块链性能,成为各种去中心化应用的首选平台。

BlockSec特别策划了《玩转Solana》系列文章,涵盖 Solana 基本概念、查看和分析 Solana 交易实用指南以及编写 Solana 智能合约教程等干货内容。

作为该系列的第1期,本文将深入介绍Solana网络中的关键概念,包括其运行机制,账户模型和交易,为大家编写出正确且高效的Solana合约打下基础。

eBPF:Solana交易的执行基石

为了编写和执行智能合约,区块链往往需要一套编程语言和图灵完备的计算环境。

熟悉Ethereum的朋友们应该知道,以太坊上的智能合约通常使用高级语言Solidity来编写,而Solidity编译产生的字节码则运行在一个叫做以太坊虚拟机的环境中。

Solana并没有选择开发全新的虚拟环境和语言,而是充分利用了现有的优秀技术。原本用于拓展Linux内核功能的eBPF(extended Berkeley Packet Filter)虚拟机被Solana选中并作为底层的执行环境。

那么,eBPF 相对于 EVM 有哪些优势?

相较于只支持解释执行的EVM,eBPF能够以即时编译(JIT)模式直接将字节码转换成处理器可以直接执行的机器指令,从而更高效地运行程序。

eBPF拥有一套高效的指令集和成熟的基础设施。开发者只需要使用Rust语言即可编写智能合约。LLVM编译框架提供了一个eBPF的后端,利用它可以直接将这些Rust语言编写的程序编译成可运行在eBPF虚拟机上的字节码。

Solana的账户模型

1. Solana账户结构

Solana上的数据以账户的形式存储。如下图所示,我们可将Solana中的所有数据视作一个庞大的键值对数据库。数据库的键是账户的地址,对于“钱包”账户(即由

Solana用户通过公私钥对直接控制的账户)而言,这个地址是使用Ed25519签名系统生成的公钥;而数据库的值是该账户的具体信息,包含余额和其它相关信息。

Solana使用名为AccountInfo的结构来描述一个账户,其组成如下图所示。

Solana中的每个账户均包含四个字段。这里我们对其进行逐一解释。

Data字段存储了该账户有关的数据。如果该账户为一个程序(即智能合约),则它存储的其实就是eBPF字节码。否则,Data中信息格式一般由账户创建者自行定义。

Executable字段用于标识该账户是否为程序。需要注意的是,与以太坊不同,Solana中的程序是可以更新的。

Lamports字段记录了该账户Solana代币的余额。Lamports实际上是SOL Token的最小单位(1 SOL = 10亿Lamports)。

Owner字段指示了当前账户的拥有者。在Solana中,任何一个账户都有一个“Owner”。例如,所有“钱包”账户的拥有者都是System Program,这是Solana网络上的一个特殊账户,负责账户创建等功能。账户拥有者是唯一能够修改账户数据和扣除Lamports余额的人(但任何人都可以增加Lamports,即向账户执行转账功能)。

2. 预定义的Solana账户

Solana拥有一套称作Native Programs的预定义运行程序,它们被部署在固定的地址上。随着Solana网络的升级,这些预定义的程序也可能会被更新。我们可以将这些程序理解成Solana网络下提供特定功能的API和库函数。

在Native Programs中,开发者经常需要与之交互的一个程序是System Program。System Program为开发者提供了一些指令(Instructions),我们可以把每条指令理解成是一个独立的方法。例如,开发者可使用CreateAccount指令来创建新的账户,或者使用Transfer指令将Lamports转账给其它账户。

另外一个常见的Native Programs是BPF Loader程序。它是所有其它程序账户的拥有者,其负责部署、更新和执行特定的程序。当一个“钱包”账户需要更新它部署过的程序时,实际上就是通过委托BPF Loader程序来完成的,毕竟只有程序的拥有者才有直接权限修改数据。

除了Native Programs,Solana还提供了一组被称作Sysvar的账户。它们为Solana上的程序提供了与当前Solana网络状态相关的信息和全局变量,例如当前的时钟,最近的区块哈希等。

3. 账户租金

在Solana链上,每个账户需要保持一定数量的Lamports作为最低额度,这被称为租金。与现实生活中的租金概念不同,Solana上的租金是可以收回的。为了确保账户在链上的数据是可用的,账户需要持有相应数量的Lamports。租金的数额与账户在链上存储空间的大小相关。

任何试图将账户余额扣减至低于租金数额的交易都会失败,除非这笔交易直接将账户的余额扣减至零。这种操作表明该账户的租金已被收回,在交易执行结束时,Solana会通过垃圾回收清空相应账户的存储空间。

-?在浏览器中查看「Solana账户」

为了带领大家更好地理解相关概念,我们使用Solana提供的“HelloWorld”项目创建了一个程序账户,可以通过Solana的区块链浏览器Solscan来查看以下账户?的相关信息。

CJWhxB4qEWBv9eGYUkTN881bNDMDkLbzH1FmdwqLLhoe

如上图所示,我们首先可以看到,该账户已被Solana浏览器标明为“Program”。在创建该账户时从发送者的余额里扣除了一部分Lamports作为该账户的租金,故而我们可以看到其SOL Balance字段不为空。

其次,由于我们创建的是一个程序,其Executable字段为 Yes。这里可能有一个难以理解的地方,那就是读者也许会发现Data字段存储的是一个地址而非eBPF程序。我们在前面提到过,Solana允许更新程序,而它实际上是通过一种“代理”模式来实现的。由于Solana并不允许直接修改程序账户,所以它创建了一个数据账户用来存储eBPF程序,而在程序账户的Data字段只存储数据账户的地址。每当需要更新程序时,就只需修改数据账户中的Data字段。我们用Solscan查看Executable Data字段的账户可以发现它被标记为“Program Executable Data Account”,其Data字段存储了实际的程序:

回到上一张图片,我们可以发现在More info中Owner字段为BPF Loader,这与我们在上一节中的描述是一致的。

在Overview中还有一个名为“Upgrade Authority”的字段,它的含义是什么呢?

正如我们前面提到的,“钱包”账户是通过委托BPF Loader来更新程序的,而在更新之前,BPF Loader需要验证委托者是否拥有更新的权限。由于程序账户的Owner字段已经是BPF Loader,其自身已经没有空间来存储该信息了,因此Solana选择把这个信息存储在数据账户的Data字段中,这个信息实际上就是部署程序的钱包地址,也就是这里的“Upgrade Authority”。下图展示了程序账户与数据账户之间的关系,可以看到数据账户的Data字段由钱包地址和eBPF代码两部分信息组成。

Solana的交易和指令

在Solana中,用户同样通过签发交易(Transactions)来执行程序。其特别之处在于,Solana能够并行执行这些交易,这也是其能够提供闪电般交易速度的重要原因。接下来我们来看看Solana的交易是如何设计的。

一笔Solana交易由签名和消息主体组成。一笔交易可包含多个签名。交易的消息主体由四个部分组成,如下图所示。

消息的头部信息(Header)和账户地址数组(Compact array of account addresses)两个字段指定了交易涉及的所有账户以及账户在交易中的特征:包括该账户是否提供了签名以及执行过程中是否会被写入。利用这些信息,Solana能够验证相应账户提供的签名,并且能够并行地执行那些不触碰相同账户集合的交易。

最近的区块哈希(Recent Blockhash)是交易的时间戳。Solana网络会确保交易来自于最近的150个区块,否则交易会被认为过期从而不被执行。

指令数组(Compact array of Instructions)是交易中最重要的部分,包含了一条或多条指令。一条指令实际上是对某个程序提供的一段例程的调用。指令由三个字段组成,如下图所示:

第一个字段Program ID Index指定了指令的接收者,即需要处理该指令的链上程序。它不直接存放一个32字节的地址,而是将该地址放在消息主体中的账户地址数组中。该字段使用一个字节的下标指明其在数组中的位置,实现了一种空间复用。

和第一个字段类似,第二个字段是由账户地址下标组成的数组(Compact array of account address indexes),它指明了处理该指令涉及到的所有账户。

最后一个字段是一段字节数组,它是程序处理该指令需要的额外信息,可以把它理解成函数的参数。

需要注意的是,Solana会按照顺序处理交易中的所有指令,并确保交易的执行是原子的。这意味着一笔交易中的指令要么全部失败,要么全部成功执行,不会出现部分指令成功执行而部分失败的情况。

-?在浏览器中查看「Solana交易」

我们使用另外一个Solana浏览器来查看前面创建程序账户的交易?。在Overview中能够看到Solana交易的签名、最近区块哈希等信息:3uKQ85Lpsnwb5D6CgUntoMyJX3tSaeGb4pjUoMaMyNVqQNPp5PRG1kJEEEk3YNdWLYEMZGmoJ5Rowgon8hZzwL9D

而在Account Input中则列出了当前交易涉及到的所有账户以及相关账户在交易中的特征。我们可以看到除了发送者、程序账户等地址外,两个Native Programs和Sysvar账户也被包含进去了。

由于该交易是一个简单的程序创建交易,所以它只包含了两条指令,第一条指令的接收者是System Program,负责创建程序账户;第二条指令的接受者则是BPF Loader,负责将实际部署的eBPF代码写入到数据账户中,并将其地址写入到程序账户的Data字段。

总结

Solana上的智能合约采用Rust语言开发,并在eBPF虚拟机上运行。它遵循账户模型,链上的账户需要维持租金才能保证数据的可用性。交易由一条或多条指令组成,明确定义了依赖的所有账户,从而使得交易能够被并行处理,提高了吞吐量并降低了响应延迟。这些特点共同促进了Solana的快速发展,使其成为备受青睐的区块链平台之一。

最新 更多 >
  • 1 欧洲央行降息,加密货币市场为潜在的比特币飙升做好准备

    加密货币新闻记者Colin Wu指出,欧洲央行(ECB)宣布了五年来的首次降息,将利率下调了25个基点。 这一决定出台之际,预计2024年通胀率将达到2.5%,到2026年将逐渐降至1.9%。此外,GDP增长预测预计2024年GDP增长0.9%,2026年增长1.6%。货币市场预计,这是自2019年9月存款便利进入负值区间以来的首次降息。 欧洲央行宣布五年来首次降息25个基点。欧洲央行预计202

  • 2 Ripple:XRP形成一个倒置的锤子:以下是它将达到0.75美元的时间

    加密货币领域正在遭遇牛市浪潮,领先的代币正在充分利用这一浪潮。然而,尽管市场开始蓬勃发展,Ripple(XRP)尚未接受这一利润丰厚的市场发展,迫使代币适应低迷的价格步伐。 随着Ripple SEC案件的出现,XRP尚未预测出市场迫切希望的惊人的牛市突破。然而,几位加密货币分析师领先雷达一步,发布了新的预测,这为XRP的迅速回归增添了希望。 另请阅读:六个月预测:Ripple的XRP会达到2美元的

  • 3 累计融资2300万美元,豪华VC加持,元宇宙游戏Avalon能否带来Web3游戏新体验?

    元宇宙游戏平台 Avalon Corp 近期引起了广泛关注,先后完成了两轮重要融资,总金额达到 2300 万美元。这不仅体现了投资者对 Avalon 的信心,也反映了其在区块链游戏领域的巨大潜力。 2023 年 2 月,Avalon Corp 成功获得 1300 万美元融资,由 Bitkraft Ventures、Hashed、Delphi Digital 和 Mechanism Capital

  • 4 AI将以太坊(ETH)价格定为2024年6月30日

    随着加密货币市场上的许多资产开始恢复涨价,该行业最大的以太坊(ETH)就是其中之一,机器学习和人工智能(AI)算法对其未来几周的进展相当乐观。 事实上,以太坊一直在加密货币领域乘势而上,投资巨头VanEck异常积极的预测更是加强了这一趋势。VanEck认为,以太坊是加密货币领域市值第二大的资产,到2030年将达到22000美元。 以太坊价格预测 根据Finbold于6月6日检索到的加密货币监测和预

  • 5 Partisia Blockchain 加速市场进程,生态通证$MPC 登录MEXC

    Partisia Blockchain 是一个以 MPC 技术方案为基础,具备可审计特性的隐私 Layer1 生态,与此同时,该链通过系列创新的系统架构,能够兼顾高迸发、安全、可拓展性以及可互操作特性。基于系列技术特性,Partisia Blockchain 正在构建应用链的全新范式,有望将系列 Web2 链下场景整合至链上,在满足合规、可审计的前提下,为这些场景提供高效、可信、安全的支持。目前,

  • 6 纽约起诉加密矿工和交易所欺诈10亿美元

    纽约州总检察长Letitia James对该州的加密货币骗子提起了另一场价值10亿美元的诉讼,她说这些骗子诈骗了数十万投资者。 根据周四的新闻稿,詹姆斯的办公室指控加密货币交易所NovaTech和矿业公司AWS mining“参与非法传销”,抢走了包括11000名纽约人在内的投资者价值超过10亿美元的加密货币。她现在试图禁止两家公司在纽约进一步开展业务。 詹姆斯说:“这些加密货币公司以移民和宗教社

  • 7 MoonBag的0.25美元预测在投资者中引发狂热,放弃DOGEVERSE和BOME!MoonBag成为顶级加密预售商品

    在波动的加密货币领域,保持领先是关键。那么,您准备好探索激动人心而又复杂的加密货币市场了吗?Dogeverse落后于MoonBag,吸引投资者加入其预售阶段。与此同时,尽管有币安的支持,《记忆之书》仍在波动的边缘徘徊。 但不要感到困惑!MoonBag(MBAG)是初学者和专家的门户。分析师预测,到11月,MoonBag将达到0.25美元,猴子主题的模因币目前备受关注。看看MoonBag是如何凭借

  • 8 空投新机遇?全面解读Synthetix创始人新作Infinex

    作者:Trustless Labs 加密市场发展瓶颈:如何突破用户门槛? 在当前的区块链和加密货币市场中,去中心化技术催生了许多强大的新产品。然而,这些产品的用户辐射范围却仅限于少数对该行业有较深认知与较多经验的人群。造成这种情况的主要原因在于用户需要掌握许多新知识,如钱包、跨链桥和矿工费用等,这无疑为普通用户设置了较高的门槛。 目前,中心化交易所作为一种「临时」解决方案,为那些希望接触、但尚未学

  • 9 Bad Idea AI(Bad)现已在CoinW和BingX集中交易所上市

    重大里程碑:通过新的上市和激动人心的促销活动扩大全球影响力 Bad Idea AI是一个致力于项目治理和人工智能交叉的标记化人工智能项目,它很高兴宣布在两个主要的集中交易所上市:CoinW和BingX。这一关键发展标志着Bad Idea AI的一个重要里程碑,将其覆盖范围和可访问性扩大到全球加密货币交易员和爱好者。 主要上市日期 CoinW:于2024年6月4日上市。交易对:BAD/USDT B

  • 10 混合DeFi平台激增,投资者押注100倍潜力,被顶级专家称为“多边形杀手”

    我们看到加密货币市场上的新产品受到创新和用户应用增加的驱动。DTX Exchange(DTX),一个混合DeFi平台,就是这些独特的产品之一。 它正在进行的公开预售表明,狂热者对它的解决方案是多么的赞赏。另一方面,随着DTX进入市场,Polygon(MATIC)努力保持相关性。加入我们,探索DTX及其对Polygon的影响。 >>>在此处购买DTX代币<<< DTX交易所崛起,将金融世界的中心化和