UNPKG

@wavesenterprise/generator-cli

Version:

Waves Enterprise transactions generator CLI

55 lines (54 loc) 2.29 kB
"use strict"; 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;