Skip to main content

On Demand Jobs

On demand jobs are special kind of jobs that can be used to access a processor on demand from a dapp. This is achieved by having the job open a websocket connection to the acurast websocket service and setup handlers to process incoming messages.

On Demand job script

The snippet below shows a very simple on demand job script that setups a websocket connection to the acurast websocket service and registers a payload handler that just sends back the message it receives. // open a websocket connection to the provided server
"wss:// ",
() => {
print("open: success") => { // register a handler for incoming messages, payload.payload) // just send back the received message
(err) => {
print("open: error " + err)

An on demand job should be scheduled with a long duration since the job needs to continuously run in order to be able to process incoming messages.

dApp integration

A dApp can start interacting with a running on demand job by integrating the Acurast typescript SDK. See the example dapp for on how a simple integration works.

Acurast websocket service

The Acurast websocket service is a P2P service that allows to simply send messages to clients connected to it. Clients are authenticated during the initial connection setup by signing a challenge with their private key (in case of a processor, that would be the private key specifically generated for the job creator).

The initial connection setup and authentication flow is as follows:

  • Client sends an init message to the websocket service.
  • Websocket service responds with a challenge message, providing the bytes to be signed.
  • Client creates the payload to sign by concatenating the challenge bytes, the client public key and a 16 bytes nonce.
  • Client signs the payload and responds to the challenge by sending beck the signature alongside the originally received challenge bytes, client public key and nonce.
  • Websocket service verifies the signature and if it is valid accepts the connection.

After a client is authenticated, it can be addressed by specifying its public key as the recipient.