Module bridge::limiter
- Struct TransferLimiter
- Struct TransferRecord
- Struct UpdateRouteLimitEvent
- Constants
- Function get_route_limit
- Function new
- Function check_and_record_sending_transfer
- Function update_route_limit
- Function current_hour_since_epoch
- Function adjust_transfer_records
- Function initial_transfer_limits
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
Click to open
Fields
- transfer_limits: sui::vec_map::VecMap<bridge::chain_ids::BridgeRoute, u64>
- transfer_records: sui::vec_map::VecMap<bridge::chain_ids::BridgeRoute, bridge::limiter::TransferRecord>
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>