EOS.IO 技術(shù)白皮書

草案:2017 年 6 月 26 日 (@dayzh (https://steemit.com/@dayzh))

摘要: EOS.IO 軟件引入一種新的區(qū)塊鏈架構(gòu)設(shè)計,它使得去中心化的應(yīng)用可以橫向和縱向的擴展届良。 這通過構(gòu)建一個仿操作系統(tǒng)的方式來實現(xiàn)主届,在它之上可以構(gòu)建應(yīng)用程序巫玻。 該軟件提供帳戶、身份驗證、數(shù)據(jù)庫、異步通信和跨越數(shù)百個 CPU 內(nèi)核或集群的應(yīng)用程序調(diào)度丐巫。 由此產(chǎn)生的技術(shù)是一種區(qū)塊鏈架構(gòu),它可以擴展至每秒處理百萬級交易勺美,消除用戶的手續(xù)費递胧,并且允許快速和輕松的部署去中心化的應(yīng)用。

PLEASE NOTE: CRYPTOGRAPHIC TOKENS REFERRED TO IN THIS WHITE PAPER REFER TO CRYPTOGRAPHIC TOKENS ON A LAUNCHED BLOCKCHAIN THAT ADOPTS THE EOS.IO SOFTWARE. THEY DO NOT REFER TO THE ERC-20 COMPATIBLE TOKENS BEING DISTRIBUTED ON THE ETHEREUM BLOCKCHAIN IN CONNECTION WITH THE EOS TOKEN DISTRIBUTION.

Copyright ? 2017 block.one

未經(jīng)允許赡茸,在非用于商業(yè)和教育用途的前提下 (即缎脾,除了收取費用或商業(yè)目的),如果注明原始出處并適用聲明的版權(quán)坛掠,任何人可以使用、復(fù)制或發(fā)布本白皮書內(nèi)的任何內(nèi)容治筒。

免責(zé)聲明: 本 EOS.IO 技術(shù)白皮書草案僅供參考屉栓。 block.one does not guarantee the accuracy of or the conclusions reached in this white paper, and this white paper is provided “as is”. block.one does not make and expressly disclaims all representations and warranties, express, implied, statutory or otherwise, whatsoever, including, but not limited to: (i) warranties of merchantability, fitness for a particular purpose, suitability, usage, title or noninfringement; (ii) that the contents of this white paper are free from error; and (iii) that such contents will not infringe third-party rights. block.one and its affiliates shall have no liability for damages of any kind arising out of the use, reference to, or reliance on this white paper or any of the content contained herein, even if advised of the possibility of such damages. In no event will block.one or its affiliates be liable to any person or entity for any damages, losses, liabilities, costs or expenses of any kind, whether direct or indirect, consequential, compensatory, incidental, actual, exemplary, punitive or special for the use of, reference to, or reliance on this white paper or any of the content contained herein, including, without limitation, any loss of business, revenues, profits, data, use, goodwill or other intangible losses.

背景

區(qū)塊鏈技術(shù)是通過 2008 年誕生的比特幣貨幣得以被認知,自從那之后企業(yè)家和開發(fā)者就不斷的嘗試推廣這一技術(shù)耸袜,以便在單一的區(qū)塊鏈平臺上支持更為廣泛的應(yīng)用程序友多。

而一些區(qū)塊鏈平臺努力的支持可運作的去中心化應(yīng)用,具體的應(yīng)用比如 BitShares 去中心化交易所 (2014) 和 Steem 社交媒體平臺 (2016) 已經(jīng)成為每天被成千上萬活躍用戶重度使用的區(qū)塊鏈堤框。 他們能做到這些域滥,是通過性能的提升達到每秒處理上千交易纵柿,消除手續(xù)費和提供堪比已經(jīng)存在的中心化服務(wù)的用戶體驗。

已存在的區(qū)塊鏈平臺承擔(dān)著大量的交易費和有限的可計算能力启绰,這都阻礙了區(qū)塊鏈技術(shù)的大面積應(yīng)用昂儒。

區(qū)塊鏈應(yīng)用的要求

為了贏得廣泛的應(yīng)用,構(gòu)建在區(qū)塊鏈之上的應(yīng)用需要一個靈活性足以滿足以下要求的平臺:

支持成百上千的用戶

像 Ebay委可、Uber渊跋、AirBnB 和 Facebook 這樣企業(yè),他們需要區(qū)塊鏈技術(shù)能處理每日數(shù)以千萬的活躍用戶着倾。 在某些情況下拾酝,除非用戶群體達到一個極龐大的量級否則應(yīng)用并無用武之地,因此一個可以處理極其龐大用戶的平臺是至關(guān)重要的卡者。

免費的使用

Application developers need the flexibility to offer users free services; users should not have to pay in order to use the platform or benefit from its services. 一個可以免費供用戶使用的區(qū)塊鏈平臺或許將贏得更為廣泛的使用蒿囤。 開發(fā)者和企業(yè)可以制訂有效的貨幣化戰(zhàn)略。

簡單升級和 bug 修復(fù)

企業(yè)構(gòu)建區(qū)塊鏈基礎(chǔ)的應(yīng)用需要能夠為應(yīng)用增加新特性的靈活性崇决。

所有非同凡響的軟件都會受到 bug 的影響材诽,即便是經(jīng)過了最嚴(yán)格意義上的驗證。這個平臺必須具有足夠的魯棒性以便應(yīng)對不可避免出現(xiàn)的 bug嗽桩。

低延時

一個好的用戶體驗需要延時時間在數(shù)秒內(nèi)就能收到可靠的反饋葵萎。 高延時會阻礙用戶,并且會讓構(gòu)建在區(qū)塊鏈上的應(yīng)用比已有的非區(qū)塊鏈應(yīng)用缺乏競爭力极颓。

時序性能

一些應(yīng)用因為順序依賴關(guān)系的執(zhí)行步驟而不能使用并發(fā)算法實現(xiàn)霍骄。 比如交易所就需要足夠的時序性能來處理很高的交易量,因此高時序性能處理的平臺是必須的扑庞。

并發(fā)性能

大型可擴展應(yīng)用需要將工作量分配到多 CPU 和計算機之上譬重。

共識算法 (DPOS)

EOS.IO 軟件使用唯一能滿足區(qū)塊鏈之上應(yīng)用性能需求的去中心化共識算法,委托股權(quán)證明 (DPOS)罐氨。 Under this algorithm, those who hold tokens on a blockchain adopting the EOS.IO software may select block producers through a continuous approval voting system and anyone may choose to participate in block production and will be given an opportunity to produce blocks proportional to the total votes they have received relative to all other producers. For private blockchains the management could use the tokens to add and remove IT staff.

EOS.IO 軟件使得區(qū)塊準(zhǔn)確的每 3 秒生成一個并且在任何時間點都只有一個被授權(quán)的生產(chǎn)者來生成區(qū)塊臀规。 如果一個區(qū)塊在規(guī)定時間之內(nèi)未被生產(chǎn)出來則這一區(qū)塊將被跳過。 當(dāng)一個或多個區(qū)塊被跳過發(fā)生時栅隐,在區(qū)塊鏈中會有一個 6 秒及以上的間隔塔嬉。

在 EOS.IO 軟件中,區(qū)塊通過 21 名生產(chǎn)者輪流產(chǎn)生租悄。 在每一輪的開始時谨究,21 個唯一的區(qū)塊生產(chǎn)者被選出。 獲票最高的前 20 名自動在沒輪被選中泣棋,剩余的一個生產(chǎn)者通過得票比例選出胶哲。 被選中的生產(chǎn)者通過從區(qū)塊取到的時間作為偽隨機數(shù)來打亂其順序。 打亂順序是為確保這些生產(chǎn)者與其他生產(chǎn)者保持均衡的連通性潭辈。

如果一個生產(chǎn)者錯過了一個區(qū)塊并且在過去的 24 小時內(nèi)沒有生產(chǎn)任何的區(qū)塊鸯屿,那么它將被從候選中移除澈吨,直到它在區(qū)塊鏈中通知它要開始再次生產(chǎn)區(qū)塊的意圖。 這樣通過最小化區(qū)塊丟失數(shù)量(因被證實不可靠的節(jié)點不作為導(dǎo)致)來確保網(wǎng)絡(luò)操作的穩(wěn)定性寄摆。

在一般情況下谅辣,一個 DPOS 區(qū)塊鏈不會經(jīng)歷任何的分叉,因為區(qū)塊生產(chǎn)者是通過合作而非競爭的方式來生產(chǎn)區(qū)塊冰肴。 即便真的出現(xiàn)了分叉屈藐,共識也將自動的切換到最長的鏈上。 之所以會這樣運作熙尉,是因為區(qū)塊添加到一個區(qū)塊鏈分叉的速率與公用同一共識的區(qū)塊生產(chǎn)者比例是相關(guān)的联逻。 換句話說,具有更多生產(chǎn)者的區(qū)塊鏈分叉會比擁有較少生產(chǎn)的那一個條增長的速度更快检痰。 而且包归,沒有一個生產(chǎn)者會同時在兩個分叉上同時生產(chǎn)區(qū)塊。 如果一個區(qū)塊生產(chǎn)者被抓到做這樣的事兒铅歼,那么這個生產(chǎn)者將很可能被投票投出公壤。 這些雙重生產(chǎn)行為對應(yīng)密碼學(xué)憑證可以用來自動的刪除這些濫用者。

交易確認

通常 DPOS 區(qū)塊鏈 100% 會有區(qū)塊生產(chǎn)者參與椎椰。一個交易從廣播開始后平均 1.5 秒就可以 99.9% 被認為是確認了厦幅。

在一些特殊情況下例外,軟件出現(xiàn) bug慨飘,網(wǎng)絡(luò)擁塞确憨,或一個惡意的區(qū)塊生產(chǎn)者制造了兩個或更多的分叉。 為了確保一個交易絕對是不可逆的瓤的,一個節(jié)點可以選擇等待 21 個區(qū)塊生產(chǎn)者中的 15 個給出確認休弃。 基于通常的 EOS.IO 軟件配置,在一般情況下這需要平均 45 秒的時間圈膏。 默認情況下塔猾,所有的節(jié)點將認為當(dāng) 21 個生產(chǎn)者中有 15 個給出確認后這一區(qū)塊就是不可逆的了,并且不管長度如何都不會切換到?jīng)]有這一區(qū)塊的分叉稽坤。

