Module bridge::committee
- Struct BlocklistValidatorEvent
- Struct BridgeCommittee
- Struct CommitteeUpdateEvent
- Struct CommitteeMemberUrlUpdateEvent
- Struct CommitteeMember
- Struct CommitteeMemberRegistration
- Constants
- Function verify_signatures
- Function create
- Function register
- Function try_create_next_committee
- Function execute_blocklist
- Function committee_members
- Function update_node_url
- Function check_uniqueness_bridge_keys
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>)