@xpla/xpla
Version:
<p align="center"> <img src="https://user-images.githubusercontent.com/545047/188804067-28e67e5e-0214-4449-ab04-2e0c564a6885.svg" width="80"> </p>
32 lines (30 loc) • 1.13 kB
JavaScript
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
let bech32 = require("bech32");
let _noble_hashes_sha3 = require("@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) => (0, _noble_hashes_sha3.keccak_256)(bytes).slice(-20),
encode: (bytes, prefix = "xpla") => {
const words = bech32.bech32.toWords(Buffer.from(bytes));
return bech32.bech32.encode(prefix, words);
},
decode: (address) => {
const decoded = bech32.bech32.decode(address);
return {
bytes: new Uint8Array(bech32.bech32.fromWords(decoded.words)),
prefix: decoded.prefix
};
},
extractPrefix: (address) => {
const match = address.match(/^([a-z]+)1/);
return match ? match[1] : void 0;
}
};
//#endregion
exports.COSMOS_EVM_ADDRESS_STRATEGY = COSMOS_EVM_ADDRESS_STRATEGY;