火星链 火星链
Ctrl+D收藏火星链

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

作者:

时间:1900/1/1 0:00:00

「此次黑客攻击主要是利用 imBTC 资产 ERC777 标准的漏洞进行了重入攻击。回调机制允许黑客反复将伪造的 imBTC 作为抵押物借出款项。」

——dForce 公告

上述安全事件得到初步解决,为受害者(比如橙皮书老哥在 DeFi 里亏光又回本的两天)感到高兴。被攻击的细节也已经得到了披露,但究竟是什么导致了漏洞,仍有不同的声音。

有的认为是 ERC777 的不足;有的认为是兼容性的问题;有的认为 imBTC 实现的问题。在此,我觉得有些概念必须明确,才能方便我们对事实的探讨。

协议:汉语中的「协议」一词具有多义性。我们这里指的协议,不是法律意义上的「合约 / 契约 (Contract)」,也不是「软件许可证 (License)」,而是通信中的「协议 (Protocol)」。在电信领域,协议是通信系统中的两个或多个实体交换信息的系统规则。

标准:标准是「为了在一定的范围内获得最佳秩序,经协商一致制定并由公认机构批准,共同使用的和重复使用的一种规范性文件。」

dForce将在Kava Network上部署dForce Lending、USX以及dForce Bridge:6月12日,据官方消息,DeFi协议dForce宣布将在Kava Network上部署一整套DeFi协议,包括dForce Lending、稳定币USX以及dForce Bridge,以促进KAVA生态系统的有机增长。此前dForce已经在以太坊、Arbitrum、Optimism、BNB Chain、Polygon和Avalanche上部署。[2022/6/13 4:20:49]

标准不一定是协议,因为标准不只是通信领域的。而协议也不一定是标准,因为标准必须得到规范的确认。但通信标准一定是通信协议。因此,标准必须由一些指定的组织颁布。比较知名的标准组织有 ISO、ITU、IETF 等。例如 TCP 作为一种传输标准,就是 IETF 颁发的 RFC-793 所决定的。

ERC777 是协议吗?

是的。

当然我个人倾向于另外一种表达,ERC777 包含了协议。ERC777 定义了一种代币类型,规定了代币合约的属性、开放的接口及实现的功能,用于规范以太坊地址与 ERC777 代币合约间的通信,这是通过接口完成的。但 ERC777 也包含了通信协议外的东西,例如 decimals() 这个函数用来查询 token 的精度,这显然是通信协议,但按照 ERC777 的要求必须返回 18,这就不属于通信协议的范畴。

Talen Energy筹集1.75亿美元用于建设数据中心和加密矿场:9月22日消息,美国电力公司Talen Energy宣布已筹集1.75亿美元,用于转向可再生能源发电,并建设数据中心和加密矿场。声明中称,公司与Orion Energy Partners签署了为期6年的协议。其中1.25亿美元立即可用,完成阶段性成果后,将获得另外5000万美元。Orion此次投资后将获得Talen旗下Cumulus Digital的无投票权股权。Talen Energy于2020年成立Cumulus Data,以投资于融合数字基础设施与电力的机会。Cumulus有两个独立业务,Cumulus Data专注于超大规模计算中心,Cumulus Coin专注于数字货币挖矿。(PR News Wire)[2021/9/22 16:56:58]

ERC777 是标准吗?

是的。从名字就能看出来。

EIP 777: ERC777 Token Standard (ERC 代币标准)。

这里隐含了一点是什么呢,如果你发行了一个 token,说它是 ERC777 的 token,那么必须要实现此标准定义的所有接口。同时,这个 token 必须回溯兼容 ERC20 标准。这是什么意思呢?

COINBIG CEO Allen:只有平台币和一些主流公链是天然优质投资标的:新加坡时间10月13日19:00-20:00,COINBIG平台币CAFE作客达摩院,举办首场线上AMA活动。COINBIG CEO Allen应邀出席并进行主题分享。

COINBIG CEO Allen介绍,通过自己十年的行业投资和从业经验表明,只有平台币和一些主流公链是天然优质投资标的。尤其平台币,其发行量、流通量及供应有限,有真实的使用场景和刚需,而且具备通缩机制,才能比较稳定上涨。CAFE采用的就是全流通、全销毁、极限通缩模型,每一枚CAFE币均由0.1USDT认筹兑换,其余未认筹部分全部销毁,从根本上保证了每枚CAFE都是真实“铸造”出来的。而且与传统平台币不同,CAFE不存在预留、预挖,团队也没有份额,必须保证每枚CAFE都有自身的铸币价值,并且会用平台及挖矿收益持续回购、销毁CAFE,进一步减少供应量强制通缩。面对社群用户提问,Allen强调所有认筹USDT的100%,全部用于DeFi的质押挖矿、流动性挖矿、机抢池、头矿等等,持续产生挖矿收益。而且在收益达到五倍以上回报率之前,用户认筹的CAFE属于用户,且认筹投入的USDT本质上仍归属于用户。[2020/10/14]