在分叉開始的 9 秒內(nèi)丈甸,一個節(jié)點就可以警告用戶他們極可能正處于分叉中。 在連續(xù)丟失 2 個區(qū)塊后尿褪,有 95% 的概率可以確認一個節(jié)點處于分叉中睦擂。 在連續(xù)丟失 3 個區(qū)塊后就有 99% 的概率確認。 可以通過節(jié)點丟失茫多、近期參與比率和其他參數(shù)來構(gòu)建魯棒性預(yù)測模型祈匙,從而快速的警告操作者出現(xiàn)了問題忽刽。

對于這種警告的反應(yīng)完全取決于商業(yè)交易的性質(zhì)天揖,但最簡單的做法就是等待 15/21 的確認直到警告消失夺欲。

股權(quán)證明的交易 (TaPoS)

EOS.IO 軟件需要每一個交易包含最近一個區(qū)塊頭的哈希值。這個哈希值有兩個目的:

  1. 防止不包含區(qū)塊引用的交易在分叉時重放發(fā)生今膊;和
  2. 通知網(wǎng)絡(luò)對應(yīng)的用戶和他們的股份當(dāng)前在某個具體的分叉上些阅。

隨著時間的推移,所有的用戶直接確認區(qū)塊鏈斑唬,在這一鏈條上難以偽造假的鏈條市埋,因為假的鏈條根本無法從合法鏈條上遷移交易。

帳戶

EOS.IO 軟件允許所有的帳戶使用一個唯一的人類可讀的名稱來索引恕刘,長度在 2 到 32 個字符之間缤谎。 這個名稱由帳戶創(chuàng)建者自己選擇。 所有的帳戶必須在創(chuàng)建時用極少的帳戶余額來注資褐着,從而覆蓋存儲帳戶信息的成本坷澡。 帳戶名稱也支持命名空間,比如 @domain 這個帳戶的擁有者是唯一可以創(chuàng)建 @user.domain 帳戶的人含蓉。

在一個去中心化的場景中频敛,應(yīng)用開發(fā)者將會為新用戶注冊成本買單。 Traditional businesses already spend significant sums of money per customer they acquire in the form of advertising, free services, etc. 比起來馅扣,資助一個新的區(qū)塊鏈帳戶的花費簡直微不足道斟赚。 值得慶幸的是,對一個已經(jīng)在另一個應(yīng)用注冊過的用戶并不需要再創(chuàng)建新的帳戶差油。

消息 & 處理

每個帳戶可以發(fā)送結(jié)構(gòu)化的消息給其他的帳戶拗军,并且可以定義腳本來處理他們接收到的消息。 EOS.IO 軟件給每個帳戶提供了只有自己的消息處理腳本能訪問的私有數(shù)據(jù)庫厌殉。 消息處理腳本同樣可以給其他帳戶發(fā)送消息食绿。 消息和自動化的消息處理的結(jié)合決定了 EOS.IO 如何定義智能合約的。

