Supporting Multiple Standards
type SendManagerKeeper interface {
SendCoinWithAliasRouting(ctx sdk.Context, fromAddressAcc sdk.AccAddress, toAddressAcc sdk.AccAddress, coin *sdk.Coin) error
SendCoinsWithAliasRouting(ctx sdk.Context, fromAddressAcc sdk.AccAddress, toAddressAcc sdk.AccAddress, coins sdk.Coins) error
FundCommunityPoolWithAliasRouting(ctx sdk.Context, fromAddressAcc sdk.AccAddress, coins sdk.Coins) error
SpendFromCommunityPoolWithAliasRouting(ctx sdk.Context, toAddressAcc sdk.AccAddress, coins sdk.Coins) error
SendCoinsFromModuleToAccountWithAliasRouting(ctx sdk.Context, moduleName string, toAddressAcc sdk.AccAddress, coins sdk.Coins) error
SendCoinsFromAccountToModuleWithAliasRouting(ctx sdk.Context, fromAddressAcc sdk.AccAddress, moduleName string, coins sdk.Coins) error
GetBalanceWithAliasRouting(ctx sdk.Context, address sdk.AccAddress, denom string) (sdk.Coin, error)
}How It Works
Pattern Matching
// Example: denom = "badgeslp:1:utoken"
func (k Keeper) getRouterForDenom(denom string) (types.AliasDenomRouter, bool) {
// Check registered prefixes in order (e.g., ["badgeslp:", "badges:"])
for _, prefix := range k.registeredPrefixes {
// Does "badgeslp:1:utoken" start with "badgeslp:"? Yes!
if strings.HasPrefix(denom, prefix) {
// Return the router registered for this prefix
return k.prefixToRouter[prefix], true
}
}
// No prefix matched - will use bank keeper for standard coins
return nil, false
}Alias Denoms
Auto-Scan Mode
User-Level Approvals
Routing Flow
Usage
Last updated