【发布时间】:2021-11-04 03:31:44
【问题描述】:
我有一个调用 checkUpkeep 的 keeper 并且它返回 true,但是在 performUpkeep 中,导致 checkUpkeep 返回 false 的条件在从链下返回数据之前不会设置(这是 bc 我想确保如果某些失败的原因,checkUpkeep 将再次返回 true 以重试)
我将如何处理这个问题,以便在检索数据时不会再次调用 checkUpkeep,从而触发第二次 performUpkeep?
例如:
function checkUpkeep(bytes calldata checkData)
external
view
returns (bool upkeepNeeded, bytes memory performData)
{
require(revealed);
require(round < 7);
uint32 secondsInDay = 86_400;
_getDateBeforeTimestamp(block.timestamp) >= latestDateChecked + secondsInDay
? upkeepNeeded = true
: upkeepNeeded = false;
performData = checkData;
}
function performUpkeep(bytes calldata /* performData */) external {
requestVolumeData(); // latestDateChecked is updated once requestVolumeData successfully receives data offchain and calls fulfill function
}
【问题讨论】:
标签: chainlink