当前位置: 代码网 > 科技>区块链>区块链技术 > Solana开发学习笔记(一)——从Hello World出发

Solana开发学习笔记(一)——从Hello World出发

2024年04月30日 区块链技术 我要评论
本章对Solana区块链的基本概念进行了简要介绍,并介绍了开发Solana链上程序必须安装和配置的编程环境,通过对Hello World这个官方演示项目源码的解读,了解如何使用Rust开发链上程序,...

笔者注:因近期笔者工作需要,开始接触 solana 链上程序开发。本系列文章是笔者的学习笔记,既是为了备忘,也是希望得到 solana 开发者的指点与交流。本系列文章将默认读者已经掌握 rust 的基础语法,故不涉及对 rust 语法细节的解释。如果读者对 rust 基础语法还不熟练的话,本文下方推荐的 rust 入门书籍《rust 编程入门、实战与进阶》学习。

1.1 solana 简介

solana 是一个高性能、无许可的底层公链,专注于在不牺牲去中心化或安全性的前提下提供可扩展性。solana 主网于 2020 年一季度上线,目前主网的全球节点超过 800 个,tps 最高可达 6.5 万,出块时间约 400 毫秒。

solana 的共识算法采用 poh(历史证明),其核心是一个去中心化时钟,该时钟旨在解决缺乏单个可信赖时间源在分布式网络中的时间问题。poh 免除了在节点网络中广播时间戳的需求,从而提高整个网络的效率。

1.1.1 链上程序

solana 的智能合约叫做链上程序(on-chain program),solana 官方提供了 rust 和 c 的 sdk 来支持开发链上程序。链上程序的开发工作流如图 1-1 所示,开发者可以使用工具将程序编译成 berkley packet filter (bpf) 字节码(文件以 .so 为扩展名),再部署到 solana 链上,通过 sealevel 并行智能合约运行时去执行智能合约的逻辑。此外,基于 solana json rpc api,官方提供了诸多 sdk 用于客户端与 solana 链上数据交互。

图 1-1 链上程序开发工作流

1.1.2 账户模型

与以太坊类似,solana 也是基于账户模型的区块链。通过将任意状态存储于链上账户并同步复制给集群中的所有节点,可以创建复杂而强大的去中心化应用程序。

solana 提供了一套不同于以太坊的账户模型,账户定义的字段如表 1-1 所示。solana 的账户可以分为可执行账户和不可执行账户。

  • 可执行账户:存储不可变的数据,主要用于存储程序的 bpf 字节码。
  • 不可执行账户:存储可变的数据,主要用于存储程序的状态。

表 1-1 账户定义字段

字段描述
lamports账户余额
owner账户所有者
executable是否为可执行账户
data账户存储的数据
rent_epochsolana链上程序的部署是按其账户大小进行定期收费的,如果账户无法支付租金,系统将清除该账号

我们知道以太坊上每个智能合约的代码和状态都存储在同一个账户中,而 solana 链上程序是只读或无状态的,即程序的账户(可执行账户)只存储 bpf 字节码,不存储任何状态,程序会把状态存储在其他独立的账户(不可执行账户)中。为了区分某个账户是用作哪个程序的状态存储,每个账户都指定了一个程序作为其所有者。程序可以读取其不作为所有者的账户中的状态,但只有作为所有者的程序才能修改账户中的状态,任何其他程序所做的修改都会被还原并导致交易失败。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com