PathrockNetwork Gno Explorer
HomeBlocksTransactionsRealmsPackagesValidators

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/gnoswap/utils/v1

Package
Open in gnoweb ↗

Overview

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

Files (3)

  • gnomod.tomltoml
  • codec.gnogno
  • format.gnogno
codec.gnogno
1package utils23import (4	u256 "gno.land/p/gnoswap/uint256/v1"5	"gno.land/p/nt/ufmt/v0"6)78// EncodeUint16 converts a uint16 to a fixed-width two-byte big-endian string.9//10// Parameters:11//   - value: Unsigned 16-bit integer to encode.12//13// Returns:14//   - encoded: Exactly two bytes in big-endian order; lexicographic order matches numeric order.15func EncodeUint16(value uint16) string {16	var buf [2]byte17	buf[0] = byte(value >> 8)18	buf[1] = byte(value)19	return string(buf[:])20}2122// DecodeUint16 decodes a fixed-width two-byte big-endian string.23//24// Parameters:25//   - key: Exactly two encoded bytes, with the most-significant byte first.26//27// Returns:28//   - value: The uint16 represented by key.29//30// Panics if key is not exactly two bytes long.31func DecodeUint16(key string) uint16 {32	if len(key) != 2 {33		panic(ufmt.Sprintf("invalid uint16 key length: %d", len(key)))34	}35	return uint16(key[0])<<8 | uint16(key[1])36}3738// EncodeInt32 converts an int32 to a fixed-width four-byte big-endian string.39// Flipping the sign bit makes lexicographic order match signed numeric order.40//41// Parameters:42//   - value: Signed 32-bit integer to encode.43//44// Returns:45//   - encoded: Exactly four order-preserving big-endian bytes.46func EncodeInt32(value int32) string {47	ordered := uint32(value) ^ (uint32(1) << 31)48	var buf [4]byte49	buf[0] = byte(ordered >> 24)50	buf[1] = byte(ordered >> 16)51	buf[2] = byte(ordered >> 8)52	buf[3] = byte(ordered)53	return string(buf[:])54}5556// DecodeInt32 decodes a four-byte order-preserving big-endian string.57//58// Parameters:59//   - key: Exactly four bytes produced by EncodeInt32.60//61// Returns:62//   - value: The signed int32 recovered after reversing the sign-bit transform.63//64// Panics if key is not exactly four bytes long.65func DecodeInt32(key string) int32 {66	if len(key) != 4 {67		panic(ufmt.Sprintf("invalid int32 key length: %d", len(key)))68	}69	ordered := uint32(key[0])<<24 |70		uint32(key[1])<<16 |71		uint32(key[2])<<8 |72		uint32(key[3])73	return int32(ordered ^ (uint32(1) << 31))74}7576// EncodeUint64 converts a uint64 to a fixed-width eight-byte big-endian string.77//78// Parameters:79//   - value: Unsigned 64-bit integer to encode.80//81// Returns:82//   - encoded: Exactly eight bytes in big-endian order.83func EncodeUint64(value uint64) string {84	var buf [8]byte85	buf[0] = byte(value >> 56)86	buf[1] = byte(value >> 48)87	buf[2] = byte(value >> 40)88	buf[3] = byte(value >> 32)89	buf[4] = byte(value >> 24)90	buf[5] = byte(value >> 16)91	buf[6] = byte(value >> 8)92	buf[7] = byte(value)93	return string(buf[:])94}9596// DecodeUint64 decodes a fixed-width eight-byte big-endian string.97//98// Parameters:99//   - key: Exactly eight encoded bytes, with the most-significant byte first.100//101// Returns:102//   - value: The uint64 represented by key.103//104// Panics if key is not exactly eight bytes long.105func DecodeUint64(key string) uint64 {106	if len(key) != 8 {107		panic(ufmt.Sprintf("invalid uint64 key length: %d", len(key)))108	}109	return uint64(key[0])<<56 |110		uint64(key[1])<<48 |111		uint64(key[2])<<40 |112		uint64(key[3])<<32 |113		uint64(key[4])<<24 |114		uint64(key[5])<<16 |115		uint64(key[6])<<8 |116		uint64(key[7])117}118119// EncodeUint256 converts a 256-bit unsigned integer to a fixed-width 32-byte120// big-endian string, emitting the most-significant limb first.121//122// Parameters:123//   - value: Non-nil *u256.Uint value to encode.124//125// Returns:126//   - encoded: Exactly 32 big-endian bytes representing value.127func EncodeUint256(value *u256.Uint) string {128	return EncodeUint64(value[3]) + EncodeUint64(value[2]) +129		EncodeUint64(value[1]) + EncodeUint64(value[0])130}131132// DecodeUint256 decodes a fixed-width 32-byte big-endian uint256 encoding.133//134// Parameters:135//   - encoded: Exactly 32 bytes containing the most-significant byte first.136//137// Returns:138//   - value: A new *u256.Uint populated from encoded.139//140// Panics if encoded is not exactly 32 bytes long.141func DecodeUint256(encoded string) *u256.Uint {142	if len(encoded) != 32 {143		panic(ufmt.Sprintf("invalid uint256 encoding length: %d", len(encoded)))144	}145	return u256.Zero().SetBytes([]byte(encoded))146}147

Functions

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

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