浅析Move语言背后的设计思想:“不授权”到底安不安全?_区块链:MOV

作者:@jolestar

来源:《「不授权」到底安全吗:Move背后的设计思想》

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

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

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

链上ChainUP WaaS联盟为Datahighway(DHX)提供全方位托管服务:据官方消息,链上ChainUP WaaS联盟宣布与Datahighway(DHX)达成深度战略合作,为DHX提供全方位的WaaS联盟托管服务,包含主链技术开发维护、钱包资产托管、云节点服务等等,双方就区块链技术应用落地、区块链金融服务、资金安全等方面深度合作。

Datahighway(DHX)是波卡生态官方builder孵化的物联网项目,西湖Westlake主网于4月9日上线。Datahighway(DHX)已于4月13日今天上线BiKi。

链上ChainUP WaaS联盟作为数字资产托管及金融服务平台,是链上集团依托3年时间所服务的600多家企业客户技术服务经验,提供钱包资产托管、云节点服务、主链定制开发、热门币种一键接入、共管钱包、金融衍生品等多种功能服务,联盟内部企业转账 0手续费、实时转帐。目前已有超过500家企业加入链上ChainUP WaaS联盟。[2021/4/13 20:14:22]

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

动态 | 中国联通结合区块链等技术实现全方位智慧工地管理:在复工复产大潮中,中国联通正发挥独特的创新技术优势,利用5G、大数据、云网融合、云计算等新技术,结合数据一点集中优势,推动重大项目复工复产。其中,中国联通与中国建筑集团打造的位于亦庄经济技术开发区的“5G智慧工地”项目。“5G智慧工地”项目实现了多项突破:运用“一通多能四驱动”架构,采用定制化5G网络,围绕人、机、料、法、环、测等施工管理,实行5G实名制双防监管系统、5G双360度空间立体实时监控系统、5G智慧信息岛、多维安全监控系、5G作业面监管系统统、5G+智慧图纸技术等大量功能,同时结合了人工智能、区块链、云计算加边缘计算、大数据等技术,开启多项创新应用,实现全方位智慧工地管理。(新华网)[2020/2/19]

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

声音 | 火币大学于佳宁:产业区块链将在2020年全面落地,引发社会经济全方位变革:12月28日,在区块链技术应用与发展主题座谈会上,火币大学校长于佳宁表示,技术的价值要通过切实帮助产业转型升级、提质增效体现出来,给产业带来的价值增量才是技术的价值。产业区块链将在2020年全面落地,引发社会经济全方位变革。他表示,未来区块链将成为交易中的一部分,成为一种新的信任要素,这将对价值链上的传统行业带来重大改变。于佳宁认为,区块链不仅仅是一项技术,“区块链+”也不仅仅是“技术+”,它更是商业模式、组织形态,甚至思维方式的全方位变革。区块链思维是一种互联网思维、金融思维和产业思维的融合。随着5G的到来,区块链与其他技术结合给产业带来的生产率提升不是10倍,而是100倍。[2019/12/29]

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

声音 | 詹庆华:上海海关将利用区块链等手段实现全链条、全方位的监管:上海23日出台《上海海关支持上海科创中心建设实施方案》(2020版),创新实施科研机构“白名单”制度等,为进口研发用品的高效安全通关开绿灯。上海科创中心海关关长詹庆华表示,上海海关将利用诸如物联网、区块链等现代科技手段,在提高进口研发用品的通关效率的同时,实现全过程、全链条、全时空、全方位的监管。(新华社)[2019/12/24]

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

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

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

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

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

EVM和Move的两种方案,带来的安全风险是不一样的。Approve方案的安全风险是把一个即时的授权变为长期授权,它的风险不是立刻发生的,比如合约漏洞未被发现或者恶意合约放长线钓大鱼。而一旦发生,用户往往很被动,很多用户可能都忘记授权过哪些合约了。

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

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

对Move用户的安全建议:

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

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

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

Move在安全方面的挑战以及改进方案不仅仅是这些,我会在《为什么是Move》系列的安全篇里详述,想了解的朋友可以关注一下。

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

金宝趣谈

[0:15ms0-6:710ms