sui move clock

引言

在合约中,有不少地方需要用到时间,sui move framework clock提供了获取时间的函数。本文通过实践获取链上时间,以便更好在开发中进行运用。

clock

    struct Clock has key {
        id: UID,
        timestamp_ms: u64,
    }

sui系统创建了Clock obj,他是share_obj,地址为0x6,任何人都可以使用它作为交易的输入。

    public fun timestamp_ms(clock: &Clock): u64 {
        clock.timestamp_ms
    }

该函数传入Clock的不可变借用,返回其中的时间戳,所以任何人都可以传入clock获取链上时间。

示例:

  1. 准备以下合约
module get_time::get_time{
    use sui::clock::{Self, Clock};
    use sui::event;
    use sui::tx_context::{Self, TxContext};

    struct BlockTimeStampEvent has copy,drop,store{
        block_timestamp: u64,
    }

    public entry fun block_timestamp(clock: &Clock): u64{
        let block_timestamp = clock::timestamp_ms(clock);
        event::emit(BlockTimeStampEvent {
            block_timestamp: block_timestamp,
        });
        block_timestamp
    }

}

合约定义了一个BlockTimeStampEvent事件
block_timestamp函数中调用了timestamp_ms获取链上时间,触发BlockTimeStampEvent,然后返回链上时间

  1. 部署合约
sui client publish --gas-budget 10000000 --skip-fetch-latest-git-deps --skip-dependency-verification
  1. 调用block_timestamp
 sui client call --function block_timestamp --args 0x6 --gas-budget 10000000 --package 0x0e411cb5110d5d0b87e25a545928aad5aea52af67ccf508c41fa284f810cafa7 --module get_time

触发事件:

{
  "id": {
    "txDigest": "43HMu4g7oV3EjjUVanfAKsyukdGFkwQg6PZVX52v7482",
    "eventSeq": "0"
  },
  "packageId": "0x0e411cb5110d5d0b87e25a545928aad5aea52af67ccf508c41fa284f810cafa7",
  "transactionModule": "get_time",
  "sender": "0x2fcdfe7c92fe670d267474fbd7aa89baef55c5f93b1953a9e82614c9abb7abc6",
  "type": "0x0e411cb5110d5d0b87e25a545928aad5aea52af67ccf508c41fa284f810cafa7::get_time::BlockTimeStampEvent",
  "parsedJson": {
    "block_timestamp": "1709878808021"
  },
  "bcs": "cdtRtpUTkcf",
  "timestampMs": "1709878808021"
}

Move语言学习交流QQ群: 79489587
Sui官方中文开发者电报群: https://t.me/sui_dev_cn

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值