Page 14 of the white paper
- Wait until a query is received from the user-created smart contract
- Select nodes from the set of all valid session IDs
- Broadcast the query to the selected nodes
- Wait until commit messages are received from enough oracles to account for faulty nodes
- Broadcast that enough messages were received
- Wait until decommitments are received from enough oracles to account for honest nodes
- Send the answer along with the nodes that provided it to the user-created smart contract
Page 35 of the white paper
- Receive a partial secret key
- Receive individual aggregate answer from the data source
- Create a partial signature with the partial secret key and answer
- Broadcast the partial signature with the answer and session ID
- Wait until enough nodes have commited their answers
- Send commitments to provider smart contract
- Broadcast the prepared message request
- Wait until enough prepared messages have been received
- Broadcast that enough messages were received
- Wait until decommitments are received from enough oracles to account for honest nodes
- If no valid whole signature has been received by the on-chain smart contract
- Aggregate the received decommitments into a valid signature
- Send the valid signatures to the on-chain smart contract
- Send the decommitments to the provider smart contract
Page 36 of the white paper
- Wait until enough nodes have commited their answers and decommitment messages are received
- Send reward to oracles included in the accepted decommitment set