基于角色的權(quán)限管理

權(quán)限管理涉及判定一條消息是否被正確的授權(quán)公罕。 權(quán)限管理最簡單的形式就是檢查一個交易包含必須的簽名器紧,但這意味著必須的簽名是已知的。 一般情況下楼眷,權(quán)威必然是獨立的個體或者個體組成的群體铲汪,并且是被劃分開的。 EOS.IO 軟件提供了聲明式的權(quán)限管理系統(tǒng)罐柳,通過管理誰可以在什么時間做什么來給用戶細力度和高維度的控制掌腰。

授權(quán)和權(quán)限管理被標(biāo)準(zhǔn)化和脫離應(yīng)用的商業(yè)邏輯是不可取的。 這使得管理權(quán)限的工具得以被開發(fā)张吉,既滿足常規(guī)的需求又為性能優(yōu)化提供了重要的可能性齿梁。

每一個帳戶可以被任何權(quán)重組合的其他帳戶和私鑰管控。 這創(chuàng)建了分層級的權(quán)利結(jié)構(gòu),這反映了現(xiàn)實中的權(quán)限分配方式勺择,并且讓多用戶共同管理資產(chǎn)變得從未如此簡單创南。 多用戶控制是安全最大的貢獻者,并且省核,當(dāng)用戶使用得當(dāng)稿辙,它可以極大的消除因被黑而導(dǎo)致被盜竊的風(fēng)險。

EOS.IO software allows accounts to define what combination of keys and/or accounts can send a particular message type to another account. 舉個例子气忠,可以指定一個密鑰給一個用戶的社交媒體賬號邻储,同時另一個密鑰訪問交易所。 甚至可以給其他帳戶權(quán)限來代表自己而無需分配給他們密鑰旧噪。

命名的權(quán)限級別

在 EOS.IO 軟件中吨娜,帳戶可以定義命名的權(quán)限級別,每一個是由更高級別的命名權(quán)限派生而來淘钟。 每一個命名的權(quán)限級別定義了一個權(quán)威萌壳;一個權(quán)威是多重簽名閾值校驗,它包含密鑰和/或其他帳戶的命名權(quán)限級別日月。 打個比方袱瓮,一個帳戶的“朋友”權(quán)限級別可以被設(shè)置為由該帳戶的任何一個朋友無差別的控制。

另一個例子在 Steem 區(qū)塊鏈中爱咬,它包含三個硬編碼的命名權(quán)限級別:擁有尺借,活躍和發(fā)帖。 發(fā)帖權(quán)限就只能進行如投票和發(fā)帖的社交活動精拟,而活躍權(quán)限可以做除了變更擁有之外的所有的事情燎斩。 擁有權(quán)限的意思是冷存儲并且有能力做任何事。 The EOS.IO software generalizes this concept by allowing each account holder to define their own hierarchy as well as the grouping of actions.

命名的消息處理群組

EOS.IO 軟件允許每個帳戶將他們自己的消息組織到一個命名和嵌套的群組中蜂绎。 這個命名的消息處理群組可以在其他帳戶配置他們權(quán)限級別時被引用栅表。

最高級別的消息處理群組是帳戶名稱,最低級別的是一個帳戶接收到的單獨的消息類型师枣。 這些群組可以被這樣的方式引用: @accountname.groupa.subgroupb.MessageType.

在這樣的模型之下怪瓶,交易所合約可以通過將掛單的創(chuàng)建和取消分組,從而與充值提現(xiàn)分離開践美。 交易所合約的這樣分組對用戶而言帶來了方便洗贰。

權(quán)限映射

EOS.IO 軟件允許每個帳戶定義從任意帳戶的一個命名的消息處理群組與自己的命名的權(quán)限級別之間建立映射。 舉個例子陨倡,一個帳戶所有者可以將自己社交媒體應(yīng)用與自己的“朋友”權(quán)限群組建立映射敛滋。 有了這個映射,任何朋友可以以這一帳戶的身份在這一帳戶的社交媒體上發(fā)帖兴革。 盡管他們將以帳戶所有者的身份發(fā)帖绎晃,他們?nèi)匀皇褂米约旱拿荑€來簽名消息蜜唾。 這意味著總是可以辨識出是哪一個朋友在以何種方式使用帳戶。

評估權(quán)限

當(dāng) @alice 以 "Action" 類型發(fā)送一條消息給 @bob 時庶艾,EOS.IO 軟件首先會檢查 @alice 是否為 @bob.groupa.subgroup.Action 定義過權(quán)限映射灵妨。 如果什么都沒有找到,緊接著檢查 @bob.groupa.subgroup 映射落竹,然后是 @bob.groupa,最后 @bob 將被檢查货抄。 如果都沒有找到述召,那么假定映射為命名的權(quán)限群組 @alice.active

一旦一個映射被識別蟹地,則通過閾值多簽名流程驗證簽名權(quán)威积暖,并且關(guān)聯(lián)權(quán)威與命名的權(quán)限。 如果失敗了怪与,則躍遷至父權(quán)限夺刑,直至擁有者權(quán)限,@alice.owner分别。

默認權(quán)限群組

The EOS.IO technology also allows all accounts to have an "owner" group which can do everything, and an "active" group which can do everything except change the owner group. 所有其他的全新群組派生自“活動”群組遍愿。

權(quán)限并行評估

權(quán)限評估過程是“只讀”的,并且通過交易對權(quán)限的變更在一個區(qū)塊結(jié)束之前不會起作用耘斩。 這意味著對所有的交易對應(yīng)的密鑰和權(quán)限評估可以被并行執(zhí)行沼填。 此外,這意味著一個快速的權(quán)限驗證是可行的括授,它無需啟動會引起回滾需求的高成本的應(yīng)用邏輯坞笙。 最后,這意味著交易權(quán)限可以被評估即便接收到等待的交易荚虚,并且之后無需再重新評估薛夜。

從各方面考慮,權(quán)限驗證占據(jù)了驗證交易計算量的很大比例版述。 讓其只讀和普遍的并發(fā)處理將會使得性能有一個質(zhì)的飛躍梯澜。

當(dāng)從消息日志中重新生成確定性狀態(tài)時不再需要重復(fù)的權(quán)限驗證。 事實是一個交易如果被包含近了一個被認為不存在問題的區(qū)塊時它就有足夠的理由跳過這 步這將極大減少因為區(qū)塊鏈增長拉去過去記錄時的計算量渴析。

帶強制性延時的消息

