[FIP-17.b] Technical Overview

Wrap FIO Domain

Use Case

  • User A wants to wrap FIO Domain to P public address on C chain.

  • User A fetches amount of Oracle fee using /get_oracle_fees.

  • User A executes wrapdomain action and passes in:

    • fio_domain (D) to wrap

    • public_address (P) on chain C where domain should be delivered

    • chain_code C

    • max_oracle_fee - maximum amount of FIO user A is willing to pay the Oracles

  • FIO Domain is transferred to wrapping smart contract account

  • Oracle fee is transferred from user A and distributed evenly to all registered Oracles.

  • Oracles monitor every block looking for wrapdomain action.

  • Once detected Oracles trigger minting of FIO Domain NFT on another chain.

Unwrap FIO Domain

Use case

  • User A wants to unwrap X FIO Tokens to P public address on FIO Chain.

  • User A executes action on another chain (not covered by this FIP):

  • Oracles monitor every block on another chain (not covered by this FIP).

  • Once detected each Oracle executes unwraptoken action and passes in:

    • fio_public_key where to transfer tokens

    • amount (X) of FIO tokens to transfer

  • Once the last Oracle executes unwraptoken action, the tokens are transferred to P.

Expiring Domains

Preferred approach = Burn

  • Oracle monitors wrapped domains on the FIO chain.

  • When the FIO Domain burn date hits, the Oracle calls the Ethereum contract burn function

Alternative proposals:

  • URI that points to the expire date so that it can be checked.

  • If someone re-wraps a domain that previously was wrapped