eosio.token 智慧合約介紹
一、目的
eosio.token系統合約定義了允許使用者為基於EOSIO的區塊鏈建立、發行和管理代幣的結構和操作,它演示了一種實現允許建立和管理代幣的智慧合約的方法。本文詳細介紹了eosio.token系統合約並在本地測試鏈上實際發行了代幣進行演示,適用於EOS智慧合約的初級開發人員,熟悉如何進行代幣的建立、發行和轉移。
二、概述
(一)合約資料結構簡介
eosio.token合約透過使用兩個內部多索引結構管理代幣、賬戶及其相應餘額的集合:accounts和 stats。accounts多索引表的每一行都包含account物件的例項,而account物件包含有關一個代幣餘額的資訊。accounts表的範圍是一個eosio帳戶,它根據代幣的符號對行進行索引。這意味著當一個人在 accounts多索引表中查詢一個賬戶名時,結果是該賬戶目前持有的所有代幣。
類似地,stats多索引表為每一行儲存currency_stats物件的例項,其中包含有關當前供應量、最大供應量和符號代幣的建立者帳戶的資訊。stats表的範圍是代幣符號。因此,當查詢stats表中的代幣符號時,如果查詢的符號代幣先前已建立,則結果是對應於查詢符號代幣的單個條目/行,否則為空。
(二)合約方法簡介
eosio.token 合約定義了create、issue、retire、transfer、open、close 共六個action供使用者建立和管理代幣。
三、環境準備
(一)一條正在執行且可訪問的區塊鏈
中移鏈(基於EOS)測試環境搭建
https://mp.weixin.qq.com/s?__biz=MzkwNjI1OTg1MA==&mid=2247489304&idx=2&sn=6d22be6194d821dbd04f6079c79930a3&scene=21#wechat_redirect
(二)確保本地錢包已開啟並解鎖
如何建立錢包:
https://developers.eos.io/manuals/eos/latest/cleos/how-to-guides/how-to-create-a-wallet圖片
四、合約方法
(一)create
Type: void
允許issuer帳戶在maximum_supply的供應中建立代幣。如果驗證成功,將在statstable中為代幣符號範圍建立一個新條目。
(二)issue
Type: void
此 action 向 to 帳戶發放 quantity 代幣。
(三)retire
Type: void
與create操作相反,如果所有驗證都成功,則會扣除statstable.supply金額。
(四)transfer
Type: void
允許from賬戶將quantity代幣轉移到to賬戶。一個賬戶被記入借方,另一個賬戶被記入quantity代幣的貸方。
(五)open
Type: void
允許ram_payer作為付款賬戶為代幣symbol建立一個餘額為零的帳戶 owner。
可以在issue61、issue62閱讀更多資訊。
(六)close
Type: void此操作與open相反,它關閉代幣symbol的帳戶owner 。
五、建立、發行和轉移代幣
(一)獲取合約
1、轉到contract目錄
cd CONTRACTS_DIR
2、拉取合約原始碼
git clone
cd eosio.contracts/contracts/eosio.token
(二)為合約建立賬戶
您可能需要先解鎖錢包
cleos create account eosio eosio.token PUBLIC_KEY
(三)編譯合約
eosio-cpp -I include -o eosio.token.wasm src/eosio.token.cpp --abigen
(四)部署代幣合約
cleos set contract eosio.token CONTRACTS_DIR/eosio.contracts/contracts/eosio.token --abi eosio.token.abi -p eosio.token@active
結果應類似於以下內容:
Reading WASM from ... Publishing contract... executed transaction: 69c68b1bd5d61a0cc146b11e89e11f02527f24e4b240731c4003ad1dc0c87c2c 9696 bytes 6290 us # eosio <= eosio::setcode {"account":"eosio.token","vmtype":0,"vmversion":0,"code":"0061736d0100000001aa011c60037f7e7f0060047f... # eosio <= eosio::setabi {"account":"eosio.token","abi":"0e656f73696f3a3a6162692f312e30000605636c6f73650002056f776e6572046e61... warning: transaction executed locally, but may not be confirmed by the network yet ]
(五)建立代幣
cleos push action eosio.token create '[ "eosio", "1000000000.0000 SYS"]' -p eosio.token@active
結果應類似於以下內容:
executed transaction: 0e49a421f6e75f4c5e09dd738a02d3f51bd18a0cf31894f68d335cd70d9c0e12 120 bytes 1000 cycles # eosio.token <= eosio.token::create {"issuer":"eosio","maximum_supply":"1000000000.0000 SYS"}
另一種方法使用命名引數:
cleos push action eosio.token create '{"issuer":"eosio", "maximum_supply":"1000000000.0000 SYS"}' -p eosio.token@active
結果應類似於以下內容:
executed transaction: 0e49a421f6e75f4c5e09dd738a02d3f51bd18a0cf31894f68d335cd70d9c0e12 120 bytes 1000 cycles # eosio.token <= eosio.token::create {"issuer":"eosio","maximum_supply":"1000000000.0000 SYS"}
該命令建立了一個新代幣
SYS
,精度為 4 位小數,最大供應量為 1000000000.0000 SYS。建立此代幣需要eosio.token合約的授權。出於此原因,
-p eosio.token@active
用來授權。
(六)發行代幣
在我們的例子中,發行人可以向發行人賬戶發行代幣。
cleos push action eosio.token issue '[ "eosio", "100.0000 SYS", "memo" ]' -p eosio@active
結果應類似於以下內容:
executed transaction: a26b29d66044ad95edf0fc04bad3073e99718bc26d27f3c006589adedb717936 128 bytes 337 us # eosio.token <= eosio.token::issue {"to":"eosio","quantity":"100.0000 SYS","memo":"memo"} warning: transaction executed locally, but may not be confirmed by the network yet ]
(七)轉移代幣
現在帳戶eosio已發行代幣,將其中一些代幣轉移到帳戶bob 。
cleos push action eosio.token transfer '[ "eosio", "bob", "25.0000 SYS", "m" ]' -p eosio@active
您需要先建立bob賬戶
結果應類似於以下內容:
executed transaction: 60d334850151cb95c35fe31ce2e8b536b51441c5fd4c3f2fea98edcc6d69f39d 128 bytes 497 us # eosio.token <= eosio.token::transfer {"from":"eosio","to":"bob","quantity":"25.0000 SYS","memo":"m"} # eosio <= eosio.token::transfer {"from":"eosio","to":"bob","quantity":"25.0000 SYS","memo":"m"} # bob <= eosio.token::transfer {"from":"eosio","to":"bob","quantity":"25.0000 SYS","memo":"m"} warning: transaction executed locally, but may not be confirmed by the network yet ]
現在使用cleos get currency balance檢查“bob”是否獲得了代幣
cleos get currency balance eosio.token bob SYS
結果:
25.00 SYS
檢查eosio的餘額,注意代幣已從帳戶中扣除:
75.00 SYS
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70012206/viewspace-3006236/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 智慧合約系統開發原理介紹丨智慧合約開發原始碼詳情原始碼
- 中移鏈合約常用開發介紹(三)工程化開發智慧合約
- 智慧合約語言 Solidity 教程系列1 – 型別介紹Solid型別
- CeresDAO智慧合約模式系統開發技術介紹模式
- Conflux 內建合約功能介紹UX
- 智慧合約全棧介紹 – Howard | Jeth 第二期全棧
- 智慧合約全棧介紹 - Howard | Jeth 第二期全棧
- 智慧合約全棧介紹 – Howard | Jeth 第一期全棧
- 智慧合約全棧介紹 - Howard | Jeth 第一期全棧
- 分享二智慧合約自動檢測工具程式碼介紹
- EOS系統合約總體介紹
- 百度安全研究院:區塊鏈智慧合約介紹區塊鏈
- matic馬蹄鏈智慧合約dapp系統開發搭建介紹APP
- 3.7 智慧合約與solidity簡介Solid
- 智慧合約全棧介紹 - 鍾文斌 | Jeth 第三期全棧
- EOS系統合約鏈賬戶介紹
- Web3.0智慧合約DAPP系統開發技術介紹丨框架WebAPP框架
- NFT碎片化系統開發智慧合約定製詳細功能介紹
- 關於智慧合約DAPP質押模式系統開發詳情介紹APP模式
- 約束介紹
- 區塊鏈——以太坊、智慧合約簡介區塊鏈
- web3 產品介紹 MyEtherWallet 方便和智慧合約互動的錢包Web
- NFT鏈上鑄造交易智慧合約模式系統開發詳情介紹模式
- PG盤古OSK挖礦dapp系統開發智慧合約開發介紹APP
- polygon鏈(matic)矩陣公排智慧合約系統開發詳細介紹Go矩陣
- 中移鏈系統合約管控功能介紹
- NFT鑄造合集智慧合約交易平臺系統開發丨技術介紹
- 關於馬蹄鏈智慧合約DAPP系統開發方案流程詳情介紹APP
- DAPP馬蹄鏈智慧合約專案系統開發詳情技術介紹APP
- Defi 借貸挖礦丨 DAPP 智慧合約模式系統開發技術介紹APP模式
- DAPP互助公排矩陣模式系統開發丨智慧合約技術介紹APP矩陣模式
- NFT鑄造鏈上智慧合約模式系統開發丨DAPP技術介紹模式APP
- SQLServer約束介紹SQLServer
- 去中心化交易所swap系統開發dapp智慧合約定製功能介紹中心化APP
- MMM(3M)互助dapp系統開發智慧合約部署詳細邏輯介紹APP
- NFT股權分割拆分眾籌dapp系統開發智慧合約部署詳細功能介紹APP
- NFT鑄造智慧合約交易平臺系統開發丨Opensea系統開發介紹
- 智慧合約從入門到精通:智慧合約的前世今生