Search by name, SuiNS, address, digest, object ID, coin type or checkpoint.

API

drand_lib

Module0xe07a…c5fa
Move path
0x625d…9849::drand_lib
Functions
44 public, 0 entry
Structs
0
Friend modules
None
drand_lib

Bytecode170 lines

The on-chain disassembly. Offsets are bytecode positions within each function.

// Move bytecode v6
module 625d518a3cc78899742d76cf785609cd707e15228d4284aa4fee5ca53caa9849.drand_lib {
use 0000000000000000000000000000000000000000000000000000000000000001::hash;
use 0000000000000000000000000000000000000000000000000000000000000002::bls12381;
 
public verify_time_has_passed(Arg0: u64, Arg1: vector<u8>, Arg2: u64) {
B0:
0MoveLoc[0](Arg0: u64)
1LdConst[2](u64: 1692..)
2LdConst[4](u64: 3)
3CopyLoc[2](Arg2: u64)
4LdU64(1)
5Sub
6Mul
7Add
8Le
9BrFalse(11)
B1:
10Branch(13)
B2:
11LdConst[1](u64: 1)
12Abort
B3:
13MoveLoc[1](Arg1: vector<u8>)
14MoveLoc[2](Arg2: u64)
15Call verify_drand_signature(vector<u8>, u64)
16Ret
}
 
public verify_drand_signature(Arg0: vector<u8>, Arg1: u64) {
L2: loc0: u64
L3: loc1: &mut u8
L4: loc2: vector<u8>
L5: loc3: vector<u8>
L6: loc4: u64
L7: loc5: vector<u8>
B0:
0LdConst[5](vector<u8>: "..)
1StLoc[7](loc5: vector<u8>)
2LdU64(7)
3StLoc[6](loc4: u64)
B1:
4CopyLoc[6](loc4: u64)
5LdU64(0)
6Gt
7BrFalse(30)
B2:
8Branch(9)
B3:
9CopyLoc[1](Arg1: u64)
10LdU64(256)
11Mod
12StLoc[2](loc0: u64)
13MutBorrowLoc[7](loc5: vector<u8>)
14CopyLoc[6](loc4: u64)
15VecMutBorrow(7)
16StLoc[3](loc1: &mut u8)
17MoveLoc[2](loc0: u64)
18CastU8
19MoveLoc[3](loc1: &mut u8)
20WriteRef
21MoveLoc[1](Arg1: u64)
22LdU8(8)
23Shr
24StLoc[1](Arg1: u64)
25MoveLoc[6](loc4: u64)
26LdU64(1)
27Sub
28StLoc[6](loc4: u64)
29Branch(4)
B4:
30MoveLoc[7](loc5: vector<u8>)
31Call hash::sha2_256(vector<u8>): vector<u8>
32StLoc[4](loc2: vector<u8>)
33LdConst[3](vector<u8>: 6083..)
34StLoc[5](loc3: vector<u8>)
35ImmBorrowLoc[0](Arg0: vector<u8>)
36ImmBorrowLoc[5](loc3: vector<u8>)
37ImmBorrowLoc[4](loc2: vector<u8>)
38Call bls12381::bls12381_min_sig_verify(&vector<u8>, &vector<u8>, &vector<u8>): bool
39BrFalse(41)
B5:
40Branch(43)
B6:
41LdConst[1](u64: 1)
42Abort
B7:
43Ret
}
 
public derive_randomness(Arg0: vector<u8>): vector<u8> {
B0:
0MoveLoc[0](Arg0: vector<u8>)
1Call hash::sha2_256(vector<u8>): vector<u8>
2Ret
}
 
public safe_selection(Arg0: u64, Arg1: &vector<u8>): u64 {
L2: loc0: u8
L3: loc1: u64
L4: loc2: u128
L5: loc3: u128
B0:
0CopyLoc[1](Arg1: &vector<u8>)
1VecLen(7)
2LdU64(16)
3Ge
4BrFalse(6)
B1:
5Branch(10)
B2:
6MoveLoc[1](Arg1: &vector<u8>)
7Pop
8LdConst[0](u64: 0)
9Abort
B3:
10LdU128(0)
11StLoc[4](loc2: u128)
12LdU64(0)
13StLoc[3](loc1: u64)
B4:
14CopyLoc[3](loc1: u64)
15LdU64(16)
16Lt
17BrFalse(38)
B5:
18Branch(19)
B6:
19MoveLoc[4](loc2: u128)
20LdU8(8)
21Shl
22StLoc[4](loc2: u128)
23CopyLoc[1](Arg1: &vector<u8>)
24CopyLoc[3](loc1: u64)
25VecImmBorrow(7)
26ReadRef
27StLoc[2](loc0: u8)
28MoveLoc[4](loc2: u128)
29MoveLoc[2](loc0: u8)
30CastU128
31Add
32StLoc[4](loc2: u128)
33MoveLoc[3](loc1: u64)
34LdU64(1)
35Add
36StLoc[3](loc1: u64)
37Branch(14)
B7:
38MoveLoc[1](Arg1: &vector<u8>)
39Pop
40MoveLoc[0](Arg0: u64)
41CastU128
42StLoc[5](loc3: u128)
43MoveLoc[4](loc2: u128)
44MoveLoc[5](loc3: u128)
45Mod
46CastU64
47Ret
}
 
Constants [
0 => u64: 0
1 => u64: 1
2 => u64: 1692803367
3 => vector<u8>: 6083cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a
4 => u64: 3
5 => vector<u8>: "" // interpreted as UTF8 string
]
}