LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资产 > 如何在 36 小时之内用 ArcBlock SDK 开发一个 DApp | ArcBlock 博客

如何在 36 小时之内用 ArcBlock SDK 开发一个 DApp | ArcBlock 博客

2019-11-01 ArcBlock区块基石 来源:区块链网络

原创:?Jonathan Lu?ArcBlock区块基石?今天

8b24a09b262d4e631bbadce2530d92b8

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

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

De1CpWbPOdCNQIZReBINLx8C1myHNnJHRPLZHNTC.jpeg

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

svl7KIGsekynWRSowTH76X0Pzk55puY9a76IHQA6.jpeg

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

延伸阅读:实习生娜娜(含视频) | ArcBlock 博客

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

Charging Block DApp

VfChhdtzbTxWQaJwk9kfbSDFFAtBnHzLHMT9YqxM.jpeg

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

f0kiQaQn9FWR4r4OZ0mNFpIPe1DamAnXzK0hwahw.jpeg

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

vmGXUJSB1EM5adGoUoKhGgssI3DjV5TpxVkdV2aU.jpeg

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

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

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

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

forge?chain:create?charging-chain

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

forge?start?charging-chain

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

forge?blocklet:use?forge-react-starter

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

结果

dsDklkpOAJbOpAQY7bsOunwMXftO6Uq5YY7hJfFo.jpeg

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

s222p5Zni4Y7vopgaKqXyV3hTWbI1IlpjLaSivU8.jpeg

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

References

[1]?DApp(去中心化应用):?https://www.arcblock.io[2]?Blocklet.Starters:?https://blocklet.arcblock.io/blocklets[3]?区块链开发者:?https://www.arcblock.io/zh/post/2019/09/01/overview-of-vending-machine-dapp[4]?万向区块链黑客马拉松:?http://www.blockchainlabs.org/week2019/hackathon_cn.html[5]?Forge CLI:?https://github.com/ArcBlock/forge-cli[6]?dapp starter blocklet:?https://github.com/ArcBlock/forge-dapp-starters

—-

编译者/作者:ArcBlock区块基石

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...