編者按:本文系 ConsenSys 中國特約講師李明,在由掘金技術社群主辦,以太坊社群基金會、以太坊愛好者與 ConsenSys 協辦的《開發者的以太坊入門指南 | Jeth 第二期 - 杭州場》 活動上的分享整理。Jeth 圍繞以太坊技術開發主題的系列線下活動。每期 Jeth 會邀請以太坊開發領域的優秀技術團隊和工程師線上下分享技術乾貨。旨在為開發者提供線下技術交流互動機會,幫助開發者成長。
本場分享視訊回放連結(B 站)
大家下午好!我今天帶來的分享是DApp的開發與實踐。我們將用40分鐘時間從頭寫一個DApp,學習以太坊智慧合約開發。我將通過實踐的方式給大家做一個展示,希望大家在短時間內可以從0到1快速地瞭解以太坊全棧開發的核心知識。
首先自我介紹一下,我曾在微軟亞研擔任了四年半的軟體工程師,之後在深圳多翼科技擔任研發總監。
我在13年的時候第一次比特幣,並少量投資。14年是熊市,在發現不能賺錢以後,我開始做量化交易,在國內各個交易所之間做基於統計模型的搬磚套利,為市場提供流動性。15年區塊鏈概念開始爆發,人們發現區塊鏈不只是數字貨幣,還可以做非常多的應用。這種新的認知引發了我的思考,於是從16年開始我開始研究區塊鏈的共識和智慧合約的開發,在這個領域不斷探索。
今天的分享主要內容如下:
- 從0到1構建一個以太坊DApp
- Solidity、Web前端語言
- 重要工具:Remix、Truffle、Ganache、Metamask
今天要講的 DApp 非常有特點。第一,它是一個非常有用的 App,大家可以發現它可以用來洗碗、買菜、做家務。二是這個 DApp 雖然非常有用,但程式碼並不長,只有100行多一點,可以比較快速開發完成。最後,雖然這個 DApp 程式碼不長,但展示了 Solidity 語言的主要特性,甚至包含了一些大家需要注意的安全陷阱,所以希望大家通過這個 DApp 對 Solidity 程式設計有更多的瞭解。
那今天要講的 DApp 是什麼呢?就是石頭剪子布。這是我們平常經常玩的遊戲。這個遊戲的一個問題是,每個人出拳的速度不一樣,我是屬於比較笨的人,經常因為被別人看出想要出拳的手勢而吃虧。這個問題怎麼解決呢?生活中出現了一種非常有意思的方法,就是分歧終端機,出自《非誠勿擾》。
它通過外殼把兩人的手套起來,倆人出好拳以後同時開啟蓋子看結果,以避免作弊。
網路版的分歧終端機?
那這種問題在計算機系統或者是網路系統如何解決呢?這個問題確實有點難。假設我們通過伺服器做這個事情,我們如何信任伺服器?我們也無法保證伺服器是否會作假。但是,這時候如果引入區塊鏈,當我們要使用以太坊上的智慧合約來開發這個系統,我們會發現它的一些特性是可以幫助我們解決這個問題的。這就是我們今天要講的基於以太坊的石頭剪子布 DApp。
接下來進入 Live Coding 環節,我們將從0到1一起見證 DApp 誕生過程,用到的第一個工具就是 Remix,算得上是以太坊開發的瑞士軍刀,它結合開發中的編輯、編譯、部署和測試等等功能,我們先從這裡開始。
編輯注: Live Coding 環節無PPT,請參見 IT 大咖說視訊回放(2:56:50——3:48:40),連結: http://www.itdks.com/eventlist/detail/240
實戰專案 Demo 連結(GitHub):github.com/washingweb/…