[]Lendf.Me被盗是ERC-777之过吗?从协议、标准与兼容性思考


[]Lendf.Me被盗是ERC-777之过吗?从协议、标准与兼容性思考
本文插图
免责声明:本文旨在传递更多市场信息 , 不构成任何投资建议 。 文章仅代表作者观点 , 不代表火星财经官方立场 。
小编:记得关注哦
来源:因雨成歌
原文标题:?协议、标准、兼容性?ERC777引发的一些思考
[]Lendf.Me被盗是ERC-777之过吗?从协议、标准与兼容性思考
本文插图
「此次黑客攻击主要是利用 imBTC 资产 ERC777 标准的漏洞进行了重入攻击 。 回调机制允许黑客反复将伪造的 imBTC 作为抵押物借出款项 。 」
【[]Lendf.Me被盗是ERC-777之过吗?从协议、标准与兼容性思考】——dForce 公告
上述安全事件得到初步解决 , 为受害者(比如橙皮书老哥在 DeFi 里亏光又回本的两天)感到高兴 。 被攻击的细节也已经得到了披露 , 但究竟是什么导致了漏洞 , 仍有不同的声音 。
有的认为是 ERC777 的不足;有的认为是兼容性的问题;有的认为 imBTC 实现的问题 。 在此 , 我觉得有些概念必须明确 , 才能方便我们对事实的探讨 。
协议:汉语中的「协议」一词具有多义性 。 我们这里指的协议 , 不是法律意义上的「合约 / 契约 (Contract)」 , 也不是「软件许可证 (License)」 , 而是通信中的「协议 (Protocol)」 。 在电信领域 , 协议是通信系统中的两个或多个实体交换信息的系统规则 。
标准:标准是「为了在一定的范围内获得最佳秩序 , 经协商一致制定并由公认机构批准 , 共同使用的和重复使用的一种规范性文件 。 」
标准不一定是协议 , 因为标准不只是通信领域的 。 而协议也不一定是标准 , 因为标准必须得到规范的确认 。 但通信标准一定是通信协议 。 因此 , 标准必须由一些指定的组织颁布 。 比较知名的标准组织有 ISO、ITU、IETF 等 。 例如 TCP 作为一种传输标准 , 就是 IETF 颁发的 RFC-793 所决定的 。
ERC777 是协议吗?
是的 。
当然我个人倾向于另外一种表达 , ERC777 包含了协议 。 ERC777 定义了一种代币类型 , 规定了代币合约的属性、开放的接口及实现的功能 , 用于规范以太坊地址与 ERC777 代币合约间的通信 , 这是通过接口完成的 。 但 ERC777 也包含了通信协议外的东西 , 例如 decimals 这个函数用来查询 token 的精度 , 这显然是通信协议 , 但按照 ERC777 的要求必须返回 18 , 这就不属于通信协议的范畴 。
ERC777 是标准吗?
是的 。 从名字就能看出来 。
EIP 777: ERC777 Token Standard (ERC 代币标准) 。
这里隐含了一点是什么呢 , 如果你发行了一个 token , 说它是 ERC777 的 token , 那么必须要实现此标准定义的所有接口 。 同时 , 这个 token 必须回溯兼容 ERC20 标准 。 这是什么意思呢?
什么是兼容性?
兼容性是指硬件之间、软件之间或是软硬件组合系统之间的相互协调工作的程度 。
根据标准文档 , ERC777 对 ERC20 是 backward compabitlity , 这是什么意思呢?
向后兼容(backward compatibility) , 又称向下兼容(downward compatibility) , 回溯兼容 , 在计算机中指在一个程序、库或硬件更新到较新版本后 , 用旧版本程序创建的文档或系统仍能被正常操作或使用(包括输入数据)、在旧版本库的基础上开发的程序仍能正常编译运行 , 或较旧版的硬件仍可在新版使用的情况 。
什么意思 , 如果我们把 ERC20 看作旧版本 , 把 ERC777 看成新版本 。 回溯兼容指的就是 , ERC20 的任何接口 , 在 ERC777 中都得到了实现 。 换句话说 , 假设一个 token 直接从 ERC20 升级到了 ERC777 (实际上不可能 , 但我们可以做这样的假设) , 原先通信方式仍然有效 , 但这不代表最终的结果是一致的 。 这点非常重要!首先来看一个例子 。