solana基础核心概念

本文主要参考solana秘籍上的知识,学习和了解solana基础知识。万丈高楼平地起,通过学习solana基础知识,可以帮助你打好夯实地基,在以后的solana开发的日子中,能够取得更高的成就。安装命令行工具版本solana--version升级solanaupdate账户so

本文主要参考solana秘籍上的知识,学习和了解solana基础知识。万丈高楼平地起,通过学习solana基础知识,可以帮助你打好夯实地基,在以后的solana开发的日子中,能够取得更高的成就。

安装命令行工具

版本

solana --version

升级

solana update

账户

solana中账户模型是非常重要的概念,账户是用来存储状态的,账户是Solana开发中非常重要的概念。

  • 账户是用来存储数据的
  • 每个账户都有一个独一无二的地址
  • 每个账户大小不能超过10MB
  • 程序派生账户大小不能超过10KB
  • 程序派生账户可以用其对应程序进行签名
  • 账户大小是静态的
  • 账户数据存储需要付租金
  • 默认的账户所有者是系统程序

账户模型

在Solana中有三类账户:

  • 数据账户,用来存储数据

    • 系统所有权账户
    • 程序派生账户
  • 程序账户,用来存储可执行程序

  • 原生账户,指Solana上的原生程序

每个账户都有一个地址,以及一个所有者。下面详细列出一个账户存储的完整字段列表:

lamports: 这个账户拥有的lamport数量 owner: 这个账户的所有者程序 executable: 这个账户是否可以处理指令 data: 这个账户存储的数据字节码 rent_epoch: 下一个需要付租金的epoch

程序账户不存储状态

租金

租金可以通过关闭账户的方式来取回。lamport会被返还你的钱包。

程序

任何开发者都可以在Solana链上编写以及部署程序。Solana智能合约是所有链上活动的基础。Solana常用的开发流水线是序列化和反序列化过程流水线化。

Solna的经常测试环境为:

集群环境 rpc连接URL
Mainnet-beta https\://api.mainnet-beta.solana.com
Testnet https\://api.testnet.solana.com
Devnet https\://api.devnet.solana.com

下载anchor

cargo install --git https://github.com/coral-xyz/anchor avm --locked --force
avm install latest
avm use latest
avm --version

使用avm list命令查看anchor-cli可用版本

若程序需要指定版本,请在Anchor.toml使用

[toolchain]
anchor_version = "0.29.0"

部署程序

开发者可以使用命令行部署程序:

solana program deploy <PROGRAM_FILEPATH>

交易

客户端可以通过向一个集群提交交易来调用程序。一个交易可以包含多个指令,每个指令针对不同的程序。交易提交时,Solana运行库会自动的按顺序处理这些指令。如果某一个指令中的任何一部分失败,整个交易就会失败。

指令是solana上最基本的操作单元

每个指令都包含:

program_id: 所针对的程序id accounts: 需要读或写的全部账户组成的数组 instruction_data: 向指定程序所传输的数据的字节码

其中,任何交易,只要针对一个账户扣除SOL,或者修改其中的数据,都需要这个账户拥有者签名。在交易中,会被修改的账户都会被标记为writable(可写)。当交易的付费者支付了足够的租金 和交易费用时,一个账户可以被存入SOL而不用这个账户拥有者许可。

Solana网络收取两种费用:

  • 交易费,用于向网络广播消息(gas)
  • 租金,用于向区块链上存储数据

交易费只与交易所需的签名数量有关。

程序派生账户(PDA)

PDA 是程序派生账户(Program Derived Account)的缩写,是 Solana 区块链上的一种特殊账户类型。简单来说,PDA 是由 Solana 程序动态创建的账户。

PDA 具有以下特点:

  • 动态创建:PDA 是在程序运行时根据特定规则和参数动态创建的账户。
  • 关联性:PDA 与创建它的程序和参数密切相关,可以唯一确定一个 PDA。
  • 状态和数据存储:PDA 可用于存储程序的状态和数据,类似于普通账户。
  • 访问控制:PDA 的所有权和访问权限由创建它的程序控制。
  • PDA 在 Solana 生态系统中有广泛的应用,被用于实现各种功能和业务逻辑,如去中心化交易所、智能合约、非同质化代币(NFT)等。

通过使用 PDA,程序可以灵活地创建和管理账户来存储和操作数据,而无需预先创建大量的账户。这样可以提高效率和灵活性,并为开发者提供更多创新的空间。

本文参考

《Solana秘籍》https://solanacookbook.com/zh/

点赞 0
收藏 3
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
用户_18921
用户_18921
0xa10f...9ab5
江湖只有他的大名,没有他的介绍。