poseidon
Module0x0000…0002
- Move path
- 0x0000…0002::poseidon
- Functions
- 21 public, 0 entry
- Structs
- 0
- Friend modules
- None
poseidon
- accumulator18
- accumulator_metadata2
- accumulator_settlement8
- address10
- address_alias5
- allowance40
- authenticator_state13
- bag10
- balance18
- bcs30
- bls1238143
- borrow4
- clock3
- coin54
- coin_registry43
- config11
- deny_list21
- derived_object3
- display14
- display_registry18
- dynamic_field19
- dynamic_object_field15
- ecdsa_k13
- ecdsa_r12
- ecvrf1
- ed255191
- event3
- forwarding_address1
- funds_accumulator12
- groth1610
- group_ops23
- hash2
- hex3
- hmac1
- kiosk41
- kiosk_extension14
- linked_table19
- math7
- nitro_attestation11
- object32
- object_bag11
- object_table10
- package26
- party5
- pay8
- poseidon2
- priority_queue8
- protocol_config1
- prover0
- random20
- rangeproofs3
- ristretto25518
- scratch18
- sui2
- table10
- table_vec12
- token45
- transfer16
- transfer_policy18
- tx_context19
- types1
- url4
- vdf4
- vec_map20
- vec_set11
- versioned7
- zklogin_verified_id9
- zklogin_verified_issuer6
Bytecode128 lines
The on-chain disassembly. Offsets are instruction numbers within each function.
// Move bytecode v7
module 2.poseidon {
use 0000000000000000000000000000000000000000000000000000000000000002::bcs;
public poseidon_bn254(Arg0: &vector<u256>): u256 {
L1: loc0: u64
L2: loc1: vector<u8>
L3: loc2: &mut vector<vector<u8>>
L4: loc3: BCS
L5: loc4: vector<vector<u8>>
L6: loc5: &u256
L7: loc6: &u256
L8: loc7: u64
L9: loc8: u64
L10: loc9: vector<vector<u8>>
L11: loc10: u64
L12: loc11: &vector<u256>
L13: loc12: &vector<u256>
B0:
0CopyLoc[0](Arg0: &vector<u256>)
1VecLen(1)
2LdU64(0)
3Gt
4BrFalse(6)
B1:
5Branch(10)
B2:
6MoveLoc[0](Arg0: &vector<u256>)
7Pop
8LdConst[1](u64: 1)
9Abort
B3:
10CopyLoc[0](Arg0: &vector<u256>)
11VecLen(1)
12LdConst[4](u64: 16)
13Le
14BrFalse(16)
B4:
15Branch(20)
B5:
16MoveLoc[0](Arg0: &vector<u256>)
17Pop
18LdConst[2](u64: 2)
19Abort
B6:
20MoveLoc[0](Arg0: &vector<u256>)
21StLoc[12](loc11: &vector<u256>)
22LdConst[5](vector<vector<u8>>: 00)
23StLoc[10](loc9: vector<vector<u8>>)
24MoveLoc[12](loc11: &vector<u256>)
25StLoc[13](loc12: &vector<u256>)
26CopyLoc[13](loc12: &vector<u256>)
27VecLen(1)
28StLoc[1](loc0: u64)
29LdU64(0)
30StLoc[9](loc8: u64)
31MoveLoc[1](loc0: u64)
32StLoc[11](loc10: u64)
B7:
33CopyLoc[9](loc8: u64)
34CopyLoc[11](loc10: u64)
35Lt
36BrFalse(72)
B8:
37CopyLoc[9](loc8: u64)
38StLoc[8](loc7: u64)
39CopyLoc[13](loc12: &vector<u256>)
40MoveLoc[8](loc7: u64)
41VecImmBorrow(1)
42StLoc[6](loc5: &u256)
43MutBorrowLoc[10](loc9: vector<vector<u8>>)
44StLoc[3](loc2: &mut vector<vector<u8>>)
45MoveLoc[6](loc5: &u256)
46StLoc[7](loc6: &u256)
47CopyLoc[7](loc6: &u256)
48ReadRef
49LdConst[3](u256: 2188..)
50Lt
51BrFalse(53)
B9:
52Branch(61)
B10:
53MoveLoc[13](loc12: &vector<u256>)
54Pop
55MoveLoc[7](loc6: &u256)
56Pop
57MoveLoc[3](loc2: &mut vector<vector<u8>>)
58Pop
59LdConst[0](u64: 0)
60Abort
B11:
61MoveLoc[7](loc6: &u256)
62Call bcs::to_bytes<u256>(&u256): vector<u8>
63StLoc[2](loc1: vector<u8>)
64MoveLoc[3](loc2: &mut vector<vector<u8>>)
65MoveLoc[2](loc1: vector<u8>)
66VecPushBack(3)
67MoveLoc[9](loc8: u64)
68LdU64(1)
69Add
70StLoc[9](loc8: u64)
71Branch(33)
B12:
72MoveLoc[13](loc12: &vector<u256>)
73Pop
74MoveLoc[10](loc9: vector<vector<u8>>)
75StLoc[5](loc4: vector<vector<u8>>)
76ImmBorrowLoc[5](loc4: vector<vector<u8>>)
77Call poseidon_bn254_internal(&vector<vector<u8>>): vector<u8>
78Call bcs::new(vector<u8>): BCS
79StLoc[4](loc3: BCS)
80MutBorrowLoc[4](loc3: BCS)
81Call bcs::peel_u256(&mut BCS): u256
82Ret
}
native poseidon_bn254_internal(Arg0: &vector<vector<u8>>): vector<u8>;
Constants [
0 => u64: 0
1 => u64: 1
2 => u64: 2
3 => u256: 21888242871839275222246405745257275088548364400416034343698204186575808495617
4 => u64: 16
5 => vector<vector<u8>>: 00
]
}