PHP WebShell
Текущая директория: /opt/BitGoJS/modules/utxo-staking/dist/src/babylon
Просмотр файла: stakingManager.js
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.mockBabylonProvider = void 0;
exports.createStakingManager = createStakingManager;
const bitcoinjslib = __importStar(require("bitcoinjs-lib"));
const utxolib = __importStar(require("@bitgo/utxo-lib"));
const vendor = __importStar(require("@bitgo/babylonlabs-io-btc-staking-ts"));
const pop_1 = require("@babylonlabs-io/babylon-proto-ts/dist/generated/babylon/btcstaking/v1/pop");
const stakingParams_1 = require("./stakingParams");
/**
* Subclass of BabylonBtcStakingManager with the sole purpose of forcing
* a ECDSA signature.
*/
class BitGoStakingManager extends vendor.BabylonBtcStakingManager {
constructor(network, stakingParams, btcProvider, babylonProvider) {
super(network, stakingParams, btcProvider, babylonProvider);
}
/**
* Creates a proof of possession for the staker based on ECDSA signature.
*
* This is a parameterized version of the superclass method which infers
* the signature type from the stakerBtcAddress.
*
* @param bech32Address - The staker's bech32 address on the babylon network.
* @param stakerBtcAddress - The staker's BTC address.
* @param sigType - The signature type (BIP322 or ECDSA).
* @returns The proof of possession.
*/
async createProofOfPossessionWithSigType(bech32Address, stakerBtcAddress, sigType) {
const signedBabylonAddress = await this.btcProvider.signMessage(vendor.SigningStep.PROOF_OF_POSSESSION, bech32Address, sigType === pop_1.BTCSigType.BIP322 ? 'bip322-simple' : 'ecdsa');
let btcSig;
if (sigType === pop_1.BTCSigType.BIP322) {
const bip322Sig = pop_1.BIP322Sig.fromPartial({
address: stakerBtcAddress,
sig: Buffer.from(signedBabylonAddress, 'base64'),
});
// Encode the BIP322 protobuf message to a Uint8Array
btcSig = pop_1.BIP322Sig.encode(bip322Sig).finish();
}
else {
// Encode the ECDSA signature to a Uint8Array
btcSig = Buffer.from(signedBabylonAddress, 'base64');
}
return {
btcSigType: sigType,
btcSig,
};
}
/**
* Creates a proof of possession for the staker based on ECDSA signature.
* @param bech32Address - The staker's bech32 address on the babylon network.
* @param stakerBtcAddress
* @returns The proof of possession.
*/
async createProofOfPossession(bech32Address, stakerBtcAddress) {
// force the ECDSA signature type
return this.createProofOfPossessionWithSigType(bech32Address, stakerBtcAddress, pop_1.BTCSigType.ECDSA);
}
}
exports.mockBabylonProvider = {
signTransaction() {
throw new Error('Function not implemented.');
},
};
function createStakingManager(network, btcProvider, stakingParams, babylonProvider = exports.mockBabylonProvider) {
if (utxolib.isValidNetwork(network)) {
switch (network) {
case utxolib.networks.bitcoin:
network = bitcoinjslib.networks.bitcoin;
break;
case utxolib.networks.testnet:
case utxolib.networks.bitcoinTestnet4:
throw new Error('Unsupported bitcoin testnet network - only signet is supported');
case utxolib.networks.bitcoinPublicSignet:
network = bitcoinjslib.networks.testnet;
break;
default:
throw new Error('Unsupported network');
}
}
return new BitGoStakingManager(network, stakingParams ?? (0, stakingParams_1.getStakingParams)(network), btcProvider, babylonProvider);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2luZ01hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFieWxvbi9zdGFraW5nTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvRkEsb0RBc0JDO0FBMUdELDREQUE4QztBQUM5Qyx5REFBMkM7QUFDM0MsNkVBQStEO0FBQy9ELG1HQUltRjtBQUVuRixtREFBbUQ7QUFFbkQ7OztHQUdHO0FBQ0gsTUFBTSxtQkFBb0IsU0FBUSxNQUFNLENBQUMsd0JBQXdCO0lBQy9ELFlBQ0UsT0FBNkIsRUFDN0IsYUFBOEMsRUFDOUMsV0FBK0IsRUFDL0IsZUFBdUM7UUFFdkMsS0FBSyxDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsS0FBSyxDQUFDLGtDQUFrQyxDQUN0QyxhQUFxQixFQUNyQixnQkFBd0IsRUFDeEIsT0FBbUI7UUFFbkIsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUM3RCxNQUFNLENBQUMsV0FBVyxDQUFDLG1CQUFtQixFQUN0QyxhQUFhLEVBQ2IsT0FBTyxLQUFLLGdCQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDMUQsQ0FBQztRQUVGLElBQUksTUFBa0IsQ0FBQztRQUN2QixJQUFJLE9BQU8sS0FBSyxnQkFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xDLE1BQU0sU0FBUyxHQUFHLGVBQVMsQ0FBQyxXQUFXLENBQUM7Z0JBQ3RDLE9BQU8sRUFBRSxnQkFBZ0I7Z0JBQ3pCLEdBQUcsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLFFBQVEsQ0FBQzthQUNqRCxDQUFDLENBQUM7WUFDSCxxREFBcUQ7WUFDckQsTUFBTSxHQUFHLGVBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEQsQ0FBQzthQUFNLENBQUM7WUFDTiw2Q0FBNkM7WUFDN0MsTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUVELE9BQU87WUFDTCxVQUFVLEVBQUUsT0FBTztZQUNuQixNQUFNO1NBQ1AsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxhQUFxQixFQUFFLGdCQUF3QjtRQUMzRSxpQ0FBaUM7UUFDakMsT0FBTyxJQUFJLENBQUMsa0NBQWtDLENBQUMsYUFBYSxFQUFFLGdCQUFnQixFQUFFLGdCQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEcsQ0FBQztDQUNGO0FBRVksUUFBQSxtQkFBbUIsR0FBMkI7SUFDekQsZUFBZTtRQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztJQUMvQyxDQUFDO0NBQ0YsQ0FBQztBQUVGLFNBQWdCLG9CQUFvQixDQUNsQyxPQUErQyxFQUMvQyxXQUErQixFQUMvQixhQUErQyxFQUMvQyxlQUFlLEdBQUcsMkJBQW1CO0lBRXJDLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3BDLFFBQVEsT0FBTyxFQUFFLENBQUM7WUFDaEIsS0FBSyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU87Z0JBQzNCLE9BQU8sR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztnQkFDeEMsTUFBTTtZQUNSLEtBQUssT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7WUFDOUIsS0FBSyxPQUFPLENBQUMsUUFBUSxDQUFDLGVBQWU7Z0JBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0VBQWdFLENBQUMsQ0FBQztZQUNwRixLQUFLLE9BQU8sQ0FBQyxRQUFRLENBQUMsbUJBQW1CO2dCQUN2QyxPQUFPLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7Z0JBQ3hDLE1BQU07WUFDUjtnQkFDRSxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDM0MsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLElBQUksbUJBQW1CLENBQUMsT0FBTyxFQUFFLGFBQWEsSUFBSSxJQUFBLGdDQUFnQixFQUFDLE9BQU8sQ0FBQyxFQUFFLFdBQVcsRUFBRSxlQUFlLENBQUMsQ0FBQztBQUNwSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYml0Y29pbmpzbGliIGZyb20gJ2JpdGNvaW5qcy1saWInO1xuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuaW1wb3J0ICogYXMgdmVuZG9yIGZyb20gJ0BiaXRnby9iYWJ5bG9ubGFicy1pby1idGMtc3Rha2luZy10cyc7XG5pbXBvcnQge1xuICBCSVAzMjJTaWcsXG4gIEJUQ1NpZ1R5cGUsXG4gIFByb29mT2ZQb3NzZXNzaW9uQlRDLFxufSBmcm9tICdAYmFieWxvbmxhYnMtaW8vYmFieWxvbi1wcm90by10cy9kaXN0L2dlbmVyYXRlZC9iYWJ5bG9uL2J0Y3N0YWtpbmcvdjEvcG9wJztcblxuaW1wb3J0IHsgZ2V0U3Rha2luZ1BhcmFtcyB9IGZyb20gJy4vc3Rha2luZ1BhcmFtcyc7XG5cbi8qKlxuICogU3ViY2xhc3Mgb2YgQmFieWxvbkJ0Y1N0YWtpbmdNYW5hZ2VyIHdpdGggdGhlIHNvbGUgcHVycG9zZSBvZiBmb3JjaW5nXG4gKiBhIEVDRFNBIHNpZ25hdHVyZS5cbiAqL1xuY2xhc3MgQml0R29TdGFraW5nTWFuYWdlciBleHRlbmRzIHZlbmRvci5CYWJ5bG9uQnRjU3Rha2luZ01hbmFnZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICBuZXR3b3JrOiBiaXRjb2luanNsaWIuTmV0d29yayxcbiAgICBzdGFraW5nUGFyYW1zOiB2ZW5kb3IuVmVyc2lvbmVkU3Rha2luZ1BhcmFtc1tdLFxuICAgIGJ0Y1Byb3ZpZGVyOiB2ZW5kb3IuQnRjUHJvdmlkZXIsXG4gICAgYmFieWxvblByb3ZpZGVyOiB2ZW5kb3IuQmFieWxvblByb3ZpZGVyXG4gICkge1xuICAgIHN1cGVyKG5ldHdvcmssIHN0YWtpbmdQYXJhbXMsIGJ0Y1Byb3ZpZGVyLCBiYWJ5bG9uUHJvdmlkZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBwcm9vZiBvZiBwb3NzZXNzaW9uIGZvciB0aGUgc3Rha2VyIGJhc2VkIG9uIEVDRFNBIHNpZ25hdHVyZS5cbiAgICpcbiAgICogVGhpcyBpcyBhIHBhcmFtZXRlcml6ZWQgdmVyc2lvbiBvZiB0aGUgc3VwZXJjbGFzcyBtZXRob2Qgd2hpY2ggaW5mZXJzXG4gICAqIHRoZSBzaWduYXR1cmUgdHlwZSBmcm9tIHRoZSBzdGFrZXJCdGNBZGRyZXNzLlxuICAgKlxuICAgKiBAcGFyYW0gYmVjaDMyQWRkcmVzcyAtIFRoZSBzdGFrZXIncyBiZWNoMzIgYWRkcmVzcyBvbiB0aGUgYmFieWxvbiBuZXR3b3JrLlxuICAgKiBAcGFyYW0gc3Rha2VyQnRjQWRkcmVzcyAtIFRoZSBzdGFrZXIncyBCVEMgYWRkcmVzcy5cbiAgICogQHBhcmFtIHNpZ1R5cGUgLSBUaGUgc2lnbmF0dXJlIHR5cGUgKEJJUDMyMiBvciBFQ0RTQSkuXG4gICAqIEByZXR1cm5zIFRoZSBwcm9vZiBvZiBwb3NzZXNzaW9uLlxuICAgKi9cbiAgYXN5bmMgY3JlYXRlUHJvb2ZPZlBvc3Nlc3Npb25XaXRoU2lnVHlwZShcbiAgICBiZWNoMzJBZGRyZXNzOiBzdHJpbmcsXG4gICAgc3Rha2VyQnRjQWRkcmVzczogc3RyaW5nLFxuICAgIHNpZ1R5cGU6IEJUQ1NpZ1R5cGVcbiAgKTogUHJvbWlzZTxQcm9vZk9mUG9zc2Vzc2lvbkJUQz4ge1xuICAgIGNvbnN0IHNpZ25lZEJhYnlsb25BZGRyZXNzID0gYXdhaXQgdGhpcy5idGNQcm92aWRlci5zaWduTWVzc2FnZShcbiAgICAgIHZlbmRvci5TaWduaW5nU3RlcC5QUk9PRl9PRl9QT1NTRVNTSU9OLFxuICAgICAgYmVjaDMyQWRkcmVzcyxcbiAgICAgIHNpZ1R5cGUgPT09IEJUQ1NpZ1R5cGUuQklQMzIyID8gJ2JpcDMyMi1zaW1wbGUnIDogJ2VjZHNhJ1xuICAgICk7XG5cbiAgICBsZXQgYnRjU2lnOiBVaW50OEFycmF5O1xuICAgIGlmIChzaWdUeXBlID09PSBCVENTaWdUeXBlLkJJUDMyMikge1xuICAgICAgY29uc3QgYmlwMzIyU2lnID0gQklQMzIyU2lnLmZyb21QYXJ0aWFsKHtcbiAgICAgICAgYWRkcmVzczogc3Rha2VyQnRjQWRkcmVzcyxcbiAgICAgICAgc2lnOiBCdWZmZXIuZnJvbShzaWduZWRCYWJ5bG9uQWRkcmVzcywgJ2Jhc2U2NCcpLFxuICAgICAgfSk7XG4gICAgICAvLyBFbmNvZGUgdGhlIEJJUDMyMiBwcm90b2J1ZiBtZXNzYWdlIHRvIGEgVWludDhBcnJheVxuICAgICAgYnRjU2lnID0gQklQMzIyU2lnLmVuY29kZShiaXAzMjJTaWcpLmZpbmlzaCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBFbmNvZGUgdGhlIEVDRFNBIHNpZ25hdHVyZSB0byBhIFVpbnQ4QXJyYXlcbiAgICAgIGJ0Y1NpZyA9IEJ1ZmZlci5mcm9tKHNpZ25lZEJhYnlsb25BZGRyZXNzLCAnYmFzZTY0Jyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGJ0Y1NpZ1R5cGU6IHNpZ1R5cGUsXG4gICAgICBidGNTaWcsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgcHJvb2Ygb2YgcG9zc2Vzc2lvbiBmb3IgdGhlIHN0YWtlciBiYXNlZCBvbiBFQ0RTQSBzaWduYXR1cmUuXG4gICAqIEBwYXJhbSBiZWNoMzJBZGRyZXNzIC0gVGhlIHN0YWtlcidzIGJlY2gzMiBhZGRyZXNzIG9uIHRoZSBiYWJ5bG9uIG5ldHdvcmsuXG4gICAqIEBwYXJhbSBzdGFrZXJCdGNBZGRyZXNzXG4gICAqIEByZXR1cm5zIFRoZSBwcm9vZiBvZiBwb3NzZXNzaW9uLlxuICAgKi9cbiAgYXN5bmMgY3JlYXRlUHJvb2ZPZlBvc3Nlc3Npb24oYmVjaDMyQWRkcmVzczogc3RyaW5nLCBzdGFrZXJCdGNBZGRyZXNzOiBzdHJpbmcpOiBQcm9taXNlPFByb29mT2ZQb3NzZXNzaW9uQlRDPiB7XG4gICAgLy8gZm9yY2UgdGhlIEVDRFNBIHNpZ25hdHVyZSB0eXBlXG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlUHJvb2ZPZlBvc3Nlc3Npb25XaXRoU2lnVHlwZShiZWNoMzJBZGRyZXNzLCBzdGFrZXJCdGNBZGRyZXNzLCBCVENTaWdUeXBlLkVDRFNBKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgbW9ja0JhYnlsb25Qcm92aWRlcjogdmVuZG9yLkJhYnlsb25Qcm92aWRlciA9IHtcbiAgc2lnblRyYW5zYWN0aW9uKCk6IFByb21pc2U8VWludDhBcnJheT4ge1xuICAgIHRocm93IG5ldyBFcnJvcignRnVuY3Rpb24gbm90IGltcGxlbWVudGVkLicpO1xuICB9LFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVN0YWtpbmdNYW5hZ2VyKFxuICBuZXR3b3JrOiBiaXRjb2luanNsaWIuTmV0d29yayB8IHV0eG9saWIuTmV0d29yayxcbiAgYnRjUHJvdmlkZXI6IHZlbmRvci5CdGNQcm92aWRlcixcbiAgc3Rha2luZ1BhcmFtcz86IHZlbmRvci5WZXJzaW9uZWRTdGFraW5nUGFyYW1zW10sXG4gIGJhYnlsb25Qcm92aWRlciA9IG1vY2tCYWJ5bG9uUHJvdmlkZXJcbik6IHZlbmRvci5CYWJ5bG9uQnRjU3Rha2luZ01hbmFnZXIge1xuICBpZiAodXR4b2xpYi5pc1ZhbGlkTmV0d29yayhuZXR3b3JrKSkge1xuICAgIHN3aXRjaCAobmV0d29yaykge1xuICAgICAgY2FzZSB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW46XG4gICAgICAgIG5ldHdvcmsgPSBiaXRjb2luanNsaWIubmV0d29ya3MuYml0Y29pbjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHV0eG9saWIubmV0d29ya3MudGVzdG5ldDpcbiAgICAgIGNhc2UgdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luVGVzdG5ldDQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgYml0Y29pbiB0ZXN0bmV0IG5ldHdvcmsgLSBvbmx5IHNpZ25ldCBpcyBzdXBwb3J0ZWQnKTtcbiAgICAgIGNhc2UgdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luUHVibGljU2lnbmV0OlxuICAgICAgICBuZXR3b3JrID0gYml0Y29pbmpzbGliLm5ldHdvcmtzLnRlc3RuZXQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBuZXR3b3JrJyk7XG4gICAgfVxuICB9XG4gIHJldHVybiBuZXcgQml0R29TdGFraW5nTWFuYWdlcihuZXR3b3JrLCBzdGFraW5nUGFyYW1zID8/IGdldFN0YWtpbmdQYXJhbXMobmV0d29yayksIGJ0Y1Byb3ZpZGVyLCBiYWJ5bG9uUHJvdmlkZXIpO1xufVxuIl19Выполнить команду
Для локальной разработки. Не используйте в интернете!