Getting Paid

Listening for tips and checking for recurring payments.

The payments for Tellor feeds are not held in the main tellor contract. Technically you can pay for Tellor feeds however you want (e.g. off-chain, recurring, hand shake agreements, etc.), but the trustless way to do this on-chain is to use the Autopay contract.

The autopay contract allows parties to schedule and fund recurring data feeds or submit one-time tips to Tellor queryID's.

There is a 12 hour waiting period after reporting data before tips can be claimed. This helps ensure that, if a value gets disputed, another reporter will be incentivized to submit the data and the user can still retrieve their requested data. Also note that tips must be claimed within 3 months of the original data submission.

One time tips

Finding - Autopay contracts will emit an event:

event TipAdded(bytes32 _queryId, uint256 _amount, bytes _queryData, address _tipper);

To see the current tip for any queryId, check:

/**
 * @dev Getter function to current oneTime tip by queryId
 * @param _queryId id of reported data
 * @return amount of tip
 */
function getCurrentTip(bytes32 _queryId)
    external
    view
    returns (uint256)
{

Getting Payment - To get the payment for a one time tip, run:

/**
 * @dev Function to claim singular tip
 * @param _queryId id of reported data
 * @param _timestamps ID of timestamps you reported for
 */
function claimOneTimeTip(
    bytes32 _queryId,
    uint256[] calldata _timestamps
) external {

Note the timestamp array is so you can submit for many one time tips and just claim all of those tips at once.

Recurring data feeds

Finding - When a new feed is funded, the following event will emit:

event DataFeedFunded(bytes32 _queryId, bytes32 _feedId, uint256 _amount, address _feedFunder);

To see all data feeds for a given queryID, check:

/**
 * @dev Getter function to read current data feeds
 * @param _queryId id of reported data
 * @return feedIds array for queryId
 */
function getCurrentFeeds(bytes32 _queryId)
    external
    view
    returns (bytes32[] memory)
{

Getting Payment - to submit for payments from a data feed, run:

/**
 * @dev Internal function which allows Tellor reporters to claim their autopay tips
 * @param _feedId of dataFeed
 * @param _queryId id of reported data
 * @param _timestamp timestamp of reported data eligible for reward
 * @return uint256 reward amount
 */
function _claimTip(
    bytes32 _feedId,
    bytes32 _queryId,
    uint256 _timestamp
) 

The _feedId is simply the keccak256 hash of the variables defined in setupFeed:

    bytes32 _feedId = keccak256(
        abi.encode(_queryId, _reward, _startTime, _interval, _window, _priceThreshold)
    );

Last updated