{"action":"opened","issue":{"url":"https://api.github.com/repos/cssmagic/blog/issues/79","repository_url":"https://api.github.com/repos/cssmagic/blog","labels_url":"https://api.github.com/repos/cssmagic/blog/issues/79/labels{/name}","comments_url":"https://api.github.com/repos/cssmagic/blog/issues/79/comments","events_url":"https://api.github.com/repos/cssmagic/blog/issues/79/events","html_url":"https://github.com/cssmagic/blog/issues/79","id":332556976,"node_id":"MDU6SXNzdWUzMzI1NTY5NzY=","number":79,"title":"为什么前端工程师更应该掌握区块链 DApp 开发","user":{"login":"cssmagic","id":1231359,"node_id":"MDQ6VXNlcjEyMzEzNTk=","avatar_url":"https://avatars2.githubusercontent.com/u/1231359?v=4","gravatar_id":"","url":"https://api.github.com/users/cssmagic","html_url":"https://github.com/cssmagic","followers_url":"https://api.github.com/users/cssmagic/followers","following_url":"https://api.github.com/users/cssmagic/following{/other_user}","gists_url":"https://api.github.com/users/cssmagic/gists{/gist_id}","starred_url":"https://api.github.com/users/cssmagic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cssmagic/subscriptions","organizations_url":"https://api.github.com/users/cssmagic/orgs","repos_url":"https://api.github.com/users/cssmagic/repos","events_url":"https://api.github.com/users/cssmagic/events{/privacy}","received_events_url":"https://api.github.com/users/cssmagic/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2018-06-14T20:42:34Z","updated_at":"2018-06-14T20:42:34Z","closed_at":null,"author_association":"OWNER","body":"魔法哥最近又失踪了，干啥去了？在搞区块链呢！今天就跟大家分享这段时间的收获和心路历程。\r\n\r\n## 为什么搞区块链？\r\n\r\n说起区块链，你会想到些什么？“炒币” “浮躁”，还是 “发币” “圈钱”？这确实就是大众对区块链的普遍印象。不过对于互联网行业的技术人员来说，如果仅仅停留在这个层面的认知，就有点偷懒了。\r\n\r\n有人说 “区块链会颠覆传统互联网”，我觉得夸张了。但如果说区块链会改变互联网、改变互联网的应用方式，我现在深信不移。\r\n\r\n我刚开始对区块链是无感的，甚至是抵触的。前端领域的新东西都看不过来了，还看什么区块链？然而随着有意无意的一点一点了解，我逐渐转变了态度，甚至开始感兴趣。\r\n\r\n这里暂且不多聊区块链的特殊价值在哪里（详情可参考本文末尾的精选链接）；这里只说一点我自己感受。\r\n\r\n区块链最让我心动的，当然不是炒币和圈钱，也不是它被很多人当作技术上的万能钥匙。最让我心动的，是区块链正在强烈且持续地刺激互联网从业者重新思考互联网，它已经成为当前互联网最强有力的创新引擎之一。而在这样的背景之下，你我怎能缺席？\r\n\r\n## 区块链对工程师来说意味着什么？\r\n\r\n先谈谈这个问题：“搞区块链” 到底是在搞什么？我最开始的理解是 “做链” 和 “发币”，相信大家最直接想到的也就是这两者。\r\n\r\n做链，是指做区块链的基础设施，比如做一条新链出来，这往往需要巨大的人力物力；发币，或者说 ICO，是一种募资方式，但已被本地法规禁止。可见这两者对个人开发者来说都比较遥远，并不是很好的切入点。\r\n\r\n不久，我又惊奇地发现，原来区块链除了存储数据，还可以跑代码！作为开发者，还可以在区块链上开发应用！\r\n\r\n基于区块链开发的应用称作 “去中心化” 应用（ Decentralized Application ），简称 DApp。去中心化的含义是指，你的应用不仅是把数据存储在区块链节点上，你的应用本身就运行在区块链节点上！（具体技术细节这里也不展开，可参考本文末尾的精选链接。）\r\n\r\n答案很显然，对于我这样的个人开发者来说，自然选择 DApp 开发作为接触区块链的切入点。\r\n\r\n## 为什么说 DApp 开发更适合前端工程师？\r\n\r\n我作为一名前端工程师，精力所限，并不是那么精通后端。但我仍然有一颗做产品的心，一直想着某天可以独立搞一个完整的应用出来，为用户提供价值。可是光有前端，没有后端，能做的事情是比较有限的。而当我遇见 DApp 的时候，不由地眼前一亮！\r\n\r\n做一个 DApp 并不需要后端。因为 DApp 的数据就存储在区块链上，读写数据的逻辑也跑在区块链上，我并不需要用后端语言写一套程序，也不需要搭一个后端环境，更不需要维护数据库——区块链就是我的后端！\r\n\r\n开发 DApp 的体验让我想起 Flash 时代的个人创作者，只要掌握了 Flash，制作一部动画的所有事情，包括导演、编剧、剪辑、美工、特效，都可以全包了。\r\n\r\n同样，在区块链上，只要我具备前端技能，就可以写一个完整的应用出来。而且前端工程师天生离用户最近，更懂交互，更容易开发出用户体验出众的产品来。\r\n\r\n不需要过多犹豫，立即动手实践。接下来，我需要选择一条适合自己的公链，开发自己的第一款 DApp。\r\n\r\n## 如何选择一条适合自己的公链？\r\n\r\n对于 DApp 来说，选择链就相当于选择一个开发平台，可以类比开发手机 App 需要确定是 iOS 还是 Android 一样。开发 DApp 有不少选择，有老牌的以太坊，也有新锐 EOS 等。这里也不兜圈子，魔法哥认为最适合自己的选择是 “星云链”。\r\n\r\n简单解释一下为什么选它。首先我看到的是它自身的素质：\r\n\r\n* 星云链主网已于三月底上线，上线数月运行稳定，开发者可信赖。\r\n\r\n* 星云链和 EOS 一样，是区块链 3.0 的代表者之一，它将 TPS（每秒交易数）提升到了很高的水平。TPS 提高可以理解为写入数据的性能提高，从而显著提升开发体验和使用体验。\r\n\r\n* 星云链的创始成员来自国内，我们可以很容易地获取星云链的第一手资料，甚至与星云团队近距离交流。从网上可查的文档和视频来看，我认为星云团队是在踏踏实实做事情，而不是浮夸炒作。\r\n\r\n* 星云总部位于硅谷，在全球范围内拥有不俗口碑，星云币（NAS）已登陆各大交易所。\r\n\r\n此外，还有两个因素让我不得不把它推荐给所有前端工程师：\r\n\r\n* 据我所知，星云链是第一家把 JS 作为智能合约开发语言的公链，合约代码就是在各节点的 V8 引擎上跑的，这意味前端工程师在星云链上开发 DApp 没有任何语言障碍。（智能合约是 DApp 开发者部署到区块链上的一段代码，作为客户端与链之间的桥梁，实现业务逻辑和数据读写。一个完整的 DApp 通常由客户端和合约端配合实现。）\r\n\r\n* 星云链从五月开始推行 “开发者激励计划”，可以理解为官方举办的 DApp 征集活动。星云官方为此次活动设立了众多奖项和丰厚奖金，以此激励为社区生态作贡献的开发者。我认为这对前端同学来说是一个极佳的学习和实践机会——学技术还能拿奖金，简直不能更爽啦！\r\n\r\n看到这里，你心里是不是泛起一丝怀疑：天下哪有这么好的事？骗人的吧？其实这个道理并不复杂：区块链和所有新生事物一样，天生面对各种怀疑，因此早期推广者不得不抛出更多的利益来吸引参与者，早期参与者也必然获得更多红利。\r\n\r\n而且，魔法哥并不是胡乱推荐，而是亲测有效再分享给大家。魔法哥的第一款 DApp 已经上线了，并在这次星云 DApp 征集活动中成功入围，获得 “新应用奖”。入围奖金是 100 NAS（约合 &yen;4000），其它奖项的奖金更高。\r\n\r\n是的，就是这么爽。\r\n\r\n![星云获奖记录](https://user-images.githubusercontent.com/1231359/41429660-500a9f02-7040-11e8-8dee-1b4d8b594a25.png)\r\n\r\n## 如何快速进入角色？\r\n\r\n此次活动会持续到七月初，赶快上车！如果你端午节没有出行计划，不如在家 “带薪学技术” 吧！点击 [魔法哥的邀请链接](https://incentive.nebulas.io/cn/signup.html?invite=76rVp)，即可前往星云官网注册（通过此链接注册，入围可获额外 10 NAS 奖金，并获得魔法哥魔力加持 🚀）。\r\n\r\n福利还没结束。你以为我拉你入坑之后就闪人吗？你错了。我们学技术最怕什么？最怕一个人闷头研究，身边没有人交流讨论，进展缓慢。所以魔法哥建了一个 DApp 开发交流群，帮助小伙伴们一起快速学习。在我的公众号内发送 “入群” 两个字，即可收到群二维码。\r\n\r\n结束了？还早。为了方便你快速查找星云链 DApp 开发的相关资料，魔法哥建了一个公开的 Repo：[Awesome-Nebulas](https://github.com/cssmagic/Awesome-Nebulas)，你需要的素材都在这里（包括上面提到的精选链接也在这里）。赶紧 Star 吧！\r\n\r\n终于要结束了吧？别急，还有福利。魔法哥自己摸索 DApp 开发，跌跌撞撞积累了很多经验，而你没有必要重走一遍弯路。所以接下来我会编写一系列教程，在公众号内陆续发布，帮助你快速做出自己的作品。\r\n\r\n还没结束，还有！在整个 DApp 的开发过程中，最繁琐的不是合约端，而是客户端与合约端的交互。新手往往会在这个环节花费大量的时间阅读文档、反复调试。在新人试水的阶段，这种成本同样没有必要。因此，魔法哥决定开发一套客户端 DApp 框架，把繁琐的操作封装起来；而你只需要专心做好自己的应用就好了。近期开源，敬请期待！\r\n\r\n## 尾声\r\n\r\n好，今天先聊到这里，接下来就看你的了。\r\n\r\n不妨想像一下，在魔法哥的帮助下，经过一番捣鼓，你就可以拍着胸脯向小伙伴们展示：你不仅可以独立开发一个应用，这个应用还建立在最前沿的区块链技术上，甚至还有可能拿到一笔奖金！那画面岂不是美滋滋、爽歪歪？！\r\n\r\n***\r\n\r\n> 本文在 “CSS魔法” 微信公众号首发，扫码立即关注：\r\n>\r\n> ![weixin-qrcode](https://cloud.githubusercontent.com/assets/1231359/13040994/04966808-d3ee-11e5-8eb5-7e3bf8767f4e.png)\r\n\r\n***\r\n\r\n&copy; Creative Commons BY-NC-ND 4.0 &nbsp; | &nbsp; [我要订阅](http://www.cssmagic.net/blog/subscribe) &nbsp; | &nbsp; [我要打赏](http://www.cssmagic.net/blog/donate)\r\n"}}
{"actor":{"display_login":"cssmagic"}}