PathrockNetwork Gno Explorer
HomeBlocksTransactionsRealmsPackagesValidatorsAnalytics

PathrockNetwork Gno Explorer — an independent explorer for Gno.land Mainnet (gnoland-1), operated by PathrockNetwork. Not an official Gno.land service.

gnowebarchive RPC

gno.land/p/leon/ctg/v0

Package
Open in gnoweb ↗

Overview

Kind
Pure package
Name
v0
Namespace
leon / ctg
Files
3 (gnomod.toml)
Exported functions
n/a — not supported for pure packages by the node (vm/qfuncs)
Module
gno.land/p/leon/ctg/v0
gno
0.9

Files (3)

  • gnomod.tomltoml
  • converter.gnogno
  • converter_test.gnogno
converter.gnogno
1// Package ctg is a simple utility package with helpers2// for bech32 address conversions.3package ctg45import (6	"crypto/bech32"78	"gno.land/p/nt/ufmt/v0"9)1011// ConvertCosmosToGno takes a Bech32 Cosmos address (prefix "cosmos")12// and returns the same address re-encoded with the gno.land prefix "g".13func ConvertCosmosToGno(addr string) (address, error) {14	prefix, decoded, err := bech32.Decode(addr)15	if err != nil {16		return "", ufmt.Errorf("bech32 decode failed: %v", err)17	}1819	if prefix != "cosmos" {20		return "", ufmt.Errorf("expected a cosmos address, got prefix %q", prefix)21	}2223	return address(mustEncode("g", decoded)), nil24}2526func mustEncode(hrp string, data []byte) string {27	enc, err := bech32.Encode(hrp, data)28	if err != nil {29		panic(err)30	}31	return enc32}3334// ConvertAnyToGno converts *any* valid Bech32 address to its gno.land form35// by preserving the underlying payload but replacing the prefix with "g".36// No prefix check is performed; invalid Bech32 input still returns an error.37func ConvertAnyToGno(addr string) (address, error) {38	_, decoded, err := bech32.Decode(addr)39	if err != nil {40		return "", ufmt.Errorf("bech32 decode failed: %v", err)41	}42	return address(mustEncode("g", decoded)), nil43}4445// ConvertGnoToAny converts a gno.land address (prefixed with "g") to another Bech3246// prefix given by prefix. The function ensures the source address really47// is a gno.land address before proceeding.48//49// Example:50//51//	cosmosAddr, _ := ConvertGnoToAny("cosmos", "g1k98jx9...")52//	fmt.Println(cosmosAddr) // → cosmos1....53func ConvertGnoToAny(prefix string, addr address) (string, error) {54	origPrefix, decoded, err := bech32.Decode(string(addr))55	if err != nil {56		return "", ufmt.Errorf("bech32 decode failed: %v", err)57	}58	if origPrefix != "g" {59		return "", ufmt.Errorf("expected a gno address but got prefix %q", origPrefix)60	}61	return mustEncode(prefix, decoded), nil62}63

Functions

not supported for pure packages by the node (vm/qfuncs)

Signatures reconstructed verbatim from vm/qfuncs — interface params keep their inline definitions.