Deploy a Elastic Proving Service

In this tutorial, we'll show you how to deploy a template Poseidon Hash prover service on Snarkify Cloud.

Deploy a Elastic Proving Service

  1. Log in Snarkify Cloud Console with your GitHub account.

  2. For first time users, we have prepared a demo service for you to try it out. Just Click Try It First to get started. You will be redirected to github for some configurations if this is the first service on your team.

  1. Once the configuration is done, you can continue to deploy the demo service. You can simply use the default values and directly click Deploy .🚀

Deploying a demo service will clone the template repository into your github account first, don't get surprised : )

  1. The service will be rendered Unready for about 5 minutes while our backend pipeline is actively building and deploying your code. Grab some coffee :).

  1. Once the deployment succeeds, the service status will become Ready , and an Endpoint will be generated and shown. Note the Endpoint of your deployed service, and we will need it to issue a proof generation request to your prover service.

  1. Alternatively, you can also deploy your own prover code into Snarkify cloud. Please checkout Integrate Snarkify SDK.

Issue a Proof Generation Request

In this section, we will show you how to issue a proof generation request to your prover service and how to query the generated proof from the command line.

Create an API key

  • Go to the "Access Keys" tab, click the Create Key button, and give it a good name.

  • Upon clicking the Create button, your key will be generated and shown. Please save your access key securely, as the key will only be shown once.

Issue a Proof Generation Request

Get your endpoint and access key ready, and type the following command in your terminal.

ENDPOINT=<your_endpoint_url>
ACCESS_KEY=<your_access_key>

Use the following curl command to issue your proof generation request against the demo prover:

curl --request POST $ENDPOINT \
--header "x-api-key: $ACCESS_KEY" \
--header "Content-Type: application/json" \
--data-raw '{
    "input": {
        "private_input": [0, 1, 2, 3, 4],
        "public_input": "20304616028358001435806807494046171997958789835068077254356069730773893150537"
    }
}
'

Requests are processed asynchronously by your prover service. You will receive a confirmation response with a PENDING state like the following,

{
    "service_id": "0872ccea325846ee9dd6f697b9af1863",
    "task_id": "ec5e67fecbab4f66b5c4a1551105e795",
    "service_name": "poseidon",
    "creator_id": "5a5fd35f890349aea7ac9dc17d97d32b",
    "result": null,
    "state": "PENDING",
    "input": "{\"private_input\": [0, 1, 2, 3, 4], \"public_input\": \"13037709793114148810823325920380362524528554380279235267325741570708489436263\"}",
    "started": null,
    "finished": null,
    "created": "2023-11-04T03:14:25"
}

Please note the task_id for the next step.

Query results

From Command Line

Get your task ID and access key ready, and type the following command in your terminal.

TASK_ID=<your_task_id>
ACCESS_KEY=<your_access_key>

The proof generation result can be queried with the following command,

curl --request GET "https://api.snarkify.io/v1/tasks/$TASK_ID" \
--header "x-api-key: $ACCESS_KEY"

Then you will see the task information like below once the task is processed:

{
    "service_id": "aa143bd5b48647569720096ab7493cd2",
    "task_id": "4b1fd782a0f44f499a88a8cab31f066f",
    "service_name": "poseidon",
    "creator_id": "e95d87b33f8f45ea9e1f845eca18031d",
    "result": "\"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\"",
    "state": "SUCCESS",
    "input": "{\"private_input\": [0, 1, 2, 3, 4], \"public_input\": \"20304616028358001435806807494046171997958789835068077254356069730773893150537\"}",
    "started": "2023-11-10T02:08:22",
    "finished": "2023-11-10T02:08:23",
    "created": "2023-11-10T02:08:22"
}

From Cloud Console

Alternatively, you can also check your task history through our UI:

  1. click the setting button

  1. Go to the Task Hisotry page

What's Next

Following this tutorial to make your own ZK circuits cloud-ready with the snarkify-sdk.

Last updated