EOS智能合約開發(fā)(三):EOS創(chuàng)建和管理賬號

沒有看前面文章的小伙伴可以看一下
EOS智能合約開發(fā)(一):EOS環(huán)境搭建和啟動節(jié)點
EOS智能合約開發(fā)(二):EOS創(chuàng)建和管理錢包
創(chuàng)建好錢包、密鑰之后,接下來你就可以創(chuàng)建賬號了,賬號是什么?賬號保存在區(qū)塊鏈上的人類可讀的標志符。

創(chuàng)建賬號的命令:

$ cleos createaccount eosio ${new_account} ${owner_key} ${active_key}

其中eosio是超級用戶,需要靠超級用戶來創(chuàng)建其它的新用戶,eosio后面就是你的新用戶的用戶名。

除了新的賬號之外,命令后面還有兩個key:

1、Owner key

2、Active key

Owner key是什么意思呢?Owner key表示分配給新賬號的一個Owner認證的公鑰。Active key是分配給新賬號一個Active認證的一個公鑰。

至于這兩個認證,我后面會給詳細介紹,這是兩個主要的權限。我創(chuàng)建一個賬號,如果這個賬號要有Owner的權限和Active的權限,就必須要用這兩個key才能實現(xiàn)。

我們來總結一下剛才的操作,我們剛才操作是調(diào)用Cleoscreate account創(chuàng)建了一個賬號,這個賬號的命名規(guī)則遵守下邊兩個規(guī)則:

1、小于13個字符;

2、僅包含這些字符:.12345abcdefghijklmnopqrstuvwxyz

另外,剛才給大家說到Owner key和Active key的概念。Owner key的概念就是你賬號的所有控制權限,你只要有了Owner key,你可以對這個賬號的任何東西做任何的事兒,這是它的所有控制權。

而Active key只掌握了你的賬號資金的訪問權限,也就是你如果有了Active這個權限的話,你可以對這個賬號的資金進行轉移,但是你不能轉移這個賬號的所有權,或者不能做超過這個Active權限其它的權利。

如果簡單的理解,Owner key就是對這個賬號的最高權限,Active只是用來轉移資金而已。這也是與以太坊智能合約開發(fā)的一個區(qū)別,以太坊賬號的權限其實沒有這么細分,它就只有一個賬號,我只要有這個賬號的公鑰和私鑰,我就可以做任何事情。

EOS的權限和許可

對于EOS的權限和許可,分得非常細。

「Permission」我沒有翻譯成權限,我這里覺得它更像一種叫做「許可」,它是一個操作允許的權限,可以建立很多permission。比如允許你轉賬,允許你發(fā)微博或者允許你做其他事。它是通過permission來控制你的操作,可能不同的用戶有不同的permission。

Threshold是某個許可需要的閾值。比如你要做一件事兒,它可能有個閾值,這個閾值是一個量化,你必須要達到這個閾值才可以進行相應的操作。

Weight表示權重。賬號必須對應某個許可擁有的權重,就是你的權重要大于你的閾值,然后這件事兒你就可以做。

在permission許可里面有兩種許可:

-owner許可;

-active許可。

這兩個叫native(原生)的permission,另外還有public的permission。

下面通過兩個例子來解釋他們之間的關系與區(qū)別:

第一個例子, owner許可的閾值是1,它里面有一個賬號,這個賬號是用它的公鑰來代表的,然后這個賬號的權重是1,這樣你的權重是大于等于閾值的,所以可以用owner的賬號和權限。


201.png

active許可里面有一個賬號,它的權重也是等于這個閾值,所以可以用active的賬號和權限。

這兩個賬號,一個是有owner權限,一個是有active權限,因為它們的權重和閾值是大于等于這個值的,對應的賬號與權限都是可以使用的。

第二個例子,除了owner的permission之外,你還可以有一個publish permission。它們之間有什么區(qū)別呢?


202.png

當你創(chuàng)建任何一個賬號,這個賬號都有owner的許可和active的許可。其他的許可就是你可以自己定義,來讓不同的用戶,擁有不同的許可組合,這樣就可以很靈活的去管理不同的賬號。

所以這一點,EOS考慮的比較比較細致一點,但是以太坊或者比特幣沒有做到這么細致,以太坊或者比特幣擁有一個賬號就可以做任何事情。

這里面再細一點來講,這里面的owner的閾值是R,bob賬號的權重只有1,stracy賬號的權重也只有1,如果它倆單獨的去獲得owner許可相關的操作,它們是獲得不了的。但是,如果bob和stracy加起來大于等于2,就是這兩個賬號聯(lián)合起來大于等于2的,這兩個賬號就可以做這個操作的,其實這有點像投票。

我覺得這個權限或許可的限制,和我們傳統(tǒng)的操作系統(tǒng)是不太一樣的。我們傳統(tǒng)的操作系統(tǒng)好像沒有這種聯(lián)合簽名可以達到兩個權重來執(zhí)行owner的相關操作。

active這也是一樣的,如果bob賬號是1,stracy賬號是1,如果active需要的閾值是1的話, bob賬號和stracy賬號是單獨都可以做active許可相關的操作,就是轉移資金。

另外,publish就是一個定制化許可。我們每個用戶也可以定義自己某些允許的一些操作。publish這里面的閾值是2,bob賬號是2,stracy賬號是2,這兩個賬號也可以單獨做publish許可相關的操作。而publish的權限可能是比如發(fā)布一些消息、發(fā)布一些微博的操作。

通過以上兩個例子,給大家展示了EOS對權限設置的設計有多細致。

知識星球二維碼380.png
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容