How to Contribute
To contribute your zk-tasks to the UBI Task Pool, please follow these steps. For each task, submit a separate application. If you have multiple tasks, kindly submit individual applications for each.
Step 1: Fill out Information:
Provide details below and create a new GitHub Issue.
ZK-Task Information:
Describe your zk-task, including task details, completion requirements, and minimal resource prerequisites.
Resource Requirements:
RAM:
Storage:
vCPU numbers:
GPU:
Input Parameters:
Specify input parameters required for your zk-task.
Task Completion:
Clarify the method to complete your task (customized binary, or other).
Output:
Describe the zk proof generated as output.
Verification:
Explain how to verify your proof.
Additional Parameters:
Mention any other necessary parameters.
A complete example: Include the task sample, proof, verify result etc.
Note: Repeat these steps for each zk-task if multiple tasks are being submitted.
Example Application:
ZK-Task Information:
Description: Implementing a customized binary for secure data processing.
Resource Requirements:
RAM: 16GB
Storage: 200GB
vCPU numbers: 4
GPU: Nvidia GTX 1080
Input Parameters: JSON file with task specifications.
Task Completion: Utilize the provided binary for data processing.
Output: ZK proof generated after task completion.
Verification: Refer to the attached verification guide.
Additional Parameters: Any additional information, requirements, or dependencies.
A complete example: Include the task sample, proof, verify result etc.
Submission Guidelines:
Fill out the information above.
Create a new GitHub Issue. with this information.Once the issue is reviewed and approved, we will provide you with the "ubi_engine_base_url" for you to submit your zk-task.
Label the issue with "zk-task" and any specific task identifiers.
We appreciate your contributions to elevate the UBI Task Pool with your innovative zk-tasks.
Step 2: Submit your ZK-task to the UBI Task Pool
You can submit your zk-task to the pool through the API.
Method: [POST] {ubi_hub_base_url}/v1/tasks
Request Parameters:
//Parameters examples:
{
"name": "example_task",
"type": 1,
"zk_type": "fil-c2-512M",
"input_param": "example_input_zsdt_url",
"verify_param": "example_verify_url",
"resource_id": 1
}
name
string
Task name
type
int
Task type 0: CPU; 1: GPU
zk_type
string
ZK type (e.g., fil-c2-512M、fil-c2-32G)
input_param
string
Network storage address of the input parameter file for executing UBI-task, compressed in zsdt format (recommended to use MCS storage)
verify_param
string
Network storage address of the input parameter file for verifying UBI-task results (recommended to use MCS storage)
resource_id
int
Resource ID 1,2,3,4
Response:
// return the task_id
{
"task_id": 1,
}
Request Demo
package main
import (
"bytes"
"encoding/json"
"fmt"
"github.com/swanchain/ubi-benchmark/utils"
"net/http"
)
func main() {
var task = Task{
Name: "example_task",
Type: 1,
ZkType: "fil-c2-512M",
InputParam: "example_input_zsdt_url",
VerifyParam: "example_verify_url",
ResourceID: GPU512,
}
jsonData, err := json.Marshal(task)
if err != nil {
log.Errorf("JSON encoding failed: %v", err)
return
}
resp, err := http.Post(url, "application/json", bytes.NewBuffer(jsonData))
if err != nil {
log.Fatal("POST request failed: %v", err)
return
}
defer resp.Body.Close()
if resp.StatusCode == http.StatusOK {
fmt.Printf("Request successful, status code: %d \n", resp.StatusCode)
} else {
fmt.Printf("Request failed, status code: %d \n", resp.StatusCode)
}
}
type Task struct {
Name string `json:"name"`
Type int `json:"type"`
ZkType string `json:"zk_type"`
InputParam string `json:"input_param"`
VerifyParam string `json:"verify_param"`
ResourceID int `json:"resource_id"`
}
const (
CPU512 = 1
CPU32G = 2
GPU512 = 3
GPU32G = 4
)
1
CPU512
5
3
30
2
CPU32G
8
275
50
3
GPU512
5
3
30
4
GPU32G
8
275
50
Note: If the configurations mentioned above (GPU/CPU) do not meet your requirements, please leave your specific requirements in the GitHub issue.
Step 3: Get the ZK-Task Proof
You can request your zk-task's result from the pool through the API.
Method: [GET] {ubi_hub_base_url}/v1/tasks/{taskId}
Request Parameters:
// Parameters Examples:
{
"id": 1,
"type": 1,
"zk_type": "fil-c2-512M",
"proof": "xxxxx"
}
id
string
Task id
type
int
Task type
zk_type
string
ZK type
proof
string
Proof/result after the completion of the task
Response:
// return the task result.
{
"proof": "xxxxx",
}
Thank you for your contribution, and we hope your zk-task brings added value to the Swan decentralized computing ecosystem!
Last updated