Data+AI时代,如何打造下一代数智平台? 了解详情
写点什么

十年前端老兵:学习 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:003099

评论

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

TuGraph Analytics 流图计算之行为路径归因

TuGraphAnalytics

实时计算 图计算 归因分析 行为分析

一次性全讲透GaussDB(DWS)锁的问题

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号9月PK榜

ARTS 打卡 第二周,按部就班

三掌柜

ARTS 打卡计划

【案例教学】华为云API对话机器人的魅力—体验AI垃圾分类机器人

华为云PaaS服务小智

云计算 软件开发 华为云

矩视云平台SDK可以支持本地检测吗

矩视智能

机器视觉 深度学习、

分布式锁的三种实现方式!

树上有只程序猿

乐观锁 悲观锁 分布式锁

凝创新技术,汇数字力量 欧特克数字赋能『智』造汽车高峰论坛在沪开幕

E科讯

解锁 Postman 接口测试:完整指南

Liam

Java 程序员 Postman 接口测试 测试工具

2023-09-13:用go语言,给定一个整数数组 nums 和一个正整数 k, 找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。 输入: nums = [4, 3, 2, 3, 5,

福大大架构师每日一题

福大大架构师每日一题

Docker和Kubernetes:各自的优势和适用场景

树上有只程序猿

Docker Kubernetes

自然语言处理的卓越未来

百度开发者中心

#人工智能 ChatGPT 文心一言 千帆大模型平台

苹果再发“黑科技”,合合信息扫描全能王新功能支持“360度立体式建模”

合合技术团队

苹果 科技 合合信息 #人工智能 扫描全能王

大模型驱动全面重构,百度联盟的增长飞轮转起来了

极客天地

百度肖阳:语义检索技术和大语言模型深度结合,重构百度搜索

极客天地

字节跳动基础架构编排调度团队论文入选云计算领域顶会 SoCC 2023

字节跳动云原生计算

大数据 云原生 编排调度

如何编写优质Prompt的秘诀

百度开发者中心

#人工智能 ChatGPT 文心一言

科兴未来 | 2023年河北国际先进技术创新挑战赛

科兴未来News

马斯克回应盖茨;谷歌反垄断案开庭;苹果发布 3nm 芯片的 iPhone 15丨RTE开发者日报 Vol.48

声网

推动长期成功:NFT 推广机构如何制定可持续战略

区块链软件开发推广运营

数字藏品开发 dapp开发 区块链开发 链游开发 NFT开发

AITO问界M9工信部申报信息曝光,或将是理想L9的最大对手?

极客天地

百度智能云与蓝色光标共绘AI营销新篇章:袁佛玉亮相Blue AI行业模型发布会,千帆平台引领行业模型创新之路

极客天地

无代码编程时代的到来:新兴工具和平台的前瞻展望

互联网工科生

低代码 数据可视化 JNPF

打败传统Scada系统的Web Scada是什么?

2D3D前端可视化开发

物联网 组态软件 工业控制 web scada scada系统

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