的全稱是 ,它是在 Solana 鏈上運行的一系列程式。你可以把它想像成官方寫好的一些合約,讓開發者可以輕鬆調用功能。你可以參考這篇文章詳細了解這個概念。
It's called, it's a series of programs that run on the Solana chain. You can imagine it as some of the contracts that are officially written so that developers can ease their functions. You can refer to .
今天我們會來體驗一下這個系列中的 ,我們將會透過 製作 Cli 介面,讓我們可以發行自己的 。你可以在這裡參考這篇文章的範例程式碼。
Today we will be going through this series and we will be making a Cli interface so that we can post our own. You can refer to the sample code for this article at
Solana 是一個開源的區塊鏈項目,它實現了高性能的抗審查區塊鏈,提供各種去中心化金融 (DeFi) 的解決方案。Solana 每秒交易量超過 5 萬筆,平均出塊時間約 2 秒(相較於以太坊每秒 15 筆,幣安智能幣約 100 筆)。由於金融交易的速度與安全需求,這些創新的速度讓 Solana 鏈快速被許多 Defi 以及區塊鏈項目喜愛。 Solana 帶來的重要創新之一,就是由 Anatoly Yakovenko 開發的歷史證明 (PoH) 共識機制。這個概念讓該 Solana 擁有極大的可規模性。 One of the important innovations that Solana has brought about is the historical evidence of a common understanding of Solana 協定的目的,在於同時服務小型用戶與企業顧客。該協定的設計目標,就是要在降低交易成本的同時,仍然確保可規模性與高速處理。 The objective of the Solana agreement is to serve small users and business customers at the same time. SOL 是 Solana 的原生 Token,目前有兩種功能: SOL is the original Token of Solana and currently has two functions:
讓我們來準備一下開發環境。
Let's get ready for the development environment.
首先,請按以下步驟安裝 :
First, please install at the following steps:
- 利用 來驗證是否安裝成功
- 如果沒有找到 ,請嘗試設置環境變數
- 如果不使用 ,可以直接透過 官網安裝
然後,讓我們安裝 Solana 開發環境。Solana 目前有三種網路,分別是:
Then let's Establish Solana Development Environment. Solana currently has three kinds of networks:
- Mainnet:
- Testnet:
- Devnet:
我們也可以在本機上安裝自己的節點,這樣在開發測試上就會方便許多。如果只是想嚐鮮的讀者,可以考慮直接使用 完成教學。而如果你是想深入 開發的話,就可以使用本地節點方便開發。
We can also install our own nodes on this machine, which will be easier to do on the development test. If you want to be a fresh reader, you can consider using them directly to complete your education. And if you want to go deeper, you can use local nodes to make it easier.
無論是使用本地節點或 ,都需要安裝 Solana 開發環境節點與 Solana Tool。以下內容會以 為例子,其他平台的朋友請參考安裝指南。簡單來說,我們要先在 上輸入指令:
安裝完成後會出現安裝位置,然後我們需要手動設置環境變數。比如說,如果安裝完後出現:
When the installation is complete, the installation will appear, and then we need to set the environmental variables manually . For example, if the installation is completed:
我們就要設置 這樣的環境變數。
We're going to set up these environmental variables.
設置完成後,可以輸入 來驗證是否安裝成功。
When set up, you can enter to verify installation success.
接下來,讓我們檢查一下機器上的錢包。我們應該會得到一個錢包地址 ,這就是我們本地機器上的錢包,所有在機器上進行的區塊鏈交易,我們都會使用本地機器錢包來進行交易。
Now, let's check the wallet on the machine. We should get a wallet address. Here's the wallet on our local machine, all the chain deals on the machine, and we'll use the local machine wallet to make the deal.
3. 用你習慣的 開啟資料夾
Open folders as you used to do.
我們可以看到目錄結構中有:
We can see the contents of the directory:
- :這是撰寫程式原始碼的地方
- , 如同 , 守護著我們的套件依賴管理。
在開始之前,我們需要先安裝將會使用到的依賴。讓我們打開 ,在當中加入以下的 :
Before starting, we need to install the dependencies that will be used. Let's open them and add the following:
如下所示:
As follows:
來介紹一下這些依賴的用途:
Here's a description of the use of these dependencies:
- :可以方便地將命令行解析成一個 ,這對於我們 的結構上很便利。
- :可以幫助 顯示進度條資訊,你可以在這裡看看範例。
- :可以印出日誌
- :可以加入環境設定來顯示日誌
- :可以操作 區塊鏈的 接口
- :可以操作
接著,讓我們在 內創建一個名為 的資料夾,並且新增兩個檔案:
Next, let's create a folder named, and add two files:
這個主要的程式碼很簡單,我們先創建 的 ,然後再創建 我們的 ,最後發送交易。
This major code is simple, we create it first, then we create it, and then we send the deal.
這邊我們需要先釐清 的一些機制。這 部分與其他區塊鏈有點不同。在其他區塊鏈上,比如是以太坊 ,它的 最常見標準是 ,在轉帳的時候,其實 與 的地址基本上是一樣的,就如下圖所示:
Here we need to clear up some of the mechanisms. This is a bit different from other sector chains. On other sector chains, for example, in Taiku, its most common standard is , which is essentially the same address at the time of the transfer, as shown in the figure below:
但在 鏈上,每個 都有自己的 ,每個地址底下可以有多個 ,有點像是在銀行中又開立了外幣存款那種感覺:
But on the chain, each has its own, and there's more under each address, sort of like opening up a foreign currency deposit in a bank:
接下來,我們要了解一些 Token 的基本操作,大概可以分成下列幾類:
Next, we need to understand some of the basic Token operations, which can probably be divided into the following categories:
- :Token 的轉帳操作
- :Token 的鑄造
- :Token 的銷毀
- :操作 Token 的授權者
如果想深入了解 SPL Token 的機制,可以參考這篇文章。
If you want to know more about SPL Token's scheme, you can refer to the article at .
要創建一個 Token,流程就會是:創建 Token -> 鑄造 Token。感覺有點像是發行美元(定義),然後印製美元(供應量)一樣。
In order to create a Token, the process is to create Token-> molten Token. It's kind of like issuing dollars, then printing dollars.
好的!這邊完成之後,我們要到 來修改一下程式碼,讓我們可以呼叫指令。
Okay, when this is done, we're gonna come over here and change the code so we can call the command.
// /src/main.rs #[macro_use] extern crate log; extern crate env_logger; use env_logger::{Builder, Target}; use log::{debug, error, info, warn}; use std::env; use structopt::StructOpt; use std::num::ParseIntError; mod create_spl_token; // 入口 fn main() { let mut builder=Builder::from_default_env(); builder.target(Target::Stdout); builder.init(); let args=Cli::from_args(); // 分析指令,並且執行 match args.cmd { Command::SPL(value)=> match value.spl_operating { SPLOperating::CreateToken(info)=> create_spl_token::main(info.decimals), }, } info!("success!"); } #[derive(Debug, StructOpt)] struct Cli { #[structopt(subcommand)] // Note that we mark a field as a subcommand cmd: Command, } #[derive(Debug, StructOpt)] enum Command { /// SPL SPL(SPL), } #[derive(Debug, StructOpt)] struct SPL { /// SPL Operating #[structopt(subcommand)] // Note that we mark a field as a subcommand spl_operating: SPLOperating, } // subsubcommand! #[derive(Debug, StructOpt)] enum SPLOperating { /// Create Token CreateToken(CreateToken), } #[derive(Debug, StructOpt)] struct CreateToken { /// decimals #[structopt(short, default_value="6", parse(try_from_str=parse_hex))] decimals: u8, } fn parse_hex(src: &str) -> Result<u8, ParseIntError> { u8::from_str_radix(src, 16) }
這邊的程式碼很簡單,我們製作了一個 ,然後分析指令,並且執行我們剛剛寫好的 。
The code here is simple, we make one and then analyze the command and execute what we just wrote.
我們可以在 嘗試執行一下指令。讓我們邊把 節點設定指向。
We can try to execute the command. Let's point at the node settings.
應該會看到一段輸出,顯示目前的 。
接著我們在專案內執行。
Should see a output showing the current.
We're running it in the project.
接著應該會看到一段輸出。
And then I think I'll see a piece of the output.
然後我們把 中的地址,貼到區塊鏈遊覽器查詢。記得我們要使用。
And then we put the address into the block chain browser. Remember we're going to use it.
恭喜!到這裡我們已經完成透過 製作一個 介面,並且發行 的工作了!
Congratulations! We've done our job by making an interface and issuing it!
我們透過了 製作一個 介面,並且發行 ,在其中我們了解了 鏈上的 機制。了解 的基本生命週期,以及 的機制。所有的程式碼都可以在這邊找到,祝你有個美好的 夜晚,我們下次見。當然如果你有任何問題,歡迎在任何地方與我聯絡!
We've made an interface and published it, in which we understand the mechanisms on the chain. Understanding the basic life cycle, and the mechanisms. All codes can be found here at
注册有任何问题请添加 微信:MVIP619 拉你进入群
打开微信扫一扫
添加客服
进入交流群
发表评论