最近 Aptos 、 Sui 的新热潮带火了Move 相关的生态概念。我们团队从事 Move 相关的工作一年多,算是全球最经验最多、踩坑最多的开发者团队之一,借此分享一下对 Move 的看法与理解。

最近 Aptos 、 Sui 的新热潮带火了Move 相关的生态概念。我们团队从事 Move 相关的工作一年多,算是全球最经验最多、踩坑最多的开发者团队之一,借此分享一下对 Move 的看法与理解。

我们团队过往在 Ethereum、 Solana 生态上都开发过项目,而自从我接触了 Move 之后一直保持着一个观点:Move 是目前最先进的智能合约语言,未来是一定会超越 Solidity 生态系统的,这也正是我们团队坚持在 Move 领域持续开发的源动力。

为资产安全而生

现今数字资产概念在不断扩展,“数字”的属性不断被弱化, “资产”的属性不断被强化。几乎每一个加密项目都会有加密资产,并且加密资产的不断增值往往成为项目发展的动力,但资产的增值与项目的发展离不开资产安全。

资产安全似乎是所有平台应该给予的基本保障,但事实却令人沮丧,我们已经看到了一次又一次的被盗事件。

这让我意识到 Move 的优越性。Move 编程语言通过资源定义与控制权限分离、静态类型、泛型、模块系统、形式化验证等特性使得智能合约语言更适合其面向资产的场景,从智能合约层面保障数字资产的安全。而通过资源定义与权限控制分离,不仅明确了资源属性,也让用户可以灵活地管理和转移资产,同时提供安全和保护措施,防止这些资产受到攻击,这让 Move 语言有相比 Solidity 更高的安全性。

面向资源编程

除了安全之外,最吸引我的还是 Move 更具有表现力的面向资源编程的理念,当然,这种理念也是它是让它更安全的的特性之一。

在Move 里,资源 ( Resource )是一等公民,在编程的时候是必须被首先考虑的被编程对象。

Resource 可以对应到我们物理世界中的实物,创造出来是需要有一定的权限或者消耗其他 Resource 的,而创造出来之后不能被复制也不能凭空消失。就像是一杯咖啡,只能选择喝掉或者倒掉( drop ),不能复制( copy)。

当我们在编写合约的时候最重要的事情就是思考如何定义 Resource 的属性,Move 编程语言抽象了资源的四个属性,可复制 ( copy )、可索引 ( key )、可毁灭 ( drop )、可储存 ( store ),通过这四个属性的不同组合,用户可以方便的定义出任何类型的资源。这种针对 Resource 的设计天然就保证了一些常见的安全问题比如复制增发不会在出现。

Move 通过对资源操作权限的抽象,用户可以明确定义资源可被操作的行为,从而将自己的注意力转移至其他更应该被关注的地方,编写正确的业务逻辑,实现正确的访问控制策略等等。

提高可组合性

过去我们一直在讲智能合约的可组合性,而在 Solidity 生态的智能合约的可组合性更像是基于 Interface  间通过消息传递进行的组合。而在 Move 是基于 Module 间的组合,通过资源的传递进行交互。

怎么理解他们之间的不同呢?以建造一个汽车工厂为例,Solidity 的做法是定义了这个工厂的生产标准以及流程,每一个想来造汽车的人都需要先造一个符合生产标准及流程的工厂,然后才能创造汽车。而 Move 的方式是工厂就只有一个,想要造汽车的人使用这一个工厂就能造出来大家都认可的汽车。

这样带来的好处一方面是节省了合约占用的区块空间,我们不需要重复创造工厂了,另一方面的好处是优化升级变得容易,不会自缚手脚了。

比如在以太坊上,当我们想扩展一些新的行为或者做一些实现上的优化,那我们需要重新定义过往的接口,同时也会影响旧的方法,像 ERC 721 和 ERC 721A, ERC 4907 这些优化和新的定义,是没有办法直接让过去所有使用了 ERC 721 的合约直接进行升级迭代的。

而 Move 基于 Module 间的组合只需要对 Module 进行升级和优化,所有使用过这个Module的其他合约都会自动使用最新的版本。

这种合约层面的可组合性和面向资源的编程带来的表现力与可扩展性是其他语言无法带来的。同时针对资源的定义也更贴近现实世界中各种资源的组合方式,比如乐高, 组装电脑的主机的各种配件。

Move 这些特点带来的一个关键性的好处就是可以非常明确的将资源的定义和资源相关的行为进行拆分。

就像一个物品,物品的本身定义只是决定了他以什么形态展示,具有那些属性,能够以什么方式被销毁。而他的所有权,是否可以进行转让等等相关的行为,完全有物品的所有人或者使用方来决定。

这跟现实世界是高度相似的,当一个商品摆在货架上的时候,是可以被任何人购买的。而当商品放在保险柜里,就收到了其他规则的限制。

总结

资产安全、资源抽象、可组合这些都是 Move 在语言层面上的特性,综合来说,我认为它是最适配链上应用开发的语言,它的特性与 DeFi、 NFT 等产品的需求高度契合,并且 Aptos、Sui、Starcoin 等新公链存在市场空白,NFT、DeFi 等业态尚未成熟,我认为以 Aptos 为代表的新公链崛起将是所有掌握 Move 语言团队的巨大机会。

这也是为什么 3NJOY Lab 下的两款产品 Souffl3 和 Wav3 会在第一时间 all in Move 生态从事 NFT 领域的基础设施方向的工作。

随着 Aptos 和 Sui 的测试网上线与开发者社区的不断壮大, Move 走入了更多人的视野,我们团队也期待看到,越来越多的人可以利用这些语言上的特性和优势,搭建更多有意思的应用场景。

