Skip to main content

Module bridge::limiter

use bridge::chain_ids;
use bridge::treasury;
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::clock;
use sui::coin;
use sui::config;
use sui::deny_list;
use sui::dynamic_field;
use sui::dynamic_object_field;
use sui::event;
use sui::funds_accumulator;
use sui::hash;
use sui::hex;
use sui::object;
use sui::object_bag;
use sui::package;
use sui::party;
use sui::protocol_config;
use sui::table;
use sui::transfer;
use sui::tx_context;
use sui::types;
use sui::url;
use sui::vec_map;
use sui::vec_set;

Struct TransferLimiter

public struct TransferLimiter has store

Struct TransferRecord

public struct TransferRecord has store
Click to open
Fields
hour_head: u64
hour_tail: u64
per_hour_amounts: vector<u64>
total_amount: u64

Struct UpdateRouteLimitEvent

public struct UpdateRouteLimitEvent has copy, drop
Click to open
Fields
sending_chain: u8
receiving_chain: u8
new_limit: u64

Constants

const ELimitNotFoundForRoute: u64 = 0;
const MAX_TRANSFER_LIMIT: u64 = 18446744073709551615;
const USD_VALUE_MULTIPLIER: u64 = 100000000;

Function get_route_limit

public fun get_route_limit(self: &bridge::limiter::TransferLimiter, route: &bridge::chain_ids::BridgeRoute): u64

Function new

public(package) fun new(): bridge::limiter::TransferLimiter

Function check_and_record_sending_transfer

public(package) fun check_and_record_sending_transfer<T>(self: &mut bridge::limiter::TransferLimiter, treasury: &bridge::treasury::BridgeTreasury, clock: &sui::clock::Clock, route: bridge::chain_ids::BridgeRoute, amount: u64): bool

Function update_route_limit

public(package) fun update_route_limit(self: &mut bridge::limiter::TransferLimiter, route: &bridge::chain_ids::BridgeRoute, new_usd_limit: u64)

Function current_hour_since_epoch

fun current_hour_since_epoch(clock: &sui::clock::Clock): u64

Function adjust_transfer_records

fun adjust_transfer_records(self: &mut bridge::limiter::TransferRecord, current_hour_since_epoch: u64)

Function initial_transfer_limits

fun initial_transfer_limits(): sui::vec_map::VecMap<bridge::chain_ids::BridgeRoute, u64>