写点什么

十年前端老兵:学习 DApp 开发,投身下一个浪潮

  • 2018-09-27
  • 本文字数:4227 字

    阅读完需:约 14 分钟

过去的十年,可以说是 App 的十年。但未来的十年,DApp 被寄予了厚望。App 的形态是前端开发者的专长,而 DApp 将同样离不开前端开发者的参与。

“CSS 魔法”,08 年加入互联网,是一位有十年经验的前端老兵。他认为区块链将是下一个重要的节点,对区块链技术也有着自己的理解和有启示意义的看法。

InfoQ:魔法哥,您能先向 InfoQ 的读者介绍下自己吗?

大家好,很高兴能在 InfoQ 这个平台和大家见面。我叫 “CSS 魔法”,熟悉我的朋友都叫我 “魔法哥”。

我在 2008 年来到上海,进入互联网行业。一转眼,我已经是一个 “十年经验” 的前端老兵了。工作之余,我会折腾一些开源项目,也经常会在 “CSS 魔法” 公众号编写教程、翻译技术文档。在 2015 年,我还翻译了一本前端领域的重磅图书《CSS 揭秘》,算是为中文技术社区做出了一点微小的贡献。

InfoQ:作为一名前端工程师,您经历的关键点和转折点都有哪些?

其实对我来说,“前端” 本身就是一个巨大的转折点。来上海之前,我一直在传统行业工作,投身互联网大潮是一次急转弯式的转型。不过当时的我并不具备对行业大势的深入洞察,转型的动力仅仅是源于兴趣——在互联网行业做产品,离用户更近、效率更高、影响力更大,实在是酷毙了!

这次转行显然是正确的。这些年每次回老家遇见老同事,他们都会夸我当年有魄力有远见。我其实是很不好意思的,我哪里有远见,只不过是跟着感觉走罢了。

在前端领域奋斗的这几年,都还算顺利。五年前加入百姓网,可以说是又一个关键点——感觉自己的职业生涯终于迈上了正轨。

今年上半年,因为一些偶然的机会,我接触到了区块链和 DApp。没想到一发不可收拾,我内心的小宇宙又一次燃烧起来,当年 “投身互联网” 的那种冲动似乎又出现了。我隐隐感觉到,我即将走向下一个重要节点,又一个不可错过的浪潮已经扑面而来!

InfoQ:为什么区块链和 DApp 会吸引到您的关注?

我这个人一向来对炒得很热的东西是无感的。所以我刚开始对区块链完全没兴趣,甚至是抵触的。前端领域的新东西都看不过来了,还看什么区块链?不过,机缘巧合之下,我惊奇地发现,原来区块链除了记账,还可以跑代码;作为开发者,还可以在区块链上开发应用!

基于区块链开发的应用称作 “去中心化” 应用( Decentralized Application ),简称 DApp。去中心化的含义是指,你的应用不仅是把数据存储在区块链节点上,你的应用本身就运行在区块链节点上!

这个 “新大陆” 深深地吸引了我。简单解释一下,我作为一名前端工程师,精力所限,并不是那么精通后端;但我仍然有一颗做产品的心,一直想着某天可以独立搞一个完整的应用出来,为用户提供价值。可是光有前端,没有后端,能做的事情是比较有限的。而当我遇见 DApp 的时候,不由地眼前一亮!

做一个 DApp 可以不需要后端。因为 DApp 的数据就存储在区块链上,读写数据的逻辑也跑在区块链上,我并不需要用后端语言写一套程序,也不需要搭一个后端环境,更不需要维护数据库——区块链就是我的后端!

开发 DApp 的体验让我想起 Flash 时代的个人创作者,只要掌握了 Flash,制作一部动画的所有事情,包括导演、编剧、剪辑、美工、特效,都可以全包了。同样,在区块链上,只要我具备前端技能,就可以写一个完整的应用出来。这种开发体验对一个前端工程师来说,是相当诱人的。

当然,除此以外,区块链和 DApp 还有一些天生的优势——具体细节我们稍后会聊到——这些也是我关注它们的原因。

InfoQ:去中心化的 DApp 与传统的 Web 应用相比,架构上有什么差异?

这两者确实有明显不同,但 DApp 的各个环节是可以类比到传统 Web 应用的:DApp 由客户端和合约端配合实现,类似传统 Web 应用的客户端和服务端。

“客户端” 顾名思义,是提供给用户使用的产品界面。它可以是 Web 形态,也可以是桌面或移动 app 形态等等。对于前端工程师来说,Web 形态的客户端就是大家的专长,毋庸赘言。

“合约端” 是指 “智能合约”。智能合约是 DApp 的灵魂,是 DApp 开发者部署到区块链上的一段代码,担任客户端与链之间的桥梁——合约端负责提供接口,客户端可以调用这些接口,触发业务逻辑,或对数据进行增删改查。这听起来和前后端分离的 Web 应用是相为相似的,没错,前端工程师可以快速理解并接受 DApp 的架构模式。

InfoQ:DApp 相对于传统 Web 应用,优势是什么?

