Overview
The purpose of this document is to define initial recommendation for the operating procedures for running the wrapping operations, which is planned to be conducted by a decentralized group of oracles and custodians, who are also FIO Chain Block Producers. This document is not intended to describe the detailed functionality of the FIO contracts, Ethereum contracts or the Oracle software. See References below for that information.
...
Environment Variables
Oracles will need to set the following environment variables as defined in the fio.oracle README:
General variables:
POLLTIME - Seconds between poll for wrap and unwrap events (recommend 60 seconds?)
SERVER_URL_HISTORY - URL of FIO history node
FIO chain variables:
FIO_ORACLE_PRIVATE_KEY
FIO_ORACLE_PUBLIC_KEY
FIO_ORACLE_ACCOUNT
FIO_ORACLE_ADDRESS
POLLOFFSET - The number of wrap transactions to get on FIO side in each call. If you set 20, you can get 20 latest actions on FIO side.
ETH chain variables:
ETH_ORACLE_PUBLIC, ETH_ORACLE_PRIVATE - The ETH oracle public and private addresses used for signing ERC20 transactions
ETH gas settings:
...
USEGASAPI (1 - Use the etherscan API, 0 - Use the GASPRICE and GASLIMIT env vars)
...
GASPRICELEVEL - Used to select the high/average/low price on etherscan API for gas pricing.
...
https://github.com/fioprotocol/fio.oracle
If the .env file is updated, the oracle service must be restarted to pull in the latest values.
Manual oracle transactions
Wrap/unwrap tokens/domains
If an approval is missing for some reason, it is the responsibility of the Oracle to execute a manual approval. The Mainnet Wrapping Status Page contains all of the information needed to execute a manual approval. (Click here for the Testnet Wrapping Status Page)
A command line script is included in the fio.oracle repository that enables manual wrapping and unwrapping of tokens and domains.
The manual scripts must be run on the server where the oracle is running. It uses the oracle functionality to execute the transactions. Success and error information will be logged in the usual oracle log files.
From the fio.oracle root directory:
Code Block |
---|
> npm run oracle
This returns the usage:
Usage: npm run oracle ['wrap'|'unwrap'] ['tokens'|'domain'] [amount|domain] [fio handle or eth address] trxid
Examples:
npm run oracle wrap tokens 12000000000 0xe28FF0D44d533d15cD1f811f4DE8e6b1549945c9 ec52a13e3fd60c1a06ad3d9c0d66b97144aa020426d91cc43565483c743dd320 clean
npm run oracle wrap domain fiohacker 0xe28FF0D44d533d15cD1f811f4DE8e6b1549945c9 ec52a13e3fd60c1a06ad3d9c0d66b97144aa020426d91cc43565483c743dd320 clean
npm run oracle unwrap tokens 12000000000 alice@fiotestnet ec52a13e3fd60c1a06ad3d9c0d66b97144aa020426d91cc43565483c743dd320 clean
npm run oracle unwrap domain fiohacker alice@fiotestnet ec52a13e3fd60c1a06ad3d9c0d66b97144aa020426d91cc43565483c743dd320 clean |
Requests for manual transactions should be posted to the FIO Token Wrapping Committee Telegram channel.
Setting oracle fees
Code Block |
---|
clio -u http://fiotestnet.blockpane.com push action fio.oracle setoraclefee '{
"wrap_fio_domain": 60000000000,
"wrap_fio_tokens": 50000000000,
"actor": "qbxn5zhw2ypw"
}' -p qbxn5zhw2ypw@active |
Potential Issues and Suggested Resolution
...
eosio: 5KBX1dwHME4VyuUss2sYM25D5ZTDvyYrbEz37UJqwAVAsR4tGuY
bp1: EOSUSA
FIO_ORACLE_PRIVATE_KEY = 5KQ6f9ZgUtagD3LZ4wcMKhhvK9qy4BuwL3L1pkm6E2v62HCne2R
FIO_ORACLE_PUBLIC_KEY = FIO7jVQXMNLzSncm7kxwg9gk7XUBYQeJPk8b6QfaK5NVNkh3QZrRr
FIO_ORACLE_ACCOUNT = qbxn5zhw2ypw
ETH_ORACLE_PUBLIC = 0x2bFBc5e0e4ac9CF3dCE2512812Ef7Fa46031b506
ETH_ORACLE_PRIVATE = 6b949ad580282b883c16f04f3c141f7ecbc7a49a405d245a89a32e166800bba1
bp2: Yuriy
FIO_ORACLE_PRIVATE_KEY = 5JnhMxfnLhZeRCRvCUsaHbrvPSxaqjkQAgw4ZFodx4xXyhZbC9P
FIO_ORACLE_PUBLIC_KEY = FIO7uTisye5w2hgrCSE1pJhBKHfqDzhvqDJJ4U3vN9mbYWzataS2b
FIO_ORACLE_ACCOUNT = hfdg2qumuvlc
ETH_ORACLE_PUBLIC = 0xBA08B88cb85e8fDCCdfa2F59A415824d6BD634ca
ETH_ORACLE_PRIVATE = 9ea4cac7b0585354940e7b78630c2d3166ab8e9e3b3f8e69c0d16779bf7adc6b
bp3: EOS DETROIT
FIO_ORACLE_PRIVATE_KEY = 5JvmPVxPxypQEKPwFZQW4Vx7EC8cDYzorVhSWZvuYVFMccfi5mU
FIO_ORACLE_PUBLIC_KEY = FIO6oa5UV9ghWgYH9en8Cv8dFcAxnZg2i9z9gKbnHahciuKNRPyHc
FIO_ORACLE_ACCOUNT = wttywsmdmfew
ETH_ORACLE_PUBLIC = 0xf55C6d387b440Ab78CF3475bD7f8aD7Af9F6716f
ETH_ORACLE_PRIVATE = 76c1a0873d88e693e018ea6e894a0c79f0e7d215655f5f55043ea5d57400e592
backup bp: 5KLxezoCEw5Ca97FHq3HPyrzkmZQT6Wqw9DmKaJ6inE6fiN1ijT
...
Use FIO Token Wrapping Committee Telegram channel
References
FIO Token Wrapping Go-to-market plan
FIO Token Wrapping Integration Test Server /wiki/spaces/FO/pages/349569342 (Information on using the Devnet to wrap and unwrap tokens and Domains)
...