Match an IBC voucher to its full denomination trace

Two vouchers with the same base token can follow different channels. The full trace determines the local bank denomination used for an IBC Classic voucher.

Hash the recorded path

Use an ibc-go v8-compatible TLS gRPC endpoint with reflection. Supply the local denomination trace, including its path and base denomination. Take the returned hash and prepend ibc/ when comparing with a bank balance.

grpcurl -d '{"trace":"transfer/channel-7/uatom"}' "$GRPC" ibc.applications.transfer.v1.Query/DenomHash

For transfer/channel-7/uatom and transfer/channel-19/uatom the path strings differ, so calculate two independent hashes. A registry that groups both under the same display symbol must retain both local denominations.

Verify origin separately

The hash is an identifier for the input string. To establish the origin chain, follow the channel counterparties and transfer history. A denom trace query on the receiving chain can recover a trace the transfer module knows for a given hash. github.com ibc-go Query API