解讀EOS.IO的賬戶和權限模型之一——權限定義

基本概念

先看看這篇文章,了解下EOS.IO權限模型的三個基本概念:

  • Wallets(錢包)——錢包是EOS.IO提供的用于管理密鑰對的客戶端,錢包支持鎖定和密碼解鎖。
  • Accounts (賬戶)——賬戶是公示在區塊鏈上的人工易讀(不是公鑰或短地址!!!)的名字。
  • Authorities and Permissions(權限及授權驗證)——每個賬戶都內置owneractive權限,owner冷藏用于恢復其他權限。

權限(Permission)定義的目標

EOSIO的賬戶權限定義的目標在白皮書中這樣敘述:

EOS.IO software allows each account to define a mapping between a Named Message Handler Group of any account and their own Named Permission Level. For example, an account holder could map the account holder's social media application to the account holder's "Friend" permission group. With this mapping, any friend could post as the account holder on the account holder's social media. Even though they would post as the account holder, they would still use their own keys to sign the message. This means it is always possible to identify which friends used the account and in what way.

這段話明確了EOSIO允許賬戶持有者部分讓度權限,而且權限受讓者是用自己持有的密鑰簽名,以便明確區分授權行為是如何發生的。

賬戶(Account)如何生成

權限是建立在賬戶的基礎之上的,那么賬戶又是如何產生的呢?
首先要明確的一點是:
無論賬戶還是權限,它們一定是通過簽名交易(signed transaction)來定義并在區塊鏈中公示的。——這是其他節點在執行合約時進行權限驗證(Authorities)的基礎。

來看看利用EOSIO的命令交互,如何生成一個新賬戶:
$ eosc create account inita tester EOS4toFS3YXEQCkuuw1aqDLrtHim86Gz9u3hBdcBw5KNPZcursVHq EOS7d9A3uLe6As66jzN8j44TXJUqJSK3bFjjEEqR4oTvNAB3iM9SA
命令的說明及返回在這里
返回JSON文本比較長,不過讀懂它的每一部分含義你也就理解了EOSIO權限模型的設計思路。這里我們先看看與本文相關的幾處:

  • 每個賬戶默認攜帶owneractive兩個權限,分別對應一對密鑰(*其中owner密鑰冷藏保存,通常用active來干活,方便用owner恢復active
  • 該命令用賬戶initaactive權限簽名提交了一個交易
  • 交易調用了內置合約eosnewaccount行為
  • 命令傳入的公鑰分別作為新產生的tester賬戶的owneractive權限公鑰

這里一定有人會問:那么這個最初的賬戶inita是由什么賬戶來簽名生成的呢?——它是在啟動區塊鏈時,在創世區塊的配置config.ini中直接定義的。
參考文檔在這里

權限(Permission)如何定義

上面我們看到,對于賬戶默認攜帶的owneractive權限,只需要在建立賬戶時指定就好。那么賬戶如何自定義權限呢?
這里 后續的Create or Modify Permissions 章節。
權限定義的關鍵在于那個描述權重的JSON:

{
  "threshold"       : 100,    /*An integer that defines cumulative signature weight required for authorization*/
  "keys"            : [],     /*An array made up of individual permissions defined with an EOS PUBLIC KEY*/
  "accounts"        : []      /*An array made up of individual permissions defined with an EOS ACCOUNT*/
}
  • threshold給出滿足此權限驗證至少要達到(當然比它高也滿足驗證)的權重。
  • keys 定義了在本權限定義中,可獲得的權重的密鑰集合。
  • accounts定義了可獲得權重的賬戶+權限公鑰簽名集合。
    即是說,后兩者是以不同的形式給出可獲得權重的簽名集合,實施中可根據具體情況靈活運用。
    另外可以看出,目前的權限定義采用了覆蓋的形式,即:對同一權限的重復定義,后者會覆蓋前者。
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,224評論 6 529
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 97,916評論 3 413
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,014評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,466評論 1 308
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,245評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,795評論 1 320
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,869評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,010評論 0 285
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,524評論 1 331
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,487評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,634評論 1 366
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,173評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,884評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,282評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,541評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,236評論 3 388
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,623評論 2 370

推薦閱讀更多精彩內容

  • 草案:2017 年 6 月 26 日 (@dayzh (https://steemit.com/@dayzh)) ...
    區塊鏈生存指南閱讀 2,088評論 0 4
  • 1. 賬戶與錢包1.1 創造并管理錢包1.2 生成EOS Keys并導入1.3 備份您的錢包1.4 創建賬戶 2....
    cenkai88閱讀 3,972評論 1 7
  • 家是港灣,愛是退路,愿大家都能找到自由與幸福。 ①親密且獨立 在親密關系中,我們不該將戀人當作自己的理想父母去索取...
    鯊魚小姐閱讀 214評論 2 3
  • 今天是中秋節,祝大家中秋節快樂。 估計今天是中秋節吧,所以對家里的那個女人——媽媽,無敵想念。今年中秋節小周和弟弟...
    獨立周閱讀 163評論 0 1
  • 特價機票都這么吭么?再也不想做春秋的了,惡心他媽給惡心開門惡心到家啦……整理心情,拍個美照,迎接上海美博會
    杜奡閱讀 198評論 0 2