我奶奶也能看懂:Solana的编程模型,究竟和ETH有啥区别?

摘要: ...

作者:Foresight News,Alex Liu

Solana 是一个旨在支持 dApps 的高性能区块链平台,以其速度和可扩展性闻名,而这是通过独特的共识机制和架构设计实现的。本文将以太坊作为比较对象,简要介绍 Solana 智能合约编程模型的特点。

智能合约、链上程序:

运行在以太坊上的程序被称为智能合约,它是位于以太坊上一个特定地址的一系列代码(函数)和数据(状态)。(哦豁,代码数据耦合了)智能合约也是一个以太坊帐户,称之为合约帐户,它们有余额,可成为交易对象, 但是无法被人操控,被部署在网络上作为程序运行。

而运行在 Solana 上的可执行代码被称为链上程序(On-chain Program),它们能解释每笔交易中发送的指令。这些程序可以直接部署到网络核心作为原生程序,或由任何人发布为 SPL 程序。

  • 指令 (Instructions):指令是 Solana 链上程序的特有名词。链上程序由指令组成,是执行特定操作的***小单位: 每笔 Solana 交易中都包含一个或多个指令。指令指定了要执行的操作,包括调用特定链上程序、传递账户、输入列表以及提供字节数组。指令有计算限制,因此链上程序应该被优化为使用少量计算单元,或将昂贵的操作分成多个指令。

我奶奶也能看懂:Solana的编程模型,究竟和ETH有啥区别?

  • 原生程序:提供验证节点所需功能的原生程序。其中******的是 System Program,它负责管理创建新账户以及在两个账户之间转账 SOL。
  • SPL 程序:定义了一系列链上活动,包括代币的创建、交换、借贷,以及创建质押池、维护链上域名解析服务等。其中,SPL Token Program 用于代币操作,而 Associated Token Account Program 等则常用于编写其他定制程序。

你叫智能合约,我叫链上程序,大家说法不一样,但都是指运行在区块链上的代码。张三李四***麻子都是人名,到底素质如何还得考察其他方面。

账户模型、数据解耦:

与以太坊类似,Solana 也是基于账户模型的区块链,但 Solana 提供了一套不同于以太坊的账户模型,用不同的方式存储数据。

在 Solana 中,账户可以保存钱包信息和其他数据,账户定义的字段包括 Lamports(账户余额)、Owner(账户所有者)、Executable(是否为可执行账户)和 Data(账户存储的数据)。每个账户都指定一个程序作为其所有者,以区分账户用作哪个程序的状态存储。这些链上程序是只读或无状态的:程序账户(可执行账户)只存储 BPF 字节码,不存储任何状态,程序会把状态存储在其他独立账户(不可执行账户)中,即 Solana 的编程模型将代码和数据解耦。

我奶奶也能看懂:Solana的编程模型,究竟和ETH有啥区别?

而以太坊账户主要是 EVM 状态的引用,其智能合约既存在代码逻辑,又需要存储用户的数据。这通常被认为是 EVM 历史***的设计缺陷。

我奶奶也能看懂:Solana的编程模型,究竟和ETH有啥区别?

不要小看这一区别!Solana 智能合约在根本上比具有耦合编程模型的区块链(如以太坊)更难攻击:

在以太坊中,智能合约「拥有者」是一个全局变量,与智能合约一一对应。因此,调用某个函数可能直接改变合约「拥有者」。

而在 Solana 中,智能合约的「拥有者」是与账户关联的数据,而不是全局变量。一个账户可以有多个拥有者,而不是一对一关联。攻击者要利用智能合约的安全漏洞,不仅需要找到有问题的函数,还需要准备「正确」的账户来调用该函数。这一步骤并不容易,因为 Solana 智能合约通常涉及多个输入账户,并通过约束条件(例如 `account1.owner==account2.key` )来管理它们之间的关系。从「准备正确的账户」到「发动攻击」的过程,足够让安全监控人员可以在攻击之前主动检测到创建与智能合约相关的「虚假」账户的可疑交易。

以太坊的智能合约就像是一个使用***密码的保险库,你只要得到了这个密码,就能获得完整的所有权;而 Solana 的则是一个有很多个密码的保险库,但想要获取权限,你不但要想办法搞到密码,还要弄清楚这个密码对应的编号,才能把锁打开。

