Transfer Tokens

Here's an example how to make a Token transfer in a backend using typescript.

import {PhantasmaKeys, ScriptBuilder, Transaction, PhantasmaAPI } from 'phantasma-ts';
async function TransferTokens() {
  let wif = "";
  let keys = PhantasmaKeys.fromWIF(wif);

  let fromAddress = keys.Address;

  let toAddress = "exampleAddress";

  const amount = String(1 * 10 ** 8); // 1 Soul
  const tokenSymbol = "SOUL";
  const payload = Base16.encode("Phantasma-NodeJS");
  let gasPrice = 100000;
  let gasLimit = 210000;

  let sb = new ScriptBuilder();
  let script = sb
    .AllowGas(fromAddress.Text, Address.Null, gasPrice, gasLimit)
    .CallInterop("Runtime.TransferTokens", [
      fromAddress.Text,
      toAddress,
      tokenSymbol,
      amount,
    ])
    .SpendGas(fromAddress.Text)
    .EndScript();

  let myScript = sb.str;

  let expiration: Date = new Date(Date.UTC(
        new Date().getUTCFullYear(),
        new Date().getUTCMonth(),
        new Date().getUTCDate(),
        new Date().getUTCHours() + 1,
        new Date().getUTCMinutes() + 10,
        new Date().getUTCSeconds() + 10
    ));

  let transaction = new Transaction(
    NEXUS_NAME, //Nexus Name
    CHAIN_NAME //Chain
    myScript, //In string format
    expiration, //Date Object
    payload //Extra Info to attach to Transaction in Serialized Hex
  );
  
  transaction.signWithKeys(keys);
  const transactionSigned = transaction.toString(true);

  let txHash = await RPC.sendRawTransaction(transactionSigned);
  console.log({ txHash });
  await delay(5000);
  let result = await RPC.getTransaction(txHash);
  return txHash;
}

Last updated