---
# System prepended metadata

title: 如何无痛进行链上大额转账

---

这周看到一则关于大额转账转错地址的[贴子](https://x.com/98knft/status/1933180298491298000)：
![image](https://hackmd.io/_uploads/rJjjUbnmgx.png)

先说说，因为这个是从**交易所**转到**链上**。在转账成功时，资金就被链上的地址所控制了，只有拥有该地址的私钥才能操控这笔资金。那么所以，交易所这边也是无能为力的。

然后，回想起个人的转账经历，每次在要点击“确定”进行转账时，心总不由地一绷。因为一旦失误，钱有可能就找不回来了。这样，也意识到目前链上操作**缺少容错**，没有所谓的 **"防呆"机制**。

可能大家自带的防呆操作是先进行一笔小额转账，确认没有问题后，再进行大额转账。但这种方式存在被钓鱼的风险：
![image](https://hackmd.io/_uploads/BkWuvb2mll.png)

> 来源: https://x.com/evilcos/status/1786385658002522293

那么，我们不妨天马行空想象一下，当在链上资金转错时，可以怎么挽救？或者，有什么方法可以有效防止操作失误。

<br>

## 挽救方法

### 方法1:  埋下希望的种子

在转错地址后，可以通过链上消息，把事情经过传达给该地址，并请求转账回来。然后祈祷未来某一天该地址被一个善良的富豪所生成。
<br>

### 方法2: 走后门

要知道USDC/USDT这些中心化代币是由相关机构所控制的，且代币合约里面有黑白名单，铸造销毁的逻辑，机构是完全可以挽救回来。

但我们也清晰地知道，我们眼中所谓的大额对于机构来说不过三瓜两枣，机构大概率不会受理。再者，似乎也没办法证明是真的转错还是一笔正常交易。
<br>

### 方法3: 扭转乾坤

回想一下前不久发生的Cetus攻击事件，通过协同区块链验证者，对链进行操作，挽回了大部分损失:
![image](https://hackmd.io/_uploads/HyFRKZhmlx.png)
> 来源：https://x.com/SuiNetwork/status/1928181165909008690

很经典的，以太坊16年的The DAO攻击事件也是采用类似的方法，也最终导致了区块链分叉。

当然，这种杀敌一千自损八百的招数，只有在影响到整个链的时候才会使出来。
<br>

## 未来我们可以做些什么？

按照方法2的思路，我们或许可以做一个协议：协议可将一些主要代币进行包装，包装后的代币管理权交给DAO组织，DAO组织会受理一些异常操作的处理。

这里的关键点是，如何成立一个有效的DAO组织，而不是引入的一个更大的安全隐患。另外，也需要思考一下，即使DAO组织是安全有效的，用户真的会为了这极小概率事件而去使用该协议吗？
<br>

上面是当失误已经发生了进行的处理，那么有没有什么方法可以有效避免操作失误呢?

Openzeppelin的[Ownable2Step](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.3.0/contracts/access/Ownable2Step.sol)库中就实现了一种转移权限时的防呆机制。在以往，转移权限是执行`transferOwnership`直接就把管理员权限转移了。而使用该库，在oldOwner转移权限后，newOwner需要调用`acceptOwnership` 接收权限。
![image](https://hackmd.io/_uploads/BJfyiW2Qee.png)

在这种机制下，假如0xAAAA转错了地址，0xAAAA是有极大概率且可以快速挽救。除非该地址已被生成，且地址拥有者监听着该链上事件，这几乎不可能。

那么如何在代币中使用该机制呢？其实对于ERC20代币，本身就有该机制了，就是aprove。
![image](https://hackmd.io/_uploads/HJSzi-hQle.png)

我认为这种方式可以有效地防止操作失误。有趣的是，该流程一直被诟病为影响用户体验，但在大额转账中，似乎可以施展一番拳脚。

那么，该机制如何落地？

对于CEX中比较困难，需要官方去实现。而对于链上，钱包中似乎也没有内置approve和transfrom操作，需要外部地使用钱包去调用合约。

短期内，为了方便用户使用该机制，可以实现一个网页，让用户通过该网页进行合约交互，执行那两步操作。粗略想了想，页面应该不会复杂，然后后面可以慢慢支持各个的链。

<br>

> 欢迎私信交流: https://x.com/0xkaka1379