使用数据库

区块链上的操作有个特点,就是交易需要在全网扩散,需要比较长的确认时间。如果等待时间过长,那么 Dapp 的用户体验就不那么好了。所以常见的做法是用一下中心化的策略来弥补,例如可以用数据库作为数据的临时存储区。本节通过案例来演示整个过程。

保证操作速度

用户每发布一篇文章,就会获得一个代币的奖励。提交文章之后,用户希望立刻能看到被奖励的代币数量,但是由于交易延时,直接在区块链上操作是不现实的,所以我们把这个数量是直接保存到平台的数据库中,这样就非常快了。

我这里使用的数据库是 mongodb 。可以看到数据果然是被保存成功了。

实际情形下,用户每次提交文章,都会奖励代币,用户可以使用代币购买平台上的服务,这样会消耗代币,但是不管是增加还是减少代币,都是先把数据写到数据库的,这样可以保证界面的响应速度。

当然,用户也可以把被奖励的币从平台提出来,这样才涉及到区块链相关的操作。这里我们看到,用户输入自己的账户地址,点提交,地址被发送到服务器。实际中,服务器端程序会去数据库中提取信息,以便验证用户是否拥有对应金额的代币,这里的案例中做了简化。后端会直接进行转账操作,把转账交易广播到量子链测试网。

这样等待全网确认之后,用户就能看的自己的地址上已经转入了 token 了。

总结

好了内容介绍的差不多了,来总结一下。本节的目的就是要演示清楚,在当前的 Dapp 开发中,使用一些中心化的策略作为辅助手段还是非常必要的。具体来讲就是除非必要不要让用户数据跟区块链直接交互,而是暂时保存到数据库中。这一点虽然不是特别符合 Dapp 的去中心化思想,但是也是目前比较流行的一种不得已的做法。随着时间的推移,区块链的性能的提升,未来应该是可以达成秒级的相应速度的。到时,每个操作都直接写入区块链也不是没有可能的。

好,课程内容就是这些了。本节中演示的代码的最终版本在 这里 ,供大家参考。谢谢各位,我是 Peter ,咱们其他课程中再见。