APT:分析EVM 和 Move 的两种方案,思想及区别

最近关于用户和Move智能合约交互,不需要授权(Approve)是更安全还是更不安全的争论很多,这里尝试用通俗的方式来解释一下二者背后的区别以及Move这样设计背后的思想。

我们先理解一下用户和智能合约交互的方式。当我们签了一个交易,去调用一个链上的智能合约,就好比从物理世界进入了一个智能合约的数字世界,我们在这个数字世界有一个分身,而这个分身做什么,是智能合约定义的。

在EVM中,每个合约都相当于一个独立的小世界,分身进入这个世界后,只能操作用户在当前合约世界中的状态。

比如进入swap世界,想用自己的usdt交换其他资产,而usdt存在定义usdt的那个合约世界,没办法直接在swap中以自己的身份从usdt合约里提取资产。于是用户只能先去usdt的合约世界执行approve,告诉usdt的合约,swap可以代自己提取自己的资产,然后再进入swap世界进行操作。

动态 | 数位分析师称距离比特币减半仅剩100天,但精准时间仍未确定:多位分析师、交易员和加密爱好者根据目前比特币网络的状况预计,距离减半仅剩100天,即于2020年5月12日凌晨发生。需要指出的是,第三次比特币减半的准确时间可能会因为网络速度的波动而提前,因此此倒计时仍可能发生变化。(U.Today)[2020/2/3]

操作完成之后,再去usdt那边取消授权。但这里的approve和revoke操作都需要独立的交易,用户往往为了节省gas费用,不进行revoke,结果如果swap合约出安全问题,用户的资产就可能在不知情的情况下被盗取。

声音 | 分析师:尽管Bakkt比特币期货合约日交易份数呈指数增长,但11月份仅交付11个比特币:加密货币分析师Alex Krüger发推称,近期,Bakkt比特币期货交易量呈指数增长。然而,对于比特币多头来说,更应该关注的是实际交付的比特币数量,而非合约份数。11月份,仅实际交付了11个比特币,10月份为15个。此外,Bakkt有两个比特币期货合约,分别为月度期货合约和每日期货合约。每日期货合约每天在Bakkt warehouse中结算一次。但每日期货合约的成交量除9月份的两天(这两天每天交付一个比特币)外,其余日期均为0。[2019/11/28]

而在Move中,所有的合约都在一个大的数字世界运行。用户的数字分身可以自由的在合约间移动,执行任何操作,同时用户的状态存在用户自己的存储空间。

分析 | 美国数州安全漏洞事件频发 区块链或是一剂良药:据CCN 7月7日消息,美国马里兰州劳工部近期宣布,其数据库中的安全漏洞可能暴露了大约78,000人的敏感和个人数据。该机构表示,该漏洞发生在今年早些时候,诱因为9名员工遭受了网络钓鱼攻击。无独有偶,6月下旬,俄勒冈州民政服务部(DHS)也发生了类似的数据泄露事件,当时有50多万人的个人数据遭到泄露。 分析指出,此类事件或可利用区块链技术予以解决,该技术在网络安全领域非常有前景。不同的美国机构已经认识到该技术在提高数据存储安全性方面的潜力。今年早些时候,NASA发表了一篇论文,探索区块链在空中交通管理、安全、认证和隐私方面的可能应用。与此同时,正在试验分布式账本技术(DLT)在网络安全和防止方面应用的其他司法管辖区包括中国、马恩岛和爱沙尼亚等。[2019/7/7]

用户从swap入口进入,从自己的余额提取usdt,交换,存储可以在同一个交易里原子化完成。这种模式给合约带来更自由的组合模式,可以玩出很多EVM上很难实现的组合玩法,这也是EVM上的账户抽象方案想实现的模式。当然,这也带来了新的安全挑战。

分析 | 莫斯科管理学院:私有区块链应用非常少:据bitcoin.com报道,根据莫斯科管理学院“Skolkovo”金融创新和无现金经济中心发布的加密行业发展报告,目前为止私有区块链的应用非常少。此外,研究发现“联盟区块链”的数量少得多。只有三个这样的项目得到了认可和普及,分别是Corda,Hyperledger和Symbiont。[2018/12/26]

那EVM中能否直接增加一个特性,让合约间的调用可以把用户身份直接带过去?这个技术上是可以实现的,但EVM中支持动态调用,可以调用任意地址的合约,让这种操作的风险变的很难度量,同时EVM的状态变更对用户和钱包都不友好,钱包很难通过状态变化对用户进行提示。

而Move中解决这个安全挑战有两个方法:

1.在预执行合约的时候把合约执行后的状态变更提示给用户,让用户可以知道这个交易操作了自己的哪些重要资产,以及执行后的结果。这个方法StarMask中已经实现,参看链接以及附图https://starcoin.medium.com/starmask-v4-6-0-display-the-token-changes-that-caused-by-a-transaction-from-any-dapps-9d4930825d2b…

2.可能有部分合约可以通过设置条件,让一部分用户预执行的时候无法发现状态变更。@0xmetazen的分析https://twitter.com/0xmetazen/status/1582581013972414465…但Move中没有动态调用,合约在部署时,它的执行逻辑就是确定的。可以通过静态分析字节码,得到合约所有可能路径上操作的状态,在区块浏览器或钱包里提示给用户。

1当区块号为偶数则偷,否则不偷,那就有一半的概率绕过钱包检测;2从钱包检测完交易,到交易执行上链,有一个时间窗口,黑客可以在这个时间窗口内插入执行的更快的交易来临时改变合约状态,让合约变的可以盗取用户资产,钱包当初的检测是没问题的EVM和Move的两种方案,带来的安全风险是不一样的。Approve方案的安全风险是把一个即时的授权变为长期授权,它的风险不是立刻发生的,比如合约漏洞未被发现或者恶意合约放长线钓大鱼。而一旦发生,用户往往很被动,很多用户可能都忘记授权过哪些合约了。

而Move的方案给了合约更大的自由权,遇到恶意合约会有较大风险,但这种风险是即刻发生的,是可以通过技术手段来检测的。最坏的情况,至少前面冲的快到人趟坑了,可以给后面的人警示,恶意合约会快速暴露出来

最后,世上没有银弹,不可能靠用了某种技术就解决了所有安全问题,需要链,工具,用户一起努力。对Move用户的安全建议:

1.选用状态变更提示更完备的钱包,并尝试理解钱包的提示。

2.不要随意和来源未知或未开源的DApp交互。

3.如果做不到上面两点,可以等别人先趟一下坑

责任编辑:MK

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

链链资讯

[0:15ms0-5:500ms