# 为什么Movescriptions是更适合智能合约链的铭文2.0设计？

By [熊猫撸白.nft](https://paragraph.com/@fomoplz) · 2024-01-10

---

**前言**
------

前几天在sui生态中出现了一个创新性的铭文标准**MRC20**，其首个代币$Move在社区中引起了一定的热度。我在接收到消息之后，也是在第一时间点进官网：[https://mrc20.fun/](https://mrc20.fun/) 准备mint。

官网做得十分简洁，在铸造页面，只有如下的一些铭文的基本信息以及一个蓝色的Mint按钮。在按钮下方用一句话概括出该铭文标准的创新点--“**_所有的铸造费用都会存储在你的铭文之中，你可以通过燃烧你的铭文取回你的铸造费用，在每轮周期结束之后你的铭文会被发送到你的地址_**”。

由于之前完全没有接触过Move语言再加上这句话，让我对其实现原理产生了很大的好奇，于是仔细研究了作者的推特，博文以及github开源的代码，输出了这篇文章。

![](https://storage.googleapis.com/papyrus_images/cc5dddb9965c8de3675c4a20f571494be3f64aa384d5b2ea470842207dd2bfda.png)

**作者背景**
--------

**jolestar（推特:@jolestar）** 是一个善于编程和写作的技术大牛，从他的个人博客网站（[https://jolestar.com/）可以看到，他从2007年就开始坚持输出技术文章和人生感悟。从他的个人Github主页也可以看到简介中的三个项目都是与Move语言相关的。](https://jolestar.com/%EF%BC%89%E5%8F%AF%E4%BB%A5%E7%9C%8B%E5%88%B0%EF%BC%8C%E4%BB%96%E4%BB%8E2007%E5%B9%B4%E5%B0%B1%E5%BC%80%E5%A7%8B%E5%9D%9A%E6%8C%81%E8%BE%93%E5%87%BA%E6%8A%80%E6%9C%AF%E6%96%87%E7%AB%A0%E5%92%8C%E4%BA%BA%E7%94%9F%E6%84%9F%E6%82%9F%E3%80%82%E4%BB%8E%E4%BB%96%E7%9A%84%E4%B8%AA%E4%BA%BAGithub%E4%B8%BB%E9%A1%B5%E4%B9%9F%E5%8F%AF%E4%BB%A5%E7%9C%8B%E5%88%B0%E7%AE%80%E4%BB%8B%E4%B8%AD%E7%9A%84%E4%B8%89%E4%B8%AA%E9%A1%B9%E7%9B%AE%E9%83%BD%E6%98%AF%E4%B8%8EMove%E8%AF%AD%E8%A8%80%E7%9B%B8%E5%85%B3%E7%9A%84%E3%80%82)

![](https://storage.googleapis.com/papyrus_images/c25e238b22ca8373e71f34830c34ff6767491e3fb4b4988d299435dcaf9fa114.png)

jolestar自述从19年就开始捣鼓Move,此外他还发起了一个Move语言教育类公益项目--星航计划(致敬电影星际迷航)，完成课程顺利毕业还可以拿到现金奖励，旨在为Move生态引进更多的开发者。

![](https://storage.googleapis.com/papyrus_images/b816072be114e8cbed3133a040239c06a98687737b2be458b46048fee6ed1071.png)

所以，从上述资料我们可以得知jolestar是一个对Move生态非常熟悉的开发者。

**SFT**
-------

我们都知道BRC20是在铭文中嵌入JSON文本来表示代币的名称和数量等信息,用NFT（Non-Fungible Token,非同质化代币）的形式来实现FT(Fungible Token,同质化代币)的功能，本质上可以把它归类为一种**SFT（Semi-Fungible Token,半同质化资产）。**

当然SFT并非jolestar首创，早在2022年9月就由我们华人团队@SolvProtocol主导设计并且正式通过成为以太坊新的代币标准ERC-3525。

**同质化代币**是指每个代币在功能和价值上都是相等的，没有任何区别，可以互相替换，1 BTC=1 BTC，非同质化代币是指每个代币都是唯一的不可以替换的，1 BAYC  ≠ 1 BAYC,**半同质化代币结合了同质化代币和非同质化代币的特性，其关键在于Slot,简单来说Slot代表了一种分类，同一个Slot下会有多个ID（唯一标识），每个ID虽然都可以拥有不同的Value（代币数量）,但是同一个Slot下不同的ID可以被认作是相同的可以交换组合拆分的实体。**

就拿会员卡积分来举例，假设有两个Slot,分别是肯德基会员卡和星巴克会员卡，中本聪和马斯克分别在肯德基和星巴克办理了会员卡，**很显然肯德基的积分和星巴克的积分无法通用，这就是非同质化的**，但是肯德基下中本聪卡1的积分可以划转到卡2和卡3下，同理，星巴克下马斯克卡2和卡3的积分可以合并到卡1，**在同一个slot下不同ID下的积分就是同质化的**。

![](https://storage.googleapis.com/papyrus_images/66fb333e0857553201f73d67b4e1d60327a2dfb2cb403c67c5b91b5ce7469e47.png)

将上述积分替换为brc20的ordi和sats,如下图所示。每一种代币类型可以看成是一个slot,每个slot下记录着不同数量的铭文可以看成一个半同质化代币，每个铭文都拥有一个唯一的铭文id，每个铭文中包含的ordi都是没有区别的。

![](https://storage.googleapis.com/papyrus_images/7d461384c0b9d664f750c004e088909911dfb864a5a311076d2c78269b92a349.png)

**设计理念**
--------

在讲Movescription的设计理念之前，我们先来看看前段时间“万链齐飞”的日子，大多数evm链在设计铭文时参考的是eths的模式，即“**_通过自转或者往黑洞地址发送一笔转账，并在calldata中附带一组类似于brc20的JSON格式的文本，然后再构建一个索引器来索引链上的数据来完成记账_**”，这种方式是从**链上存储数据**的方式来模仿brc20，可谓是“**形似而神不似**”，没有把链本身智能合约的优势发挥出来。

于是作者在以下推文中提出了他的设计理念（以下文字为精简摘要，全文请点击链接：[**https://x.com/jolestar/status/1737652966142959982?s=20**](https://x.com/jolestar/status/1737652966142959982?s=20) 查看）

> _Bitcoin上由于没有智能合约，所以需要使用铭刻JSON的方式来发行FT，而其他智能合约链完全没有必要去使用JSON，所以我总结了铭文的几个启示：1. 它是一种半同质化资产，它的流动性并不如 FT，但这在市场起步阶段是优势。2. 它发行资产的门槛比各链上的 FT 都要低，认知成本也低。各链上发行资产一般都需要部署个智能合约，识别也主要是通过合约地址，而这对新手来说比较困难。而铭文这波把这个门槛基本降到了最低。3. 它的公平发行模式，Bitcoin 上可以理解成通过 Gas 租赁矿工矿机的 PoW 发行模式。_
> 
> _那既然这样，我们为什么不用智能合约来实现一个铭文协议，并且兼具以上特性呢？于是我尝试用 Move 实现了 Movescriptions 协议。首先，它是一种通过 Move 表达的半同质化资产协议。Move 基于数据结构的资产表达方式，非常适合表达这种协议。1. 通过 tick 这个全局唯一的名字来表达类型，借鉴 BRC20，符合 KISS 原则，简单直观。2. value 可以用来表达 FT 的余额，或者 NFT 里面的关键值。3. Metadata 可以附加任意类型的数据。其次，它支持通过 PoW 来分发资产，保证资产的分发更公平，更分散。我称之为智能铭文。_
> 
> _\-jolestar_

**资产的表达方式**
-----------

“**_Move基于数据结构的资产表达方式，非常适合表达这种协议_**”。我们该如何理解jolestar所讲的这段话。

首先Move语言引入了**Resource**的概念，这也是Solidity和Move最大的一个区别，它在**弱化数字属性，强调资产属性,使得Move变得安全且强大**。

Solidity语言体系下的资产在EVM中被编码为 "**地址-->资产**”的映射，**资产的传递只能通过在不同的地址中加减数值，它无法作为参数传递，从函数返回或者存储到另一个资产中**，而且这种记账方式很容易被黑客找到漏洞进行重入和双花攻击，如下图所示，这便是一个典型的erc20代币的工作原理。

![](https://storage.googleapis.com/papyrus_images/259518f5e7b75708b3ccb38871cbbaa171f8ec77f3a1fcd32273016b66f66794.png)

而在Move语言体系下，资产被定义为Fisrt-class Resource,直译为资源是一等公民，就是表示资源需要作为被首要考虑的编程对象，并且具有两种约束，即**稀缺性和访问权限。**

现实生活中稀缺性是实物资产的重要属性，比如黄金，既不会凭空增发也不会突然消失，但是在数字资产中并不存在固有的物理稀缺性。所以Move认为数字资产必须以某种编程方式强制执行这种稀缺性，于是Move为各种类型抽象了四个属性：**copy(可复制)、key(可索引)、可丢弃（drop）、可储存（store）**。

但是一旦该变量声明为Resource类型，它只能使用Key和Store属性，无法被添加Copy和Drop属性，如此便从语法结构上保证了资源类型的稀缺性。

一个简单的Resource如下图所示，这就解释了作者所说的基于数据结构表达资产的方式。

![](https://storage.googleapis.com/papyrus_images/7a990dd2edbd9a7edde13449d75656f885f3a5b4275c0692526714dd32a1e78f.png)

我们再来看看Move体系下资源是如何转移的。首先，所有的Resource数据都必须存储在账户下，因为只有分配了账户，才会存在对应的Resource资产，其次，每个Resource只要从账户中取出，就必须要被“使用”，使用内置的move\_to方法将资产从账户中取出后，要么将其作为返回值传递给新的账户，要么将其销毁。如下图所示：

![](https://storage.googleapis.com/papyrus_images/45ea2a151497751897d9db3ff492a1c11d37e5c42bde909a1b7187814950cc58.png)

**资产的可组合性**

前面介绍了Resource是一种特殊的结构体，在Move中结构体是可以互相嵌套的，就拿Movescription为例，**在Movescription中嵌入了Balance,就是用这种方式将你的铸造费用锁定在铭文中。那么同理MoveScription也可以被其他的资源所嵌套，就像乐高积木一样。** 如此一来，MoveScription便打破了Brc20上很多铭文只有Meme叙事的魔咒，**可以搭建出各种生态应用，比如作为游戏中的资产，作为Defi中的抵押物**等等。 **总结** 行文至此，我相信你已经可以了解到Movescription这种铭文的设计理念与BRC20有异曲同工之妙。在钱包中，每一个Movescription就是一个NFT（类比Inscription）,每一个Movescription都拥有一个Object id(类比Inscription id),账户的代币余额同样需要索引来实现。但是其优势在于很好地利用了Move语言对于资产的表达优势，真正做到了“**形似且神似**”。 **参考资料：** 1.[https://medium.com/@ThreeDAO/%E4%B8%87%E7%89%A9%E7%A0%94%E7%A9%B6%E9%99%A2-sui%E4%B8%BB%E7%BD%91%E4%B8%8A%E7%BA%BF%E5%9C%A8%E5%8D%B3-%E4%B8%80%E6%96%87%E4%BA%86%E8%A7%A3%E5%85%B6%E8%83%8C%E6%99%AF-%E7%89%B9%E6%80%A7%E5%92%8C%E4%B8%8Eaptos%E7%9B%B8%E6%AF%94%E4%BC%98%E5%8A%A3%E5%8A%BF-c1c75c94c9b5](https://medium.com/@ThreeDAO/%E4%B8%87%E7%89%A9%E7%A0%94%E7%A9%B6%E9%99%A2-sui%E4%B8%BB%E7%BD%91%E4%B8%8A%E7%BA%BF%E5%9C%A8%E5%8D%B3-%E4%B8%80%E6%96%87%E4%BA%86%E8%A7%A3%E5%85%B6%E8%83%8C%E6%99%AF-%E7%89%B9%E6%80%A7%E5%92%8C%E4%B8%8Eaptos%E7%9B%B8%E6%AF%94%E4%BC%98%E5%8A%A3%E5%8A%BF-c1c75c94c9b5) 2.[https://medium.com/huobi-research/move%E8%AF%AD%E8%A8%80%E7%9A%84%E5%88%9B%E6%96%B0%E5%92%8C%E6%9C%BA%E9%81%87-409f01d4d51b](https://medium.com/huobi-research/move%E8%AF%AD%E8%A8%80%E7%9A%84%E5%88%9B%E6%96%B0%E5%92%8C%E6%9C%BA%E9%81%87-409f01d4d51b) 3.[https://mirror.xyz/bocaibocai.eth/q3s\_DhjFj6DETb5xX1NRirr7St1e2xha6uG9x3V2D-A](https://mirror.xyz/bocaibocai.eth/q3s_DhjFj6DETb5xX1NRirr7St1e2xha6uG9x3V2D-A) 4.[https://jolestar.com/why-move-1/](https://jolestar.com/why-move-1/)

---

*Originally published on [熊猫撸白.nft](https://paragraph.com/@fomoplz/movescriptions-2-0)*
