1. 程式人生 > >賬戶之實戰篇

賬戶之實戰篇

這篇文章為大家介紹錢包(Wallet)、賬戶(Accounts)、賬戶許可權(Account authorities)的概念。

錢包 Wallet

錢包是一個本地客戶端軟體,有下面兩個作用:

  • 儲存私鑰。私鑰可以和一個或多個賬戶關聯,私鑰儲存在錢包中,私鑰對應的公鑰儲存在賬戶中。

  • 對交易簽名。賬戶(Account)發起交易(Transactions)時,需要通過錢包客戶端對交易簽名。

錢包的狀態:

  • 鎖定。鎖定狀態下的錢包無法進行任何操作(匯入私鑰、交易簽名等等),錢包資訊也處理加密狀態。

  • 解鎖。通過建立錢包時生成的私鑰解鎖錢包後,可以進行基本操作,錢包資訊也處於解密狀態。

賬戶 Accounts

賬戶由一個唯一名稱來標識,名稱的最大長度為12個字元。賬戶可以是一個自然人,也可以是一個組織或者智慧合約。

賬戶的作用是對交易簽名,並將其推送到區塊鏈,也就是說賬戶是EOSIO中發起交易的主體。

賬戶許可權 Account authorities

賬戶許可權由許可權(permission)、許可權所有者(account)、權重(weight)以及閾值(threshold)四個部分組成,例如,下圖是賬戶wangtao的賬戶許可權。

account authorities

結合這個例子,我們來一步步瞭解賬戶許可權。

許可權 permission

EOSIO採用父子分層的許可權結構,低階許可權(子許可權)由高階許可權(父許可權)派生而來,父許可權擁有子許可權所有的能力。子許可權能做的事父許可權也能做,但是反過來,父許可權能做的事,子許可權不一定能做。

EOSIO在賬戶建立時會生成owner與active兩個預設許可權。

  • owner 是最高等級許可權,擁有owner許可權就意味著擁有賬戶的所有權,我們可以把owner理解為超級管理員許可權。

  • active 是owner的子許可權,主要用來發送交易、投票或者進行高級別的賬戶修改操作。

除了預設許可權,賬戶還可以自定義許可權(例如示例中的publish許可權),用於對未來賬戶管理進行擴充套件。自定義許可權要麼是active的子許可權,要麼是其它自定義許可權的子許可權。

許可權擁有者 account

雖然英文名稱是account,但是它與前面說的賬戶並不完全相同,我認為翻譯成許可權擁有者更合適。

許可權擁有者可以是賬戶,也可以是公鑰,例如bob或者EOS5EzTZZQQxdrDaJAPD9pDzGJZ5bj34HaAb8yuvjFHGWzqV25Dch。

一個許可權可以被分配給一個或多個許可權擁有者,當權限被分配給多個許可權擁有者時,意味著通過該許可權執行的動作,需要同時獲得多個許可權擁有者的授權才能夠進行。

至於具體需要多少個授權,則取決於權重(weight)以及閾值(threshold)。

權重 weight

許可權擁有者在許可權中的重要程度,以不小於1的整數表示。

閾值 threshold

執行該許可權的最低權重總和。例如在示例中,執行owner許可權只需要唯一的公鑰EOS5EzTZZQQxdrDaJAPD9pDzGJZ5bj34HaAb8yuvjFHGWzqV25Dch(以下簡稱公鑰)授權,因為owner許可權的閾值為1,而公鑰的權重也為1。

執行publish許可權的情況則較為複雜,由於publish許可權的閾值為2,因此bob或者tom都可以單獨授權。而公鑰的權重為1,無法單獨授權,必須要與bob或者tom中的任意一個聯合授權。