当前位置: 首页 > article >正文

探索 Move 编程语言:智能合约开发的新纪元

目录

引言

一、变量的定义

二、整型

如何在Move中表示小数和负数?

三、运算符

as运算符

布尔型

地址类型

四、什么是包?

五、什么是模块?

六、如何定义方法?

方法访问权限控制

init方法

总结


引言

        Move 是一种专为区块链智能合约开发设计的强类型编程语言,旨在提高安全性和灵活性。它的类型系统和模块化设计使得开发者能够以清晰、简洁的方式定义合约逻辑。在 Move 中,变量的定义严格遵循类型声明的要求,确保了代码在编译阶段就能捕获类型错误,减少了运行时错误的可能性。此外,Move 提供了多种数据类型,包括整型、布尔型和地址类型,使得开发者能够处理复杂的合约需求。理解这些基本概念是学习 Move 的基础,对于后续编写和优化智能合约至关重要。

可在b站搜索这位up主~

一、变量的定义

let a : u32 = 10u32;

let 变量名称: 类型 = 变量值

变量名称只能是:(a-z和A-Z)以及英文下划线(_)

Move是一门强类型的编程语言,没有隐式的类型转换,定义变量也需要申明类型或标注类型。

二、整型

  • Move只有6个无符号整数
  • Move没有负数和小数

如何在Move中表示小数和负数?

小数的定义是 a / b,所以只要我选择放大整数的倍数可以用来表示小数。

标准库中:https://github.com/MystenLabs/sui/blob/main/crates/sui-framework/packages/move-stdlib/sources/fixed_point32.move

负数 我们可以用前端展现和约定的方式来表示
比如 U8 类型

 1-127  表示负数
128-255 表示正数

三、运算符

as运算符

  • 只有类型相同的才能做基本运算
  • as 是 Move的 整数 类型转换运算符
  • Move 不支持类型的隐式转换
  • 语法(1u8 as u64)

fun init(ctx:&mut TxContext}{
let a : u16= 1000;
let b : u64 = 999;
let c : u32=1000;

let d = b + (c as u64);

let f = a + (c as u16);

}

布尔型

地址类型

address 在Move中是一个特殊的类型,用来在合约里面表示一个钱包地址。

字节的长度是32字节

let address1: address = @0x1;

let address2: address = @0x42;

let address3: address = @0xDEADBEEF;

let address4: address = @0x000000000000000000000000000000000000000000000000000000000000000A

 let address_2 = @primitive;

四、什么是包?

包是同一个合约地址包含的全部代码的集合,由很多模块组成。

五、什么是模块?

代码模块是代码划分权限和代码的组织方式。

moudle mod :: a {

        use sui :: tx_context :: TexContext;

        fun init (ctx:  $mut TxContext) {

        }

 moudle关键字,mod是地址名称,a是模块的名字,然后用双冒号分隔开来。然后一个花括号,吧里面会包含方法、一些引用、常量和结构体等等之类的。

六、如何定义方法?

fun <identifier> <[type_parameters: constraint],*>([identifier:type])*):

<return_type><acquires [identifier],*><function_body>

fun a () {

}

pubulic fun b () { 

}

pubilc (package) fun c () {                 //以前叫friend  现在叫package    

}

public entry fun d () {

}

public fun f(a: u32,b: u32) : bool {

        a > b

}

方法访问权限控制

init方法

1、只能是私有的

2、会在发布合约的时候自动调用一次

3、只有两种形式:

  • fun init ( ctx : $mut TxContext) { }
  • fun init ( witness : Struct, ctx : $mut TxContext) { } 

总结

        通过本次学习,我们深入探讨了 Move 编程语言的基本特性和语法结构,包括变量的定义、数据类型的使用、模块和方法的定义等。Move 的设计理念强调类型安全和代码组织的清晰性,使得区块链开发变得更加高效和安全。掌握这些知识不仅有助于我们更好地理解智能合约的实现机制,也为我们在实际开发中运用 Move 提供了坚实的基础。在未来的学习和实践中,我们可以继续探索 Move 的更多功能及其在区块链生态系统中的应用。


http://www.kler.cn/a/381049.html

相关文章:

  • 【uni-app】2025最新uni-app一键登录保姆级教程(包含前后端获取手机号方法)(超强避坑指南)
  • 差分矩阵(Difference Matrix)与累计和矩阵(Running Sum Matrix)的概念与应用:中英双语
  • 计算机毕业设计PyFlink+Hadoop广告推荐系统 广告预测 广告数据分析可视化 广告爬虫 大数据毕业设计 Spark Hive 深度学习 机器学
  • C++中的模板元编程
  • 深度学习0-前置知识
  • Servlet学习中遇到的一些问题及解决
  • CSRF初级靶场
  • 文件操作:使用ByteArrayInputStream
  • A010-基于SpringBoot的宠物健康咨询系统的设计与实现
  • 【LeetCode】【算法】739. 每日温度
  • Harmony项目基础
  • 基于 RNN 的语言模型
  • windows 文件监控 c++ 11及以上版本可用
  • 接口测试(十一)jmeter——断言
  • 力扣最热一百题——验证二叉搜索树
  • 计算机存储单元bit。不同编程语言类型差异。
  • Python面向对象:类和对象的基本操作
  • 在gitlab,把新分支替换成master分支
  • LeetCode 3165.不包含相邻元素的子序列的最大和:单点修改的线段树(动态规划)
  • easyui +vue v-slot 注意事项
  • Grafana+Prometheus监控篇-Nginx
  • C#中,Thread和Task的区别
  • 人工智能基础-opencv-图像处理篇
  • 第二届新生程序设计竞赛热身赛(C语言)
  • File和InputStream,OutputStream
  • JavaEE初阶---网络原理值TCP篇(三)