時間是安全中的一個關(guān)鍵組成部分腊徙。 在大多數(shù)情況下,一個私鑰在沒有被使用前都無從知曉它是否被偷竊檬某。 當(dāng)人們有需要密鑰的應(yīng)用在每天聯(lián)網(wǎng)使用的電腦上運行時撬腾,基于時間的安全會更為重要。 EOS.IO 軟件讓應(yīng)用開發(fā)者可以指明消息必須在被加到一個區(qū)塊之前等待最小的時間間隙恢恼。 During this time they can be cancelled.

用戶可以在消息廣播出去后通過郵件或者文字消息的形式收到通知民傻。 如果他們沒有授權(quán),那么他們可以使用帳戶恢復(fù)流程來恢復(fù)帳戶,并收回消息漓踢。

這個必須的延時由操作敏感性決定牵署。 為一杯咖啡付款可以沒有任何的延時,幾秒之內(nèi)就不可逆了喧半,而購買一個房子也許需要 72 消失的結(jié)算期奴迅。 轉(zhuǎn)移整個帳戶到一個新的控制可能需要長達 30 天。 具體的延時選擇由開發(fā)者和用戶自己來做選擇挺据。

恢復(fù)被盜竊的密鑰

EOS.IO 軟件提供給用戶一種找回自己失竊密鑰控制權(quán)的方式取具。 一個帳戶的所有者可以使用過去 30 天任何活躍的擁有者密鑰與事先指定的合作者帳戶給出的批準(zhǔn)來重置自己帳戶的密鑰。 帳戶的恢復(fù)合作者在沒有所有人幫助的情況下無法重置帳戶的控制權(quán)扁耐。

黑客嘗試進行恢復(fù)流程是無意義的暇检,因為他們已經(jīng)“控制”了帳戶。 此外婉称,就算他們真的進行這一流程块仆,恢復(fù)合作者也會詢問身份證明和多因素認證 (手機和郵件)。 這會讓黑客脫作出讓步或者無功而返王暗。

這一流程與簡單的多重簽名有很大差異悔据。 在多重簽名中,另一個公司要參與所有轉(zhuǎn)賬的執(zhí)行俗壹,但在恢復(fù)流程中蜜暑,它卻只在恢復(fù)時才起作用對每天的轉(zhuǎn)賬無從干預(yù)。 這大大的降低了參與者的成本和法律責(zé)任策肝。

應(yīng)用程序的確定性并行執(zhí)行

區(qū)塊鏈共識取決于確定性 (可重現(xiàn)的) 的行為肛捍。 這意味著所有的并行計算必須是不能互斥或者具有其他鎖特性的。 沒有了鎖就必須有一些方式可以確保所有的帳戶只可以讀取和寫入他們自己的私有數(shù)據(jù)庫之众。 這也意味著每個帳戶處理消息是順序的拙毫,而并發(fā)只能在帳戶層面進行。

In an EOS.IO software-based blockchain, it is the job of the block producer to organize message delivery into independent threads so that they can be evaluated in parallel. 每個帳戶的狀態(tài)由且只由發(fā)送給它的消息決定棺禾。 進度表由區(qū)塊生產(chǎn)者輸出并且會被確定性的執(zhí)行缀蹄,但是生成進度表的過程卻不一定是確定性的。 這意味著區(qū)塊生產(chǎn)者可以使用并發(fā)算法來調(diào)度交易膘婶。

并行執(zhí)行的一方面意味著當(dāng)一個腳本生成了一個新的消息缺前,它不會立即被發(fā)送,而被安排在下一個輪訓(xùn)中發(fā)送悬襟。 不能立馬發(fā)出的原因是接受者可能在另一個線程中活躍的變更自己的狀態(tài)衅码。

最小化通信延遲

延遲是一個帳戶從發(fā)出一條消息給另一個帳戶,直到收到回應(yīng)的這段時間脊岳。 我們的目標(biāo)是在一個單獨的區(qū)塊中包含兩個帳戶交換消息的來去信息逝段,而不用在每條消息間等待 3 秒鐘垛玻。 為了做到這一點,EOS.IO 軟件將每個區(qū)塊劃分為循環(huán)奶躯。 每個循環(huán)劃分為線程帚桩,每個線程包含了交易的一個列表。 每一個交易包含了待發(fā)送的消息集合嘹黔。 這個結(jié)構(gòu)可以被可視化為一個樹账嚎,其中交互層彼此并行,各自被順序的執(zhí)行儡蔓。

    區(qū)塊

      循環(huán) (順序)

        線程 (并行)

          交易 (順序)

            消息 (順序)

              接受者和被通知帳戶 (并行)

在一個循環(huán)中生成的交易可以在后續(xù)的任何一個循環(huán)或者區(qū)塊中被發(fā)送郭蕉。 區(qū)塊生產(chǎn)者會持續(xù)不斷的向區(qū)塊中添加循環(huán)直到最大的墻上時間到了或者沒有更多的新交易要發(fā)送。

可以對一個區(qū)塊使用靜態(tài)分析來驗證同一個循環(huán)內(nèi)不存在兩個線程包含同一帳戶下對交易的變更浙值。 只要保持不變一個區(qū)塊就可以并行的運行所有的線程。

只讀消息的處理

有些帳戶可以在傳遞/失敗的基礎(chǔ)上處理消息而不修改內(nèi)部狀態(tài)檩小。 如果是這樣的話开呐,那么這些處理程序可以并行執(zhí)行,只要只有一個特定的帳戶的只讀消息處理程序包含在一個或多個線程在一個特定的周期规求。

多帳戶的原子化交易

有時我們需要確保消息自動的被多個賬戶傳遞和接收筐付。 在這種情況下,消息會被放在同一個交易內(nèi)阻肿,賬戶會被分配到同一個線程瓦戚,并且消息被順序的添加。 這種情況對性能是不理想的丛塌,當(dāng)用戶使用涉及到“賬單”時较解,他們將在交易內(nèi)以賬戶唯一索引被列入其中。

基于性能和成本原因最好減少涉及兩個或多個重度帳戶的原子性操作赴邻。

區(qū)塊鏈狀態(tài)的部分評估

擴展區(qū)塊鏈技術(shù)使得組件化成為必要印衔。每個人不應(yīng)該執(zhí)行所有的事務(wù),尤其是當(dāng)其只需要運行應(yīng)用的一個小的子集姥敛。

一個交易所應(yīng)用開發(fā)者運行一個完整節(jié)點位的是為其用戶展現(xiàn)所有的狀態(tài)奸焙。 這個交易所應(yīng)用沒有與社交網(wǎng)絡(luò)建立關(guān)聯(lián)的必要性。 EOS.IO 軟件允許任何的完整節(jié)點選擇應(yīng)用的任何子集來執(zhí)行彤敛。 傳遞給其他應(yīng)用的消息可以被安全的忽略掉与帆,因為應(yīng)用程序的狀態(tài)完全由傳遞給它的消息派生。

