实战:以太坊 DApp 开发与构建 - 李明 | Jeth 第二期

1,810 阅读4分钟

编者按:本文系 ConsenSys 中国特约讲师李明,在由掘金技术社区主办,以太坊社区基金会、以太坊爱好者与 ConsenSys 协办的《开发者的以太坊入门指南 | Jeth 第二期 - 杭州场》 活动上的分享整理。Jeth 围绕以太坊技术开发主题的系列线下活动。每期 Jeth 会邀请以太坊开发领域的优秀技术团队和工程师在线下分享技术干货。旨在为开发者提供线下技术交流互动机会,帮助开发者成长。

本场分享视频回放链接(B 站)

大家下午好!我今天带来的分享是DApp的开发与实践。我们将用40分钟时间从头写一个DApp,学习以太坊智能合约开发。我将通过实践的方式给大家做一个展示,希望大家在短时间内可以从0到1快速地了解以太坊全栈开发的核心知识。

首先自我介绍一下,我曾在微软亚研担任了四年半的软件工程师,之后在深圳多翼科技担任研发总监。

我在13年的时候第一次比特币,并少量投资。14年是熊市,在发现不能赚钱以后,我开始做量化交易,在国内各个交易所之间做基于统计模型的搬砖套利,为市场提供流动性。15年区块链概念开始爆发,人们发现区块链不只是数字货币,还可以做非常多的应用。这种新的认知引发了我的思考,于是从16年开始我开始研究区块链的共识和智能合约的开发,在这个领域不断探索。

今天的分享主要内容如下:

  1. 从0到1构建一个以太坊DApp
  2. Solidity、Web前端语言
  3. 重要工具: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/…