Skip to content

Releases: icdevsorg/icrc1.mo

ReRelease

24 Feb 20:44

Choose a tag to compare

[0.2.0] - 2026-02-24

Added

  • Mixin pattern (mo:icrc1-mo/ICRC1/mixin) for automatic endpoint generation using persistent actor class and Class+
  • Inspect module (mo:icrc1-mo/ICRC1/Inspect) for cycle drain protection with two-layer defense:
    • inspect* functions (return Bool) for use in system func inspect()
    • guard* functions (trap on invalid) for inter-canister protection
    • Built-in guards in mixin for icrc1_transfer, icrc1_balance_of, icrc107_set_fee_collector, icrc21_canister_call_consent_message
    • Configurable limits via Config type and configWith() helper
  • Interface module (mo:icrc1-mo/ICRC1/Interface) with extensible before/after hooks for all ICRC-1 endpoints
  • ICRC-107 fee collector management: icrc107_set_fee_collector, icrc107_get_fee_collector with authorization via canSetFeeCollector
  • ICRC-106 index principal: icrc106_get_index_principal, set_icrc106_index_principal with authorization via canSetIndexPrincipal
  • ICRC-21 consent message support: icrc21_canister_call_consent_message with pluggable consent builders
  • ICRC-10 supported standards alias: icrc10_supported_standards mirrors icrc1_supported_standards
  • ICRC-85 Open Value Sharing integration via ovs-fixed for sustainable open-source funding
  • defaultMixinArgs() helper for ergonomic mixin configuration with with syntax
  • MixinFunctionArgs type with canTransfer, canSetFeeCollector, canSetIndexPrincipal fields
  • Init() ClassPlus-compatible initialization function
  • Complete README with mixin usage examples, inspect documentation, and API reference tables
  • Performance benchmarks for account operations and balance operations

Changed

  • Migrated to mo:core (Map, Set, List) from mo:map/mo:vector
  • Migrated to Motoko 1.1.0 with Enhanced Orthogonal Persistence (64-bit heap)
  • Removed mo:base dependency in favor of mo:core
  • Created migration v000_002_000 for state type conversions
  • Updated mops.toml to require moc = "1.1.0" toolchain

Technical Details

  • Uses persistent actor class syntax (Motoko 1.1.0+)
  • ClassPlus async initialization with ClassPlusInitializationManager
  • Star monad error handling for transfer/mint/burn operations
  • Representational Independent Hash-based deduplication
  • Automatic account pruning when exceeding max_accounts