Dapp即基于区块链智能合约的分布式应用,目前正以迅猛之势蓬勃发展。但是很多人都在思考,怎么样的系统架构才能最为契合智能合约,构建出最好的Dapp。
首先,大部分人第一印象都会惯性的把区块链当成一个数据库来使用,认为这不就是一个分布式数据库嘛,只要放入数据,然后任意索取即可。这种想法会遇到一个显著的矛盾,区块链的数据形态是一个数据块的串行链接,而数据库的传统使用会发生大量并行请求。结果是什么?那就是请求大规模延时,甚至卡死。
此外,还有另一个显著区别,区块链的本质是牺牲效率换取安全,故而几乎所有公链都有数分钟到数秒不等的出块间隔,这与传统数据库的几毫秒甚至更低的延时相去甚远。这一特性也决定了Dapp系统应该有一个与传统不同的构架。
基于以上,我们设计了并推荐一种Dapp系统架构原则(以NEO环境为例):
实现分为三层,链数据层、数据库缓存层、前端缓存层,数据从左至右流式处理。
通过数据缓存层1:1复制链数据层原数据,并按一定方式展开、加工为前端展现需要的形式。每个块的生成,只会触发不重复的一次(一批)数据读取。
前端缓存层以块间隔与数据缓存层同步,大幅减少对于链数据层的并行请求、减少前端运算量(直接处理链数据是复杂的)与开发复杂度。
为了验证这一架构的合理性,我们对NNS竞拍合约的一个范例性前端工具进行了针对痛点的重构。
经过数周测试,NNS目前版本存在以下问题:
1. 完全意义相同数据在同一时间不同位置呈现不一致
2. 后台API、数据库压力大,频繁卡顿
重构方法
1. 设计全量数据类,将竞拍合约抽象为一个数据类
2. 改造数据入库逻辑,以合约通知为触发器逐渐填充完整数据类
3. 改造前台数据展现逻辑,只一个块间隔同步一次,数据呈现只取前端缓存,前端维护竞拍会列表。
最终目标是:数据呈现完全一致、最少的后台压力、最佳的前端体验、最友好的能力输出。
目前我们正在努力验证中,预计将在2-3周内完成,之后进行进一步测试。系统架构优化可能会推迟NNS主网上线时间,但为了方便后续更方便对接其他钱包,我们认为花费更多时间是值得的。完成之后,NNS也将迎来正式上线。
目前测试网已开启.neo 域名竞拍公测!欢迎大家体验域名竞拍流程。
测试地址:
https://testwallet.nel.group/#login
测试教程:
NNS社区始终保持技术驱动,开放共享的态度,欢迎大家加入NNS社区,一起创造价值,分享价值。
对NNS感兴趣的小伙伴,欢迎加入NNS官方QQ群:702673768
请社区小伙伴关注NNS微信订阅号(NEL新经济实验室),获取NNS最新动态资讯。
NNS官网:https://neons.name
NNS白皮书:http://doc.neons.name/zh_CN/latest/
NNS Twitter: https://twitter.com/NeoNameService
NNS电报群:https://t.me/forneonameservice
相关阅读:
网友评论