zkcloudworker 0.18.28 → 0.19.0
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/dist/node/index.cjs +99 -1561
- package/dist/node/mina/token/api.js +11 -5
- package/dist/node/mina/token/api.js.map +1 -1
- package/dist/node/mina/token/index.d.ts +0 -7
- package/dist/node/mina/token/index.js +0 -7
- package/dist/node/mina/token/index.js.map +1 -1
- package/dist/tsconfig.web.tsbuildinfo +1 -1
- package/dist/web/mina/token/api.js +11 -5
- package/dist/web/mina/token/api.js.map +1 -1
- package/dist/web/mina/token/index.d.ts +0 -7
- package/dist/web/mina/token/index.js +0 -7
- package/dist/web/mina/token/index.js.map +1 -1
- package/package.json +3 -3
- package/src/mina/token/api.ts +14 -7
- package/src/mina/token/index.ts +0 -7
- package/src/mina/token/FungibleTokenAdmin.ts +0 -89
- package/src/mina/token/FungibleTokenContract.ts +0 -327
- package/src/mina/token/FungibleTokenWhitelistedAdmin.ts +0 -112
- package/src/mina/token/bid.ts +0 -173
- package/src/mina/token/build.ts +0 -620
- package/src/mina/token/fee.ts +0 -2
- package/src/mina/token/offer.ts +0 -174
- package/src/mina/token/token.ts +0 -127
- package/src/mina/token/vk.ts +0 -42
- package/src/mina/token/whitelist.ts +0 -204
@@ -112,9 +112,10 @@ export class TokenAPI {
|
|
112
112
|
async getResult(jobId) {
|
113
113
|
try {
|
114
114
|
const callResult = await this.client.jobResult({ jobId });
|
115
|
-
|
116
|
-
|
117
|
-
|
115
|
+
// TODO: filter the repo and developer
|
116
|
+
const jobStatus = typeof callResult?.result === "string"
|
117
|
+
? undefined
|
118
|
+
: callResult?.result?.jobStatus;
|
118
119
|
if (!callResult.success) {
|
119
120
|
return {
|
120
121
|
success: false,
|
@@ -152,12 +153,17 @@ export class TokenAPI {
|
|
152
153
|
catch (e) {
|
153
154
|
return {
|
154
155
|
success: false,
|
155
|
-
error: `Error parsing job result: ${jobResult}`,
|
156
|
+
error: `Error parsing job result: ${jobResult} ${e?.message ?? ""}`,
|
157
|
+
jobStatus,
|
156
158
|
};
|
157
159
|
}
|
158
160
|
}
|
159
161
|
catch (e) {
|
160
|
-
return {
|
162
|
+
return {
|
163
|
+
success: false,
|
164
|
+
error: `Error getting job result: ${e?.message ?? ""}`,
|
165
|
+
jobStatus: undefined,
|
166
|
+
};
|
161
167
|
}
|
162
168
|
}
|
163
169
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../src/mina/token/api.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../src/mina/token/api.ts"],"names":[],"mappings":"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"}
|
@@ -1,9 +1,2 @@
|
|
1
1
|
export * from "./api.js";
|
2
|
-
export * from "./bid.js";
|
3
|
-
export * from "./build.js";
|
4
|
-
export * from "./fee.js";
|
5
|
-
export * from "./offer.js";
|
6
|
-
export * from "./token.js";
|
7
|
-
export * from "./vk.js";
|
8
|
-
export * from "./whitelist.js";
|
9
2
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/mina/token/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/mina/token/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"root":["../src/index.ts","../src/cloud/config.ts","../src/cloud/index.ts","../src/cloud/networks.ts","../src/cloud/utils/base64.ts","../src/cloud/utils/graphql.ts","../src/cloud/utils/index.ts","../src/cloud/utils/utils.ts","../src/cloud/worker/cloud.ts","../src/cloud/worker/index.ts","../src/cloud/worker/job.ts","../src/cloud/worker/task.ts","../src/cloud/worker/transaction.ts","../src/cloud/worker/worker.ts","../src/mina/index.ts","../src/mina/api/api.ts","../src/mina/local/local.ts","../src/mina/storage/index.ts","../src/mina/storage/ipfs.ts","../src/mina/storage/pinata.ts","../src/mina/storage/storage.ts","../src/mina/token/
|
1
|
+
{"root":["../src/index.ts","../src/cloud/config.ts","../src/cloud/index.ts","../src/cloud/networks.ts","../src/cloud/utils/base64.ts","../src/cloud/utils/graphql.ts","../src/cloud/utils/index.ts","../src/cloud/utils/utils.ts","../src/cloud/worker/cloud.ts","../src/cloud/worker/index.ts","../src/cloud/worker/job.ts","../src/cloud/worker/task.ts","../src/cloud/worker/transaction.ts","../src/cloud/worker/worker.ts","../src/mina/index.ts","../src/mina/api/api.ts","../src/mina/local/local.ts","../src/mina/storage/index.ts","../src/mina/storage/ipfs.ts","../src/mina/storage/pinata.ts","../src/mina/storage/storage.ts","../src/mina/token/api.ts","../src/mina/token/index.ts","../src/mina/transactions/account.ts","../src/mina/transactions/blockberry.ts","../src/mina/transactions/chain.ts","../src/mina/transactions/index.ts","../src/mina/transactions/nonce.ts","../src/mina/transactions/send.ts","../src/mina/transactions/tiny-contract.ts","../src/mina/transactions/transaction.ts","../src/mina/transactions/txstatus.ts","../src/mina/utils/base64.ts","../src/mina/utils/fee.ts","../src/mina/utils/fetch.ts","../src/mina/utils/fields.ts","../src/mina/utils/index.ts","../src/mina/utils/indexed-map.ts","../src/mina/utils/mina.ts","../src/mina/verification/index.ts","../src/mina/verification/verification.ts"],"version":"5.7.2"}
|
@@ -112,9 +112,10 @@ export class TokenAPI {
|
|
112
112
|
async getResult(jobId) {
|
113
113
|
try {
|
114
114
|
const callResult = await this.client.jobResult({ jobId });
|
115
|
-
|
116
|
-
|
117
|
-
|
115
|
+
// TODO: filter the repo and developer
|
116
|
+
const jobStatus = typeof callResult?.result === "string"
|
117
|
+
? undefined
|
118
|
+
: callResult?.result?.jobStatus;
|
118
119
|
if (!callResult.success) {
|
119
120
|
return {
|
120
121
|
success: false,
|
@@ -152,12 +153,17 @@ export class TokenAPI {
|
|
152
153
|
catch (e) {
|
153
154
|
return {
|
154
155
|
success: false,
|
155
|
-
error: `Error parsing job result: ${jobResult}`,
|
156
|
+
error: `Error parsing job result: ${jobResult} ${e?.message ?? ""}`,
|
157
|
+
jobStatus,
|
156
158
|
};
|
157
159
|
}
|
158
160
|
}
|
159
161
|
catch (e) {
|
160
|
-
return {
|
162
|
+
return {
|
163
|
+
success: false,
|
164
|
+
error: `Error getting job result: ${e?.message ?? ""}`,
|
165
|
+
jobStatus: undefined,
|
166
|
+
};
|
161
167
|
}
|
162
168
|
}
|
163
169
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../src/mina/token/api.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../src/mina/token/api.ts"],"names":[],"mappings":"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"}
|
@@ -1,9 +1,2 @@
|
|
1
1
|
export * from "./api.js";
|
2
|
-
export * from "./bid.js";
|
3
|
-
export * from "./build.js";
|
4
|
-
export * from "./fee.js";
|
5
|
-
export * from "./offer.js";
|
6
|
-
export * from "./token.js";
|
7
|
-
export * from "./vk.js";
|
8
|
-
export * from "./whitelist.js";
|
9
2
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/mina/token/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/mina/token/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
|
package/package.json
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
{
|
2
2
|
"name": "zkcloudworker",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.19.0",
|
4
4
|
"type": "module",
|
5
5
|
"description": "zkCloudWorker library",
|
6
6
|
"author": "zkCloudWorker",
|
7
7
|
"license": "Apache-2.0",
|
8
8
|
"homepage": "https://docs.zkcloudworker.com",
|
9
9
|
"scripts": {
|
10
|
-
"
|
10
|
+
"build": "rm -rf dist/lib && tsc && tsc --build tsconfig.web.json && node build-cjs.js",
|
11
11
|
"login": "yarn npm login",
|
12
|
-
"publish": "yarn
|
12
|
+
"publish": "yarn build && yarn npm publish --access public"
|
13
13
|
},
|
14
14
|
"keywords": [
|
15
15
|
"javascript",
|
package/src/mina/token/api.ts
CHANGED
@@ -211,10 +211,12 @@ export class TokenAPI {
|
|
211
211
|
async getResult(jobId: string): Promise<FungibleTokenJobResult> {
|
212
212
|
try {
|
213
213
|
const callResult = await this.client.jobResult({ jobId });
|
214
|
+
|
215
|
+
// TODO: filter the repo and developer
|
214
216
|
const jobStatus: JobStatus | undefined =
|
215
|
-
callResult?.
|
216
|
-
?
|
217
|
-
:
|
217
|
+
typeof callResult?.result === "string"
|
218
|
+
? undefined
|
219
|
+
: callResult?.result?.jobStatus;
|
218
220
|
if (!callResult.success) {
|
219
221
|
return {
|
220
222
|
success: false,
|
@@ -249,14 +251,19 @@ export class TokenAPI {
|
|
249
251
|
jobStatus,
|
250
252
|
};
|
251
253
|
return { success, tx, hash, error, jobStatus };
|
252
|
-
} catch (e) {
|
254
|
+
} catch (e: any) {
|
253
255
|
return {
|
254
256
|
success: false,
|
255
|
-
error: `Error parsing job result: ${jobResult}`,
|
257
|
+
error: `Error parsing job result: ${jobResult} ${e?.message ?? ""}`,
|
258
|
+
jobStatus,
|
256
259
|
};
|
257
260
|
}
|
258
|
-
} catch (e) {
|
259
|
-
return {
|
261
|
+
} catch (e: any) {
|
262
|
+
return {
|
263
|
+
success: false,
|
264
|
+
error: `Error getting job result: ${e?.message ?? ""}`,
|
265
|
+
jobStatus: undefined,
|
266
|
+
};
|
260
267
|
}
|
261
268
|
}
|
262
269
|
}
|
package/src/mina/token/index.ts
CHANGED
@@ -1,89 +0,0 @@
|
|
1
|
-
import {
|
2
|
-
AccountUpdate,
|
3
|
-
assert,
|
4
|
-
Bool,
|
5
|
-
DeployArgs,
|
6
|
-
method,
|
7
|
-
Permissions,
|
8
|
-
Provable,
|
9
|
-
PublicKey,
|
10
|
-
SmartContract,
|
11
|
-
State,
|
12
|
-
state,
|
13
|
-
VerificationKey,
|
14
|
-
} from "o1js";
|
15
|
-
import { FungibleTokenAdminBase } from "./FungibleTokenContract.js";
|
16
|
-
|
17
|
-
export interface FungibleTokenAdminDeployProps
|
18
|
-
extends Exclude<DeployArgs, undefined> {
|
19
|
-
adminPublicKey: PublicKey;
|
20
|
-
}
|
21
|
-
|
22
|
-
/** A contract that grants permissions for administrative actions on a token.
|
23
|
-
*
|
24
|
-
* We separate this out into a dedicated contract. That way, when issuing a token, a user can
|
25
|
-
* specify their own rules for administrative actions, without changing the token contract itself.
|
26
|
-
*
|
27
|
-
* The advantage is that third party applications that only use the token in a non-privileged way
|
28
|
-
* can integrate against the unchanged token contract.
|
29
|
-
*/
|
30
|
-
export class FungibleTokenAdmin
|
31
|
-
extends SmartContract
|
32
|
-
implements FungibleTokenAdminBase
|
33
|
-
{
|
34
|
-
@state(PublicKey)
|
35
|
-
private adminPublicKey = State<PublicKey>();
|
36
|
-
|
37
|
-
async deploy(props: FungibleTokenAdminDeployProps) {
|
38
|
-
await super.deploy(props);
|
39
|
-
this.adminPublicKey.set(props.adminPublicKey);
|
40
|
-
this.account.permissions.set({
|
41
|
-
...Permissions.default(),
|
42
|
-
setVerificationKey:
|
43
|
-
Permissions.VerificationKey.impossibleDuringCurrentVersion(),
|
44
|
-
setPermissions: Permissions.impossible(),
|
45
|
-
});
|
46
|
-
}
|
47
|
-
|
48
|
-
/** Update the verification key.
|
49
|
-
* Note that because we have set the permissions for setting the verification key to `impossibleDuringCurrentVersion()`, this will only be possible in case of a protocol update that requires an update.
|
50
|
-
*/
|
51
|
-
@method
|
52
|
-
async updateVerificationKey(vk: VerificationKey) {
|
53
|
-
this.account.verificationKey.set(vk);
|
54
|
-
}
|
55
|
-
|
56
|
-
private async ensureAdminSignature() {
|
57
|
-
const admin = await Provable.witnessAsync(PublicKey, async () => {
|
58
|
-
let pk = await this.adminPublicKey.fetch();
|
59
|
-
assert(pk !== undefined, "could not fetch admin public key");
|
60
|
-
return pk;
|
61
|
-
});
|
62
|
-
this.adminPublicKey.requireEquals(admin);
|
63
|
-
return AccountUpdate.createSigned(admin);
|
64
|
-
}
|
65
|
-
|
66
|
-
@method.returns(Bool)
|
67
|
-
public async canMint(_accountUpdate: AccountUpdate) {
|
68
|
-
await this.ensureAdminSignature();
|
69
|
-
return Bool(true);
|
70
|
-
}
|
71
|
-
|
72
|
-
@method.returns(Bool)
|
73
|
-
public async canChangeAdmin(_admin: PublicKey) {
|
74
|
-
await this.ensureAdminSignature();
|
75
|
-
return Bool(true);
|
76
|
-
}
|
77
|
-
|
78
|
-
@method.returns(Bool)
|
79
|
-
public async canPause(): Promise<Bool> {
|
80
|
-
await this.ensureAdminSignature();
|
81
|
-
return Bool(true);
|
82
|
-
}
|
83
|
-
|
84
|
-
@method.returns(Bool)
|
85
|
-
public async canResume(): Promise<Bool> {
|
86
|
-
await this.ensureAdminSignature();
|
87
|
-
return Bool(true);
|
88
|
-
}
|
89
|
-
}
|
@@ -1,327 +0,0 @@
|
|
1
|
-
import {
|
2
|
-
AccountUpdate,
|
3
|
-
AccountUpdateForest,
|
4
|
-
assert,
|
5
|
-
Bool,
|
6
|
-
DeployArgs,
|
7
|
-
Field,
|
8
|
-
Int64,
|
9
|
-
method,
|
10
|
-
Permissions,
|
11
|
-
Provable,
|
12
|
-
PublicKey,
|
13
|
-
SmartContract,
|
14
|
-
State,
|
15
|
-
state,
|
16
|
-
Struct,
|
17
|
-
TokenContract,
|
18
|
-
Types,
|
19
|
-
UInt64,
|
20
|
-
UInt8,
|
21
|
-
VerificationKey,
|
22
|
-
} from "o1js";
|
23
|
-
|
24
|
-
export type FungibleTokenAdminBase = SmartContract & {
|
25
|
-
canMint(accountUpdate: AccountUpdate): Promise<Bool>;
|
26
|
-
canChangeAdmin(admin: PublicKey): Promise<Bool>;
|
27
|
-
canPause(): Promise<Bool>;
|
28
|
-
canResume(): Promise<Bool>;
|
29
|
-
};
|
30
|
-
|
31
|
-
export type FungibleTokenAdminConstructor = new (
|
32
|
-
adminPublicKey: PublicKey
|
33
|
-
) => FungibleTokenAdminBase;
|
34
|
-
|
35
|
-
export interface FungibleTokenDeployProps
|
36
|
-
extends Exclude<DeployArgs, undefined> {
|
37
|
-
/** The token symbol. */
|
38
|
-
symbol: string;
|
39
|
-
/** A source code reference, which is placed within the `zkappUri` of the contract account.
|
40
|
-
* Typically a link to a file on github. */
|
41
|
-
src: string;
|
42
|
-
}
|
43
|
-
|
44
|
-
export const FungibleTokenErrors = {
|
45
|
-
noAdminKey: "could not fetch admin contract key",
|
46
|
-
noPermissionToChangeAdmin: "Not allowed to change admin contract",
|
47
|
-
tokenPaused: "Token is currently paused",
|
48
|
-
noPermissionToMint: "Not allowed to mint tokens",
|
49
|
-
noPermissionToPause: "Not allowed to pause token",
|
50
|
-
noPermissionToResume: "Not allowed to resume token",
|
51
|
-
noTransferFromCirculation: "Can't transfer to/from the circulation account",
|
52
|
-
noPermissionChangeAllowed:
|
53
|
-
"Can't change permissions for access or receive on token accounts",
|
54
|
-
flashMinting:
|
55
|
-
"Flash-minting or unbalanced transaction detected. Please make sure that your transaction is balanced, and that your `AccountUpdate`s are ordered properly, so that tokens are not received before they are sent.",
|
56
|
-
unbalancedTransaction: "Transaction is unbalanced",
|
57
|
-
};
|
58
|
-
|
59
|
-
export function FungibleTokenContract(
|
60
|
-
adminContract: FungibleTokenAdminConstructor
|
61
|
-
) {
|
62
|
-
class FungibleToken extends TokenContract {
|
63
|
-
@state(UInt8)
|
64
|
-
decimals = State<UInt8>();
|
65
|
-
@state(PublicKey)
|
66
|
-
admin = State<PublicKey>();
|
67
|
-
@state(Bool)
|
68
|
-
paused = State<Bool>();
|
69
|
-
|
70
|
-
readonly events = {
|
71
|
-
SetAdmin: SetAdminEvent,
|
72
|
-
Pause: PauseEvent,
|
73
|
-
Mint: MintEvent,
|
74
|
-
Burn: BurnEvent,
|
75
|
-
BalanceChange: BalanceChangeEvent,
|
76
|
-
};
|
77
|
-
|
78
|
-
async deploy(props: FungibleTokenDeployProps) {
|
79
|
-
await super.deploy(props);
|
80
|
-
this.paused.set(Bool(true));
|
81
|
-
this.account.zkappUri.set(props.src);
|
82
|
-
this.account.tokenSymbol.set(props.symbol);
|
83
|
-
|
84
|
-
this.account.permissions.set({
|
85
|
-
...Permissions.default(),
|
86
|
-
setVerificationKey:
|
87
|
-
Permissions.VerificationKey.impossibleDuringCurrentVersion(),
|
88
|
-
setPermissions: Permissions.impossible(),
|
89
|
-
access: Permissions.proof(),
|
90
|
-
});
|
91
|
-
}
|
92
|
-
|
93
|
-
/** Update the verification key.
|
94
|
-
* Note that because we have set the permissions for setting the verification key to `impossibleDuringCurrentVersion()`, this will only be possible in case of a protocol update that requires an update.
|
95
|
-
*/
|
96
|
-
@method
|
97
|
-
async updateVerificationKey(vk: VerificationKey) {
|
98
|
-
this.account.verificationKey.set(vk);
|
99
|
-
}
|
100
|
-
|
101
|
-
/** Initializes the account for tracking total circulation.
|
102
|
-
* @argument {PublicKey} admin - public key where the admin contract is deployed
|
103
|
-
* @argument {UInt8} decimals - number of decimals for the token
|
104
|
-
* @argument {Bool} startPaused - if set to `Bool(true), the contract will start in a mode where token minting and transfers are paused. This should be used for non-atomic deployments
|
105
|
-
*/
|
106
|
-
@method
|
107
|
-
async initialize(admin: PublicKey, decimals: UInt8, startPaused: Bool) {
|
108
|
-
this.account.provedState.requireEquals(Bool(false));
|
109
|
-
|
110
|
-
this.admin.set(admin);
|
111
|
-
this.decimals.set(decimals);
|
112
|
-
this.paused.set(Bool(false));
|
113
|
-
|
114
|
-
this.paused.set(startPaused);
|
115
|
-
|
116
|
-
const accountUpdate = AccountUpdate.createSigned(
|
117
|
-
this.address,
|
118
|
-
this.deriveTokenId()
|
119
|
-
);
|
120
|
-
let permissions = Permissions.default();
|
121
|
-
// This is necessary in order to allow token holders to burn.
|
122
|
-
permissions.send = Permissions.none();
|
123
|
-
permissions.setPermissions = Permissions.impossible();
|
124
|
-
accountUpdate.account.permissions.set(permissions);
|
125
|
-
}
|
126
|
-
|
127
|
-
public async getAdminContract(): Promise<FungibleTokenAdminBase> {
|
128
|
-
const admin = await Provable.witnessAsync(PublicKey, async () => {
|
129
|
-
let pk = await this.admin.fetch();
|
130
|
-
assert(pk !== undefined, FungibleTokenErrors.noAdminKey);
|
131
|
-
return pk;
|
132
|
-
});
|
133
|
-
this.admin.requireEquals(admin);
|
134
|
-
return new adminContract(admin);
|
135
|
-
}
|
136
|
-
|
137
|
-
@method
|
138
|
-
async setAdmin(admin: PublicKey) {
|
139
|
-
const adminContract = await this.getAdminContract();
|
140
|
-
const canChangeAdmin = await adminContract.canChangeAdmin(admin);
|
141
|
-
canChangeAdmin.assertTrue(FungibleTokenErrors.noPermissionToChangeAdmin);
|
142
|
-
this.admin.set(admin);
|
143
|
-
this.emitEvent("SetAdmin", new SetAdminEvent({ adminKey: admin }));
|
144
|
-
}
|
145
|
-
|
146
|
-
@method.returns(AccountUpdate)
|
147
|
-
async mint(recipient: PublicKey, amount: UInt64): Promise<AccountUpdate> {
|
148
|
-
this.paused
|
149
|
-
.getAndRequireEquals()
|
150
|
-
.assertFalse(FungibleTokenErrors.tokenPaused);
|
151
|
-
const accountUpdate = this.internal.mint({ address: recipient, amount });
|
152
|
-
const adminContract = await this.getAdminContract();
|
153
|
-
const canMint = await adminContract.canMint(accountUpdate);
|
154
|
-
canMint.assertTrue(FungibleTokenErrors.noPermissionToMint);
|
155
|
-
recipient
|
156
|
-
.equals(this.address)
|
157
|
-
.assertFalse(FungibleTokenErrors.noTransferFromCirculation);
|
158
|
-
this.approve(accountUpdate);
|
159
|
-
this.emitEvent("Mint", new MintEvent({ recipient, amount }));
|
160
|
-
const circulationUpdate = AccountUpdate.create(
|
161
|
-
this.address,
|
162
|
-
this.deriveTokenId()
|
163
|
-
);
|
164
|
-
circulationUpdate.balanceChange = Int64.fromUnsigned(amount);
|
165
|
-
return accountUpdate;
|
166
|
-
}
|
167
|
-
|
168
|
-
@method.returns(AccountUpdate)
|
169
|
-
async burn(from: PublicKey, amount: UInt64): Promise<AccountUpdate> {
|
170
|
-
this.paused
|
171
|
-
.getAndRequireEquals()
|
172
|
-
.assertFalse(FungibleTokenErrors.tokenPaused);
|
173
|
-
const accountUpdate = this.internal.burn({ address: from, amount });
|
174
|
-
const circulationUpdate = AccountUpdate.create(
|
175
|
-
this.address,
|
176
|
-
this.deriveTokenId()
|
177
|
-
);
|
178
|
-
from
|
179
|
-
.equals(this.address)
|
180
|
-
.assertFalse(FungibleTokenErrors.noTransferFromCirculation);
|
181
|
-
circulationUpdate.balanceChange = Int64.fromUnsigned(amount).neg();
|
182
|
-
this.emitEvent("Burn", new BurnEvent({ from, amount }));
|
183
|
-
return accountUpdate;
|
184
|
-
}
|
185
|
-
|
186
|
-
@method
|
187
|
-
async pause() {
|
188
|
-
const adminContract = await this.getAdminContract();
|
189
|
-
const canPause = await adminContract.canPause();
|
190
|
-
canPause.assertTrue(FungibleTokenErrors.noPermissionToPause);
|
191
|
-
this.paused.set(Bool(true));
|
192
|
-
this.emitEvent("Pause", new PauseEvent({ isPaused: Bool(true) }));
|
193
|
-
}
|
194
|
-
|
195
|
-
@method
|
196
|
-
async resume() {
|
197
|
-
const adminContract = await this.getAdminContract();
|
198
|
-
const canResume = await adminContract.canResume();
|
199
|
-
canResume.assertTrue(FungibleTokenErrors.noPermissionToResume);
|
200
|
-
this.paused.set(Bool(false));
|
201
|
-
this.emitEvent("Pause", new PauseEvent({ isPaused: Bool(false) }));
|
202
|
-
}
|
203
|
-
|
204
|
-
@method
|
205
|
-
async transfer(from: PublicKey, to: PublicKey, amount: UInt64) {
|
206
|
-
this.paused
|
207
|
-
.getAndRequireEquals()
|
208
|
-
.assertFalse(FungibleTokenErrors.tokenPaused);
|
209
|
-
from
|
210
|
-
.equals(this.address)
|
211
|
-
.assertFalse(FungibleTokenErrors.noTransferFromCirculation);
|
212
|
-
to.equals(this.address).assertFalse(
|
213
|
-
FungibleTokenErrors.noTransferFromCirculation
|
214
|
-
);
|
215
|
-
this.internal.send({ from, to, amount });
|
216
|
-
}
|
217
|
-
|
218
|
-
checkPermissionsUpdate(update: AccountUpdate) {
|
219
|
-
let permissions = update.update.permissions;
|
220
|
-
|
221
|
-
let { access, receive } = permissions.value;
|
222
|
-
let accessIsNone = Provable.equal(
|
223
|
-
Types.AuthRequired,
|
224
|
-
access,
|
225
|
-
Permissions.none()
|
226
|
-
);
|
227
|
-
let receiveIsNone = Provable.equal(
|
228
|
-
Types.AuthRequired,
|
229
|
-
receive,
|
230
|
-
Permissions.none()
|
231
|
-
);
|
232
|
-
let updateAllowed = accessIsNone.and(receiveIsNone);
|
233
|
-
|
234
|
-
assert(
|
235
|
-
updateAllowed.or(permissions.isSome.not()),
|
236
|
-
FungibleTokenErrors.noPermissionChangeAllowed
|
237
|
-
);
|
238
|
-
}
|
239
|
-
|
240
|
-
/** Approve `AccountUpdate`s that have been created outside of the token contract.
|
241
|
-
*
|
242
|
-
* @argument {AccountUpdateForest} updates - The `AccountUpdate`s to approve. Note that the forest size is limited by the base token contract, @see TokenContract.MAX_ACCOUNT_UPDATES The current limit is 9.
|
243
|
-
*/
|
244
|
-
@method
|
245
|
-
async approveBase(updates: AccountUpdateForest): Promise<void> {
|
246
|
-
this.paused
|
247
|
-
.getAndRequireEquals()
|
248
|
-
.assertFalse(FungibleTokenErrors.tokenPaused);
|
249
|
-
let totalBalance = Int64.from(0);
|
250
|
-
this.forEachUpdate(updates, (update, usesToken) => {
|
251
|
-
// Make sure that the account permissions are not changed
|
252
|
-
this.checkPermissionsUpdate(update);
|
253
|
-
this.emitEventIf(
|
254
|
-
usesToken,
|
255
|
-
"BalanceChange",
|
256
|
-
new BalanceChangeEvent({
|
257
|
-
address: update.publicKey,
|
258
|
-
amount: update.balanceChange,
|
259
|
-
})
|
260
|
-
);
|
261
|
-
// Don't allow transfers to/from the account that's tracking circulation
|
262
|
-
update.publicKey
|
263
|
-
.equals(this.address)
|
264
|
-
.and(usesToken)
|
265
|
-
.assertFalse(FungibleTokenErrors.noTransferFromCirculation);
|
266
|
-
totalBalance = Provable.if(
|
267
|
-
usesToken,
|
268
|
-
totalBalance.add(update.balanceChange),
|
269
|
-
totalBalance
|
270
|
-
);
|
271
|
-
totalBalance.isPositive().assertFalse(FungibleTokenErrors.flashMinting);
|
272
|
-
});
|
273
|
-
totalBalance.assertEquals(
|
274
|
-
Int64.zero,
|
275
|
-
FungibleTokenErrors.unbalancedTransaction
|
276
|
-
);
|
277
|
-
}
|
278
|
-
|
279
|
-
@method.returns(UInt64)
|
280
|
-
async getBalanceOf(address: PublicKey): Promise<UInt64> {
|
281
|
-
const account = AccountUpdate.create(
|
282
|
-
address,
|
283
|
-
this.deriveTokenId()
|
284
|
-
).account;
|
285
|
-
const balance = account.balance.get();
|
286
|
-
account.balance.requireEquals(balance);
|
287
|
-
return balance;
|
288
|
-
}
|
289
|
-
|
290
|
-
/** Reports the current circulating supply
|
291
|
-
* This does take into account currently unreduced actions.
|
292
|
-
*/
|
293
|
-
async getCirculating(): Promise<UInt64> {
|
294
|
-
let circulating = await this.getBalanceOf(this.address);
|
295
|
-
return circulating;
|
296
|
-
}
|
297
|
-
|
298
|
-
@method.returns(UInt8)
|
299
|
-
async getDecimals(): Promise<UInt8> {
|
300
|
-
return this.decimals.getAndRequireEquals();
|
301
|
-
}
|
302
|
-
}
|
303
|
-
return FungibleToken;
|
304
|
-
}
|
305
|
-
|
306
|
-
export class SetAdminEvent extends Struct({
|
307
|
-
adminKey: PublicKey,
|
308
|
-
}) {}
|
309
|
-
|
310
|
-
export class PauseEvent extends Struct({
|
311
|
-
isPaused: Bool,
|
312
|
-
}) {}
|
313
|
-
|
314
|
-
export class MintEvent extends Struct({
|
315
|
-
recipient: PublicKey,
|
316
|
-
amount: UInt64,
|
317
|
-
}) {}
|
318
|
-
|
319
|
-
export class BurnEvent extends Struct({
|
320
|
-
from: PublicKey,
|
321
|
-
amount: UInt64,
|
322
|
-
}) {}
|
323
|
-
|
324
|
-
export class BalanceChangeEvent extends Struct({
|
325
|
-
address: PublicKey,
|
326
|
-
amount: Int64,
|
327
|
-
}) {}
|