当网络从 3G 升级到 4G 的时候,大多数人不知道更快的移动带宽有什么用,但网络提速催生了移动互联网的大爆发。

当 Move 和 Aptos 这些公链出现,大多数人不知道更低 GAS、更高 TPS 的区块链和这门新的合约语言组合在一起会有什么用——我们也不知道,但我们相信,技术进步将会推动产品创新——正如历史已经显现过的经验一样。

在 2022 年,我们可以期待 Aptos 和其它使用 Move 作为合约语言的公链上将会有丰富的应用雨后春笋般涌现出来,就像轰隆作响的蒸汽火车头,将带着加密网络向下一个去中心、可组合、安全的未来驶去。

为什么Move将超越Solidity成为主流编程语言?相关推荐

  1. MongoDb Windows linux平台环境及主流编程语言驱动安装同时配置mongoDb的远程连接

    MongoDb Windows linux平台环境及主流编程语言驱动安装同时配置mongoDb的远程连接 <一,>MongoDB 简介篇Ruiy; MongoDB是一个高性能,开源,无模式 ...

  2. 基于对象和面向对象编程范式辨析和主流编程语言中的应用

    基于对象和面向对象编程范式辨析和主流编程语言中的应用 前言 本文的目的是想告诉大家,为什么C++的模板这么强大.为什么Ruby的Duck Typing(像鸭子那样编程)这么强大! 基于对象和面向对象编 ...

  3. 请允许我用2019年11种主流编程语言,祝祖国70华诞快乐!

    ------·今天距2020年91天·------ 这是ITester小栈第45次推文 大家好,我是coco 小 锦鲤 今天是十月一日 举国同庆 喜大普奔 风调雨顺 让我们用11种主流编程语言 祝福祖 ...

  4. python主流编程语言_目前主流的编程语言有哪些?

    GitHub是全球最大的开源软件开发与管理社区,GitHub也成为了一探硅谷技术趋势最好的窗口,每年GitHub都会推出"Octoverse"报告,其中列出了一些趋势,包括其网站用 ...

  5. 入小学教材、主流编程语言增长最快…… Python 的 2017 回顾

    (点击上方公众号,可快速关注) 整理:Python开发者(PythonCoder) [导读]:每当有 Python 相关重要资讯时,「Python开发者」都会跟进推荐给大家.2017 年中 Pytho ...

  6. Go语言无孔不入的2016:跻身主流编程语言、国内大热、极速提升、尖端应用……

    2015,Go迎来了全迸发的一年.时隔一年,回头再看,Go已跻身主流编程语言行列.在国内,Go的热度更是不凡.2016,对于Go来说,又是怎样的一年? 前言 Go语言已经7岁了!今年8月,Go 1.7 ...

  7. 跳妹儿学编程之ScratchJr(二):主流编程语言的区别,小孩如何选择(Scratch/Java/Python/C/C++)

    目录 一.前言 二.主流编程语言区分 1.概括 2.Scratch 3.C 4.C++ 5.Java 6.Python 7.对比 a.彼此关系 b.编写难度(入手难度) c.执行效率(执行速度) 三. ...

  8. 12种主流编程语言输出“ Hello World ”,把我给难住了!

    作为一名程序员,在初步学习编程想必都绕不开一个最为基础的入门级示例"Hello World",那么,你真的了解各个语言"Hello World"的正确写法吗? ...

  9. python主流编程语言_对5种主流编程语言的吐槽!

    版权说明丨原文出处:微信公众号: Android每日学习 不可否认,想要成为一名优秀的程序员确实是需要掌握多种编程语言.通过这几年的自虐式学习,我也慢慢的掌握了这些编程语言.鬼知道这过程多么痛苦,但也 ...

最新文章

  1. Openshift创建Router和Registry
  2. java里面运行js_在java中利用rhino执行javascript
  3. moore和mealy_Mealy机和Moore机的比较研究 目录
  4. angularjs-控制form及radio,checkbox,select
  5. as3 socket 跨域连接
  6. 区块链 以太坊 虚拟机 EVM 详解
  7. 前端-----今日份小练习
  8. 电影《战狼》评论词云分析
  9. 【LOJ2863】「IOI2018」组合动作
  10. 一个程序员的平凡日常
  11. 柚墨模板PPT干货分享:幻影动画,打造科幻大片前卫PPT
  12. JAVA公益捐赠管理系统_公益组织捐赠系统的设计与实现
  13. 基于知识图谱的推荐系统(KGRS)综述
  14. 易语言cef3填表_易语言CEF3通用浏览器框架,在线帮助手册.pdf
  15. Web前端开发培训之41个JavaScript实用技巧
  16. 一篇标准的审稿意见回复(Response to reviewer)是什么样的?
  17. 期末复习操作系统---设备管理
  18. php sequelize,egg.js整合数据库ORM框架Sequelize
  19. 实不相瞒,我的“睡后收入”是工资的5倍
  20. phpstorm git使用

热门文章

  1. 分享一下刚学会的,阿里矢量图在线引入的方法
  2. ETM黄皮书全球首发
  3. 网络安全等级保护测评机构简介
  4. 在VMware Horizo​​n DaaS中的租户设备上重新初始化fdb和edb
  5. 有关Web常用字体的研究?
  6. 互联网研发晋升答辩汇总
  7. 上传图片限制文件大小以及尺寸大小 php
  8. 云扩RPA研习社|如何快速将网页数据转存Excel
  9. 学习开源项目Halo(二)
  10. Python的作者吉多·范罗苏姆简介(初学者必看章节)