axelar-cgp-sui

Module relayer_discovery::relayer_discovery_v0

use relayer_discovery::events;
use relayer_discovery::transaction;
use std::address;
use std::ascii;
use std::bcs;
use std::option;
use std::string;
use std::type_name;
use std::vector;
use sui::address;
use sui::bcs;
use sui::dynamic_field;
use sui::event;
use sui::hex;
use sui::object;
use sui::table;
use sui::tx_context;
use sui::vec_set;
use version_control::version_control;

Struct RelayerDiscovery_v0

A central shared object that stores discovery configuration for the Relayer. The Relayer will use this object to discover and execute the transactions when a message is targeted at specific channel.

public struct RelayerDiscovery_v0 has store
Fields
configurations: sui::table::Table<sui::object::ID, relayer_discovery::transaction::Transaction>
A map of channel IDs to the target that needs to be executed by the relayer. There can be only one configuration per channel.
version_control: version_control::version_control::VersionControl
An object to manage version control.

Constants

#[error]
const EChannelNotFound: vector<u8> = b"channel not found";

Function new

public(package) fun new(version_control: version_control::version_control::VersionControl, ctx: &mut sui::tx_context::TxContext): relayer_discovery::relayer_discovery_v0::RelayerDiscovery_v0
Implementation
public(package) fun new(version_control: VersionControl, ctx: &mut TxContext): RelayerDiscovery_v0 {
    RelayerDiscovery_v0 {
        configurations: table::new<ID, Transaction>(ctx),
        version_control,
    }
}

Function set_transaction

public(package) fun set_transaction(self: &mut relayer_discovery::relayer_discovery_v0::RelayerDiscovery_v0, id: sui::object::ID, transaction: relayer_discovery::transaction::Transaction)
Implementation
public(package) fun set_transaction(self: &mut RelayerDiscovery_v0, id: ID, transaction: Transaction) {
    if (self.configurations.contains(id)) {
        self.configurations.remove(id);
    };
    self.configurations.add(id, transaction);
    events::transaction_registered(id, transaction);
}

Function remove_transaction

public(package) fun remove_transaction(self: &mut relayer_discovery::relayer_discovery_v0::RelayerDiscovery_v0, id: sui::object::ID): relayer_discovery::transaction::Transaction
Implementation
public(package) fun remove_transaction(self: &mut RelayerDiscovery_v0, id: ID): Transaction {
    assert!(self.configurations.contains(id), EChannelNotFound);
    let tx = self.configurations.remove(id);
    events::transaction_removed(id);
    tx
}

Function get_transaction

public(package) fun get_transaction(self: &relayer_discovery::relayer_discovery_v0::RelayerDiscovery_v0, id: sui::object::ID): relayer_discovery::transaction::Transaction
Implementation
public(package) fun get_transaction(self: &RelayerDiscovery_v0, id: ID): Transaction {
    assert!(self.configurations.contains(id), EChannelNotFound);
    self.configurations[id]
}

Function version_control

public(package) fun version_control(self: &relayer_discovery::relayer_discovery_v0::RelayerDiscovery_v0): &version_control::version_control::VersionControl
Implementation
public(package) fun version_control(self: &RelayerDiscovery_v0): &VersionControl {
    &self.version_control
}

Function allow_function

public(package) fun allow_function(self: &mut relayer_discovery::relayer_discovery_v0::RelayerDiscovery_v0, version: u64, function_name: std::ascii::String)
Implementation
public(package) fun allow_function(self: &mut RelayerDiscovery_v0, version: u64, function_name: String) {
    self.version_control.allow_function(version, function_name);
}

Function disallow_function

public(package) fun disallow_function(self: &mut relayer_discovery::relayer_discovery_v0::RelayerDiscovery_v0, version: u64, function_name: std::ascii::String)
Implementation
public(package) fun disallow_function(self: &mut RelayerDiscovery_v0, version: u64, function_name: String) {
    self.version_control.disallow_function(version, function_name);
}