EOS 權限管理之-權限的使用
首先,跟大家說聲抱歉,由於之前一直在準備EOS上線的一些工作,所以,很長時間沒有更新內容。今天正好有時間,也想到了一些題材,就來說一下這個話題。本文完全是個人見解,如有不當之處,歡迎指出。
前提回顧:
相信看這篇教程的人,對我之前的一些賬戶操作已經進行了了解,如果不了解的,可以移步 https://eosfans.io/topics/372
之前講了單個賬戶的權限的增、刪、改、查及一系列操作,並沒有講到權限的使用,那麽如果我們增加一個權限,但是不會用它,那又有什麽意義呢?
所以,今天就來學習一下權限的使用。
說明: 本教程,通過
eosio.token
合約的transfer
來進行演示。
目錄
- 創建
eosio.token
eosio.token
合約 - 創建測試賬號
eostea
- 測試賬號
eostea
發放代幣 - 測試賬號轉賬給賬號
hello
hello
賬號添加權限hello
hello
賬號轉賬給eostea
hello
賬號權限hello
綁定actionhello
賬戶通過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
這個權限本來就能轉賬呢?
那麽,我們現在解除hello
和transfer
綁定關系(註意這裏是需要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
賬號舉個例子:
- owner: 公司的所有者,或者股東,根據權限分配給每個股東相應的權限。
- active: 管理階層,可添加部門如
active
,轉賬,等除擁有者以外的所有操作。 - hello:財務部門,具有轉賬權限。
- oo: 部門小組,可以有相應的轉賬權限
- o: 員工,權限不詳。
這樣成功的將整個公司所有成員的賬戶都容納進一個賬戶,足見EOS
賬戶權限的靈活性。
好了!今天就到這裏!!
如需轉載請聯系作者!!謝謝!!!
原文鏈接: https://eosfans.io/topics/653
EOS 權限管理之-權限的使用