add docs and make prefix a const (#7926)
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
This commit is contained in:
parent
ddc777cf6f
commit
0b1a3eed39
@ -361,7 +361,9 @@ func (k Keeper) refundPacketToken(ctx sdk.Context, packet channeltypes.Packet, d
|
||||
// DenomPathFromHash returns the full denomination path prefix from an ibc denom with a hash
|
||||
// component.
|
||||
func (k Keeper) DenomPathFromHash(ctx sdk.Context, denom string) (string, error) {
|
||||
hexHash := denom[4:]
|
||||
// trim the denomination prefix, by default "ibc/"
|
||||
hexHash := denom[len(types.DenomPrefix+"/"):]
|
||||
|
||||
hash, err := types.ParseHexHash(hexHash)
|
||||
if err != nil {
|
||||
return "", sdkerrors.Wrap(types.ErrInvalidDenomForTransfer, err.Error())
|
||||
|
||||
@ -109,3 +109,9 @@ Cosmos Hub for the `uatom`). Sending a token back to the same chain across a dif
|
||||
**not** move the token back across its timeline. If a channel in the chain history closes before the
|
||||
token can be sent back across that channel, then the token will not be returnable to its original
|
||||
form.
|
||||
|
||||
|
||||
## Security Considerations
|
||||
|
||||
For safety, no other module must be capable of minting tokens with the `ibc/` prefix. The IBC
|
||||
transfer module needs a subset of the denomination space that only it can create tokens in.
|
||||
|
||||
@ -25,6 +25,9 @@ const (
|
||||
|
||||
// QuerierRoute is the querier route for IBC transfer
|
||||
QuerierRoute = ModuleName
|
||||
|
||||
// DenomPrefix is the prefix used for internal SDK coin representation.
|
||||
DenomPrefix = "ibc"
|
||||
)
|
||||
|
||||
var (
|
||||
|
||||
@ -54,7 +54,7 @@ func (dt DenomTrace) GetPrefix() string {
|
||||
// 'ibc/{hash(tracePath + baseDenom)}'. If the trace is empty, it will return the base denomination.
|
||||
func (dt DenomTrace) IBCDenom() string {
|
||||
if dt.Path != "" {
|
||||
return fmt.Sprintf("ibc/%s", dt.Hash())
|
||||
return fmt.Sprintf("%s/%s", DenomPrefix, dt.Hash())
|
||||
}
|
||||
return dt.BaseDenom
|
||||
}
|
||||
@ -172,8 +172,8 @@ func ValidateIBCDenom(denom string) error {
|
||||
|
||||
switch {
|
||||
case strings.TrimSpace(denom) == "",
|
||||
len(denomSplit) == 1 && denomSplit[0] == "ibc",
|
||||
len(denomSplit) == 2 && (denomSplit[0] != "ibc" || strings.TrimSpace(denomSplit[1]) == ""):
|
||||
len(denomSplit) == 1 && denomSplit[0] == DenomPrefix,
|
||||
len(denomSplit) == 2 && (denomSplit[0] != DenomPrefix || strings.TrimSpace(denomSplit[1]) == ""):
|
||||
return sdkerrors.Wrapf(ErrInvalidDenomForTransfer, "denomination should be prefixed with the format 'ibc/{hash(trace + \"/\" + %s)}'", denom)
|
||||
|
||||
case denomSplit[0] == denom && strings.TrimSpace(denom) != "":
|
||||
|
||||
Loading…
Reference in New Issue
Block a user