Part 1: non-recurring
Last updated
Last updated
In general, conditions are enforced on-chain by `require` statements, so a condition can be as simple as a function with a single line of code inside, which is the require statement. Some conditions can just read some state of the blockchain and can therefore be `view` functions. Others may need to store data or change some storage - either is fine.
We need to create a contract - this is going to be a simple contract that doesn't import any other code, so you can use any code editer, such as Remix. We can call the contract `TimeConditions`, because we're imaginative like that, and add some comments.
We need to add a function that can be called by FundsRouter
. This function needs to:
have logic for triggering after a specific time (afterTime
). Because there will always be some delay and uncertainty in when an execution will actually happen because we don't know when the execution tx will be mined, it's best to include a maximum time that the tx will fail after (beforeTIme
) - this effectively gives a window where the trigger will be valid
force the above condition by making the whole tx revert if it's not true
We can do this with 2 simple require
statements
That's literally it - super simple! Any tx that calls betweenTimes
outside of the specified times will now revert the whole tx, enforcing the condition.
Go to part 2 for how to create the recurring condition.