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

探索 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.mrgr.cn/news/63921.html

相关文章:

  • 使用wordcloud与jieba库制作词云图
  • 统信UOS开发环境支持php
  • 后台管理系统的通用权限解决方案(十)如何自定义SpringMVC的参数解析器
  • 【玩转 Postman 接口测试与开发2_003】第一章:API 相关术语及类型
  • IntelliJ IDEA使用技巧与插件推荐
  • 了解神经网络中的激活函数
  • 反射,注解
  • 基于JavaWeb+MySQL实现口算题卡
  • 移植 AWTK 到 纯血鸿蒙 (HarmonyOS NEXT) 系统 (4) - 平台适配
  • HTML 基础标签——多媒体标签<img>、<object> 与 <embed>
  • 智能物流与供应链管理:技术驱动的现代化物流解决方案
  • LeetCode题练习与总结:有效的完全平方数--367
  • 【极验、网易、腾讯、阿里行为验证人机识别的对比实测】
  • 工厂电气及PLC【1章各种元件符号】
  • 针对物联网边缘设备基于EIT的手部手势识别的1D CNN效率增强的组合模型压缩方法
  • Shell 编程-Shell三剑客 Grep 学习
  • 【ChatGPT】让ChatGPT在回答中附带参考文献与来源
  • ServletContext 对象介绍及使用
  • 【OD-支持在线评测】智能驾驶(200分)
  • 【OD-支持在线评测】字符串拼接(200分)
  • Redis常见面试题(二)
  • 华为路由器交换机如果系统丢失怎么恢复(强烈建议收藏)
  • Halcon 一维卡尺测量找点之模糊集测量法
  • 【C++】1968. 输出ascii码对应的字符
  • 【常用数据结构】开发中常用的数据结构?
  • GB/T 28046.3-2011 道路车辆 电气及电子设备的环境条件和试验 第3部分:机械负荷(2)