UNPKG

@pharosnames/address-encoder

Version:

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

35 lines (26 loc) 1 kB
import { keccak_256 } from "@noble/hashes/sha3"; import { concatBytes } from "@noble/hashes/utils"; import { utils } from "@scure/base"; import type { CheckedCoin } from "../types.js"; import { decodeXmrAddress, encodeXmrAddress } from "./xmr.js"; const name = "etn"; const coinType = 415; const type = 18; const etnChecksum = utils.checksum(4, keccak_256); export const encodeEtnAddress = (source: Uint8Array): string => { const sourceWithType = concatBytes(new Uint8Array([type]), source); const checksummed = etnChecksum.encode(sourceWithType); return encodeXmrAddress(checksummed); }; export const decodeEtnAddress = (source: string): Uint8Array => { const decoded = decodeXmrAddress(source); if (decoded[0] !== 18) throw new Error("Unrecognised address format"); const checksummed = etnChecksum.decode(decoded); return checksummed.slice(1); }; export const etn = { name, coinType, encode: encodeEtnAddress, decode: decodeEtnAddress, } as const satisfies CheckedCoin;