编程语言

Rust 是 Solana 上开发智能合约的主要编程语言。因为它的性能和安全特性,使其适用于区块链和智能合约的高风险环境。Solana 同时也支持 C、C++ 和其他语言(很不常见)。官方提供了 Rust 和 C 的 SDK 来支持开发链上程序。***可以使用工具将程序编译成 Berkley Packet Filter (BPF) 字节码(文件以 .so 为扩展名 ),再部署到 Solana 链上,通过 Sealevel 并行智能合约运行时来执行智能合约的逻辑。

由于 Rust 语言本身上手难度高,且并不是为区块链开发定制,导致很多需求需要重复造轮子、代码冗余。(生产中许多项目采用 Backpack 联创 Armani 创造的 Anchor 框架简化开发)许多新创造的专用于区块链开发的编程语言是基于 Rust 的,如 Cairo(Starknet)、Move(Sui、Aptos)。

我奶奶也能看懂:Solana的编程模型,究竟和ETH有啥区别?

生产中许多项目采用 Anchor 框架

而以太坊智能合约主要用 Solidity 语言开发(语法和 javascript 类似,代码文件以 .sol 为扩展名)。由于语法相对简单以及开发工具更加成熟(Hardhat 框架、Remix IDE ...)通常我们认为以太坊的开发体验更简单爽快,而 Solana 开发的上手难度高。所以尽管现在 Solana 的热度很高,事实上以太坊的***数目仍然是远多于 Solana 的。

特定路况下,***赛车没有改装车跑得快。Rust 就像***赛车,有力地保证了 Solana 的性能和安全性,但非为链上程序开发这条赛道而生,反而造成了驾驶(开发)难度的上升。采用基于 Rust 、为链上开发定制语言的公链则相当于改装了这辆赛车,使其更适应路况。Solana 在这点上处于劣势。

总结

Solana 的智能合约编程模型是创新的。它提供了一种无状态的智能合约开发方法,将 Rust 作为主要编程语言,以及让逻辑与状态分离的架构,为开发人员构建和部署智能合约提供了强大环境,确保安全性和性能,但开发难度较大。Solana 专注于高吞吐量、低成本和可扩展性,仍是寻求创建高性能 dApps 的开发人员目前的理想选择。

参考链接

https://solana.com/docs

https://ethereum.org/en/developers/docs

https://www.anchor-lang.com/

WEEX唯客交易所是全球交易深度***好的合约交易所之一,位居CMC交易所流动性排名前五,订单厚度、价差领先同行,微秒级撮合,零滑点、零插针,***大程度降低交易成本及流动性风险,让用户面对极端行情也能丝滑成交。

(WEEX交易所官网:www.weex.com)

WEEX交易所宣布将于今夏上线其全球生态激励通证WEEX Token(WXT)。WXT被设计为WEEX交易所生态系统的基石,作为动态激励机制,主要用于激励WEEX交易平台社区的合作伙伴、贡献者、先驱和活跃成员。

WXT总供应量100亿枚,初始流通量39亿枚,WEEX交易平台投资者保护基金、WXT生态基金各持有15%,15%用于持币激励,5%面向代理、渠道等合作伙伴私募,其余50%将全部用于WEEX交易所生态激励,包括:团队激励(20%)、活动拉新(15%)、品牌建设/KOL合作(15%)。WEEX Token是一种实用型代币,规划了丰富的使用场景和赋能机制,包括:Launchpad、近10项持有者专属权益,以及回购销毁通缩机制等。

据悉,WXT仅开放代理、渠道等合作伙伴折扣认购,未来零售投资者可通过新用户注册、交易挖矿、参与平台活动等方式获得WXT奖励。

WEEX官网:weex.com

WXT专区:weex.com/wxt

你也可以在 CMCCoingecko非小号X (Twitter)中文 X (Twitter)YoutubeFacebookLinkedin微博 上关注我们,***时间获取更多投资资讯和空投福利。

在线咨询

WEEX华语社群:https://t.me/weex_group

WEEX英文社群:https://t.me/Weex_Global

文章版权及转载声明:

作者:0431网址导航本文地址:https://0431jz.cn/info/26114.html发布于 2024-05-18
文章转载或复制请以超链接形式并注明出处0431JZ.CN - 0431网址导航

赞(0