@primuslabs/por-client-sdk 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +74 -40
  2. package/dist/cli.js +17 -3
  3. package/dist/cli.js.map +1 -1
  4. package/dist/client/data_service_client.d.ts +1 -0
  5. package/dist/client/data_service_client.js +1 -0
  6. package/dist/client/data_service_client.js.map +1 -1
  7. package/dist/client/por_client.d.ts +3 -3
  8. package/dist/client/por_client.js +16 -12
  9. package/dist/client/por_client.js.map +1 -1
  10. package/dist/client/prover_client.d.ts +12 -6
  11. package/dist/client/prover_client.js +15 -18
  12. package/dist/client/prover_client.js.map +1 -1
  13. package/dist/client/zktls_client.d.ts +3 -3
  14. package/dist/client/zktls_client.js +42 -25
  15. package/dist/client/zktls_client.js.map +1 -1
  16. package/dist/config_schema.d.ts +167 -0
  17. package/dist/config_schema.js +88 -0
  18. package/dist/config_schema.js.map +1 -0
  19. package/dist/datasource/aster.d.ts +24 -0
  20. package/dist/datasource/aster.js +51 -0
  21. package/dist/datasource/aster.js.map +1 -0
  22. package/dist/datasource/base_exchange.d.ts +9 -0
  23. package/dist/datasource/base_exchange.js +13 -0
  24. package/dist/datasource/base_exchange.js.map +1 -0
  25. package/dist/datasource/binance.d.ts +40 -13
  26. package/dist/datasource/binance.js +46 -39
  27. package/dist/datasource/binance.js.map +1 -1
  28. package/dist/datasource/exchange_manager.d.ts +15 -0
  29. package/dist/datasource/exchange_manager.js +20 -0
  30. package/dist/datasource/exchange_manager.js.map +1 -0
  31. package/dist/datasource/helper.d.ts +1 -0
  32. package/dist/datasource/helper.js +6 -0
  33. package/dist/datasource/helper.js.map +1 -1
  34. package/dist/datasource/index.d.ts +2 -0
  35. package/dist/datasource/index.js +2 -0
  36. package/dist/datasource/index.js.map +1 -1
  37. package/dist/index.d.ts +1 -0
  38. package/dist/index.js +1 -0
  39. package/dist/index.js.map +1 -1
  40. package/dist/types.d.ts +4 -2
  41. package/dist/types.js +1 -1
  42. package/dist/types.js.map +1 -1
  43. package/package.json +6 -3
package/README.md CHANGED
@@ -17,75 +17,109 @@ npm run build
17
17
 
18
18
  ## Getting Started
19
19
 
