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

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教程

另外推薦幾個很受歡迎全網稀缺的互動教程:

  • web3j,主要是針對java和android程序員圍繞web3j庫進行區塊鏈以太坊開發的講解。
  • python以太坊,主要是針對python圍繞web3.py進行區塊鏈以太坊應用開發的講解。
  • php以太坊,主要是介紹使用php進行智能合約開發交互,進行賬號創建、交易、轉賬、代幣開發以及過濾器和事件等內容。
  • 以太坊開發,主要是介紹使用node.js、mongodb、區塊鏈、ipfs實現去中心化電商DApp實戰,適合進階。
  • 以太坊教程,主要介紹智能合約與dapp應用開發,適合入門。