@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
JavaScript
;
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;
}