Receive Deposits using a FIO Crypto Handle

FIO Crypto Handles (aka FIO Addresses) are human-readable wallet identifiers (such as [email protected] or [email protected]) which eliminate the need to see, or even know of, blockchain public addresses. Enabling deposits using FIO Crypto Handles give exchange users friendly interwallet operability, making deposits easy and near error-free, dramatically reducing support tickets.

As a first step, Platforms should register a custom FIO Domain (e.g., @myexchange). Users will then be able to register FIO Crypto Handles on that custom domain (e.g., [email protected]).

In order allow others to send crypto currency using the user’s FIO Crypto Handle, it has to be mapped to native blockchain public addresses (NBPAs). This has to be done from within the platform using /add_pub_address API method as it needs to be signed with user’s private key. For now, this mapping is stored unencrypted, but a privacy mode is being worked on.

It is up to the platform to decide if this happens automatically, behind the scenes or driven by the user via UI. If the platform supports multiple NBPAs for the same blockchain at the same time, e.g. multiple bitcoin wallets, the decision will likely need to be made by the user via UI.

Please read Mapping Public Addresses to better understand how public address mappings work.

Please note that a user may have multiple FIO Crypto Handles owned by a single key, and the UX should accommodate that.

Special considerations for Exchanges

Because a FIO Crypto Handle is mapped to a single FIO Public Key, exchanges that traditionally use a single key for all of their deposits have to decide how they want to accomodate FIO deposits using a FIO Crypto Handle. There are two options: using a unique FIO Crypto Handle for each user, or using the same Crypto Handle for all users.

Using a unique FIO Crypto Handle for each user

For example, to accept crypto deposits using FIO Crypto Handles, an exchange may register a unique FIO Crypto Handle for each user of the exchange, and display it in their deposit area, e.g. [email protected]

To deposit tokens of any supported cryptocurrency to their account the user would simply send tokens from a FIO-enabled wallet to their FIO Crypto Handle (e.g. [email protected]) and would not have to deal with Public Keys, memo fields, or even having to log into the exchange.

Each FIO Crypto Handle may be mapped using the addaddress action to either the same crypto public address for all users, or a unique crypto public address for each user.

Using the same FIO Crypto Handle for all users

Alternatively, an exchange may register a single deposit FIO Crypto Handle for all users of the exchange, and display it their deposit area (e.g. [email protected]).

To deposit any supported token to their account the user would simply send tokens from a FIO-enabled wallet to the Deposit FIO Crypto Handle, e.g. [email protected] To properly identify the inbound transaction, the user would have to either include a FIO Data memo which includes their exchange account, or provide the exchange, ahead of time, with a list of FIO Crypto Handles which the user owns.

The Deposit FIO Crypto Handle would be mapped using addaddress to a single FIO Public Key.

The inbound transaction can be identified by reading the OBT Data using /get_obt_data. The data is encrypted. Once decrypted, the memo or FIO Crypto Handle of Payee can be used to uniquely identify the user, and the obt_id will contain native chain transaction ID of the corresponding deposit.

Transaction memo for FIO token transfer

The trnsfiopubky action does not accept a memo field. To attach a FIO Data memo to a FIO token transfer, a recordobt transaction should be sent after the tokens are transferred and include the token transfer transaction id. recordobt requires that both payer and payee have a FIO Crypto Handle. If either party does not have a FIO Crypto Handle then transfer of memo is not supported.

Quality Assurance Checklist

The following lists the items that should be tested to confirm support for Receiving to a FIO Crypto Handle:

  • From a different wallet, a user is able to enter a FIO Crypto Handle that has a connected Token and Chain code and send using the returned mapped address
  • If the sender and receiver both have a FIO Crypto Handle, a FIO memo was included, and FIO OBT transaction was created, the receiving wallet should show the memo (optional)