Sui Move:基本概览一

Module (模块)

  • Move 代码被组织成模块, 可以把一个模块看成是区块链上的一个智能合约

  • 可以通过调用这些模块中的函数来与模块进行交互,可以通过事务或其他 Move 代码来实现, 事务将被发送到并由Sui区块链进行处理,一旦执行完成,结果的更改将被保存

  • 一个模块由 module 关键字 + 地址 + 模块名组成, 其中地址可以写成 alias (定义在 Move.toml中), 例如 lets_move_sui

    module lets_move_sui::sui_fren {
    
    }
    

基本数据类型

  • 无符号整数:  u8u16u32u64u128u256
  • Boolean: bool
  • Addresses: address
  • 字符串: String
  • Vector: vector, 例如 vector<u64>
  • 自定义的结构体类型, 例如下面定义的 Struct

Struct (结构体)

  • 结构体是 Sui Move 中的一个基本概念

  • 结构体可以看成是一组相关字段的组合, 每个字段都有自己的类型

  • Sui Move 可以为结构体添加4 种能力: key、store、drop、copy, 这些能力后续会慢慢涉及

  • 下面是一个基本的结构体名为 AdminCap, 内部含有一个 num_frens字段

        public struct AdminCap {
            num_frens: u64,
        }
    
  • 添加一个私有函数 init, 这是一个特殊的函数, 会在 module 部署到区块链时, 自动调用

        fun init(ctx: &mut TxContext) {
            let admin_cap = AdminCap {
                id: object::new(ctx),
                num_frens: 1000,
            };
            transfer::share_object(admin_cap);
        }
    

Object

  • Object 是 Sui 中的一个基本概念
  • 在 Sui 中, 所有数据可以视为不同 Object 内部的字段
  • 使用结构体(Struct)来表示Object
  • 可以根据 module 中定义的函数进行创建, 读取, 修改,交互 Object

创建一个 Object

  • 一个 Object 一般都有 key 能力以及含有一个类型为 UID 的 id 字段

    • sui::object::new : 创建一个新对象。返回必须存储在 Sui 对象中的 UID

          public fun new(ctx: &mut TxContext): UID {
              UID {
                  id: ID { bytes: tx_context::fresh_object_address(ctx) },
              }
          }
      
  • 创建 Ticket: create_ticket

  • 示例代码

    module lets_move_sui::ticket_module {
        use sui::clock::{Self, Clock};
        use sui::object::{Self, ID, UID};
        use sui::transfer;
        use sui::tx_context::{Self, TxContext};
    
        public struct Tic
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

积跬步DEV

如有帮助,那多谢赞助!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值