UNPKG

@kadena/kadena-cli

Version:

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

44 lines 2.01 kB
import { createSignWithKeypair } from '@kadena/client'; import { transferCrossChain } from '@kadena/client-utils/coin'; import { defaultAccount } from '../../../../../constants/devnets.js'; import { log } from '../../../../../utils/logger.js'; export async function crossChainTransfer({ network, sender, receiver, amount, gasPayer, }) { // Gas Payer validations if (gasPayer.chainId !== receiver.chainId && gasPayer !== defaultAccount) { log.warning(`Gas payer ${gasPayer.account} does not for sure have an account on the receiver chain; using ${defaultAccount.account} as gas payer`); gasPayer = defaultAccount; } if (!gasPayer.keys.some((key) => key.secretKey)) { log.warning(`Gas payer ${gasPayer.account} does not have a secret key; using ${defaultAccount.account} as gas payer`); gasPayer = defaultAccount; } log.info(`Crosschain Transfer from ${sender.account}, chain ${sender.chainId}\nTo ${receiver.account}, chain ${receiver.chainId}\nAmount: ${amount}\nGas Payer: ${gasPayer.account}`); const crossChainTransferRequest = transferCrossChain({ sender: { account: sender.account, publicKeys: sender.keys.map((key) => key.publicKey), }, receiver: { account: receiver.account, keyset: { keys: receiver.keys.map((key) => key.publicKey), pred: 'keys-all', }, }, targetChainGasPayer: { account: gasPayer.account, publicKeys: gasPayer.keys.map((key) => key.publicKey), }, chainId: sender.chainId, targetChainId: receiver.chainId, amount: amount.toString(), }, { host: network.host, defaults: { networkId: network.id, }, sign: createSignWithKeypair([...sender.keys, ...gasPayer.keys]), }); return crossChainTransferRequest.executeTo('listen-continuation'); } //# sourceMappingURL=crosschain-transfer.js.map