UNPKG

@xpla/xpla

Version:

<p align="center"> <img src="https://user-images.githubusercontent.com/545047/188804067-28e67e5e-0214-4449-ab04-2e0c564a6885.svg" width="80"> </p>

30 lines (28 loc) 897 B
import { bech32 } from "bech32"; import { keccak_256 } from "@noble/hashes/sha3"; //#region src/auth/strategy.ts const COSMOS_EVM_ADDRESS_STRATEGY = { name: "cosmos_evm", preprocessPublicKey: (pubKeyBytes, compressed, algo) => { let ethPubKey = compressed ? algo.uncompress(pubKeyBytes) : pubKeyBytes; return ethPubKey[0] === 4 ? ethPubKey.slice(1) : ethPubKey; }, hash: (bytes) => keccak_256(bytes).slice(-20), encode: (bytes, prefix = "xpla") => { const words = bech32.toWords(Buffer.from(bytes)); return bech32.encode(prefix, words); }, decode: (address) => { const decoded = bech32.decode(address); return { bytes: new Uint8Array(bech32.fromWords(decoded.words)), prefix: decoded.prefix }; }, extractPrefix: (address) => { const match = address.match(/^([a-z]+)1/); return match ? match[1] : void 0; } }; //#endregion export { COSMOS_EVM_ADDRESS_STRATEGY };