Smart Contract Integration
Example
/// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;
import {ICliqueTaskManger} from "clique-contracts/ICliqueTaskManger.sol";
struct Response {
bytes16 data;
}
struct EchoParams {
bytes data;
}
contract MockClient {
address public immutable _manager;
event CallbackInvoked();
constructor(address manager) {
_manager = manager;
}
function callback(bytes calldata _response) external {
Response memory response = abi.decode(_response, (Response));
require(response.data == bytes16("hello, clique"), "Invalid response");
emit CallbackInvoked();
}
function run() public {
ICliqueTaskManager.Task memory task = ICliqueTaskManager.Task(
0,
"echo",
abi.encode(EchoParams("hello, clique"))
);
ICliqueTaskManager(_manager).createNewTask{value: 0.05 ether}(
abi.encode(task),
this.callback.selector
);
}
}On-Chain Verification
Last updated