MetaMorph: A Decentralized Oracle Tool
Introduction
Build your own oracle
How to request data from multiple oracles
Interface
interface IMetamorph {
event dataCallbackRequested(uint requestID, uint bounty);
// Functions to get data feeds
function getFeeds(
address[] memory morpheus,
uint256[] memory IDs,
uint256 threshold
)
external
view
returns (uint256 value, uint256 decimals, string memory valStr, bytes memory valBytes,uint timestamp);
function getFeedsRaw(
address[] memory morpheus,
uint256[] memory IDs
)
external
view
returns (
uint256[] memory value,
uint256[] memory decimals,
string[] memory valStr,
bytes[] memory valBytes,
uint256[] memory valTimestamps
);
function getFeedsQuorum(
address[] memory morpheus,
uint256[] memory IDs,
uint256 threshold,
uint256 quorum
)
external
view
returns (
uint256 value,
uint256 decimals,
string memory valStr,
bytes memory valBytes,
uint timestamp
);
function getFeedPortal(
uint256 ID
)
external
view
returns (
uint256 value,
uint256 decimals,
string memory valStr,
bytes memory valBytes,
uint timestamp
);
function requestFeed(
address[] memory morpheus,
string memory APIendpoint,
string memory APIendpointPath,
uint256 decimals,
uint256[] memory bounties
) external payable returns (uint256[] memory);
function requestFeed(
address[] memory morpheus,
string memory APIendpoint,
string memory APIendpointPath,
uint256 decimals
) external payable returns (uint256[] memory);
function requestFeedPortal(
address[] memory morpheus,
string memory APIendpoint,
string memory APIendpointPath,
uint256 decimals,
uint256 threshold,
uint256 quorum
) external payable returns (uint256 requestPortalID);
function requestFeedCallback(
address[] memory morpheus,
string memory APIendpoint,
string memory APIendpointPath,
uint256 decimals,
uint256[] memory bounties,
uint threshold,
uint quorum,
address receiveAddrs,
uint256 bountyGuardian
) external payable returns (uint256[] memory, uint requestID);
function fillRequest(uint256 ID) external;
function refillRequest(uint256 ID, uint guardianBounty) external payable;
function updateFeeds(
address[] memory morpheus,
uint256[] memory IDs,
uint256[] memory bounties
) external payable;
function updatePortal(uint ID) external payable;
}Deployments
Choice of data source
Independent oracles
Threshold for fresh data
Quorum for source validation
Requests with callbacks
requestCallback Function
requestCallback FunctionSecurity Considerations
Portals
How to use:
Portals: An Overview
Key Aspects of Portals:
Conclusion
Sample Callback
Last updated