UNPKG

@pharosnames/address-encoder

Version:

Encodes and decodes address formats for various cryptocurrencies with Pharos network support

37 lines (30 loc) 931 B
import { sha3_256 } from "@noble/hashes/sha3"; import { utils } from "@scure/base"; import type { CheckedCoin } from "../types.js"; import { base58UncheckedDecode, base58UncheckedEncode, } from "../utils/base58.js"; const name = "nas"; const coinType = 2718; const nasChecksum = utils.checksum(4, sha3_256); export const encodeNasAddress = (source: Uint8Array): string => { const checksummed = nasChecksum.encode(source); return base58UncheckedEncode(checksummed); }; export const decodeNasAddress = (source: string): Uint8Array => { const decoded = base58UncheckedDecode(source); if ( decoded.length !== 26 || decoded[0] !== 25 || (decoded[1] !== 87 && decoded[1] !== 88) ) throw new Error("Unrecognised address format"); return nasChecksum.decode(decoded); }; export const nas = { name, coinType, encode: encodeNasAddress, decode: decodeNasAddress, } as const satisfies CheckedCoin;