Caloogy 文章
English

风控评分与"故意加的摩擦"

日期
2025 年 9 月 8 日
系列
钱包
阅读
4 分钟
主题
Risk scoringFrictionUxFraud prevention

一句话版本

好的产品设计通常追求"少一步是一步"。但在转账、授权这种一旦出错就追不回来的操作上,适当的"摩擦"反而是保护:倒计时、手动输入地址的几位、一句"有人让你转这笔钱吗?"。 风控评分决定摩擦加在哪里、加多少:低风险的操作一路顺畅,高风险的操作层层设卡。目标不是拦住所有人,而是打断"自动驾驶式"的点击,给用户一个停下来想一想的机会。

全文分三层:

  1. 通俗理解:减速带
  2. 实际用处:银行的反诈提问、英国的收款人核验、交易所的风控
  3. 原理与工程要点:规则引擎、评分与分级处置、哪些摩擦真正有效

第一层:通俗理解

1.1 减速带

住宅区的路上会修减速带。它对守规矩的司机只是一点点颠簸,但能让开得太快的车被迫慢下来。

转账界面里的摩擦就是减速带:

摩擦 打断了什么
倒计时几秒后才能点确认 想都不想就点"确认"的习惯
手动输入收款地址的最后几位 只扫一眼首尾的习惯(见《地址投毒》)
"有人在电话里让你转这笔钱吗?" 骗子营造的紧迫感
再按一次指纹 会话被别人借用(见《Passkey与防钓鱼》)

1.2 为什么不能对所有操作都加

如果每笔转账都要倒计时、输地址、回答问题,用户很快就会麻木,像点掉弹窗广告一样机械地完成这些步骤,减速带就失效了。还有些人会干脆换一个没这么麻烦的工具。

所以摩擦必须稀缺:只在风险高的时候出现,用户才会认真对待。


第二层:实际用处

Caloogy Wallet 也采用了分级风控。


第三层:原理与工程要点

3.1 规则引擎

每条规则写成"条件 → 分值或等级",放在配置文件里,有版本号,可以审计和回滚:

规则类别 例子
对象 收款地址在诈骗或制裁名单中;首次收款;和历史对象高度相似
金额 占余额比例过高;超过某个绝对金额;短时间内累计转出过多
频率 短时间内转账笔数异常
环境 新设备、新 IP、会话刚建立、账户最近有安全设置变动
资产 不在白名单里的代币;疑似假币
操作类型 无限额授权(见《无限额授权》)、调用未知合约

每条规则命中时都要单独记录:命中了什么、为什么、当时的数据是什么。这既方便用户理解,也方便事后复盘和调规则。

3.2 分级处置

等级 处置
低 正常确认页
中 醒目提示 + 强认证
高 强认证 + 倒计时 + 手动输入部分地址 + 通知
拒绝 不允许在本界面发起,并说明原因

几个设计要点:

3.3 哪些摩擦真正有效

有效 效果差
要求主动输入信息(地址的几位、金额) 只要求勾选"我已阅读风险提示"
针对具体诈骗剧本的具体问题 泛泛的"请注意安全"
倒计时配合醒目的风险说明 单纯的倒计时(用户会盯着手机等它走完)
风险只在少数操作上出现 每次都弹
提供另一条路:先转一笔小额测试 只说"不建议"

3.4 诚实地说明能力边界

如果用户的钱包是普通地址(EOA),用户完全可以绕开你的界面,直接在钱包软件里转账。这时风控只能劝阻,不能阻止。界面上应当如实说明这一点,而不是给用户"这里很安全"的错觉。真正强制执行的风控需要把规则放到链上(见《EOA与智能合约钱包》)。

3.5 阈值是秘密

规则的类别可以公开(公开反而有教育意义),但具体阈值不应公开。攻击者知道"超过余额的 X% 会触发验证",就会把每笔都控制在 X% 以下,分多次转走。


总结

层次 要点
直觉 摩擦是减速带:对正常用户是颠簸,对冲动和诈骗是刹车
原则 摩擦必须稀缺,按风险分级出现
有效做法 主动输入、具体问题、给出替代路径
边界 EOA 上只能劝阻;阈值保密