[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