系统对象 - 时钟
我们将要研究的最后一个系统对象是时钟对象。它允许用户获取 Sui 区块链上记录的当前时间:
use sui::clock;
public entry fun get_time(clock: &Clock) {
let timestamp_ms = clock::timestamp_ms(clock);
}
请注意,返回的时间戳是以毫秒为单位的(1 秒 = 1000 毫秒)。 时间戳有两种常见的使用方式:
- 获取时间戳以进行记录或触发事件。
public struct TimeEvent has copy, drop {
timestamp_ms: u64,
}
public entry fun get_time(clock: &Clock) {
event::emit(TimeEvent { timestamp_ms: clock::timestamp_ms(clock) });
}
- 生成一个伪随机数。这在技术上容易受到验证者操纵,因为验证者可以在非常小的误差范围内设置时间戳。
entry fun flip_coin(clock: &Clock): u64 {
let timestamp_ms = clock::timestamp_ms(clock);
// 0 is heads, 1 is tails
timestamp % 2
}