EOS从入门到精通-账户体系(文字稿)
大家好,非常感謝參加《EOS從入門到精通》系列課程,我是王巨,今天是EOS技術(shù)白皮書解讀的第二講。今天的課程原本計劃講兩部分內(nèi)容,賬戶系統(tǒng)和并行執(zhí)行。但是一天的備課下來,我發(fā)現(xiàn)賬戶系統(tǒng)的內(nèi)容特別多,而且理解EOS的賬號體系對于將來進(jìn)行智能合約的開發(fā)非常有幫助,因此我決定在本次課程中詳細(xì)給大家講解一下EOS的賬戶體系。并行執(zhí)行這部分放到下一講跟TOKEN模型放到一起。
另外,上次有同學(xué)說沒有ppt的問題,我今天也會在講課的過程中穿插加入ppt。
EOS賬戶系統(tǒng).png
大家可以先看一下上面這個思維導(dǎo)圖,這就是本節(jié)課要講解的大綱。主要分了5個章節(jié),簡介、消息和處理程序、基于角色的權(quán)限管理、帶有強(qiáng)制延時性的消息、恢復(fù)被盜竊的密鑰。其中今天會重點(diǎn)講解基于角色的權(quán)限管理。
好的,我們開始講解EOS的權(quán)限系統(tǒng)
EOS賬戶系統(tǒng).001.jpegEOS相對于比特幣和以太坊只有私鑰和地址的概念,EOS的賬戶體系是相當(dāng)完備的,從這點(diǎn)來看,比特幣和以太坊在可用性上差了EOS一大截。比如說比特幣和以太坊沒法自定義賬戶地址,只能用一堆人類沒法理解的字符串做地址和私鑰。而EOS可以使用一個人類可以閱讀的2-32個字符來創(chuàng)建賬戶。另外在白皮書上強(qiáng)調(diào),創(chuàng)建一個賬號需要付出額外的一點(diǎn)點(diǎn)成本,來覆蓋賬戶的存儲成本,這一般是由開發(fā)者也就是應(yīng)用提供方來承擔(dān)。最后,EOS的賬戶還支持域的概念,比如說:
@domain這個賬號的擁有者是唯一能創(chuàng)建@user.domain的人。
好我們繼續(xù)講消息和處理程序,講賬戶為什么要講消息和處理程序呢?這是因?yàn)橘~戶和消息是EOS只能合約的兩個不可或缺的組成部分,而且他們之間有著密切的關(guān)聯(lián),單獨(dú)講哪一個也沒法講清楚他們的本質(zhì)。我們看看EOS的消息機(jī)制就明白了,所謂的消息就是賬戶與賬戶之間的溝通語言,每個賬戶都可以發(fā)送結(jié)構(gòu)化的消息給任意其他賬戶,每個賬戶都可以定義處理消息的腳本,每個賬戶還有自己的私有數(shù)據(jù)庫,消息處理腳本也可以給其他賬戶發(fā)消息,最終 消息和消息處理腳本組成了EOS的智能合約。
我來進(jìn)一步解釋一下,發(fā)消息很容易理解,消息處理腳本就是在一個賬戶收到了消息之后怎么處理消息。這個處理腳本本身還可以發(fā)消息給其他賬戶。這個怎么理解呢?我的理解是有些消息是人手工發(fā)的,比如說a給b轉(zhuǎn)賬50eos,有些消息是可以由處理消息的腳本來發(fā)的,比如說b在收到50eos這個消息后有個消息處理腳本會自動向c發(fā)送25個eos。這其實(shí)就是一個非常簡單的合約了。
好的,我們來講一下今天的重點(diǎn)基于角色的權(quán)限管理,這也是BM系區(qū)塊鏈的一個特色,權(quán)限管理在BTS和Steamit上已經(jīng)比較完善了,在EOS上還會做更多的優(yōu)化。我們先來看看權(quán)限管理的簡介:判斷一條消息是否被授權(quán)最簡單的方式是包含一個簽名,當(dāng)然驗(yàn)證這個簽名的前提是要知道這個簽名是誰的。一般來說權(quán)限是與個體或群組綁定在一起,理論上不會有一種權(quán)限跟個體或群組沒關(guān)系,因?yàn)檫@樣是沒有意義的。EOS提供了細(xì)粒度和高級別的權(quán)限控制,可以控制到誰在什么時候做什么事情。認(rèn)證和權(quán)限管理必須標(biāo)準(zhǔn)化,并且與應(yīng)用程序的業(yè)務(wù)邏輯分開,這樣可以用通用的方式來管理權(quán)限,并且為性能優(yōu)化提供可能。EOS還支持多賬戶的控制機(jī)制,能對賬戶的安全性提供保障,減少被黑客攻擊而造成的資金損失風(fēng)險。EOS甚至還允許定義什么密鑰或賬戶可以發(fā)送特定的消息類型給另一個賬戶。
舉個例子:一個用戶的社交媒體賬戶可以使用一個密鑰,而另一個密鑰可以用于訪問交易所,甚至可以授權(quán)其他賬戶來代表本賬戶而不是分配一個密鑰。
下面我們就詳細(xì)講一下EOS的權(quán)限管理方案:
EOS賬戶系統(tǒng).004.jpeg首先EOS為權(quán)限級別進(jìn)行了命名比如說Owner、Active、Friend。這些命名可以是系統(tǒng)默認(rèn)的比如Owner和Active,有些是可以自定義的比如Friend的。我們來看Steamit里面的權(quán)限實(shí)例:它是硬編碼了三個權(quán)限級別:Owner、Active、Posting。其中Posting權(quán)限只能進(jìn)行發(fā)帖操作投票等社交操作,Active權(quán)限可以做除了修改Owner以外的所有事情。Owner可以作為冷備份而存在。EOS本身也囊括了這些概念,而且允許自定義權(quán)限的層次結(jié)構(gòu)和分組。
EOS賬戶系統(tǒng).005.jpeg在設(shè)計了權(quán)限級別之后,EOS還設(shè)計了命名的消息處理群組,這個命名的消息處理群組可以在其他帳戶配置他們權(quán)限級別時被引用。上面有一個簡單的例子,在賬戶名下有一個分組A,分組A下面有個子分組b,它下面有消息類型。一個交易所的交易合約 在這種模式下就可以將訂單的創(chuàng)建和取消 分開存取,通過交易合約進(jìn)行分組 可以方便 交易所用戶。
EOS賬戶系統(tǒng).006.jpeg權(quán)限級別和消息處理群組,這兩個概念之間就可以做映射了。就是說可以將某個消息處理群組分配到某個權(quán)限級別上,或者反過來說,可以在某個權(quán)限級別上定義很多消息處理群組。舉個例子:一個帳戶所有者可以將自己社交媒體應(yīng)用與自己的“朋友”權(quán)限群組建立映射。 有了這個映射,任何朋友可以以這一帳戶的身份在這一帳戶的社交媒體上發(fā)帖。 盡管他們將以帳戶所有者的身份發(fā)帖,他們?nèi)匀皇褂米约旱拿荑€來簽名消息。 這意味著總是可以辨識出是哪一個朋友在以何種方式使用帳戶。
EOS賬戶系統(tǒng).007.jpeg如何進(jìn)行權(quán)限評估,簡單的來講就是從小到大進(jìn)行逐級匹配,比如:當(dāng) @alice 以 "Action" 類型發(fā)送一條消息給 @bob 時,首先會檢查 @alice 是否為 @bob.groupa.subgroup.Action 定義過權(quán)限映射。 如果什么都沒有找到,緊接著檢查 @bob.groupa.subgroup 映射,然后是 @bob.groupa,最后 @bob 將被檢查。 如果都沒有找到,那么假定映射為命名的權(quán)限群組 @alice.active。
一旦一個映射被識別,則使用相關(guān)聯(lián)的簽名驗(yàn)證權(quán)限。 如果失敗了,則躍遷至父權(quán)限,直至擁有者權(quán)限@alice.owner。
我們在看一下上面這張圖,我簡單講一下:我們先看左側(cè),可以看到上面帶key字符的就是各種權(quán)限,底下的三個方框是命名的消息群組,我們可以看到,這個交易的合約被映射到家庭組這個權(quán)限上,而提現(xiàn)這個消息被映射到律師這個權(quán)限上,也就是說家庭組里面的成員可以進(jìn)行交易,但是唯獨(dú)不能進(jìn)行取現(xiàn)。因?yàn)槿‖F(xiàn)最先匹配上的是律師這個密鑰。
EOS賬戶系統(tǒng).008.jpeg好,我們看看EOS的默認(rèn)權(quán)限群組,默認(rèn)的權(quán)限組上面我們也有講到,是Owner和Active,Owner可以做任何事情,這個權(quán)限一般來說不用來做具體的工作,一般用來做冷備份,比如說Active權(quán)限丟了,就可以是用Owner權(quán)限來恢復(fù)。Active權(quán)限可以做除了修改Owner以外的所有事情,一般業(yè)務(wù)都是有Active權(quán)限來完成。其他的所有權(quán)限組也都是從Active權(quán)限派生出來的。
EOS賬戶系統(tǒng).009.jpeg權(quán)限的并行評估這部分內(nèi)容,相對來說沒有特別重要,我們就簡單講一下。基本上說的是,由于權(quán)限的評估是只讀的,因此可以進(jìn)行并行化處理,同時可以提前到交易廣播階段完成,而不是在打包塊的過程中。另外在區(qū)塊鏈被重新加載重放交易時由于區(qū)塊的執(zhí)行肯定是通過了權(quán)限驗(yàn)證的,因此可以忽略,以此來提高執(zhí)行效率。
好了權(quán)限管理這部分就講到這里,我們在看下一部分,帶強(qiáng)制性延時的消息
EOS賬戶系統(tǒng).010.jpeg這部分比較簡單,主要說的是,時間是安全的重要屬性,EOS允許有時間延時的消息,在特別的時間范圍內(nèi)可以取消消息。這點(diǎn)是比特幣和以太坊不能實(shí)現(xiàn)的,特別是在網(wǎng)絡(luò)擁堵的情況下,若手續(xù)費(fèi)比較低,往往一筆交易很長時間得不到確認(rèn),而用戶完全沒有辦法取消交易。這種延時消息具體延時多長時間完全有消息的敏感程度決定,比如說買咖啡可能是幾秒鐘,買房可能是幾天,轉(zhuǎn)移整個賬戶可能是一個月,確切的時間取決于應(yīng)用開發(fā)者和用戶。
EOS賬戶系統(tǒng).011.jpegEOS允許恢復(fù)被盜竊的密鑰,這在比特幣和以太坊上是不可能的,在比特幣和以太坊上一旦密鑰丟失那么整個賬戶也隨之丟失,EOS提供了恢復(fù)密鑰的機(jī)制。具體來說就是可以使用30天內(nèi)的任意Owner權(quán)限的密鑰,注意這個密鑰可能已經(jīng)被黑客換過了,但是在這個場景下這個密鑰還是可以使用的;使用任意30天內(nèi)的Owner密鑰和指定的合作伙伴才能恢復(fù)密鑰。這里面合作伙伴不能在沒有Owner協(xié)助的基礎(chǔ)上恢復(fù)密鑰。合作伙伴也不會參與任何日常交易,這樣可以大大降低法律上的風(fēng)險。
好了,今天的課程就到這里,謝謝大家的收聽,謝謝!下面是問答時間,我會找?guī)讉€我能回答的問題來進(jìn)行回答。
作者:王巨
鏈接:https://www.jianshu.com/p/4a37cf5fcf70
來源:簡書
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
總結(jié)
以上是生活随笔為你收集整理的EOS从入门到精通-账户体系(文字稿)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: EOS从入门到精通-设计背景与DPOS算
- 下一篇: EOS从入门到精通(三)