产品战略专家梁宁确认出席AICon北京站,分享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:002765

评论

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

华为云数据库GaussDB(for Redis),如何为人们日常生活保驾护航

科技怪授

数据库

安全、高效、便捷,华为云CDN助力企业体验升级!

i生活i科技

CDN

Jira + GitLab 实践 DevOps

跟YY哥学Jira

DevOps gitlab jenkins Jira

华为云云原生数据库,激发数据活力

与时俱进的时代

华为云CDN全站加速助力网站性能全面优化

i生活i科技

CDN

CSDN 2022年度榜单揭晓,华为端云协同智能流程机器人斩获大奖

Geek_2d6073

架构实战营 模块四作业

白杨

解决企业数据存储难题:华为云OBS,企业“上云”的不二之选

路过的憨憨

dcm4che 依赖下载异常

JefferLiu

企业如何轻松上云?华为云弹性云服务器ECS给出答案

IT科技苏辞

华为云OBS对象存储,企业存储的好帮手

科技说

华为云桌面Workspace荣获CSDN年度创新产品与解决方案大奖

Geek_2d6073

聊一聊华为云弹性公网IP的那些事儿

路过的憨憨

华为云OBS助力企业解决数据存储难题

科技说

告别“自建房”,华为云ECS为企业提供更优选

科技说

瑞萨E1/E20烧录工具自检方法

不脱发的程序猿

嵌入式 汽车电子 MCU 瑞萨 RH850

数据上云难?华为云对象存储服务OBS给企业最便捷体验

路过的憨憨

华为云数字化解决方案激活企业市场空间,为企业稳健发展再加码!

IT科技苏辞

华为云数据库,安全、专业,值得信赖

与时俱进的时代

【深入浅出Seata原理及实战】「入门基础专题」带你透析认识Seata分布式事务服务的原理和流程(1)

洛神灬殇

分布式事务 seata Alibaba SpringCloud Alibaba Seata框架

本地数据怎么备份上云?华为云对象存储服务OBS帮你实现

科技说

Python数据可视化:数据分布图表可视化

不脱发的程序猿

Python 数据可视化 大数据分析

华为云CDN引领网站性能优化,助力企业更好发展

科技怪授

CDN

华为云ECS,专为您打造安全、灵活、高效的应用环境

与时俱进的时代

华为云CDN为企业下载加速,极大提升客户体验

i生活i科技

CDN

Atlassian FaaS 云开发平台 Forge 解析

跟YY哥学Jira

Jira Atlassian 云版 app development Forge

企业优秀网络环境,为何离不开华为云CDN全站加速服务?

科技怪授

CDN

看不见的控制流 — Rust 异步取消问题的几点思考

Greptime 格睿科技

数据库 rust 异步编程 tokio

嗨 Jina,帮我画一幅高山流水图

Jina AI

图像生成 Diffusion

扩展接口SmartInstantiationAwareBeanPostProcessor解析

石臻臻的杂货铺

接口

2023-01-12:一个n*n的二维数组中,只有0和1两种值, 当你决定在某个位置操作一次, 那么该位置的行和列整体都会变成1,不管之前是什么状态。 返回让所有值全变成1,最少的操作次数。 1 <

福大大架构师每日一题

算法 rust Solidity 福大大

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