什么是兼容性?

Lendf.Me将被追回资产转移至新地址,以便未来进行资产返还:Lendf.Me团队在推特上表示,即将把追回的被盗资产从Lendf.Me Admin转移到新地址,以便进行未来的资产返还。 此前消息,黑客在盗取了Lendf.Me平台价值约2500万美元的加密资产后,已于今日陆续将资产归还。[2020/4/21]

兼容性是指硬件之间、软件之间或是软硬件组合系统之间的相互协调工作的程度。

根据标准文档,ERC777 对 ERC20 是 backward compabitlity,这是什么意思呢?

向后兼容(backward compatibility),又称向下兼容(downward compatibility),回溯兼容,在计算机中指在一个程序、库或硬件更新到较新版本后,用旧版本程序创建的文档或系统仍能被正常操作或使用(包括输入数据)、在旧版本库的基础上开发的程序仍能正常编译运行,或较旧版的硬件仍可在新版使用的情况。

什么意思,如果我们把 ERC20 看作旧版本,把 ERC777 看成新版本。回溯兼容指的就是,ERC20 的任何接口,在 ERC777 中都得到了实现。换句话说,假设一个 token 直接从 ERC20 升级到了 ERC777 (实际上不可能,但我们可以做这样的假设),原先通信方式仍然有效,但这不代表最终的结果是一致的。这点非常重要!首先来看一个例子。

Millennial Money创始人格兰特·萨巴蒂尔警告:比特币只是一场,并不是投资:Millennial Money创始人格兰特·萨巴蒂尔(Grant Sabatier)曾经凭借比特币在几年内把5000美元增值到上百万美元,但他却撰文劝诫人们不要投资比特币。比特币近期的暴涨吸引了越来越多投资者的关注,而作为一名借此获得不菲收益的投资者,萨巴蒂尔却认为这只是一场,并不是投资。

他认为很难对比特币进行估值,这种加密货币甚至有可能没有任何价值。由于最近有很多完全不懂区块链的人也买入比特币,导致比特币的波动进一步加大,甚至影响了它原本的买卖功能。更何况,比特币并不像很多人想象得那么安全,盗窃事件时有发生,而且一旦丢失,几乎无法找回。

如果执意想要投资这种加密货币,萨巴蒂尔也建议用自己净资产的1%参与,而且要认清其投机的本质,千万不要把它当成投资。[2017/12/18]

关于兼容性的例子

SQL 注入

「SQL 注入是一种将 SQL 代码添加到输入参数中,传递到服务器解析并执行的一种攻击手法。」

简单说,用户可以通过公开的接口来实现对数据库的攻击。例如:

我们在登录网站时,会输入用户名和密码,服务器后台会判断用户名密码是否匹配,来决定是否能让用户登录。

假设我们在输入时,用户名输入:user'-- (注意--后面有个空格,单引号闭合 user 左边的单引号),密码随意输入,如:111,然后点击提交按钮。等价于 SQL 语句:

SELECT * FROM user WHERE username = 'user'-- 'AND password = '111'

由于「--」之后的部分被注释掉了,无论密码是正确或者是错误的,用户都可以成功登录。

当然,实际上的代码没有这么简单。你如果看了这段话尝试去攻击网站,是不会成功的。

这和兼容性有什么关系呢?解释一下。

假设 一个网站遵循用户协议 U20,只允许用户名是字母,因此用户无法输入 ' 和-这两个符号。当然不仅前端输入框限制,后端也会检查每个字符是否都符合条件。换句话说,在接口传递参数的时候,不允许这两个符号出现,这个接口是符合 U20 的。这时,不会出现示例中的 SQL 注入问题。(但不确定是否其它注入可能。)

某天,网站的用户协议进行了升级,变成了 U777,新的用户可以使用 ' 和- 作为用户名了,接口也需要进行升级。U777 对 U20 当然是回溯兼容的,因为旧的用户仍然可以使用用户名登录,也可以使用旧的界面和接口登录。而新的用户则需要前端和后端代码升级后才能登录。

如果前端和后端只是简单地对上述两个字符不加限制,势必会导致上述 SQL 注入问题。但这个要怪罪接口升级吗?

很显然,不是的。协议只是保证符合规范地将用户的输入传递给后端,协议升级后,这仍然正确地完成了。而新的字符带来的风险,是需要后端代码重新评估的,也可以认为后端代码与新的协议不兼容。

