Table Structures:
oracleledger
keeps track of all wrapping transactions and logs the actor performing the request. This will be the same table used in both token and domain wrapping transactions.
( type
could be added in new iterations to allow for quick and simple index lookups based on status. )
oracles
tracks registered oracles used during the validation of unwrapping of NFT/tokens. This table also stores fee information used during the wrapping process.
The type oraclefees is defined as:
The oracle_votes
table is used during unwrapping operations. The registered oracles will call unwraptokens
and either emplace a new record or modify the record if the oracle is not the first registered oracle to vote on the obt_it. Once an oracle calls this action and 100% consensus is reached, the unwrapping will be approved and funds will be transferred.
regoracle -
Oracle must be approved by eosio permissions ( BP msig )
Verifies oracle is a top 21 block producer.
emplaced a new record into the oracles table.
unregoracle -
Oracle must be approved by eosio permissions ( BP msig )
ereases oracle table entry
wraptokens -
validate parameters
emplace new receipt inside
oracleledger
transfer tokens into the fio.oracle contract
transfer fees to each block producer ( may potentially duplicate the functionality of bpclaim )
unwraptokens -
validate parameters
verify fio.address is registered
search for obt_id inside
oracle_votes
if found, search if oracle has voted prior. If oracle has not voted, add the account to the voters' vector
if not found, emplace a new record into
orcale_votes
table.compute the number of registered oracles and total votes inside the record for that obt_id
If 100% consensus is achieved,
isComplete
flag is set as true, and tokens are transferred to the fio.address supplied.
Add Comment