# Oracle module CLI
### tx
- Create an operator
- Command: `certikcli tx oracle create-operator <address> <collateral>`
- Example:
```bash
$ certikcli tx oracle create-operator certik1qq4jxjezequ6dz6yusp4kn9xpepl0fgdy3mtky 100000uctk --from node0 --fees 5000uctk -y -b block
height: 12
txhash: 9DD60FEAAD6DFB19A4197EFDB68F95B498E7380ECFCA219E7258CB996F27F2C2
codespace: ""
code: 0
data: ""
rawlog: '[{"msg_index":0,"log":"","events":[{"type":"message","attributes":[{"key":"action","value":"create_operator"}]}]}]'
logs:
- msgindex: 0
log: ""
events:
- type: message
attributes:
- key: action
value: create_operator
info: ""
gaswanted: 200000
gasused: 85353
tx: null
timestamp: ""
```
- Remove an operator
- Command : `certikcli tx oracle remove-operator <address>`
- Example:
```bash
$ certikcli tx oracle remove-operator certik1qq4jxjezequ6dz6yusp4kn9xpepl0fgdy3mtky --from node0 --fees 5000uctk -y -b block
height: 74
txhash: B12AA2A3640F6AF07B72303B933956145DC58ABFF7753DB0C28802D2DFBE7CC3
codespace: ""
code: 0
data: ""
rawlog: '[{"msg_index":0,"log":"","events":[{"type":"message","attributes":[{"key":"action","value":"remove_operator"}]}]}]'
logs:
- msgindex: 0
log: ""
events:
- type: message
attributes:
- key: action
value: remove_operator
info: ""
gaswanted: 200000
gasused: 78072
tx: null
timestamp: ""
```
- Add collateral
- Command: `certikcli tx oracle deposit-collateral <address> <amount>`
- Example:
```bash
$ certikcli tx oracle deposit-collateral certik1qq4jxjezequ6dz6yusp4kn9xpepl0fgdy3mtky 100000uctk --from node0 --fees 5000uctk -y -b block
height: 117
txhash: 77379EF7412A414E848495C11E9C87F88320D021ECAF9BF0BC02A07565C4EFEB
codespace: ""
code: 0
data: ""
rawlog: '[{"msg_index":0,"log":"","events":[{"type":"message","attributes":[{"key":"action","value":"add_collateral"}]}]}]'
logs:
- msgindex: 0
log: ""
events:
- type: message
attributes:
- key: action
value: add_collateral
info: ""
gaswanted: 200000
gasused: 79074
tx: null
timestamp: ""
```
- Reduce collateral
- Command: `certikcli tx withdraw-collateral <address> <amount>`
- Example:
```bash
$ certikcli tx oracle withdraw-collateral certik1qq4jxjezequ6dz6yusp4kn9xpepl0fgdy3mtky 50000uctk --from node0 --fees 5000uctk -y -b block
height: 138
txhash: B1C95CA43071109D87967A09894179DA4F4460E7CB4E9788B72935EC8732F045
codespace: ""
code: 0
data: ""
rawlog: '[{"msg_index":0,"log":"","events":[{"type":"message","attributes":[{"key":"action","value":"reduce_collateral"}]}]}]'
logs:
- msgindex: 0
log: ""
events:
- type: message
attributes:
- key: action
value: reduce_collateral
info: ""
gaswanted: 200000
gasused: 65702
tx: null
timestamp: ""
```
- Create a task
- Command: `certikcli tx create-task <flags>`
- Flags:
- `--contract` (required)
- `--function` (required)
- `--bounty` (required)
- `--description` (optional)
- `--expiration` (optional)
- `--wait` (optional)
- Example:
```bash
$ certikcli tx oracle create-task --contract caddr --function funca --bounty 5000000uctk --from node0 --fees 5000uctk -y -b block
height: 285
txhash: C33167E24042672D665AF96B122B5241B11BD2041E4BE810C387B5FA7F4D4D71
codespace: ""
code: 0
data: ""
rawlog: '[{"msg_index":0,"log":"","events":[{"type":"create_task","attributes":[{"key":"contract","value":"caddr"},{"key":"function","value":"funca"},{"key":"bounty","value":"5000000uctk"},{"key":"description"},{"key":"expiration","value":"2020-08-15 21:35:36.278916 +0000 UTC"},{"key":"creator","value":"certik1qq4jxjezequ6dz6yusp4kn9xpepl0fgdy3mtky"},{"key":"windowSize","value":"20"},{"key":"closingHeight","value":"305"}]},{"type":"message","attributes":[{"key":"action","value":"create_task"},{"key":"sender","value":"certik1qq4jxjezequ6dz6yusp4kn9xpepl0fgdy3mtky"}]},{"type":"transfer","attributes":[{"key":"recipient","value":"certik1jgp27m8fykex4e4jtt0l7ze8q528ux2lkeyqvz"},{"key":"sender","value":"certik1qq4jxjezequ6dz6yusp4kn9xpepl0fgdy3mtky"},{"key":"amount","value":"5000000uctk"}]}]}]'
logs:
- msgindex: 0
log: ""
events:
- type: create_task
attributes:
- key: contract
value: caddr
- key: function
value: funca
- key: bounty
value: 5000000uctk
- key: description
value: ""
- key: expiration
value: 2020-08-15 21:35:36.278916 +0000 UTC
- key: creator
value: certik1qq4jxjezequ6dz6yusp4kn9xpepl0fgdy3mtky
- key: windowSize
value: "20"
- key: closingHeight
value: "305"
- type: message
attributes:
- key: action
value: create_task
- key: sender
value: certik1qq4jxjezequ6dz6yusp4kn9xpepl0fgdy3mtky
- type: transfer
attributes:
- key: recipient
value: certik1jgp27m8fykex4e4jtt0l7ze8q528ux2lkeyqvz
- key: sender
value: certik1qq4jxjezequ6dz6yusp4kn9xpepl0fgdy3mtky
- key: amount
value: 5000000uctk
info: ""
gaswanted: 200000
gasused: 80301
tx: null
timestamp: ""
```
- Respond to a task
- Command: `certikcli tx respond-to-task <flags>`
- Flags:
- `--contract` (required)
- `--function` (required)
- `--score` (required)
- Example:
```bash
$ certikcli tx oracle respond-to-task --contract caddr --function funca --score 255 --from node0 --fees 5000uctk -y -b block
height: 292
txhash: 3B513211B0D29C07C00652521B01746ED254F19A29CFFD7DD086A2C2C2876C72
codespace: ""
code: 0
data: ""
rawlog: '[{"msg_index":0,"log":"","events":[{"type":"message","attributes":[{"key":"action","value":"respond_to_task"}]},{"type":"respond_to_task","attributes":[{"key":"contract","value":"caddr"},{"key":"function","value":"funca"},{"key":"score","value":"255"},{"key":"operator","value":"certik1qq4jxjezequ6dz6yusp4kn9xpepl0fgdy3mtky"}]}]}]'
logs:
- msgindex: 0
log: ""
events:
- type: message
attributes:
- key: action
value: respond_to_task
- type: respond_to_task
attributes:
- key: contract
value: caddr
- key: function
value: funca
- key: score
value: "255"
- key: operator
value: certik1qq4jxjezequ6dz6yusp4kn9xpepl0fgdy3mtky
info: ""
gaswanted: 200000
gasused: 59530
tx: null
timestamp: ""
```
- Delete a task
- Command: `certikcli tx oracle delete-task <flags>`
- Flags:
- `--contract` (required)
- `--function` (required)
- `--force` or `-f` (optional): delete a (unexpired) task by force
- Example:
```bash
$ certikcli tx oracle delete-task --contract caddr --function funca -f --from node0 --fees 5000uctk -y -b block
height: 361
txhash: CA93C636D0C4945187E803A12FCA9F166236F7A35C39454B053C2A3378207646
codespace: ""
code: 0
data: ""
rawlog: '[{"msg_index":0,"log":"","events":[{"type":"delete_a_task","attributes":[{"key":"contract","value":"caddr"},{"key":"function","value":"funca"},{"key":"creator","value":"certik1qq4jxjezequ6dz6yusp4kn9xpepl0fgdy3mtky"},{"key":"expired","value":"true"}]},{"type":"message","attributes":[{"key":"action","value":"delete_task"}]}]}]'
logs:
- msgindex: 0
log: ""
events:
- type: delete_a_task
attributes:
- key: contract
value: caddr
- key: function
value: funca
- key: creator
value: certik1qq4jxjezequ6dz6yusp4kn9xpepl0fgdy3mtky
- key: expired
value: "true"
- type: message
attributes:
- key: action
value: delete_task
info: ""
gaswanted: 200000
gasused: 54025
tx: null
timestamp: ""
```
### query
- Query an operator: `certikcli query oracle operator <address>`
- Query all operators: `certikcli query oracle operators`
- Query a task: `certikcli query oracle task --contract <contract> --function <function>`
- Query a response: `certikcli query oracle response --contract <contract> --function <function> --operator <operator>`
### operator-node
- start operator-node
- Command: `certikcli operator-node <flags>`
- Flags:
- `--from <account>` (required): Set operator-node owner
- `--log_level <log_level>` (optional): `DEBUG`, `INFO`, `ERROR`
- `--query_endpoint <endpoint url>` (optional): Primitive endpoint url. can be set through config file `<~/.certikcli/config/runner.toml>`
- `--query_method <http method>` (optional): Primitive endpoint http method, `GET` or `POST`. Also can be set through config file `<~/.certikcli/config/runner.toml>`
- running log:
```
I[2020-08-14|21:09:20.796] Received event module=Operator-Runner protocol=certik submodule=listener eventType=create_task
D[2020-08-14|21:09:20.796] handling create_task event from certik-chain... module=Operator-Runner protocol=certik submodule=listener type=CreateTask
D[2020-08-14|21:09:20.796] parsing create_task event from certik-chain... module=Operator-Runner protocol=certik submodule=listener type=CreateTask
I[2020-08-14|21:09:20.796] kv pair in event msg module=Operator-Runner protocol=certik submodule=listener type=CreateTask bounty=5000000uctk
I[2020-08-14|21:09:20.796] kv pair in event msg module=Operator-Runner protocol=certik submodule=listener type=CreateTask description=
I[2020-08-14|21:09:20.796] kv pair in event msg module=Operator-Runner protocol=certik submodule=listener type=CreateTask expiration="2020-08-16 01:09:19.250128897 +0000 UTC"
I[2020-08-14|21:09:20.796] kv pair in event msg module=Operator-Runner protocol=certik submodule=listener type=CreateTask creator=certik1v2h0z42vj64wj7hmfwplt4598mrhp69rwcykxf
I[2020-08-14|21:09:20.796] kv pair in event msg module=Operator-Runner protocol=certik submodule=listener type=CreateTask closingHeight=23
D[2020-08-14|21:09:20.796] parsed create_task event from certik-chain module=Operator-Runner protocol=certik submodule=listener type=CreateTask Contract=0xb511097a5Afda9a0038dc773934917aC2a38808A Function=0x00000200
D[2020-08-14|21:09:20.865] to pack response module=Operator-Runner protocol=certik submodule=listener type=CreateTask submodule=querier type=response data="&{stop:0x5157a0 rc:0xc000f3c280 reqDidTimeout:0x788110}"
D[2020-08-14|21:09:20.865] MsgRespondToTask module=Operator-Runner protocol=certik submodule=listener type=CreateTask submodule=querier score=247
D[2020-08-14|21:09:25.886] CertiK MsgTaskResponse Receipt module=Operator-Runner protocol=certik submodule=pusher type=msgRespondToTask height=0 txHash=BAD7E4E50E68B1F032265363791FAB54500D6CC4ACEA32B613CCCC5966DB63FE data= rawLog=[] info= gasUsed=0 timestamp=
I[2020-08-14|21:09:25.886] Finished push task response back to certik-chain module=Operator-Runner protocol=certik submodule=pusher type=msgRespondToTask
```