摘要:為了解決這個(gè)問(wèn)題,采取了三步用戶賬戶自定義分級(jí)權(quán)限。用戶權(quán)限與智能合約之間的映射。圖中不難看出,權(quán)限是賬戶最高權(quán)限,可以執(zhí)行權(quán)限。如果沒(méi)有發(fā)現(xiàn)任何符合的映射,會(huì)直接檢查本次執(zhí)行是否滿足了權(quán)限,若不足,會(huì)檢查。
到底什么叫“智能合約”?
名詞解釋:本篇文章出現(xiàn)很多 “Action” 和 “Active”,Action (動(dòng)作)為 EOS 中賬戶可以接受的動(dòng)作,也就是別人可以對(duì)你做什么;Active 為 EOS 賬戶權(quán)限的一種。閱讀本文前建議先閱讀之前的文章:https://mp.weixin.qq.com/s/K6...
在 EOS 里,不論是真人用戶還是智能合約,本質(zhì)上都是一個(gè)賬戶(Account)?;蛘哒f(shuō),真人賬戶也是一個(gè)智能合約,都可以對(duì)外聲明別人可以對(duì)他做什么動(dòng)作(比如社交合約里的發(fā)帖),EOS 官方稱之為 “Action”。比如某個(gè)賬戶可以聲明一個(gè)叫 “SayHi” 的 Action,別的賬戶就可以使用 Active 權(quán)限(這里可以參考之前的文章)對(duì)他執(zhí)行 SayHi 動(dòng)作。賬戶還可以聲明對(duì) Action 的回應(yīng)方式,比如別人對(duì)他 SayHi 后可以回送一個(gè)金幣什么的。所以 EOS 里 “智能合約” 的定義就是:賬戶聲明的 Action,以及對(duì) Action 的回應(yīng)腳本(程序)。任何智能合約都是由這兩個(gè)要素組成的。
這種架構(gòu)自然而然引發(fā)了一個(gè)問(wèn)題:對(duì)于復(fù)雜的智能合約賬戶,有些 Action 功能比較簡(jiǎn)單,比如就是一個(gè)查詢,安全性要求不高,便利性要求高。還有些 Action 非常敏感,比如提現(xiàn),便利性要求不高,安全性要非常高。用戶賬戶使用自己的 Active 權(quán)限就可以執(zhí)行所有智能合約的 Action,顯然是不合理的。EOS 為了解決這個(gè)問(wèn)題,采取了三步:1.(用戶)賬戶自定義分級(jí)權(quán)限。2.(智能合約)賬戶 Action 分級(jí)。3.用戶權(quán)限與智能合約 Action 之間的映射(mapping)。再次強(qiáng)調(diào),這里只是為了表達(dá)方便,將賬戶分為“用戶”與“智能合約”,其實(shí)這二者在 EOS 里沒(méi)有區(qū)別。用戶本身就是智能合約,智能合約也是其他智能合約的“用戶”。
(用戶)賬戶自定義分級(jí)權(quán)限EOS 里,賬戶默認(rèn)會(huì)有兩種權(quán)限:Owner 和 Active。Owner 是最高權(quán)限,Active 就是之前提到的操作智能合約權(quán)限。所有權(quán)限都是基于權(quán)重和閾值管理的。EOS 在此基礎(chǔ)上,增加了分級(jí)并分組的自定義權(quán)限,如下圖所示。
途中箭頭方向就是指向“母權(quán)限”或者更高級(jí)權(quán)限。圖中不難看出,Owner 權(quán)限是賬戶最高權(quán)限,可以執(zhí)行 Active 權(quán)限。Active 權(quán)限可以執(zhí)行 Family 權(quán)限和 Lawyer 權(quán)限。 Family 權(quán)限可以執(zhí)行 Friends 權(quán)限。反過(guò)來(lái),低級(jí)權(quán)限不能代替執(zhí)行更高級(jí)的權(quán)限。不同級(jí)別的權(quán)限用 "/" 或"." 分隔,比如圖中的 Friends 權(quán)限就可以表示為 “@User.Active.Family.Friends”。
(智能合約)賬戶 Action 分級(jí)與權(quán)限分級(jí)類似,賬戶 Action 也可以分級(jí)并分組,如下圖所示(圖中的 Message 也就是 Action)。
這個(gè)智能合約賬戶叫“@Exchange.Contract”,首先定義了 Withdraw(提現(xiàn)) Action,接下來(lái)是一組 Action 名叫 “Trade(交易)組”,組里有三個(gè) Action:Buy(買入)、Sell(賣出)、Cancel(取消)。Action 同樣遵循“向下兼容”,也就是如果某用戶賬戶的某權(quán)限擁有“Trade組”的映射,就可以執(zhí)行“Trade組”的所有 Action。不同級(jí)別的 Action 用 "/" 或"." 分隔,比如圖中的 Buy Action 就可以表示為 “@Exchange.Contract/Trade/Buy”。
權(quán)限與 Action 之間的映射最后一步,我們要將前兩步連接起來(lái),也就決定什么權(quán)限能執(zhí)行什么 Action,如下圖的左下部分。
首先看映射1,我們將 @Exchange.Contract 合約的所有 Action 映射到了 Family 權(quán)限,也就是使用 @User 用戶的 Family 權(quán)限(或者更高權(quán)限)可以執(zhí)行 @Exchange.Contract 合約的所有 Action。映射2表示將 @Exchange.Contract 合約的 Withdraw(提現(xiàn))Action 映射到了 Lawyer 權(quán)限,所以 Lawyer 權(quán)限可以執(zhí)行 Withdraw Action。但無(wú)法執(zhí)行其他 Action。3 表示 Trade 組并沒(méi)有特殊映射,不過(guò)因?yàn)?@Exchange.Contract 合約的所有 Action 都映射到了 Family 權(quán)限,可以直接通過(guò) Family 權(quán)限執(zhí)行,或者使用更高級(jí)的 Active 甚至 Owner 權(quán)限。
如果 @User 賬戶想執(zhí)行 @Exchange.Contract/Trade/Buy 這個(gè) Action,系統(tǒng)會(huì)檢查 @User 賬戶是否定義了 @Exchange.Contract/Trade/Buy 映射,沒(méi)有的話會(huì)檢查 @Exchange.Contract/Trade 映射,接著會(huì)檢查 @Exchange.Contract 映射,發(fā)現(xiàn) @Exchange.Contract 映射到了 Family 權(quán)限,就會(huì)檢查本次執(zhí)行是否滿足了 @User.Family 權(quán)限(達(dá)到閾值),若 Family 權(quán)限不足會(huì)檢查 @User.Active,接著會(huì)檢查 @User.Owner。
如果沒(méi)有發(fā)現(xiàn)任何符合的映射,會(huì)直接檢查本次執(zhí)行是否滿足了 @User.Active 權(quán)限,若不足,會(huì)檢查 @User.Owner。
【許曉笛】EOS 上線前,先搞懂這兩個(gè)基本概念
圓方圓學(xué)院匯集大批區(qū)塊鏈名師,打造精品的區(qū)塊鏈技術(shù)課程。 在各大平臺(tái)都長(zhǎng)期有優(yōu)質(zhì)免費(fèi)公開課,歡迎報(bào)名收看。
公開課地址:https://ke.qq.com/course/345101
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/24434.html
摘要:的跟其他區(qū)塊鏈項(xiàng)目是類似的,都是一個(gè)基本功能本地儲(chǔ)存密鑰,僅此而已。公網(wǎng)上線后,一定要將存有密鑰的加密,并且將文件單獨(dú)備份好。字面意思是賬戶,但我覺(jué)得有個(gè)概念更適合法人。代幣就是由持有的。對(duì)于權(quán)限,則需要列表里至少兩個(gè)賬戶的授權(quán)才能行使。 如果你曾經(jīng)嘗試在本地運(yùn)行 EOS 測(cè)試節(jié)點(diǎn),會(huì)發(fā)現(xiàn)編譯、運(yùn)行并不是特別復(fù)雜,但官方教程里兩個(gè)概念很容易把人搞暈: Account(賬戶) 和 Wal...
摘要:所以想要實(shí)現(xiàn)真正實(shí)用的智能合約平臺(tái),就要脫離比特幣系統(tǒng)的架構(gòu),尋找新的系統(tǒng)組織形式。比特幣和以太坊之所以設(shè)計(jì)了手續(xù)費(fèi)機(jī)制,就是防止大量垃圾交易使得系統(tǒng)擁堵。 區(qū)塊鏈系統(tǒng)中,去中心化程度與效率之間天然地存在矛盾關(guān)系。 如果區(qū)塊鏈智能合約系統(tǒng)想追求類似比特幣的去中心化程度,理論上效率就會(huì)大打折扣?,F(xiàn)實(shí)也是這樣的:比特幣每秒鐘只能處理7筆左右的交易,每一筆交易要用至少30分鐘才能確認(rèn),這種效...
摘要:再配合轉(zhuǎn)賬延時(shí),為用戶找回被盜賬戶提供了時(shí)間上的可能。只能轉(zhuǎn)移走所有資產(chǎn)并丟棄這個(gè)賬戶??偨Y(jié)使用通過(guò)獨(dú)特的權(quán)限管理機(jī)制,結(jié)合延時(shí)加密和社會(huì)學(xué)手段,將賬戶被盜遺失的可能性將到了最低程度。 EOS 針對(duì)以下兩種情況設(shè)計(jì)了應(yīng)急措施: 賬戶被盜(私鑰被盜或有權(quán)限的其他賬戶被盜) 賬戶遺失(私鑰遺失或有權(quán)限的其他賬戶遺失) 1.賬戶被盜 EOS 有可能會(huì)強(qiáng)制要求所有賬戶的 Owner 權(quán)限必...
摘要:所以最簡(jiǎn)單的智能合約只需實(shí)現(xiàn)文件。我們看到文件中已經(jīng)聲明了這個(gè),并說(shuō)明了這個(gè)的李嘉圖合約,大概意思是本合約的輸入為一串字符,本合約意圖是打印輸出,沒(méi)有其他效果。 Hello World! 稍微了解 EOS 系統(tǒng),你就會(huì)知道 EOS 的智能合約基于 WebAssembly(WASM) 技術(shù),這種技術(shù)在性能和跨平臺(tái)兼容性之間取得了很好的平衡,通過(guò)將原始代碼編譯成字節(jié)碼,使得代碼可以在多種平...
摘要:相關(guān)文章和視頻推薦許曉笛智能合約案例解析圓方圓學(xué)院匯集大批區(qū)塊鏈名師,打造精品的區(qū)塊鏈技術(shù)課程。 Daniel Larimer 在他的博客介紹了EOS新的智能合約架構(gòu)(EOS團(tuán)隊(duì)的開發(fā)速度實(shí)在是太嚇人,根本追不上)。他給出了最簡(jiǎn)單的一個(gè)新幣種的智能合約代碼,僅有49行就能完成一個(gè)新幣種的開發(fā),一個(gè)新的愛息歐就誕生了。讓我們一步一步實(shí)現(xiàn)吧。 首先實(shí)現(xiàn)私有成員,建立一個(gè) account 結(jié)...
閱讀 2825·2021-10-22 09:55
閱讀 2263·2021-09-27 13:35
閱讀 1414·2021-08-24 10:02
閱讀 1742·2019-08-30 15:55
閱讀 1345·2019-08-30 14:13
閱讀 3618·2019-08-30 13:57
閱讀 2128·2019-08-30 11:07
閱讀 2617·2019-08-29 17:12