这是一个好问题。我们通常会听到一种论调,“区块链必将颠覆啥啥啥”。但事实上,这只是一种博眼球的营销口号。区块链被发明并不是为了取代传统互联网,就好比智能手机的诞生不是为了取代 PC。

但如今区块链广受关注,说明它确实具备一些传统互联网做不到的特性。因此,与传统 Web 应用相比,区块链和 DApp 所擅长的场景和方向肯定会不一样。

先来说几个 DApp 的先天特性:

  • 去中心化。区块链的 “去中心化” 是由分布式节点来体现的,它通常意味着 DApp 没有单点故障的风险,数据的可信度和安全性也会比中心化应用要高。

  • 公开透明。在大多数链的设计中,区块数据是完全公开的,甚至合约代码也是区块中的数据,合约的调用记录也是区块中的数据,全都是公开的——你能想像一个 Web 应用的后端代码是公开的吗?就算公开了,别人如何相信这些公开的代码就是现在在运行的代码呢?但对 DApp 来说,这就是它的先天特性。所以,如果你需要一个完全公开透明接受公众监督的应用,DApp 可能就是最好的选择。

  • 不可篡改。链式结构保证了区块数据不会被轻易篡改,这个大家都知道。大家可能不知道的是,在大多数链的设计中,合约代码在部署之后就无法修改了。这一点在传统 Web 应用看起来简直就是个 bug,但反过来想一想:如果代码是一种 “规则”,那在某些场景下,“规则可以修改” 是不是反而不可接受?

大家可能发现了,我一直在说 “特性”,而不是 “优势”。其实所谓优势,就是把特性用在了合适的地方。区块链的魅力在于,它天生就是不一样的东西,它不是为了取代谁。拿现有的框框去套它,可能不会得出什么有意义的结论;而抛开固有思维去拥抱它的 “不一样”,则可能会开创全新的应用形态。

InfoQ:您刚才提到了应用形态,对于区块链的落地,您看好哪些应用场景或方向?

区块链和 DApp 作为新生事物,还处在演化之中,同时,我们对它的认知也处在不断演化之中。我很难在这里预测区块链将以哪些应用形态落地,不过我可以简单聊一聊 DApp 已经在某些场景中展现出的潜力:

  • 数据安全。上面提到区块链数据的安全性,这一点在存证、监管、选举等场合将大有用武之地。

  • 游戏。区块链的老本行就是记账,而且是公开的、防篡改的账本,在资产确权方面拥有不可替代的优势。因此不少游戏开发团队已经在区块链领域里试水或大量投入了。

  • 通证经济。通证作为链或应用生态内的价值载体,可以有很多的玩法,开发者可以通过设计激励机制来实现各种运营目的。

InfoQ:我们讨论的 DApp,一般都是部署在公链上的,那么您选择公链的标准是什么?DApp 的概念最初是由以太坊提出的,那么您如何看待以太坊这些主流的公链平台?

确实,对于尝试 DApp 的开发者来说,遇到的第一个问题可能就是公链的选择了。选择链相当于选择一个开发平台,类似开发手机 app 需要确定是 iOS 还是 Android 一样。魔法哥认为,在入门阶段选择一条易上手且有前途的公链是最为明智的。“易上手” 可以让你快速入门、快速收获成就感,而 “有前途” 则意味着你积累的经验不会浪费。

以太坊确实是 DApp 概念的开山鼻祖,我非常佩服他的创始人。以太坊上线已经好几年了,但它仍在不断进化。在眼下,它的某些技术参数已经明显落伍,但它的深厚积累和发展潜力仍然值得看好和期待。

接下来就不得不提 EOS 了,今年链圈最具话题性的平台就是它了。EOS 有很多独特的设计,也表现出优异的性能,获得了很多开发者的青睐。不过 EOS 定位于企业级市场,对个人开发者来说门槛较高,它的很多设计也一直存有争议,因此魔法哥持观望态度。

InfoQ:前端工程师着手开发一个最小化的 DApp,需要掌握哪些技能、使用哪些工具、怎么选择编程语言?

首先,我们需要对区块链的原理、DApp 架构、DApp 产品形态具备基本概念。接下来,我们从客户端和合约端分别来讲一下所需的技能和工具。

DApp 客户端的开发,其实跟大家平常开发 Web 应用是基本一致的。你可以使用你自己最顺手的前端框架、编辑器、构建工具,无需改变开发习惯。在实现客户端与合约端的交互时,往往需要用到链的 SDK,这是需要开发者去了解的。

而合约端的开发,就要跟着链的设计和生态来走了。链除了提供客户端 SDK 之外,往往也会提供合约端的开发工具,比如合约开发框架、Web IDE、合约 Lint 工具等等。如果我们只是开发一个小型的 DApp,其实脱离工具纯手写也没什么问题,读通相关文档就好。

最后,说到编程语言,各条链所采用的合约端开发语言也不尽相同。如果我们选择的某条链刚好采用我们最熟悉的 JavaScript 作为合约语言,那就基本不存在语言学习成本了。关于这几个方面,魔法哥也会在 “CSS 魔法” 公众号陆续发布教程,希望能给大家提供一些参考和帮助。

