You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
One key difference, however, is that Solana does not require you to deploy a new contract for each token you create. Instead, it simply requires you to send instructions to the Token Program and it will create and mint tokens on your behalf.
你不用每次建立一個token都要部署一個新的合約, 你只要送指令(instructions)到 Token Program, 該program就會幫你建造和鑄造代幣
要理解 Solana account model, account 就像是一個儲存桶, 可以存任何東西, 從token 到 program state(integers, strings, public keys)都可以, 甚至program本身
每個account有自己的owner, 一個owner可以擁有多種不同的accounts
account除了有owner的address外, 也有自己的address方便識別
Vanity Address: 產生可以方便識別的address
$ spl-token create-token --enable-freeze
加了 --enable-freeze 才有凍結該代幣的權限, 不然一但鑄造了, 就無法凍結
具體來說, spl-token 執行了兩條instructions(指令):
To create a new account (this is carried out by the System Program) 創建一個新帳戶(這由系統程序執行)
To recognize this new account as a Token Mint 將此新帳戶識別為令牌鑄幣廠
查看該代幣mint account, 會發現兩個 Mint Authority 和 Freeze Authority, 原則上一開始就是一開始建立該鑄造廠的人
注意 mint account一開始沒有任何供應量supply, mint account只是儲存描述該token的metadata, 並沒有持有實際token
$ spl-token mint <PASTE-YOUR-MINT-ADDRESS-HERE> 1000000000
這樣會有錯誤:
Minting 1000000000 tokens Token: <YOUR-MINT-ADDRESS> Recipient: <SOME-NEW-ADDRESS>Account could not be parsed as token account: pubkey=<SOME-NEW-ADDRESS>
場外教學
https://www.brianfriel.xyz/how-to-create-a-token-on-solana/ token外場教學
不管 FT 或是 NFT 都是利用 SPL(Solana Program Library)建立的
代幣跟以太坊的很像, 差別是:
One key difference, however, is that Solana does not require you to deploy a new contract for each token you create. Instead, it simply requires you to send instructions to the Token Program and it will create and mint tokens on your behalf.
你不用每次建立一個token都要部署一個新的合約, 你只要送指令(instructions)到 Token Program, 該program就會幫你建造和鑄造代幣
要理解 Solana account model, account 就像是一個儲存桶, 可以存任何東西, 從token 到 program state(integers, strings, public keys)都可以, 甚至program本身
每個account有自己的owner, 一個owner可以擁有多種不同的accounts
account除了有owner的address外, 也有自己的address方便識別
Vanity Address: 產生可以方便識別的address
$ spl-token create-token --enable-freeze
加了
--enable-freeze
才有凍結該代幣的權限, 不然一但鑄造了, 就無法凍結具體來說, spl-token 執行了兩條instructions(指令):
Solana將兩個instructions(指令)綁到同一個transaction中
流程就是這樣, 我們的account告訴token program要做token, 那system program會先建立一個新帳戶,
然後 token program就會接著把該system program建立的新帳戶做初始化的狀態
查看transaction 會發現, 我們自己的account會被扣掉約 0.31usd(台幣約9塊) 的 SOL, 然後被扣掉的這些SOL, 主要都流到了我們建立的鑄造廠mint account
相對於其他交易(transaction), 建立account的費用是高很多的, why? 因為建立一個新的account, 我們要求所有的validators節點追蹤儲存在account中的所有資訊, 為了彌補這種資源消耗, Solana收取基於時間和空間的費用, 叫做rent(租金)
如果該account沒有符合最低rent需求, 就會被關閉
為了避免這樣, 幾乎所有account都付一次性的費用(標記該account為 rent-exempt), 這樣就可以永久存活
查看該代幣mint account, 會發現兩個 Mint Authority 和 Freeze Authority, 原則上一開始就是一開始建立該鑄造廠的人
注意 mint account一開始沒有任何供應量supply, mint account只是儲存描述該token的metadata, 並沒有持有實際token
$ spl-token mint <PASTE-YOUR-MINT-ADDRESS-HERE> 1000000000
這樣會有錯誤:
Recipient address是新的沒看過的,
會報錯是說這個account不能被解析為token account
在 Solana 上,我們的代幣餘額都存儲在自己獨特的賬戶中。 這種帳戶叫做 Associated Token Accounts
這個衍生出來的account只被當作為一般的account, 所以需要修正一下:
spl-token create-account <PASTE-YOUR-MINT-ADDRESS-HERE>
有ok的, 在solana explorer上面就會標記為 Token Account
新建立的token都會被標記為 Unknown Token, 如果你要註冊你的名字和logo, 你就要提交程式碼到 Solana-labs的 token-list 裏面:
assets/mainnet
src/tokens/solana.tokenlist.json
如果你要在devnet加上logo和名字, 那麼要加上 chainId 為 103
同場加映logo顏色表:
綠: #3AEEAA
藍綠: #55A6C6
紫紅: #CF2CFC
尋找特定名字開頭的keypair
--start-with
尋找開頭為park
的, 只列出第一個符合的address, 忽略大小寫建立給 Token 的 Address: (後面加上我們建立的keypair)
Transferring Tokens
我們發送一個instruction給 token program, 裡面有一個叫做 transfer的 command
token program 通知 system program 幫我們要發送的對象建立一個associated account 給我們的對象, 該account的owner當然就設定為我們要發送的對象
然後我們的token mint就會transfer 指定數量的token過去
Freezing Tokens
可以凍結或是解凍 associated token account
Burning Tokens
摘要
建立一個token並且mint之後,
在 user account 可以查詢 token list
token mint 會出現 supply 的數量
(associated) token account 會出現 token balance
CLI
https://spl.solana.com/token
CLI整理
CLI是更新最快的, 用這個可以確認到最新的功能
spl-token
和solana
共用 config設定檔set cluster RPC URL:
$ solana config set --url https://api.devnet.solana.com
建立新的keypair: https://docs.solana.com/wallet-guide/file-system-wallet
Set keypair :
$ solana config set --keypair ${HOME}/...../my-keypair.json
查看 keypair:
airdrop:
$ solana airdrop 1
create token:
explorer.solana.com 查看, 可以看到目前supply為 0 , 或是利用:
所以我們需要鑄造Mint token, 首先需要建立一個account來放鑄造好的token
這個account一開始應該是空的: (注意是用token address查, 不是用該account address查詢)
建立好account, 就可以 mint了:
這樣再度查詢的時候, token supply為100, 該account的token balance也為100 :
查看一下目前擁有的代幣種類:
Wrap native SOL in a SOL token account:
這個
5.......k
是一個 Token Account查看solana explorer 會發現, 該 Token Account 的 Owner 為我們剛所創建的my-keypair.json的account
4.......W
wrap 進去的 1顆SOL 被分為: Token balance (SOL) 數量為 0.997960720, 和 Rent-exempt reserve (SOL) , 數量為 0.002039280, 加起來為1
查看
4..................W
的交易紀錄, 就會看到是從4..................W
轉了1顆SOL 到5.......k
這個token account注意在
4..................W
被扣掉的是. 1顆SOL + fee (0.000005 SOL)在
5.......k
存入了一顆SOL這個token有兩個account , 一個是存放mint好的token , 一個是存放放入的SOL
把token轉給其他帳戶:
一樣, 你要轉過去的address也要有可以存放該token的account才行, 如果還沒有, 需要加上
--fund-recipient
參數, 會順便建立receiver關聯的可存該token的account , 例如這裡receiver為G....Z
, 他的可存該token的account為H.....G
注意用這個方式, 費用是由sender承擔
查看一下該token account的狀態:
彼此這些關聯的token account 可以互相轉帳
The text was updated successfully, but these errors were encountered: