RIB · English Edition

RIL

RIB(中文) · RIB简单设计 · Intent设计1.0

好,我们来做一版真的简化过的 RIL 2.0 设计,

目标就是:在刚刚对 Solidity 的复盘基础上,把 RIL 收敛成一套最小、清晰、可讲、可实现的版本。

我帮你压成 3 条设计原则 + 4 个核心元素 + 1 段示例代码。

你以后可以直接拿这一版当「RIL 基本设计」。

一、从 Solidity 反过来,给 RIL 定三条“铁律”

🔹 RIL 设计铁律 1:

不以“全局状态机”为中心,只以 Transfer 为中心。

👉 效果:天然适合并行 & 分片,省掉 EVM 那种全局大锁。

🔹 RIL 设计铁律 2:

不以“函数调用”为中心,以 Intent 为中心。

👉 效果:

支持异步、多步协作、时间序列逻辑、Multi-Agent 经济。

🔹 RIL 设计铁律 3:

语言的第一用户是 Agent,而不是人类“合约作者”。

👉 效果:

你所有「Agentic 资本市场 / Agentic 预测市场」就有了原生编程工具。

二、RIL 精简版:只保留 4 个核心元素

1️⃣ Agent

是谁在 I3 上跑逻辑。

语法(类 Rust):

agent MM {

state {

spread: f64,

}

fn on_intent(intent: Intent<SwapOrder>) -> Effect {

// … 读本地 state & Intent,产出 Effect

}

fn on_tick(now: Time) -> Effect {

// … 定时行为

}

}

特点:

2️⃣ Intent

Agent 之间传意图的唯一方式。

最小定义:

struct Intent<T> {

from: ID,

to: ID,

body: T, // 业务内容,比如订单 / 任务 / 投票

cond: Cond, // 可选:触发条件

window: TimeWin, // 可选:生效时间窗

}

你可以为不同业务定义不同 T:

struct SwapOrder {

side: Side, // Buy/Sell

asset_in: AssetId,

asset_out: AssetId,

amount: Amount,

limit_px: u64,

}

3️⃣ Transfer

唯一能改变 S2 状态的原子动作。

最小定义(简化版):

struct Transfer {

from: ID,

to: ID,

asset: AssetId, // Flux / Power / Bond / Credit / Token...

amount: Amount,

}

RIVM 最终只会把通过验证的 Transfer 写进 S2,

其他所有都是「计算流程」而已。

4️⃣ Effect

任何有副作用的函数,只返回这个。

struct Effect {

intents: Vec<Intent<any>>, // 要发出的新 Intent

transfers: Vec<Transfer>, // 要落账的 Transfer

}

RIL 的 I3 执行逻辑可以一句话概括:

RIVM:接收 Intent → 调对应 Agent → 得到 Effect → 把其中的 Transfer 填给 C1/S2。

三、语法:压成一个“Rust-lite + 两个内建函数”

✅ 语法风格

✅ 内建函数只需要两个:

fn emit_intent<T>(to: ID, body: T) -> Intent<T>;

fn emit_transfer(from: ID, to: ID, asset: AssetId, amount: Amount) -> Transfer;

Agent 写代码时,只需要关心:

四、一个真正极简的 RIL 示例:Agent 做一个“手续费 + 分润”

场景:

struct TradeIntent {

user: ID,

asset: AssetId,

amount: Amount,

}

agent FeeSharer {

state {

fee_rate: f64, // 比如 0.001 = 0.1%

dao_treasury: ID,

}

fn on_intent(intent: Intent<TradeIntent>) -> Effect {

let mut eff = Effect::new();

let t = intent.body;

// 计算手续费

let fee = t.amount * self.fee_rate;

let half_fee = fee / 2.0;

// 1. 用户 → 本 Agent 收费

eff.transfers.push(

emit_transfer(t.user, self.id(), t.asset, fee)

);

// 2. 本 Agent → DAO 分润一半

eff.transfers.push(

emit_transfer(self.id(), self.dao_treasury, t.asset, half_fee)

);

// 3. 其他逻辑(比如继续转 Intent 给下游撮合 Agent)可选

// eff.intents.push(emit_intent(MatchingAgentID, some_payload));

eff

}

}

注意:

五、就这么简化之后,你的 RIL 设计可以一句话讲清楚:

**RIL 是一门给 Agent 写的 Rust-lite 语言:

不写全局状态,不搞函数乱 call,

只做一件事:让 Intent 变成一串可验证的 Transfer。**

如果你愿意,下一步我可以: