UNPKG

@kadena/kadena-cli

Version:

Kadena CLI tool to interact with the Kadena blockchain (manage keys, transactions, etc.)

40 lines 1.85 kB
import { Pact, createSignWithKeypair } from '@kadena/client'; import { submitClient } from '@kadena/client-utils/core'; import { PactNumber } from '@kadena/pactjs'; import { log } from '../../../../../utils/logger.js'; import { stringifyProperty } from '../helper.js'; export async function safeTransfer({ network, receiver, chainId, sender, amount, }) { const extraAmount = new PactNumber('0.00000001').toPactDecimal(); const pactAmount = new PactNumber(amount) .plus(extraAmount.decimal) .toPactDecimal(); log.info(`Safe Transfer from ${sender.account} to ${receiver.account}\nPublic Key: ${stringifyProperty(receiver.keys, 'publicKey')}\nAmount: ${pactAmount.decimal}`); return submitClient({ host: network.host, sign: createSignWithKeypair([...sender.keys, ...receiver.keys]), defaults: { networkId: network.id, }, })(Pact.builder .execution(Pact.modules.coin['transfer-create'](sender.account, receiver.account, () => '(read-keyset "ks")', pactAmount), Pact.modules.coin.transfer(receiver.account, sender.account, extraAmount)) .addData('ks', { keys: receiver.keys.map((key) => key.publicKey), pred: 'keys-all', }) .addSigner(sender.keys.map((key) => key.publicKey), (withCap) => [ withCap('coin.GAS'), withCap('coin.TRANSFER', sender.account, receiver.account, pactAmount), ]) .addSigner(receiver.keys.map((key) => key.publicKey), (withCap) => [ withCap('coin.TRANSFER', receiver.account, sender.account, extraAmount), ]) .setMeta({ gasLimit: 1500, chainId, senderAccount: sender.account, ttl: 8 * 60 * 60, //8 hours }) .setNetworkId(network.id) .getCommand()).executeTo('listen'); } //# sourceMappingURL=safe-transfer.js.map