From 4a74b13adfac40e5186f65316189e25aa56fe8fc Mon Sep 17 00:00:00 2001 From: k3dz0r Date: Fri, 14 Nov 2025 07:07:07 -0300 Subject: [PATCH] cli: add provider-tools guide --- docs/cli/Guides/collaboration.md | 8 +- docs/cli/Guides/confidential-fine-tuning.md | 14 +- docs/cli/Guides/provider-tools.md | 147 ++++++++++++++++++ docs/cli/Guides/quick-guide.md | 2 +- docs/cli/commands/offers/add-slot.md | 2 +- docs/cli/commands/offers/delete-slot.md | 2 +- docs/cli/commands/offers/disable.md | 2 +- docs/cli/commands/offers/enable.md | 2 +- docs/cli/commands/offers/update-slot.md | 2 +- docs/cli/commands/offers/update.md | 2 +- docs/cli/commands/providers/update.md | 2 +- docs/cli/commands/syntax.md | 6 +- docs/cli/index.md | 85 +--------- .../developers/cli_guides/providers_offers.md | 2 +- docs/developers/index.md | 2 +- .../developers/marketplace_gui/first-steps.md | 2 +- 16 files changed, 181 insertions(+), 101 deletions(-) create mode 100644 docs/cli/Guides/provider-tools.md diff --git a/docs/cli/Guides/collaboration.md b/docs/cli/Guides/collaboration.md index 044651ad..101a0842 100644 --- a/docs/cli/Guides/collaboration.md +++ b/docs/cli/Guides/collaboration.md @@ -85,13 +85,13 @@ Both Alice and Bob can retrieve the order report (11) that confirms the authenti **Bob**: - [SPCTL](/cli) -- Provider Tools +- [Provider Tools](/cli/guides/provider-tools) ## Preparation ### Alice: 1. Build a solution -1.1. Write a Dockerfile that creates an image with the training engine. Keep in mind the special file structure inside the TEE: +1.1. Write a Dockerfile that creates an image with your code. Keep in mind the special file structure inside the TEE: | **Location** | **Purpose** | **Access** | | :- | :- | :- | @@ -351,3 +351,7 @@ Additionally, find entries in the `runtimeInfo` array that start with `"type": " ``` These hashes are of the actual solution and data that were executed within a TEE. Compare them with the solution and dataset hashes from the respective resource files. + +## Support + +If you have any issues or questions, contact Super Protocol on [Discord](https://discord.gg/superprotocol) or via the [contact form](https://superprotocol.zendesk.com/hc/en-us/requests/new). \ No newline at end of file diff --git a/docs/cli/Guides/confidential-fine-tuning.md b/docs/cli/Guides/confidential-fine-tuning.md index 5f90826d..5b7d9ac7 100644 --- a/docs/cli/Guides/confidential-fine-tuning.md +++ b/docs/cli/Guides/confidential-fine-tuning.md @@ -2,7 +2,7 @@ id: "fine-tune" title: "Confidential Fine-Tuning" slug: "/guides/fine-tune" -sidebar_position: 2 +sidebar_position: 3 --- Super Protocol enables independent parties to jointly compute over their private inputs without revealing those inputs to one another. @@ -23,7 +23,7 @@ The following is just one example of confidential collaboration. Super Protocol' ## General workflow -**Prepare the solution** +**Prepare the solution**: ```mermaid sequenceDiagram @@ -47,7 +47,7 @@ Alice and Bob download the solution ([4](/cli/guides/fine-tune#alice-and-bob-4-d If Carol cannot share the code with Alice and Bob, and a third-party auditor is involved, the workflow will differ slightly. After uploading, Carol must also create a solution offer on Super Protocol Marketplace (similar to Bob's [Step 8](/cli/guides/fine-tune#bob-8-create-an-offer)). -**Prepare the data** +**Prepare the data**: ```mermaid sequenceDiagram @@ -68,7 +68,7 @@ Alice uploads her model ([6](/cli/guides/fine-tune#alice-6-upload-the-model)) an Bob creates an offer on the Marketplace ([8](/cli/guides/fine-tune#bob-8-create-an-offer)). The offer requires Bob's manual approval for use. He shares the offer's IDs with Alice. -**Execute** +**Execute**: ```mermaid sequenceDiagram @@ -113,7 +113,7 @@ Both Alice and Bob can retrieve the order report ([12](/cli/guides/fine-tune#ali **Bob**: - [SPCTL](/cli) -- Provider Tools +- [Provider Tools](/cli/guides/provider-tools) **Carol**: @@ -411,3 +411,7 @@ Additionally, find entries in the `runtimeInfo` array that start with `"type": " ``` These hashes are of the actual solution and data that were executed within a TEE. Compare them with the solution and dataset hashes from the respective resource files. + +## Support + +If you have any issues or questions, contact Super Protocol on [Discord](https://discord.gg/superprotocol) or via the [contact form](https://superprotocol.zendesk.com/hc/en-us/requests/new). \ No newline at end of file diff --git a/docs/cli/Guides/provider-tools.md b/docs/cli/Guides/provider-tools.md new file mode 100644 index 00000000..d041a00e --- /dev/null +++ b/docs/cli/Guides/provider-tools.md @@ -0,0 +1,147 @@ +--- +id: "provider-tools" +title: "Set Up Provider Tools" +slug: "/guides/provider-tools" +sidebar_position: 1 +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Provider Tools is a Super Protocol CLI utility for registering providers and creating offers. + +## Download + + + +Create a separate directory, open a terminal there, and run the following command: +``` +curl -L https://github.com/Super-Protocol/provider-tools/releases/latest/download/provider-tools-linux-x64 -o provider-tools +chmod +x ./provider-tools +``` + + +Create a separate directory, open Terminal there, and run the following command: +``` +curl -L https://github.com/Super-Protocol/provider-tools/releases/latest/download/provider-tools-macos-x64 -o provider-tools +chmod +x ./provider-tools +``` + + +Install and launch [WSL](https://learn.microsoft.com/en-us/windows/wsl). Create a separate directory, and install Provider Tools for Linux: +``` +curl -L https://github.com/Super-Protocol/provider-tools/releases/latest/download/provider-tools-linux-x64 -o provider-tools +chmod +x ./provider-tools +``` + + + +## Set Up + +```shell +./provider-tools setup +``` + +Enter the Access token: + +```text +eyJhbGciOiJFUzI1NiJ9.eyJhZGRyZXNzIjoiMHhBN0E5NjQ4ZGE2QTg5QjBhNzFhNGMwRDQ2Y2FENDAwMDU3ODI3NGEyIiwiaWF0IjoxNjc5OTk4OTQyLCJleHAiOjE3NDMxMTQxNDJ9.x2lx90D733mToYYdOWhh4hhXn3YowFW4JxFjDFtI7helgp2uqekDHFgekT5yjbBWeHTzRap7SHbDC3VvMIDe0g +``` + +Follow the dialog: + +Q: `Do you need to generate a new authority account?`
+A: `y` (Yes) + +Q: `Do you need to generate a new action account?`
+A: `y` (Yes) + +Q: `Do you need to generate a new tokenReceiver account?`
+A: `y` (Yes) + +## Provider's SPCTL + +Providers need another copy of SPCTL configured to manage their offers. + + + + If you registered a provider using Provider Tools, you should have a configuration file created automatically in the Provider Tools directory. Its name should be similar to `spctl-config-0xB9f0b77BDbAe9fBe3E60BdC567E453f503605BAb.json`, where `0xB9f0b77BDbAe9fBe3E60BdC567E453f503605BAb` is your Authority Account wallet address. + + Copy or download the SPCTL binary to the Provider Tools directory; rename this file to `config.json` so SPCTL can recognize it as its configuration file. + + Alternatively, add the `--config` option to SPCTL commands to use the same SPCTL binary with another account. For example: + + ```shell + ./spctl orders list --my-account --type tee --config ../provider-tools/spctl-config-0xB9f0b77BDbAe9fBe3E60BdC567E453f503605BAb.json + ``` + + + As with your User Account's configuration file, you can manually create the provider's SPCTL configuration file. + + 1. In the Provider Tools directory, create a file named `config.json`. Use the following template: + + ```json title="config.json" + { + "backend": { + "url": "https://bff.superprotocol.com/graphql", + "accessToken": "eyJhbGciOiJFUzI1NiJ9.eyJhZGRyZXNzIjoiMHhBN0E5NjQ4ZGE2QTg5QjBhNzFhNGMwRDQ2Y2FENDAwMDU3ODI3NGEyIiwiaWF0IjoxNjc5OTk4OTQyLCJleHAiOjE3NDMxMTQxNDJ9.x2lx90D733mToYYdOWhh4hhXn3YowFW4JxFjDFtI7helgp2uqekDHFgekT5yjbBWeHTzRap7SHbDC3VvMIDe0g" + }, + "blockchain": { + "rpcUrl": "https://opbnb.superprotocol.com", + "smartContractAddress": "0x3C69ea105Fc716C1Dcb41859281Aa817D0A0B279", + "accountPrivateKey": "", + "authorityAccountPrivateKey": "" + }, + "storage": { + "type": "STORJ", + "bucket": "", + "prefix": "", + "writeAccessToken": "", + "readAccessToken": "" + }, + "workflow": { + "resultEncryption": { + "algo": "ECIES", + "key": "", + "encoding": "base64" + } + } + } + ``` + + 2. Do not change the preconfigured values and provide values to the following keys: + + | **Key** | **Description** | + | :- | :- | + | `"accountPrivateKey"` | Action Account private key. | + | `"authorityAccountPrivateKey"` | Authority Account private key. | + | `"bucket"` | (optional) Name of a Storj bucket. | + | `"prefix"` | (optional) Path to a directory inside the bucket. It can be empty. | + | `"writeAccessToken"` | (optional) Storj access grant with **Full** permission (**Read**, **List**, **Write**, **Delete**) for this bucket. | + | `"readAccessToken"` | (optional) Storj access grant with **Read** permission for this bucket. | + + You can find the section with your Authority and Action Accounts private keys in `provider-tools-config.json` in the Provider Tools directory. For example: + + ```json title="provider-tools-config.json" + "account": { + "authority": "0x50612a8bf52cb263825e58c72361ea58c04efa7af7e5b549ea9c2ed02059c668d", + "action": "0x0512ad96fzc01900d3ecf0987m81c7bc1fd2daf455ebb49kjce5b410c7dc6f05", + "tokenReceiver": "0x167d93786ghbf00d19b7d58065a5a59276e55ca1e621e47330f2b64d9fcb6a38" + }, + ``` + + Save and close the file. + + 3. Generate a key for order result encryption using the [`workflows generate-key`](/cli/commands/workflows/generate-key) command. Open `config.json` again and set the generated key to `workflow.resultEncryption.key`. Save and close the file. + + + +### Set up Storj access (optional) + +If you already [set up Storj access](/cli/#set-up-storj-access-optional) for your regular SPCTL, you may reuse the same credentials for your provider's SPCTL. + +If you skip this step, Super Protocol will automatically provide you with 20 GB of storage. + +## Support + +If you have any issues or questions, contact Super Protocol on [Discord](https://discord.gg/superprotocol) or via the [contact form](https://superprotocol.zendesk.com/hc/en-us/requests/new). \ No newline at end of file diff --git a/docs/cli/Guides/quick-guide.md b/docs/cli/Guides/quick-guide.md index b10548e1..801e8523 100644 --- a/docs/cli/Guides/quick-guide.md +++ b/docs/cli/Guides/quick-guide.md @@ -2,7 +2,7 @@ id: "quick-guide" title: "Quick Deployment Guide" slug: "/guides/quick-guide" -sidebar_position: 1 +sidebar_position: 2 --- This quick guide provides instructions on deploying a solution and data on Super Protocol. Its purpose is to introduce you to the logic and sequence of the CLI commands. diff --git a/docs/cli/commands/offers/add-slot.md b/docs/cli/commands/offers/add-slot.md index c00ce34b..dd4ce284 100644 --- a/docs/cli/commands/offers/add-slot.md +++ b/docs/cli/commands/offers/add-slot.md @@ -8,7 +8,7 @@ sidebar_position: 9 Adds a slot to an offer. -**Important:** This command requires SPCTL with a [provider configuration file](/cli/#for-providers). +**Important:** This command requires SPCTL with a [provider configuration file](/cli/guides/provider-tools#providers-spctl). ## Syntax diff --git a/docs/cli/commands/offers/delete-slot.md b/docs/cli/commands/offers/delete-slot.md index 63e30dda..efb0d9e4 100644 --- a/docs/cli/commands/offers/delete-slot.md +++ b/docs/cli/commands/offers/delete-slot.md @@ -8,7 +8,7 @@ sidebar_position: 11 Deletes a slot in an offer. -**Important:** This command requires SPCTL with a [provider configuration file](/cli/#for-providers). +**Important:** This command requires SPCTL with a [provider configuration file](/cli/guides/provider-tools#providers-spctl). Use the [`offers get`](/cli/commands/offers/get) command to get the IDs of all slots in an offer. Use the [`offers get-slot`](/cli/commands/offers/get-slot) command to get additional information on a slot. diff --git a/docs/cli/commands/offers/disable.md b/docs/cli/commands/offers/disable.md index 055cb1be..274311a6 100644 --- a/docs/cli/commands/offers/disable.md +++ b/docs/cli/commands/offers/disable.md @@ -8,7 +8,7 @@ sidebar_position: 6 Disables an existing enabled offer. -**Important:** This command requires SPCTL with a [provider configuration file](/cli/#for-providers). +**Important:** This command requires SPCTL with a [provider configuration file](/cli/guides/provider-tools#providers-spctl). ## Syntax diff --git a/docs/cli/commands/offers/enable.md b/docs/cli/commands/offers/enable.md index c8d8edb0..88586e91 100644 --- a/docs/cli/commands/offers/enable.md +++ b/docs/cli/commands/offers/enable.md @@ -8,7 +8,7 @@ sidebar_position: 7 Enables an existing disabled offer. -**Important:** This command requires SPCTL with a [provider configuration file](/cli/#for-providers). +**Important:** This command requires SPCTL with a [provider configuration file](/cli/guides/provider-tools#providers-spctl). ## Syntax diff --git a/docs/cli/commands/offers/update-slot.md b/docs/cli/commands/offers/update-slot.md index 1ddf8482..b9959301 100644 --- a/docs/cli/commands/offers/update-slot.md +++ b/docs/cli/commands/offers/update-slot.md @@ -8,7 +8,7 @@ sidebar_position: 10 Updates a slot in an offer. -**Important:** This command requires SPCTL with a [provider configuration file](/cli/#for-providers). +**Important:** This command requires SPCTL with a [provider configuration file](/cli/guides/provider-tools#providers-spctl). Use the [`offers get`](/cli/commands/offers/get) command to get the IDs of all slots in an offer. Use the [`offers get-slot`](/cli/commands/offers/get-slot) command to get additional information on a slot. diff --git a/docs/cli/commands/offers/update.md b/docs/cli/commands/offers/update.md index 11a20313..501a7acc 100644 --- a/docs/cli/commands/offers/update.md +++ b/docs/cli/commands/offers/update.md @@ -8,7 +8,7 @@ sidebar_position: 5 Updates information about an offer. -**Important:** This command requires SPCTL with a [provider configuration file](/cli/#for-providers). +**Important:** This command requires SPCTL with a [provider configuration file](/cli/guides/provider-tools#providers-spctl). ## Syntax diff --git a/docs/cli/commands/providers/update.md b/docs/cli/commands/providers/update.md index bc5d3f92..8b57c044 100644 --- a/docs/cli/commands/providers/update.md +++ b/docs/cli/commands/providers/update.md @@ -8,7 +8,7 @@ sidebar_position: 3 Updates information about a provider. -**Important:** This command requires SPCTL with a [provider configuration file](/cli/#for-providers). +**Important:** This command requires SPCTL with a [provider configuration file](/cli/guides/provider-tools#providers-spctl). ## Syntax diff --git a/docs/cli/commands/syntax.md b/docs/cli/commands/syntax.md index 6d71110d..877a52d7 100644 --- a/docs/cli/commands/syntax.md +++ b/docs/cli/commands/syntax.md @@ -54,4 +54,8 @@ So, the final format of this option should be one of the following: - `--solution ,`. For example, `--solution 26,25`. - `--solution `. For example, `--solution ./solution.resource.json`. -Read the descriptions of arguments and options and refer to the examples for more information. If you have any issues or questions, contact Super Protocol on [Discord](https://discord.gg/superprotocol) or via the [contact form](https://superprotocol.zendesk.com/hc/en-us/requests/new). \ No newline at end of file +Read the descriptions of arguments and options and refer to the examples for more information. If you have any issues or questions, contact Super Protocol on [Discord](https://discord.gg/superprotocol) or via the [contact form](https://superprotocol.zendesk.com/hc/en-us/requests/new). + +## Support + +If you have any issues or questions, contact Super Protocol on [Discord](https://discord.gg/superprotocol) or via the [contact form](https://superprotocol.zendesk.com/hc/en-us/requests/new). \ No newline at end of file diff --git a/docs/cli/index.md b/docs/cli/index.md index eba0c16f..39e44e41 100644 --- a/docs/cli/index.md +++ b/docs/cli/index.md @@ -10,7 +10,7 @@ import TabItem from '@theme/TabItem'; **SPCTL**—Super Protocol Control—is a versatile tool to access the Super Protocol CLI. With this tool, you can create and manage orders, offers, providers, keys, files, and more. -## Download SPCTL +## Download @@ -41,7 +41,7 @@ import TabItem from '@theme/TabItem'; You can also download and install SPCTL manually from the Super Protocol [GitHub repository](https://github.com/Super-Protocol/ctl). -## For users +## Set Up You can set up SPCTL using the `./spctl setup` command or by manually creating a configuration file. @@ -146,85 +146,6 @@ If you use a free Storj account, your files will become unavailable after the en | `"writeAccessToken"` | Storj access grant with **Full** permission (**Read**, **List**, **Write**, **Delete**) for this bucket. | | `"readAccessToken"` | Storj access grant with **Read** permission for this bucket. | -## For providers - -This section is for providers only. Skip it if you are a regular user. - -Providers need another copy of SPCTL configured to manage their offers. - - - - If you registered a provider using Provider Tools, you should have a configuration file created automatically in the Provider Tools directory. Its name should be similar to `spctl-config-0xB9f0b77BDbAe9fBe3E60BdC567E453f503605BAb.json`, where `0xB9f0b77BDbAe9fBe3E60BdC567E453f503605BAb` is your Authority Account wallet address. - - Rename this file to `config.json` so SPCTL can recognize it as its configuration file. Copy or download the SPCTL binary to the Provider Tools directory. - - Alternatively, use the `--config` option with SPCTL commands to use the same SPCTL binary with a different account. For example: - - ```shell - ./spctl orders list --my-account --type tee --config ./spctl-config-0xB9f0b77BDbAe9fBe3E60BdC567E453f503605BAb.json - ``` - - - As with your User Account's configuration file, you can manually create the provider's SPCTL configuration file. - - 1. In the Provider Tools directory, create a file named `config.json`. Use the following template: - - ```json title="config.json" - { - "backend": { - "url": "https://bff.superprotocol.com/graphql", - "accessToken": "eyJhbGciOiJFUzI1NiJ9.eyJhZGRyZXNzIjoiMHhBN0E5NjQ4ZGE2QTg5QjBhNzFhNGMwRDQ2Y2FENDAwMDU3ODI3NGEyIiwiaWF0IjoxNjc5OTk4OTQyLCJleHAiOjE3NDMxMTQxNDJ9.x2lx90D733mToYYdOWhh4hhXn3YowFW4JxFjDFtI7helgp2uqekDHFgekT5yjbBWeHTzRap7SHbDC3VvMIDe0g" - }, - "blockchain": { - "rpcUrl": "https://opbnb.superprotocol.com", - "smartContractAddress": "0x3C69ea105Fc716C1Dcb41859281Aa817D0A0B279", - "accountPrivateKey": "", - "authorityAccountPrivateKey": "" - }, - "storage": { - "type": "STORJ", - "bucket": "", - "prefix": "", - "writeAccessToken": "", - "readAccessToken": "" - }, - "workflow": { - "resultEncryption": { - "algo": "ECIES", - "key": "", - "encoding": "base64" - } - } - } - ``` - - 2. Do not change the preconfigured values and provide values to the following keys: - - | **Key** | **Description** | - | :- | :- | - | `"accountPrivateKey"` | The provider's Action Account private key. | - | `"authorityAccountPrivateKey"` | The provider's Authority Account private key. | - | `"bucket"` | (optional) Name of a Storj bucket. | - | `"prefix"` | (optional) Path to a directory inside the bucket. It can be empty. | - | `"writeAccessToken"` | (optional) Storj access grant with **Full** permission (**Read**, **List**, **Write**, **Delete**) for this bucket. | - | `"readAccessToken"` | (optional) Storj access grant with **Read** permission for this bucket. | - - You can find the section with your Authority and Action Accounts private keys in `provider-tools-config.json` in the Provider Tools directory. For example: - - ```json title="provider-tools-config.json" - "account": { - "authority": "0x50612a8bf52cb263825e58c72361ea58c04efa7af7e5b549ea9c2ed02059c668d", - "action": "0x0512ad96fzc01900d3ecf0987m81c7bc1fd2daf455ebb49kjce5b410c7dc6f05", - "tokenReceiver": "0x167d93786ghbf00d19b7d58065a5a59276e55ca1e621e47330f2b64d9fcb6a38" - }, - ``` - - Save and close the file. - - 3. Generate a key for order result encryption using the [`workflows generate-key`](/cli/commands/workflows/generate-key) command. Open `config.json` again and set the generated key to `workflow.resultEncryption.key`. Save and close the file. - - - ## Support -If you have any issues or questions, contact Super Protocol on [Discord](https://discord.gg/superprotocol). The Community Managers will be happy to help you. \ No newline at end of file +If you have any issues or questions, contact Super Protocol on [Discord](https://discord.gg/superprotocol) or via the [contact form](https://superprotocol.zendesk.com/hc/en-us/requests/new). \ No newline at end of file diff --git a/docs/developers/cli_guides/providers_offers.md b/docs/developers/cli_guides/providers_offers.md index 9e1941c3..4fd12887 100644 --- a/docs/developers/cli_guides/providers_offers.md +++ b/docs/developers/cli_guides/providers_offers.md @@ -600,4 +600,4 @@ If there is an error, check `error.log` in the Provider Tools directory and `err ## Support -If you have any issues or questions, contact Super Protocol on [Discord](https://discord.gg/superprotocol). The Community Managers will be happy to help you. \ No newline at end of file +If you have any issues or questions, contact Super Protocol on [Discord](https://discord.gg/superprotocol) or via the [contact form](https://superprotocol.zendesk.com/hc/en-us/requests/new). \ No newline at end of file diff --git a/docs/developers/index.md b/docs/developers/index.md index c8d5c39b..d8bcab43 100644 --- a/docs/developers/index.md +++ b/docs/developers/index.md @@ -30,7 +30,7 @@ When you know the basics, try SPCTL—the Super Protocol CLI tool: ## Create your provider and offers with CLI 1. Follow the [Providers and Offers](/developers/cli_guides/providers_offers) guide to create your provider and a first offer. 2. Follow the [Moderation Guidelines](/developers/marketplace/moderation/) to approve your offer for Marketplace GUI. -3. [Update SPCTL configuration](/cli/#for-providers) as a provider to enable management of your provider and offers. +3. [Update SPCTL configuration](/cli/guides/provider-tools#providers-spctl) as a provider to enable management of your provider and offers. 4. Use [SPCTL commands](/developers/cli_guides/providers_offers#faq) to manage your provider and offers. Join us on [Discord](https://discord.gg/superprotocol). The Super Protocol team welcomes any feedback and questions! \ No newline at end of file diff --git a/docs/developers/marketplace_gui/first-steps.md b/docs/developers/marketplace_gui/first-steps.md index 1d7a5aff..60611168 100644 --- a/docs/developers/marketplace_gui/first-steps.md +++ b/docs/developers/marketplace_gui/first-steps.md @@ -214,4 +214,4 @@ Then, click the **Connect Wallet** button in the Marketplace GUI again and sel ## Support -If you have any issues or questions, contact Super Protocol on [Discord](https://discord.gg/superprotocol). Community Managers will be happy to help. \ No newline at end of file +If you have any issues or questions, contact Super Protocol on [Discord](https://discord.gg/superprotocol) or via the [contact form](https://superprotocol.zendesk.com/hc/en-us/requests/new). \ No newline at end of file