1. 程式人生 > >EOS 權限管理之-權限的使用

EOS 權限管理之-權限的使用

應用 nts trac miss osi 列操作 成員 工作 con

首先,跟大家說聲抱歉,由於之前一直在準備EOS上線的一些工作,所以,很長時間沒有更新內容。今天正好有時間,也想到了一些題材,就來說一下這個話題。本文完全是個人見解,如有不當之處,歡迎指出。

前提回顧:
相信看這篇教程的人,對我之前的一些賬戶操作已經進行了了解,如果不了解的,可以移步 https://eosfans.io/topics/372

之前講了單個賬戶的權限的增、刪、改、查及一系列操作,並沒有講到權限的使用,那麽如果我們增加一個權限,但是不會用它,那又有什麽意義呢?
所以,今天就來學習一下權限的使用。

說明: 本教程,通過eosio.token合約的transfer來進行演示。

目錄

  1. 創建eosio.token
    並發放eosio.token合約
  2. 創建測試賬號eostea
  3. 測試賬號eostea發放代幣
  4. 測試賬號轉賬給賬號hello
  5. hello賬號添加權限hello
  6. hello賬號轉賬給eostea
  7. hello賬號權限hello綁定action
  8. hello賬戶通過hello權限轉賬

錢包中中的密匙:

我所有錢包中的密匙如下:

技術分享圖片

創建測試賬號

cleos create account eosio eosio.token EOS8Ar1fUGtZxcJ8Rdkh3rc55Vqg3ariR6fdBV8zxz4WgTW3nT73L EOS8Ar1fUGtZxcJ8Rdkh3rc55Vqg3ariR6fdBV8zxz4WgTW3nT73L
cleos create account eosio hello EOS5G13KtUHdsqbeuR2fcoRW4bUzJhigTcX37Aw39xKdy4NMQD9hZ EOS5G13KtUHdsqbeuR2fcoRW4bUzJhigTcX37Aw39xKdy4NMQD9hZ
cleos create account eosio eostea EOS8aQ3bgYKsipwsuPGzimnH5be9AkHr3N6Y7Knh6pSPoLAV2y6Ab EOS8aQ3bgYKsipwsuPGzimnH5be9AkHr3N6Y7Knh6pSPoLAV2y6Ab

下面我創建本文的所有測試賬號,創建情況如下:
技術分享圖片
技術分享圖片

發布eosio.token合約

cleos set contract eosio.token eosio.token/

技術分享圖片

發放並轉賬代幣

cleos push action eosio.token create ‘["eostea","10000000000.0000 TEA","create"]‘ -p eosio.token
cleos push action eosio.token issue ‘["eostea", "10000000000.0000 TEA","issue"]‘ -p eostea
cleos push action eosio.token transfer ‘["eostea","hello","100000000.0000 TEA","transfer"]‘ -p eostea

如圖所示:

技術分享圖片
技術分享圖片

轉賬測試

cleos push action eosio.token transfer ‘["hello","eostea","100.0000 TEA","transfer"]‘ -p hello

技術分享圖片

可能大家看到這裏還是一頭霧水,別著急重點馬上就來。

給賬戶hello添加hello權限

cleos set account permission hello hello ‘{"threshold": 1, "keys":[{"key":"EOS5dFqCCX8nhV5e2RZWTDGFtAw4mJcCjiQC9Fe6zquKwKky2aAEm","weight":1}],"accounts":[],"waits":[]}‘ active

技術分享圖片

新增權限hello綁定transfer動作

cleos set action permission hello eosio.token transfer hello

技術分享圖片

權限綁定action成功,那麽有什麽用呢?註意見證奇跡的時刻到了。

新增權限的使用

我們先來嘗試用active權限轉賬,然後用hello權限轉賬:

cleos push action eosio.token transfer ‘["hello","eostea","100.0000 TEA","transfer"]‘ -p hello@active
cleos push action eosio.token transfer ‘["hello","eostea","100.0000 TEA","transfer"]‘ -p hello@hello

技術分享圖片

大家可以看到我們用hello權限也成功執行了轉賬操作。

可能一些小夥伴就要說,你的錢包裏有active權限對應的密匙。好,那麽我把錢包鎖起來,只留hello權限的密匙。

技術分享圖片

大家可以看到,現在我的錢包裏只剩下hello權限對應的密匙了。再次進行轉賬:

cleos push action eosio.token transfer ‘["hello","eostea","100.0000 TEA","transfer"]‘ -p hello@hello

技術分享圖片

大家可以看到,這次轉賬也是成功的。

可能有些同學又要找茬了,那說不定hello這個權限本來就能轉賬呢?

那麽,我們現在解除hellotransfer綁定關系(註意這裏是需要active權限來接觸綁定關系),再次轉賬

cleos set action permission hello eosio.token transfer NULL
cleos push action eosio.token transfer ‘["hello","eostea","100.0000 TEA","transfer"]‘ -p hello@hello

技術分享圖片

大家可以看到,沒有綁定權限,是操作不成功的。

應用場景

權限和action的綁定關系,極大的增加了eos網絡權限的靈活性,通過單個權限的綁定,我們可以將一個賬戶的權限分層管理,甚至一個公司的所有人都可以使用一個EOS賬戶來進行權限分分離。

下面我拿hello賬號舉個例子:
技術分享圖片

  1. owner: 公司的所有者,或者股東,根據權限分配給每個股東相應的權限。
  2. active: 管理階層,可添加部門如active,轉賬,等除擁有者以外的所有操作。
  3. hello:財務部門,具有轉賬權限。
  4. oo: 部門小組,可以有相應的轉賬權限
  5. o: 員工,權限不詳。

這樣成功的將整個公司所有成員的賬戶都容納進一個賬戶,足見EOS賬戶權限的靈活性。

好了!今天就到這裏!!
如需轉載請聯系作者!!謝謝!!!

原文鏈接: https://eosfans.io/topics/653

EOS 權限管理之-權限的使用