+-----------------------------+ +----------------------------+
| | | |
| Target chain 1 | | Target chain 2 |
| +------------------------+ | | +------------------------+ |
| | | | | | | |
| | +--------------------+ | | | | +--------------------+ | |
| | | | | | | | | | | |4t.Read value
| | | GenericOracle | | | | | | GenericOracle <-+-+-----
| | | | | | | | | | | |
| | +--------------------+ | | | | +--------------------+ | |
| | | | | | | |
| | SingleReporterOracle | | | | SingleReporterOracle | |
| | | | | | | |
| | +--------------------+ | | | | +--------------------+ | |
| | | | | | | | | | | |
| | | IOracleConsumer | | | | | | IOracleConsumer | | |
| | | | | | | | | | | |
| | +---------^----------+ | | | | +---------^----------+ | |
| | | | | | | | | |
| +-----------+------------+ | | +-----------+------------+ |
| | | | | |
| +-----------+------------+ | | +-----------+------------+ |
| | | | | | | |
| | SaltyForwarder | | | | SaltyForwarder | |
| | | | | | | |
| +------------------^-----+ | | +------^-----------------+ |
| on-chain | | | | on-chain |
+---------------------+-------+ +--------+-------------------+
| |
+--------+---------+
3t.Publish|value
+---------------------+-----------------------+
| | |
| +---------+----------+ |
1.Request | | | |
update | | 2.off-chain | |
----+-----------> Compute | |
| | | |
| +---------+----------+ off-chain |
+-- -- -- --3s.Publish|value -- -- -- -- |
| | on-chain |
| +-----------+------------+ |
| | | | |
| | +---------v----------+ | |
| | | | | |
| | | IOracleConsumer | | |
| | | | | |
| | +--------------------+ | |
| | | |
| | VerifiedResultOracle | |
| | | |
| | +--------------------+ | |
| | | | | |4s.Read value
| | | GenericOracle <-+----------+------
| | | | | |
| | +--------------------+ | |
| | | |
| +------------------------+ |
| Source |
+---------------------------------------------+
npm ci
npm run compile
npm run test
# OR with coverage
npm run coverage
Each deployment require configuration environment variables that can be loaded from a .env
file (see .env.template
)
specific environments:
IEXEC_HUB_ADDRESS
: [optional] iExec contract address used for oracle updates (default to official deployment or stub contract on "hardhat" network)TARGET_OWNER
: [optional] address to transfer the contract ownership to
npm run deploy-native
# OR
npm run deploy-native -- --network bellecour
deployment details are saved in the deployed/<network>/<contract>
folder and can be used to run the verification script
# ex: contract verification on bellecour
npm run verify -- verify --network bellecour $(cat deployed/bellecour/VerifiedResultOracle/address) $(cat deployed/bellecour/VerifiedResultOracle/constructorArgs)
specific environments:
AUTHORIZED_REPORTER
: Authorized reporter address for the contract SingleReporterOracle
npm run deploy-x-chain
# OR
npm run deploy-x-chain -- --network mainnet
deployment details are saved in the deployed/<network>/<contract>
folder and can be used to run the verification script
# ex: contract verification on mainnet
npm run verify -- --network mainnet $(cat deployed/mainnet/SaltyForwarder/address) $(cat deployed/mainnet/SaltyForwarder/constructorArgs)
npm run verify -- --network mainnet $(cat deployed/mainnet/SingleReporterOracle/address) $(cat deployed/mainnet/SingleReporterOracle/constructorArgs)
specific environments:
ORACLE_ADDRESS
: VerifiedResultOracle contract addressAUTHORIZED_APP
: task must run with specified app to update the oracleAUTHORIZED_WORKERPOOL
: task must run on specified workerpool to update the oracleREQUIRED_TAG
: task must run with tag to update the oracle
npm run update-env-native
# OR
npm run update-env-native -- --network bellecour
- Polygon testnet Amoy
SaltyForwarder deployed at: 0xa02dEe31775e82E29e762bC69910ca3991f1a20F
SingleReporterOracle deployed at: 0x4c1EA90575470267CE84887e8460E44b76f79Eb0
- Ethereum testnet Sepolia
SaltyForwarder deployed at: 0xaf92191ee3afd45ae756443d03d55ec7c5cdfb89
SingleReporterOracle deployed at: 0x0F669760bAe5edDE51a3e35456caF54E9184DeAe
- Bellecour
admin: 0xF43632063E3fd4A09698c6bDC501B5Fe312e3dF8
VerifiedResultOracle deployed at: 0x0132DaF5c7C177499c256b5eaC30E7201A9b75e2
IExecWhitelist (authorized workerpools) deployed at: 0x92C7D28AeB0768B7D6eFBD819C4340aCbB1339c1
IExecWhitelist (authorized apps) deployed at: 0xa39b4E7d2447F510BF961b038eAE53390a05CaCc
- Polygon testnet Amoy
SaltyForwarder deployed at: 0xc684E8645c8414812f22918146d72d1071E722AE
SingleReporterOracle deployed at: 0x36dA71ccAd7A67053f0a4d9D5f55b725C9A25A3E
- Polygon Mainnet
SaltyForwarder deployed at: 0xc684E8645c8414812f22918146d72d1071E722AE
SingleReporterOracle deployed at: 0x36dA71ccAd7A67053f0a4d9D5f55b725C9A25A3E
- Ethereum testnet Sepolia
SaltyForwarder deployed at: 0xc684E8645c8414812f22918146d72d1071E722AE
SingleReporterOracle deployed at: 0x36dA71ccAd7A67053f0a4d9D5f55b725C9A25A3E
- Ethereum Mainnet
SaltyForwarder deployed at: 0xc684E8645c8414812f22918146d72d1071E722AE
SingleReporterOracle deployed at: 0x36dA71ccAd7A67053f0a4d9D5f55b725C9A25A3E
- Bellecour
admin: 0xFC1065f10f7BeEC68ba272bF7eF1E3CFBe1e4337
VerifiedResultOracle deployed at: 0x36dA71ccAd7A67053f0a4d9D5f55b725C9A25A3E
IExecWhitelist (authorized workerpools) deployed at: 0x976d03eE9D8bcD8d1f70DcE0d17c6b54Bc91aC84
IExecWhitelist (authorized apps) deployed at: 0x26472b355849B409769545A8595fe97846a8F0C9