Transfer
Transfer
This page instructs you how to transfer assets from a logged-in users Passport wallet to another wallet.
Pre-requisites
The user must be logged into your application via Passport
1. Creating the transfer
Once you have a user logged into your application via Passport, you will be able to initiate the transfer of an asset (ETH, ERC20 or ERC721) from the users Passport wallet to another wallet. To do this, we must create an UnsignedTransferRequest argument that will be passed to the transfer function. The structure of the UnsignedTransferRequest varies depending on the type property, which specifies the type of asset that is being transferred. You'll need to ensure that the wallet that you're attempting to transfer the asset from is in fact the owner, otherwise the transfer request will fail.
1.1. Transferring an ERC721
To transfer an ERC721, the following properties must be specified:
type: The type of asset to transfer. Must be
ERC721tokenId: The unique identifier of the NFT to be transferred
tokenAddress: The address of the
ERC721contract to be transferredreceiver: The address of the wallet that will receive the
ERC721
For example:
const transferRequest: UnsignedTransferRequest = {
type: 'ERC721',
tokenId: '1295',
receiver: '0x0000000000000000000000000000000000000000',
tokenAddress: '0xacb3c6a43d15b907e8433077b6d38ae40936fe2c',
};1.2. Transferring an ERC20
To transfer ERC20, the following properties must be specified:
type: The type of asset to transfer. Must be
ERC20amount: The amount of the
ERC20token to be transferredreceiver: The address of the wallet that will receive the
ERC20tokenAddress: The address of the
ERC20contract to be transferred
For example:
const transferRequest: UnsignedTransferRequest = {
type: 'ERC20',
amount: '1',
receiver: '0x0000000000000000000000000000000000000000',
tokenAddress: '0xacb3c6a43d15b907e8433077b6d38ae40936fe2c',
};1.3. Transferring ETH
To transfer ETH, the following properties must be specified:
type: The type of asset to transfer. Must be
ETHamount: The amount of the
ERC20token to be transferredreceiver: The address of the wallet that will receive the
ETH
For example:
const transferRequest: UnsignedTransferRequest = {
type: 'ETH',
amount: '1',
receiver: '0x0000000000000000000000000000000000000000',
};2. Performing the transfer
Once you've created an UnsignedTransferRequest, it's time to perform the transfer. This can be done by calling the transfer function on the IMXProvider instance that is returned from the connectImx function:
const transferResponse: CreateTransferResponseV1 = await provider.transfer(transferRequest);The transfer function returns a promise that resolves to a CreateTransferResponseV1, which contains the following properties:
sent_signature: The signature of the transfer that was executed
status: The status of the transfer
time: The time that the transfer occurred
transfer_id: The unique identifier for the transfer
In the event of a failure, the promise will reject with the following properties:
code: The error code associated with the failure
details: A string containing details about the failure
message: A string containing a message that describes the failure
Last updated