---
# System prepended metadata

title: 'TrustFlow: 链上资产与链下服务的去信任交易'

---

### 背景：

先声明一下，该解决方案所针对的链下服务的特点是：服务的价值与时间成正比，服务提供方可以随时停止服务。如某软件的会员服务。

该解决方案想要解决的痛点是，在传统交易方式中，交易的成交需要依靠购买者对服务提供者的信任。因为服务提供方同时控制着**资金**和**服务的提供与否**，服务提供方完全可以携款跑路。同时，如果购买者对该服务不满意，也常常无法立即退款。

总的来说，购买者处于被动状态，该解决方案目的是去信任化，将双方放在平等的位置。这对于服务提供者来说并非是一件坏事，去信任交易可以让购买者可以大胆地购买，只要服务价值与收费标准相匹配，我认为这会加大服务提供者的收益。

<br>

### 解决思路：

用智能合约实现费用收取逻辑。

1. 服务提供者在智能合约中，设置好收费标准；
2. 用户存入资金，表明购买链下的服务；
3. 服务提供者监听到链上事件，然后链下为该用户提供服务；
4. 在服务的过程中，链上的资金会随着时间按照收费标准“流”给服务提供者；
5. 如果用户的资金不足，则服务提供方应当停止链下的服务；
6. 如果服务提供者跑路，则用户可以提取资金，不再支付更多的费用；

这是基于**博弈驱动**的方式，购买者控制着链上资金，服务提供者控制的链下服务。一方的行为受另一方的行为的影响，也能影响着另一方的行为。

![image-20250512204031816](https://hackmd.io/_uploads/S1nLSt1Zlx.png)


<br>

### 费用曲线：

智能合约中的收费标准由“费用曲线”定义，费用曲线是一个分段的线性函数。

![image-20250512205657046](https://hackmd.io/_uploads/Hy8OrY1Zgg.png)


    // feeCurve示例: 
    // 第一年，按$100每月算  38*30*24*60*60 = 98_496_000
    // 第二年，按$80每月算   31*30*24*60*60 = 80_352_000
    // 两年后，按$50每月算   20*30*24*60*60 = 51_840_000
    // feeCurve[0] = FeeCurveUnit(38, 365 days);         // k1=38, t1=365days  
    // feeCurve[1] = FeeCurveUnit(31, 2 * 365 days);     // k2=31, t2=2*365days 
    // feeCurve[2] = FeeCurveUnit(20, type(uint256).max);// k3=20, t3=无限


<br>

合约中会维护着购买者的接受服务的总时长。

假如上次结算时，累计接受服务时长为ta。然后在本次结算时，累计接受服务时长为tb。那么本次结算服务提供者获取到的费为：$(t1-ta) * k1 + (tb-t1)*k2$


![image-20250512210501515](https://hackmd.io/_uploads/rk05HtJ-xx.png)


> 具体实现细节可看代码，下面会给出仓库链接

<br>

### 下一步计划：

1. 了解更多的需求，适当添加有用的功能；
2. 该解决方案比较依赖前后端，让服务提供者可以得知链上信息，以决定链下的服务行为。如果方案没问题，可以进一步考虑前后端的实现；
3. 待思路.... (好吧，对后续的发展思路还是比较模糊)

<br>

智能合约方面：

目前合约是有了基本的原型，实现必需的功能。有个修改费用曲线的功能，个人觉得挺有用的，但对于当前正在使用的用户，不知道该怎么计算费用合适。（所以目前是没有费用曲线修改逻辑的）

然后对已有的代码进行了单元测试，不过这对合约中的复杂逻辑还远远不够。目前想的是，等后面功能完善了，再进行不变测试。

> 仓库地址：https://github.com/narnona/TrustFlow

<br>

### 最后：

欢迎对这个想法感兴趣的朋友一起交流或提建议，可以直接在[X](https://x.com/0xkaka1379)私信我。

<br>