UNPKG

@mayaprotocol/zcash-js

Version:

Zcash JavaScript library for Maya Protocol - Build and sign Zcash transparent transactions with memo support

40 lines (39 loc) 1.39 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.mainnetPrefix = exports.testnetPrefix = void 0; exports.isValidAddr = isValidAddr; exports.skToAddr = skToAddr; exports.pkToAddr = pkToAddr; const secp256k1_1 = require("@noble/curves/secp256k1"); const ripemd160_1 = require("@noble/hashes/ripemd160"); const sha2_1 = require("@noble/hashes/sha2"); const bs58check_1 = __importDefault(require("bs58check")); exports.testnetPrefix = [0x1d, 0x25]; exports.mainnetPrefix = [0x1c, 0xb8]; function isValidAddr(address, prefix) { try { const addrb = bs58check_1.default.decode(address); if (Buffer.from(addrb.slice(0, 2)).compare(Buffer.from(prefix)) != 0) throw new Error('Invalid prefix'); return true; } catch { return false; } } function skToAddr(sk, prefix) { const pk = secp256k1_1.secp256k1.getPublicKey(sk, true); return pkToAddr(pk, prefix); } function pkToAddr(pk, prefix) { const hash = (0, sha2_1.sha256)(pk); const pkh = (0, ripemd160_1.ripemd160)(hash); const addrb = Buffer.alloc(22); Buffer.from(prefix).copy(addrb); Buffer.from(pkh).copy(addrb, 2); const addr = bs58check_1.default.encode(addrb); return addr; }