@wavesenterprise/generator-cli
Version:
Waves Enterprise transactions generator CLI
55 lines (54 loc) • 2.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.TxGeneratorService = void 0;
const interfaces_1 = require("../interfaces");
class TxGeneratorService {
constructor(config, wavesApi) {
this.config = config;
this.wavesApi = wavesApi;
this.createTx104 = (txData, seed) => {
const { contractId, contractVersion, fee, params = [] } = txData;
const txBody = {
authorPublicKey: seed.keyPair.publicKey,
contractId,
contractVersion: Number(contractVersion),
timestamp: Date.now(),
params,
fee
};
return this.wavesApi.API.Transactions.CallContract.V4(txBody);
};
this.generateSignedTxs = async (accounts) => {
const { generator: { txsFormat, txsNumber, distribution, templates } } = this.config;
const signedPromises = [];
const txs = Object.entries(distribution);
for (let i = 0; i < txs.length; i++) {
const [txType, percentage] = txs[i];
let txTypeCount = Math.floor((txsNumber * (Number(percentage) / 100)));
if (txTypeCount < 1) {
txTypeCount = 1;
}
for (let j = 0; j < txTypeCount; j++) {
const account = accounts[(i + 1) * j];
switch (txType) {
case interfaces_1.TxType.DockerCall: {
const txBody = templates[txType];
const tx = this.createTx104(txBody, account);
if (txsFormat === 'grpc') {
signedPromises.push(tx.getSignedGrpcTx(account.keyPair));
}
else {
signedPromises.push(tx.getSignedTx(account.keyPair));
}
}
}
}
}
const signedTxs = await Promise.all(signedPromises);
return signedTxs;
};
this.wavesApi = wavesApi;
this.config = config;
}
}
exports.TxGeneratorService = TxGeneratorService;