Clique Query
Last updated
import {ICliqueTaskManager} from "clique-contracts/ICliqueTaskManager.sol";
struct Params {
uint256 n;
}
contract MyContract {
function run(uint256 n) public {
uint32 id = 0;
bytes memory method = "clique_fibonacci";
Params memory params = Params(n);
ICliqueTaskManager.Task memory task = ICliqueTaskManager.Task(
id,
method,
abi.encode(params)
);
// use ICliqueTaskManager to create new query
// ...
}
}spec-version = "1"
name = "clique_httpsRequest"
type = "BuiltIn"
proof-type = ["TEE"]
[types.Transformation]
from = { type = "string", description = "json pointer to field in response" }
soltype = { type = "string", description = "solidity type" }
[input]
url = { type = "string", description = "Request url" }
encoding = { type = "Transformation[]", description = "encoding format" }
[output]
response = { type = "bytes", description = "ABI encoded" }import {ICliqueTaskManager} from "clique-contracts/ICliqueTaskManager.sol";
struct Transformation {
string from;
string soltype;
}
struct Params {
string url;
Transformation[] encoding;
}
contract MyContract {
function run() public {
Transformation[] memory transformations = new Transformation[](2);
transformations[0] = Transformation({from: "/0/id", soltype: "int16"});
transformations[1] = Transformation({from: "/0/name", soltype: "string"});
uint32 id = 0;
bytes memory method = "clique_httpsRequest";
Params memory params = Params({
url: "https://jsonplaceholder.typicode.com/users",
encoding: transformations
});
ICliqueTaskManager.Task memory task = ICliqueTaskManager.Task(
id,
method,
abi.encode(params)
);
// use ICliqueTaskManager to create new query
// ...
}
}use serde_json::json;
// Create a single query for running clique_fibonacci task
let json_query = json!({
"id": 1,
"method": "clique_fibonacci",
"params": {"n": "10"}
"input_types": {"n": "u256"},
"custom_types": {}
});
// Create a single query for running clique_httpsRequest task
let url = "https://jsonplaceholder.typicode.com/users";
let encoding = json!([
{"from": "/0/id", "soltype": "int16"},
{"from": "/0/name", "soltype": "string"},
]);
let json_query = json!({
"id": 1,
"method": "clique_httpsRequest",
"params": {"url": url, "encoding": encoding },
"input_types": {"url": "string", "encoding": "Transformation[]"},
"custom_types": {"Transformation": {"from": "string", "soltype": "string"}}
});// JSON query for clique_fibonacci task
{
"id": 1,
"method": "clique_fibonacci",
"params": {"n": "10"}
}
// JSON query for clique_httpsRequest task
{
"id": 1,
"method": "clique_httpsRequest",
"params": {
"url": "https://jsonplaceholder.typicode.com/users",
"encoding": [
{"from": "/0/id", "soltype": "int16"},
{"from": "/0/name", "soltype": "string"},
]
},
}use serde_json::json;
// Create batch query
let json_query = json!([
{"id": 2, "method": "clique_fibonacci", "params": {"n": "10"}, "input_types": {"n": "u256"}, "custom_types": {}},
{"id": 3, "method": "clique_fibonacci", "params": {"n": "11"}, "input_types": {"n": "u256"}, "custom_types": {}},
{"id": 4, "method": "clique_fibonacci", "params": {"n": "12"}, "input_types": {"n": "u256"}, "custom_types": {}}
]);[
{"id": 2, "method": "clique_fibonacci", "params": {"n": "10"}},
{"id": 3, "method": "clique_fibonacci", "params": {"n": "11"}},
{"id": 4, "method": "clique_fibonacci", "params": {"n": "12"}}
]