沒有看前面文章的小伙伴可以看一下
EOS智能合約開發(fā)(一):EOS環(huán)境搭建和啟動(dòng)節(jié)點(diǎn)
EOS智能合約開發(fā)(二):EOS創(chuàng)建和管理錢包
創(chuàng)建好錢包出革、密鑰之后,接下來你就可以創(chuàng)建賬號(hào)了吼过,賬號(hào)是什么?賬號(hào)保存在區(qū)塊鏈上的人類可讀的標(biāo)志符咪奖。
創(chuàng)建賬號(hào)的命令:
$ cleos createaccount eosio ${new_account} ${owner_key} ${active_key}
其中eosio是超級(jí)用戶盗忱,需要靠超級(jí)用戶來創(chuàng)建其它的新用戶,eosio后面就是你的新用戶的用戶名羊赵。
除了新的賬號(hào)之外趟佃,命令后面還有兩個(gè)key:
1、Owner key
2昧捷、Active key
Owner key是什么意思呢闲昭?Owner key表示分配給新賬號(hào)的一個(gè)Owner認(rèn)證的公鑰。Active key是分配給新賬號(hào)一個(gè)Active認(rèn)證的一個(gè)公鑰靡挥。
至于這兩個(gè)認(rèn)證序矩,我后面會(huì)給詳細(xì)介紹,這是兩個(gè)主要的權(quán)限跋破。我創(chuàng)建一個(gè)賬號(hào)贮泞,如果這個(gè)賬號(hào)要有Owner的權(quán)限和Active的權(quán)限楞慈,就必須要用這兩個(gè)key才能實(shí)現(xiàn)。
我們來總結(jié)一下剛才的操作啃擦,我們剛才操作是調(diào)用Cleoscreate account創(chuàng)建了一個(gè)賬號(hào)囊蓝,這個(gè)賬號(hào)的命名規(guī)則遵守下邊兩個(gè)規(guī)則:
1、小于13個(gè)字符令蛉;
2聚霜、僅包含這些字符:.12345abcdefghijklmnopqrstuvwxyz
另外,剛才給大家說到Owner key和Active key的概念珠叔。Owner key的概念就是你賬號(hào)的所有控制權(quán)限蝎宇,你只要有了Owner key,你可以對(duì)這個(gè)賬號(hào)的任何東西做任何的事兒祷安,這是它的所有控制權(quán)姥芥。
而Active key只掌握了你的賬號(hào)資金的訪問權(quán)限,也就是你如果有了Active這個(gè)權(quán)限的話汇鞭,你可以對(duì)這個(gè)賬號(hào)的資金進(jìn)行轉(zhuǎn)移凉唐,但是你不能轉(zhuǎn)移這個(gè)賬號(hào)的所有權(quán),或者不能做超過這個(gè)Active權(quán)限其它的權(quán)利霍骄。
如果簡單的理解台囱,Owner key就是對(duì)這個(gè)賬號(hào)的最高權(quán)限,Active只是用來轉(zhuǎn)移資金而已读整。這也是與以太坊智能合約開發(fā)的一個(gè)區(qū)別簿训,以太坊賬號(hào)的權(quán)限其實(shí)沒有這么細(xì)分,它就只有一個(gè)賬號(hào)米间,我只要有這個(gè)賬號(hào)的公鑰和私鑰强品,我就可以做任何事情。
EOS的權(quán)限和許可
對(duì)于EOS的權(quán)限和許可屈糊,分得非常細(xì)择懂。
「Permission」我沒有翻譯成權(quán)限,我這里覺得它更像一種叫做「許可」另玖,它是一個(gè)操作允許的權(quán)限,可以建立很多permission表伦。比如允許你轉(zhuǎn)賬谦去,允許你發(fā)微博或者允許你做其他事。它是通過permission來控制你的操作蹦哼,可能不同的用戶有不同的permission鳄哭。
Threshold是某個(gè)許可需要的閾值。比如你要做一件事兒纲熏,它可能有個(gè)閾值妆丘,這個(gè)閾值是一個(gè)量化锄俄,你必須要達(dá)到這個(gè)閾值才可以進(jìn)行相應(yīng)的操作。
Weight表示權(quán)重勺拣。賬號(hào)必須對(duì)應(yīng)某個(gè)許可擁有的權(quán)重奶赠,就是你的權(quán)重要大于你的閾值,然后這件事兒你就可以做药有。
在permission許可里面有兩種許可:
-owner許可毅戈;
-active許可。
這兩個(gè)叫native(原生)的permission愤惰,另外還有public的permission苇经。
下面通過兩個(gè)例子來解釋他們之間的關(guān)系與區(qū)別:
第一個(gè)例子, owner許可的閾值是1宦言,它里面有一個(gè)賬號(hào)扇单,這個(gè)賬號(hào)是用它的公鑰來代表的,然后這個(gè)賬號(hào)的權(quán)重是1奠旺,這樣你的權(quán)重是大于等于閾值的蜘澜,所以可以用owner的賬號(hào)和權(quán)限。
active許可里面有一個(gè)賬號(hào)凉倚,它的權(quán)重也是等于這個(gè)閾值兼都,所以可以用active的賬號(hào)和權(quán)限。
這兩個(gè)賬號(hào)稽寒,一個(gè)是有owner權(quán)限扮碧,一個(gè)是有active權(quán)限,因?yàn)樗鼈兊臋?quán)重和閾值是大于等于這個(gè)值的杏糙,對(duì)應(yīng)的賬號(hào)與權(quán)限都是可以使用的慎王。
第二個(gè)例子,除了owner的permission之外宏侍,你還可以有一個(gè)publish permission赖淤。它們之間有什么區(qū)別呢?
當(dāng)你創(chuàng)建任何一個(gè)賬號(hào)谅河,這個(gè)賬號(hào)都有owner的許可和active的許可咱旱。其他的許可就是你可以自己定義,來讓不同的用戶绷耍,擁有不同的許可組合吐限,這樣就可以很靈活的去管理不同的賬號(hào)。
所以這一點(diǎn)褂始,EOS考慮的比較比較細(xì)致一點(diǎn)诸典,但是以太坊或者比特幣沒有做到這么細(xì)致,以太坊或者比特幣擁有一個(gè)賬號(hào)就可以做任何事情崎苗。
這里面再細(xì)一點(diǎn)來講狐粱,這里面的owner的閾值是R舀寓,bob賬號(hào)的權(quán)重只有1,stracy賬號(hào)的權(quán)重也只有1肌蜻,如果它倆單獨(dú)的去獲得owner許可相關(guān)的操作互墓,它們是獲得不了的。但是宋欺,如果bob和stracy加起來大于等于2轰豆,就是這兩個(gè)賬號(hào)聯(lián)合起來大于等于2的,這兩個(gè)賬號(hào)就可以做這個(gè)操作的齿诞,其實(shí)這有點(diǎn)像投票酸休。
我覺得這個(gè)權(quán)限或許可的限制,和我們傳統(tǒng)的操作系統(tǒng)是不太一樣的祷杈。我們傳統(tǒng)的操作系統(tǒng)好像沒有這種聯(lián)合簽名可以達(dá)到兩個(gè)權(quán)重來執(zhí)行owner的相關(guān)操作斑司。
active這也是一樣的,如果bob賬號(hào)是1但汞,stracy賬號(hào)是1宿刮,如果active需要的閾值是1的話, bob賬號(hào)和stracy賬號(hào)是單獨(dú)都可以做active許可相關(guān)的操作私蕾,就是轉(zhuǎn)移資金僵缺。
另外,publish就是一個(gè)定制化許可踩叭。我們每個(gè)用戶也可以定義自己某些允許的一些操作磕潮。publish這里面的閾值是2,bob賬號(hào)是2容贝,stracy賬號(hào)是2自脯,這兩個(gè)賬號(hào)也可以單獨(dú)做publish許可相關(guān)的操作。而publish的權(quán)限可能是比如發(fā)布一些消息斤富、發(fā)布一些微博的操作膏潮。
通過以上兩個(gè)例子,給大家展示了EOS對(duì)權(quán)限設(shè)置的設(shè)計(jì)有多細(xì)致满力。