扩展组件BEAMS

BEAMS 即Blockchain Enquiring, Auditing & Messaging System,区块链查询审计和消息系统。

1.区块链的局限性

区块链对现实世界几乎是完全割裂的,它无法主动向链下推送消息,如果智能合约的逻辑出现问题或受到攻击,现实世界是无法被动感知的。因此我们需要持续地监控合约的运行,严格地审计合约中的数据和资产,在出现问题时第一时间发出告警,尽最大可能保证应用的安全。

对用户而言,区块链交互体验天然的不友好。区块延迟导致的异步反馈,频繁而大量的链上数据读取和业务模型重建,链上和链下的消息割裂,都造成了体验上的缓慢甚至交互上的混乱。

2.设计理念

上述问题的存在,促使我们去构建一个连接链上和链下的系统,持续监控合约的运行,审计数据和资产,加快产品的响应速度,使响应速度的波动曲线趋向平滑,让不可避免的异步反馈更加顺滑和流畅。各种由条件触发的状态提醒和消息推送,可以让用户在使用DeFi 应用解决金融需求之外,获得更为人性化的产品体验。

BEAMS是与合约紧密配合的链下(Off-Chain)系统,其核心理念主要包括以下3个特性:

Ÿ 查询,Enquiring

Ÿ 审计,Auditing

Ÿ 消息,Messaging

3.BEAMS架构图

BEAMS技术架构图

4.技术架构

BEAMS由3个模块构成,查询(Enquirer),审计(Auditor)和消息(Messanger)。

BEAMS采用基于链上事件(Event)的轮循机制,监控链上合约状态和数据的变化,基础数据将会存储在数据库中,通过接口提供给前端界面。合约数据的变动会实时并行审计,并将异常情况即时上报给系统管理员。同时对抵押物价值变化和清算等状态进行持续计算,必要时主动向相关用户推送各种形式的通知和告警。

数据查询

涉及资产变动的核心交易,都会触发自定义的链上事件。查询系统持续地监控新事件的产生,并根据事件内容去查询相应的合约数据。数据合约向外部提供暴露数据的只读接口,查询系统按照数据模型的要求,从合约中读取相关数据。

读取到的数据都将被整理和聚合到BEAMS的数据仓库,并记录其数据变动情况。数据仓库作为整个系统的数据核心,将通过后端API接口向前端提供准实时的数据缓存,向消息模块提供计算和触发的所需数据。审计模块也会使用这些数据对链上合约的状态转移和数据变动进行复核和审计。

审计风控

审计风控模块将持续监控每个合约的状态和数据的更改,对于涉及到的资产变动,审计风控模块会使用独立并行的逻辑对资产变动情况进行二次复核,如果出现异常,则实时通知系统管理员进行处理。

审计风控模块会使用资产总量、变动逻辑、状态校验等不同的复核方式从各个方向对合约数据进行实时审计,以提升审计的准确性。审计模块可以对异常情况进行评级和告警,风控模块在判断为极高风险的场景下甚至将有权对链上合约的运行情况进行干涉和管理。

审计风控模块还将担负统计分析的职责,对用户的订单记录,历史收益,资产变化曲线,平台的实时收益指标,历史收益曲线等系统运营数据进行统计和分析,预测和控制风险点,并为产品运营方向提供数据参考。

消息推送

为了提升由于区块链特性导致的异步反馈的用户体验,消息推送模块将在用户使用流程的各个环节起到重要的作用。特别是在涉及到用户自身利益的提醒通知和警示消息等方面,缺乏基础设施的区块链更需要消息推送系统来配合工作。

在页面一侧,消息推送模块将优先使用Websocket长连接模式,通过前端页面和用户建立双向实时链路,在各个需要执行链上交易的环节,监控链上交易执行情况,交易结束后,向用户推送交易结果和链上状态。

而对于资产清算、收益发放、赎回提醒等消息,则由消息推送模块对合约数据进行持续的监控和分析,达到触发条件后,可以使用包括邮件和短信在内的各种方式,实时对用户推送提醒通知和告警信息。