9 月 15 日,ArcBlock 区块基石 5 位工程师在 2019 上海区块链国际周黑客马拉松开发的 DApp 在 27 个参赛项目中脱颖而出,荣获季军三等奖。这一名为 Charging Block 的去中心化应用为电动车主打造一个点对点共享充电网络,旨在鼓励更多充电设施建设共享,解决里程焦虑,车主、业主等多方获得通证激励。日前,代表团队上台演示的 ArcBlock 工程师 Jonathan Lu 撰文回顾总结了整个开发过程和成果。

作者: Jonathan Lu(ArcBlock 区块基石资深软件工程师)

01

在 ArcBlock 平台开发的过程中,我们相信我们的重要使命之一是为开发者提供方便快捷的开发DApp(去中心应用)的服务。现如今,传统的 web 开发者已经享有成熟的开发技术栈所带来的便利,而我们希望将类似的开发体验带到区块链应用开发领域,为开发者和产品经理提供开发 DApp 所需要的一切。我们有时会将它设想成区块链的 Ruby on Rails。为了这个目标,我们开发了 ArcBlock SDK(支持多种语言,如 JavaScript、Python、Elixir 等)、ArcBlock CLI 工具以及Blocklet.Starters

blocklets

在 8 月,我们的实习生娜娜撰写了一个很棒的系列博客,分享她在四周内从一个入门级区块链开发者到独立完成一个自动售货机 DApp 的学习过程。这个系列博客启发了我们去”吃自己的狗粮“ —— 不仅仅是去尝试用我们的产品来解决现实的问题,同时也是去试验一下自身产品的能力和可用性。

于是乎,我们团队报名参加了最近的万向区块链黑客马拉松,去尝试一下在 36 小时内用 ArcBlock SDK 开发一个 DApp。

Charging Block DApp

02

本次黑客马拉松的主题是”区块链与汽车行业“,所以我们选定了一个常见的电动车车主会遇到的问题来作为 DApp 的主题,那就是”没电的时候附近没有可用的充电桩“的问题。

03

根据我们的观察,虽然近年来电动车充电的基础设施在不断的增加中,但是覆盖率依然无法满足全部用户的需求。车主依然还会遇到附近没有充电桩的情况。同时,因为充电站之间互不连通,车主社区也没有激励机制,导致总体上充电桩的使用效率不够优化。某些充电站负荷过大而某些又无人问津,而且车主还会将充电站当成停车场,在充满电后依然占据位置。此外,因为商业用电和家庭用电的收费标准不同,所以充电站的收费通常比在家充电的花销高很多。

charging block dapp

于是我们设计出了一个名叫 Charging Block 的 DApp。这个 DApp 的基本想法是,建设一个电动车车主之间共享充电桩的社区。通过发布基于区块链的通证 Charging Block Token(CBT),人们可以加入到这个社区里来,分享他们的资源,并获得回报。CBT 通证可以被用来支付充电费用,奖励分享资源的成员(例如分享充电桩最多的用户可以获得额外奖励),以及”惩罚“浪费公共资源的成员(充满电还占据位置的车主将被罚款)等。再进一步,社区成员还可以使用 CBT 来众筹在他们的小区建设充电站,并在后续的充电站运营收益中得到分成。所有的这些交易都会通过区块链来记录,并且即时生效,无法篡改。

我们认为这是一个有趣的想法,于是决定在黑客马拉松期间尝试开发一个 demo。这个 demo 将有三部分组成:一个区块链、一个车载应用和一个充电桩端的应用。一下是 Charging Block 的 demo:

以下是我们开发这个 demo 的基本步骤,你们可以看出这个过程有多么简单。

首先我们使用Forge CLI来初始化了一条新的链:

在命令行中几步操作之后,我们就自定义了链的名称和通证的名称等一些参数,然后让我们来启动这条链:

到此,一条新链就创建好并开始运行了。然后我们使用dapp starter blocklet来初始化一个 DApp:

到此,我们的 DApp 就已经初始化好了,并且开发所需的工具和依赖都安装完毕。整个这个步骤在两分钟内就完成。在此基础之上,我们根据 demo 的需求,开发了界面,并调用 JavaScript SDK 实现了交易相关的逻辑。以下是demo 的代码

结果

04

在 36 小时内,我们开发出了这个 demo,并在评委面前做了一次现场演示,最终幸运的获得了三等奖。

winner

通过这次体验,我们学习到:1)我们在”开发者友好“这个方向上做的努力是正确的,而我们的产品也确实解决了我们希望解决的问题,2)在一些细节上,我们的产品依然还有进步的空间,我们会在今后的工作中加以完善。