总而言之,对前端工程师来说,DApp 的开发成本并不高。而且前端工程师天生离用户最近,更懂交互,更容易开发出用户体验出众的产品来。

InfoQ:您认为前端工程师有必要去学习区块链并转入相关行业工作吗?

我觉得这要看情况,看看自己是什么类型。

如果你是一个谨慎派,喜欢稳扎稳打,则不妨专注地把自己规划好的路线一步步走踏实。对于区块链和 DApp 可以保持关注,也可以上手实践,但不一定要立即投身其中。

这是因为,区块链行业仍然处于早期,还多方面还很不成熟——毕竟传统互联网已经发展了这么多年,该有的都有了,而区块链才刚刚走出极客的小圈子。另一方面,区块链天生就是招黑体质,发展方向也远远不够明朗,从业者往往需要承受更大的压力。

而反过来,如果你是一个激进派,喜欢尝试新事物、喜欢开拓未知世界,那区块链行业可能就比较适合你。

总的来说,这是一个因人而异的问题。但不管怎样,如果你是一个技术人,而且正在对自己的职业生涯做一个或短或长的规划,那么区块链值得你去了解和关注,说不定它就是你打破僵局的转折点。


更多内容可以在 QCon 上海站现场与魔法哥深入讨论。此外,QCon 还设立了更多关于前端和区块链相关领域的落地思考。大会报名即将截止,点击下方图片查看大会完整日程。有任何问题欢迎咨询票务经理 Ring,电话:010-84782011 / 17310043226,微信:qcon-0410。

2018-09-27 19:002745

评论

发布
暂无评论
发现更多内容

LeetCode题解:155. 最小栈,单个栈存储入栈元素与最小值之差,JavaScript,详细注释

Lee Chen

大前端 LeetCode

案例分享丨红外自动感应门设计与实现详解

华为云开发者联盟

物联网 传感器 感应探测器 SMT32处理器 感应门

Cassandra Gossip协议的二三事儿

华为云开发者联盟

源码 三次握手 开发者 Cassandra Gossip协议

MAC系统初始化

焦振清

macos 重装系统

Spring Bean处理器

语霖

Spring Framework

融云Geek Online 2020 编程挑战赛重磅来袭

InfoQ_967a83c6d0d7

从 Node.js(JavaScript) 到 Golang,我的开发体验

Garfield

node.js Go 语言

读懂k8s 容器编排控制器 Deployment

Garfield

k8s pod k8s入门

区块链助力军事人力资源配置

CECBC

区块链 军事

面试必备知识点:悲观锁和乐观锁的那些事儿

鄙人薛某

面试 乐观锁 悲观锁 CAS 并发控制

云原生如何来进行HTTPS升级

soolaugust

架构 云原生 设计模式

anyRTC Native 4.1.0.1与Web SDK 4.0.11上线

anyRTC开发者

学习 WebRTC 语音 直播 sdk

SpreadJS 纯前端表格控件应用案例:MHT-CP数据填报采集平台

葡萄城技术团队

3种双集群系统方案设计模式详解

华为云开发者联盟

数据库 数据仓库 数据 双集群系统 双ETL模式

技术分享:即构互动白板音视频同步、多端有序协作技术实践

ZEGO即构

音视频 在线教育 SVG

深圳泰利能源有限公司涉嫌传销 共计2.7亿元

CECBC

区块链 基金

凡泰极客与Rancher达成深度战略合作,加速企业构建私有化小程序生态

FinClip

人的转型才是关键 数字化时代你具备数字领导力么

CECBC

区块链 数字化时代

C语言内存泄露很严重,如何应对?

华为云开发者联盟

c 内存泄露 内存 代码 函数

SpreadJS 纯前端表格控件应用案例:雨诺订单管理系统(雨诺OMS)

葡萄城技术团队

XSKY对象存储获全球备份领域领导者Commvault官方认证

XSKY星辰天合

华为云FusionInsight大数据技术普惠创新,释放千行百业数据价值

数据湖洞见

大数据 FusionInsight 华为云

数字资产钱包开发,数字加密货币app搭建

13530558032

区块链支付新模式开发,USDT支付系统搭建

13530558032

话题讨论 | 当你敲代码累了时,一般喜欢吃点什么补充能量?

InfoQ写作社区官方

加班 写作平台 代码 话题讨论

你问我答:现有的应用有必要做微服务改造吗?

BoCloud博云

容器 DevOps 微服务 云平台 博云

1. 不吹不擂,第一篇就能提升你对Bean Validation数据校验的认知

YourBatman

Hibernate-Validator Bean Validation 数据校验 JSR380

挽救你的视频号:能够把PPT转换成视频,把备注转换成语音的开源项目

陈磊@Criss

关于显性知识和隐性知识

Tanmer

知识管理 知识产权

某程序员毕业进UC,被阿里收购!跳去优酷土豆,又被阿里收购!再跳去饿了么,还被阿里收购!难道阿里想收购的是他?

程序员生活志

职场 阿里

数字货币交易平台源码,数字货币交易所开发核心功能

13530558032

十年前端老兵:学习DApp开发,投身下一个浪潮_AI&大模型_CSS 魔法_InfoQ精选文章