Chainlink Automation / Keeper. Часть 3
На странице примера контракта, который Chainlink предлагает к тестам работы Custom Logic Automation (далее CLA), представлен довольно простой код, отслеживающий время на основе block.stamp.
При этом для CLA контрактов можно прописывать и другие условия, как например погодные условия, котировки валют, события из мира спорта и политики и т.д. А, подключив свой API, вообще любые события.
В случае с CLA нам нужно чтобы наш контракт наследовал функции от другого контракта chainlink:
import "@chainlink/contracts/src/v0.8/AutomationCompatible.sol";
Здесь обязательными должны быть две функции checkUpkeep() и performUpkeep().
checkUpkeep() - функция, которая проверяет условия, например, что Эфир стоит $1000. Если условия выполнены и возвращается "true" и начинается исполнение функции performUpkeep().
checkUpkeep() должна обязательно быть помечена как "external view override", чтобы ее можно было вызывать извне. Также она может принимать аргументы в виде bytes для проверки условий.
performUpkeep() - функция, которая выполняется, когда условия соблюдены. Так как она также помечена как "external", то Chainlink НАСТОЯТЕЛЬНО советует делать дополнительные проверки на выполнения условия перед кодом самого исполнения условий, например, перевода денег. Для этого в аргументы функции можно передавать perfomData из checkUpkeep() также в виде bytes.
После написания и деплоя контракта, его нужно будет подключить к Upkeep.
#chainlink #keeper #automation #time #custom
Post #293
128