SPL 的全称是 Solana Program Library,它是在 Solana 链上运行的一系列程序。你可以把它想像成官方写好的一些合约,让开发者可以轻松调用功能。
今天我们会来体验一下这个系列中的 Token Program,我们将会透过 Rust 制作 Cli 界面,让我们可以发行自己的 Token。
初步认识Solana
Solana 是一个开源的区块链项目,它实现了高性能的抗审查区块链,提供各种去中心化金融 (DeFi) 的解决方案。Solana 每秒交易量超过5 万笔,平均出块时间约2 秒(相较于以太坊每秒15 笔,币安智能币约100 笔)。由于金融交易的速度与安全需求,这些创新的速度让Solana 链快速被许多Defi 以及区块链项目喜爱。
Solana 带来的重要创新之一,就是由 Anatoly Yakovenko 开发的历史证明 (PoH) 共识机制。这个概念让该 Solana 拥有极大的可规模性。
Solana 协定的目的,在于同时服务小型用户与企业顾客。该协定的设计目标,就是要在降低交易成本的同时,仍然确保可规模性与高速处理。
SOL 是Solana 的原生Token,目前有两种功能:
- 支付Solana 的交易,智能合约的执行手续费
- 抵押成为节点验证交易获得奖励。
环境准备
让我们来准备一下开发环境。
首先,请按以下步骤安装Rust
- brew install rustup
- rustup-init
- 利用 rustc --version 来验证是否安装成功
- 如果没有找到 rustc,请尝试设置环境变数 export PATH="$HOME/.cargo/bin:$PATH"
- 如果不使用 Homebrew,可以直接透过 Rust 官网安装
然后,让我们 Solana 目前有三种网络,分别是:
- Mainnet:https://api.mainnet-beta.solana.com
- Testnet:https://api.testnet.solana.com
- Devnet:https://api.devnet.solana.com
我们也可以在本机上安装自己的节点,这样在开发测试上就会方便许多。如果只是想嚐鲜的读者,可以考虑直接使用 Devnet 完成教学。而如果你是想深入 Solana 开发的话,就可以使用本地节点方便开发。
无论是使用本地节点或 Devnet,都需要安装 Solana 开发环境节点与 Solana Tool。以下内容会以 Mac 为例子,其他平台的朋友请参考安装指南。简单来说,我们要先在 Terminal 上输入指令:
安装完成后会出现安装位置,然后我们需要手动设置环境变数。比如说,如果安装完后出现:
我们就要设置 PATH="/home/solana/.local/share/solana/install/active_release/bin:${PATH}" 这样的环境变数。
设置完成后,可以输入 solana --version 来验证是否安装成功。
接下来,让我们检查一下机器上的钱包。我们应该会得到一个钱包地址 solana address,这就是我们本地机器上的钱包,所有在机器上进行的区块链交易,我们都会使用本地机器钱包来进行交易。
最后是 cargo,如同所有语言平台一样,Rust 也有自己的套件依赖管理。cargo 之于 Rust,就如同 npm 之于 node.js、cocoapods 之于 Swift 一样。我们将透过 cargo 来建立一个 Rust 项目:
1. 安装项目产生器 cargo install cargo-generate
2. 创建项目 cargo new spl-token
3. 用你习惯的 IDE 开启资料夹
我们可以看到目录结构中有:
- src:这是撰写程序原始代码的地方
- Cargo.toml,Cargo.lock 如同 Podfile,Podfile.lock 守护着我们的套件依赖管理。
安装依赖
在开始之前,我们需要先安装将会使用到的依赖。让我们打开 Cargo.toml,在当中加入以下的 dependencies:
如下所示:
来介绍一下这些依赖的用途:
- structopt:可以方便地将命令行解析成一个 Struct,这对于我们 Cli 的结构上很便利。
- indicatif:可以帮助 Cli 显示进度条资讯,你可以在这裡看看范例。
- log:可以印出日志
- env_logger:可以加入环境设定来显示日志
-
solana_sdk:可以操作 Solana 区块链的 API接口
- solana-client
- solana-cli-config
- spl-token:可以操作 Solana Program Library
撰写原始码
接著,让我们在 src 内创建一个名为 create_spl_token 的资料夹,并且新增两个档案:
这个主要的程序代码很简单,我们先创建 Token 的 Account,然后再创建 mint 我们的 Token,最后发送交易。
这边我们需要先釐清 SLP Token 的一些机制。这 Token 部分与其他区块链有点不同。在其他区块链上,比如是以太坊 ETH,它的 Token 最常见标准是 ERC20,在转帐的时候,其实 ETH address 与 ERC20 Token 的地址基本上是一样的,就如下图所示:
但在 SolanaSPL TokenToken AccountSPL Token Account
接下来,我们要了解一些Token 的基本操作,大概可以分成下列几类:
- transfer:Token 的转帐操作
- mint:Token 的铸造
- burn:Token 的销毁
- authority:操作Token 的授权者
要创建一个Token,流程就会是:创建Token -> 铸造Token。感觉有点像是发行美元(定义),然后印制美元(供应量)一样。
好的!这边完成之后,我们要到 src/main 来修改一下程序代码,让我们可以呼叫指令。
这边的程序代码很简单,我们制作了一个 Cli 的入口,然后分析指令,并且执行我们刚刚写好的 create_spl_token。
我们可以在terminal 尝试执行一下指令。让我们边把 Solana 节点设定指向Devnet。solana config set --url https://api.devnet.solana.com
应该会看到一段输出,显示目前的 RPC URL: https://devnet.solana.com。
接著我们在专案内执行。RUST_LOG=debug cargo run spl create-token
接着应该会看到一段输出。
然后我们把 Created Token Mint: 6uze7gNUwRSEARX49k8oiF3FdZXXXXXXXXXXX 中的地址,贴到区块链游览器查询。记得我们要使用Devnet。
恭喜!到这里我们已经完成透过 Rust 制作一个 Cli 界面,并且发行 SPL Token 的工作了!
总结
我们透过了Rust 制作一个 Cli 界面,并且发行 SPL Token,在其中我们了解了 Solana 链上的 Token 机制。了解 Token 的基本生命周期,以及 Token Account 的机制。
本文链接地址:https://www.wwsww.cn/sol/9643.html
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。