区块链reactive睿应层

reactive network

Reactive 基础概念

  • Reactive Network:本质是一条独立的区块链网络,专门用于:监听其他链事件、执行自动逻辑、触发跨链交易。有两种执行环境:

    Reactive Network :EOA 与合约互动的公链,管理订阅。

    Reactive Network :私有执行环境,用于事件处理的执行环境。该环境中Reactive Contracts无法直接访问外部系统。它们从反应式网络接收事件日志,并能向目的链发送回调事务,但无法与外部 RPC 端点或链外服务交互。

  • Reactive Contract:部署在 Reactive Network 上的智能合约,Reactive Contracts可以在部署期间或部署后通过 Sourcify 端点进行验证。Sourcify 是一个去中心化的验证服务,能够将部署的字节码与源代码匹配,使合同可审计且透明。

  • 起源 (Origin):事件发生的源头链,Reactive Network“监听”源链特定的日志(Logs)。

  • 目的地 (Destination):最终执行动作的目标链。

  • 回调 (Callback):Reactive Network在监听到源链的事件后,向 Destination 发出的“执行指令”。

  • 回调地址 (Callback Proxy Address):部署在目的地链上的一个特殊合约(Proxy),用于接收并校验来自 Reactive Network 的指令。

  • Hyperlane:跨链消息传输协议,Reactive Network 的智能合约无法自己直接操作另一条链,这就需要Hyperlane完成跨链。

    Reactive Contracts收到源链消息后,发送回调指令,调用 Reactive Network 上的 Hyperlane Mailbox 合约的 dispatch() 函数,Mailbox 接收指令后给它贴上“目的地地址”、“目标链 ID”和“消息负载”的标签,并将其存入出站队列,发送给目的地链的Hyperlane Mailbox。目的地链的 Hyperlane Mailbox 会触发 handle() 函数,将指令最终送达回调代理地址。

Reactive Network的经济机制

Reactive Network 通过 REACT 代币 + 余额 + 债务系统 来支付智能合约执行和跨链回调的费用。

Reactive Contract 类似一个钱包账户,必须有REACT TOKEN余额,用于支付计算费用、支付 callback 费用、支付跨链交易,如果余额不足合约将无法运行。

Reactive Network的合约资金分成三种状态

  1. Balance(余额):合约当前可用资金,可以直接用于执行任务。

  2. Debt(债务):系统记录的未结算费用。产生原因:任务已经执行但费用还没完全结算。

  3. Reserves(储备):系统预留的资金,用来保证callback 可以正常执行、资金安全、系统稳定,相当于押金。

Reactive Contract运行时需要支付两类费用:

  1. RVM 执行费用:执行时不需要用户手动提交 gas price,RVM 执行完策略逻辑再统一结算费用。从余额中扣除。

  2. 跨链、回调费用:包含跨链执行费用、callback 交易费用。执行前从余额中预留一部分到 Reserves,从Reserves扣除,确保最后一步的回调不会失败!

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
假设做一个自动策略:当 Ethereum 上 ETH 价格低于 2000 USDC 时,自动在 Arbitrum 上买入 ETH。流程如下:

1 Ethereum发生价格更新
2 Reactive Network监听到事件
3 Reactive Contract执行代码逻辑,判断需要买ETH
4 Reactive Contract通过Hyperlane发送跨链消息
      ▼ dispatch()
5 Hyperlane Mailbox (Reactive Network)
6 Hyperlane Mailbox (Destination Chain)
      ▼ handle()
7 Callback Proxy   ← 回调代理
8 Target Contract  ← 真正的目标合约

双状态

在 Reactive Network 的架构中,双状态是其核心设计,旨在解决传统区块链(如以太坊)无法主动感知外部事件的局限性。

简单来说,RVM 运行在一个能够同时看到外部链状态和自身反应状态s的环境中。

  • 被监听的链的状态:

这是Reactive 合约所监测的“目标链”(如以太坊、Polygon、BSC)上的原始数据。

特点:只读。Reactive 合约观察这些链上发生的Event和状态变化,但不能直接通过 RVM 修改它们。

  • Reactive State:

指 Reactive 合约自身的存储空间。

特点: 可读写。它记录了合约根据观察到的数据所做出的“判断”和“反应逻辑”,并决定何时触发跨链指令(Callback)。

Subscription订阅

Subscription 让 Reactive Contract 监听某条链上某种事件,当事件发生时自动触发合约逻辑。

一个Subscription包含chain_id、contract(监听哪个合约)、topic_0(事件类型)、topic_1(事件参数1)…这些参数来自 EVM event log topics。

一个Reactive Contract 可以监听多个事件。

不能创建“全局订阅”,系统不允许:监听所有链、监听所有合约、监听某链所有事件,必须指定链+合约/事件

如何创建 Subscription

通过 Reactive Network system contract 调用:service.subscribe(…)

  1. 在 constructor 中创建(静态订阅),适合永久监听某事件。

  2. Reactive Contract 根据事件动态创建订阅。

Wildcard 通配符监听

例如:

1
2
3
4
5
| 参数     | 通配方式         |
| -------- | --------------- |
| contract | address(0)      |
| chain_id | 0               |
| topics   | REACTIVE_IGNORE |

监听某合约 所有事件

1
2
3
4
5
6
7
8
subscribe(
 chainId,
 contractAddress,
 REACTIVE_IGNORE,
 REACTIVE_IGNORE,
 REACTIVE_IGNORE,
 REACTIVE_IGNORE
)

问题

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计