這與其他帳戶的溝通有一些重要的影響墨榄。 最重要的是玄糟,不能假定其他帳戶的狀態(tài)可以在同一臺機器上訪問。 這也意味著袄秩,雖然很容易啟用“鎖”來允許一個帳戶同步調(diào)用另一個帳戶茶凳,如果其他帳戶不駐留在內(nèi)存中嫂拴,這種設(shè)計模式就會出現(xiàn)問題。

所有賬戶帳戶間的狀態(tài)通信必須通過包含在區(qū)塊鏈中的消息進行贮喧。

自主最優(yōu)調(diào)度

EOS.IO 軟件并不能為區(qū)塊生產(chǎn)生者為任何其他帳戶送達的任何信息負責(zé)筒狠。 每個區(qū)塊生產(chǎn)者要對計算的發(fā)雜讀和處理一個消息的時間自己進行主觀上的預(yù)測。 這同時適用于用戶生成的和腳本自動生成的交易箱沦。

On a launched blockchain adopting the EOS.IO software, at a network level all transactions are billed a fixed computational bandwidth cost regardless of whether it took .01ms or a full 10 ms to execute it. 然而辩恼,每個單獨的區(qū)塊生產(chǎn)者要通過自己的算法來計算資源的消耗。 當(dāng)一個區(qū)塊生產(chǎn)者斷定一個交易或者帳戶消耗了不相稱的大量的計算資源時谓形,他們可以在生成自己的區(qū)塊時拒絕該交易灶伊;但是,如果其他區(qū)塊生產(chǎn)者認為交易是有效的寒跳,他們就仍需要處理交易聘萨。

一般而言,只要一個區(qū)塊生產(chǎn)者認為交易在資源使用限度內(nèi)是有效的童太,那么其他區(qū)塊生產(chǎn)者就也要接受米辐,但可能交易傳遞給生產(chǎn)者就要花費 1 分鐘。

在某些情況下书释,生產(chǎn)者可以創(chuàng)建包含可接受范圍之外的數(shù)量級的塊翘贮。 在這種情況下,下一個區(qū)塊生產(chǎn)者可能會選擇拒絕區(qū)塊和束縛將被第三個生產(chǎn)者打破爆惧。 這和因為區(qū)塊過大導(dǎo)致的網(wǎng)絡(luò)延時沒什么打不同狸页。 社區(qū)會注意到模式的異常并最終會將票從流氓生產(chǎn)者哪里刪掉。

這種對計算成本的主觀評估將區(qū)塊鏈從必須精確和確定的預(yù)測一些東西要花多長時間來運行這一問題中解放出來扯再。 有了這一設(shè)計就不需要精確的數(shù)指令芍耘,將極大的增加優(yōu)化的可能性又不必打破共識。

Token 模型與資源使用

PLEASE NOTE: CRYPTOGRAPHIC TOKENS REFERRED TO IN THIS WHITE PAPER REFER TO CRYPTOGRAPHIC TOKENS ON A LAUNCHED BLOCKCHAIN THAT ADOPTS THE EOS.IO SOFTWARE. THEY DO NOT REFER TO THE ERC-20 COMPATIBLE TOKENS BEING DISTRIBUTED ON THE ETHEREUM BLOCKCHAIN IN CONNECTION WITH THE EOS TOKEN DISTRIBUTION.

All blockchains are resource constrained and require a system to prevent abuse. With a blockchain that uses EOS.IO software, there are three broad classes of resources that are consumed by applications:

  1. 帶寬和日志存儲 (磁盤)熄阻;
  2. 計算與計算儲備 (中央處理器)齿穗;
  3. 狀態(tài)存儲 (內(nèi)存)。

帶寬和計算有兩部分饺律,瞬時使用和長期使用窃页。 一個區(qū)塊鏈維持著所有消息的日志,這些日志最終由完全節(jié)點存儲和下載复濒。 通過消息日志可以重現(xiàn)所有應(yīng)用的狀態(tài)脖卖。

可計算債務(wù)是一個必須通過消息日志重新構(gòu)建狀態(tài)的計算結(jié)果。 如果可計算債務(wù)增長變得臃腫則有必要通過快照方式記錄區(qū)塊鏈狀態(tài)巧颈,并丟棄區(qū)塊鏈歷史畦木。 如果可計算債務(wù)增長過快,則它需要花費 6 個月時間來重放等值與 1 年的交易砸泛。 這很不可取十籍,因此蛆封,可計算債務(wù)需要被細心的管理。

區(qū)塊鏈狀態(tài)存儲是通過訪問應(yīng)用邏輯獲取的信息勾栗。 它包括諸如掛單和賬戶余額等信息惨篱。 如果狀態(tài)從未被應(yīng)用讀取則它不會被存儲。 比如围俘,博客發(fā)布的內(nèi)容和評論如未被應(yīng)用邏輯讀取則他們就不應(yīng)該存儲在區(qū)塊鏈狀態(tài)中砸讳。 同時,發(fā)布的內(nèi)容/評論的存在界牡、投票的數(shù)量和其他屬性要作為區(qū)塊鏈狀態(tài)的部分被存儲下來簿寂。

區(qū)塊生產(chǎn)者對外發(fā)布她們可用的帶寬,計算能力和狀態(tài)宿亡。 EOS.IO 允許帳戶按比例消耗一個 3 天對賭合約中的可用資源常遂。 舉個例子,如果一個基于 EOS.IO 的區(qū)塊鏈啟動了挽荠,一個帳戶持有所有 token 發(fā)行總量的 1%克胳,那么帳號就具有使用 1% 狀態(tài)存儲空間的能力。

Adopting the EOS.IO software on a launched blockchain means bandwidth and computational capacity are allocated on a fractional reserve basis because they are transient (unused capacity cannot be saved for future use). The algorithm used by EOS.IO software is similar to the algorithm used by Steem to rate-limit bandwidth usage.

客觀與主觀的度量

如前所述坤按,檢測計算使用的性能和優(yōu)化的影響很大毯欣;因此馒过,所有資源的使用限制臭脓,最終都是主觀的,執(zhí)行依靠個人的算法和區(qū)塊生產(chǎn)者進行估計腹忽。

