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

API

escrow_shared

Module0x40fc…5bb2
Move path
0xed6c…9f32::escrow_shared
Functions
55 public, 5 entry
Structs
1
Friend modules
None
escrow_shared

Bytecode180 lines

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

// Move bytecode v6
module ed6c6fe0732be937f4379bc0b471f0f6bfbe0e8741968009e0f01e6de3d59f32.escrow_shared {
use 0000000000000000000000000000000000000000000000000000000000000001::option;
use 0000000000000000000000000000000000000000000000000000000000000002::object;
use 0000000000000000000000000000000000000000000000000000000000000002::transfer;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
 
struct Escrow<Ty0: store + key> has key {
id: UID,
sender: address,
recipient: address,
arbitrator: Option<address>,
obj: Option<Ty0>
}
 
entry public escrow<Ty0: store + key>(Arg0: address, Arg1: address, Arg2: Option<address>, Arg3: Ty0, Arg4: &mut TxContext) {
B0:
0MoveLoc[4](Arg4: &mut TxContext)
1Call object::new(&mut TxContext): UID
2MoveLoc[0](Arg0: address)
3MoveLoc[1](Arg1: address)
4MoveLoc[2](Arg2: Option<address>)
5MoveLoc[3](Arg3: Ty0)
6Call option::some<Ty0>(Ty0): Option<Ty0>
7PackGeneric[0](Escrow<Ty0>)
8Call transfer::share_object<Escrow<Ty0>>(Escrow<Ty0>)
9Ret
}
 
entry public transfer<Ty0: store + key>(Arg0: &mut Escrow<Ty0>, Arg1: &mut TxContext) {
B0:
0MoveLoc[1](Arg1: &mut TxContext)
1FreezeRef
2Call tx_context::sender(&TxContext): address
3CopyLoc[0](Arg0: &mut Escrow<Ty0>)
4ImmBorrowFieldGeneric[0](Escrow.sender: address)
5ReadRef
6Eq
7BrFalse(9)
B1:
8Branch(13)
B2:
9MoveLoc[0](Arg0: &mut Escrow<Ty0>)
10Pop
11LdConst[0](u64: 65536)
12Abort
B3:
13CopyLoc[0](Arg0: &mut Escrow<Ty0>)
14MutBorrowFieldGeneric[1](Escrow.obj: Option<Ty0>)
15Call option::extract<Ty0>(&mut Option<Ty0>): Ty0
16MoveLoc[0](Arg0: &mut Escrow<Ty0>)
17ImmBorrowFieldGeneric[2](Escrow.recipient: address)
18ReadRef
19Call transfer::public_transfer<Ty0>(Ty0, address)
20Ret
}
 
entry public refund<Ty0: store + key>(Arg0: &mut Escrow<Ty0>, Arg1: &mut TxContext) {
B0:
0MoveLoc[1](Arg1: &mut TxContext)
1FreezeRef
2Call tx_context::sender(&TxContext): address
3CopyLoc[0](Arg0: &mut Escrow<Ty0>)
4ImmBorrowFieldGeneric[2](Escrow.recipient: address)
5ReadRef
6Eq
7BrFalse(9)
B1:
8Branch(13)
B2:
9MoveLoc[0](Arg0: &mut Escrow<Ty0>)
10Pop
11LdConst[1](u64: 65537)
12Abort
B3:
13CopyLoc[0](Arg0: &mut Escrow<Ty0>)
14MutBorrowFieldGeneric[1](Escrow.obj: Option<Ty0>)
15Call option::extract<Ty0>(&mut Option<Ty0>): Ty0
16MoveLoc[0](Arg0: &mut Escrow<Ty0>)
17ImmBorrowFieldGeneric[0](Escrow.sender: address)
18ReadRef
19Call transfer::public_transfer<Ty0>(Ty0, address)
20Ret
}
 
entry public transfer_arbitrated<Ty0: store + key>(Arg0: &mut Escrow<Ty0>, Arg1: &mut TxContext) {
L2: loc0: bool
B0:
0CopyLoc[0](Arg0: &mut Escrow<Ty0>)
1ImmBorrowFieldGeneric[3](Escrow.arbitrator: Option<address>)
2Call option::is_some<address>(&Option<address>): bool
3BrFalse(14)
B1:
4MoveLoc[1](Arg1: &mut TxContext)
5FreezeRef
6Call tx_context::sender(&TxContext): address
7CopyLoc[0](Arg0: &mut Escrow<Ty0>)
8ImmBorrowFieldGeneric[3](Escrow.arbitrator: Option<address>)
9Call option::borrow<address>(&Option<address>): &address
10ReadRef
11Eq
12StLoc[2](loc0: bool)
13Branch(18)
B2:
14MoveLoc[1](Arg1: &mut TxContext)
15Pop
16LdFalse
17StLoc[2](loc0: bool)
B3:
18MoveLoc[2](loc0: bool)
19BrFalse(21)
B4:
20Branch(25)
B5:
21MoveLoc[0](Arg0: &mut Escrow<Ty0>)
22Pop
23LdConst[2](u64: 65538)
24Abort
B6:
25CopyLoc[0](Arg0: &mut Escrow<Ty0>)
26MutBorrowFieldGeneric[1](Escrow.obj: Option<Ty0>)
27Call option::extract<Ty0>(&mut Option<Ty0>): Ty0
28MoveLoc[0](Arg0: &mut Escrow<Ty0>)
29ImmBorrowFieldGeneric[2](Escrow.recipient: address)
30ReadRef
31Call transfer::public_transfer<Ty0>(Ty0, address)
32Ret
}
 
entry public refund_arbitrated<Ty0: store + key>(Arg0: &mut Escrow<Ty0>, Arg1: &mut TxContext) {
L2: loc0: bool
B0:
0CopyLoc[0](Arg0: &mut Escrow<Ty0>)
1ImmBorrowFieldGeneric[3](Escrow.arbitrator: Option<address>)
2Call option::is_some<address>(&Option<address>): bool
3BrFalse(14)
B1:
4MoveLoc[1](Arg1: &mut TxContext)
5FreezeRef
6Call tx_context::sender(&TxContext): address
7CopyLoc[0](Arg0: &mut Escrow<Ty0>)
8ImmBorrowFieldGeneric[3](Escrow.arbitrator: Option<address>)
9Call option::borrow<address>(&Option<address>): &address
10ReadRef
11Eq
12StLoc[2](loc0: bool)
13Branch(18)
B2:
14MoveLoc[1](Arg1: &mut TxContext)
15Pop
16LdFalse
17StLoc[2](loc0: bool)
B3:
18MoveLoc[2](loc0: bool)
19BrFalse(21)
B4:
20Branch(25)
B5:
21MoveLoc[0](Arg0: &mut Escrow<Ty0>)
22Pop
23LdConst[2](u64: 65538)
24Abort
B6:
25CopyLoc[0](Arg0: &mut Escrow<Ty0>)
26MutBorrowFieldGeneric[1](Escrow.obj: Option<Ty0>)
27Call option::extract<Ty0>(&mut Option<Ty0>): Ty0
28MoveLoc[0](Arg0: &mut Escrow<Ty0>)
29ImmBorrowFieldGeneric[0](Escrow.sender: address)
30ReadRef
31Call transfer::public_transfer<Ty0>(Ty0, address)
32Ret
}
 
Constants [
0 => u64: 65536
1 => u64: 65537
2 => u64: 65538
]
}