跨链聚合器的“最优报价”怎么定义?分享一个路线质量评分思路

4 小时 9 分钟前
 indifferentliyan

最近在做 AllSwap ,先说明利益关系:我是项目参与者。下面想讨论的是工程问题,不是发优惠码,也不把产品包装成第三方推荐。

跨链聚合器最直观的排序方式,是选择“预计到账最多”的路线。但实际做下来发现,只按输出数量排序容易选到不稳定路线。

举个例子:

如果只看报价,A 是最优;如果考虑失败、退款和等待成本,很多用户可能会选择 B 。

我们现在考虑把路线评分拆成下面几项:

score = output_value
      - gas_cost
      - time_penalty
      - failure_risk_penalty
      - liquidity_penalty
      - stale_quote_penalty

这里有几个比较难定的点。

1. 时间惩罚不是线性的

从 1 分钟增加到 3 分钟,大部分用户可能可以接受;从 10 分钟增加到 30 分钟,用户的不确定感会明显增加。因此时间惩罚可能更适合分段函数,而不是简单乘以秒数。

2. 历史成功率可能存在幸存者偏差

如果只统计已经被路由器选中的订单,低流动性路线样本很少,成功率看起来可能反而很高。需要同时记录候选报价、未选路线和失效原因。

3. 小额和大额不应该共用权重

小额用户更在意固定费用;大额用户更在意滑点、深度和失败风险。评分权重应该根据金额区间动态调整。

4. 报价新鲜度需要单独处理

报价数值很漂亮,但生成时间已经超过几个区块,这种路线不应继续排在前面。除了 TTL ,还可以监控连续区块中的输出变化率。

产品流程可以在 https://allswap.io/ 看到。当前是用户选择资产和网络后获取报价,不连接钱包,通过订单地址完成源链转账,再跟踪目标链结算。

想请教做过交易路由、支付通道或聚合器的朋友:

  1. 你们会把失败率直接折算成期望价值,还是作为硬阈值先过滤?
  2. 路线耗时应该使用最近窗口的 P95 ,还是按链上拥堵状态实时修正?
  3. 面向用户展示时,是给一个“推荐路线”,还是同时展示“到账更多”和“更稳定”两个选项?

欢迎讨论评分模型和可观测性设计。涉及真实资产时,任何新路线都应该先小额测试;本文不构成投资建议。

124 次点击
所在节点    区块链
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1248799

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX