{"content":{"title":"Move生态潜力项目Starcoin，如何利用Move语言优化架构","body":"Move作为新一代智能合约语言，从诞生之日起就受到了业界的广泛关注。通过查看 Move 语言的功能，可以深入了解它在开发者社区、Starcoin 生态和整个区块链行业中引起兴奋的原因。\r\n考虑到当前区块链语言（如 Solidity）给生态系统带来的众所周知的问题，迫切需要一种安全且灵活的新语言。Move是一种面向资源的线性逻辑编程语言，允许开发人员编写灵活管理和移动资产的程序，同时提供安全性和针对这些资产的攻击的保护。\r\nMove的某些功能支持Starcoin的核心功能，而其他功能则在网络上得到了广泛改进，成为第一个使用Move作为智能合约编程语言的公链项目。\r\n\r\n让我们简单地看一下 Move 的重要功能：\r\n面向资源的编程语言\r\nMove 的定义功能之一是能够定义自定义资源类型。资源是受线性类型启发的新所有权模型，它有助于为 Move 设计新的编程模型。资源类型用于编码具有丰富可编程性的安全数字资产。\r\n将某些东西标记为“资源”告诉编程环境，该数据结构代表了有形价值的东西，并且与该数据结构交互的所有代码都需要遵循一系列特殊规则，以维护该数据结构的价值。\r\n这些规则概括地暗示了数字资产不能被复制或伪造，而只能被移动。此外，资源的所有权是根据其存储位置来定义的，并且每个资源在任何给定时间都恰好存在于一个位置。\r\n\r\n形式验证\r\n形式化验证是一种比较前沿的技术，利用数学方法来证明程序的安全性。\r\n在部署智能合约之前，对其代码和文档进行正式建模，然后通过数学手段严格证明代码的安全性和功能正确性。可以有效检测智能合约是否存在安全和逻辑缺陷。形式化验证必将成为智能合约编程的必备工具。\r\n\r\n移动能力\r\n能力功能可用于控制不同类型功能的权限，从而控制资源/资产的属性。Move编程语言抽象了资源的四个属性，分别是：能否被复制（copy）、值作为全局状态的键被访问的能力（key）、值在状态下被删除的能力。范围结束 ( drop )，以及将值存储到全局状态的能力 ( store )。\r\n例如，在定义一种NFT时，如果不赋予复制的能力，那么我们就可以保证该NFT不能被随意复制。\r\n凭借这种能够定义自定义类型的品质，用户可以防止一定程度的不安全感，明确定义可操作的资源的行为并促进创造力。\r\n\r\n静态类型移动\r\nMove 使用静态类型系统，这本质上是一种逻辑约束。它比 EVM 更严格。Rust、Golang、Typescript 等现代编程语言都采用静态类型系统。这样做的优点是许多低级编程错误可以在编译时发现，而不是延迟到运行时。对于开发者来说，这无疑增加了一些障碍，因为更严格的约束需要开发者思考更多。Web2对效率的极致追求，大大提高了开发者对bug的容忍度，但面向资产的智能合约的出现无疑支持了这一特性。\r\n\r\n通用编程\r\nMove的这一特性使得将单个编写的函数应用于多种类型的函数成为可能。当需要为可能执行相同处理的不同 NFT 类型编写大量类似代码时，这非常有助于避免用其他合约语言编写代码时常见的大量重复工作。\r\n泛型编程可以显着减少代码的重复，提高编码效率并增加Move的灵活性，同时增强代码逻辑清晰度，更容易发现错误。\r\n\r\n标准数据库\r\n星币使用Move编程语言构建星币标准库（Stdlib），可以轻松构建各种面向资源的应用程序。Move编程语言的许多特性保证了资源的安全。\r\n星币使用Stdlib官方定制发布了一些通用合约，方便其他用户使用。\r\nStarcoin 的 Stdlib 是一个已实施的合约。这是因为官方已经提供了实现，基于Stdlib的基础协议，用户可以轻松设计自己的应用程序，比如NFT应用程序或者Oracle应用程序，而不必按照协议来实现，而只需要实现业务逻辑合约代码。"},"author":{"user":"https://learnblockchain.cn/people/18715","address":null},"history":null,"timestamp":1710177282,"version":1}