Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »

Overview

Dynamic Oracle Approach

FIO is automatically converted to ETH to cover gas costs

NFT Redemption Approach

The NFT is not actually minted until there is an action on the Ethereum chain where Bob can pay the gas fee

Notes on FIO Domain Expiration as an ETH NFT

  • Expiration is not stored on the minted eth NFT

  • The oracle will enact actions on the NFT after checking the FIO chain for validity

    • if unwrapped and expired

      • Cannot be placed in escrow

      • Cannot be wrapped

    • If held in escrow and expired

      • Can be released back to the FIO owner

      • Can be renewed on FIO chain

        • Once valid, can be transferred

      • Can not be approved by new owner (when ETH gas is paid)

        • wrapping process is not completed, NFT does not yet exist on ETH chain

    • if wrapped and not expired

      • Can be released from escrow to new owner

The FIO Domain can be wrapped assuming it has not expired or about to expire.

  • Do not wrap tokens that will expire in about 2 weeks?

  • An FIO domain NFT that has been wrapped on Ethereum chain does not need to be used on the Ethereum chain, so the resolvers used in ENS are not necessary.

NFTs as tradable assets have images associated with them via a uri string

  • The image of the NFT is not pertinent to FIO domains.

  • NFTs minted for trade on OpenSea use their own servers to store the image uri

  • More universal approach will require an IPFS node

  • Can make FIO endpoint available to retrieve string from FIO state.

    • Can be configured by block producers

v1/chain/get_nft_image example

POST:
'{“url”:”https://fio.eosrio.io/v1/chain/get_nft_image”}'

RESPONSE:
'{“image”:”https://imgur.com/exampleimage.png”}'

IPFS Url formatting:
'{“image”:”https://{gatewayURL}/ipfs/{content ID}/{optional path to resource}”}'

Oracles

regoracle

Register Oracle.

Registering oracles

  • Each Oracle is registered using regoracle action.

Implementation

  • New action: regoracle

Request body

Parameter

Required

Format

Definition

oracle

Yes

Ethereum public address

Same as FIO account

Processing

  • Request is validated per Exception handling.

  • Oracle is added after 7 custodians have registered the same Ethereum public address

Exception handling

Error condition

Trigger

Type

fields:name

fields:value

Error message

Invalid oracle

Oracle is not valid or does not exist

400

"oracle_actor"

Value sent in, e.g. "alice"

"Invalid oracle"

No authority

The signer does not have authority to register oracles

403

Type: invalid_signature

Response body

Parameter

Format

Definition

status

String

OK if successful

unregoracle

Unregister Oracle.

Implementation

  • New action: unregoracle

Request body

Parameter

Required

Format

Definition

oracle

Yes

Ethereum public address

Processing

  • Oracle is removed after 7 custodians have unregistered the same public address

  • oracle_actor is removed

Exception handling

Error condition

Trigger

Type

fields:name

fields:value

Error message

Invalid oracle

Oracle is not registered

400

"oracle_actor"

Value sent in, e.g. "alice"

"Invalid oracle"

No authority

The signer does not have authority to register oracles

403

Type: invalid_signature

Response body

Parameter

Format

Definition

status

String

OK if successful

Example
{
  "status": "OK"
}

Custodians

regcustodian

Register Custodian

Registering oracles

  • Each Custodian is registered using regcustodian action.

Implementation

  • New action: regcustodian

Request body

Parameter

Required

Format

Definition

oracle_actor

Yes

12 character string

Same as FIO account

Processing

  • Request is validated per Exception handling.

  • Custodian is added after 7 custodians have registered the same public address

Exception handling

Error condition

Trigger

Type

fields:name

fields:value

Error message

Invalid oracle

Oracle is not valid or does not exist

400

"oracle_actor"

Value sent in, e.g. "alice"

"Invalid oracle"

No authority

The signer does not have authority to register oracles

403

Type: invalid_signature

Response body

Parameter

Format

Definition

status

String

OK if successful

unregcustodian

Unregister Custodian.

Implementation

  • New action: unregcustodian

Request body

Parameter

Required

Format

Definition

oracle_actor

Yes

12 character string

Valid actor (account) of oracle.

Processing

  • Custodian is removed after 7 custodians have unregistered the same public address

Exception handling

Error condition

Trigger

Type

fields:name

fields:value

Error message

Invalid oracle

Oracle is not registered

400

"oracle_actor"

Value sent in, e.g. "alice"

"Invalid oracle"

No authority

The signer does not have authority to register oracles

403

Type: invalid_signature

Response body

Parameter

Format

Definition

status

String

OK if successful

Example
{
  "status": "OK"
}


  • No labels