这是后端代码的问题吗?这是协议升级的问题吗?都不是。而是因为协议升级后,让用户产生了足以摧毁系统的超能力。

再把话题扯远一点,列车的最高速度从 20km/h 提到 100km/h,铁轨仍然和列车兼容。但噪音是否会造成沿途居民的影响,道口是否需要提高安全等级呢?这显然是要重新审视的。

应该怎么做?

回溯兼容不代表安全,因为新的特性必然具有外部性,而这个外部性是让其它实体很难预期的,所谓「安全是动态的」。回到刚才的例子,有两种做法。

一是提前对各种外部性进行判断。后端代码非常谨慎,假装不知道用户的输入是受限的,按照全字符集来进行处理,这样无论协议怎么升级,后端都是安全的。

二是灵活但审慎的策略。在协议升级时前,重新评估安全性,并做好修改和测试工作后重新部署。

根据例子的复杂度,两种做法都是可行的。更重要的是,为了避免重复劳动,提高效率,减少安全问题出现的可能,应当对共性问题进行标准化尝试。

例如,用户登录是个逻辑简单,且非常普遍的场景。为了防止 SQL 注入,就有例如 Prepared Statement 之类的标准化做法,完全不需要闭门造车。而回到开头的那个问题,我更想引用慢雾的一段话「第三方 DeFi 平台在接入的时候,应需要充分考虑平台本身的业务逻辑与接入代币之间的兼容性,才能避免因兼容性发生不必要的安全问题。而不是简单的将问题归咎于协议和代币提供方。」

为什么 ERC777 难以得到推广

为什么 ERC777 兼容了 ERC20,且提供了比 ERC20 更强大的功能,仍然不能得到广泛的应用呢?除了 ERC20 代币已经广泛使用,大家宁肯忍受它的缺点,使用 approve and transferFrom 这种并不那么安全的方法,也不愿或无法升级外,还有一个重要的原因是:光兼容 ERC20 是不够的,还需要兼容现有的其它协议。如果每个协议都要单独评估应用 ERC777 的风险,成本太高,且容易造成误解,这显然不利于它的推广。

我们是否可以把公共的常用功能抽象出来,形成标准的实现?例如「存款」这个操作,如果它有针对不同代币标准的标准参考实现,那么许多问题出现的概率就会降到很低。

至少,我们也应该小心所有和我们打交道的人,每个合约都要小心所有与其打交道的合约,来避免出现不必要的安全问题。因为「不断地他添来另外的你我 / 使我们丰富而且危险。」(穆旦,《诗八首》,1942 年。)

标签:777RC2RC20ERC207777欢乐代币券怎么用ERC20RC20价格ethereum和erc20区别

欧易交易所热门资讯
LIBRA:金色观察 | DC/EP内测 Libra应对:支持多种单一法币

中国央行数字货币DC/EP近日正在火热内测。今日晚间(4月16日),为尽快推出Libra,Libra协会向监管要求妥协,更新白皮书发布2.0版,正式宣布支持挂钩多种单一法币的稳定币.

1900/1/1 0:00:00
DEF:DeFi攻击频发:ERC-777难辞其咎?

译者序:DeFi协议Uniswap及dForce于4月18、19日相继受到重入攻击,损失金额高达数千万美元。有惊无险的是,dForce已追回被盗资产并归还用户.

1900/1/1 0:00:00
区块链:金色前哨 | 商务部停止两家公司防疫用品出口 其中一家系区块链公司

4月14日,商务部微信公众号“商务微新闻”发布《关于停止两家公司防疫用品出口的通报》。通报称:在开展防疫用品出口过程中,有的企业因产品质量问题被外方退货,扰乱防疫用品出口秩序,严重影响国家形象.

1900/1/1 0:00:00
比特币:金色趋势丨BTC再次完美回补3月跳空缺口

日线放量长阳,基本回补了CME3月初8180-9150之间的跳空缺口,我们知道,由于比特币现货交易全年无休,而CME的比特币期货只在工作日交易,这使得如果周末比特币现货市场的价格变化较大.

1900/1/1 0:00:00
THE:过去一周有趣话题集锦:DeFi 呼唤女性 V神倡导世界和平

本期DAOSquare加密情报的内容包括:DeFi 呼唤女性;V神倡导世界和平;笑死的波卡meme;The DAO 四岁生日;Aragon 联合创始人推销 Telegram DAO;最后请你看飞.

1900/1/1 0:00:00
区块链:金色前哨 | 荷兰央行:希望在CBDC发展中发挥领导作用

荷兰中央银行(DNB)今天发布了一份报告,表示CBDC将为其公民带来巨大利益,并希望在其发展中发挥领导作用.

1900/1/1 0:00:00