作者: 徐咏忻(娜娜)

在前面三篇博客里,我分别跟大家介绍了我们可以运用的区块链开发工具,Arcblock 的Forge 开发框架、 以及做区块链项目前要思考清楚的四个问题。另外也跟大家分享了我整个自动贩卖机 DApp 从前期构思,到后来建模,实际写码编写交易协议的过程。

那么在我这四周的学习、努力,以及大家的关注和鼓励下,我的自动贩卖机 DApp 终于实现啦!在这一篇博客里,我将向大家展示我的 DApp。同时,因为这篇将会是我这个系列里的最后一篇博客,我也会和大家分享这一个月自己动手开发区块链项目的心得体会。

首先还是和大家快速回顾下我的 DApp 模型。我的 DApp 叫自动贩卖机的信任账本,共分为三个部分。其中第二个部分--账单的记录,也就是链上的部分,是由我们上篇博客里编写、部署的交易协议,将账单数据记录到链上。而账单的生成,和账单的展示都是通过链下,也就是我们现有的传统的方法来做。而这两个部分是我最近两周在做的事情。

dapp model cn

那我这个 DApp 链下的部分是由三个部分组成,并且这三个部分的编程语言都是 python。

  • 首先,就是账单模拟器。在第一次使用时,模拟器会创建一定数额的钱包账户给我们的自动贩卖机和相关方。接着,它会随机地产生一份账单里所需的数据,包括商品信息(商品名称、价格、和购买时间),以及商家信息(相关方钱包地址),然后通过发送我们部署好的合并交易将数据放到链上。因而,账单模拟器完成了账单的生成和记录这两个部分。

simulator cn

  • 然后是数据库。这个数据库会同步链上的交易数据,包括交易发送成功后,链上返回的哈希值。像是每个人的指纹一样,哈希对于每个交易来说是独一无二的。我们通过哈希就可以在链上轻松地验证交易。这个数据库存在的意义呢,是为了方便我 DApp 客户端,也就是第三部分账单的呈现的制作。因为区块链运用的存储数据的结构,虽然能高效地确保所有节点里数据的真实性以及可验证性,但无法很好地进行高效的复杂的查询。所以为了更好的用户体验,为了能更方便地展示数据,在客户端这边,还是选择从数据库这个“中间人”里调取数据。

database

  • 最后,客户端平台。这个平台是通过现有的 Web 应用框架 dash 来开发的。它主要有两个功能,一个是查看账单。你可以查看任意相关方的账本,包含该账户的信息,账户的账单信息列表,以及总销售额和相应的利润分成。还可以通过选取日期看某个时间段的账单信息。第二个部分就是一个数据可视化的展示。例如目前市场里所有贩卖机运营者占领市场的比例,他们的贩卖机分布图,以及各个贩卖机的销售情况,和相应的销量冠军产品。这些信息都会跟随着链上的数据实时更新,可用于市场数据分析。

webapp2 webapp1

那么以上三个部分,加上区块链就组成一个完整的 DApp 了。

dapp structure cn

看到这,你可能会有疑问,说:“既然你的客户端平台还是通过调取数据库里的数据来实现的,并且你之前说数据库存在信任问题,那你的客户端是怎么解决这个信任问题的呢?”

其实我当时在决定使用数据库时也稍微犹豫了一下。但后来我突然反应过来:当客户不信的时候,他们可以到链上去验证呀! 所以我在客户端的账单信息列表里提供了该次交易的哈希值,并且提供了 Forge web 的链接方便客户随时查询该笔交易在链上的记录。因此,尽管链下的结构和我们现有的系统相似,但因为有区块链来记录我们的数据,因为它算法机制所带来的不可篡改性和可验证性,使我们这个应用拥有了与生俱来的高信任度,有别于现有的系统。另外,换个角度来说,这也说明了通过 Forge 开发框架,我们可以很轻松地和我们现有的系统结合在一起,为我们现有的应用改造赋能。

forge web

开发完我的第一个 DApp,我有三点体会想和大家分享:

首先,我非常开心我可以成功完成我的第一个区块链项目。其实我是在大一才开始接触、学习计算机的,包括像 web app 的制作,也是去年暑假才学习的。因此,当有想法说要做一个 DApp,要运用区块链这么”新“,还不被大众所了解的技术,内心还是十分忐忑的。所以当我一步步从第一周学习、了解 ArcBlock 提供的开发工具以及确定我的项目模型,到第二周编写、部署自己的交易协议,和后面两周链下的制作时;当我看到每一周我的 DApp 都朝着我最初的想法大步迈进,到最后成功实现我的想法时,我是非常开心和满足的。

第二,通过这四个星期的动手开发,让我深刻体会到区块链其实并不是一个神秘的技术。同时,运用 ArcBlock 提供的开发工具,Forge 开发框架,开发 DApp 真的很简单。因为它帮我们解决了区块链底层繁杂的技术,所以当我们想开发 DApp 时,不需要彻底地了解区块链技术背后的每一个细节,只需要认识到区块链能解决我们生活中的哪些问题,并且如何使用 ArcBlock 的开发工具,就可以开发一个 DApp 了。并且因为有 Forge SDK 的存在,我们可以通过几行代码就可以轻松完成链上所有交易,以及链下和链上的互动了。现在,开发完自动贩卖机 DApp,我也可以很骄傲的说,我是一名 DApp 的开发者了!

第三,就是我切实的感受到区块链 3.0 的时代已经到来了。我们可以真正开始,并且很轻松的,将区块链运用到生活中的方方面面。现在有一个自动贩卖机的区块链项目解决了商业合作中的信任问题,我相信很快,我们就会越来越多的区块链应用,可以解决各式各样的问题并且改变我们的生活。

让我们一起期待这不久的未来吧!