Substrate to EVM Fungible token transfer
Transferring assets from Substrate-based chains to EVM-based chains can be achieved using the Sygma SDK. To facilitate the transfer, the following steps are required:
- Specify transfer parameters such as amount, recipient address, token, destination chain and use the method
createSubstrateFungibleAssetTransfer
from@buildwithsygma/substrate
to create an instance ofSubstrateFungibleAssetTransfer
- Sign and send the transfer transaction using
polkadot.js
1. Create and initialize the transfer object
To initialize the asset transfer object, the following parameters need to be supplied:
- An instance of the PolkadotJS
ApiPromise
object - Environment variable
SYGMA_ENV
needs to be set asmainnet
ortestnet
const fungibleTokenTransfer = await createSubstrateFungibleAssetTransfer({
source: 5232, // Phala
destination: 1, // Ethereum Mainnet
sourceNetworkProvider: apiPromise,
sourceAddress: "<substrate_address>",
resource:
"0x0000000000000000000000000000000000000000000000000000000000000001", // PHA resource ID more resources can be found here: https://github.com/sygmaprotocol/sygma-shared-configuration/blob/main/mainnet/shared-config-mainnet.json
amount: BigInt(1) * BigInt(1e12),
destinationAddress: "<evm_recipient_address>",
});
2. Sign and send transfer transaction
const tx = await fungibleTokenTransfer.getTransferTransaction();
await transferTx.signAndSend(account, (results) => {
const { status } = results;
console.log(`Current status is ${status.toString()}`);
});
A full example of the above can be found here