20
- 1. Copy `.env.example` to `.env` and configure your environment variables (see [Configuration](#configuration)).
20
+ 1. Copy `.config.example.yml` to `.config.yml` and configure your environment variables (see [Configuration](#configuration)).
21
21
 
22
22
  2. Ensure required fields are set:
23
23
 
24
- * `TOKEN` and `PROJECT_ID` for authentication
25
- * `PROGRAM_ID` for program execution
24
+ * `app.identity.token` and `app.identity.projectId` for authentication
25
+ * `app.identity.programId` for program execution
26
26
 
27
27
  3. Run an example:
28
28
 
29
29
  ```bash
30
- npx tsx example/okx.ts
30
+ npx tsx example/binance.ts
31
31
  ```
32
32
 
33
33
 
34
34
  ## Configuration
35
35
 
36
- The SDK allows flexible configuration from **three sources**, applied in **priority order (highest to lowest)**:
36
+ ### Structure Overview
37
37
 
38
- 1. **Environment variables** (`.env` or `process.env`)
39
- 2. **User-provided options** (passed to the `PoRClient` constructor)
40
- 3. **Default values** defined in the SDK
38
+ ```yaml
39
+ app: # Core application configuration
40
+ identity: # Application identity and authorization info
41
+ runtime: # Runtime environment configuration
42
+ services: # External service endpoints
43
+ blockchain: # Blockchain connection and signer info
41
44
 
42
- > Higher-priority values overwrite lower-priority values.
45
+ exchanges: # Exchange account configurations
46
+ binance: # Binance exchange accounts
47
+ aster: # Aster exchange accounts
48
+ ```
43
49
 
44
- ### Configuration Fields and Defaults
45
50
 
46
- | Env Variable | SDK Field | Type | Required / Conditions | Default | Description |
47
- | ------------------ | ---------------- | ------ | --------------------- | -------------------------------------- | ---------------------------------------------------------- |
48
- | `TOKEN` | `token` | string | Required | `""` | Authentication token assigned by Primus Labs. |
49
- | `PROJECT_ID` | `projectId` | string | Required | `""` | Project identifier associated with your account. |
50
- | `PROGRAM_ID` | `programId` | string | Required | `""` | Program identifier for zkVM execution. |
51
- | `LOG_VERBOSE` | `logVerbose` | number | Optional | `0` | Logging verbosity level (`0` = off; higher = more detail). |
52
- | `RPC_URL` | `rpcUrl` | string | Optional | `https://mainnet.base.org` | RPC endpoint for blockchain interactions. |
51
+ ### Application Configuration (`app`)
53
52
 
53
+ #### 1. Identity (`app.identity`)
54
54
 
55
- ### User-provided Configuration Example
55
+ Contains application authorization and identification.
56
56
 
57
- ```ts
58
- import { PoRClient } from "@primuslabs/por-client-sdk";
57
+ | Field | Type | Description | Example |
58
+ | --------- | ------ | ------------------------------------------------ | ----------------- |
59
+ | token | string | Authentication token issued for this application | `"my-auth-token"` |
60
+ | projectId | string | Unique project identifier | `"project-123"` |
61
+ | programId | string | Unique program identifier | `"program-abc"` |
59
62
 
60
- const client = new PoRClient({
61
- token: "my-token",
62
- projectId: "my-project",
63
- programId: "my-program",
64
- logVerbose: 2,
65
- });
66
- ```
63
+ #### 2. Runtime (`app.runtime`)
67
64
 
65
+ Specifies the runtime environment and logging.
68
66
 
69
- ## Using the SDK
67
+ | Field | Type | Default | Description | Example |
68
+ | ---------- | ------- | -------------- | ------------------------------------------------------ | -------------- |
69
+ | version | string | - | Application version in semantic version format (x.y.z) | `"1.0.0"` |
70
+ | env | string | `"production"` | Runtime environment (`development` or `production`) | `"production"` |
71
+ | mode | string | `"POR"` | Application execution mode (`POR` or `DVC`) | `"POR"` |
72
+ | logVerbose | integer | `0` | Log verbosity (0 = off, higher = more detail) | `3` |
70
73
 
71
- ```ts
72
- import { DataSource, PoRClient } from "@primuslabs/por-client-sdk";
74
+ #### 3. Services (`app.services`)
73
75
 
74
- async function main() {
75
- const ds = new DataSource.Okx();
76
- const requestParams = ds.getSampleRequests();
76
+ External service endpoints used by the application.
77
77
 
78
- const client = new PoRClient();
79
- const result = await client.run(requestParams);
78
+ ##### zkVM Service (`app.services.zkvm`)
80
79
 
81
- console.log("Result:", JSON.stringify(result));
82
- }
80
+ | Field | Type | Description | Example |
81
+ | ----- | ------ | ------------------------- | ---------------------------- |
82
+ | url | string | zkVM service endpoint URL | `"https://zkvm.example.com"` |
83
83
 
84
- main();
85
- ```
84
+ ##### Data Service (`app.services.data`)
85
+
86
+ | Field | Type | Description | Example |
87
+ | ----- | ------ | ------------------------- | ---------------------------- |
88
+ | url | string | Data service endpoint URL | `"https://data.example.com"` |
89
+
90
+ #### 4. Blockchain (`app.blockchain`)
91
+
92
+ Blockchain connection and signer configuration.
93
+
94
+ | Field | Type | Default | Description | Example |
95
+ | ------- | ------ | -------- | ------------------------------------------------------------------------ | --------------------------- |
96
+ | network | string | `"base"` | Target blockchain network (`base` or `base-sepolia`) | `"base-sepolia"` |
97
+ | rpcUrl | string | - | Optional custom RPC URL. If not set, default RPC for the network is used | `"https://rpc.example.com"` |
98
+ | signer | object | - | Transaction signer info (required if `mode` is `DVC`) | - |
99
+
100
+ ##### Signer (`app.blockchain.signer`)
101
+
102
+ | Field | Type | Description | Example |
103
+ | ---------- | ------ | ------------------------------------------- | ------------------ |
104
+ | privateKey | string | Private key to sign blockchain transactions | `"0xabcdef123..."` |
105
+
106
+ ---
107
+
108
+ ### Exchange Accounts (`exchanges`)
109
+
110
+ Supports multiple exchange accounts. At least one exchange is required. Now only support Binance and Aster.
111
+
112
+ #### Fields of `exchange`
113
+
114
+ | Field | Type | Description | Example |
115
+ | ----------- | ------- | ---------------------------------------------- | --------------------------- |
116
+ | apiKey | string | API key used to authenticate with Binance | `"binance-key-123"` |
117
+ | apiSecret | string | API secret corresponding to the API key | `"binance-secret-abc"` |
118
+ | enabled | boolean | Whether this account is active (default: true) | `true` |
119
+ | description | string | Optional description for this account | `"My Binance spot account"` |
120
+ | kind | array | Supported Binance account types | `["spot","usds-futures"]` |
86
121
 
87
122
 
88
123
  ## Data Sources
89
124
 
90
125
  > TODO: Document supported data sources and sample requests.
91
-
package/dist/cli.js CHANGED
@@ -1,9 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import { Command } from "commander";
3
3
  import { ProverClient } from "./client/prover_client.js";
4
+ import { loadConfigFromFile } from "./config_schema.js";
4
5
  import fs from "fs";
5
6
  async function main() {
6
- const api = new ProverClient();
7
+ const config = loadConfigFromFile();
8
+ const api = new ProverClient(config.app.services.zkvm.url);
7
9
  const program = new Command();
8
10
  program
9
11
  .command("uploadProgram")
@@ -24,7 +26,13 @@ async function main() {
24
26
  .action(async (opts) => {
25
27
  console.log("submitTask");
26
28
  const attestation_data = fs.readFileSync(opts.filepath, { encoding: "utf-8" });
27
- const result = await api.submitTask(attestation_data);
29
+ const result = await api.submitTask({
30
+ token: config.app.identity.token,
31
+ projectId: config.app.identity.projectId,
32
+ programId: config.app.identity.programId,
33
+ attestationData: attestation_data,
34
+ zktlsMode: config.app.runtime.mode,
35
+ });
28
36
  console.log('Task submitted:', result);
29
37
  });
30
38
  program
@@ -43,7 +51,13 @@ async function main() {
43
51
  .action(async (opts) => {
44
52
  console.log("submitTask and getResult.");
45
53
  const attestation_data = fs.readFileSync(opts.filepath, { encoding: "utf-8" });
46
- const result = await api.doZkVM(attestation_data);
54
+ const result = await api.doZkVM({
55
+ token: config.app.identity.token,
56
+ projectId: config.app.identity.projectId,
57
+ programId: config.app.identity.programId,
58
+ attestationData: attestation_data,
59
+ zktlsMode: config.app.runtime.mode,
60
+ });
47
61
  console.log('result:', result);
48
62
  });
49
63
  program.parseAsync();
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,KAAK,UAAU,IAAI;IACjB,MAAM,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,gBAAgB,CAAC;SAC7B,cAAc,CAAC,uBAAuB,EAAE,mBAAmB,CAAC;SAC5D,MAAM,CAAC,eAAe,EAAE,cAAc,EAAE,cAAc,CAAC;SACvD,MAAM,CAAC,qBAAqB,EAAE,gBAAgB,EAAE,KAAK,CAAC;SACtD,MAAM,CAAC,6BAA6B,EAAE,aAAa,EAAE,sBAAsB,CAAC;SAC5E,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,qBAAqB,CAAC,CAAC;QAClG,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,aAAa,CAAC;SAC1B,cAAc,CAAC,uBAAuB,EAAE,4BAA4B,CAAC;SACrE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1B,MAAM,gBAAgB,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/E,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,YAAY,CAAC;SACzB,cAAc,CAAC,oBAAoB,EAAE,SAAS,CAAC;SAC/C,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAGL,OAAO;SACJ,OAAO,CAAC,wBAAwB,CAAC;SACjC,WAAW,CAAC,2BAA2B,CAAC;SACxC,cAAc,CAAC,uBAAuB,EAAE,4BAA4B,CAAC;SACrE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACzC,MAAM,gBAAgB,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/E,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEL,OAAO,CAAC,UAAU,EAAE,CAAC;AACvB,CAAC;AAED,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ export interface SubmitTaskResult {
8
8
  taskId: string;
9
9
  taskTxHash: string;
10
10
  taskAttestors: string[];
11
+ submitterAddress: string;
11
12
  }
12
13
  export declare class DataServiceClient {
13
14
  private readonly client;
@@ -17,6 +17,7 @@ export class DataServiceClient {
17
17
  taskId: raw.taskId,
18
18
  taskTxHash: raw.taskTxHash,
19
19
  taskAttestors: raw.taskAttestors,
20
+ submitterAddress: raw.submitterAddress,
20
21
  };
21
22
  }
22
23
  async checkPayment(bizId, projectId, token) {
@@ -1 +1 @@
1
- {"version":3,"file":"data_service_client.js","sourceRoot":"","sources":["../../src/client/data_service_client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAe1C,MAAM,OAAO,iBAAiB;IACX,MAAM,CAAgB;IACvC,YAAY,OAAe,EAAE,UAAkB,MAAM;QACnD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,UAAU,CACd,KAAa,EACb,SAAiB,EACjB,KAAa;QAEb,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAC/B,4BAA4B,EAC5B;YACE,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;YAC5B,OAAO,EAAE;gBACP,WAAW,EAAE,KAAK;aACnB;SACF,CACF,CAAC;QAEF,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAChD,OAAO;YACL,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,aAAa,EAAE,GAAG,CAAC,aAAa;SACjC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,KAAa,EACb,SAAiB,EACjB,KAAa;QAEb,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAC/B,+BAA+B,EAC/B;YACE,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;YAC5B,OAAO,EAAE;gBACP,WAAW,EAAE,KAAK;aACnB;SACF,CACF,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAGO,MAAM,CAAI,EAAU,EAAE,IAAoB;QAChD,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QAED,gBAAgB;QAChB,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QACzB,MAAM,IAAI,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IAClE,CAAC;CACF"}
1
+ {"version":3,"file":"data_service_client.js","sourceRoot":"","sources":["../../src/client/data_service_client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAgB1C,MAAM,OAAO,iBAAiB;IACX,MAAM,CAAgB;IACvC,YAAY,OAAe,EAAE,UAAkB,MAAM;QACnD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,UAAU,CACd,KAAa,EACb,SAAiB,EACjB,KAAa;QAEb,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAC/B,4BAA4B,EAC5B;YACE,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;YAC5B,OAAO,EAAE;gBACP,WAAW,EAAE,KAAK;aACnB;SACF,CACF,CAAC;QAEF,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAChD,OAAO;YACL,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,aAAa,EAAE,GAAG,CAAC,aAAa;YAChC,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;SACvC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,KAAa,EACb,SAAiB,EACjB,KAAa;QAEb,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAC/B,+BAA+B,EAC/B;YACE,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;YAC5B,OAAO,EAAE;gBACP,WAAW,EAAE,KAAK;aACnB;SACF,CACF,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAGO,MAAM,CAAI,EAAU,EAAE,IAAoB;QAChD,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QAED,gBAAgB;QAChB,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QACzB,MAAM,IAAI,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IAClE,CAAC;CACF"}
@@ -1,12 +1,12 @@
1
1
  import { Options, RequestParamsInput } from "../types.js";
2
- import { SdkConfig } from "../config.js";
2
+ import { AppConfig } from "../config_schema.js";
3
3
  export declare class PoRClient {
4
4
  private readonly config;
5
5
  private zktlsClient;
6
6
  private proverClient;
7
- constructor(config?: SdkConfig);
7
+ constructor(config: AppConfig);
8
8
  /**
9
9
  * zkTLS + zkVM (optional)
10
10
  */
11
- run(requestParams: RequestParamsInput, options?: Options): Promise<any>;
11
+ run(params: RequestParamsInput, options?: Options): Promise<any>;
12
12
  }
@@ -2,31 +2,35 @@ import { saveToFile } from "../utils.js";
2
2
  import { getDefaultOptions } from "../types.js";
3
3
  import { ZkTLSClient } from "./zktls_client.js";
4
4
  import { ProverClient } from "./prover_client.js";
5
- import { resolveSdkConfig, printConfig } from "../config.js";
6
5
  export class PoRClient {
7
6
  config;
8
7
  zktlsClient;
9
8
  proverClient;
10
- constructor(config = {}) {
11
- this.config = resolveSdkConfig(config);
12
- printConfig(this.config, 'PoRClient');
13
- this.zktlsClient = new ZkTLSClient(this.config);
14
- this.proverClient = new ProverClient(this.config);
9
+ constructor(config) {
10
+ this.config = { ...config };
11
+ this.zktlsClient = new ZkTLSClient({ ...config });
12
+ this.proverClient = new ProverClient(config.services.zkvm.url);
15
13
  }
16
14
  /**
17
15
  * zkTLS + zkVM (optional)
18
16
  */
19
- async run(requestParams, options = {}) {
17
+ async run(params, options = {}) {
20
18
  const opts = getDefaultOptions(options);
21
19
  console.log("do zkTLS");
22
- const attestationData = await this.zktlsClient.doZkTLS(requestParams, opts);
23
- if (attestationData) {
24
- // optional
20
+ const attestationData = await this.zktlsClient.doZkTLS(params, opts);
21
+ const hasAny = Object.values(attestationData).some(v => v !== undefined);
22
+ if (opts.saveAtt && hasAny) {
25
23
  saveToFile("attestation.json", JSON.stringify(attestationData));
26
24
  }
27
- if (opts.runZkvm && attestationData) {
25
+ if (opts.runZkvm && hasAny) {
28
26
  console.log("do zkVM");
29
- const result = await this.proverClient.doZkVM(JSON.stringify(attestationData));
27
+ const result = await this.proverClient.doZkVM({
28
+ token: this.config.identity.token,
29
+ projectId: this.config.identity.projectId,
30
+ programId: this.config.identity.programId,
31
+ attestationData: JSON.stringify(attestationData),
32
+ zktlsMode: this.config.runtime.mode,
33
+ });
30
34
  console.log("result", result);
31
35
  return result;
32
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"por_client.js","sourceRoot":"","sources":["../../src/client/por_client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAW,iBAAiB,EAAsB,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAa,gBAAgB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAExE,MAAM,OAAO,SAAS;IACH,MAAM,CAAsB;IACrC,WAAW,CAAc;IACzB,YAAY,CAAe;IAEnC,YAAY,SAAoB,EAAE;QAChC,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACvC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACtC,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,aAAiC,EAAE,UAAmB,EAAE;QAChE,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAExC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxB,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAC5E,IAAI,eAAe,EAAE,CAAC;YACpB,WAAW;YACX,UAAU,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,IAAI,eAAe,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC;YAC/E,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC9B,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO,eAAe,CAAC;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"por_client.js","sourceRoot":"","sources":["../../src/client/por_client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAW,iBAAiB,EAAsB,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,MAAM,OAAO,SAAS;IACH,MAAM,CAAsB;IACrC,WAAW,CAAc;IACzB,YAAY,CAAe;IAEnC,YAAY,MAAiB;QAC3B,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,MAA0B,EAAE,UAAmB,EAAE;QACzD,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAExC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxB,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;QAEzE,IAAI,IAAI,CAAC,OAAO,IAAI,MAAM,EAAE,CAAC;YAC3B,UAAU,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,IAAI,MAAM,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;gBAC5C,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK;gBACjC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS;gBACzC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS;gBACzC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;gBAChD,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI;aACpC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC9B,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO,eAAe,CAAC;IACzB,CAAC;CACF"}
@@ -1,14 +1,20 @@
1
- import { SdkConfig } from "../config.js";
1
+ interface SubmitTaskInput {
2
+ token: string;
3
+ projectId: string;
4
+ programId: string;
5
+ attestationData: string;
6
+ zktlsMode: string;
7
+ }
2
8
  export declare class ProverClient {
3
- private readonly config;
4
9
  private client;
5
- constructor(config?: SdkConfig, timeout?: number);
10
+ constructor(url: string, timeout?: number);
6
11
  uploadProgram(filePath: string, name: string, version: string, desc: string, prover?: string): Promise<any>;
7
- submitTask(attestationData: string): Promise<any>;
12
+ submitTask(input: SubmitTaskInput): Promise<any>;
8
13
  getResult(taskId: string): Promise<any>;
9
14
  private unwrap;
10
- submitTaskWithRetry(attestationData: string, maxRetries?: number, baseDelay?: number): Promise<any>;
15
+ submitTaskWithRetry(input: SubmitTaskInput, maxRetries?: number, baseDelay?: number): Promise<any>;
11
16
  getResultWithTimeout(taskId: string, timeoutMs?: number, intervalMs?: number): Promise<any>;
12
17
  private _doZkVM;
13
- doZkVM(attestationData: string): Promise<any>;
18
+ doZkVM(input: SubmitTaskInput): Promise<any>;
14
19
  }
20
+ export {};
@@ -1,15 +1,12 @@
1
1
  import axios from "axios";
2
2
  import FormData from "form-data";
3
3
  import fs from "fs";
4
- import { resolveSdkConfig } from "../config.js";
5
4
  import { ClientError } from "../error.js";
6
5
  import { sleepMs, mockErrorReport, makeErrData } from "../utils.js";
7
6
  export class ProverClient {
8
- config;
9
7
  client;
10
- constructor(config = {}, timeout = 30_000) {
11
- this.config = resolveSdkConfig(config);
12
- this.client = axios.create({ baseURL: this.config.zkvmServiceUrl, timeout });
8
+ constructor(url, timeout = 30_000) {
9
+ this.client = axios.create({ baseURL: url, timeout });
13
10
  }
14
11
  async uploadProgram(filePath, name, version, desc, prover = "succinct") {
15
12
  const form = new FormData();
@@ -23,13 +20,13 @@ export class ProverClient {
23
20
  });
24
21
  return this.unwrap("uploadProgram", res.data);
25
22
  }
26
- async submitTask(attestationData) {
23
+ async submitTask(input) {
27
24
  const form = new FormData();
28
- form.append("zktls_mode", this.config.zktlsMode);
29
- form.append("token", this.config.token);
30
- form.append("project_id", this.config.projectId);
31
- form.append("program_id", this.config.programId);
32
- form.append("attestation_data", attestationData);
25
+ form.append("token", input.token);
26
+ form.append("project_id", input.projectId);
27
+ form.append("program_id", input.programId);
28
+ form.append("attestation_data", input.attestationData);
29
+ form.append("zktls_mode", input.zktlsMode);
33
30
  const res = await this.client.post("/submitTask", form, {
34
31
  headers: form.getHeaders()
35
32
  });
@@ -49,13 +46,13 @@ export class ProverClient {
49
46
  const { mc, msg } = data;
50
47
  throw new ClientError("73001", `${op} failed`, { op, mc, msg });
51
48
  }
52
- async submitTaskWithRetry(attestationData, maxRetries = 4, baseDelay = 1000) {
49
+ async submitTaskWithRetry(input, maxRetries = 4, baseDelay = 1000) {
53
50
  let attempt = 0;
54
51
  const start = Date.now();
55
52
  console.log("Submitting task...");
56
53
  while (true) {
57
54
  try {
58
- const result = await this.submitTask(attestationData);
55
+ const result = await this.submitTask(input);
59
56
  console.log(`Submitting task done (${Date.now() - start}ms):`, result);
60
57
  return result;
61
58
  }
@@ -96,13 +93,13 @@ export class ProverClient {
96
93
  throw err;
97
94
  errData = makeErrData(err);
98
95
  }
99
- console.warn(`Getting result retrying in ${intervalMs}ms...`);
96
+ console.warn(`Getting result in ${intervalMs}ms...`);
100
97
  await sleepMs(intervalMs);
101
98
  }
102
99
  }
103
- async _doZkVM(attestationData) {
100
+ async _doZkVM(input) {
104
101
  try {
105
- const submitResult = await this.submitTaskWithRetry(attestationData);
102
+ const submitResult = await this.submitTaskWithRetry(input);
106
103
  const result = await this.getResultWithTimeout(submitResult.task_id);
107
104
  return result;
108
105
  }
@@ -114,8 +111,8 @@ export class ProverClient {
114
111
  throw err;
115
112
  }
116
113
  }
117
- async doZkVM(attestationData) {
118
- return await this._doZkVM(attestationData);
114
+ async doZkVM(input) {
115
+ return await this._doZkVM(input);
119
116
  }
120
117
  }
121
118
  //# sourceMappingURL=prover_client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prover_client.js","sourceRoot":"","sources":["../../src/client/prover_client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prover_client.js","sourceRoot":"","sources":["../../src/client/prover_client.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import { Options, RequestParamsInput } from "../types.js";
2
- import { SdkConfig } from "../config.js";
2
+ import { AppConfig } from "../config_schema.js";
3
3
  export declare class ZkTLSClient {
4
4
  private readonly config;
5
5
  private primusNetwork;
6
- constructor(config?: SdkConfig);
6
+ constructor(config: AppConfig);
7
7
  /**
8
8
  * Initialize PrimusNetwork SDK
9
9
  */
@@ -28,5 +28,5 @@ export declare class ZkTLSClient {
28
28
  * Main entry: perform zkTLS attestation and task flow
29
29
  */
30
30
  private _doZkTLS;
31
- doZkTLS(params: RequestParamsInput, options?: Options): Promise<any>;
31
+ doZkTLS(params: RequestParamsInput, options?: Options): Promise<Record<string, any>>;
32
32
  }
@@ -2,15 +2,14 @@ import { PrimusNetwork } from "@primuslabs/network-core-sdk";
2
2
  import { ethers } from "ethers";
3
3
  import { sleepMs, mockErrorReport, makeErrData } from "../utils.js";
4
4
  import { getDefaultOptions } from "../types.js";
5
- import { resolveSdkConfig } from "../config.js";
6
5
  import { ClientError } from "../error.js";
7
6
  import { DataServiceClient } from "./data_service_client.js";
8
7
  import { v4 as uuidv4 } from 'uuid';
9
8
  export class ZkTLSClient {
10
9
  config;
11
10
  primusNetwork;
12
- constructor(config = {}) {
13
- this.config = resolveSdkConfig(config);
11
+ constructor(config) {
12
+ this.config = { ...config };
14
13
  this.primusNetwork = new PrimusNetwork();
15
14
  }
16
15
  /**
@@ -36,15 +35,17 @@ export class ZkTLSClient {
36
35
  while (true) {
37
36
  try {
38
37
  let result;
39
- if (this.config.zktlsMode === "DVC") {
38
+ if (this.config.runtime.mode === "DVC") {
40
39
  result = await this.primusNetwork.submitTask(attestParams);
41
40
  }
42
- else if (this.config.zktlsMode === "POR") {
43
- const client = new DataServiceClient(this.config.dataServiceUrl);
41
+ else if (this.config.runtime.mode === "POR") {
42
+ const client = new DataServiceClient(this.config.services.data.url);
44
43
  const bizId = uuidv4();
45
- const token = this.config.token;
46
- const projectId = this.config.projectId;
47
- result = await client.submitTask(bizId, projectId, token);
44
+ const token = this.config.identity.token;
45
+ const projectId = this.config.identity.projectId;
46
+ const { taskId, taskTxHash, taskAttestors, submitterAddress } = await client.submitTask(bizId, projectId, token);
47
+ result = { taskId, taskTxHash, taskAttestors };
48
+ attestParams.address = submitterAddress;
48
49
  }
49
50
  console.log(`✅ submitTask done (${Date.now() - start}ms):`, result);
50
51
  return result;
@@ -67,13 +68,13 @@ export class ZkTLSClient {
67
68
  /**
68
69
  * Run attestation with retries
69
70
  */
70
- async _attestWithRetry(requestParams, opts, attestParams, submitResult, maxRetries = 4, baseDelay = 1000) {
71
+ async _attestWithRetry(requestParams, opts, attestParams, submitResult, requestParamsCallback, maxRetries = 4, baseDelay = 1000) {
71
72
  let attempt = 0;
72
73
  const start = Date.now();
73
74
  console.log("⚙️ Running attestation...");
74
75
  while (true) {
75
76
  try {
76
- const reqParams = opts.requestParamsCallback ? opts.requestParamsCallback() : requestParams;
77
+ const reqParams = requestParamsCallback ? requestParamsCallback() : requestParams;
77
78
  if (reqParams.requests.length !== reqParams.responseResolves.length) {
78
79
  throw new ClientError("71001", `Request params size mismatch ${reqParams.requests.length} != ${reqParams.responseResolves.length}`);
79
80
  }
@@ -102,7 +103,7 @@ export class ZkTLSClient {
102
103
  info.message = err.message;
103
104
  if (err.data)
104
105
  info.data = err.data;
105
- console.warn(`⚠️ attest attempt ${attempt} failed: ${info}`);
106
+ console.warn(`⚠️ attest attempt ${attempt} failed:`, info);
106
107
  const NO_RETRY_CODES = ["71001"]; // TODO:
107
108
  if (info.code && NO_RETRY_CODES.includes(info.code)) {
108
109
  if (err instanceof ClientError)
@@ -174,19 +175,32 @@ export class ZkTLSClient {
174
175
  /**
175
176
  * Main entry: perform zkTLS attestation and task flow
176
177
  */
177
- async _doZkTLS(requestParams, options = {}) {
178
+ async _doZkTLS(requestParams, options = {}, requestParamsCallback) {
178
179
  const startTime = Date.now();
179
- const attestParams = {
180
- address: "0x9b7706746c6e19AD5EB5c1DaeEa4b4C09EEC8a5f"
181
- };
182
180
  const opts = getDefaultOptions(options);
183
181
  try {
184
- const provider = new ethers.providers.JsonRpcProvider(this.config.rpcUrl);
185
- const wallet = this.config.privateKey ? new ethers.Wallet(this.config.privateKey, provider) : provider;
182
+ let rpcUrl = this.config.blockchain.rpcUrl;
183
+ if (!rpcUrl) {
184
+ // TODO: using mapping
185
+ const network = this.config.blockchain.network;
186
+ if (network === "base") {
187
+ rpcUrl = "https://mainnet.base.org";
188
+ }
189
+ else if (network === "base-sepolia") {
190
+ rpcUrl = "https://sepolia.base.org";
191
+ }
192
+ }
193
+ const provider = new ethers.providers.JsonRpcProvider(rpcUrl);
194
+ const privateKey = this.config.blockchain.signer?.privateKey;
195
+ const wallet = privateKey ? new ethers.Wallet(privateKey, provider) : provider;
186
196
  const { chainId } = await provider.getNetwork();
197
+ const attestParams = { address: "" };
198
+ if (privateKey) {
199
+ attestParams.address = wallet.address;
200
+ }
187
201
  await this._initializePrimusNetwork(opts, wallet, chainId);
188
- const submitResult = await this._submitZkTLSTaskWithRetry(opts, attestParams);
189
- const attestResult = await this._attestWithRetry(requestParams, opts, attestParams, submitResult);
202
+ const submitResult = await this._submitZkTLSTaskWithRetry(opts, attestParams, 4, 5000);
203
+ const attestResult = await this._attestWithRetry(requestParams, opts, attestParams, submitResult, requestParamsCallback, 4, 5000);
190
204
  await this._verifyAndPollTaskResultWithRetry(attestResult);
191
205
  const zkVmRequestData = await this._prepareZkVmRequestData(requestParams.verifyType, attestResult);
192
206
  console.log(`✅ Total execution time: ${Date.now() - startTime}ms`);
@@ -201,11 +215,14 @@ export class ZkTLSClient {
201
215
  }
202
216
  }
203
217
  async doZkTLS(params, options = {}) {
204
- const requestParams = Array.isArray(params) ? params : [params];
205
- let attestations = [];
206
- for (const reqParams of requestParams) {
207
- const data = await this._doZkTLS(reqParams, options);
208
- attestations.push(data.attestationData);
218
+ const attestations = {}; // key => attestation
219
+ for (const [key, cb] of Object.entries(params)) {
220
+ if (!cb)
221
+ continue; // skip undefined cb
222
+ const reqParams = cb();
223
+ if (!reqParams)
224
+ continue; // skip undefined requestParams
225
+ attestations[key] = await this._doZkTLS(reqParams, options, cb);
209
226
  }
210
227
  return attestations;
211
228
  }