navio-blsct
Version:
TypeScript bindings for the `libblsct` library used by the [Navio](https://nav.io/) blockchain to construct confidential transactions based on the BLS12-381 curve.
724 lines (723 loc) • 28.4 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.genDpkWithKeysAcctAddr = exports.genDoublePubKey = exports.deserializeDpk = exports.getCTxOutViewTag = exports.getCTxOutRangeProof = exports.getCTxOutSpendingKey = exports.getCTxOutEphemeralKey = exports.getCTxOutBlindingKey = exports.getCTxOutVectorPredicate = exports.getCTxOutTokenId = exports.getCTxOutScriptPubkey = exports.getCTxOutValue = exports.getCTxInScriptWitness = exports.getCTxInSequence = exports.getCTxInScriptSig = exports.getCTxInPrevOutN = exports.getCTxInPrevOutHash = exports.serializeCTxId = exports.getCTxOutsSize = exports.getCTxOutAt = exports.getCTxOuts = exports.getCTxInsSize = exports.getCTxInAt = exports.getCTxIns = exports.getCTxId = exports.deleteCTx = exports.deleteTxOutVec = exports.deleteTxInVec = exports.createTxOutVec = exports.createTxInVec = exports.buildCTx = exports.addToTxOutVec = exports.addToTxInVec = exports.fromChildKeyToTxKey = exports.fromChildKeyToTokenKey = exports.fromChildKeyToBlindingKey = exports.fromSeedToChildKey = exports.setChain = exports.getChain = exports.Bech32M = exports.Bech32 = exports.encodeAddress = exports.decodeAddress = exports.TxOutputType = exports.BlsctChain = exports.BLSCT_OUT_AMOUNT_ERROR = exports.BLSCT_IN_AMOUNT_ERROR = exports.SCRIPT_SIZE = exports.POINT_SIZE = exports.CTX_ID_SIZE = void 0;
exports.getRangeProof_s_prime = exports.getRangeProof_r_prime = exports.getRangeProof_delta_prime = exports.getRangeProof_B = exports.getRangeProof_A_wip = exports.getRangeProof_alpha_hat = exports.getRangeProof_A = exports.getAmountRecoveryResultSize = exports.getAmountRecoveryResultMsg = exports.getAmountRecoveryResultIsSucc = exports.getAmountRecoveryResultAmount = exports.genAmountRecoveryReq = exports.deleteUint64Vec = exports.deleteRangeProofVec = exports.deleteAmountsRetVal = exports.deleteAmountRecoveryReqVec = exports.deserializeRangeProof = exports.createUint64Vec = exports.createRangeProofVec = exports.createAmountRecoveryReqVec = exports.buildRangeProof = exports.addToUint64Vec = exports.addToAmountRecoveryReqVec = exports.addToRangeProofVec = exports.scalarToPubKey = exports.pointToPublicKey = exports.getPublicKeyPoint = exports.genRandomPublicKey = exports.calcNonce = exports.calcPrivSpendingKey = exports.serializePoint = exports.pointToStr = exports.pointFromScalar = exports.isValidPoint = exports.arePointEqual = exports.genRandomPoint = exports.genBasePoint = exports.deserializePoint = exports.serializeOutPoint = exports.genOutPoint = exports.deserializeOutPoint = exports.getValueAsCStr = exports.toHex = exports.runGc = exports.hexToMallocedBuf = exports.freeObj = exports.serializeKeyId = exports.deserializeKeyId = exports.calcKeyId = exports.serializeDpk = void 0;
exports.castToCTxIn = exports.asString = exports.getTxOutMinStake = exports.getTxOutOutputType = exports.getTxOutTokenId = exports.getTxOutMemo = exports.getTxOutAmount = exports.getTxOutDestination = exports.buildTxOut = exports.getTxInRbf = exports.getTxInStakedCommitment = exports.getTxInOutPoint = exports.getTxInTokenId = exports.getTxInSpendingKey = exports.getTxInGamma = exports.getTxInAmount = exports.buildTxIn = exports.fromTxKeyToViewKey = exports.fromTxKeyToSpendingKey = exports.serializeTokenId = exports.getTokenIdToken = exports.getTokenIdSubid = exports.genDefaultTokenId = exports.genTokenIdWithSubid = exports.genTokenId = exports.deserializeTokenId = exports.serializeSubAddrId = exports.genSubAddrId = exports.deserializeSubAddrId = exports.serializeSubAddr = exports.dpkToSubAddr = exports.deserializeSubAddr = exports.subAddrToDpk = exports.deriveSubAddress = exports.verifyMsgSig = exports.signMessage = exports.serializeSignature = exports.deserializeSignature = exports.serializeScript = exports.deserializeScript = exports.serializeScalar = exports.scalarToUint64 = exports.areScalarEqual = exports.genScalar = exports.genRandomScalar = exports.deserializeScalar = exports.verifyRangeProofs = exports.serializeRangeProof = exports.recoverAmount = exports.getRangeProof_tau_x = void 0;
exports.calcViewTag = exports.castToUint8_tPtr = exports.castToTxOut = exports.castToTxIn = exports.castToTokenId = exports.castToSubAddrId = exports.castToSubAddr = exports.castToSignature = exports.castToScript = exports.castToScalar = exports.castToRangeProof = exports.castToPubKey = exports.castToPoint = exports.castToOutPoint = exports.castToKeyId = exports.castToDpk = exports.castToCTxOut = void 0;
const node_assert_1 = __importDefault(require("node:assert"));
const blsct = require('../build/Release/blsct.node');
if (!blsct._initialized) {
blsct.init();
blsct._initialized = true;
}
exports.CTX_ID_SIZE = blsct.CTX_ID_SIZE;
exports.POINT_SIZE = blsct.POINT_SIZE;
exports.SCRIPT_SIZE = blsct.SCRIPT_SIZE;
exports.BLSCT_IN_AMOUNT_ERROR = blsct.BLSCT_IN_AMOUNT_ERROR;
exports.BLSCT_OUT_AMOUNT_ERROR = blsct.BLSCT_OUT_AMOUNT_ERROR;
var BlsctChain;
(function (BlsctChain) {
BlsctChain[BlsctChain["Mainnet"] = 0] = "Mainnet";
BlsctChain[BlsctChain["Testnet"] = 1] = "Testnet";
BlsctChain[BlsctChain["Signet"] = 2] = "Signet";
BlsctChain[BlsctChain["Regtest"] = 3] = "Regtest";
})(BlsctChain || (exports.BlsctChain = BlsctChain = {}));
var TxOutputType;
(function (TxOutputType) {
TxOutputType[TxOutputType["Normal"] = 0] = "Normal";
TxOutputType[TxOutputType["StakedCommitment"] = 1] = "StakedCommitment";
})(TxOutputType || (exports.TxOutputType = TxOutputType = {}));
// address
const decodeAddress = (addrStr) => {
return blsct.decode_address(addrStr);
};
exports.decodeAddress = decodeAddress;
const encodeAddress = (dpk, encoding) => {
return blsct.encode_address(dpk, encoding);
};
exports.encodeAddress = encodeAddress;
exports.Bech32 = blsct.Bech32;
exports.Bech32M = blsct.Bech32M;
// chain
const getChain = () => {
return blsct.get_blsct_chain();
};
exports.getChain = getChain;
const setChain = (chain) => {
blsct.set_blsct_chain(chain);
};
exports.setChain = setChain;
// child key
const fromSeedToChildKey = (seed) => {
return blsct.from_seed_to_child_key(seed);
};
exports.fromSeedToChildKey = fromSeedToChildKey;
const fromChildKeyToBlindingKey = (childKey) => {
return blsct.from_child_key_to_blinding_key(childKey);
};
exports.fromChildKeyToBlindingKey = fromChildKeyToBlindingKey;
const fromChildKeyToTokenKey = (childKey) => {
return blsct.from_child_key_to_token_key(childKey);
};
exports.fromChildKeyToTokenKey = fromChildKeyToTokenKey;
const fromChildKeyToTxKey = (childKey) => {
return blsct.from_child_key_to_tx_key(childKey);
};
exports.fromChildKeyToTxKey = fromChildKeyToTxKey;
// ctx
const addToTxInVec = (vec, txIn) => {
return blsct.add_to_tx_in_vec(vec, txIn);
};
exports.addToTxInVec = addToTxInVec;
const addToTxOutVec = (vec, txOut) => {
return blsct.add_to_tx_out_vec(vec, txOut);
};
exports.addToTxOutVec = addToTxOutVec;
const buildCTx = (txIns, txOuts) => {
return blsct.build_ctx(txIns, txOuts);
};
exports.buildCTx = buildCTx;
const createTxInVec = () => {
return blsct.create_tx_in_vec();
};
exports.createTxInVec = createTxInVec;
const createTxOutVec = () => {
return blsct.create_tx_out_vec();
};
exports.createTxOutVec = createTxOutVec;
const deleteTxInVec = (txInVec) => {
return blsct.delete_tx_in_vec(txInVec);
};
exports.deleteTxInVec = deleteTxInVec;
const deleteTxOutVec = (txOutVec) => {
return blsct.delete_tx_out_vec(txOutVec);
};
exports.deleteTxOutVec = deleteTxOutVec;
const deleteCTx = (ctx) => {
return blsct.delete_ctx(ctx);
};
exports.deleteCTx = deleteCTx;
const getCTxId = (ctx) => {
return blsct.get_ctx_id(ctx);
};
exports.getCTxId = getCTxId;
const getCTxIns = (ctx) => {
return blsct.get_ctx_ins(ctx);
};
exports.getCTxIns = getCTxIns;
const getCTxInAt = (ctxIns, i) => {
return blsct.get_ctx_in_at(ctxIns, i);
};
exports.getCTxInAt = getCTxInAt;
const getCTxInsSize = (ctxIns) => {
return blsct.get_ctx_ins_size(ctxIns);
};
exports.getCTxInsSize = getCTxInsSize;
const getCTxOuts = (ctx) => {
return blsct.get_ctx_outs(ctx);
};
exports.getCTxOuts = getCTxOuts;
const getCTxOutAt = (ctxOuts, i) => {
return blsct.get_ctx_out_at(ctxOuts, i);
};
exports.getCTxOutAt = getCTxOutAt;
const getCTxOutsSize = (ctxOuts) => {
return blsct.get_ctx_outs_size(ctxOuts);
};
exports.getCTxOutsSize = getCTxOutsSize;
// ctx id
const serializeCTxId = (ctxId) => {
return blsct.serialize_ctx_id(ctxId);
};
exports.serializeCTxId = serializeCTxId;
// ctx in
const getCTxInPrevOutHash = (obj) => {
return blsct.get_ctx_in_prev_out_hash(obj);
};
exports.getCTxInPrevOutHash = getCTxInPrevOutHash;
const getCTxInPrevOutN = (obj) => {
return blsct.get_ctx_in_prev_out_n(obj);
};
exports.getCTxInPrevOutN = getCTxInPrevOutN;
const getCTxInScriptSig = (obj) => {
return blsct.get_ctx_in_script_sig(obj);
};
exports.getCTxInScriptSig = getCTxInScriptSig;
const getCTxInSequence = (obj) => {
return blsct.get_ctx_in_sequence(obj);
};
exports.getCTxInSequence = getCTxInSequence;
const getCTxInScriptWitness = (obj) => {
return blsct.get_ctx_in_script_witness(obj);
};
exports.getCTxInScriptWitness = getCTxInScriptWitness;
// ctx out
const getCTxOutValue = (obj) => {
return blsct.get_ctx_out_value(obj);
};
exports.getCTxOutValue = getCTxOutValue;
const getCTxOutScriptPubkey = (obj) => {
return blsct.get_ctx_out_script_pub_key(obj);
};
exports.getCTxOutScriptPubkey = getCTxOutScriptPubkey;
const getCTxOutTokenId = (obj) => {
return blsct.get_ctx_out_token_id(obj);
};
exports.getCTxOutTokenId = getCTxOutTokenId;
const getCTxOutVectorPredicate = (obj) => {
return blsct.get_ctx_out_vector_predicate(obj);
};
exports.getCTxOutVectorPredicate = getCTxOutVectorPredicate;
// ctx out blsct data
const getCTxOutBlindingKey = (obj) => {
return blsct.get_ctx_out_blinding_key(obj);
};
exports.getCTxOutBlindingKey = getCTxOutBlindingKey;
const getCTxOutEphemeralKey = (obj) => {
return blsct.get_ctx_out_ephemeral_key(obj);
};
exports.getCTxOutEphemeralKey = getCTxOutEphemeralKey;
const getCTxOutSpendingKey = (obj) => {
return blsct.get_ctx_out_spending_key(obj);
};
exports.getCTxOutSpendingKey = getCTxOutSpendingKey;
const getCTxOutRangeProof = (obj) => {
return blsct.get_ctx_out_range_proof(obj);
};
exports.getCTxOutRangeProof = getCTxOutRangeProof;
const getCTxOutViewTag = (obj) => {
return blsct.get_ctx_out_view_tag(obj);
};
exports.getCTxOutViewTag = getCTxOutViewTag;
// double public key
const deserializeDpk = (hex) => {
return blsct.deserialize_dpk(hex);
};
exports.deserializeDpk = deserializeDpk;
const genDoublePubKey = (pk1, pk2) => {
return blsct.gen_double_pub_key(pk1, pk2);
};
exports.genDoublePubKey = genDoublePubKey;
const genDpkWithKeysAcctAddr = (viewKey, spendingPubKey, account, address) => {
return blsct.gen_dpk_with_keys_acct_addr(viewKey, spendingPubKey, account, address);
};
exports.genDpkWithKeysAcctAddr = genDpkWithKeysAcctAddr;
const serializeDpk = (dpk) => {
return blsct.serialize_dpk(dpk);
};
exports.serializeDpk = serializeDpk;
// hash id
const calcKeyId = (blindingPubKey, spendingPubKey, viewKey) => {
return blsct.calc_key_id(blindingPubKey, spendingPubKey, viewKey);
};
exports.calcKeyId = calcKeyId;
const deserializeKeyId = (hex) => {
return blsct.deserialize_key_id(hex);
};
exports.deserializeKeyId = deserializeKeyId;
const serializeKeyId = (hashId) => {
return blsct.serialize_key_id(hashId);
};
exports.serializeKeyId = serializeKeyId;
// misc
const freeObj = (obj) => {
if (obj !== null && obj !== undefined) {
blsct.free_obj(obj);
}
};
exports.freeObj = freeObj;
const hexToMallocedBuf = (hex) => {
return blsct.hex_to_malloced_buf(hex);
};
exports.hexToMallocedBuf = hexToMallocedBuf;
const runGc = async () => {
if (typeof global.gc === 'function') {
;
global.gc();
await new Promise(r => setImmediate(r));
}
else {
console.warn('Garbage collector is not exposed. Run Node.js with --expose-gc to expose it.');
}
};
exports.runGc = runGc;
const toHex = (buf, size) => {
return blsct.buf_to_malloced_hex_c_str(buf, size);
};
exports.toHex = toHex;
const getValueAsCStr = (rv) => {
return blsct.cast_to_const_char_ptr(rv.value);
};
exports.getValueAsCStr = getValueAsCStr;
// out point
const deserializeOutPoint = (hex) => {
return blsct.deserialize_out_point(hex);
};
exports.deserializeOutPoint = deserializeOutPoint;
const genOutPoint = (serCtxId, outIndex) => {
return blsct.gen_out_point(serCtxId, outIndex);
};
exports.genOutPoint = genOutPoint;
const serializeOutPoint = (outPoint) => {
return blsct.serialize_out_point(outPoint);
};
exports.serializeOutPoint = serializeOutPoint;
// point
const deserializePoint = (hex) => {
return blsct.deserialize_point(hex);
};
exports.deserializePoint = deserializePoint;
const genBasePoint = () => {
return blsct.gen_base_point();
};
exports.genBasePoint = genBasePoint;
const genRandomPoint = () => {
return blsct.gen_random_point();
};
exports.genRandomPoint = genRandomPoint;
const arePointEqual = (a, b) => {
return blsct.are_point_equal(a, b) !== 0;
};
exports.arePointEqual = arePointEqual;
const isValidPoint = (point) => {
return blsct.is_valid_point(point) !== 0;
};
exports.isValidPoint = isValidPoint;
const pointFromScalar = (scalar) => {
return blsct.point_from_scalar(scalar);
};
exports.pointFromScalar = pointFromScalar;
const pointToStr = (point) => {
return blsct.point_to_str(point);
};
exports.pointToStr = pointToStr;
const serializePoint = (point) => {
return blsct.serialize_point(point);
};
exports.serializePoint = serializePoint;
// priv spending key
const calcPrivSpendingKey = (blindingPubKey, viewKey, spendingKey, account, address) => {
return blsct.calc_priv_spending_key(blindingPubKey, viewKey, spendingKey, account, address);
};
exports.calcPrivSpendingKey = calcPrivSpendingKey;
// public key
const calcNonce = (blindingPubKey, viewKey) => {
return blsct.calc_nonce(blindingPubKey, viewKey);
};
exports.calcNonce = calcNonce;
const genRandomPublicKey = () => {
return blsct.gen_random_public_key();
};
exports.genRandomPublicKey = genRandomPublicKey;
const getPublicKeyPoint = (obj) => {
return blsct.get_public_key_point(obj);
};
exports.getPublicKeyPoint = getPublicKeyPoint;
const pointToPublicKey = (point) => {
return blsct.point_to_public_key(point);
};
exports.pointToPublicKey = pointToPublicKey;
const scalarToPubKey = (scalar) => {
return blsct.scalar_to_pub_key(scalar);
};
exports.scalarToPubKey = scalarToPubKey;
// range proof
const addToRangeProofVec = (rangeProofs, rangeProof, rangeProofSize) => {
blsct.add_to_range_proof_vec(rangeProofs, rangeProof, rangeProofSize);
};
exports.addToRangeProofVec = addToRangeProofVec;
const addToAmountRecoveryReqVec = (reqs, req) => {
blsct.add_to_amount_recovery_req_vec(reqs, req);
};
exports.addToAmountRecoveryReqVec = addToAmountRecoveryReqVec;
const addToUint64Vec = (vec, n) => {
blsct.add_to_uint64_vec(vec, n);
};
exports.addToUint64Vec = addToUint64Vec;
const buildRangeProof = (amounts, nonce, msg, token_id) => {
return blsct.build_range_proof(amounts, nonce, msg, token_id);
};
exports.buildRangeProof = buildRangeProof;
const createAmountRecoveryReqVec = () => {
return blsct.create_amount_recovery_req_vec();
};
exports.createAmountRecoveryReqVec = createAmountRecoveryReqVec;
const createRangeProofVec = () => {
return blsct.create_range_proof_vec();
};
exports.createRangeProofVec = createRangeProofVec;
const createUint64Vec = () => {
return blsct.create_uint64_vec();
};
exports.createUint64Vec = createUint64Vec;
const deserializeRangeProof = (hex) => {
(0, node_assert_1.default)(hex.length % 2 === 0);
const objSize = hex.length / 2;
return blsct.deserialize_range_proof(hex, objSize);
};
exports.deserializeRangeProof = deserializeRangeProof;
const deleteAmountRecoveryReqVec = (reqs) => {
blsct.delete_amount_recovery_req_vec(reqs);
};
exports.deleteAmountRecoveryReqVec = deleteAmountRecoveryReqVec;
const deleteAmountsRetVal = (rv) => {
blsct.delete_amounts_ret_val(rv);
};
exports.deleteAmountsRetVal = deleteAmountsRetVal;
const deleteRangeProofVec = (rangeProofs) => {
blsct.delete_range_proof_vec(rangeProofs);
};
exports.deleteRangeProofVec = deleteRangeProofVec;
const deleteUint64Vec = (vec) => {
blsct.delete_uint64_vec(vec);
};
exports.deleteUint64Vec = deleteUint64Vec;
const genAmountRecoveryReq = (rangeProof, rangeProofSize, nonce) => {
return blsct.gen_amount_recovery_req(rangeProof, rangeProofSize, nonce);
};
exports.genAmountRecoveryReq = genAmountRecoveryReq;
const getAmountRecoveryResultAmount = (req, i) => {
return blsct.get_amount_recovery_result_amount(req, i);
};
exports.getAmountRecoveryResultAmount = getAmountRecoveryResultAmount;
const getAmountRecoveryResultIsSucc = (req, i) => {
return blsct.get_amount_recovery_result_is_succ(req, i);
};
exports.getAmountRecoveryResultIsSucc = getAmountRecoveryResultIsSucc;
const getAmountRecoveryResultMsg = (req, i) => {
return blsct.get_amount_recovery_result_msg(req, i);
};
exports.getAmountRecoveryResultMsg = getAmountRecoveryResultMsg;
const getAmountRecoveryResultSize = (resVec) => {
return blsct.get_amount_recovery_result_size(resVec);
};
exports.getAmountRecoveryResultSize = getAmountRecoveryResultSize;
const getRangeProof_A = (rangeProof, rangeProofSize) => {
return blsct.get_range_proof_A(rangeProof, rangeProofSize);
};
exports.getRangeProof_A = getRangeProof_A;
const getRangeProof_alpha_hat = (rangeProof, rangeProofSize) => {
return blsct.get_range_proof_alpha_hat(rangeProof, rangeProofSize);
};
exports.getRangeProof_alpha_hat = getRangeProof_alpha_hat;
const getRangeProof_A_wip = (rangeProof, rangeProofSize) => {
return blsct.get_range_proof_A_wip(rangeProof, rangeProofSize);
};
exports.getRangeProof_A_wip = getRangeProof_A_wip;
const getRangeProof_B = (rangeProof, rangeProofSize) => {
return blsct.get_range_proof_B(rangeProof, rangeProofSize);
};
exports.getRangeProof_B = getRangeProof_B;
const getRangeProof_delta_prime = (rangeProof, rangeProofSize) => {
return blsct.get_range_proof_delta_prime(rangeProof, rangeProofSize);
};
exports.getRangeProof_delta_prime = getRangeProof_delta_prime;
const getRangeProof_r_prime = (rangeProof, rangeProofSize) => {
return blsct.get_range_proof_r_prime(rangeProof, rangeProofSize);
};
exports.getRangeProof_r_prime = getRangeProof_r_prime;
const getRangeProof_s_prime = (rangeProof, rangeProofSize) => {
return blsct.get_range_proof_s_prime(rangeProof, rangeProofSize);
};
exports.getRangeProof_s_prime = getRangeProof_s_prime;
const getRangeProof_tau_x = (rangeProof, rangeProofSize) => {
return blsct.get_range_proof_tau_x(rangeProof, rangeProofSize);
};
exports.getRangeProof_tau_x = getRangeProof_tau_x;
const recoverAmount = (vec) => {
return blsct.recover_amount(vec);
};
exports.recoverAmount = recoverAmount;
const serializeRangeProof = (rangeProof, rangeProofSize) => {
return blsct.serialize_range_proof(rangeProof, rangeProofSize);
};
exports.serializeRangeProof = serializeRangeProof;
const verifyRangeProofs = (rangeProofs) => {
return blsct.verify_range_proofs(rangeProofs);
};
exports.verifyRangeProofs = verifyRangeProofs;
// scalar
const deserializeScalar = (hex) => {
return blsct.deserialize_scalar(hex);
};
exports.deserializeScalar = deserializeScalar;
const genRandomScalar = () => {
return blsct.gen_random_scalar();
};
exports.genRandomScalar = genRandomScalar;
const genScalar = (value) => {
return blsct.gen_scalar(value);
};
exports.genScalar = genScalar;
const areScalarEqual = (a, b) => {
return blsct.are_scalar_equal(a, b) !== 0;
};
exports.areScalarEqual = areScalarEqual;
const scalarToUint64 = (scalar) => {
return blsct.scalar_to_uint64(scalar);
};
exports.scalarToUint64 = scalarToUint64;
const serializeScalar = (scalar) => {
return blsct.serialize_scalar(scalar);
};
exports.serializeScalar = serializeScalar;
// script
const deserializeScript = (hex) => {
return blsct.deserialize_script(hex);
};
exports.deserializeScript = deserializeScript;
const serializeScript = (script) => {
return blsct.serialize_script(script);
};
exports.serializeScript = serializeScript;
// signature
const deserializeSignature = (hex) => {
return blsct.deserialize_signature(hex);
};
exports.deserializeSignature = deserializeSignature;
const serializeSignature = (script) => {
return blsct.serialize_signature(script);
};
exports.serializeSignature = serializeSignature;
const signMessage = (privKey, msg) => {
return blsct.sign_message(privKey, msg);
};
exports.signMessage = signMessage;
const verifyMsgSig = (pubKey, msg, signature) => {
return blsct.verify_msg_sig(pubKey, msg, signature);
};
exports.verifyMsgSig = verifyMsgSig;
// sub addr
const deriveSubAddress = (viewKey, spendingPubKey, subAddrId) => {
return blsct.derive_sub_address(viewKey, spendingPubKey, subAddrId);
};
exports.deriveSubAddress = deriveSubAddress;
const subAddrToDpk = (subAddr) => {
return blsct.sub_addr_to_dpk(subAddr);
};
exports.subAddrToDpk = subAddrToDpk;
const deserializeSubAddr = (hex) => {
return blsct.deserialize_sub_addr(hex);
};
exports.deserializeSubAddr = deserializeSubAddr;
const dpkToSubAddr = (dpk) => {
return blsct.dpk_to_sub_addr(dpk);
};
exports.dpkToSubAddr = dpkToSubAddr;
const serializeSubAddr = (subAddrId) => {
return blsct.serialize_sub_addr(subAddrId);
};
exports.serializeSubAddr = serializeSubAddr;
// sub addr id
const deserializeSubAddrId = (hex) => {
return blsct.deserialize_sub_addr_id(hex);
};
exports.deserializeSubAddrId = deserializeSubAddrId;
const genSubAddrId = (account, address) => {
return blsct.gen_sub_addr_id(account, address);
};
exports.genSubAddrId = genSubAddrId;
const serializeSubAddrId = (subAddrId) => {
return blsct.serialize_sub_addr_id(subAddrId);
};
exports.serializeSubAddrId = serializeSubAddrId;
// token id
const deserializeTokenId = (hex) => {
return blsct.deserialize_token_id(hex);
};
exports.deserializeTokenId = deserializeTokenId;
const genTokenId = (token) => {
return blsct.gen_token_id(token);
};
exports.genTokenId = genTokenId;
const genTokenIdWithSubid = (token, subid) => {
return blsct.gen_token_id_with_token_and_subid(token, subid);
};
exports.genTokenIdWithSubid = genTokenIdWithSubid;
const genDefaultTokenId = () => {
return blsct.gen_default_token_id();
};
exports.genDefaultTokenId = genDefaultTokenId;
const getTokenIdSubid = (tokenId) => {
return blsct.get_token_id_subid(tokenId);
};
exports.getTokenIdSubid = getTokenIdSubid;
const getTokenIdToken = (tokenId) => {
return blsct.get_token_id_token(tokenId);
};
exports.getTokenIdToken = getTokenIdToken;
const serializeTokenId = (tokenId) => {
return blsct.serialize_token_id(tokenId);
};
exports.serializeTokenId = serializeTokenId;
// tx key
const fromTxKeyToSpendingKey = (txKey) => {
return blsct.from_tx_key_to_spending_key(txKey);
};
exports.fromTxKeyToSpendingKey = fromTxKeyToSpendingKey;
const fromTxKeyToViewKey = (txKey) => {
return blsct.from_tx_key_to_view_key(txKey);
};
exports.fromTxKeyToViewKey = fromTxKeyToViewKey;
// tx in
const buildTxIn = (amount, gamma, spendingKey, tokenId, outPoint, isStakedCommitment, isRbf) => {
return blsct.build_tx_in(amount, gamma, spendingKey, tokenId, outPoint, isStakedCommitment, isRbf);
};
exports.buildTxIn = buildTxIn;
const getTxInAmount = (obj) => {
return blsct.get_tx_in_amount(obj);
};
exports.getTxInAmount = getTxInAmount;
const getTxInGamma = (obj) => {
return blsct.get_tx_in_gamma(obj);
};
exports.getTxInGamma = getTxInGamma;
const getTxInSpendingKey = (obj) => {
return blsct.get_tx_in_spending_key(obj);
};
exports.getTxInSpendingKey = getTxInSpendingKey;
const getTxInTokenId = (obj) => {
return blsct.get_tx_in_token_id(obj);
};
exports.getTxInTokenId = getTxInTokenId;
const getTxInOutPoint = (obj) => {
return blsct.get_tx_in_out_point(obj);
};
exports.getTxInOutPoint = getTxInOutPoint;
const getTxInStakedCommitment = (obj) => {
return blsct.get_tx_in_staked_commitment(obj);
};
exports.getTxInStakedCommitment = getTxInStakedCommitment;
const getTxInRbf = (obj) => {
return blsct.get_tx_in_rbf(obj);
};
exports.getTxInRbf = getTxInRbf;
// tx out
const buildTxOut = (subAddr, amount, memo, tokenId, outputType, minStake) => {
let blsctOutputType;
switch (outputType) {
case TxOutputType.Normal:
blsctOutputType = blsct.Normal;
break;
case TxOutputType.StakedCommitment:
blsctOutputType = blsct.StakedCommitment;
break;
default:
throw new Error(`Unknown output type: ${outputType}`);
}
return blsct.build_tx_out(subAddr, amount, memo, tokenId, blsctOutputType, minStake);
};
exports.buildTxOut = buildTxOut;
const getTxOutDestination = (obj) => {
return blsct.get_tx_out_destination(obj);
};
exports.getTxOutDestination = getTxOutDestination;
const getTxOutAmount = (obj) => {
return blsct.get_tx_out_amount(obj);
};
exports.getTxOutAmount = getTxOutAmount;
const getTxOutMemo = (obj) => {
return blsct.get_tx_out_memo(obj);
};
exports.getTxOutMemo = getTxOutMemo;
const getTxOutTokenId = (obj) => {
return blsct.get_tx_out_token_id(obj);
};
exports.getTxOutTokenId = getTxOutTokenId;
const getTxOutOutputType = (obj) => {
const x = blsct.get_tx_out_output_type(obj);
switch (x) {
case blsct.Normal:
return TxOutputType.Normal;
case blsct.StakedCommitment:
return TxOutputType.StakedCommitment;
default:
throw new Error(`Unknown TxOutputType ${x}`);
}
};
exports.getTxOutOutputType = getTxOutOutputType;
const getTxOutMinStake = (obj) => {
return blsct.get_tx_out_min_stake(obj);
};
exports.getTxOutMinStake = getTxOutMinStake;
// typecast
const asString = (obj) => {
return blsct.cast_to_const_char_ptr(obj);
};
exports.asString = asString;
const castToCTxIn = (obj) => {
return blsct.cast_to_ctx_in(obj);
};
exports.castToCTxIn = castToCTxIn;
const castToCTxOut = (obj) => {
return blsct.cast_to_ctx_out(obj);
};
exports.castToCTxOut = castToCTxOut;
const castToDpk = (obj) => {
return blsct.cast_to_dpk(obj);
};
exports.castToDpk = castToDpk;
const castToKeyId = (obj) => {
return blsct.cast_to_key_id(obj);
};
exports.castToKeyId = castToKeyId;
const castToOutPoint = (obj) => {
return blsct.cast_to_out_point(obj);
};
exports.castToOutPoint = castToOutPoint;
const castToPoint = (obj) => {
return blsct.cast_to_point(obj);
};
exports.castToPoint = castToPoint;
const castToPubKey = (obj) => {
return blsct.cast_to_pub_key(obj);
};
exports.castToPubKey = castToPubKey;
const castToRangeProof = (obj) => {
return blsct.cast_to_range_proof(obj);
};
exports.castToRangeProof = castToRangeProof;
const castToScalar = (obj) => {
return blsct.cast_to_scalar(obj);
};
exports.castToScalar = castToScalar;
const castToScript = (obj) => {
return blsct.cast_to_script(obj);
};
exports.castToScript = castToScript;
const castToSignature = (obj) => {
return blsct.cast_to_signature(obj);
};
exports.castToSignature = castToSignature;
const castToSubAddr = (obj) => {
return blsct.cast_to_sub_addr(obj);
};
exports.castToSubAddr = castToSubAddr;
const castToSubAddrId = (obj) => {
return blsct.cast_to_sub_addr_id(obj);
};
exports.castToSubAddrId = castToSubAddrId;
const castToTokenId = (obj) => {
return blsct.cast_to_token_id(obj);
};
exports.castToTokenId = castToTokenId;
const castToTxIn = (obj) => {
return blsct.cast_to_tx_in(obj);
};
exports.castToTxIn = castToTxIn;
const castToTxOut = (obj) => {
return blsct.cast_to_tx_out(obj);
};
exports.castToTxOut = castToTxOut;
const castToUint8_tPtr = (obj) => {
return blsct.cast_to_uint8_t_ptr(obj);
};
exports.castToUint8_tPtr = castToUint8_tPtr;
// view tag
const calcViewTag = (blindingPubKey, viewKey) => {
return blsct.calc_view_tag(blindingPubKey, viewKey);
};
exports.calcViewTag = calcViewTag;