也就是說来累,有一些事情是微不足道的客觀衡量。 發(fā)送的消息數(shù)和存儲在內(nèi)部數(shù)據(jù)庫中的數(shù)據(jù)的大小是便宜的客觀衡量窘奏。 的 EOS.IO 軟件讓區(qū)塊生產(chǎn)者采用相同的算法應(yīng)對客觀的量嘹锁,但可以在主觀量上選擇采用更嚴(yán)格的主觀測量算法。

接收方付費

傳統(tǒng)上來說着裹,企業(yè)為辦公場地领猾、計算力和其他為了運行企業(yè)而需要的成本買單。 客戶從企業(yè)購買具體的產(chǎn)品骇扇,產(chǎn)品銷售產(chǎn)生的利潤來蓋過企業(yè)運作的成本摔竿。 類似的,沒有哪個網(wǎng)站要求來訪者為蓋過運作成本而支付少孝。 因此继低,去中心化應(yīng)用也不應(yīng)該強制用戶因為使用了區(qū)塊鏈而直接為區(qū)塊鏈支付。

A launched blockchain that uses the EOS.IO software does not require its users to pay the blockchain directly for its use and therefore does not constrain or prevent a business from determining its own monetization strategy for its products.

委托能力

A holder of tokens on a blockchain launched adopting the EOS.IO software who may not have an immediate need to consume all or part of the available bandwidth, can give or rent such unconsumed bandwidth to others; the block producers running EOS.IO software on such blockchain will recognize this delegation of capacity and allocate bandwidth accordingly.

分離交易成本與 Token 價值

EOS.IO 軟件的一個主要優(yōu)點就是應(yīng)用可用的帶寬完全獨立于 token 的價格稍走。 If an application owner holds a relevant number of tokens on a blockchain adopting EOS.IO software, then the application can run indefinitely within a fixed state and bandwidth usage. In such case, developers and users are unaffected from any price volatility in the token market and therefore not reliant on a price feed. In other words, a blockchain that adopts the EOS.IO software enables block producers to naturally increase bandwidth, computation, and storage available per token independent of the token's value.

A blockchain using EOS.IO software also awards block producers tokens every time they produce a block. Token 的值將影響其能購買的帶寬袁翁、存儲和計算資源柴底;這一模型會自然的利用 token 值的上漲來增加網(wǎng)絡(luò)的性能。

狀態(tài)存儲成本

由于帶寬和計算資源可以被委托粱胜,因此應(yīng)用的狀態(tài)存儲需要應(yīng)用程序的開發(fā)者持有 token 直到狀態(tài)被刪除柄驻。 如果狀態(tài)永遠不會被刪除那么 token 實質(zhì)上從流通中被抹除。

每一個用戶帳戶需要一個確定數(shù)量的存儲年柠;因此每一個帳戶必須保持一個最小的余額凿歼。隨著網(wǎng)絡(luò)存儲能力的不斷提升,余額的最小余額需求將會下降冗恨。

塊獎勵

A blockchain that adopts the EOS.IO software will award new tokens to a block producer every time a block is produced. In these circumstances, the number of tokens created is determined by the median of the desired pay published by all block producers. EOS.IO 軟件可以配置限定生產(chǎn)者回報的上限從而確保 token 的每年增長比例不會超過 5%答憔。

社區(qū)效益應(yīng)用

In addition to electing block producers, pursuant to a blockchain based on the EOS.IO software, users can elect 3 community benefit applications also known as smart contracts. 這三個應(yīng)用將接收至多一個按照配置百分比對應(yīng)的 token 年供應(yīng)量減去每年提供給區(qū)塊生產(chǎn)者的 token 量。 這些智能合約將按照每個應(yīng)用接收到的 token 持有者的票的比例對應(yīng)的 token掀抹。 這些應(yīng)用或者智能合約可以被 token 持有者選出的新的應(yīng)用或智能合約所替代虐拓。

治理

治理是人們在主觀問題上達成共識的過程,而這無法完全用軟件算法來捕獲傲武。 An EOS.IO software-based blockchain implements a governance process that efficiently directs the existing influence of block producers. 沒有了定義好的治理流程蓉驹,之前的區(qū)塊鏈依賴臨時的、非正式和常常充滿爭議的方式治理揪利,直接導(dǎo)致不可預(yù)知的結(jié)果态兴。

A blockchain based on the EOS.IO software recognizes that power originates with the token holders who delegate that power to the block producers. 區(qū)塊生產(chǎn)者被授予有限的檢查權(quán)威來凍結(jié)帳戶,升級有缺陷的應(yīng)用程序疟位,對底層協(xié)議提出硬分叉的改進建議瞻润。

Embedded into the EOS.IO software is the election of block producers. 在對區(qū)塊鏈沒有做任何變更之前他們必須認可它。 如果區(qū)塊生產(chǎn)者拒絕 token 持有者所預(yù)期的變更他們就會被投出甜刻。 如果區(qū)塊生產(chǎn)者未經(jīng) token 持有者的授權(quán)作出變更绍撞,其他的非生產(chǎn)、完整驗證 (交易所等) 會拒絕這些變更得院。

凍結(jié)帳戶

有時一個智能合約的行為處于一種一場或不可預(yù)測的狀態(tài)并且無法按照預(yù)期執(zhí)行傻铣;另一些時候一個應(yīng)用或帳戶也許發(fā)現(xiàn)了一個可以銷毀不可想像數(shù)量資源的漏洞。 當(dāng)這些問題不可避免的發(fā)生時祥绞,區(qū)塊生產(chǎn)者有能力來扭轉(zhuǎn)這一局面非洲。

所有區(qū)塊鏈上的區(qū)塊生產(chǎn)者都有能力來決定哪些交易被加到區(qū)塊中,這給了他們凍結(jié)帳戶的能力蜕径。 A blockchain using EOS.IO software formalizes this authority by subjecting the process of freezing an account to a 17/21 vote of active producers. 如果生產(chǎn)者濫用權(quán)利他們會被投出两踏,而對應(yīng)凍結(jié)帳戶就將解凍。

更改帳戶代碼

When all else fails and an "unstoppable application" acts in an unpredictable manner, a blockchain using EOS.IO software allows the block producers to replace the account's code without hard forking the entire blockchain. 與凍結(jié)一個帳戶類似丧荐,更改帳戶代碼需要 17/21 這樣的生產(chǎn)者票形缆瓣。

憲法

EOS.IO 應(yīng)用使得區(qū)塊鏈創(chuàng)建了一個點對點的服務(wù)條款協(xié)議或者綁定用戶到一個合約,這都需要用戶對其簽名虹统,簡稱“憲法”弓坞。 憲法的內(nèi)容定義了僅僅依靠代碼無法在用戶間履行的義務(wù)隧甚,同時通過建立管轄權(quán)和可選的法律來解決相互間的爭端。 每個在網(wǎng)絡(luò)廣播的交易都必須將憲法的哈希值作為簽名的一部分渡冻,從而顯性的將簽名者綁定在合約中戚扳。

