内容简介
下面文字想表达的都在这张图里了,如果你赞同我的观点,还犹豫什么?赶紧动手吧!
为什么要选择区块链开发?
未来已来,只是尚未流行!区块链技术集密码学、分布式网络、经济学、社会学等多种学科之大成解决了分布式环境下的节点信任、共识问题,近年来的爆炸式发展引起了很多人的注意,相信看到这篇小册的你早就听说过比特币、ICO,甚至购买过区块链资产。
区块链是个天然和钱离得很近的领域,离钱越近就越容易赚到钱,尽早开始准备并在区块链领域站稳脚跟的人将能享受到行业崛起的巨大红利,就像四年前的微信公众号,两年前的知识付费,一年前的微信小程序。
然而,从对身边同学的观察来看,前端工程师很容易产生区块链是底层技术、离前端很远的错觉。实际上任何区块链应用落地都需要以为用户创造实实在在的价值为基础,区块链应用的用户不会仅限于少数极客,有普通用户就需要界面,有界面就需要前端工程师。
区块链应用在项目架构、前后端交互方式等方面和传统的端应用会有比较大的差别。从技术栈的视角来看,如下图,构建在分布式网络、公开账本、共识算法等三个核心要素之上的智能合约和 DApp 才是未来百花齐放的地方,底层协议会逐渐趋于稳定。
那么,作为前端工程师,我们在区块链领域的机会到底在哪里?炒币?貌似不是长久之计。如果说做成任何事情都需要依赖技能和和运气两个要素,不同的事情只是两种要素的比重不同,那么理智的人会想尽办法让事情更依赖技能,而不是运气。
为什么要选以太坊?
以太坊(Ethereum)是目前最成熟的、最被广泛使用的、支持构建和部署基于智能合约的 DApp 的区块链应用平台,根据 State of DApps 的统计,目前运行在以太坊上的应用多达 1379 个,这些 DApp 全部由两部分组成:存储在以太坊网络上的智能合约(使用 Solidity 编写,和 JS 很类似,未来 EOS 也会支持使用 Solidity 编写智能合约),以及能和智能合约交互的用 Web 技术开发的 DApp。
围绕以太坊的 DApp 开发生态是目前相对最成熟的,比如有开发框架 Truffle,有智能合约在线集成开发环境 Remix,还有专设的 StackExchange 开发者问答频道。
为什么有这本小册?
Blockchain is hard,虽然我们不愿承认,但事实摆在面前。围绕以太坊有大量的开发工具可以使用,但是它们的演化和迭代却非常快,很多工具、框架、库的教程可能过两周就过时了,或者接口不再兼容了,这成了很多新同学入门区块链开发时最大的障碍,这也是这本小册的切入点:前端工程师写给前端工程师的以太坊智能合约和DApp 开发入门指南。
学会某个新技术的最佳路径是先掌握最小可用知识(Minimum Actionable Knowledge),然后撸起袖子开始做,在做的过程中不断优化和迭代自己对新技术的理解和掌握。
在这本小册里我会把最近半年摸索出来的以太坊智能合约、DApp 开发套路、最佳实践悉数分享给你,无需花费大量的时间去做诸如启动本地测试网络、编译和运行全节点之类的事情,在只依赖核心工具如 solc、Chrome 的情况下,用由浅入深的方式手把手带你熟悉 Solidity 智能合约开发、测试、部署,搭建和智能合约交互的 DApp 开发框架,为成为区块链工程师做好准备。
文不如表,表不如图,在小册中使用了大量的图片(插图 108幅)和类比,即使你完全没接触过区块链,也能轻松理解区块链世界里面的关键概念。
小册的内容划分为 5 大部分:
- 入门篇(上):理解区块链原理与以太坊的运行机制,熟悉以太坊开发的基本概念,如账户、交易等;
- 入门篇(下):Solidity 开发入门,基于 Remix 的智能合约工作流;
- 进阶篇:基于现代前端环境的智能合约开发、构建、部署、测试工作流;
- 实战篇(上):设计、开发、部署、测试 ICO 智能合约;
- 实战篇(下):使用 web3、next.js 开发能和智能合约交互的ICO DApp,并能够部署上线;
作者介绍
王仕军,爱折腾、爱分享的前端老司机,有以下作品:
- 掘金专栏作者:王仕军,11250 人关注;
- 掘金小册作者:《使用 npm script 构建超溜的前端工作流》,超过 1000 人购买;
- 微信公众号前端周刊创办和维护者,2600 订阅;
- 高质量技术视频教程作者:async/await、styled-components,网盘下载量近 3000 次。
名人推荐
读者评价
你会得到什么?
在小册中,你将学会在自己熟悉的前端开发环境中组合使用 Ethereum、Solidity、JavaScript 编写、调试、测试、部署和管理自己的 DApp 的基本方法。具体包括:
- 理解在以太坊上构建 DApp 需要掌握的关键概念,比如 Gas、Transaction;
- 熟悉以太坊不同测试网络,以及测试网络提供工具的使用方法;
- 熟悉 Solidity 语言,并用其开发真实的智能合约;
- 熟悉以太坊智能合约调试工具 Remix 的基本用法;
- 掌握设计、开发、测试、部署智能合约的工作流和最佳实践;
- 熟悉以太坊智能合约工具库 web3 最新版的基本使用方法;
- 熟悉 web3 和 next.js 结合使用的方方面面;
- 构建并掌握完整的、能被重用的智能合约、DApp 应用架构和构建工具链条;
特别说明,为了方便不同前端技术背景的同学上手,小册中的众筹 DApp 使用了两种比较流行的前端技术栈来实现,代码仓库都附在了小册中,不管是你擅长、倾向于哪个框架,都可以基于以太坊智能合约开发 DApp:
适合什么群体?
- 具备基本的 JavaScript 知识,最好是写过 Web 应用,熟悉 npm 使用的同学;
- 对区块链、以太坊、智能合约技术感兴趣,想做深入了解的前端同学;
- 期望使用区块链技术开发能实际落地的应用的前端同学;
- 期望储备区块链开发技能,为跨界区块链做好准备的前端同学;
- 期望从事区块链行业的计算机相关专业学生;
- 想抓取区块链行业红利,靠技能赚更多钱的同学;
你要准备什么?
- Chrome 浏览器,部分开发和调试功能是在浏览器中进行的;
- Node.js 运行环境,最好是 v8.x 以上版本,建议使用 nvm 来安装;
- 可以用来输入和执行命令的终端程序,比如 Mac 下的 iTerm,或者 Windows 下的 cmder;
- 你自己用起来舒服的编辑器,比如 VSCode,我写过两篇 VSCode 编辑器配置的文章,参见上和中;
- 2 小时的闲暇时间,读完这本小册,再来 6 个小时上手实践,看看你的大脑会发生什么变化;
读者福利
- 免费加入读者交流群,和群友讨论和交流读书心得和疑惑问题,我相信,这本小册能让很多和你我志同道合的同学聚在一起;
- 读者群内 5月31日 前每天会有抽奖活动,奖品为有真实价值的区块链代币(抽奖使用微信小程序,发奖过程公开透明):
- 05 月 18 日 ~ 05 月 22 日,每天的奖品是价值 1 枚 EOS or 等值的 ETH ,据说握住会价值不菲;
- 05 月 23 日 ~ 05 月 31 日,每天的奖品是 1000 枚 * (2 份)Candy,李笑来操刀运作的糖果代币,拿三年试试?
- 凡在限时优惠期间购买本小册的读者,都会获赠专属 5 折折扣券,可用于购买廖雪峰老师的《数字货币与区块链原理》小册,更系统全面的理解和掌握区块链开发必备知识;
购买须知
- 本小册为图文形式内容服务,共计 32 节,上线时间为 2018 年 5 月 18 日;
- 购买用户可享有小册永久的阅读权限;
- 购买用户可进入小册微信群,与作者和学员互动;
- 掘金小册为虚拟内容服务,一经购买成功概不退款;
- 掘金小册版权归北京北比信息技术有限公司所有,任何机构、媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发布 / 发表,违者将依法追究责任;
- 在掘金小册阅读过程中,如有任何问题,请邮件联系 xiaoce@xitu.io ;
更新日志
- 2018年5月19日 小册介绍中增加发奖记录;
- 2018年5月19日 完成小册第 13 节,20日和第14节一起放到掘金上以供阅读;
- 2018年5月20日 完成小册第 14 节,并且发布到小册网站;
- 2018年5月21日 完成小册第 15、16、17 节,并且发布到小册网站;
- 2018年5月22日 小册介绍中添加发奖记录查看页面,发奖记录截图;
- 2018年5月23日 完成小册第 18 节:众筹 DApp 要解决什么问题?
- 2018年5月24日 完成小册第 19 节:众筹智能合约设计;
- 2018年5月25日 完成小册第 20 节:众筹智能合约的编写;
- 2018年5月26日 完成小册第 21 节:众筹智能合约安全、性能、费用、部署等实践;
- 2018年5月27日 完成小册第 22 节:众筹智能合约的编译、部署和自动化测试;
- 2018年5月28日 完成小册第 23、24 节,众筹 DApp 初步设计和脚手架搭建;
- 2018年5月29日 完成小册第 25 节;
- 2018年5月30日 完成小册第 26、27、28、29、30、31 节,小册完稿;
- 2018年5月31日 增补 DApp 部署的小节;
- 2018年6月03日 使用 Vue.js + Nuxt.js + ElementUI 完成众筹 DApp;
- 2018年11月27日 修复 solc 依赖安装时的版本问题,锁定在 0.4.24;
发奖记录
发奖专用的钱包地址是:0x4e088890f58dba45eb215613e9f01ed362ec87fb,其转账历史为见这里。
截止 2018年05月24日 的发奖记录截图如下: