# Module bridge::message

*[Documentation index](/llms.txt) · [Full index](/llms-full.txt)*

```
use bridge::chain_ids;
use bridge::message_types;
use std::ascii;
use std::bcs;
use std::option;
use std::string;
use std::vector;
use sui::address;
use sui::bcs;
use sui::hex;
```

## Struct BridgeMessage

```
public struct BridgeMessage has copy, drop, store
```

**Fields**

**message_type: u8**

**message_version: u8**

**seq_num: u64**

**source_chain: u8**

**payload: vector&lt;u8&gt;**

## Struct BridgeMessageKey

```
public struct BridgeMessageKey has copy, drop, store
```

**Fields**

**source_chain: u8**

**message_type: u8**

**bridge_seq_num: u64**

## Struct TokenTransferPayload

```
public struct TokenTransferPayload has drop
```

**Fields**

**sender_address: vector&lt;u8&gt;**

**target_chain: u8**

**target_address: vector&lt;u8&gt;**

**token_type: u8**

**amount: u64**

## Struct TokenTransferPayloadV2

```
public struct TokenTransferPayloadV2 has drop
```

**Fields**

**sender_address: vector&lt;u8&gt;**

**target_chain: u8**

**target_address: vector&lt;u8&gt;**

**token_type: u8**

**amount: u64**

**timestamp_ms: u64**

## Struct EmergencyOp

```
public struct EmergencyOp has drop
```

**Fields**

**op_type: u8**

## Struct Blocklist

```
public struct Blocklist has drop
```

**Fields**

**blocklist_type: u8**

**validator_eth_addresses: vector&lt;vector&lt;u8&gt;&gt;**

## Struct UpdateBridgeLimit

```
public struct UpdateBridgeLimit has drop
```

**Fields**

**receiving_chain: u8**

**sending_chain: u8**

**limit: u64**

## Struct UpdateAssetPrice

```
public struct UpdateAssetPrice has drop
```

**Fields**

**token_id: u8**

**new_price: u64**

## Struct AddTokenOnSui

```
public struct AddTokenOnSui has drop
```

**Fields**

**native_token: bool**

**token_ids: vector&lt;u8&gt;**

**token_type_names: vector&lt;std::ascii::String&gt;**

**token_prices: vector&lt;u64&gt;**

## Struct ParsedTokenTransferMessage

```
public struct ParsedTokenTransferMessage has drop
```

**Fields**

**message_version: u8**

**seq_num: u64**

**source_chain: u8**

**payload: vector&lt;u8&gt;**

**parsed_payload: bridge::message::TokenTransferPayload**

## Constants

```
const CURRENT_MESSAGE_VERSION: u8 = 1;
```

```
const TOKEN_TRANSFER_MESSAGE_VERSION_V2: u8 = 2;
```

```
const ECDSA_ADDRESS_LENGTH: u64 = 20;
```

```
const ETrailingBytes: u64 = 0;
```

```
const EInvalidAddressLength: u64 = 1;
```

```
const EEmptyList: u64 = 2;
```

```
const EInvalidMessageType: u64 = 3;
```

```
const EInvalidEmergencyOpType: u64 = 4;
```

```
const EInvalidPayloadLength: u64 = 5;
```

```
const EMustBeTokenMessage: u64 = 6;
```

```
const EInvalidMessageVersion: u64 = 7;
```

```
const PAUSE: u8 = 0;
```

```
const UNPAUSE: u8 = 1;
```

## Function extract_token_bridge_payload

```
public fun extract_token_bridge_payload(message: &bridge::message::BridgeMessage): bridge::message::TokenTransferPayload
```

## Function extract_token_bridge_payload_v2

```
public fun extract_token_bridge_payload_v2(message: &bridge::message::BridgeMessage): bridge::message::TokenTransferPayloadV2
```

## Function to_token_payload_v1

```
public(package) fun to_token_payload_v1(self: &bridge::message::TokenTransferPayloadV2): bridge::message::TokenTransferPayload
```

## Function extract_emergency_op_payload

Emergency op payload is just a single byte

```
public fun extract_emergency_op_payload(message: &bridge::message::BridgeMessage): bridge::message::EmergencyOp
```

## Function extract_blocklist_payload

```
public fun extract_blocklist_payload(message: &bridge::message::BridgeMessage): bridge::message::Blocklist
```

## Function extract_update_bridge_limit

```
public fun extract_update_bridge_limit(message: &bridge::message::BridgeMessage): bridge::message::UpdateBridgeLimit
```

## Function extract_update_asset_price

```
public fun extract_update_asset_price(message: &bridge::message::BridgeMessage): bridge::message::UpdateAssetPrice
```

## Function extract_add_tokens_on_sui

```
public fun extract_add_tokens_on_sui(message: &bridge::message::BridgeMessage): bridge::message::AddTokenOnSui
```

## Function serialize_message

```
public fun serialize_message(message: bridge::message::BridgeMessage): vector&lt;u8&gt;
```

## Function create_token_bridge_message

Token Transfer Message Format:
[message_type: u8]
[version:u8]
[nonce:u64]
[source_chain: u8]
[sender_address_length:u8]
[sender_address: byte[]]
[target_chain:u8]
[target_address_length:u8]
[target_address: byte[]]
[token_type:u8]
[amount:u64]

```
public fun create_token_bridge_message(source_chain: u8, seq_num: u64, sender_address: vector&lt;u8&gt;, target_chain: u8, target_address: vector&lt;u8&gt;, token_type: u8, amount: u64): bridge::message::BridgeMessage
```

## Function create_token_bridge_message_v2

Token Transfer Message Format:
[message_type: u8]
[version:u8]
[nonce:u64]
[source_chain: u8]
[sender_address_length:u8]
[sender_address: byte[]]
[target_chain:u8]
[target_address_length:u8]
[target_address: byte[]]
[token_type:u8]
[amount:u64]
[timestamp:u64]

```
public fun create_token_bridge_message_v2(source_chain: u8, seq_num: u64, sender_address: vector&lt;u8&gt;, target_chain: u8, target_address: vector&lt;u8&gt;, token_type: u8, amount: u64, timestamp: u64): bridge::message::BridgeMessage
```

## Function create_emergency_op_message

Emergency Op Message Format:
[message_type: u8]
[version:u8]
[nonce:u64]
[chain_id: u8]
[op_type: u8]

```
public fun create_emergency_op_message(source_chain: u8, seq_num: u64, op_type: u8): bridge::message::BridgeMessage
```

## Function create_blocklist_message

Blocklist Message Format:
[message_type: u8]
[version:u8]
[nonce:u64]
[chain_id: u8]
[blocklist_type: u8]
[validator_length: u8]
[validator_ecdsa_addresses: byte[][]]

```
public fun create_blocklist_message(source_chain: u8, seq_num: u64, blocklist_type: u8, validator_ecdsa_addresses: vector&lt;vector&lt;u8&gt;&gt;): bridge::message::BridgeMessage
```

## Function create_update_bridge_limit_message

Update bridge limit Message Format:
[message_type: u8]
[version:u8]
[nonce:u64]
[receiving_chain_id: u8]
[sending_chain_id: u8]
[new_limit: u64]

```
public fun create_update_bridge_limit_message(receiving_chain: u8, seq_num: u64, sending_chain: u8, new_limit: u64): bridge::message::BridgeMessage
```

## Function create_update_asset_price_message

Update asset price message
[message_type: u8]
[version:u8]
[nonce:u64]
[chain_id: u8]
[token_id: u8]
[new_price:u64]

```
public fun create_update_asset_price_message(token_id: u8, source_chain: u8, seq_num: u64, new_price: u64): bridge::message::BridgeMessage
```

## Function create_add_tokens_on_sui_message

Update Sui token message
[message_type:u8]
[version:u8]
[nonce:u64]
[chain_id: u8]
[native_token:bool]
[token_ids:vector<u8>]
[token_type_name:vector<String>]
[token_prices:vector<u64>]

```
public fun create_add_tokens_on_sui_message(source_chain: u8, seq_num: u64, native_token: bool, token_ids: vector&lt;u8&gt;, type_names: vector&lt;std::ascii::String&gt;, token_prices: vector&lt;u64&gt;): bridge::message::BridgeMessage
```

## Function create_key

```
public fun create_key(source_chain: u8, message_type: u8, bridge_seq_num: u64): bridge::message::BridgeMessageKey
```

## Function key

```
public fun key(self: &bridge::message::BridgeMessage): bridge::message::BridgeMessageKey
```

## Function message_version

```
public fun message_version(self: &bridge::message::BridgeMessage): u8
```

## Function message_type

```
public fun message_type(self: &bridge::message::BridgeMessage): u8
```

## Function seq_num

```
public fun seq_num(self: &bridge::message::BridgeMessage): u64
```

## Function source_chain

```
public fun source_chain(self: &bridge::message::BridgeMessage): u8
```

## Function payload

```
public fun payload(self: &bridge::message::BridgeMessage): vector&lt;u8&gt;
```

## Function token_target_chain

```
public fun token_target_chain(self: &bridge::message::TokenTransferPayload): u8
```

## Function token_target_address

```
public fun token_target_address(self: &bridge::message::TokenTransferPayload): vector&lt;u8&gt;
```

## Function token_type

```
public fun token_type(self: &bridge::message::TokenTransferPayload): u8
```

## Function token_amount

```
public fun token_amount(self: &bridge::message::TokenTransferPayload): u64
```

## Function timestamp_ms

```
public fun timestamp_ms(self: &bridge::message::TokenTransferPayloadV2): u64
```

## Function emergency_op_type

```
public fun emergency_op_type(self: &bridge::message::EmergencyOp): u8
```

## Function blocklist_type

```
public fun blocklist_type(self: &bridge::message::Blocklist): u8
```

## Function blocklist_validator_addresses

```
public fun blocklist_validator_addresses(self: &bridge::message::Blocklist): &vector&lt;vector&lt;u8&gt;&gt;
```

## Function update_bridge_limit_payload_sending_chain

```
public fun update_bridge_limit_payload_sending_chain(self: &bridge::message::UpdateBridgeLimit): u8
```

## Function update_bridge_limit_payload_receiving_chain

```
public fun update_bridge_limit_payload_receiving_chain(self: &bridge::message::UpdateBridgeLimit): u8
```

## Function update_bridge_limit_payload_limit

```
public fun update_bridge_limit_payload_limit(self: &bridge::message::UpdateBridgeLimit): u64
```

## Function update_asset_price_payload_token_id

```
public fun update_asset_price_payload_token_id(self: &bridge::message::UpdateAssetPrice): u8
```

## Function update_asset_price_payload_new_price

```
public fun update_asset_price_payload_new_price(self: &bridge::message::UpdateAssetPrice): u64
```

## Function is_native

```
public fun is_native(self: &bridge::message::AddTokenOnSui): bool
```

## Function token_ids

```
public fun token_ids(self: &bridge::message::AddTokenOnSui): vector&lt;u8&gt;
```

## Function token_type_names

```
public fun token_type_names(self: &bridge::message::AddTokenOnSui): vector&lt;std::ascii::String&gt;
```

## Function token_prices

```
public fun token_prices(self: &bridge::message::AddTokenOnSui): vector&lt;u64&gt;
```

## Function emergency_op_pause

```
public fun emergency_op_pause(): u8
```

## Function emergency_op_unpause

```
public fun emergency_op_unpause(): u8
```

## Function required_voting_power

Return the required signature threshold for the message, values are voting power in the scale of 10000

```
public fun required_voting_power(self: &bridge::message::BridgeMessage): u64
```

## Function to_parsed_token_transfer_message

```
public fun to_parsed_token_transfer_message(message: &bridge::message::BridgeMessage): bridge::message::ParsedTokenTransferMessage
```

## Function token_transfer_message_version

```
public fun token_transfer_message_version(): u8
```

## Function reverse_bytes

```
fun reverse_bytes(bytes: vector&lt;u8&gt;): vector&lt;u8&gt;
```

## Function peel_u64_be

```
fun peel_u64_be(bcs: &mut sui::bcs::BCS): u64
```
