還有錢包(wallet)和密鑰(keys)。
在EOS中,它們之間是什麽關系呢?
什麽是賬戶?
1、賬戶(account)是存儲在區塊鏈上的人類可讀的標識符;
2、賬戶可以被個人或組織擁有,具體取決於權限配置;
3、發送交易或者轉移代幣,都需要有賬戶才能完成;
4、通過導入(import)密鑰,壹個錢包可以和壹個或多個賬戶相關聯。
賬戶、密鑰、錢包的關系
在錢包是open且unlock的狀態下,可以通過如下命令獲取導入到這個錢包中所有密鑰:
cleos wallet keys
在前幾篇文章中,我在測試鏈上創建了“sg”、“currency”兩個賬戶,加上系統默認的“eosio”賬戶,***有3個賬戶。
這3個賬戶***同使用壹個錢包(default),下面這張圖展示了它們之間的關系:
因此,賬戶、密鑰、錢包三者的關系可以總結為 :
密鑰(公鑰)可以創建賬戶;
密鑰(私鑰)可以導入錢包;
賬戶和錢包通過密鑰聯系起來。
賬戶的權限
1、在EOS中,每個賬戶都有兩個本地權限:owner權限?和?active權限;
owner
owner權限代表著對壹個賬戶的所有權,是最高權限,只有少數交易會用到這種權限;
EOS建議賬戶的擁有者把owner權限的密鑰冷存儲,且不要與任何人***享;
owner權限可以用來恢復已經被破壞的另壹個權限。
active
active權限可以用來轉移資金、給生產者投票、賬戶相關信息更改等;
壹般情況下使用active權限就夠用了。
2、賬戶還可擁有自定義權限,用於進壹步擴展賬戶的管理;
3、權限可以分配給壹個或多個公鑰(public keys),也可以分配給有效的賬戶。
單壹簽名(Single-Sig)
EOS的默認賬戶權限配置采用單壹簽名的方式。
這裏有兩個重要的概念:
權重(weight)
權限擁有者在整個權限中的相對重要程度
閾值(threshold)
能夠成功push事務所需要的權重值門檻
下面是壹個例子:
權限
賬戶或公鑰
權重
閾值
owner
1
EOS5EzTZZQQ...
1
active
1
EOS61chK8GbH...
1
某賬戶有兩個公鑰,分別擁有owner權限和active權限,每種權限的權重和閾值都是1。
權重達到閾值才能授權。
對於這個賬戶,因為單壹權限的權重就已經達到閾值,所以如果該賬戶要push交易,只需要使用對應的密鑰對交易進行簽名即可,即單壹簽名就能完成交易。
多重簽名(Multi-sig)和自定義權限
再看下面這個例子
權限
賬戶或公鑰
權重
閾值
owner
2
@alice
1
@bob
1
active
1
@alice
1
@bob
1
publish
2
@alice
2
@bob
2
EOS7VtcvWo1...
1
在這個例子中,
owner權限
owner權限分配給了alice和bob兩個賬戶,owner權限的閾值為2,alice和bob的權重均為1。?因此,alice或bob單個賬戶都不能獲得授權,必須壹起對交易簽名才能獲得完全授權。
active權限
active權限的閾值為1,alice和bob的權重均為1。?因此,alice或bob單個賬戶就可以簽名獲取授權。
publish權限 (自定義權限)
publish是壹個自定義權限,閾值為2,給alice和bob的權重均為2,給壹個公鑰的權重為1。?結果是,alice和bob因為權重達到閾值,可以直接簽名獲得授權;
這個公鑰因為權重不夠,需要和alice或bob壹起,才能獲取授權。
從多重簽名和自定義權限,以及可以使用賬戶名和公鑰兩種方式設置權限,可以看出,EOS的權限系統具有很高的靈活性。