本文探讨了链上大额转账存在的痛点,以及一些解决思路
这周看到一则关于大额转账转错地址的贴子:
先说说,因为这个是从交易所转到链上。在转账成功时,资金就被链上的地址所控制了,只有拥有该地址的私钥才能操控这笔资金。那么所以,交易所这边也是无能为力的。
然后,回想起个人的转账经历,每次在要点击“确定”进行转账时,心总不由地一绷。因为一旦失误,钱有可能就找不回来了。这样,也意识到目前链上操作缺少容错,没有所谓的 "防呆"机制。
可能大家自带的防呆操作是先进行一笔小额转账,确认没有问题后,再进行大额转账。但这种方式存在被钓鱼的风险:
那么,我们不妨天马行空想象一下,当在链上资金转错时,可以怎么挽救?或者,有什么方法可以有效防止操作失误。
<br>
在转错地址后,可以通过链上消息,把事情经过传达给该地址,并请求转账回来。然后祈祷未来某一天该地址被一个善良的富豪所生成。 <br>
要知道USDC/USDT这些中心化代币是由相关机构所控制的,且代币合约里面有黑白名单,铸造销毁的逻辑,机构是完全可以挽救回来。
但我们也清晰地知道,我们眼中所谓的大额对于机构来说不过三瓜两枣,机构大概率不会受理。再者,似乎也没办法证明是真的转错还是一笔正常交易。 <br>
回想一下前不久发生的Cetus攻击事件,通过协同区块链验证者,对链进行操作,挽回了大部分损失:
很经典的,以太坊16年的The DAO攻击事件也是采用类似的方法,也最终导致了区块链分叉。
当然,这种杀敌一千自损八百的招数,只有在影响到整个链的时候才会使出来。 <br>
按照方法2的思路,我们或许可以做一个协议:协议可将一些主要代币进行包装,包装后的代币管理权交给DAO组织,DAO组织会受理一些异常操作的处理。
这里的关键点是,如何成立一个有效的DAO组织,而不是引入的一个更大的安全隐患。另外,也需要思考一下,即使DAO组织是安全有效的,用户真的会为了这极小概率事件而去使用该协议吗? <br>
上面是当失误已经发生了进行的处理,那么有没有什么方法可以有效避免操作失误呢?
Openzeppelin的Ownable2Step库中就实现了一种转移权限时的防呆机制。在以往,转移权限是执行transferOwnership
直接就把管理员权限转移了。而使用该库,在oldOwner转移权限后,newOwner需要调用acceptOwnership
接收权限。
在这种机制下,假如0xAAAA转错了地址,0xAAAA是有极大概率且可以快速挽救。除非该地址已被生成,且地址拥有者监听着该链上事件,这几乎不可能。
那么如何在代币中使用该机制呢?其实对于ERC20代币,本身就有该机制了,就是aprove。
我认为这种方式可以有效地防止操作失误。有趣的是,该流程一直被诟病为影响用户体验,但在大额转账中,似乎可以施展一番拳脚。
那么,该机制如何落地?
对于CEX中比较困难,需要官方去实现。而对于链上,钱包中似乎也没有内置approve和transfrom操作,需要外部地使用钱包去调用合约。
短期内,为了方便用户使用该机制,可以实现一个网页,让用户通过该网页进行合约交互,执行那两步操作。粗略想了想,页面应该不会复杂,然后后面可以慢慢支持各个的链。
<br>
欢迎私信交流: https://x.com/0xkaka1379
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!