最近关于用户和 Move 智能合约交互,不需要授权 (Approve) 是更安全还是更不安全的争论很多,这里尝试用通俗的方式来解释一下二者背后的区别以及 Move 这样设计背后的思想。
我们先理解一下用户和智能合约交互的方式。当我们签了一个交易,去调用一个链上的智能合约,就好比从物理世界进入了一个智能合约的数字世界,我们在这个数字世界有一个分身,而这个分身做什么,是智能合约定义的。
在 EVM 中,每个合约都相当于一个独立的小世界,分身进入这个世界后,只能操作用户在当前合约世界中的状态(资产)。
比如进入 swap 世界,想用自己的 usdt 交换其他资产,而 usdt 存在定义 usdt 的那个合约世界,没办法直接在 swap 中以自己的身份从 usdt 合约里提取资产。于是用户只能先去 usdt 的合约世界执行 approve,告诉 usdt 的合约,swap 可以代自己提取自己的资产,然后再进入 swap 世界进行操作。
数据:超过95%的AI代币持有者目前处于盈利状态:金色财经报道,尽管最近几天大多数加密货币市场都出现亏损,但基于人工智能平台ChatGPT的流行重新激发了人工智能(AI)的炒作,帮助了很大一部分Fetch.ai(FET)持有者保持盈利。根据Finbold的最新信息,多达96%的FET持有者在当前价格(货币)中获利,而只有4%处于亏损状态。Fetch.ai代币持有者中,99%被认为是长期持有者,持有AI代币超过一年,而只有1%的人持有1到12个月。[2023/3/3 12:41:16]
操作完成之后,再去 usdt 那边取消授权(revoke)。但这里的 approve 和 revoke 操作都需要独立的交易,用户往往为了节省 gas 费用,不进行 revoke,结果如果 swap 合约出安全问题,用户的资产就可能在不知情的情况下被盗取。
特斯拉下周三发布Q3财报:数字货币投资能否盈利引关注:据特斯拉官网消息,该公司将于2021年10月20日美股收市后公布2021年第三季度的财报,其中数字货币投资能否盈利引关注。在数字货币投资方面,今年年初时Elon Musk曾透露花费15亿美元购入了大约4万枚比特币,这笔投资在今年第一季度浮盈超过2.7亿美元,成功帮助特斯拉扭亏,甚至比造车买车主业赚钱都轻松。然而好景不长,由于今年二季度价格震荡(5月份一度冲高到6.5万美元,然后6月份就暴跌一半,最低跌破3万美元)导致特斯拉比特币投资出现亏损,根据此前财报数据显示,二季度比特币资产减值2300万美元。随着当前比特币价格反弹至5.7万美元上方,特斯拉能否在数字货币投资上盈利、以及对公司营收的影响引发投资者关注。[2021/10/13 20:25:41]
而在 Move 中,所有的合约都在一个大的数字世界运行。用户的数字分身可以自由的在合约间移动,执行任何操作,同时用户的状态(资产)存在用户自己的存储空间。
CryptoQuant CEO:由于散户为了盈利而抛售,比特币短期看跌:CryptoQuant首席执行官Ki Young Ju认为,长期来看,比特币将朝着看涨的趋势发展,但在此之前,比特币的短期走势看跌。他提出,主要的散户投资者为了盈利而抛售比特币,这与长期看涨比特币的人形成了争夺2万美元关口的斗争,短期内将产生看跌结果。(CoinInsider)[2020/12/4 13:59:19]
用户从 swap 入口进入,从自己的余额提取 usdt,交换,存储可以在同一个交易里原子化完成。这种模式给合约带来更自由的组合模式,可以玩出很多 EVM 上很难实现的组合玩法,这也是 EVM 上的账户抽象方案想实现的模式。当然,这也带来了新的安全挑战。
Bitget合约大数据中心:BTC合约盈利用户过半:据Bitget合约大数据中心行情播报,截至今日11:00,Bitget交易所BTC/USDT合约过去24小时交易量高达11.6亿美金,其中:盈利用户占比52%,多头盈利7%,空头盈利37%;亏损用户占48%,多头亏损46%,空头亏损13%。此外,Bitget正向合约当前盘口价差在0.5USDT左右,合约基差在0.2USDT左右。Bitget合约分析师表示,BTC四小时线看,布林带呈开口姿态,MACD快慢线向下延伸。[2020/8/26]
那 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》系列的安全篇里详述,想了解的朋友可以关注一下。
区块律动BlockBeats
媒体专栏
阅读更多
金色早8点
金色财经
1435Crypto
吴说区块链
blockin
比推 Bitpush News
Block unicorn
Foresight News
Odaily星球日报
Bankless
DeFi之道
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。