EOS開發基礎之四:使用cleos命令行客戶端操作EOS——智能合約之eosio.bios和eosio.token


現實世界中的合約,簡單地說,是一個參與活動的所有人都需要遵循的協議。合約可以是正式的法律合同(例如,金融交易),或者是簡單的游戲規則。典型的活動可以是諸如資金轉移(在金融合約的情況下)或游戲動作(在游戲合約的情況下)。

EOSIO智能合約是在區塊鏈上注冊,並在EOSIO節點上執行的軟件,它實現了一個“契約”的語義,其動作請求的總帳被存儲在塊鏈上。智能合約定義接口(動作、參數、數據結構)和實現接口的代碼。代碼被編譯成一個規范的字節碼格式,以便節點可以檢索和執行,而合約執行的交易記錄都會被存儲在區塊鏈上(例如,法律轉讓、游戲移動)。

在EOS中,有五個基礎的智能合約,分別是eosio.bios、eosio.token、 exchange和eosio.msig、eosio.system,下面我們就開始挨個挨個的聊聊怎么用這幾個智能合約哈。

 

1、eosio.bios(./cleos set contract eosio ../../contracts/eosio.bios -p eosio

“./cleos set contract eosio ../../contracts/eosio.bios -p eosio”這條命令的意思是為eosio這個賬戶加載eosio.bios合約,-p eosio 是指授權的帳戶是eosio,權限級別為active(默認)。

這個合約用於管理鏈上的堆棧和非堆棧資源,通過確認用戶持有的token控制資源分配,包括帶寬、CPU以及內存資源。加載eosio.bios智能合約,如下圖:

 

2、eosio.token(./cleos set contract ${account} ../../contracts/eosio.token -p ${account}

其實到目前為止,我們在cleos中的操作,多是基於錢包wallet和賬戶account的,和我們區塊鏈的核心——token——還沒有什么交集。

eosio.token就是一個用於產生token——錢——的合約。

利用該合約,我們可以創建很多可以由不同用戶管理的運行在同一合約上的token。

那么,我們需要為用戶加載一個eosio.token,那我們就先得創建一個用於管理這個合約的account,我們把該account也命名為eosio.token吧。如下圖,先生成兩對密鑰,解鎖錢包,將私鑰導入錢包,然后創建account,名為eosio.token

key1:
Private key: 5KdGLdpuM8SDcRWT6bHHS82vk4mLvow4BMSM87TU1ZC3dMd2e5R
Public key: EOS6tZtVTFpbxhhW6qCa4ixES4vR5hWPycA17cUSftrcpHR22qQ8w
key2:
Private key: 5K3DgxGemuJmeTZay3f8uhkzw6KarbSZbvg2skVijutwsMawerV
Public key: EOS82jRd6ejTwjEnrwRsmnTTCheG6twxxmtsJUp5icCXWcX123EWf

現在我們已經創建了eosio.token賬戶了,那接下來就為它加載eosio.token合約吧:

 

2.1加載eosio.token(命令:cleos set contract eosio.token ../../contracts/eosio.token -p eosio.token)

這樣就發布合約成功了(下邊那段黃色的字,你們喜歡的話自己讀一下是什么意思哈,我沒心情看它,回頭再想辦法解決就是)

 

 2.2創建自己的貨幣(./cleos push action eosio.token create '{"issuer":"eosio", "maximum_supply":"1000000000.0000 SYS"}' -p eosio.token)

不說廢話了,直接看執行結果吧。

在這里,eosio這個賬戶被稱為發行人,他現在擁有1000000000 SYS,還能夠執行諸如凍結、召回賬戶和白化用戶等操作。所以我們要發行新的SYS token,我們需要取得eosio這個賬戶的許可。

上邊執行的這條命令創建了一個名為SYS的新的token,其精度為4小數,最大供應量為1000000000SYS。

 

2.3發行token給某賬戶(./cleos push action eosio.token issue '[ "${account}", "100.0000 SYS", "memo" ]' -p eosio)

通過上邊的命令,eosio這個用戶給simayi發了100個SYS,現在這100個SYS就是可以用於流通的token了,下邊我們來試試轉賬功能。

 

2.4轉賬(./cleos push action eosio.token transfer '[ "${from}", "${to}", "25.0000 SYS", "m" ]' -p simayi)

 

這錢要從simayi那里轉到simaguang那,當然得通過simayi的同意了,雖然他們都姓司馬,但是親兄弟明算賬嘛。否則系統都不認。

通過我們小學時候的知識了解到,轉賬過后,simayi手里面應該還有75 SYS,而simaguang手里頭應該是有25 SYS,下面我們通過兩條命令來看看情況是不是這個情況吧。

查simayi:./cleos get currency balance eosio.token simayi

查simaguang:./cleos get currency balance eosio.token simaguang

果然哈,我們沒有計算錯。

另外我們也能夠看出,這轉賬過程是不花錢的。

但是,我們為啥看不到eosio這個發行者的token呢?你們猜為什么?

 

好了,先到這里吧。

下一節繼續。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM