Skip to main content

Module bridge::message

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
Click to open
Fields

Struct BridgeMessageKey​

public struct BridgeMessageKey has copy, drop, store
Click to open
Fields
source_chain: u8
message_type: u8
bridge_seq_num: u64

Struct TokenTransferPayload​

public struct TokenTransferPayload has drop
Click to open
Fields
sender_address: vector<u8>
target_chain: u8
target_address: vector<u8>
token_type: u8
amount: u64

Struct TokenTransferPayloadV2​

public struct TokenTransferPayloadV2 has drop
Click to open
Fields
sender_address: vector<u8>
target_chain: u8
target_address: vector<u8>
token_type: u8
amount: u64
timestamp_ms: u64

Struct EmergencyOp​

public struct EmergencyOp has drop
Click to open
Fields
op_type: u8

Struct Blocklist​

public struct Blocklist has drop
Click to open
Fields
blocklist_type: u8
validator_eth_addresses: vector<vector<u8>>

Struct UpdateBridgeLimit​

public struct UpdateBridgeLimit has drop
Click to open
Fields
receiving_chain: u8
sending_chain: u8
limit: u64

Struct UpdateAssetPrice​

public struct UpdateAssetPrice has drop
Click to open
Fields
token_id: u8
new_price: u64

Struct AddTokenOnSui​

public struct AddTokenOnSui has drop
Click to open
Fields
native_token: bool
token_ids: vector<u8>
token_type_names: vector<std::ascii::String>
token_prices: vector<u64>

Struct ParsedTokenTransferMessage​

public struct ParsedTokenTransferMessage has drop
Click to open
Fields

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<u8>

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<u8>, target_chain: u8, target_address: vector<u8>, 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<u8>, target_chain: u8, target_address: vector<u8>, 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<vector<u8>>): 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] [token_type_name:vector] [token_prices:vector]

public fun create_add_tokens_on_sui_message(source_chain: u8, seq_num: u64, native_token: bool, token_ids: vector<u8>, type_names: vector<std::ascii::String>, token_prices: vector<u64>): 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<u8>

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<u8>

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<vector<u8>>

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<u8>

Function token_type_names​

public fun token_type_names(self: &bridge::message::AddTokenOnSui): vector<std::ascii::String>

Function token_prices​

public fun token_prices(self: &bridge::message::AddTokenOnSui): vector<u64>

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<u8>): vector<u8>

Function peel_u64_be​

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