憲法還定義了人類可讀意圖的源代碼協(xié)議。 這個意圖是用來識別錯誤和功能之間的差異族吻,當(dāng)錯誤發(fā)生時帽借,引導(dǎo)社區(qū)對什么是適當(dāng)或不當(dāng)修復(fù)。

升級協(xié)議 & 憲法

The EOS.IO software defines a process by which the protocol as defined by the canonical source code and its constitution, can be updated using the following process:

  1. 區(qū)塊生產(chǎn)者對憲法提出改建意見并獲得 17/21 批準(zhǔn)超歌。
  2. 區(qū)塊生產(chǎn)者持續(xù) 17/21 品準(zhǔn)連續(xù) 30 天砍艾。
  3. 所有用戶需要使用新的憲法來做簽名。
  4. 區(qū)塊生產(chǎn)通過變更代碼的方式來影響憲法并且提交一個 git 記錄的哈希值巍举。
  5. 區(qū)塊生產(chǎn)者持續(xù) 17/21 品準(zhǔn)連續(xù) 30 天脆荷。
  6. 7 天后改為會起影響的代碼,給所有完整節(jié)點 1 周時間在確認源碼后進行升級懊悯。
  7. 所有未升級到最新代碼的節(jié)點被自動關(guān)掉蜓谋。

按照 EOS.IO 的默認配置,添加新特性升級區(qū)塊鏈的流程需要 2 到 3 個月炭分,而修復(fù)一般的 bug 不需要更改憲法需要 1 到 2 個月時間桃焕。

緊急變更

區(qū)塊生產(chǎn)者可以推薦軟件的變更當(dāng) bug 是傷害性 bug 或安全溢出影響用戶使用的。 一般來說捧毛,這可能是對憲法的加速更新观堂,引進新的功能或修復(fù)無害的錯誤。

腳本 & 虛擬機

EOS.IO 首先會是一個平臺用于協(xié)同用戶間認證消息的傳遞岖妄。 腳本語言和虛擬機的具體實現(xiàn)與 EOS.IO 技術(shù)的設(shè)計是分離的型将。 任何語言或者虛擬主機寂祥,只要確定并適合沙盒荐虐,帶有足夠的運行效率均可以和 EOS.IO 軟件 API 對接。

模式定義的消息

所以用戶間發(fā)送的消息都是通過模式定義定義出來的丸凭,它是區(qū)塊鏈共識狀態(tài)的一部分福扬。 這個模式允許消息在二進制與 JSON 格式之間無縫的轉(zhuǎn)換。

模式定義的數(shù)據(jù)庫

數(shù)據(jù)庫狀態(tài)也是通過類似的模式來定義惜犀。 這是為了確保所有應(yīng)用存儲的數(shù)據(jù)是可以轉(zhuǎn)化為人類可讀的 JSON 但存儲和控制時使用高效的二進制铛碑。

分離授權(quán)與應(yīng)用

To maximize parallelization opportunities and minimize the computational debt associated with regenerating application state from the transaction log, EOS.IO software separates validation logic into three sections:

  1. 驗證消息是否內(nèi)部一致;
  2. 驗證所有前提條件是否有效虽界;
  3. 修改應(yīng)用程序狀態(tài)汽烦。

驗證消息的內(nèi)部一致性是只讀的并且無需訪問區(qū)塊鏈狀態(tài)。 這意味著它可以以最大并發(fā)來執(zhí)行莉御。 驗證前提條件撇吞,比如需要的余額數(shù)俗冻,是只讀的因此也可以受益與并行計算。 只有更改應(yīng)用狀態(tài)時需要寫入權(quán)限并且必須順序的執(zhí)行每個應(yīng)用牍颈。

身份認證是一個驗證消息可被使用的只讀過程迄薄。 應(yīng)用程序?qū)嶋H上在發(fā)揮作用。 同一時間兩者都需要被計算煮岁,然而一旦消息被包含進區(qū)塊它就不再需要進行消息驗證的操作了讥蔽。

虛擬機獨立架構(gòu)

It is the intention of the EOS.IO software-based blockchain that multiple virtual machines can be supported and new virtual machines added over time as necessary. 因此,本文并不討論任何特定的語言或者虛擬機画机。 That said, there are two virtual machines that are currently being evaluated for use with an EOS.IO software-based blockchain.

Web 組建 (WASM)

網(wǎng)絡(luò)組建是一種為了構(gòu)建高性能的 web 應(yīng)用而新興的 web 標(biāo)準(zhǔn)冶伞。 只需要進行少量的更改 Web 組建就可以被制作為確定性的和沙盒化的。 Web 組建的好處是它有著廣泛的產(chǎn)業(yè)支持并且它可以讓智能合約使用熟知的語言進行開發(fā)步氏,比如 C 或 C++碰缔。

以太訪開發(fā)者已經(jīng)開始更改 Web 組建來提供合適的沙盒與確定性在他們的以太訪式 Web 組建 (WASM)。 這種方式讓 EOS.IO 很容易的與之適配和對接戳护。

以太訪虛擬機 (EVM)

這個虛擬機已經(jīng)被眾多已有的智能合約所采用并且可以通過適配應(yīng)用與 EOS.IO 區(qū)塊鏈中金抡。 It is conceivable that EVM contracts could be run within their own sandbox inside an EOS.IO software-based blockchain and that with some adaptation EVM contracts could communicate with other EOS.IO software blockchain applications.

跨鏈通信

EOS.IO 軟件被設(shè)計為跨區(qū)塊鏈通信友好的。 這是通過生成消息存在證明與消息時序證明變的簡單而實現(xiàn)的腌且。 這些證明與應(yīng)用架構(gòu)設(shè)計相結(jié)合梗肝,即圍繞消息細節(jié)的跨鏈傳輸和有效性驗證時隱藏應(yīng)用程序開發(fā)者的架構(gòu)設(shè)計。

<img align="right" src="http://eos.io/wpimg/Diagram1.jpg" width="362.84px" height="500px" />

用于輕客戶端的 Merkle 證明 (LCV)

如果客戶端不需要處理所有的交易會讓多區(qū)塊鏈間的整合更為輕松铺董。 畢竟侵俗,一個交易所只需要關(guān)心交易所的入賬和出賬,別無他求贞间。 如果交易所鏈條可以使用資金的輕量 merkle 證明婚脱,而不必非要完全依賴對它區(qū)塊生產(chǎn)者的信任會是一個不錯的主意。 至少一個鏈的區(qū)塊生產(chǎn)者在與其他區(qū)塊鏈同步時更樂意保持盡可能小的開銷重付。

