zkcloudworker 0.7.2 → 0.7.3
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.
- package/lib/ts/src/api/api.d.ts +37 -26
- package/lib/ts/src/api/api.js +26 -26
- package/lib/ts/src/cloud/cloud.d.ts +175 -0
- package/lib/ts/src/cloud/cloud.js +71 -3
- package/lib/ts/src/cloud/job.d.ts +47 -0
- package/lib/ts/src/cloud/local.d.ts +157 -1
- package/lib/ts/src/cloud/local.js +157 -3
- package/lib/ts/src/cloud/task.d.ts +18 -0
- package/lib/ts/src/networks.d.ts +20 -0
- package/lib/ts/src/utils/fee.d.ts +4 -0
- package/lib/ts/src/utils/fee.js +5 -1
- package/lib/ts/src/utils/fetch.d.ts +20 -0
- package/lib/ts/src/utils/fetch.js +20 -0
- package/lib/ts/src/utils/fields.d.ts +10 -0
- package/lib/ts/src/utils/fields.js +10 -0
- package/lib/ts/src/utils/mina.d.ts +24 -0
- package/lib/ts/src/utils/mina.js +18 -0
- package/lib/ts/tsconfig.tsbuildinfo +1 -1
- package/lib/web/src/api/api.d.ts +37 -26
- package/lib/web/src/api/api.js +26 -26
- package/lib/web/src/api/api.js.map +1 -1
- package/lib/web/src/cloud/cloud.d.ts +175 -0
- package/lib/web/src/cloud/cloud.js +71 -3
- package/lib/web/src/cloud/cloud.js.map +1 -1
- package/lib/web/src/cloud/job.d.ts +47 -0
- package/lib/web/src/cloud/local.d.ts +157 -1
- package/lib/web/src/cloud/local.js +157 -3
- package/lib/web/src/cloud/local.js.map +1 -1
- package/lib/web/src/cloud/task.d.ts +18 -0
- package/lib/web/src/networks.d.ts +20 -0
- package/lib/web/src/networks.js.map +1 -1
- package/lib/web/src/utils/fee.d.ts +4 -0
- package/lib/web/src/utils/fee.js +5 -1
- package/lib/web/src/utils/fee.js.map +1 -1
- package/lib/web/src/utils/fetch.d.ts +20 -0
- package/lib/web/src/utils/fetch.js +20 -0
- package/lib/web/src/utils/fetch.js.map +1 -1
- package/lib/web/src/utils/fields.d.ts +10 -0
- package/lib/web/src/utils/fields.js +10 -0
- package/lib/web/src/utils/fields.js.map +1 -1
- package/lib/web/src/utils/mina.d.ts +24 -0
- package/lib/web/src/utils/mina.js +18 -0
- package/lib/web/src/utils/mina.js.map +1 -1
- package/lib/web/tsconfig.web.tsbuildinfo +1 -1
- package/package.json +1 -1
package/lib/ts/src/api/api.d.ts
CHANGED
@@ -1,10 +1,24 @@
|
|
1
1
|
import { zkCloudWorker, Cloud } from "../cloud/cloud";
|
2
2
|
import { blockchain } from "../networks";
|
3
|
+
/**
|
4
|
+
* The APICommand type for interacting with the zkCloudWorker
|
5
|
+
* @typedef { "recursiveProof" | "execute" | "sendTransactions" | "jobResult" | "deploy" | "getBalance" | "queryBilling" } ApiCommand
|
6
|
+
* @property recursiveProof The command for the recursiveProof calculation
|
7
|
+
* @property execute The command for the execute function call (sync or async)
|
8
|
+
* @property sendTransactions The command for sending transactions to the cloud
|
9
|
+
* @property jobResult The command for getting the result of the job
|
10
|
+
* @property deploy The command for deploying the code to the cloud, it is recommended use CLI tools for deployment
|
11
|
+
* @property getBalance The command for getting the balance of the user's account with zkCloudWorker
|
12
|
+
* @property queryBilling The command for getting the billing report of the user's account with zkCloudWorker
|
13
|
+
*/
|
3
14
|
export type ApiCommand = "recursiveProof" | "execute" | "sendTransactions" | "jobResult" | "deploy" | "getBalance" | "queryBilling";
|
4
15
|
/**
|
5
16
|
* API class for interacting with the zkCloudWorker
|
6
17
|
* @property jwt The jwt token for authentication, get it at https://t.me/minanft_bot?start=auth
|
7
18
|
* @property endpoint The endpoint of the serverless api
|
19
|
+
* @property chain The blockchain network to use
|
20
|
+
* @property webhook The webhook for the serverless api to get the results
|
21
|
+
* @property localWorker The local worker for the serverless api to test the code locally
|
8
22
|
*/
|
9
23
|
export declare class zkCloudWorkerClient {
|
10
24
|
readonly jwt: string;
|
@@ -15,6 +29,9 @@ export declare class zkCloudWorkerClient {
|
|
15
29
|
/**
|
16
30
|
* Constructor for the API class
|
17
31
|
* @param jwt The jwt token for authentication, get it at https://t.me/minanft_bot?start=auth
|
32
|
+
* @param zkcloudworker The local worker for the serverless api to test the code locally
|
33
|
+
* @param chain The blockchain network to use
|
34
|
+
* @param webhook The webhook for the serverless api to get the results
|
18
35
|
*/
|
19
36
|
constructor(params: {
|
20
37
|
jwt: string;
|
@@ -24,19 +41,20 @@ export declare class zkCloudWorkerClient {
|
|
24
41
|
});
|
25
42
|
/**
|
26
43
|
* Starts a new job for the proof calculation using serverless api call
|
27
|
-
* The developer and name should correspond to the BackupPlugin of the API
|
28
|
-
* All other parameters should correspond to the parameters of the BackupPlugin
|
29
44
|
* @param data the data for the proof call
|
30
|
-
* @param data.transactions the transactions
|
31
45
|
* @param data.developer the developer
|
32
46
|
* @param data.repo the repo to use
|
47
|
+
* @param data.transactions the transactions
|
33
48
|
* @param data.task the task of the job
|
34
|
-
* @param data.
|
49
|
+
* @param data.userId the userId of the job
|
50
|
+
* @param data.args the arguments of the job, should be serialized JSON or string
|
51
|
+
* @param data.metadata the metadata of the job, should be serialized JSON or string
|
52
|
+
* @param data.webhook the webhook for the job
|
35
53
|
* @returns { success: boolean, error?: string, jobId?: string }
|
36
54
|
* where jonId is the jobId of the job
|
37
55
|
*
|
38
|
-
* The developers repo should provide a
|
39
|
-
* that can be called with the given parameters
|
56
|
+
* The developers repo should provide a zkcloudworker function
|
57
|
+
* that can be called with the given parameters, see the examples
|
40
58
|
*/
|
41
59
|
recursiveProof(data: {
|
42
60
|
developer: string;
|
@@ -54,8 +72,6 @@ export declare class zkCloudWorkerClient {
|
|
54
72
|
}>;
|
55
73
|
/**
|
56
74
|
* Starts a new job for the function call using serverless api call
|
57
|
-
* The developer and name should correspond to the BackupPlugin of the API
|
58
|
-
* All other parameters should correspond to the parameters of the BackupPlugin
|
59
75
|
* @param data the data for the proof call
|
60
76
|
* @param data.developer the developer
|
61
77
|
* @param data.repo the repo to use
|
@@ -65,8 +81,8 @@ export declare class zkCloudWorkerClient {
|
|
65
81
|
* @param data.args the arguments of the job
|
66
82
|
* @param data.metadata the metadata of the job
|
67
83
|
* @param data.mode the mode of the job execution: "sync" will not create a job, it will execute the function synchronously within 30 seconds and with the memory limit of 256 MB
|
68
|
-
* @returns { success: boolean, error?: string, jobId?: string }
|
69
|
-
* where jonId is the jobId of the job
|
84
|
+
* @returns { success: boolean, error?: string, jobId?: string, result?: any }
|
85
|
+
* where jonId is the jobId of the job (for async calls), result is the result of the job (for sync calls)
|
70
86
|
*/
|
71
87
|
execute(data: {
|
72
88
|
developer: string;
|
@@ -84,16 +100,13 @@ export declare class zkCloudWorkerClient {
|
|
84
100
|
result?: any;
|
85
101
|
}>;
|
86
102
|
/**
|
87
|
-
*
|
88
|
-
* The developer and name should correspond to the BackupPlugin of the API
|
89
|
-
* All other parameters should correspond to the parameters of the BackupPlugin
|
103
|
+
* Sends transactions to the blockchain using serverless api call
|
90
104
|
* @param data the data for the proof call
|
91
105
|
* @param data.developer the developer
|
92
106
|
* @param data.repo the repo to use
|
93
|
-
* @param data.
|
94
|
-
* @
|
95
|
-
*
|
96
|
-
* where jonId is the jobId of the job
|
107
|
+
* @param data.transactions the transactions
|
108
|
+
* @returns { success: boolean, error?: string, txId?: string[] }
|
109
|
+
* where txId is the transaction id of the transaction, in the sequence of the input transactions
|
97
110
|
*/
|
98
111
|
sendTransactions(data: {
|
99
112
|
developer: string;
|
@@ -125,15 +138,13 @@ export declare class zkCloudWorkerClient {
|
|
125
138
|
result?: any;
|
126
139
|
}>;
|
127
140
|
/**
|
128
|
-
*
|
141
|
+
* Deploys the code to the cloud using serverless api call
|
129
142
|
* @param data the data for the deploy call
|
130
|
-
* @param data.
|
131
|
-
* @
|
132
|
-
*
|
133
|
-
*
|
134
|
-
*
|
135
|
-
* if the job is finished, the result will be set and error will be undefined
|
136
|
-
* if the job is not found, the result will be undefined and error will be set
|
143
|
+
* @param data.repo the repo to use
|
144
|
+
* @param data.developer the developer
|
145
|
+
* @param data.packageManager the package manager to use
|
146
|
+
* @returns { success: boolean, error?: string, jobId?: string}
|
147
|
+
* where jobId is the jobId of the job
|
137
148
|
*/
|
138
149
|
deploy(data: {
|
139
150
|
repo: string;
|
@@ -157,7 +168,7 @@ export declare class zkCloudWorkerClient {
|
|
157
168
|
/**
|
158
169
|
* Gets the remaining balance
|
159
170
|
* @returns { success: boolean, error?: string, result?: any }
|
160
|
-
* where result is the
|
171
|
+
* where result is the balance
|
161
172
|
*/
|
162
173
|
getBalance(): Promise<{
|
163
174
|
success: boolean;
|
package/lib/ts/src/api/api.js
CHANGED
@@ -14,11 +14,17 @@ const { ZKCLOUDWORKER_AUTH, ZKCLOUDWORKER_API } = config_1.default;
|
|
14
14
|
* API class for interacting with the zkCloudWorker
|
15
15
|
* @property jwt The jwt token for authentication, get it at https://t.me/minanft_bot?start=auth
|
16
16
|
* @property endpoint The endpoint of the serverless api
|
17
|
+
* @property chain The blockchain network to use
|
18
|
+
* @property webhook The webhook for the serverless api to get the results
|
19
|
+
* @property localWorker The local worker for the serverless api to test the code locally
|
17
20
|
*/
|
18
21
|
class zkCloudWorkerClient {
|
19
22
|
/**
|
20
23
|
* Constructor for the API class
|
21
24
|
* @param jwt The jwt token for authentication, get it at https://t.me/minanft_bot?start=auth
|
25
|
+
* @param zkcloudworker The local worker for the serverless api to test the code locally
|
26
|
+
* @param chain The blockchain network to use
|
27
|
+
* @param webhook The webhook for the serverless api to get the results
|
22
28
|
*/
|
23
29
|
constructor(params) {
|
24
30
|
const { jwt, zkcloudworker, chain, webhook } = params;
|
@@ -34,19 +40,20 @@ class zkCloudWorkerClient {
|
|
34
40
|
}
|
35
41
|
/**
|
36
42
|
* Starts a new job for the proof calculation using serverless api call
|
37
|
-
* The developer and name should correspond to the BackupPlugin of the API
|
38
|
-
* All other parameters should correspond to the parameters of the BackupPlugin
|
39
43
|
* @param data the data for the proof call
|
40
|
-
* @param data.transactions the transactions
|
41
44
|
* @param data.developer the developer
|
42
45
|
* @param data.repo the repo to use
|
46
|
+
* @param data.transactions the transactions
|
43
47
|
* @param data.task the task of the job
|
44
|
-
* @param data.
|
48
|
+
* @param data.userId the userId of the job
|
49
|
+
* @param data.args the arguments of the job, should be serialized JSON or string
|
50
|
+
* @param data.metadata the metadata of the job, should be serialized JSON or string
|
51
|
+
* @param data.webhook the webhook for the job
|
45
52
|
* @returns { success: boolean, error?: string, jobId?: string }
|
46
53
|
* where jonId is the jobId of the job
|
47
54
|
*
|
48
|
-
* The developers repo should provide a
|
49
|
-
* that can be called with the given parameters
|
55
|
+
* The developers repo should provide a zkcloudworker function
|
56
|
+
* that can be called with the given parameters, see the examples
|
50
57
|
*/
|
51
58
|
async recursiveProof(data) {
|
52
59
|
const result = await this.apiHub("recursiveProof", data);
|
@@ -77,8 +84,6 @@ class zkCloudWorkerClient {
|
|
77
84
|
}
|
78
85
|
/**
|
79
86
|
* Starts a new job for the function call using serverless api call
|
80
|
-
* The developer and name should correspond to the BackupPlugin of the API
|
81
|
-
* All other parameters should correspond to the parameters of the BackupPlugin
|
82
87
|
* @param data the data for the proof call
|
83
88
|
* @param data.developer the developer
|
84
89
|
* @param data.repo the repo to use
|
@@ -88,8 +93,8 @@ class zkCloudWorkerClient {
|
|
88
93
|
* @param data.args the arguments of the job
|
89
94
|
* @param data.metadata the metadata of the job
|
90
95
|
* @param data.mode the mode of the job execution: "sync" will not create a job, it will execute the function synchronously within 30 seconds and with the memory limit of 256 MB
|
91
|
-
* @returns { success: boolean, error?: string, jobId?: string }
|
92
|
-
* where jonId is the jobId of the job
|
96
|
+
* @returns { success: boolean, error?: string, jobId?: string, result?: any }
|
97
|
+
* where jonId is the jobId of the job (for async calls), result is the result of the job (for sync calls)
|
93
98
|
*/
|
94
99
|
async execute(data) {
|
95
100
|
const result = await this.apiHub("execute", data);
|
@@ -130,16 +135,13 @@ class zkCloudWorkerClient {
|
|
130
135
|
};
|
131
136
|
}
|
132
137
|
/**
|
133
|
-
*
|
134
|
-
* The developer and name should correspond to the BackupPlugin of the API
|
135
|
-
* All other parameters should correspond to the parameters of the BackupPlugin
|
138
|
+
* Sends transactions to the blockchain using serverless api call
|
136
139
|
* @param data the data for the proof call
|
137
140
|
* @param data.developer the developer
|
138
141
|
* @param data.repo the repo to use
|
139
|
-
* @param data.
|
140
|
-
* @
|
141
|
-
*
|
142
|
-
* where jonId is the jobId of the job
|
142
|
+
* @param data.transactions the transactions
|
143
|
+
* @returns { success: boolean, error?: string, txId?: string[] }
|
144
|
+
* where txId is the transaction id of the transaction, in the sequence of the input transactions
|
143
145
|
*/
|
144
146
|
async sendTransactions(data) {
|
145
147
|
const result = await this.apiHub("sendTransactions", data);
|
@@ -184,15 +186,13 @@ class zkCloudWorkerClient {
|
|
184
186
|
};
|
185
187
|
}
|
186
188
|
/**
|
187
|
-
*
|
189
|
+
* Deploys the code to the cloud using serverless api call
|
188
190
|
* @param data the data for the deploy call
|
189
|
-
* @param data.
|
190
|
-
* @
|
191
|
-
*
|
192
|
-
*
|
193
|
-
*
|
194
|
-
* if the job is finished, the result will be set and error will be undefined
|
195
|
-
* if the job is not found, the result will be undefined and error will be set
|
191
|
+
* @param data.repo the repo to use
|
192
|
+
* @param data.developer the developer
|
193
|
+
* @param data.packageManager the package manager to use
|
194
|
+
* @returns { success: boolean, error?: string, jobId?: string}
|
195
|
+
* where jobId is the jobId of the job
|
196
196
|
*/
|
197
197
|
async deploy(data) {
|
198
198
|
// TODO: encrypt env.json
|
@@ -238,7 +238,7 @@ class zkCloudWorkerClient {
|
|
238
238
|
/**
|
239
239
|
* Gets the remaining balance
|
240
240
|
* @returns { success: boolean, error?: string, result?: any }
|
241
|
-
* where result is the
|
241
|
+
* where result is the balance
|
242
242
|
*/
|
243
243
|
async getBalance() {
|
244
244
|
const result = await this.apiHub("getBalance", {});
|
@@ -1,6 +1,17 @@
|
|
1
1
|
/// <reference types="node" />
|
2
2
|
import { blockchain } from "../networks";
|
3
3
|
import { JobData } from "./job";
|
4
|
+
/**
|
5
|
+
* Interface for the deployed smart contract
|
6
|
+
* Used to get verification keys and addresses of the deployed smart contracts
|
7
|
+
* to be published in the blockchain explorer
|
8
|
+
* @param address: the address of the deployed smart contract
|
9
|
+
* @param name: the name of the deployed smart contract
|
10
|
+
* @param chain: the blockchain network where the smart contract is deployed
|
11
|
+
* @param verificationKey: the verification key of the deployed smart contract
|
12
|
+
* @param verificationKey.hash: the hash of the verification key
|
13
|
+
* @param verificationKey.data: the data of the verification key
|
14
|
+
*/
|
4
15
|
export interface DeployedSmartContract {
|
5
16
|
address: string;
|
6
17
|
name: string;
|
@@ -10,10 +21,24 @@ export interface DeployedSmartContract {
|
|
10
21
|
data: string;
|
11
22
|
};
|
12
23
|
}
|
24
|
+
/**
|
25
|
+
* Interface for the deployer key pair
|
26
|
+
* Used to get the public and private keys of the deployer for test networks only
|
27
|
+
* Devnet and Zeko are supported
|
28
|
+
* @param publicKey: the public key of the deployer
|
29
|
+
* @param privateKey: the private key of the deployer
|
30
|
+
*/
|
13
31
|
export interface DeployerKeyPair {
|
14
32
|
publicKey: string;
|
15
33
|
privateKey: string;
|
16
34
|
}
|
35
|
+
/**
|
36
|
+
* Interface for the cloud transaction
|
37
|
+
* Used to get the transaction id, the transaction, and the time received
|
38
|
+
* @param txId: the transaction id
|
39
|
+
* @param transaction: the transaction
|
40
|
+
* @param timeReceived: the time received
|
41
|
+
*/
|
17
42
|
export interface CloudTransaction {
|
18
43
|
txId: string;
|
19
44
|
transaction: string;
|
@@ -33,6 +58,22 @@ export declare abstract class Cloud {
|
|
33
58
|
readonly metadata?: string;
|
34
59
|
readonly chain: blockchain;
|
35
60
|
readonly isLocalCloud: boolean;
|
61
|
+
/**
|
62
|
+
* Constructor for the Cloud class
|
63
|
+
* @param id: the id of the user
|
64
|
+
* @param jobId: the job id
|
65
|
+
* @param stepId: the step id
|
66
|
+
* @param taskId: the task id
|
67
|
+
* @param cache: the cache folder. Use it to get the Cache object: cache = Cache.FileSystem(this.cloud.cache);
|
68
|
+
* @param developer: the developer id
|
69
|
+
* @param repo: the repo id
|
70
|
+
* @param task: the task id
|
71
|
+
* @param userId: the user id
|
72
|
+
* @param args: the arguments, should be a string or serialized JSON
|
73
|
+
* @param metadata: the metadata, should be a string or serialized JSON
|
74
|
+
* @param chain: the blockchain network
|
75
|
+
* @param isLocalCloud: a boolean to check if the cloud is local or not
|
76
|
+
*/
|
36
77
|
constructor(params: {
|
37
78
|
id: string;
|
38
79
|
jobId: string;
|
@@ -48,16 +89,69 @@ export declare abstract class Cloud {
|
|
48
89
|
isLocalCloud?: boolean;
|
49
90
|
chain: blockchain;
|
50
91
|
});
|
92
|
+
/**
|
93
|
+
* Abstract method to get the deployer key pair
|
94
|
+
* Used to get the public and private keys of the deployer for test networks only
|
95
|
+
* Devnet and Zeko are supported
|
96
|
+
* @returns the deployer key pair
|
97
|
+
*/
|
51
98
|
abstract getDeployer(): Promise<DeployerKeyPair | undefined>;
|
99
|
+
/**
|
100
|
+
* Abstract method to release the deployer
|
101
|
+
* @param params: the public key of the deployer and the transactions hashes
|
102
|
+
* Used to release the deployer after the transactions are sent to the blockchain
|
103
|
+
* @param publicKey: the public key of the deployer
|
104
|
+
* @param txsHashes: the transactions hashes
|
105
|
+
*/
|
52
106
|
abstract releaseDeployer(params: {
|
53
107
|
publicKey: string;
|
54
108
|
txsHashes: string[];
|
55
109
|
}): Promise<void>;
|
110
|
+
/**
|
111
|
+
* Abstract method to get the data by key
|
112
|
+
* Used to get the data by key from the cloud storage
|
113
|
+
* @param key: the key
|
114
|
+
* @returns the value of the key
|
115
|
+
*/
|
56
116
|
abstract getDataByKey(key: string): Promise<string | undefined>;
|
117
|
+
/**
|
118
|
+
* Abstract method to save the data by key
|
119
|
+
* Used to save the data by key to the cloud storage
|
120
|
+
* @param key: the key
|
121
|
+
* @param value: the value
|
122
|
+
*/
|
57
123
|
abstract saveDataByKey(key: string, value: string | undefined): Promise<void>;
|
124
|
+
/**
|
125
|
+
* Abstract method to save the file
|
126
|
+
* Used to save the file to the cloud storage
|
127
|
+
* @param filename: the filename
|
128
|
+
* @param value: the value
|
129
|
+
*/
|
58
130
|
abstract saveFile(filename: string, value: Buffer): Promise<void>;
|
131
|
+
/**
|
132
|
+
* Abstract method to load the file
|
133
|
+
* Used to load the file from the cloud storage
|
134
|
+
* @param filename: the filename
|
135
|
+
* @returns the value of the file
|
136
|
+
*/
|
59
137
|
abstract loadFile(filename: string): Promise<Buffer | undefined>;
|
138
|
+
/**
|
139
|
+
* Abstract method to load the environment
|
140
|
+
* Used to load the environment from the cloud storage
|
141
|
+
* @param password: the password
|
142
|
+
*/
|
60
143
|
abstract loadEnvironment(password: string): Promise<void>;
|
144
|
+
/**
|
145
|
+
* Abstract method to calculate the recursive proof
|
146
|
+
* Used to calculate the recursive proof
|
147
|
+
* @param data: the data
|
148
|
+
* @param data.transactions: the transactions
|
149
|
+
* @param data.task: the task
|
150
|
+
* @param data.userId: the user id
|
151
|
+
* @param data.args: the arguments
|
152
|
+
* @param data.metadata: the metadata
|
153
|
+
* @returns the proof
|
154
|
+
*/
|
61
155
|
abstract recursiveProof(data: {
|
62
156
|
transactions: string[];
|
63
157
|
task?: string;
|
@@ -65,6 +159,17 @@ export declare abstract class Cloud {
|
|
65
159
|
args?: string;
|
66
160
|
metadata?: string;
|
67
161
|
}): Promise<string>;
|
162
|
+
/**
|
163
|
+
* Abstract method to execute the transactions
|
164
|
+
* Used to execute the transactions
|
165
|
+
* @param data: the data
|
166
|
+
* @param data.transactions: the transactions
|
167
|
+
* @param data.task: the task
|
168
|
+
* @param data.userId: the user id
|
169
|
+
* @param data.args: the arguments
|
170
|
+
* @param data.metadata: the metadata
|
171
|
+
* @returns the result
|
172
|
+
*/
|
68
173
|
abstract execute(data: {
|
69
174
|
transactions: string[];
|
70
175
|
task: string;
|
@@ -72,6 +177,18 @@ export declare abstract class Cloud {
|
|
72
177
|
args?: string;
|
73
178
|
metadata?: string;
|
74
179
|
}): Promise<string>;
|
180
|
+
/**
|
181
|
+
* Abstract method to add the task
|
182
|
+
* Used to add the task
|
183
|
+
* @param data: the data
|
184
|
+
* @param data.task: the task
|
185
|
+
* @param data.startTime: the start time
|
186
|
+
* @param data.userId: the user id
|
187
|
+
* @param data.args: the arguments
|
188
|
+
* @param data.metadata: the metadata
|
189
|
+
* @param data.maxAttempts: the maximum attempts
|
190
|
+
* @returns the task id
|
191
|
+
*/
|
75
192
|
abstract addTask(data: {
|
76
193
|
task: string;
|
77
194
|
startTime?: number;
|
@@ -80,19 +197,77 @@ export declare abstract class Cloud {
|
|
80
197
|
metadata?: string;
|
81
198
|
maxAttempts?: number;
|
82
199
|
}): Promise<string>;
|
200
|
+
/**
|
201
|
+
* Abstract method to delete the transaction
|
202
|
+
* Used to delete the transaction
|
203
|
+
* @param txId: the transaction id
|
204
|
+
*/
|
83
205
|
abstract deleteTransaction(txId: string): Promise<void>;
|
206
|
+
/**
|
207
|
+
* Abstract method to get the transactions
|
208
|
+
* Used to get the transactions
|
209
|
+
* @returns the transactions
|
210
|
+
*/
|
84
211
|
abstract getTransactions(): Promise<CloudTransaction[]>;
|
212
|
+
/**
|
213
|
+
* Abstract method to delete the task
|
214
|
+
* Used to delete the task
|
215
|
+
* @param taskId: the task id
|
216
|
+
*/
|
85
217
|
abstract deleteTask(taskId: string): Promise<void>;
|
218
|
+
/**
|
219
|
+
* Abstract method to process the tasks
|
220
|
+
*/
|
86
221
|
abstract processTasks(): Promise<void>;
|
222
|
+
/**
|
223
|
+
* Abstract method to get the job result
|
224
|
+
* Used to get the job result
|
225
|
+
* @param jobId: the job id
|
226
|
+
* @returns the job result
|
227
|
+
*/
|
87
228
|
abstract jobResult(jobId: string): Promise<JobData | undefined>;
|
88
229
|
}
|
230
|
+
/**
|
231
|
+
* Abstract class for the zkCloudWorker
|
232
|
+
* Used to define the zkCloudWorker methods and properties
|
233
|
+
* Should be implemented for by the developer for the zkCloudWorker in the cloud
|
234
|
+
* @param cloud: the cloud
|
235
|
+
*/
|
89
236
|
export declare abstract class zkCloudWorker {
|
90
237
|
readonly cloud: Cloud;
|
238
|
+
/**
|
239
|
+
* Constructor for the zkCloudWorker class
|
240
|
+
* @param cloud: the cloud instance provided by the zkCloudWorker in the local environment or in the cloud
|
241
|
+
*/
|
91
242
|
constructor(cloud: Cloud);
|
243
|
+
/**
|
244
|
+
* Returns the deployed smart contracts for verification in the blockchain explorer
|
245
|
+
* @returns the deployed smart contracts
|
246
|
+
*/
|
92
247
|
deployedContracts(): Promise<DeployedSmartContract[]>;
|
248
|
+
/**
|
249
|
+
* Creates a new proof from a transaction
|
250
|
+
* @param transaction: the transaction
|
251
|
+
* @returns the serialized proof
|
252
|
+
*/
|
93
253
|
create(transaction: string): Promise<string | undefined>;
|
254
|
+
/**
|
255
|
+
* Merges two proofs
|
256
|
+
* @param proof1: the first proof
|
257
|
+
* @param proof2: the second proof
|
258
|
+
* @returns the merged proof
|
259
|
+
*/
|
94
260
|
merge(proof1: string, proof2: string): Promise<string | undefined>;
|
261
|
+
/**
|
262
|
+
* Executes the transactions
|
263
|
+
* @param transactions: the transactions, can be empty list
|
264
|
+
* @returns the result
|
265
|
+
*/
|
95
266
|
execute(transactions: string[]): Promise<string | undefined>;
|
96
267
|
processTransactions(transactions: CloudTransaction[]): Promise<void>;
|
268
|
+
/**
|
269
|
+
* process the task defined by the developer
|
270
|
+
* @returns the result
|
271
|
+
*/
|
97
272
|
task(): Promise<string | undefined>;
|
98
273
|
}
|
@@ -1,7 +1,41 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.zkCloudWorker = exports.Cloud = void 0;
|
4
|
+
/*
|
5
|
+
* Abstract class for the cloud
|
6
|
+
* Used to define the cloud methods and properties
|
7
|
+
* Should be implemented by for local testing and for the zkCloudWorker in the cloud
|
8
|
+
* @param id: the id of the user
|
9
|
+
* @param jobId: the job id
|
10
|
+
* @param stepId: the step id
|
11
|
+
* @param taskId: the task id
|
12
|
+
* @param cache: the cache folder. Use it to get the Cache object: cache = Cache.FileSystem(this.cloud.cache);
|
13
|
+
* @param developer: the developer id
|
14
|
+
* @param repo: the repo id
|
15
|
+
* @param task: the task id
|
16
|
+
* @param userId: the user id
|
17
|
+
* @param args: the arguments, should be a string or serialized JSON
|
18
|
+
* @param metadata: the metadata, should be a string or serialized JSON
|
19
|
+
* @param chain: the blockchain network
|
20
|
+
* @param isLocalCloud: a boolean to check if the cloud is local or not
|
21
|
+
*/
|
4
22
|
class Cloud {
|
23
|
+
/**
|
24
|
+
* Constructor for the Cloud class
|
25
|
+
* @param id: the id of the user
|
26
|
+
* @param jobId: the job id
|
27
|
+
* @param stepId: the step id
|
28
|
+
* @param taskId: the task id
|
29
|
+
* @param cache: the cache folder. Use it to get the Cache object: cache = Cache.FileSystem(this.cloud.cache);
|
30
|
+
* @param developer: the developer id
|
31
|
+
* @param repo: the repo id
|
32
|
+
* @param task: the task id
|
33
|
+
* @param userId: the user id
|
34
|
+
* @param args: the arguments, should be a string or serialized JSON
|
35
|
+
* @param metadata: the metadata, should be a string or serialized JSON
|
36
|
+
* @param chain: the blockchain network
|
37
|
+
* @param isLocalCloud: a boolean to check if the cloud is local or not
|
38
|
+
*/
|
5
39
|
constructor(params) {
|
6
40
|
const { id, jobId, stepId, taskId, cache, developer, repo, task, userId, args, metadata, isLocalCloud, chain, } = params;
|
7
41
|
this.id = id;
|
@@ -20,28 +54,62 @@ class Cloud {
|
|
20
54
|
}
|
21
55
|
}
|
22
56
|
exports.Cloud = Cloud;
|
57
|
+
/**
|
58
|
+
* Abstract class for the zkCloudWorker
|
59
|
+
* Used to define the zkCloudWorker methods and properties
|
60
|
+
* Should be implemented for by the developer for the zkCloudWorker in the cloud
|
61
|
+
* @param cloud: the cloud
|
62
|
+
*/
|
23
63
|
class zkCloudWorker {
|
64
|
+
/**
|
65
|
+
* Constructor for the zkCloudWorker class
|
66
|
+
* @param cloud: the cloud instance provided by the zkCloudWorker in the local environment or in the cloud
|
67
|
+
*/
|
24
68
|
constructor(cloud) {
|
25
69
|
this.cloud = cloud;
|
26
70
|
}
|
27
|
-
|
71
|
+
/**
|
72
|
+
* Returns the deployed smart contracts for verification in the blockchain explorer
|
73
|
+
* @returns the deployed smart contracts
|
74
|
+
*/
|
28
75
|
async deployedContracts() {
|
29
76
|
return [];
|
30
77
|
}
|
31
78
|
// Those methods should be implemented for recursive proofs calculations
|
79
|
+
/**
|
80
|
+
* Creates a new proof from a transaction
|
81
|
+
* @param transaction: the transaction
|
82
|
+
* @returns the serialized proof
|
83
|
+
*/
|
32
84
|
async create(transaction) {
|
33
85
|
return undefined;
|
34
86
|
}
|
87
|
+
/**
|
88
|
+
* Merges two proofs
|
89
|
+
* @param proof1: the first proof
|
90
|
+
* @param proof2: the second proof
|
91
|
+
* @returns the merged proof
|
92
|
+
*/
|
35
93
|
async merge(proof1, proof2) {
|
36
94
|
return undefined;
|
37
95
|
}
|
38
96
|
// Those methods should be implemented for anything except for recursive proofs
|
97
|
+
/**
|
98
|
+
* Executes the transactions
|
99
|
+
* @param transactions: the transactions, can be empty list
|
100
|
+
* @returns the result
|
101
|
+
*/
|
39
102
|
async execute(transactions) {
|
40
103
|
return undefined;
|
41
104
|
}
|
42
|
-
|
105
|
+
/* Process the transactions received by the cloud
|
106
|
+
* @param transactions: the transactions
|
107
|
+
*/
|
43
108
|
async processTransactions(transactions) { }
|
44
|
-
|
109
|
+
/**
|
110
|
+
* process the task defined by the developer
|
111
|
+
* @returns the result
|
112
|
+
*/
|
45
113
|
async task() {
|
46
114
|
return undefined;
|
47
115
|
}
|
@@ -1,10 +1,57 @@
|
|
1
1
|
import { blockchain } from "../networks";
|
2
2
|
export type JobStatus = "created" | "started" | "finished" | "failed" | "used";
|
3
|
+
/**
|
4
|
+
* LogStream is a subset of the log stream data returned by AWS CloudWatch Logs when running the worker
|
5
|
+
* https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/cloudwatch-logs/command/GetLogEventsCommand/
|
6
|
+
* example:
|
7
|
+
* {
|
8
|
+
* logGroupName: '/aws/lambda/zkcloudworker-dev-test',
|
9
|
+
* logStreamName: '2024/05/09/[$LATEST]52d048f64e894d2e8ba2800df93629c5'
|
10
|
+
* awsRequestId: '581d0d45-9165-47e8-84d9-678599938811',
|
11
|
+
* }
|
12
|
+
* @param logGroupName the log group name
|
13
|
+
* @param logStreamName the log stream name
|
14
|
+
* @param awsRequestId the AWS request ID
|
15
|
+
*/
|
3
16
|
export interface LogStream {
|
4
17
|
logGroupName: string;
|
5
18
|
logStreamName: string;
|
6
19
|
awsRequestId: string;
|
7
20
|
}
|
21
|
+
/**
|
22
|
+
* JobData is the data structure for a job, keeping track of the job status, result, logs, and metadata
|
23
|
+
* @param id the id of the user
|
24
|
+
* @param jobId the id of the job
|
25
|
+
* @param taskId the id of the task
|
26
|
+
* @param developer the developer of the repo executing the job
|
27
|
+
* @param repo the repo executing the job
|
28
|
+
* @param task the task to execute
|
29
|
+
* @param userId the id of the user
|
30
|
+
* @param args the arguments for the job
|
31
|
+
* @param metadata the metadata for the job
|
32
|
+
* @param chain the blockchain to execute the job on
|
33
|
+
* @param webhook the webhook to call after the job finishes
|
34
|
+
* @param cloudhook the cloudhook to call after the job finishes
|
35
|
+
* @param cloudIteration the recursive call number, must be less than 5
|
36
|
+
* @param previousJob the previous job data, provided in case of the cloudhook
|
37
|
+
*
|
38
|
+
* @param filename the filename where transactions data is stored
|
39
|
+
* @param txNumber the number of transactions
|
40
|
+
* @param timeCreated the time the job was created
|
41
|
+
* @param timeCreatedString the time the job was created as a string
|
42
|
+
* @param timeStarted the time the job was started
|
43
|
+
* @param timeFinished the time the job was finished
|
44
|
+
* @param timeFailed the time the job failed
|
45
|
+
* @param timeUsed the time the job result was used
|
46
|
+
* @param billedDuration the duration the job was billed for
|
47
|
+
* @param feeMINA the fee in MINA
|
48
|
+
* @param feeUSD the fee in USD
|
49
|
+
* @param jobStatus the status of the job
|
50
|
+
* @param maxAttempts the maximum number of attempts
|
51
|
+
* @param result the result of the job
|
52
|
+
* @param logStreams the log streams of the job
|
53
|
+
* @param logs the logs of the job
|
54
|
+
*/
|
8
55
|
export interface JobData {
|
9
56
|
id: string;
|
10
57
|
jobId: string;
|