稳健,是 Gate 持续增长的核心动力。
真正的成长,不是顺风顺水,而是在市场低迷时依然坚定前行。我们或许能预判牛熊市的大致节奏,但绝无法精准预测它们何时到来。特别是在熊市周期,才真正考验一家交易所的实力。
Gate 今天发布了2025年第二季度的报告。作为内部人,看到这些数据我也挺惊喜的——用户规模突破3000万,现货交易量逆势环比增长14%,成为前十交易所中唯一实现双位数增长的平台,并且登顶全球第二大交易所;合约交易量屡创新高,全球化战略稳步推进。
更重要的是,稳健并不等于守成,而是在面临严峻市场的同时,还能持续创造新的增长空间。
欢迎阅读完整报告:https://www.gate.com/zh/announcements/article/46117
Move语言安全性全面解析:特性、机制与验证工具
Move语言的安全性解析
前言
Move是一种可在实现MoveVM的区块链环境中运行的智能合约语言。它诞生之初就考虑到了区块链和智能合约的诸多安全问题,并借鉴了RUST语言的一些安全设计。作为新一代以安全为主要特点的智能合约语言,Move的安全性如何?是否能在语言层面或相关机制上规避EVM、WASM等合约虚拟机常见的安全威胁?它本身是否存在特有的安全隐患?
本文将从语言特性、运行机制和验证工具三个层面来探讨Move语言的安全性问题。
1. Move语言的安全特性
与许多现有编程语言不同,Move被设计为既支持与不受信任代码安全交互,又支持静态验证。Move具备这些安全特性,是因为它舍弃了基于灵活性考虑的非线性逻辑,不支持动态分派,也不支持递归外部调用,而是使用泛型、全局存储、资源等概念来实现替代性的编程模式。例如,Move省略了可能导致重入漏洞的动态调度和递归调用特性。
Move的主要安全特性包括:
模块(Module):每个Move模块由一系列结构类型和过程定义组成。模块可以导入其他模块声明的类型定义和调用其过程。
结构体(Structs):可定义为资源类型,表示可存储在持久全局键/值存储中。
过程(function):定义模块的具体功能。
全局存储:允许Move程序存储持久数据,这些数据只能由拥有它的模块以编程方式读写。
不变量检查:可定义静态检查的不变量,保证系统中资源的完整性。
字节码验证器:对安全类型和线性化进行验证,防止敏感值被非法创建、修改或销毁。
2. Move的运行机制
Move程序在虚拟机中运行,无法直接访问系统内存。程序在堆栈上执行,全局存储分为内存(堆)和全局变量(栈)两部分。
Move的字节码指令在栈式解释器中执行,这种方式易于实现和控制,对硬件要求较低,适合区块链场景。同时相比寄存器式解释器,栈式解释器更容易控制和检测变量间的复制和移动。
在执行过程中,Move程序的状态由调用栈、内存、全局变量和操作数组成。调用栈包含过程执行的所有上下文信息。执行Call指令时会创建新的调用栈对象。遇到分支指令时会在过程内部进行静态跳转。
与EVM不同,MoveVM将数据存储和调用堆栈分开,更适合区块链上的资产安全管理需求。这种设计在安全性和执行效率上有很大提升。
3. Move Prover
Move Prover是一种基于推理的形式化验证工具,使用形式化语言描述程序行为,并用推理算法验证程序是否符合预期。它可以帮助开发人员确保智能合约的正确性,减少交易风险。
Move Prover使用演绎验证算法,根据已知信息推断程序行为,确保其与预期行为匹配。这有助于保证程序正确性,减少人工测试工作量。
Move Prover的工作流程如下:
Move Specification Language用于描述规范系统,是Move语言的子集,支持静态描述程序正确性行为。
总的来说,Move Prover是一个非常有用的工具,可以帮助开发人员确保智能合约的正确性,减少交易风险,提高部署智能合约的信心。
4. 总结
Move语言在安全性设计上非常出色,在语言特性、虚拟机执行和安全工具层面都进行了全面考虑。它牺牲了部分灵活性,强制类型检查和线性逻辑,便于编译检查和形式化验证。MoveVM将状态与逻辑分开,更适合区块链资产安全管理需求。
Move语言可以有效避免EVM中常见的重入、溢出、Call/DelegateCall注入等漏洞。但鉴权、代码逻辑、大整数结构溢出等问题仍需要开发者额外注意。虽然Move Prover提供了形式化验证,但无法弥补整体设计的疏漏。
尽管Move在安全层面做了很多考虑,但没有完全安全的语言和程序。建议Move智能合约开发者仍使用第三方安全公司的审计服务,并将规范部分的编写和验证交由专业安全团队完成。