@tatumio/tatum-v1
Version:
Tatum API client allows browsers and Node.js clients to interact with Tatum API.
40 lines • 4.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.signBnbKMSTransaction = void 0;
const javascript_sdk_1 = require("@binance-chain/javascript-sdk");
const crypto_1 = require("@binance-chain/javascript-sdk/lib/crypto");
const blockchain_1 = require("../blockchain");
const model_1 = require("../model");
/**
* Sign Bnb pending transaction from Tatum KMS
* @param tx pending transaction from KMS
* @param fromPrivateKey private key to sign transaction with.
* @param testnet mainnet or testnet version
* @param provider url of the Bnb Server to connect to. If not set, default public server will be used.
* @returns transaction data to be broadcast to blockchain.
*/
const signBnbKMSTransaction = async (tx, fromPrivateKey, testnet, provider) => {
if (tx.chain !== model_1.Currency.BNB) {
throw Error('Unsupported chain.');
}
const bnbClient = new javascript_sdk_1.BncClient(provider ? provider : (testnet ? 'https://testnet-dex-atlantic.binance.org' : 'https://dex-european.binance.org'));
bnbClient.chooseNetwork(testnet ? 'testnet' : 'mainnet');
await bnbClient.setPrivateKey(fromPrivateKey, true);
await bnbClient.initChain();
const fromAddress = crypto_1.getAddressFromPrivateKey(fromPrivateKey, testnet ? 'tbnb' : 'bnb');
const account = await blockchain_1.bnbGetAccount(fromAddress);
bnbClient.setAccountNumber(account.account_number);
const { msg, signMsg, memo } = JSON.parse(tx.serializedTransaction);
msg.inputs = msg.inputs.map((i) => {
i.address = Buffer.from(i.address.data);
return i;
});
msg.outputs = msg.outputs.map((i) => {
i.address = Buffer.from(i.address.data);
return i;
});
const signedTx = await bnbClient._prepareTransaction(msg, signMsg, fromAddress, account.sequence, memo);
return signedTx.serialize();
};
exports.signBnbKMSTransaction = signBnbKMSTransaction;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm5iLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL2JuYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxrRUFBdUQ7QUFDdkQscUVBQWlGO0FBQ2pGLDhDQUEyQztBQUMzQyxvQ0FBaUQ7QUFFakQ7Ozs7Ozs7R0FPRztBQUNJLE1BQU0scUJBQXFCLEdBQUcsS0FBSyxFQUFFLEVBQWtCLEVBQUUsY0FBc0IsRUFBRSxPQUFnQixFQUFFLFFBQWlCLEVBQUUsRUFBRTtJQUMzSCxJQUFJLEVBQUUsQ0FBQyxLQUFLLEtBQUssZ0JBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDM0IsTUFBTSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtLQUNwQztJQUNELE1BQU0sU0FBUyxHQUFHLElBQUksMEJBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLDBDQUEwQyxDQUFDLENBQUMsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDLENBQUE7SUFDbEosU0FBUyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDeEQsTUFBTSxTQUFTLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUNuRCxNQUFNLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQTtJQUMzQixNQUFNLFdBQVcsR0FBRyxpQ0FBd0IsQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3RGLE1BQU0sT0FBTyxHQUFHLE1BQU0sMEJBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUNoRCxTQUFTLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQ2xELE1BQU0sRUFBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUE7SUFDakUsR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFO1FBQ25DLENBQUMsQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3ZDLE9BQU8sQ0FBQyxDQUFBO0lBQ1osQ0FBQyxDQUFDLENBQUE7SUFDRixHQUFHLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7UUFDckMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDdkMsT0FBTyxDQUFDLENBQUE7SUFDWixDQUFDLENBQUMsQ0FBQTtJQUNGLE1BQU0sUUFBUSxHQUFHLE1BQU0sU0FBUyxDQUFDLG1CQUFtQixDQUNoRCxHQUFHLEVBQ0gsT0FBTyxFQUNQLFdBQVcsRUFDWCxPQUFPLENBQUMsUUFBUSxFQUNoQixJQUFJLENBQ1AsQ0FBQTtJQUNELE9BQU8sUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFBO0FBQy9CLENBQUMsQ0FBQTtBQTVCWSxRQUFBLHFCQUFxQix5QkE0QmpDIn0=