#quota #rate-limiting #limit #substrate #limiter #allowlist #module

no-std orml-rate-limit

Provides way to config rate limiter for limit some operation

6 releases (1 stable)

1.0.0 Aug 1, 2024
0.13.0 Jun 26, 2024
0.12.0 Jun 3, 2024
0.10.0 Apr 17, 2024
0.8.0 Mar 18, 2024

#6 in #quota

39 downloads per month

Apache-2.0 and GPL-3.0-only

135KB
3K SLoC

open-runtime-module-library

Crates.io codecov GitHub

The Open Runtime Module Library (ORML) is a community maintained collection of Substrate runtime modules.

Runtime Modules Overview

Utility

  • auction
    • Implements a generalized auction interface, used by Acala for liquidation auctions.
  • authority
    • Allow more advanced permission configuration such as timelock for governance actions.
  • gradually-update
    • Provides way to adjust numeric parameter gradually over a period of time.
  • oracle
    • Allow offchain oracle providers to feed data to be consumed by onchain pallets.
  • rewards
    • Implements ability to calculate and distribute token staking rewards.
  • traits
    • Implements various utility traits including BasicCurrency, MultiCurrency, Auction and more. Used by other ORML pallets.

Tokens

  • asset-registry
    • Register asset / token metadata including name, decimals, and XCM Location
    • Partially based on the Acala’s asset-registry pallet, which includes some Acala specific code (e.g. EVM+) so not suitable for other teams.
  • currencies
    • Provide an unified interface to combine pallet-balances and orml-tokens
  • nft
    • Provide a non-fungible-token implementation
  • payments
    • This pallet allows users to create secure reversible payments that keep funds locked in a merchant’s account until the off-chain goods are confirmed to be received. Each payment gets assigned its own judge that can help resolve any disputes between the two parties.
  • tokens
    • Implements fungible tokens pallet with compatibility with Substrate tokens abstractions
  • vesting
    • Provides scheduled balance locking mechanism, in a graded vesting way.

XCM

  • xcm-support
    • Provides supporting traits, types and implementations, to support cross-chain message(XCM) integration with ORML modules.
  • xcm
    • Provides a way for governance body to dispatch XCM.
  • xtokens
    • Provide crosschain token transfer functionality.
    • Used by multiple parachains for their XCM token transfer implementation.

Benchmarking

  • benchmarking
    • Fork of frame-benchmarking in Substrate to allow implement runtime specific benchmarks

Example

Checkout orml-workshop for example usage.

Development

Makefile targets

  • make check
    • Type check the code, without std feature, excluding tests.
  • make check-tests
    • Type check the code, with std feature, including tests.
  • make test
    • Run tests.

Cargo.toml

ORML use Cargo.dev.toml to avoid workspace conflicts with project cargo config. To use cargo commands in ORML workspace, create Cargo.toml by running

  • cp Cargo.dev.toml Cargo.toml, or
  • make Cargo.toml, or
  • change the command to make dev-check etc which does the copy. (For the full list of make commands, check Makefile)

Web3 Foundation Grant Project

ORML is part of the bigger Open-Web3-Stack initiative, that is currently under a General Grant from Web3 Foundation. See Application details here. The 1st milestone has been delivered.

Projects using ORML

In alphabetical order


lib.rs:

Rate Limit

A module to provide rate limit for arbitrary type Key and integer type Value

Overview

This module is a utility to provide rate limiter for arbitrary type Key and integer type Value, which can config limit rule to produce quota and consume quota, and expose quota consuming checking and whitelist that can bypass checks.

Dependencies

~20–34MB
~564K SLoC