EOS 賬戶與權(quán)限

一個(gè)賬戶是一個(gè)人可讀的,存在區(qū)塊鏈上的id。每筆transaction都需要在某個(gè)賬戶所配置的authority下評(píng)估permissions。每個(gè)被命名的permission都有一個(gè)閾值,只有滿足后, 簽名的transaction才能在authority下被認(rèn)為有效。Transactions是通過一個(gè)加載了已解鎖的錢包客戶端簽名的。錢包是一個(gè)保護(hù)并使用您的keys的軟件。這些keys不一定要為區(qū)塊鏈上某賬戶authority所permissioned。

1. 錢包

錢包是保存keys的客戶端,而這些keys不一定和這些賬戶permissions相關(guān)。理想情況下錢包有一個(gè)上鎖狀態(tài)(加密)和一個(gè)解鎖(解密)狀態(tài)且被一個(gè)強(qiáng)熵的密碼保護(hù)。EOSIO/eos倉庫又一個(gè)叫做eosc的命令行工具,錢包就是其中一部分的功能。

2. 賬戶

賬戶是一個(gè)保存在區(qū)塊鏈上,具可讀性的名字。通過permissions配置,賬戶可被一個(gè)體所擁有,也可為一群個(gè)體共同擁有。轉(zhuǎn)賬或者向區(qū)塊鏈推送transaction都需要賬戶。

3. Authorities 和 Permissions

Authorities 決定特定message是否被正確授權(quán)。

每個(gè)賬戶都有兩個(gè)原生具名的permissions

  • owner authority代表一個(gè)賬戶的所有權(quán)。只有少數(shù)transactions需要此authority,但任何需要改動(dòng)owner authority的message都需要??偟膩碚f,我們建議把owner冷儲(chǔ)存起來,不要和任何人共享。owner可以用來恢復(fù)另一個(gè)可能已經(jīng)被損害的(compromised)permission.
  • active authority可用來轉(zhuǎn)賬資金、給區(qū)塊生產(chǎn)者投票及進(jìn)行另一些高級(jí)的賬戶改動(dòng)。

除了原生 permissions外, 賬戶可有自定義的具名permissions,以擴(kuò)展對(duì)賬戶的管理功能。自定義permissions是非常靈活的,可以用于各種各樣的場(chǎng)景。這很大程度上取決于開發(fā)者社區(qū) Much of this is up to the developer community in how they are employed, and what conventions if any, are adopted.

任何authority的Permission都可以被分配給一個(gè)或多個(gè)公鑰或一個(gè)有效的賬戶名。

4. Putting it all Together

下面是上面所提到的概念的集合及一些如何在實(shí)際中使用他們的簡(jiǎn)單例子。

4.1 默認(rèn)賬戶配置 (Single-Sig)

這是某賬戶創(chuàng)建后如何配置的例子。該賬戶的owneractive permissions都各自有一個(gè)key, 兩個(gè)keys的權(quán)重都是1且閾值也是1。默認(rèn)配置需要一個(gè)簽名來授權(quán)對(duì)于原生permissions的message。

@bob account authorities

Permission Account Weight Threshold
owner 1
EOS5EzTZZQQxdrDaJAPD9pDzGJZ5bj34HaAb8yuvjFHGWzqV25Dch 1
active 1
EOS61chK8GbH4ukWcbom8HgK95AeUfP8MBPn7XRq8FeMBYYTgwmcX 1

@bob賬戶這個(gè)例子中,依表格所示,@bob's的owner key的權(quán)重是1,在該authority下推送一個(gè)transaction所需要的閾值也是1。

如果需要在owner的authority下推送一個(gè)transaction,只需要@bob用它的owner key簽名一個(gè)transaction,此transaction即可被認(rèn)為有效。這個(gè)key將被儲(chǔ)存在一個(gè)wallet中,并用eosc來管理。

4.2 Multi-sig 賬戶及自定義Permissions

下面的例子是一個(gè)虛構(gòu)的名叫@multisig的賬戶。在此場(chǎng)景下,兩個(gè)用戶被授予owneractive permissions,而有三個(gè)用戶加權(quán)不同地被授予自定義的publish permission。

@multisig account authorities

Permission Account Weight Threshold
owner 2
@bob 1
@stacy 1
active 1
@bob 1
@stacy 1
publish 2
@bob 2
@stacy 2
EOS7Hnv4iBWo1pcEpP8JyFYCJLRUzYcXSqtQBcEnysYDFTEbUpi6y 1

在此場(chǎng)景下,要修改owner permission的加權(quán)閾值為2,也就是說因?yàn)槊糠奖旧砑訖?quán)都是1, 所有用戶需要都簽名該transaction它才能被完全授權(quán)。

而要發(fā)送一個(gè)需要active authority的transaction,加權(quán)閾值是1。這意味著只需要一個(gè)具有active authority的賬戶簽名即可授權(quán)該message。

還有一個(gè)叫publish自定名稱permission。比如這個(gè)publish permission是用來通過一個(gè)理論上的博客App向@multisig的博客發(fā)布文章的。這個(gè)publish permission的加權(quán)閾值是2,而@bob@* 和 @stacy的加權(quán)都是2,public key的加權(quán)是1。這樣的話@bob@stacy都不需要額外簽名就可以發(fā)布,但public key 則需要一個(gè)額外簽名才能使一個(gè)在public permission下的message通過授權(quán)。

上面的permissions表展現(xiàn)了@bob@stacy作為賬戶的擁有者,具有類似于主席或者編輯的特權(quán)。盡管這個(gè)簡(jiǎn)單的例子也有局限性(尤其是可擴(kuò)展性上),并不是一個(gè)好的設(shè)計(jì),但它卻充分展現(xiàn)了EOS權(quán)限系統(tǒng)的靈活性。

注意上面的表格中,permissions可以使用account name也可以使用一個(gè)key。乍看之下這可能不重要,但是這確實(shí)增加了靈活性。

備注

  • @bob 和 @stacy可同時(shí)被顯式地設(shè)置成用戶的擁有者。
  • @bob 和 @stacy 都有對(duì)于 publish權(quán)限的特權(quán)。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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