Skip to main content

Module bridge::committee

use bridge::chain_ids;
use bridge::crypto;
use bridge::message;
use bridge::message_types;
use std::address;
use std::ascii;
use std::bcs;
use std::internal;
use std::option;
use std::string;
use std::type_name;
use std::u128;
use std::u64;
use std::vector;
use sui::accumulator;
use sui::accumulator_settlement;
use sui::address;
use sui::bag;
use sui::balance;
use sui::bcs;
use sui::coin;
use sui::config;
use sui::deny_list;
use sui::dynamic_field;
use sui::dynamic_object_field;
use sui::ecdsa_k1;
use sui::event;
use sui::funds_accumulator;
use sui::hash;
use sui::hex;
use sui::object;
use sui::party;
use sui::priority_queue;
use sui::protocol_config;
use sui::sui;
use sui::table;
use sui::table_vec;
use sui::transfer;
use sui::tx_context;
use sui::types;
use sui::url;
use sui::vec_map;
use sui::vec_set;
use sui::versioned;
use sui_system::stake_subsidy;
use sui_system::staking_pool;
use sui_system::storage_fund;
use sui_system::sui_system;
use sui_system::sui_system_state_inner;
use sui_system::validator;
use sui_system::validator_cap;
use sui_system::validator_set;
use sui_system::validator_wrapper;
use sui_system::voting_power;

Struct BlocklistValidatorEvent

public struct BlocklistValidatorEvent has copy, drop
Click to open
Fields
blocklisted: bool
public_keys: vector<vector<u8>>

Struct BridgeCommittee

public struct BridgeCommittee has store
Click to open
Fields
members: sui::vec_map::VecMap<vector<u8>, bridge::committee::CommitteeMember>
member_registrations: sui::vec_map::VecMap<address, bridge::committee::CommitteeMemberRegistration>
last_committee_update_epoch: u64

Struct CommitteeUpdateEvent

public struct CommitteeUpdateEvent has copy, drop
Click to open
Fields
members: sui::vec_map::VecMap<vector<u8>, bridge::committee::CommitteeMember>
stake_participation_percentage: u64

Struct CommitteeMemberUrlUpdateEvent

public struct CommitteeMemberUrlUpdateEvent has copy, drop
Click to open
Fields
member: vector<u8>
new_url: vector<u8>

Struct CommitteeMember

public struct CommitteeMember has copy, drop, store
Click to open
Fields
sui_address: address
The Sui Address of the validator
bridge_pubkey_bytes: vector<u8>
The public key bytes of the bridge key
voting_power: u64
Voting power, values are voting power in the scale of 10000.
http_rest_url: vector<u8>
The HTTP REST URL the member's node listens to it looks like b'https://127.0.0.1:9191'
blocklisted: bool
If this member is blocklisted

Struct CommitteeMemberRegistration

public struct CommitteeMemberRegistration has copy, drop, store
Click to open
Fields
sui_address: address
The Sui Address of the validator
bridge_pubkey_bytes: vector<u8>
The public key bytes of the bridge key
http_rest_url: vector<u8>
The HTTP REST URL the member's node listens to it looks like b'https://127.0.0.1:9191'

Constants

const ESignatureBelowThreshold: u64 = 0;
const EDuplicatedSignature: u64 = 1;
const EInvalidSignature: u64 = 2;
const ENotSystemAddress: u64 = 3;
const EValidatorBlocklistContainsUnknownKey: u64 = 4;
const ESenderNotActiveValidator: u64 = 5;
const EInvalidPubkeyLength: u64 = 6;
const ECommitteeAlreadyInitiated: u64 = 7;
const EDuplicatePubkey: u64 = 8;
const ESenderIsNotInBridgeCommittee: u64 = 9;
const SUI_MESSAGE_PREFIX: vector<u8> = vector[83, 85, 73, 95, 66, 82, 73, 68, 71, 69, 95, 77, 69, 83, 83, 65, 71, 69];
const ECDSA_COMPRESSED_PUBKEY_LENGTH: u64 = 33;

Function verify_signatures

public fun verify_signatures(self: &bridge::committee::BridgeCommittee, message: bridge::message::BridgeMessage, signatures: vector<vector<u8>>)

Function create

public(package) fun create(ctx: &sui::tx_context::TxContext): bridge::committee::BridgeCommittee

Function register

public(package) fun register(self: &mut bridge::committee::BridgeCommittee, system_state: &mut sui_system::sui_system::SuiSystemState, bridge_pubkey_bytes: vector<u8>, http_rest_url: vector<u8>, ctx: &sui::tx_context::TxContext)

Function try_create_next_committee

public(package) fun try_create_next_committee(self: &mut bridge::committee::BridgeCommittee, active_validator_voting_power: sui::vec_map::VecMap<address, u64>, min_stake_participation_percentage: u64, ctx: &sui::tx_context::TxContext)

Function execute_blocklist

public(package) fun execute_blocklist(self: &mut bridge::committee::BridgeCommittee, blocklist: bridge::message::Blocklist)

Function committee_members

public(package) fun committee_members(self: &bridge::committee::BridgeCommittee): &sui::vec_map::VecMap<vector<u8>, bridge::committee::CommitteeMember>

Function update_node_url

public(package) fun update_node_url(self: &mut bridge::committee::BridgeCommittee, new_url: vector<u8>, ctx: &sui::tx_context::TxContext)

Function check_uniqueness_bridge_keys

fun check_uniqueness_bridge_keys(self: &bridge::committee::BridgeCommittee, bridge_pubkey_bytes: vector<u8>)