EOS智慧合約與DApp開發入門教程

langyahappy發表於2018-07-25

EOS的是Block.One主導研發的一個區塊鏈底層公鏈系統,它專門為支撐商業去中心化應用(Decentralized Application)而設計,其程式碼開源。

比特幣被稱為區塊鏈1.0,因為它開闢了數字加密貨幣的天下,走出了從0到1的決定性一步。

以太坊被稱為區塊鏈2.0,因為它提供了可執行智慧合約的圖靈完備的虛擬機器,帶來了無限的可能性。

而EOS則被稱為區塊鏈3.0,為什麼? 兩個字:效能

EOS的定位正是其首頁的口號:

英文:The most powerful infrastructure for decentralized applications。

中文:最強大的去中心化應用基礎設施。

EOS期望做加強版的以太坊,一個高吞吐量的智慧合約平臺。

以太坊雖然功能齊備,但受制於其設計選擇,15秒的出塊速度導致交易吞吐量 遠遠不能達到大規模實用的程度,大約只有30~40TPS(交易/秒)。而EOS則選擇了不同的技術路線,目標是達到可觀的百萬TPS——考慮到Visa實際的處理速度才1700TPS,這一目標的確相當誘人。

EOS的共識機制

比特幣和以太坊之所以吞吐量這麼低,是受制於其設想的應用場景以及針對該場景所選擇的共識機制——這兩者都假設系統執行的環境完全不可信,因此都採用了工作量證明(Proof of Work)這種共識機制。

共識,顧名思義,就是大家對某件事達成統一的認識——對於 區塊鏈而言,某件事指的就是對交易的確認——任何一個節點要提交交易,都需要大家認可。

比特幣和以太坊目前所採用的PoW機制是傳奇人物中本聰的設計。在這種機制下,礦工們為了獲得記賬權和數字幣獎勵,需要不停挖礦來尋找合規的雜湊值,通過對雜湊值的共識來對交易資料進行確認和打包。PoW沒有準入門檻,任何節點都 有平等的權利參與記賬——當然,勝出的概率與算力有關:

pow vs. dpos

EOS則假設環境並非完全不可信的,因此它採用的委託權益證明(Delegated Proof of Stake)機制,類似於我們熟悉的代表大會制度——不需要每個節點都參與共識的達成,只需那些選出來的節點去達成共識就可以了。由於可以相信這些節點,EOS的DPoS機制也不再需要解雜湊難題來獲取記賬權,它讓持有EOS幣的人可以通過持續的投票系統來選擇21個作為代表的超級節點——出塊節點(Block Producer),由超級節點輪流進行交易資料確認和記賬,並給予其一定的獎勵。

顯然,讓21個節點達成共識,肯定比1萬個節點達成共識要高效多了。

EOS的資源利用機制

我們知道,比特幣和以太坊中的交易手續費機制,其目的就是防止大量垃圾交易使得系統擁堵。

而EOS則通過基於膨脹的獎勵機制(每年增發1%,總增發不超過5%)完全取消了 交易手續費,這在降低了系統使用的成本同時也帶來一個不可避免的問題:

如何避免系統資源的濫用?

EOS設計了一種新的資源使用機制:根據賬戶中EOS通證的數量來分配系統資源。

CPU與頻寬:抵押/贖回

在EOS的模型中,CPU與頻寬採用抵押的方式:按抵押的EOS通證比例分配CPU與頻寬。例如,如果你持有全網1%的EOS通證,那就可以抵押這些通證來獲得全網1%的CPU和頻寬。這樣就可以隔離開所有的DAPP,防止資源競爭和惡意的DDOS供給,無論其他的DAPP如何擁堵, 你自己的頻寬都不受影響。

當不再需要CPU與頻寬時,抵押的EOS通證可以贖回,在贖回的時候,存在三天的贖回期。

記憶體:買入/賣出

與CPU和頻寬不同,要將資料儲存在區塊鏈中,你需要基於當前的RAM市場價格,用EOS通證買入RAM,才能獲得一定數量的儲存位元組。當你不再需要記憶體時,也可以將記憶體以當前的RAM市場價格 賣出得到EOS通證:

EOS ram price

RAM的價格是基於班科(Bancor)演算法,也就是說是由市場供需調節的:如果RAM供不應求,則買入RAM時就需要更多的EOS通證,而這時賣出RAM也能獲得更多的EOS通證。

記憶體是消耗資源,不可贖回,只能買賣。以EOS上發幣為例,目前發幣需要20M的記憶體,一個EOS可買20KB,按目前的儲存價格發一個幣需要消耗1000個EOS。這是EOS記憶體消耗的剛需來源。

課程概述

本課程面向對EOS去中心化應用開發感興趣的朋友,課程內容涵蓋EOS DApp開發的核心概念、智慧合約的開發與部署以及前端頁面與EOS區塊鏈如何互動,並最終完成一個基於React和EOS的完整Dapp的開發。

第一章:進入EOS世界

瞭解EOS的定位與特點、共識機制、付費計算模型等核心概念。

第二章:Hi EOS

瞭解EOS節點的軟體整體框架以及節點伺服器、錢包伺服器和命令列工具的作用, 學習配置、啟動EOS節點伺服器和錢包伺服器的方法,初步瞭解命令列工具的使用方法。

第三章:錢包、金鑰與賬戶

理解EOS中與個人身份相關的三個核心概念:錢包、金鑰與賬戶,學習使用命令列工具 建立錢包、金鑰與賬戶的方法。

第四章:智慧合約的開發與互動

瞭解智慧合約的概念與作用,學習EOS智慧合約的編寫和編譯,學習使用命令列工具 部署合約並與合約互動。

瞭解EOS智慧合約中狀態的持久化機制,學習使用多索引表儲存合約狀態。

第五章:發行自己的代幣

學習在EOS上發行代幣的原理和實現機制,並通過實際操作,掌握如何 使用命令列工具進行代幣的發行、轉賬和餘額檢視等操作。

第六章:使用程式碼與智慧合約互動

理解應用與EOS區塊鏈互動的原理,學習利用JSON RPC介面和eosjs封裝庫來 訪問EOS區塊鏈。

第七章:實戰便籤DApp開發

綜合運用EOS知識,使用React完成一個EOS便籤去中心化應用,學習從需求分析到 程式碼實現的完整過程。

課程地址在=========>EOS教程

相關文章