LCV 的目標(biāo)能產(chǎn)生相對輕量存在性證明顷级,使得任何追蹤相對輕量數(shù)據(jù)集的人可以驗證其有效性。 在這種情況下确垫,目的是為了證明一個特定的交易是包含在一個特定的區(qū)塊中弓颈,區(qū)塊包含在一個特定的區(qū)塊鏈的已驗證歷史中。

比特幣支持通過全節(jié)點的完整記錄獲取每年 4MB 大小的區(qū)塊頭信息來驗證交易删掀。 每秒 10 個交易翔冀,一個有效的證明需要 512 個字節(jié)。 這對于有 10 分鐘間隔的區(qū)塊鏈沒有問題披泪,但是對于 3 秒間隔區(qū)塊鏈就顯得不那么“輕量”了纤子。

EOS.IO 軟件使得任何一個人只要他擁有包含交易所對應(yīng)區(qū)塊之后的隨意一個不可逆的區(qū)塊頭,他就可以進行輕量證明。 使用下面展示的哈希鏈結(jié)構(gòu)就可以使用少于 1024 字節(jié)的大小來完成任意交易的存在性證明控硼。 如果假設(shè)校驗節(jié)點在過去幾天內(nèi)所有的區(qū)塊頭一直增長 (2MB 的數(shù)據(jù))跌捆,那么驗證這些交易將只需要 200 字節(jié)就夠了。

將生產(chǎn)的區(qū)塊與恰當(dāng)?shù)墓f溩鲫P(guān)聯(lián)使得開銷增幅很小象颖,這意味著沒有理由不使用這種方式來生成區(qū)塊佩厚。

當(dāng)需要驗證其他鏈時,有譬如 時間/ 空間/ 帶寬 的多樣化優(yōu)化可以做说订。 追蹤全部區(qū)塊頭 (420 MB/年) 將保持證明體積的輕巧抄瓦。 只追蹤最近的頭可以提供最小長期存儲和證明大小來獲得。 另外陶冷,一個區(qū)塊鏈可以使用懶惰的評估方法钙姊,即它記住過去證明的中間值哈希。 新證明只需要包含指向已知稀疏樹的鏈接埂伦。 確切的方法將取決于那些包含對 Merkle 證明引用的交易所在的外部區(qū)塊的比例煞额。

一定密度的聯(lián)系后,將變得更為高效沾谜,一個鏈會包含另一個鏈整個區(qū)塊的歷史和消除證據(jù)一起膊毁,這樣就不需要通信便可以驗證了。 出于性能原因基跑,應(yīng)最小化的跨鏈證明的頻率婚温。

跨鏈通信的延時

當(dāng)與外部區(qū)塊鏈進行通信時,區(qū)塊生產(chǎn)者必須等待直到 100% 確信一個交易已經(jīng)被另一個區(qū)塊鏈確認為不可逆后才會接收它成為一個有效的輸入媳否。 Using an EOS.IO software-based blockchain and DPOS with 3 second blocks and 21 producers, this takes approximately 45 seconds. If a chain's block producers do not wait for irreversibility it would be like an exchange accepting a deposit that was later reversed and could impact the validity of the blockchain's consensus.

完備性證明

當(dāng)使用來自外部區(qū)塊鏈的 Merkle 證明時栅螟,在已知所有交易均已驗證和已知沒有交易被跳過或遺忘之間有一個重要的差異。 雖然不可能證明所有最近的交易是已知的篱竭,但有沒有間隙的交易歷史是可以被證明的力图。 EOS.IO 軟件在每個用戶的每個傳遞的消息上分配了一個序列號。 一個用于可以使用這些序列號來證明所有的消息由某個特定帳戶處理掺逼,只需要看它是否是按序執(zhí)行的吃媒。

總結(jié)

EOS.IO 軟件是從證明概念的經(jīng)驗和最佳實踐設(shè)計而來,它代表了區(qū)塊鏈技術(shù)的重要進步坪圾。 該軟件是全球可擴展區(qū)塊鏈社會偉大藍圖中的一部分晓折,它將應(yīng)用去中心化并得以輕松的發(fā)布和治理惑朦。

原文出處:https://github.com/EOSIO/Documentation/blob/master/zh-CN/TechnicalWhitePaper.md

分享一個EOS智能合約與DApp開發(fā)入門教程兽泄,本課程幫助你快速入門EOS區(qū)塊鏈去中心化應(yīng)用的開發(fā),內(nèi)容涵蓋EOS工具鏈漾月、賬戶與錢包病梢、發(fā)行代幣、智能合約開發(fā)與部署、使用代碼與智能合約交互等核心知識點蜓陌,最后綜合運用各知識點完成一個便簽DApp的開發(fā)觅彰。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市钮热,隨后出現(xiàn)的幾起案子填抬,更是在濱河造成了極大的恐慌,老刑警劉巖隧期,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件飒责,死亡現(xiàn)場離奇詭異,居然都是意外死亡仆潮,警方通過查閱死者的電腦和手機宏蛉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來性置,“玉大人拾并,你說我怎么就攤上這事∨羟常” “怎么了嗅义?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長隐砸。 經(jīng)常有香客問我芥喇,道長,這世上最難降的妖魔是什么凰萨? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任继控,我火速辦了婚禮,結(jié)果婚禮上胖眷,老公的妹妹穿的比我還像新娘武通。我一直安慰自己,他們只是感情好珊搀,可當(dāng)我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布冶忱。 她就那樣靜靜地躺著,像睡著了一般境析。 火紅的嫁衣襯著肌膚如雪囚枪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天劳淆,我揣著相機與錄音链沼,去河邊找鬼。 笑死沛鸵,一個胖子當(dāng)著我的面吹牛括勺,可吹牛的內(nèi)容都是我干的缆八。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼疾捍,長吁一口氣:“原來是場噩夢啊……” “哼奈辰!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起乱豆,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤奖恰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后宛裕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體房官,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年续滋,在試婚紗的時候發(fā)現(xiàn)自己被綠了翰守。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡疲酌,死狀恐怖蜡峰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情朗恳,我是刑警寧澤湿颅,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站粥诫,受9級特大地震影響油航,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜怀浆,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一谊囚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧执赡,春花似錦镰踏、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至首懈,卻和暖如春绊率,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背究履。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工滤否, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人挎袜。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓顽聂,卻偏偏與公主長得像肥惭,于是被迫代替她去往敵國和親盯仪。 傳聞我的和親對象是個殘疾皇子紊搪,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容