zkcloudworker 0.18.29 → 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 +92 -1559
- package/dist/node/mina/token/api.js +1 -4
- 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 +1 -4
- 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 +2 -4
- 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
package/dist/node/index.cjs
CHANGED
@@ -32,12 +32,6 @@ var node_exports = {};
|
|
32
32
|
__export(node_exports, {
|
33
33
|
Cloud: () => Cloud,
|
34
34
|
Devnet: () => Devnet,
|
35
|
-
FungibleToken: () => FungibleToken,
|
36
|
-
FungibleTokenAdmin: () => FungibleTokenAdmin,
|
37
|
-
FungibleTokenBidContract: () => FungibleTokenBidContract,
|
38
|
-
FungibleTokenOfferContract: () => FungibleTokenOfferContract,
|
39
|
-
FungibleTokenWhitelistedAdmin: () => FungibleTokenWhitelistedAdmin,
|
40
|
-
LAUNCH_FEE: () => LAUNCH_FEE,
|
41
35
|
Lightnet: () => Lightnet,
|
42
36
|
Local: () => Local,
|
43
37
|
LocalCloud: () => LocalCloud,
|
@@ -45,15 +39,8 @@ __export(node_exports, {
|
|
45
39
|
Mainnet: () => Mainnet,
|
46
40
|
Memory: () => Memory,
|
47
41
|
Storage: () => Storage,
|
48
|
-
TRANSACTION_FEE: () => TRANSACTION_FEE,
|
49
42
|
TinyContract: () => TinyContract,
|
50
43
|
TokenAPI: () => TokenAPI,
|
51
|
-
UInt64Option: () => UInt64Option,
|
52
|
-
Whitelist: () => Whitelist,
|
53
|
-
WhitelistMap: () => WhitelistMap,
|
54
|
-
WhitelistMapOption: () => WhitelistMapOption,
|
55
|
-
WhitelistedAddress: () => WhitelistedAddress,
|
56
|
-
WhitelistedFungibleToken: () => WhitelistedFungibleToken,
|
57
44
|
Zeko: () => Zeko,
|
58
45
|
accountBalance: () => accountBalance,
|
59
46
|
accountBalanceMina: () => accountBalanceMina,
|
@@ -62,8 +49,6 @@ __export(node_exports, {
|
|
62
49
|
bigintFromBase64: () => bigintFromBase64,
|
63
50
|
bigintToBase56: () => bigintToBase56,
|
64
51
|
bigintToBase64: () => bigintToBase64,
|
65
|
-
buildTokenDeployTransaction: () => buildTokenDeployTransaction,
|
66
|
-
buildTokenTransaction: () => buildTokenTransaction,
|
67
52
|
checkAddress: () => checkAddress,
|
68
53
|
checkMinaZkappTransaction: () => checkMinaZkappTransaction,
|
69
54
|
createIpfsURL: () => createIpfsURL,
|
@@ -81,7 +66,6 @@ __export(node_exports, {
|
|
81
66
|
fieldToBase64: () => fieldToBase64,
|
82
67
|
formatTime: () => formatTime,
|
83
68
|
fromBase: () => fromBase,
|
84
|
-
fungibleTokenVerificationKeys: () => fungibleTokenVerificationKeys,
|
85
69
|
getAccountFromGraphQL: () => getAccountFromGraphQL,
|
86
70
|
getAccountNonce: () => getAccountNonce,
|
87
71
|
getBalanceFromGraphQL: () => getBalanceFromGraphQL,
|
@@ -90,8 +74,6 @@ __export(node_exports, {
|
|
90
74
|
getNetworkIdHash: () => getNetworkIdHash,
|
91
75
|
getNonce: () => getNonce,
|
92
76
|
getPaymentTxsFromBlockBerry: () => getPaymentTxsFromBlockBerry,
|
93
|
-
getTokenSymbolAndAdmin: () => getTokenSymbolAndAdmin,
|
94
|
-
getTokenTransactionSender: () => getTokenTransactionSender,
|
95
77
|
getTxStatusFast: () => getTxStatusFast,
|
96
78
|
getZkAppFromBlockBerry: () => getZkAppFromBlockBerry,
|
97
79
|
getZkAppTxFromBlockBerry: () => getZkAppTxFromBlockBerry,
|
@@ -110,7 +92,6 @@ __export(node_exports, {
|
|
110
92
|
sleep: () => sleep,
|
111
93
|
toBase: () => toBase,
|
112
94
|
tokenBalance: () => tokenBalance,
|
113
|
-
tokenVerificationKeys: () => tokenVerificationKeys,
|
114
95
|
transactionParams: () => transactionParams,
|
115
96
|
txStatusBlockberry: () => txStatusBlockberry,
|
116
97
|
zkCloudWorker: () => zkCloudWorker,
|
@@ -2047,1495 +2028,6 @@ var TokenAPI = class {
|
|
2047
2028
|
}
|
2048
2029
|
};
|
2049
2030
|
|
2050
|
-
// dist/node/mina/token/bid.js
|
2051
|
-
var import_tslib5 = require("tslib");
|
2052
|
-
var import_o1js13 = require("o1js");
|
2053
|
-
|
2054
|
-
// dist/node/mina/token/whitelist.js
|
2055
|
-
var import_o1js8 = require("o1js");
|
2056
|
-
|
2057
|
-
// dist/node/mina/storage/storage.js
|
2058
|
-
var import_o1js7 = require("o1js");
|
2059
|
-
var Storage = class _Storage extends (0, import_o1js7.Struct)({
|
2060
|
-
url: import_o1js7.Provable.Array(import_o1js7.Field, 2)
|
2061
|
-
}) {
|
2062
|
-
constructor(value) {
|
2063
|
-
super(value);
|
2064
|
-
}
|
2065
|
-
/**
|
2066
|
-
* Asserts that two Storage instances are equal.
|
2067
|
-
* @param a The first Storage instance.
|
2068
|
-
* @param b The second Storage instance.
|
2069
|
-
*/
|
2070
|
-
static assertEquals(a, b) {
|
2071
|
-
a.url[0].assertEquals(b.url[0]);
|
2072
|
-
a.url[1].assertEquals(b.url[1]);
|
2073
|
-
}
|
2074
|
-
/**
|
2075
|
-
* Checks if two Storage instances are equal.
|
2076
|
-
* @param a The first Storage instance.
|
2077
|
-
* @param b The second Storage instance.
|
2078
|
-
* @returns A Bool indicating whether the two instances are equal.
|
2079
|
-
*/
|
2080
|
-
static equals(a, b) {
|
2081
|
-
return a.url[0].equals(b.url[0]).and(a.url[1].equals(b.url[1]));
|
2082
|
-
}
|
2083
|
-
/**
|
2084
|
-
* Creates a Storage instance from a string.
|
2085
|
-
* @param url The string representing the storage URL.
|
2086
|
-
* @returns A new Storage instance.
|
2087
|
-
*/
|
2088
|
-
static fromString(url) {
|
2089
|
-
const fields = import_o1js7.Encoding.stringToFields(url);
|
2090
|
-
if (fields.length !== 2)
|
2091
|
-
throw new Error("Invalid string length");
|
2092
|
-
return new _Storage({ url: [fields[0], fields[1]] });
|
2093
|
-
}
|
2094
|
-
/**
|
2095
|
-
* Converts the Storage instance to a string.
|
2096
|
-
* @returns The string representation of the storage URL.
|
2097
|
-
*/
|
2098
|
-
toString() {
|
2099
|
-
if (this.url[0].toBigInt() === 0n && this.url[1].toBigInt() === 0n) {
|
2100
|
-
throw new Error("Invalid string");
|
2101
|
-
}
|
2102
|
-
return import_o1js7.Encoding.stringFromFields([this.url[0], this.url[1]]);
|
2103
|
-
}
|
2104
|
-
};
|
2105
|
-
|
2106
|
-
// dist/node/mina/storage/ipfs.js
|
2107
|
-
function createIpfsURL(params) {
|
2108
|
-
let { hash, gateway, apiToken } = params;
|
2109
|
-
gateway ??= process.env.PINATA_IPFS_GATEWAY ?? process.env.NEXT_PUBLIC_PINATA_IPFS_GATEWAY ?? process.env.REACT_APP_PINATA_IPFS_GATEWAY;
|
2110
|
-
apiToken ??= process.env.PINATA_GATEWAY_TOKEN ?? process.env.NEXT_PUBLIC_PINATA_GATEWAY_TOKEN ?? process.env.REACT_APP_PINATA_GATEWAY_TOKEN;
|
2111
|
-
if (!gateway) {
|
2112
|
-
gateway = "https://gateway.pinata.cloud/ipfs/";
|
2113
|
-
}
|
2114
|
-
return gateway + hash + (apiToken ? "?pinataGatewayToken=" + apiToken : "");
|
2115
|
-
}
|
2116
|
-
|
2117
|
-
// dist/node/mina/token/whitelist.js
|
2118
|
-
var { IndexedMerkleMap: IndexedMerkleMap2 } = import_o1js8.Experimental;
|
2119
|
-
var WHITELIST_HEIGHT = 20;
|
2120
|
-
var WhitelistMap = class extends IndexedMerkleMap2(WHITELIST_HEIGHT) {
|
2121
|
-
};
|
2122
|
-
var WhitelistMapOption = class extends (0, import_o1js8.Option)(WhitelistMap) {
|
2123
|
-
};
|
2124
|
-
var UInt64Option = class extends (0, import_o1js8.Option)(import_o1js8.UInt64) {
|
2125
|
-
};
|
2126
|
-
var WhitelistedAddress = class extends (0, import_o1js8.Struct)({
|
2127
|
-
address: import_o1js8.PublicKey,
|
2128
|
-
amount: import_o1js8.UInt64
|
2129
|
-
// Maximum permitted amount of the transaction
|
2130
|
-
}) {
|
2131
|
-
};
|
2132
|
-
var Whitelist = class _Whitelist extends (0, import_o1js8.Struct)({
|
2133
|
-
/** The root hash of the Merkle tree representing the whitelist. */
|
2134
|
-
root: import_o1js8.Field,
|
2135
|
-
/** Off-chain storage information, typically an IPFS hash pointing to the whitelist data. */
|
2136
|
-
storage: Storage
|
2137
|
-
}) {
|
2138
|
-
isNone() {
|
2139
|
-
return this.root.equals((0, import_o1js8.Field)(0)).or(Storage.equals(this.storage, Storage.empty()));
|
2140
|
-
}
|
2141
|
-
isSome() {
|
2142
|
-
return this.isNone().not();
|
2143
|
-
}
|
2144
|
-
async load() {
|
2145
|
-
const isNone = this.isNone();
|
2146
|
-
const map = await import_o1js8.Provable.witnessAsync(WhitelistMapOption, async () => {
|
2147
|
-
if (isNone.toBoolean())
|
2148
|
-
return WhitelistMapOption.none();
|
2149
|
-
else
|
2150
|
-
return WhitelistMapOption.fromValue(await loadIndexedMerkleMap({
|
2151
|
-
url: createIpfsURL({ hash: this.storage.toString() }),
|
2152
|
-
type: WhitelistMap
|
2153
|
-
}));
|
2154
|
-
});
|
2155
|
-
isNone.assertEquals(map.isSome.not());
|
2156
|
-
const root = import_o1js8.Provable.if(map.isSome, map.orElse(new WhitelistMap()).root, (0, import_o1js8.Field)(0));
|
2157
|
-
root.equals(this.root);
|
2158
|
-
return map;
|
2159
|
-
}
|
2160
|
-
/**
|
2161
|
-
* The function fetches a whitelisted amount associated with a given address using a map and returns it
|
2162
|
-
* as a UInt64Option.
|
2163
|
-
* @param {PublicKey} address - The `address` parameter is of type `PublicKey`, which represents a
|
2164
|
-
* public key used in cryptography for various purposes such as encryption, digital signatures, and
|
2165
|
-
* authentication. In the context of the `fetchWhitelistedAmount` function, the `address` parameter is
|
2166
|
-
* used to retrieve a whitelisted amount
|
2167
|
-
* @returns The `fetchWhitelistedAmount` function returns a `Promise` that resolves to a `UInt64Option`
|
2168
|
-
* object. This object contains a `value` property representing the amount retrieved from a map based
|
2169
|
-
* on the provided address. The `isSome` property indicates whether the value is present or not.
|
2170
|
-
* The value is not present if the whitelist is NOT empty and the address is NOT whitelisted.
|
2171
|
-
* The value is present if the whitelist is NOT empty or the address IS whitelisted.
|
2172
|
-
* The value is present and equals to UInt64.MAXINT() if the whitelist IS empty.
|
2173
|
-
*/
|
2174
|
-
async getWhitelistedAmount(address) {
|
2175
|
-
const map = await this.load();
|
2176
|
-
const key = import_o1js8.Poseidon.hashPacked(import_o1js8.PublicKey, address);
|
2177
|
-
const value = map.orElse(new WhitelistMap()).getOption(key);
|
2178
|
-
const valueField = value.orElse(import_o1js8.UInt64.MAXINT().value);
|
2179
|
-
valueField.assertLessThanOrEqual(import_o1js8.UInt64.MAXINT().value);
|
2180
|
-
const amount = import_o1js8.UInt64.Unsafe.fromField(valueField);
|
2181
|
-
return new UInt64Option({
|
2182
|
-
value: amount,
|
2183
|
-
isSome: value.isSome.or(this.isNone())
|
2184
|
-
});
|
2185
|
-
}
|
2186
|
-
static empty() {
|
2187
|
-
return new _Whitelist({
|
2188
|
-
root: (0, import_o1js8.Field)(0),
|
2189
|
-
storage: Storage.empty()
|
2190
|
-
});
|
2191
|
-
}
|
2192
|
-
/**
|
2193
|
-
* Creates a new whitelist and pins it to IPFS.
|
2194
|
-
* @param params - The parameters for creating the whitelist.
|
2195
|
-
* @returns A new `Whitelist` instance.
|
2196
|
-
*/
|
2197
|
-
static async create(params) {
|
2198
|
-
const { name = "whitelist.json", keyvalues, timeout = 60 * 1e3, attempts = 5, auth } = params;
|
2199
|
-
const list = typeof params.list[0].address === "string" ? params.list.map((item) => new WhitelistedAddress({
|
2200
|
-
address: import_o1js8.PublicKey.fromBase58(item.address),
|
2201
|
-
amount: item.amount ? import_o1js8.UInt64.from(item.amount) : import_o1js8.UInt64.MAXINT()
|
2202
|
-
})) : params.list;
|
2203
|
-
const map = new WhitelistMap();
|
2204
|
-
for (const item of list) {
|
2205
|
-
map.insert(import_o1js8.Poseidon.hashPacked(import_o1js8.PublicKey, item.address), item.amount.toBigInt());
|
2206
|
-
}
|
2207
|
-
const serializedMap = serializeIndexedMap(map);
|
2208
|
-
const json = {
|
2209
|
-
map: serializedMap,
|
2210
|
-
whitelist: list.map((item) => ({
|
2211
|
-
address: item.address.toBase58(),
|
2212
|
-
amount: Number(item.amount.toBigInt())
|
2213
|
-
}))
|
2214
|
-
};
|
2215
|
-
let attempt = 0;
|
2216
|
-
const start = Date.now();
|
2217
|
-
if (process.env.DEBUG === "true")
|
2218
|
-
console.log("Whitelist.create:", { json, name, keyvalues, auth }, json.whitelist);
|
2219
|
-
let hash = await pinJSON({
|
2220
|
-
data: json,
|
2221
|
-
name,
|
2222
|
-
keyvalues,
|
2223
|
-
auth
|
2224
|
-
});
|
2225
|
-
while (!hash && attempt < attempts && Date.now() - start < timeout) {
|
2226
|
-
attempt++;
|
2227
|
-
await sleep(5e3 * attempt);
|
2228
|
-
hash = await pinJSON({
|
2229
|
-
data: json,
|
2230
|
-
name,
|
2231
|
-
keyvalues,
|
2232
|
-
auth
|
2233
|
-
});
|
2234
|
-
}
|
2235
|
-
if (!hash)
|
2236
|
-
throw new Error("Failed to pin whitelist");
|
2237
|
-
return new _Whitelist({
|
2238
|
-
root: map.root,
|
2239
|
-
storage: Storage.fromString(hash)
|
2240
|
-
});
|
2241
|
-
}
|
2242
|
-
toString() {
|
2243
|
-
return JSON.stringify({ root: this.root.toJSON(), storage: this.storage.toString() }, null, 2);
|
2244
|
-
}
|
2245
|
-
static fromString(str) {
|
2246
|
-
const json = JSON.parse(str);
|
2247
|
-
return new _Whitelist({
|
2248
|
-
root: import_o1js8.Field.fromJSON(json.root),
|
2249
|
-
storage: Storage.fromString(json.storage)
|
2250
|
-
});
|
2251
|
-
}
|
2252
|
-
};
|
2253
|
-
|
2254
|
-
// dist/node/mina/token/FungibleTokenContract.js
|
2255
|
-
var import_tslib = require("tslib");
|
2256
|
-
var import_o1js9 = require("o1js");
|
2257
|
-
var FungibleTokenErrors = {
|
2258
|
-
noAdminKey: "could not fetch admin contract key",
|
2259
|
-
noPermissionToChangeAdmin: "Not allowed to change admin contract",
|
2260
|
-
tokenPaused: "Token is currently paused",
|
2261
|
-
noPermissionToMint: "Not allowed to mint tokens",
|
2262
|
-
noPermissionToPause: "Not allowed to pause token",
|
2263
|
-
noPermissionToResume: "Not allowed to resume token",
|
2264
|
-
noTransferFromCirculation: "Can't transfer to/from the circulation account",
|
2265
|
-
noPermissionChangeAllowed: "Can't change permissions for access or receive on token accounts",
|
2266
|
-
flashMinting: "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.",
|
2267
|
-
unbalancedTransaction: "Transaction is unbalanced"
|
2268
|
-
};
|
2269
|
-
function FungibleTokenContract(adminContract) {
|
2270
|
-
class FungibleToken2 extends import_o1js9.TokenContract {
|
2271
|
-
constructor() {
|
2272
|
-
super(...arguments);
|
2273
|
-
this.decimals = (0, import_o1js9.State)();
|
2274
|
-
this.admin = (0, import_o1js9.State)();
|
2275
|
-
this.paused = (0, import_o1js9.State)();
|
2276
|
-
this.events = {
|
2277
|
-
SetAdmin: SetAdminEvent,
|
2278
|
-
Pause: PauseEvent,
|
2279
|
-
Mint: MintEvent,
|
2280
|
-
Burn: BurnEvent,
|
2281
|
-
BalanceChange: BalanceChangeEvent
|
2282
|
-
};
|
2283
|
-
}
|
2284
|
-
async deploy(props) {
|
2285
|
-
await super.deploy(props);
|
2286
|
-
this.paused.set((0, import_o1js9.Bool)(true));
|
2287
|
-
this.account.zkappUri.set(props.src);
|
2288
|
-
this.account.tokenSymbol.set(props.symbol);
|
2289
|
-
this.account.permissions.set({
|
2290
|
-
...import_o1js9.Permissions.default(),
|
2291
|
-
setVerificationKey: import_o1js9.Permissions.VerificationKey.impossibleDuringCurrentVersion(),
|
2292
|
-
setPermissions: import_o1js9.Permissions.impossible(),
|
2293
|
-
access: import_o1js9.Permissions.proof()
|
2294
|
-
});
|
2295
|
-
}
|
2296
|
-
/** Update the verification key.
|
2297
|
-
* 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.
|
2298
|
-
*/
|
2299
|
-
async updateVerificationKey(vk) {
|
2300
|
-
this.account.verificationKey.set(vk);
|
2301
|
-
}
|
2302
|
-
/** Initializes the account for tracking total circulation.
|
2303
|
-
* @argument {PublicKey} admin - public key where the admin contract is deployed
|
2304
|
-
* @argument {UInt8} decimals - number of decimals for the token
|
2305
|
-
* @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
|
2306
|
-
*/
|
2307
|
-
async initialize(admin, decimals, startPaused) {
|
2308
|
-
this.account.provedState.requireEquals((0, import_o1js9.Bool)(false));
|
2309
|
-
this.admin.set(admin);
|
2310
|
-
this.decimals.set(decimals);
|
2311
|
-
this.paused.set((0, import_o1js9.Bool)(false));
|
2312
|
-
this.paused.set(startPaused);
|
2313
|
-
const accountUpdate = import_o1js9.AccountUpdate.createSigned(this.address, this.deriveTokenId());
|
2314
|
-
let permissions = import_o1js9.Permissions.default();
|
2315
|
-
permissions.send = import_o1js9.Permissions.none();
|
2316
|
-
permissions.setPermissions = import_o1js9.Permissions.impossible();
|
2317
|
-
accountUpdate.account.permissions.set(permissions);
|
2318
|
-
}
|
2319
|
-
async getAdminContract() {
|
2320
|
-
const admin = await import_o1js9.Provable.witnessAsync(import_o1js9.PublicKey, async () => {
|
2321
|
-
let pk = await this.admin.fetch();
|
2322
|
-
(0, import_o1js9.assert)(pk !== void 0, FungibleTokenErrors.noAdminKey);
|
2323
|
-
return pk;
|
2324
|
-
});
|
2325
|
-
this.admin.requireEquals(admin);
|
2326
|
-
return new adminContract(admin);
|
2327
|
-
}
|
2328
|
-
async setAdmin(admin) {
|
2329
|
-
const adminContract2 = await this.getAdminContract();
|
2330
|
-
const canChangeAdmin = await adminContract2.canChangeAdmin(admin);
|
2331
|
-
canChangeAdmin.assertTrue(FungibleTokenErrors.noPermissionToChangeAdmin);
|
2332
|
-
this.admin.set(admin);
|
2333
|
-
this.emitEvent("SetAdmin", new SetAdminEvent({ adminKey: admin }));
|
2334
|
-
}
|
2335
|
-
async mint(recipient, amount) {
|
2336
|
-
this.paused.getAndRequireEquals().assertFalse(FungibleTokenErrors.tokenPaused);
|
2337
|
-
const accountUpdate = this.internal.mint({ address: recipient, amount });
|
2338
|
-
const adminContract2 = await this.getAdminContract();
|
2339
|
-
const canMint = await adminContract2.canMint(accountUpdate);
|
2340
|
-
canMint.assertTrue(FungibleTokenErrors.noPermissionToMint);
|
2341
|
-
recipient.equals(this.address).assertFalse(FungibleTokenErrors.noTransferFromCirculation);
|
2342
|
-
this.approve(accountUpdate);
|
2343
|
-
this.emitEvent("Mint", new MintEvent({ recipient, amount }));
|
2344
|
-
const circulationUpdate = import_o1js9.AccountUpdate.create(this.address, this.deriveTokenId());
|
2345
|
-
circulationUpdate.balanceChange = import_o1js9.Int64.fromUnsigned(amount);
|
2346
|
-
return accountUpdate;
|
2347
|
-
}
|
2348
|
-
async burn(from, amount) {
|
2349
|
-
this.paused.getAndRequireEquals().assertFalse(FungibleTokenErrors.tokenPaused);
|
2350
|
-
const accountUpdate = this.internal.burn({ address: from, amount });
|
2351
|
-
const circulationUpdate = import_o1js9.AccountUpdate.create(this.address, this.deriveTokenId());
|
2352
|
-
from.equals(this.address).assertFalse(FungibleTokenErrors.noTransferFromCirculation);
|
2353
|
-
circulationUpdate.balanceChange = import_o1js9.Int64.fromUnsigned(amount).neg();
|
2354
|
-
this.emitEvent("Burn", new BurnEvent({ from, amount }));
|
2355
|
-
return accountUpdate;
|
2356
|
-
}
|
2357
|
-
async pause() {
|
2358
|
-
const adminContract2 = await this.getAdminContract();
|
2359
|
-
const canPause = await adminContract2.canPause();
|
2360
|
-
canPause.assertTrue(FungibleTokenErrors.noPermissionToPause);
|
2361
|
-
this.paused.set((0, import_o1js9.Bool)(true));
|
2362
|
-
this.emitEvent("Pause", new PauseEvent({ isPaused: (0, import_o1js9.Bool)(true) }));
|
2363
|
-
}
|
2364
|
-
async resume() {
|
2365
|
-
const adminContract2 = await this.getAdminContract();
|
2366
|
-
const canResume = await adminContract2.canResume();
|
2367
|
-
canResume.assertTrue(FungibleTokenErrors.noPermissionToResume);
|
2368
|
-
this.paused.set((0, import_o1js9.Bool)(false));
|
2369
|
-
this.emitEvent("Pause", new PauseEvent({ isPaused: (0, import_o1js9.Bool)(false) }));
|
2370
|
-
}
|
2371
|
-
async transfer(from, to, amount) {
|
2372
|
-
this.paused.getAndRequireEquals().assertFalse(FungibleTokenErrors.tokenPaused);
|
2373
|
-
from.equals(this.address).assertFalse(FungibleTokenErrors.noTransferFromCirculation);
|
2374
|
-
to.equals(this.address).assertFalse(FungibleTokenErrors.noTransferFromCirculation);
|
2375
|
-
this.internal.send({ from, to, amount });
|
2376
|
-
}
|
2377
|
-
checkPermissionsUpdate(update) {
|
2378
|
-
let permissions = update.update.permissions;
|
2379
|
-
let { access, receive } = permissions.value;
|
2380
|
-
let accessIsNone = import_o1js9.Provable.equal(import_o1js9.Types.AuthRequired, access, import_o1js9.Permissions.none());
|
2381
|
-
let receiveIsNone = import_o1js9.Provable.equal(import_o1js9.Types.AuthRequired, receive, import_o1js9.Permissions.none());
|
2382
|
-
let updateAllowed = accessIsNone.and(receiveIsNone);
|
2383
|
-
(0, import_o1js9.assert)(updateAllowed.or(permissions.isSome.not()), FungibleTokenErrors.noPermissionChangeAllowed);
|
2384
|
-
}
|
2385
|
-
/** Approve `AccountUpdate`s that have been created outside of the token contract.
|
2386
|
-
*
|
2387
|
-
* @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.
|
2388
|
-
*/
|
2389
|
-
async approveBase(updates) {
|
2390
|
-
this.paused.getAndRequireEquals().assertFalse(FungibleTokenErrors.tokenPaused);
|
2391
|
-
let totalBalance = import_o1js9.Int64.from(0);
|
2392
|
-
this.forEachUpdate(updates, (update, usesToken) => {
|
2393
|
-
this.checkPermissionsUpdate(update);
|
2394
|
-
this.emitEventIf(usesToken, "BalanceChange", new BalanceChangeEvent({
|
2395
|
-
address: update.publicKey,
|
2396
|
-
amount: update.balanceChange
|
2397
|
-
}));
|
2398
|
-
update.publicKey.equals(this.address).and(usesToken).assertFalse(FungibleTokenErrors.noTransferFromCirculation);
|
2399
|
-
totalBalance = import_o1js9.Provable.if(usesToken, totalBalance.add(update.balanceChange), totalBalance);
|
2400
|
-
totalBalance.isPositive().assertFalse(FungibleTokenErrors.flashMinting);
|
2401
|
-
});
|
2402
|
-
totalBalance.assertEquals(import_o1js9.Int64.zero, FungibleTokenErrors.unbalancedTransaction);
|
2403
|
-
}
|
2404
|
-
async getBalanceOf(address) {
|
2405
|
-
const account = import_o1js9.AccountUpdate.create(address, this.deriveTokenId()).account;
|
2406
|
-
const balance = account.balance.get();
|
2407
|
-
account.balance.requireEquals(balance);
|
2408
|
-
return balance;
|
2409
|
-
}
|
2410
|
-
/** Reports the current circulating supply
|
2411
|
-
* This does take into account currently unreduced actions.
|
2412
|
-
*/
|
2413
|
-
async getCirculating() {
|
2414
|
-
let circulating = await this.getBalanceOf(this.address);
|
2415
|
-
return circulating;
|
2416
|
-
}
|
2417
|
-
async getDecimals() {
|
2418
|
-
return this.decimals.getAndRequireEquals();
|
2419
|
-
}
|
2420
|
-
}
|
2421
|
-
(0, import_tslib.__decorate)([
|
2422
|
-
(0, import_o1js9.state)(import_o1js9.UInt8),
|
2423
|
-
(0, import_tslib.__metadata)("design:type", Object)
|
2424
|
-
], FungibleToken2.prototype, "decimals", void 0);
|
2425
|
-
(0, import_tslib.__decorate)([
|
2426
|
-
(0, import_o1js9.state)(import_o1js9.PublicKey),
|
2427
|
-
(0, import_tslib.__metadata)("design:type", Object)
|
2428
|
-
], FungibleToken2.prototype, "admin", void 0);
|
2429
|
-
(0, import_tslib.__decorate)([
|
2430
|
-
(0, import_o1js9.state)(import_o1js9.Bool),
|
2431
|
-
(0, import_tslib.__metadata)("design:type", Object)
|
2432
|
-
], FungibleToken2.prototype, "paused", void 0);
|
2433
|
-
(0, import_tslib.__decorate)([
|
2434
|
-
import_o1js9.method,
|
2435
|
-
(0, import_tslib.__metadata)("design:type", Function),
|
2436
|
-
(0, import_tslib.__metadata)("design:paramtypes", [import_o1js9.VerificationKey]),
|
2437
|
-
(0, import_tslib.__metadata)("design:returntype", Promise)
|
2438
|
-
], FungibleToken2.prototype, "updateVerificationKey", null);
|
2439
|
-
(0, import_tslib.__decorate)([
|
2440
|
-
import_o1js9.method,
|
2441
|
-
(0, import_tslib.__metadata)("design:type", Function),
|
2442
|
-
(0, import_tslib.__metadata)("design:paramtypes", [import_o1js9.PublicKey, import_o1js9.UInt8, import_o1js9.Bool]),
|
2443
|
-
(0, import_tslib.__metadata)("design:returntype", Promise)
|
2444
|
-
], FungibleToken2.prototype, "initialize", null);
|
2445
|
-
(0, import_tslib.__decorate)([
|
2446
|
-
import_o1js9.method,
|
2447
|
-
(0, import_tslib.__metadata)("design:type", Function),
|
2448
|
-
(0, import_tslib.__metadata)("design:paramtypes", [import_o1js9.PublicKey]),
|
2449
|
-
(0, import_tslib.__metadata)("design:returntype", Promise)
|
2450
|
-
], FungibleToken2.prototype, "setAdmin", null);
|
2451
|
-
(0, import_tslib.__decorate)([
|
2452
|
-
import_o1js9.method.returns(import_o1js9.AccountUpdate),
|
2453
|
-
(0, import_tslib.__metadata)("design:type", Function),
|
2454
|
-
(0, import_tslib.__metadata)("design:paramtypes", [import_o1js9.PublicKey, import_o1js9.UInt64]),
|
2455
|
-
(0, import_tslib.__metadata)("design:returntype", Promise)
|
2456
|
-
], FungibleToken2.prototype, "mint", null);
|
2457
|
-
(0, import_tslib.__decorate)([
|
2458
|
-
import_o1js9.method.returns(import_o1js9.AccountUpdate),
|
2459
|
-
(0, import_tslib.__metadata)("design:type", Function),
|
2460
|
-
(0, import_tslib.__metadata)("design:paramtypes", [import_o1js9.PublicKey, import_o1js9.UInt64]),
|
2461
|
-
(0, import_tslib.__metadata)("design:returntype", Promise)
|
2462
|
-
], FungibleToken2.prototype, "burn", null);
|
2463
|
-
(0, import_tslib.__decorate)([
|
2464
|
-
import_o1js9.method,
|
2465
|
-
(0, import_tslib.__metadata)("design:type", Function),
|
2466
|
-
(0, import_tslib.__metadata)("design:paramtypes", []),
|
2467
|
-
(0, import_tslib.__metadata)("design:returntype", Promise)
|
2468
|
-
], FungibleToken2.prototype, "pause", null);
|
2469
|
-
(0, import_tslib.__decorate)([
|
2470
|
-
import_o1js9.method,
|
2471
|
-
(0, import_tslib.__metadata)("design:type", Function),
|
2472
|
-
(0, import_tslib.__metadata)("design:paramtypes", []),
|
2473
|
-
(0, import_tslib.__metadata)("design:returntype", Promise)
|
2474
|
-
], FungibleToken2.prototype, "resume", null);
|
2475
|
-
(0, import_tslib.__decorate)([
|
2476
|
-
import_o1js9.method,
|
2477
|
-
(0, import_tslib.__metadata)("design:type", Function),
|
2478
|
-
(0, import_tslib.__metadata)("design:paramtypes", [import_o1js9.PublicKey, import_o1js9.PublicKey, import_o1js9.UInt64]),
|
2479
|
-
(0, import_tslib.__metadata)("design:returntype", Promise)
|
2480
|
-
], FungibleToken2.prototype, "transfer", null);
|
2481
|
-
(0, import_tslib.__decorate)([
|
2482
|
-
import_o1js9.method,
|
2483
|
-
(0, import_tslib.__metadata)("design:type", Function),
|
2484
|
-
(0, import_tslib.__metadata)("design:paramtypes", [import_o1js9.AccountUpdateForest]),
|
2485
|
-
(0, import_tslib.__metadata)("design:returntype", Promise)
|
2486
|
-
], FungibleToken2.prototype, "approveBase", null);
|
2487
|
-
(0, import_tslib.__decorate)([
|
2488
|
-
import_o1js9.method.returns(import_o1js9.UInt64),
|
2489
|
-
(0, import_tslib.__metadata)("design:type", Function),
|
2490
|
-
(0, import_tslib.__metadata)("design:paramtypes", [import_o1js9.PublicKey]),
|
2491
|
-
(0, import_tslib.__metadata)("design:returntype", Promise)
|
2492
|
-
], FungibleToken2.prototype, "getBalanceOf", null);
|
2493
|
-
(0, import_tslib.__decorate)([
|
2494
|
-
import_o1js9.method.returns(import_o1js9.UInt8),
|
2495
|
-
(0, import_tslib.__metadata)("design:type", Function),
|
2496
|
-
(0, import_tslib.__metadata)("design:paramtypes", []),
|
2497
|
-
(0, import_tslib.__metadata)("design:returntype", Promise)
|
2498
|
-
], FungibleToken2.prototype, "getDecimals", null);
|
2499
|
-
return FungibleToken2;
|
2500
|
-
}
|
2501
|
-
var SetAdminEvent = class extends (0, import_o1js9.Struct)({
|
2502
|
-
adminKey: import_o1js9.PublicKey
|
2503
|
-
}) {
|
2504
|
-
};
|
2505
|
-
var PauseEvent = class extends (0, import_o1js9.Struct)({
|
2506
|
-
isPaused: import_o1js9.Bool
|
2507
|
-
}) {
|
2508
|
-
};
|
2509
|
-
var MintEvent = class extends (0, import_o1js9.Struct)({
|
2510
|
-
recipient: import_o1js9.PublicKey,
|
2511
|
-
amount: import_o1js9.UInt64
|
2512
|
-
}) {
|
2513
|
-
};
|
2514
|
-
var BurnEvent = class extends (0, import_o1js9.Struct)({
|
2515
|
-
from: import_o1js9.PublicKey,
|
2516
|
-
amount: import_o1js9.UInt64
|
2517
|
-
}) {
|
2518
|
-
};
|
2519
|
-
var BalanceChangeEvent = class extends (0, import_o1js9.Struct)({
|
2520
|
-
address: import_o1js9.PublicKey,
|
2521
|
-
amount: import_o1js9.Int64
|
2522
|
-
}) {
|
2523
|
-
};
|
2524
|
-
|
2525
|
-
// dist/node/mina/token/FungibleTokenAdmin.js
|
2526
|
-
var import_tslib2 = require("tslib");
|
2527
|
-
var import_o1js10 = require("o1js");
|
2528
|
-
var FungibleTokenAdmin = class extends import_o1js10.SmartContract {
|
2529
|
-
constructor() {
|
2530
|
-
super(...arguments);
|
2531
|
-
this.adminPublicKey = (0, import_o1js10.State)();
|
2532
|
-
}
|
2533
|
-
async deploy(props) {
|
2534
|
-
await super.deploy(props);
|
2535
|
-
this.adminPublicKey.set(props.adminPublicKey);
|
2536
|
-
this.account.permissions.set({
|
2537
|
-
...import_o1js10.Permissions.default(),
|
2538
|
-
setVerificationKey: import_o1js10.Permissions.VerificationKey.impossibleDuringCurrentVersion(),
|
2539
|
-
setPermissions: import_o1js10.Permissions.impossible()
|
2540
|
-
});
|
2541
|
-
}
|
2542
|
-
/** Update the verification key.
|
2543
|
-
* 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.
|
2544
|
-
*/
|
2545
|
-
async updateVerificationKey(vk) {
|
2546
|
-
this.account.verificationKey.set(vk);
|
2547
|
-
}
|
2548
|
-
async ensureAdminSignature() {
|
2549
|
-
const admin = await import_o1js10.Provable.witnessAsync(import_o1js10.PublicKey, async () => {
|
2550
|
-
let pk = await this.adminPublicKey.fetch();
|
2551
|
-
(0, import_o1js10.assert)(pk !== void 0, "could not fetch admin public key");
|
2552
|
-
return pk;
|
2553
|
-
});
|
2554
|
-
this.adminPublicKey.requireEquals(admin);
|
2555
|
-
return import_o1js10.AccountUpdate.createSigned(admin);
|
2556
|
-
}
|
2557
|
-
async canMint(_accountUpdate) {
|
2558
|
-
await this.ensureAdminSignature();
|
2559
|
-
return (0, import_o1js10.Bool)(true);
|
2560
|
-
}
|
2561
|
-
async canChangeAdmin(_admin) {
|
2562
|
-
await this.ensureAdminSignature();
|
2563
|
-
return (0, import_o1js10.Bool)(true);
|
2564
|
-
}
|
2565
|
-
async canPause() {
|
2566
|
-
await this.ensureAdminSignature();
|
2567
|
-
return (0, import_o1js10.Bool)(true);
|
2568
|
-
}
|
2569
|
-
async canResume() {
|
2570
|
-
await this.ensureAdminSignature();
|
2571
|
-
return (0, import_o1js10.Bool)(true);
|
2572
|
-
}
|
2573
|
-
};
|
2574
|
-
(0, import_tslib2.__decorate)([
|
2575
|
-
(0, import_o1js10.state)(import_o1js10.PublicKey),
|
2576
|
-
(0, import_tslib2.__metadata)("design:type", Object)
|
2577
|
-
], FungibleTokenAdmin.prototype, "adminPublicKey", void 0);
|
2578
|
-
(0, import_tslib2.__decorate)([
|
2579
|
-
import_o1js10.method,
|
2580
|
-
(0, import_tslib2.__metadata)("design:type", Function),
|
2581
|
-
(0, import_tslib2.__metadata)("design:paramtypes", [import_o1js10.VerificationKey]),
|
2582
|
-
(0, import_tslib2.__metadata)("design:returntype", Promise)
|
2583
|
-
], FungibleTokenAdmin.prototype, "updateVerificationKey", null);
|
2584
|
-
(0, import_tslib2.__decorate)([
|
2585
|
-
import_o1js10.method.returns(import_o1js10.Bool),
|
2586
|
-
(0, import_tslib2.__metadata)("design:type", Function),
|
2587
|
-
(0, import_tslib2.__metadata)("design:paramtypes", [import_o1js10.AccountUpdate]),
|
2588
|
-
(0, import_tslib2.__metadata)("design:returntype", Promise)
|
2589
|
-
], FungibleTokenAdmin.prototype, "canMint", null);
|
2590
|
-
(0, import_tslib2.__decorate)([
|
2591
|
-
import_o1js10.method.returns(import_o1js10.Bool),
|
2592
|
-
(0, import_tslib2.__metadata)("design:type", Function),
|
2593
|
-
(0, import_tslib2.__metadata)("design:paramtypes", [import_o1js10.PublicKey]),
|
2594
|
-
(0, import_tslib2.__metadata)("design:returntype", Promise)
|
2595
|
-
], FungibleTokenAdmin.prototype, "canChangeAdmin", null);
|
2596
|
-
(0, import_tslib2.__decorate)([
|
2597
|
-
import_o1js10.method.returns(import_o1js10.Bool),
|
2598
|
-
(0, import_tslib2.__metadata)("design:type", Function),
|
2599
|
-
(0, import_tslib2.__metadata)("design:paramtypes", []),
|
2600
|
-
(0, import_tslib2.__metadata)("design:returntype", Promise)
|
2601
|
-
], FungibleTokenAdmin.prototype, "canPause", null);
|
2602
|
-
(0, import_tslib2.__decorate)([
|
2603
|
-
import_o1js10.method.returns(import_o1js10.Bool),
|
2604
|
-
(0, import_tslib2.__metadata)("design:type", Function),
|
2605
|
-
(0, import_tslib2.__metadata)("design:paramtypes", []),
|
2606
|
-
(0, import_tslib2.__metadata)("design:returntype", Promise)
|
2607
|
-
], FungibleTokenAdmin.prototype, "canResume", null);
|
2608
|
-
|
2609
|
-
// dist/node/mina/token/FungibleTokenWhitelistedAdmin.js
|
2610
|
-
var import_tslib3 = require("tslib");
|
2611
|
-
var import_o1js11 = require("o1js");
|
2612
|
-
var FungibleTokenWhitelistedAdmin = class extends import_o1js11.SmartContract {
|
2613
|
-
constructor() {
|
2614
|
-
super(...arguments);
|
2615
|
-
this.adminPublicKey = (0, import_o1js11.State)();
|
2616
|
-
this.whitelist = (0, import_o1js11.State)();
|
2617
|
-
this.events = { updateWhitelist: Whitelist };
|
2618
|
-
}
|
2619
|
-
async deploy(props) {
|
2620
|
-
await super.deploy(props);
|
2621
|
-
this.adminPublicKey.set(props.adminPublicKey);
|
2622
|
-
this.whitelist.set(props.whitelist);
|
2623
|
-
this.account.permissions.set({
|
2624
|
-
...import_o1js11.Permissions.default(),
|
2625
|
-
setVerificationKey: import_o1js11.Permissions.VerificationKey.impossibleDuringCurrentVersion(),
|
2626
|
-
setPermissions: import_o1js11.Permissions.impossible()
|
2627
|
-
});
|
2628
|
-
}
|
2629
|
-
/** Update the verification key.
|
2630
|
-
* 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.
|
2631
|
-
*/
|
2632
|
-
async updateVerificationKey(vk) {
|
2633
|
-
this.account.verificationKey.set(vk);
|
2634
|
-
}
|
2635
|
-
async ensureAdminSignature() {
|
2636
|
-
const admin = await import_o1js11.Provable.witnessAsync(import_o1js11.PublicKey, async () => {
|
2637
|
-
let pk = await this.adminPublicKey.fetch();
|
2638
|
-
(0, import_o1js11.assert)(pk !== void 0, "could not fetch admin public key");
|
2639
|
-
return pk;
|
2640
|
-
});
|
2641
|
-
this.adminPublicKey.requireEquals(admin);
|
2642
|
-
return import_o1js11.AccountUpdate.createSigned(admin);
|
2643
|
-
}
|
2644
|
-
async canMint(_accountUpdate) {
|
2645
|
-
const address = _accountUpdate.body.publicKey;
|
2646
|
-
const balanceChange = _accountUpdate.body.balanceChange;
|
2647
|
-
balanceChange.isPositive().assertTrue();
|
2648
|
-
const whitelist = this.whitelist.getAndRequireEquals();
|
2649
|
-
const whitelistedAmount = await whitelist.getWhitelistedAmount(address);
|
2650
|
-
return balanceChange.magnitude.lessThanOrEqual(
|
2651
|
-
whitelistedAmount.orElse(import_o1js11.UInt64.from(0))
|
2652
|
-
// here can be a minimum amount allowed by travel rule instead of 0
|
2653
|
-
);
|
2654
|
-
}
|
2655
|
-
async canChangeAdmin(_admin) {
|
2656
|
-
await this.ensureAdminSignature();
|
2657
|
-
return (0, import_o1js11.Bool)(true);
|
2658
|
-
}
|
2659
|
-
async canPause() {
|
2660
|
-
await this.ensureAdminSignature();
|
2661
|
-
return (0, import_o1js11.Bool)(true);
|
2662
|
-
}
|
2663
|
-
async canResume() {
|
2664
|
-
await this.ensureAdminSignature();
|
2665
|
-
return (0, import_o1js11.Bool)(true);
|
2666
|
-
}
|
2667
|
-
async updateWhitelist(whitelist) {
|
2668
|
-
const admin = this.adminPublicKey.getAndRequireEquals();
|
2669
|
-
const sender = this.sender.getUnconstrained();
|
2670
|
-
const senderUpdate = import_o1js11.AccountUpdate.createSigned(sender);
|
2671
|
-
senderUpdate.body.useFullCommitment = (0, import_o1js11.Bool)(true);
|
2672
|
-
admin.assertEquals(sender);
|
2673
|
-
this.whitelist.set(whitelist);
|
2674
|
-
this.emitEvent("updateWhitelist", whitelist);
|
2675
|
-
}
|
2676
|
-
};
|
2677
|
-
(0, import_tslib3.__decorate)([
|
2678
|
-
(0, import_o1js11.state)(import_o1js11.PublicKey),
|
2679
|
-
(0, import_tslib3.__metadata)("design:type", Object)
|
2680
|
-
], FungibleTokenWhitelistedAdmin.prototype, "adminPublicKey", void 0);
|
2681
|
-
(0, import_tslib3.__decorate)([
|
2682
|
-
(0, import_o1js11.state)(Whitelist),
|
2683
|
-
(0, import_tslib3.__metadata)("design:type", Object)
|
2684
|
-
], FungibleTokenWhitelistedAdmin.prototype, "whitelist", void 0);
|
2685
|
-
(0, import_tslib3.__decorate)([
|
2686
|
-
import_o1js11.method,
|
2687
|
-
(0, import_tslib3.__metadata)("design:type", Function),
|
2688
|
-
(0, import_tslib3.__metadata)("design:paramtypes", [import_o1js11.VerificationKey]),
|
2689
|
-
(0, import_tslib3.__metadata)("design:returntype", Promise)
|
2690
|
-
], FungibleTokenWhitelistedAdmin.prototype, "updateVerificationKey", null);
|
2691
|
-
(0, import_tslib3.__decorate)([
|
2692
|
-
import_o1js11.method.returns(import_o1js11.Bool),
|
2693
|
-
(0, import_tslib3.__metadata)("design:type", Function),
|
2694
|
-
(0, import_tslib3.__metadata)("design:paramtypes", [import_o1js11.AccountUpdate]),
|
2695
|
-
(0, import_tslib3.__metadata)("design:returntype", Promise)
|
2696
|
-
], FungibleTokenWhitelistedAdmin.prototype, "canMint", null);
|
2697
|
-
(0, import_tslib3.__decorate)([
|
2698
|
-
import_o1js11.method.returns(import_o1js11.Bool),
|
2699
|
-
(0, import_tslib3.__metadata)("design:type", Function),
|
2700
|
-
(0, import_tslib3.__metadata)("design:paramtypes", [import_o1js11.PublicKey]),
|
2701
|
-
(0, import_tslib3.__metadata)("design:returntype", Promise)
|
2702
|
-
], FungibleTokenWhitelistedAdmin.prototype, "canChangeAdmin", null);
|
2703
|
-
(0, import_tslib3.__decorate)([
|
2704
|
-
import_o1js11.method.returns(import_o1js11.Bool),
|
2705
|
-
(0, import_tslib3.__metadata)("design:type", Function),
|
2706
|
-
(0, import_tslib3.__metadata)("design:paramtypes", []),
|
2707
|
-
(0, import_tslib3.__metadata)("design:returntype", Promise)
|
2708
|
-
], FungibleTokenWhitelistedAdmin.prototype, "canPause", null);
|
2709
|
-
(0, import_tslib3.__decorate)([
|
2710
|
-
import_o1js11.method.returns(import_o1js11.Bool),
|
2711
|
-
(0, import_tslib3.__metadata)("design:type", Function),
|
2712
|
-
(0, import_tslib3.__metadata)("design:paramtypes", []),
|
2713
|
-
(0, import_tslib3.__metadata)("design:returntype", Promise)
|
2714
|
-
], FungibleTokenWhitelistedAdmin.prototype, "canResume", null);
|
2715
|
-
(0, import_tslib3.__decorate)([
|
2716
|
-
import_o1js11.method,
|
2717
|
-
(0, import_tslib3.__metadata)("design:type", Function),
|
2718
|
-
(0, import_tslib3.__metadata)("design:paramtypes", [Whitelist]),
|
2719
|
-
(0, import_tslib3.__metadata)("design:returntype", Promise)
|
2720
|
-
], FungibleTokenWhitelistedAdmin.prototype, "updateWhitelist", null);
|
2721
|
-
|
2722
|
-
// dist/node/mina/token/offer.js
|
2723
|
-
var import_tslib4 = require("tslib");
|
2724
|
-
var import_o1js12 = require("o1js");
|
2725
|
-
var FungibleTokenOfferContract = class _FungibleTokenOfferContract extends import_o1js12.SmartContract {
|
2726
|
-
constructor() {
|
2727
|
-
super(...arguments);
|
2728
|
-
this.price = (0, import_o1js12.State)();
|
2729
|
-
this.seller = (0, import_o1js12.State)();
|
2730
|
-
this.token = (0, import_o1js12.State)();
|
2731
|
-
this.whitelist = (0, import_o1js12.State)();
|
2732
|
-
this.events = {
|
2733
|
-
offer: import_o1js12.UInt64,
|
2734
|
-
withdraw: import_o1js12.UInt64,
|
2735
|
-
buy: import_o1js12.UInt64,
|
2736
|
-
updateWhitelist: Whitelist
|
2737
|
-
};
|
2738
|
-
}
|
2739
|
-
async deploy(args) {
|
2740
|
-
await super.deploy(args);
|
2741
|
-
const verificationKey = args?.verificationKey ?? _FungibleTokenOfferContract._verificationKey;
|
2742
|
-
(0, import_o1js12.assert)(verificationKey !== void 0);
|
2743
|
-
const hash = typeof verificationKey.hash === "string" ? verificationKey.hash : verificationKey.hash.toJSON();
|
2744
|
-
const networkId = import_o1js12.Mina.getNetworkId();
|
2745
|
-
(0, import_o1js12.assert)(networkId === "mainnet" || networkId === "testnet");
|
2746
|
-
(0, import_o1js12.assert)(hash === tokenVerificationKeys[networkId].vk.FungibleTokenOfferContract.hash);
|
2747
|
-
(0, import_o1js12.assert)(verificationKey.data === tokenVerificationKeys[networkId].vk.FungibleTokenOfferContract.data);
|
2748
|
-
this.whitelist.set(args.whitelist);
|
2749
|
-
this.account.permissions.set({
|
2750
|
-
...import_o1js12.Permissions.default(),
|
2751
|
-
send: import_o1js12.Permissions.proof(),
|
2752
|
-
setVerificationKey: import_o1js12.Permissions.VerificationKey.impossibleDuringCurrentVersion(),
|
2753
|
-
setPermissions: import_o1js12.Permissions.impossible()
|
2754
|
-
});
|
2755
|
-
}
|
2756
|
-
async initialize(seller, token, amount, price) {
|
2757
|
-
this.account.provedState.requireEquals((0, import_o1js12.Bool)(false));
|
2758
|
-
const tokenContract = new FungibleToken(token);
|
2759
|
-
const tokenId = tokenContract.deriveTokenId();
|
2760
|
-
tokenId.assertEquals(this.tokenId);
|
2761
|
-
await tokenContract.transfer(seller, this.address, amount);
|
2762
|
-
this.seller.set(seller);
|
2763
|
-
this.price.set(price);
|
2764
|
-
this.token.set(token);
|
2765
|
-
this.emitEvent("offer", amount);
|
2766
|
-
}
|
2767
|
-
async offer(amount, price) {
|
2768
|
-
const seller = this.seller.getAndRequireEquals();
|
2769
|
-
const token = this.token.getAndRequireEquals();
|
2770
|
-
const tokenContract = new FungibleToken(token);
|
2771
|
-
const tokenId = tokenContract.deriveTokenId();
|
2772
|
-
tokenId.assertEquals(this.tokenId);
|
2773
|
-
const balance = this.account.balance.getAndRequireEquals();
|
2774
|
-
const oldPrice = this.price.getAndRequireEquals();
|
2775
|
-
price.equals(oldPrice).or(balance.equals(import_o1js12.UInt64.from(0))).assertTrue();
|
2776
|
-
this.price.set(price);
|
2777
|
-
const sender = this.sender.getUnconstrained();
|
2778
|
-
const senderUpdate = import_o1js12.AccountUpdate.createSigned(sender);
|
2779
|
-
senderUpdate.body.useFullCommitment = (0, import_o1js12.Bool)(true);
|
2780
|
-
sender.assertEquals(seller);
|
2781
|
-
await tokenContract.transfer(sender, this.address, amount);
|
2782
|
-
this.emitEvent("offer", amount);
|
2783
|
-
}
|
2784
|
-
async withdraw(amount) {
|
2785
|
-
amount.equals(import_o1js12.UInt64.from(0)).assertFalse();
|
2786
|
-
this.account.balance.requireBetween(amount, import_o1js12.UInt64.MAXINT());
|
2787
|
-
const seller = this.seller.getAndRequireEquals();
|
2788
|
-
const token = this.token.getAndRequireEquals();
|
2789
|
-
const tokenContract = new FungibleToken(token);
|
2790
|
-
const tokenId = tokenContract.deriveTokenId();
|
2791
|
-
tokenId.assertEquals(this.tokenId);
|
2792
|
-
const sender = this.sender.getUnconstrained();
|
2793
|
-
const senderUpdate = import_o1js12.AccountUpdate.createSigned(sender, tokenId);
|
2794
|
-
senderUpdate.body.useFullCommitment = (0, import_o1js12.Bool)(true);
|
2795
|
-
sender.assertEquals(seller);
|
2796
|
-
let offerUpdate = this.send({ to: senderUpdate, amount });
|
2797
|
-
offerUpdate.body.mayUseToken = import_o1js12.AccountUpdate.MayUseToken.InheritFromParent;
|
2798
|
-
offerUpdate.body.useFullCommitment = (0, import_o1js12.Bool)(true);
|
2799
|
-
this.emitEvent("withdraw", amount);
|
2800
|
-
}
|
2801
|
-
async buy(amount) {
|
2802
|
-
amount.equals(import_o1js12.UInt64.from(0)).assertFalse();
|
2803
|
-
this.account.balance.requireBetween(amount, import_o1js12.UInt64.MAXINT());
|
2804
|
-
const seller = this.seller.getAndRequireEquals();
|
2805
|
-
const token = this.token.getAndRequireEquals();
|
2806
|
-
const tokenContract = new FungibleToken(token);
|
2807
|
-
const tokenId = tokenContract.deriveTokenId();
|
2808
|
-
tokenId.assertEquals(this.tokenId);
|
2809
|
-
const price = this.price.getAndRequireEquals();
|
2810
|
-
const totalPriceField = price.value.mul(amount.value).div((0, import_o1js12.Field)(1e9));
|
2811
|
-
totalPriceField.assertLessThan(import_o1js12.UInt64.MAXINT().value, "totalPrice overflow");
|
2812
|
-
const totalPrice = import_o1js12.UInt64.Unsafe.fromField(totalPriceField);
|
2813
|
-
const buyer = this.sender.getUnconstrained();
|
2814
|
-
const buyerUpdate = import_o1js12.AccountUpdate.createSigned(buyer);
|
2815
|
-
buyerUpdate.send({ to: seller, amount: totalPrice });
|
2816
|
-
buyerUpdate.body.useFullCommitment = (0, import_o1js12.Bool)(true);
|
2817
|
-
let offerUpdate = this.send({ to: buyer, amount });
|
2818
|
-
offerUpdate.body.mayUseToken = import_o1js12.AccountUpdate.MayUseToken.InheritFromParent;
|
2819
|
-
offerUpdate.body.useFullCommitment = (0, import_o1js12.Bool)(true);
|
2820
|
-
const whitelist = this.whitelist.getAndRequireEquals();
|
2821
|
-
const whitelistedAmount = await whitelist.getWhitelistedAmount(buyer);
|
2822
|
-
amount.assertLessThanOrEqual(whitelistedAmount.assertSome());
|
2823
|
-
this.emitEvent("buy", amount);
|
2824
|
-
}
|
2825
|
-
async updateWhitelist(whitelist) {
|
2826
|
-
const seller = this.seller.getAndRequireEquals();
|
2827
|
-
const sender = this.sender.getUnconstrained();
|
2828
|
-
const senderUpdate = import_o1js12.AccountUpdate.createSigned(sender);
|
2829
|
-
senderUpdate.body.useFullCommitment = (0, import_o1js12.Bool)(true);
|
2830
|
-
sender.assertEquals(seller);
|
2831
|
-
this.whitelist.set(whitelist);
|
2832
|
-
this.emitEvent("updateWhitelist", whitelist);
|
2833
|
-
}
|
2834
|
-
};
|
2835
|
-
(0, import_tslib4.__decorate)([
|
2836
|
-
(0, import_o1js12.state)(import_o1js12.UInt64),
|
2837
|
-
(0, import_tslib4.__metadata)("design:type", Object)
|
2838
|
-
], FungibleTokenOfferContract.prototype, "price", void 0);
|
2839
|
-
(0, import_tslib4.__decorate)([
|
2840
|
-
(0, import_o1js12.state)(import_o1js12.PublicKey),
|
2841
|
-
(0, import_tslib4.__metadata)("design:type", Object)
|
2842
|
-
], FungibleTokenOfferContract.prototype, "seller", void 0);
|
2843
|
-
(0, import_tslib4.__decorate)([
|
2844
|
-
(0, import_o1js12.state)(import_o1js12.PublicKey),
|
2845
|
-
(0, import_tslib4.__metadata)("design:type", Object)
|
2846
|
-
], FungibleTokenOfferContract.prototype, "token", void 0);
|
2847
|
-
(0, import_tslib4.__decorate)([
|
2848
|
-
(0, import_o1js12.state)(Whitelist),
|
2849
|
-
(0, import_tslib4.__metadata)("design:type", Object)
|
2850
|
-
], FungibleTokenOfferContract.prototype, "whitelist", void 0);
|
2851
|
-
(0, import_tslib4.__decorate)([
|
2852
|
-
import_o1js12.method,
|
2853
|
-
(0, import_tslib4.__metadata)("design:type", Function),
|
2854
|
-
(0, import_tslib4.__metadata)("design:paramtypes", [
|
2855
|
-
import_o1js12.PublicKey,
|
2856
|
-
import_o1js12.PublicKey,
|
2857
|
-
import_o1js12.UInt64,
|
2858
|
-
import_o1js12.UInt64
|
2859
|
-
]),
|
2860
|
-
(0, import_tslib4.__metadata)("design:returntype", Promise)
|
2861
|
-
], FungibleTokenOfferContract.prototype, "initialize", null);
|
2862
|
-
(0, import_tslib4.__decorate)([
|
2863
|
-
import_o1js12.method,
|
2864
|
-
(0, import_tslib4.__metadata)("design:type", Function),
|
2865
|
-
(0, import_tslib4.__metadata)("design:paramtypes", [import_o1js12.UInt64, import_o1js12.UInt64]),
|
2866
|
-
(0, import_tslib4.__metadata)("design:returntype", Promise)
|
2867
|
-
], FungibleTokenOfferContract.prototype, "offer", null);
|
2868
|
-
(0, import_tslib4.__decorate)([
|
2869
|
-
import_o1js12.method,
|
2870
|
-
(0, import_tslib4.__metadata)("design:type", Function),
|
2871
|
-
(0, import_tslib4.__metadata)("design:paramtypes", [import_o1js12.UInt64]),
|
2872
|
-
(0, import_tslib4.__metadata)("design:returntype", Promise)
|
2873
|
-
], FungibleTokenOfferContract.prototype, "withdraw", null);
|
2874
|
-
(0, import_tslib4.__decorate)([
|
2875
|
-
import_o1js12.method,
|
2876
|
-
(0, import_tslib4.__metadata)("design:type", Function),
|
2877
|
-
(0, import_tslib4.__metadata)("design:paramtypes", [import_o1js12.UInt64]),
|
2878
|
-
(0, import_tslib4.__metadata)("design:returntype", Promise)
|
2879
|
-
], FungibleTokenOfferContract.prototype, "buy", null);
|
2880
|
-
(0, import_tslib4.__decorate)([
|
2881
|
-
import_o1js12.method,
|
2882
|
-
(0, import_tslib4.__metadata)("design:type", Function),
|
2883
|
-
(0, import_tslib4.__metadata)("design:paramtypes", [Whitelist]),
|
2884
|
-
(0, import_tslib4.__metadata)("design:returntype", Promise)
|
2885
|
-
], FungibleTokenOfferContract.prototype, "updateWhitelist", null);
|
2886
|
-
|
2887
|
-
// dist/node/mina/token/token.js
|
2888
|
-
var FungibleToken = FungibleTokenContract(FungibleTokenAdmin);
|
2889
|
-
var WhitelistedFungibleToken = FungibleTokenContract(FungibleTokenWhitelistedAdmin);
|
2890
|
-
var tokenVerificationKeys = {
|
2891
|
-
mainnet: {
|
2892
|
-
o1js: "2.1.0",
|
2893
|
-
zkcloudworker: "0.18.9",
|
2894
|
-
vk: {
|
2895
|
-
FungibleToken: {
|
2896
|
-
hash: "27787098481477206239805523694633411816874383698563160451006881053714904356680",
|
2897
|
-
data: "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"
|
2898
|
-
},
|
2899
|
-
FungibleTokenAdmin: {
|
2900
|
-
hash: "25901604630376752069358432490423434073212977760589721765585739320126139736123",
|
2901
|
-
data: "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"
|
2902
|
-
},
|
2903
|
-
WhitelistedFungibleToken: {
|
2904
|
-
hash: "27787098481477206239805523694633411816874383698563160451006881053714904356680",
|
2905
|
-
data: "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"
|
2906
|
-
},
|
2907
|
-
FungibleTokenWhitelistedAdmin: {
|
2908
|
-
hash: "19641412157595882526013339127483017677791543136878603715474182835463393277622",
|
2909
|
-
data: "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"
|
2910
|
-
},
|
2911
|
-
FungibleTokenBidContract: {
|
2912
|
-
hash: "13290952274336741358452297924879435304865306432909699834625876541003088475079",
|
2913
|
-
data: "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"
|
2914
|
-
},
|
2915
|
-
FungibleTokenOfferContract: {
|
2916
|
-
hash: "2858136391761960286699306196905265168181712302492280978164878175630383743048",
|
2917
|
-
data: "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"
|
2918
|
-
},
|
2919
|
-
FungibleTokenAdminMF: {
|
2920
|
-
hash: "25901604630376752069358432490423434073212977760589721765585739320126139736123",
|
2921
|
-
data: "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"
|
2922
|
-
},
|
2923
|
-
FungibleTokenMF: {
|
2924
|
-
hash: "27787098481477206239805523694633411816874383698563160451006881053714904356680",
|
2925
|
-
data: "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"
|
2926
|
-
}
|
2927
|
-
}
|
2928
|
-
},
|
2929
|
-
testnet: {
|
2930
|
-
o1js: "2.1.0",
|
2931
|
-
zkcloudworker: "0.18.9",
|
2932
|
-
vk: {
|
2933
|
-
FungibleToken: {
|
2934
|
-
hash: "22278758441605771858700252645311428360030262698072838723799702480887091310093",
|
2935
|
-
data: "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"
|
2936
|
-
},
|
2937
|
-
FungibleTokenAdmin: {
|
2938
|
-
hash: "15958550144671703080408884627087990244648824766878280780120011347457437134053",
|
2939
|
-
data: "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"
|
2940
|
-
},
|
2941
|
-
WhitelistedFungibleToken: {
|
2942
|
-
hash: "22278758441605771858700252645311428360030262698072838723799702480887091310093",
|
2943
|
-
data: "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"
|
2944
|
-
},
|
2945
|
-
FungibleTokenWhitelistedAdmin: {
|
2946
|
-
hash: "20172938263834569171197221661527530681186299670687606810012808881888777415767",
|
2947
|
-
data: "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"
|
2948
|
-
},
|
2949
|
-
FungibleTokenBidContract: {
|
2950
|
-
hash: "21028578844692686241145580941807588328600986400769755733788301125980472965477",
|
2951
|
-
data: "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"
|
2952
|
-
},
|
2953
|
-
FungibleTokenOfferContract: {
|
2954
|
-
hash: "12073217068283876954049572004931286804667636618982691926234972243181859812345",
|
2955
|
-
data: "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"
|
2956
|
-
},
|
2957
|
-
FungibleTokenAdminMF: {
|
2958
|
-
hash: "15958550144671703080408884627087990244648824766878280780120011347457437134053",
|
2959
|
-
data: "AABvj1TjS95sAoY8puZRG2h4hxjs9c5enwfo4vZAQC/COWHgEjNupRIxb3LVxaRU2mkaG94By4OqrJ3M7YXNs4oiAhMdOuU5+NrHN3RCJtswX+WPvwaHJnihtSy2FcJPyghvBVTi2i7dtWIPQLVDIzC5ARu8f8H9JWjzjVVYE/rQLruuq2qUsCrqdVsdRaw+6OjIFeAXS6mzvrVv5iYGslg5CV5mgLBg3xC408jZJ0pe8ua2mcIEDMGEdSR/+VuhPQaqxZTJPBVhazVc1P9gRyS26SdOohL85UmEc4duqlJOOlXOFuwOT6dvoiUcdQtzuPp1pzA/LHueqm9yQG9mlT0Df8uY/A+rwM4l/ypTP/o0+5GCM9jJf9bl/z0DpGWheCJY+LZbIGeBUOpg0Gx1+KZsD9ivWJ0vxNz8zKcAS1i3FqFhahkJHiiKgikn6Qig5+Yf3MJs0WKSNkCkgW2B48srVTR9ykLyO+68NiWLEnLXvJd+rmUHR4K92whqctZZ8zvd2+5u+b62pkvFqqZZ9r24SMQOe9Bl2ZfMew2DyFLMPzwTowHw8onMEXcVKabFs9zQVp66AMf/wlipirNztdguADEkbXGpkNkEzQ5OXcZwC+gqZLkSNdBq2px2PU/Q/LAQLbVFIDDBCYiHxnEZnXqLpY5CKCY567GG6gdDPwZPjzySiQ4YBcpnqpfVYnYG5iziTEdl5+3SENlC7E6MhR2PDoc/TmMvbEHnhNlo6tskqcmEUBQj+At5EO2NmogFDJIN6sRfrXOdH5l+QV7vR2v385RKRtfnmcJeUQcpq5/JTgVwagDJ/FarTN5jFsrBBRTeW3yZ5/CfVNA7NNWxoKhjBaHVIhn/fLT5sFLYzYdCx/uTsusyZmE2d6iqnLS+j1IXNJX/zR0ZD3aGuoUc4MaFZQnN5om4dfpbloe4Roob3BuDhBHTKoYC+nVsyEvDRyiYLEOjJ45/bSwTCfwngYKtNmo3sVTvQ9mqBf0cLdBCn8skp3S/gz324TFm8iJ+t8EWZdNO0qBk7InWx6wsJ3W7MYL9nxeU6xvCq3Ilt8q62wZVm34KQVdYiULVkTfYLFcq93gOMiWCd6HooBDpFzEWOe7KTjkzzqJnsKMrA0OpJEShOd7nirADMh99K3Z3RAUWeMYjUz/atmhzT4jsqOcX6n3i6ZN+/4mmaAZcTtWKSzsMqH5O4Df/c6DNekL1d6QYnjO0/3LMvY/f/y1+b7nPHI8+1Wqp5jZH8UsuN63SSMdfBEe6x46AG/R+YS/wH78GKekabWu9QQnUJdjXyXiqF4qRebvfcmpQz91anvVz3ggBqCv4sYqCIvP0ysDtMdi36zFErV+8SdUu+NsPDGvdPSCGdLuC25izxb21up2HORmlM5R7yuIW3rCiq8DeLD0OHjqOBZ+IEv9zEkb5fHTJvxoxnZlArtZSBpD6iIDPVDymuK+BsOggZav3K+TytjeD2Gcld5NfyRISFWUIMkZNFQRL8AQpET6RJnG1HSW0CaRfNeomtjCBWIr85wFCrp06j/D1J8B3EyhloZLJJ6ywxt41smXVugxA8LRTO+6lVBOBF14jHQCCUl6u7uiWCe1z4/bC5wQXPwWSljp8NVU8Erp1U9ModNK7W63Pkh0efvgSD5d0nLzbfa0jTdxZ1JkfKsnvYk43Ed+vmXooHZhUeZAIX8ZCizhb1Gfvm02JFwxYXmiYAOp5wkGzweU2I5zo8r5yZFI1r4XibNQs7eAfKGRv3gh8/EuLkX/bdettgPvNsI8ndpQ3kL/V8W2PQN4/hjC9AKCYBeXQG42bRncYZdLe++R2KA1ZdPDxQPF3sxUIKhzmRWqbozrtv310Maorwv6eZJjldlCJwICR9QgcDwDuNj+UFJnX3RWsdIWsUbI1T4wO0sE2sBiMX/OqmiGJEAnBegioistlFyfRvm54h+duNOl/ol1Fva7NoXvsL/wThAWUly7bnc7/Al2bBQlUrmEX46UnKXzYntkZDee7Lx1u1BBkJAj/5BH1YZOPmMCh498rBUiHmc+4uQqebqNSHdOSgC39ESss4u7GNhWj3fi9XXta6UT9wapEMGq0WTg2Kry6xNP2YZ5X8eaapRQc/KzYgz9XjQL6TKpqNuGEbRlmfYvIuoFbnOkZI7RYoGp3YheMs1pQErwOxLzZa9W3Okwx16TSDwPLR0xMdAyogMrOdKN4JSMyNnmOaoVf6PkN+K9fz7RuHtvgjKpuz4vsK5Z2wRneqPrnfu6PkgHcRQrd0SxqCbN23Z/yp8qOcN6XU49iCNEBjztT00tolQ9hCPMSE/eTZ+ioez7m3pJFVks3T5Rk/e+6MeowJWIOv20x6CPS9mhpr1JPwdNFrWdgs19VsobntCpF/rWxksdrYyk="
|
2960
|
-
},
|
2961
|
-
FungibleTokenMF: {
|
2962
|
-
hash: "22278758441605771858700252645311428360030262698072838723799702480887091310093",
|
2963
|
-
data: "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"
|
2964
|
-
}
|
2965
|
-
}
|
2966
|
-
}
|
2967
|
-
};
|
2968
|
-
|
2969
|
-
// dist/node/mina/token/bid.js
|
2970
|
-
var FungibleTokenBidContract = class _FungibleTokenBidContract extends import_o1js13.SmartContract {
|
2971
|
-
constructor() {
|
2972
|
-
super(...arguments);
|
2973
|
-
this.price = (0, import_o1js13.State)();
|
2974
|
-
this.buyer = (0, import_o1js13.State)();
|
2975
|
-
this.token = (0, import_o1js13.State)();
|
2976
|
-
this.whitelist = (0, import_o1js13.State)();
|
2977
|
-
this.events = {
|
2978
|
-
bid: import_o1js13.UInt64,
|
2979
|
-
withdraw: import_o1js13.UInt64,
|
2980
|
-
sell: import_o1js13.UInt64,
|
2981
|
-
updateWhitelist: Whitelist
|
2982
|
-
};
|
2983
|
-
}
|
2984
|
-
async deploy(args) {
|
2985
|
-
await super.deploy(args);
|
2986
|
-
const verificationKey = args?.verificationKey ?? _FungibleTokenBidContract._verificationKey;
|
2987
|
-
(0, import_o1js13.assert)(verificationKey !== void 0);
|
2988
|
-
const hash = typeof verificationKey.hash === "string" ? verificationKey.hash : verificationKey.hash.toJSON();
|
2989
|
-
const networkId = import_o1js13.Mina.getNetworkId();
|
2990
|
-
(0, import_o1js13.assert)(networkId === "mainnet" || networkId === "testnet");
|
2991
|
-
(0, import_o1js13.assert)(hash === tokenVerificationKeys[networkId].vk.FungibleTokenBidContract.hash);
|
2992
|
-
(0, import_o1js13.assert)(verificationKey.data === tokenVerificationKeys[networkId].vk.FungibleTokenBidContract.data);
|
2993
|
-
this.whitelist.set(args.whitelist);
|
2994
|
-
this.account.permissions.set({
|
2995
|
-
...import_o1js13.Permissions.default(),
|
2996
|
-
send: import_o1js13.Permissions.proof(),
|
2997
|
-
setVerificationKey: import_o1js13.Permissions.VerificationKey.impossibleDuringCurrentVersion(),
|
2998
|
-
setPermissions: import_o1js13.Permissions.impossible()
|
2999
|
-
});
|
3000
|
-
}
|
3001
|
-
async initialize(token, amount, price) {
|
3002
|
-
this.account.provedState.requireEquals((0, import_o1js13.Bool)(false));
|
3003
|
-
amount.equals(import_o1js13.UInt64.from(0)).assertFalse();
|
3004
|
-
const totalPriceField = price.value.mul(amount.value).div((0, import_o1js13.Field)(1e9));
|
3005
|
-
totalPriceField.assertLessThan(import_o1js13.UInt64.MAXINT().value, "totalPrice overflow");
|
3006
|
-
const totalPrice = import_o1js13.UInt64.Unsafe.fromField(totalPriceField);
|
3007
|
-
const buyer = this.sender.getUnconstrained();
|
3008
|
-
const buyerUpdate = import_o1js13.AccountUpdate.createSigned(buyer);
|
3009
|
-
buyerUpdate.send({ to: this.address, amount: totalPrice });
|
3010
|
-
buyerUpdate.body.useFullCommitment = (0, import_o1js13.Bool)(true);
|
3011
|
-
this.buyer.set(buyer);
|
3012
|
-
this.price.set(price);
|
3013
|
-
this.token.set(token);
|
3014
|
-
this.emitEvent("bid", amount);
|
3015
|
-
}
|
3016
|
-
async bid(amount, price) {
|
3017
|
-
amount.equals(import_o1js13.UInt64.from(0)).assertFalse();
|
3018
|
-
const balance = this.account.balance.getAndRequireEquals();
|
3019
|
-
const oldPrice = this.price.getAndRequireEquals();
|
3020
|
-
price.equals(oldPrice).or(balance.equals(import_o1js13.UInt64.from(0))).assertTrue();
|
3021
|
-
this.price.set(price);
|
3022
|
-
const totalPriceField = price.value.mul(amount.value).div((0, import_o1js13.Field)(1e9));
|
3023
|
-
totalPriceField.assertLessThan(import_o1js13.UInt64.MAXINT().value, "totalPrice overflow");
|
3024
|
-
const totalPrice = import_o1js13.UInt64.Unsafe.fromField(totalPriceField);
|
3025
|
-
const sender = this.sender.getUnconstrained();
|
3026
|
-
const buyer = this.buyer.getAndRequireEquals();
|
3027
|
-
sender.assertEquals(buyer);
|
3028
|
-
const buyerUpdate = import_o1js13.AccountUpdate.createSigned(buyer);
|
3029
|
-
buyerUpdate.send({ to: this.address, amount: totalPrice });
|
3030
|
-
buyerUpdate.body.useFullCommitment = (0, import_o1js13.Bool)(true);
|
3031
|
-
this.price.set(price);
|
3032
|
-
this.emitEvent("bid", amount);
|
3033
|
-
}
|
3034
|
-
async withdraw(amountInMina) {
|
3035
|
-
amountInMina.equals(import_o1js13.UInt64.from(0)).assertFalse();
|
3036
|
-
this.account.balance.requireBetween(amountInMina, import_o1js13.UInt64.MAXINT());
|
3037
|
-
const buyer = this.buyer.getAndRequireEquals();
|
3038
|
-
const sender = this.sender.getUnconstrained();
|
3039
|
-
const senderUpdate = import_o1js13.AccountUpdate.createSigned(sender);
|
3040
|
-
senderUpdate.body.useFullCommitment = (0, import_o1js13.Bool)(true);
|
3041
|
-
sender.assertEquals(buyer);
|
3042
|
-
let bidUpdate = this.send({ to: senderUpdate, amount: amountInMina });
|
3043
|
-
bidUpdate.body.useFullCommitment = (0, import_o1js13.Bool)(true);
|
3044
|
-
this.emitEvent("withdraw", amountInMina);
|
3045
|
-
}
|
3046
|
-
async sell(amount) {
|
3047
|
-
amount.equals(import_o1js13.UInt64.from(0)).assertFalse();
|
3048
|
-
const price = this.price.getAndRequireEquals();
|
3049
|
-
const totalPriceField = price.value.mul(amount.value).div((0, import_o1js13.Field)(1e9));
|
3050
|
-
totalPriceField.assertLessThan(import_o1js13.UInt64.MAXINT().value, "totalPrice overflow");
|
3051
|
-
const totalPrice = import_o1js13.UInt64.Unsafe.fromField(totalPriceField);
|
3052
|
-
this.account.balance.requireBetween(totalPrice, import_o1js13.UInt64.MAXINT());
|
3053
|
-
const buyer = this.buyer.getAndRequireEquals();
|
3054
|
-
const token = this.token.getAndRequireEquals();
|
3055
|
-
const seller = this.sender.getUnconstrained();
|
3056
|
-
const sellerUpdate = this.send({ to: seller, amount: totalPrice });
|
3057
|
-
sellerUpdate.body.useFullCommitment = (0, import_o1js13.Bool)(true);
|
3058
|
-
sellerUpdate.requireSignature();
|
3059
|
-
const tokenContract = new FungibleToken(token);
|
3060
|
-
await tokenContract.transfer(seller, buyer, amount);
|
3061
|
-
this.emitEvent("sell", amount);
|
3062
|
-
}
|
3063
|
-
async updateWhitelist(whitelist) {
|
3064
|
-
const buyer = this.buyer.getAndRequireEquals();
|
3065
|
-
const sender = this.sender.getUnconstrained();
|
3066
|
-
const senderUpdate = import_o1js13.AccountUpdate.createSigned(sender);
|
3067
|
-
senderUpdate.body.useFullCommitment = (0, import_o1js13.Bool)(true);
|
3068
|
-
sender.assertEquals(buyer);
|
3069
|
-
this.whitelist.set(whitelist);
|
3070
|
-
this.emitEvent("updateWhitelist", whitelist);
|
3071
|
-
}
|
3072
|
-
};
|
3073
|
-
(0, import_tslib5.__decorate)([
|
3074
|
-
(0, import_o1js13.state)(import_o1js13.UInt64),
|
3075
|
-
(0, import_tslib5.__metadata)("design:type", Object)
|
3076
|
-
], FungibleTokenBidContract.prototype, "price", void 0);
|
3077
|
-
(0, import_tslib5.__decorate)([
|
3078
|
-
(0, import_o1js13.state)(import_o1js13.PublicKey),
|
3079
|
-
(0, import_tslib5.__metadata)("design:type", Object)
|
3080
|
-
], FungibleTokenBidContract.prototype, "buyer", void 0);
|
3081
|
-
(0, import_tslib5.__decorate)([
|
3082
|
-
(0, import_o1js13.state)(import_o1js13.PublicKey),
|
3083
|
-
(0, import_tslib5.__metadata)("design:type", Object)
|
3084
|
-
], FungibleTokenBidContract.prototype, "token", void 0);
|
3085
|
-
(0, import_tslib5.__decorate)([
|
3086
|
-
(0, import_o1js13.state)(Whitelist),
|
3087
|
-
(0, import_tslib5.__metadata)("design:type", Object)
|
3088
|
-
], FungibleTokenBidContract.prototype, "whitelist", void 0);
|
3089
|
-
(0, import_tslib5.__decorate)([
|
3090
|
-
import_o1js13.method,
|
3091
|
-
(0, import_tslib5.__metadata)("design:type", Function),
|
3092
|
-
(0, import_tslib5.__metadata)("design:paramtypes", [import_o1js13.PublicKey, import_o1js13.UInt64, import_o1js13.UInt64]),
|
3093
|
-
(0, import_tslib5.__metadata)("design:returntype", Promise)
|
3094
|
-
], FungibleTokenBidContract.prototype, "initialize", null);
|
3095
|
-
(0, import_tslib5.__decorate)([
|
3096
|
-
import_o1js13.method,
|
3097
|
-
(0, import_tslib5.__metadata)("design:type", Function),
|
3098
|
-
(0, import_tslib5.__metadata)("design:paramtypes", [import_o1js13.UInt64, import_o1js13.UInt64]),
|
3099
|
-
(0, import_tslib5.__metadata)("design:returntype", Promise)
|
3100
|
-
], FungibleTokenBidContract.prototype, "bid", null);
|
3101
|
-
(0, import_tslib5.__decorate)([
|
3102
|
-
import_o1js13.method,
|
3103
|
-
(0, import_tslib5.__metadata)("design:type", Function),
|
3104
|
-
(0, import_tslib5.__metadata)("design:paramtypes", [import_o1js13.UInt64]),
|
3105
|
-
(0, import_tslib5.__metadata)("design:returntype", Promise)
|
3106
|
-
], FungibleTokenBidContract.prototype, "withdraw", null);
|
3107
|
-
(0, import_tslib5.__decorate)([
|
3108
|
-
import_o1js13.method,
|
3109
|
-
(0, import_tslib5.__metadata)("design:type", Function),
|
3110
|
-
(0, import_tslib5.__metadata)("design:paramtypes", [import_o1js13.UInt64]),
|
3111
|
-
(0, import_tslib5.__metadata)("design:returntype", Promise)
|
3112
|
-
], FungibleTokenBidContract.prototype, "sell", null);
|
3113
|
-
(0, import_tslib5.__decorate)([
|
3114
|
-
import_o1js13.method,
|
3115
|
-
(0, import_tslib5.__metadata)("design:type", Function),
|
3116
|
-
(0, import_tslib5.__metadata)("design:paramtypes", [Whitelist]),
|
3117
|
-
(0, import_tslib5.__metadata)("design:returntype", Promise)
|
3118
|
-
], FungibleTokenBidContract.prototype, "updateWhitelist", null);
|
3119
|
-
|
3120
|
-
// dist/node/mina/token/build.js
|
3121
|
-
var import_o1js14 = require("o1js");
|
3122
|
-
async function buildTokenDeployTransaction(params) {
|
3123
|
-
const { fee: fee2, sender, nonce, memo, tokenAddress, adminContractAddress, uri, symbol, developerAddress, developerFee, provingKey, provingFee, decimals, chain } = params;
|
3124
|
-
const isWhitelisted = params.whitelist !== void 0;
|
3125
|
-
if (memo && typeof memo !== "string")
|
3126
|
-
throw new Error("Memo must be a string");
|
3127
|
-
if (memo && memo.length > 30)
|
3128
|
-
throw new Error("Memo must be less than 30 characters");
|
3129
|
-
if (!symbol || typeof symbol !== "string")
|
3130
|
-
throw new Error("Symbol must be a string");
|
3131
|
-
if (symbol.length >= 7)
|
3132
|
-
throw new Error("Symbol must be less than 7 characters");
|
3133
|
-
const adminContract = isWhitelisted ? FungibleTokenWhitelistedAdmin : FungibleTokenAdmin;
|
3134
|
-
const tokenContract = isWhitelisted ? WhitelistedFungibleToken : FungibleToken;
|
3135
|
-
const vk = tokenVerificationKeys[chain === "mainnet" ? "mainnet" : "testnet"].vk;
|
3136
|
-
if (!vk || !vk.FungibleTokenWhitelistedAdmin || !vk.FungibleTokenWhitelistedAdmin.hash || !vk.FungibleTokenWhitelistedAdmin.data || !vk.FungibleTokenAdmin || !vk.FungibleTokenAdmin.hash || !vk.FungibleTokenAdmin.data || !vk.WhitelistedFungibleToken || !vk.WhitelistedFungibleToken.hash || !vk.WhitelistedFungibleToken.data || !vk.FungibleToken || !vk.FungibleToken.hash || !vk.FungibleToken.data)
|
3137
|
-
throw new Error("Cannot get verification keys");
|
3138
|
-
const adminVerificationKey = isWhitelisted ? vk.FungibleTokenWhitelistedAdmin : vk.FungibleTokenAdmin;
|
3139
|
-
const tokenVerificationKey = isWhitelisted ? vk.WhitelistedFungibleToken : vk.FungibleToken;
|
3140
|
-
if (!adminVerificationKey || !tokenVerificationKey)
|
3141
|
-
throw new Error("Cannot get verification keys");
|
3142
|
-
await fetchMinaAccount({
|
3143
|
-
publicKey: sender,
|
3144
|
-
force: true
|
3145
|
-
});
|
3146
|
-
if (!import_o1js14.Mina.hasAccount(sender)) {
|
3147
|
-
throw new Error("Sender does not have account");
|
3148
|
-
}
|
3149
|
-
console.log("Sender balance:", await accountBalanceMina(sender));
|
3150
|
-
const whitelist = params.whitelist ? typeof params.whitelist === "string" ? Whitelist.fromString(params.whitelist) : await Whitelist.create({ list: params.whitelist, name: symbol }) : void 0;
|
3151
|
-
const zkToken = new tokenContract(tokenAddress);
|
3152
|
-
const zkAdmin = new adminContract(adminContractAddress);
|
3153
|
-
const tx = await import_o1js14.Mina.transaction({ sender, fee: fee2, memo: memo ?? `deploy ${symbol}`, nonce }, async () => {
|
3154
|
-
const feeAccountUpdate = import_o1js14.AccountUpdate.createSigned(sender);
|
3155
|
-
feeAccountUpdate.balance.subInPlace(3e9);
|
3156
|
-
feeAccountUpdate.send({
|
3157
|
-
to: provingKey,
|
3158
|
-
amount: provingFee
|
3159
|
-
});
|
3160
|
-
if (developerAddress && developerFee) {
|
3161
|
-
feeAccountUpdate.send({
|
3162
|
-
to: developerAddress,
|
3163
|
-
amount: developerFee
|
3164
|
-
});
|
3165
|
-
}
|
3166
|
-
if (isWhitelisted && !whitelist) {
|
3167
|
-
throw new Error("Whitelisted addresses not found");
|
3168
|
-
}
|
3169
|
-
await zkAdmin.deploy({
|
3170
|
-
adminPublicKey: sender,
|
3171
|
-
verificationKey: adminVerificationKey,
|
3172
|
-
whitelist
|
3173
|
-
});
|
3174
|
-
zkAdmin.account.zkappUri.set(uri);
|
3175
|
-
await zkToken.deploy({
|
3176
|
-
symbol,
|
3177
|
-
src: uri,
|
3178
|
-
verificationKey: tokenVerificationKey
|
3179
|
-
});
|
3180
|
-
await zkToken.initialize(
|
3181
|
-
adminContractAddress,
|
3182
|
-
decimals,
|
3183
|
-
// We can set `startPaused` to `Bool(false)` here, because we are doing an atomic deployment
|
3184
|
-
// If you are not deploying the admin and token contracts in the same transaction,
|
3185
|
-
// it is safer to start the tokens paused, and resume them only after verifying that
|
3186
|
-
// the admin contract has been deployed
|
3187
|
-
(0, import_o1js14.Bool)(false)
|
3188
|
-
);
|
3189
|
-
});
|
3190
|
-
return {
|
3191
|
-
tx,
|
3192
|
-
isWhitelisted,
|
3193
|
-
adminVerificationKey: {
|
3194
|
-
hash: (0, import_o1js14.Field)(adminVerificationKey.hash),
|
3195
|
-
data: adminVerificationKey.data
|
3196
|
-
},
|
3197
|
-
tokenVerificationKey: {
|
3198
|
-
hash: (0, import_o1js14.Field)(tokenVerificationKey.hash),
|
3199
|
-
data: tokenVerificationKey.data
|
3200
|
-
},
|
3201
|
-
whitelist: whitelist?.toString()
|
3202
|
-
};
|
3203
|
-
}
|
3204
|
-
function getTokenTransactionSender(params) {
|
3205
|
-
const { txType, from, to } = params;
|
3206
|
-
if (txType === "buy" || txType === "withdrawOffer" || txType === "withdrawBid") {
|
3207
|
-
return to;
|
3208
|
-
}
|
3209
|
-
return from;
|
3210
|
-
}
|
3211
|
-
async function buildTokenTransaction(params) {
|
3212
|
-
const { txType, chain, fee: fee2, nonce, tokenAddress, from, to, amount, price, developerAddress, developerFee, provingKey, provingFee } = params;
|
3213
|
-
console.log(txType, "tx for", tokenAddress.toBase58());
|
3214
|
-
const sender = getTokenTransactionSender({ txType, from, to });
|
3215
|
-
console.log("Sender:", sender.toBase58());
|
3216
|
-
await fetchMinaAccount({
|
3217
|
-
publicKey: sender,
|
3218
|
-
force: true
|
3219
|
-
});
|
3220
|
-
if (!import_o1js14.Mina.hasAccount(sender)) {
|
3221
|
-
console.error("Sender does not have account");
|
3222
|
-
throw new Error("Sender does not have account");
|
3223
|
-
}
|
3224
|
-
const { symbol, adminContractAddress, adminAddress, isWhitelisted } = await getTokenSymbolAndAdmin({
|
3225
|
-
tokenAddress,
|
3226
|
-
chain
|
3227
|
-
});
|
3228
|
-
const memo = params.memo ?? `${txType} ${symbol}`;
|
3229
|
-
const whitelistedAdminContract = new FungibleTokenWhitelistedAdmin(adminContractAddress);
|
3230
|
-
const tokenContract = isWhitelisted && txType === "mint" ? WhitelistedFungibleToken : FungibleToken;
|
3231
|
-
if ((txType === "whitelistAdmin" || txType === "whitelistBid" || txType === "whitelistOffer") && !params.whitelist) {
|
3232
|
-
throw new Error("Whitelist is required");
|
3233
|
-
}
|
3234
|
-
const whitelist = params.whitelist ? typeof params.whitelist === "string" ? Whitelist.fromString(params.whitelist) : await Whitelist.create({ list: params.whitelist, name: symbol }) : void 0;
|
3235
|
-
const zkToken = new tokenContract(tokenAddress);
|
3236
|
-
const tokenId = zkToken.deriveTokenId();
|
3237
|
-
if (txType === "mint" && adminAddress.toBase58() !== sender.toBase58())
|
3238
|
-
throw new Error("Invalid sender for mint");
|
3239
|
-
await fetchMinaAccount({
|
3240
|
-
publicKey: tokenAddress,
|
3241
|
-
tokenId,
|
3242
|
-
force: true
|
3243
|
-
});
|
3244
|
-
await fetchMinaAccount({
|
3245
|
-
publicKey: from,
|
3246
|
-
tokenId,
|
3247
|
-
force: [
|
3248
|
-
"offer",
|
3249
|
-
"whitelistOffer",
|
3250
|
-
"bid",
|
3251
|
-
"whitelistBid",
|
3252
|
-
"sell",
|
3253
|
-
"transfer",
|
3254
|
-
"withdrawOffer"
|
3255
|
-
].includes(txType)
|
3256
|
-
});
|
3257
|
-
await fetchMinaAccount({
|
3258
|
-
publicKey: to,
|
3259
|
-
tokenId,
|
3260
|
-
force: [
|
3261
|
-
"sell",
|
3262
|
-
"whitelistAdmin",
|
3263
|
-
"withdrawBid",
|
3264
|
-
"withdrawOffer"
|
3265
|
-
].includes(txType)
|
3266
|
-
});
|
3267
|
-
const isNewAccount = import_o1js14.Mina.hasAccount(to, tokenId) === false;
|
3268
|
-
const offerContract = new FungibleTokenOfferContract([
|
3269
|
-
"offer",
|
3270
|
-
"whitelistOffer"
|
3271
|
-
].includes(txType) ? to : from, tokenId);
|
3272
|
-
const bidContract = new FungibleTokenBidContract([
|
3273
|
-
"bid",
|
3274
|
-
"whitelistBid"
|
3275
|
-
].includes(txType) ? from : to, tokenId);
|
3276
|
-
const offerContractDeployment = new FungibleTokenOfferContract(to, tokenId);
|
3277
|
-
const bidContractDeployment = new FungibleTokenBidContract(from, tokenId);
|
3278
|
-
const vk = tokenVerificationKeys[chain === "mainnet" ? "mainnet" : "testnet"].vk;
|
3279
|
-
if (!vk || !vk.FungibleTokenOfferContract || !vk.FungibleTokenOfferContract.hash || !vk.FungibleTokenOfferContract.data || !vk.FungibleTokenBidContract || !vk.FungibleTokenBidContract.hash || !vk.FungibleTokenBidContract.data || !vk.FungibleTokenWhitelistedAdmin || !vk.FungibleTokenWhitelistedAdmin.hash || !vk.FungibleTokenWhitelistedAdmin.data || !vk.FungibleTokenAdmin || !vk.FungibleTokenAdmin.hash || !vk.FungibleTokenAdmin.data || !vk.WhitelistedFungibleToken || !vk.WhitelistedFungibleToken.hash || !vk.WhitelistedFungibleToken.data || !vk.FungibleToken || !vk.FungibleToken.hash || !vk.FungibleToken.data)
|
3280
|
-
throw new Error("Cannot get verification key");
|
3281
|
-
const adminVerificationKey = isWhitelisted ? vk.FungibleTokenWhitelistedAdmin : vk.FungibleTokenAdmin;
|
3282
|
-
const tokenVerificationKey = isWhitelisted ? vk.WhitelistedFungibleToken : vk.FungibleToken;
|
3283
|
-
const offerVerificationKey = FungibleTokenOfferContract._verificationKey ?? {
|
3284
|
-
hash: (0, import_o1js14.Field)(vk.FungibleTokenOfferContract.hash),
|
3285
|
-
data: vk.FungibleTokenOfferContract.data
|
3286
|
-
};
|
3287
|
-
const bidVerificationKey = FungibleTokenBidContract._verificationKey ?? {
|
3288
|
-
hash: (0, import_o1js14.Field)(vk.FungibleTokenBidContract.hash),
|
3289
|
-
data: vk.FungibleTokenBidContract.data
|
3290
|
-
};
|
3291
|
-
console.log("Sender balance:", await accountBalanceMina(sender));
|
3292
|
-
console.log("New account:", isNewAccount);
|
3293
|
-
const tx = await import_o1js14.Mina.transaction({ sender, fee: fee2, memo, nonce }, async () => {
|
3294
|
-
const feeAccountUpdate = import_o1js14.AccountUpdate.createSigned(sender);
|
3295
|
-
if (isNewAccount) {
|
3296
|
-
feeAccountUpdate.balance.subInPlace(1e9);
|
3297
|
-
}
|
3298
|
-
feeAccountUpdate.send({
|
3299
|
-
to: provingKey,
|
3300
|
-
amount: provingFee
|
3301
|
-
});
|
3302
|
-
if (developerAddress && developerFee) {
|
3303
|
-
feeAccountUpdate.send({
|
3304
|
-
to: developerAddress,
|
3305
|
-
amount: developerFee
|
3306
|
-
});
|
3307
|
-
}
|
3308
|
-
switch (txType) {
|
3309
|
-
case "mint":
|
3310
|
-
if (amount === void 0)
|
3311
|
-
throw new Error("Error: Amount is required");
|
3312
|
-
await zkToken.mint(to, amount);
|
3313
|
-
break;
|
3314
|
-
case "transfer":
|
3315
|
-
if (amount === void 0)
|
3316
|
-
throw new Error("Error: Amount is required");
|
3317
|
-
await zkToken.transfer(from, to, amount);
|
3318
|
-
break;
|
3319
|
-
case "offer":
|
3320
|
-
if (price === void 0)
|
3321
|
-
throw new Error("Error: Price is required");
|
3322
|
-
if (amount === void 0)
|
3323
|
-
throw new Error("Error: Amount is required");
|
3324
|
-
if (isNewAccount) {
|
3325
|
-
await offerContractDeployment.deploy({
|
3326
|
-
verificationKey: offerVerificationKey,
|
3327
|
-
whitelist: whitelist ?? Whitelist.empty()
|
3328
|
-
});
|
3329
|
-
offerContract.account.zkappUri.set(`Offer for ${symbol}`);
|
3330
|
-
await offerContract.initialize(sender, tokenAddress, amount, price);
|
3331
|
-
await zkToken.approveAccountUpdates([
|
3332
|
-
offerContractDeployment.self,
|
3333
|
-
offerContract.self
|
3334
|
-
]);
|
3335
|
-
} else {
|
3336
|
-
await offerContract.offer(amount, price);
|
3337
|
-
await zkToken.approveAccountUpdate(offerContract.self);
|
3338
|
-
}
|
3339
|
-
break;
|
3340
|
-
case "buy":
|
3341
|
-
if (amount === void 0)
|
3342
|
-
throw new Error("Error: Amount is required");
|
3343
|
-
await offerContract.buy(amount);
|
3344
|
-
await zkToken.approveAccountUpdate(offerContract.self);
|
3345
|
-
break;
|
3346
|
-
case "withdrawOffer":
|
3347
|
-
if (amount === void 0)
|
3348
|
-
throw new Error("Error: Amount is required");
|
3349
|
-
await offerContract.withdraw(amount);
|
3350
|
-
await zkToken.approveAccountUpdate(offerContract.self);
|
3351
|
-
break;
|
3352
|
-
case "bid":
|
3353
|
-
if (price === void 0)
|
3354
|
-
throw new Error("Error: Price is required");
|
3355
|
-
if (amount === void 0)
|
3356
|
-
throw new Error("Error: Amount is required");
|
3357
|
-
if (isNewAccount) {
|
3358
|
-
await bidContractDeployment.deploy({
|
3359
|
-
verificationKey: bidVerificationKey,
|
3360
|
-
whitelist: whitelist ?? Whitelist.empty()
|
3361
|
-
});
|
3362
|
-
bidContract.account.zkappUri.set(`Bid for ${symbol}`);
|
3363
|
-
await bidContract.initialize(tokenAddress, amount, price);
|
3364
|
-
await zkToken.approveAccountUpdates([
|
3365
|
-
bidContractDeployment.self,
|
3366
|
-
bidContract.self
|
3367
|
-
]);
|
3368
|
-
} else {
|
3369
|
-
await bidContract.bid(amount, price);
|
3370
|
-
await zkToken.approveAccountUpdate(bidContract.self);
|
3371
|
-
}
|
3372
|
-
break;
|
3373
|
-
case "sell":
|
3374
|
-
if (amount === void 0)
|
3375
|
-
throw new Error("Error: Amount is required");
|
3376
|
-
await bidContract.sell(amount);
|
3377
|
-
await zkToken.approveAccountUpdate(bidContract.self);
|
3378
|
-
break;
|
3379
|
-
case "withdrawBid":
|
3380
|
-
if (amount === void 0)
|
3381
|
-
throw new Error("Error: Amount is required");
|
3382
|
-
await bidContract.withdraw(amount);
|
3383
|
-
await zkToken.approveAccountUpdate(bidContract.self);
|
3384
|
-
break;
|
3385
|
-
case "whitelistAdmin":
|
3386
|
-
if (!whitelist)
|
3387
|
-
throw new Error("Whitelist is required");
|
3388
|
-
await whitelistedAdminContract.updateWhitelist(whitelist);
|
3389
|
-
break;
|
3390
|
-
case "whitelistBid":
|
3391
|
-
if (!whitelist)
|
3392
|
-
throw new Error("Whitelist is required");
|
3393
|
-
await bidContract.updateWhitelist(whitelist);
|
3394
|
-
break;
|
3395
|
-
case "whitelistOffer":
|
3396
|
-
if (!whitelist)
|
3397
|
-
throw new Error("Whitelist is required");
|
3398
|
-
await offerContract.updateWhitelist(whitelist);
|
3399
|
-
await zkToken.approveAccountUpdate(offerContract.self);
|
3400
|
-
break;
|
3401
|
-
default:
|
3402
|
-
throw new Error(`Unknown transaction type: ${txType}`);
|
3403
|
-
}
|
3404
|
-
});
|
3405
|
-
return {
|
3406
|
-
tx,
|
3407
|
-
isWhitelisted,
|
3408
|
-
adminContractAddress,
|
3409
|
-
adminAddress,
|
3410
|
-
symbol,
|
3411
|
-
adminVerificationKey: {
|
3412
|
-
hash: (0, import_o1js14.Field)(adminVerificationKey.hash),
|
3413
|
-
data: adminVerificationKey.data
|
3414
|
-
},
|
3415
|
-
tokenVerificationKey: {
|
3416
|
-
hash: (0, import_o1js14.Field)(tokenVerificationKey.hash),
|
3417
|
-
data: tokenVerificationKey.data
|
3418
|
-
},
|
3419
|
-
offerVerificationKey,
|
3420
|
-
bidVerificationKey,
|
3421
|
-
whitelist: whitelist?.toString()
|
3422
|
-
};
|
3423
|
-
}
|
3424
|
-
async function getTokenSymbolAndAdmin(params) {
|
3425
|
-
const { tokenAddress, chain } = params;
|
3426
|
-
const vk = tokenVerificationKeys[chain === "mainnet" ? "mainnet" : "testnet"].vk;
|
3427
|
-
class FungibleTokenState extends (0, import_o1js14.Struct)({
|
3428
|
-
decimals: import_o1js14.UInt8,
|
3429
|
-
admin: import_o1js14.PublicKey,
|
3430
|
-
paused: import_o1js14.Bool
|
3431
|
-
}) {
|
3432
|
-
}
|
3433
|
-
const FungibleTokenStateSize = FungibleTokenState.sizeInFields();
|
3434
|
-
class FungibleTokenAdminState extends (0, import_o1js14.Struct)({
|
3435
|
-
adminPublicKey: import_o1js14.PublicKey
|
3436
|
-
}) {
|
3437
|
-
}
|
3438
|
-
const FungibleTokenAdminStateSize = FungibleTokenAdminState.sizeInFields();
|
3439
|
-
await fetchMinaAccount({ publicKey: tokenAddress, force: true });
|
3440
|
-
if (!import_o1js14.Mina.hasAccount(tokenAddress)) {
|
3441
|
-
throw new Error("Token contract account not found");
|
3442
|
-
}
|
3443
|
-
const account = import_o1js14.Mina.getAccount(tokenAddress);
|
3444
|
-
const verificationKey = account.zkapp?.verificationKey;
|
3445
|
-
if (!verificationKey) {
|
3446
|
-
throw new Error("Token contract verification key not found");
|
3447
|
-
}
|
3448
|
-
if (verificationKey.hash.toJSON() !== vk.FungibleToken.hash || verificationKey.data !== vk.FungibleToken.data || verificationKey.hash.toJSON() !== vk.WhitelistedFungibleToken.hash || verificationKey.data !== vk.WhitelistedFungibleToken.data) {
|
3449
|
-
throw new Error("Unknown token verification key");
|
3450
|
-
}
|
3451
|
-
if (account.zkapp?.appState === void 0) {
|
3452
|
-
throw new Error("Token contract state not found");
|
3453
|
-
}
|
3454
|
-
const state7 = FungibleTokenState.fromFields(account.zkapp?.appState.slice(0, FungibleTokenStateSize));
|
3455
|
-
const symbol = account.tokenSymbol;
|
3456
|
-
const adminContractPublicKey = state7.admin;
|
3457
|
-
await fetchMinaAccount({
|
3458
|
-
publicKey: adminContractPublicKey,
|
3459
|
-
force: true
|
3460
|
-
});
|
3461
|
-
if (!import_o1js14.Mina.hasAccount(adminContractPublicKey)) {
|
3462
|
-
throw new Error("Admin contract account not found");
|
3463
|
-
}
|
3464
|
-
const adminContract = import_o1js14.Mina.getAccount(adminContractPublicKey);
|
3465
|
-
const adminVerificationKey = adminContract.zkapp?.verificationKey;
|
3466
|
-
if (!adminVerificationKey) {
|
3467
|
-
throw new Error("Admin verification key not found");
|
3468
|
-
}
|
3469
|
-
let isWhitelisted = false;
|
3470
|
-
if (vk.FungibleTokenWhitelistedAdmin.hash === adminVerificationKey.hash.toJSON() && vk.FungibleTokenWhitelistedAdmin.data === adminVerificationKey.data) {
|
3471
|
-
isWhitelisted = true;
|
3472
|
-
} else if (vk.FungibleTokenAdmin.hash === adminVerificationKey.hash.toJSON() && vk.FungibleTokenAdmin.data === adminVerificationKey.data) {
|
3473
|
-
isWhitelisted = false;
|
3474
|
-
} else {
|
3475
|
-
throw new Error("Unknown admin verification key");
|
3476
|
-
}
|
3477
|
-
const adminAddress0 = adminContract.zkapp?.appState[0];
|
3478
|
-
const adminAddress1 = adminContract.zkapp?.appState[1];
|
3479
|
-
if (adminAddress0 === void 0 || adminAddress1 === void 0) {
|
3480
|
-
throw new Error("Cannot fetch admin address from admin contract");
|
3481
|
-
}
|
3482
|
-
const adminAddress = import_o1js14.PublicKey.fromFields([adminAddress0, adminAddress1]);
|
3483
|
-
return {
|
3484
|
-
adminContractAddress: adminContractPublicKey,
|
3485
|
-
adminAddress,
|
3486
|
-
symbol,
|
3487
|
-
isWhitelisted
|
3488
|
-
};
|
3489
|
-
}
|
3490
|
-
|
3491
|
-
// dist/node/mina/token/fee.js
|
3492
|
-
var LAUNCH_FEE = 1e9;
|
3493
|
-
var TRANSACTION_FEE = 1e8;
|
3494
|
-
|
3495
|
-
// dist/node/mina/token/vk.js
|
3496
|
-
var fungibleTokenVerificationKeys = {
|
3497
|
-
testnet: {
|
3498
|
-
admin: {
|
3499
|
-
hash: "15958550144671703080408884627087990244648824766878280780120011347457437134053",
|
3500
|
-
data: "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"
|
3501
|
-
},
|
3502
|
-
token: {
|
3503
|
-
hash: "22278758441605771858700252645311428360030262698072838723799702480887091310093",
|
3504
|
-
data: "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"
|
3505
|
-
}
|
3506
|
-
},
|
3507
|
-
mainnet: {
|
3508
|
-
admin: {
|
3509
|
-
hash: "25901604630376752069358432490423434073212977760589721765585739320126139736123",
|
3510
|
-
data: "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"
|
3511
|
-
},
|
3512
|
-
token: {
|
3513
|
-
hash: "27787098481477206239805523694633411816874383698563160451006881053714904356680",
|
3514
|
-
data: "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"
|
3515
|
-
}
|
3516
|
-
},
|
3517
|
-
testnet_v1: {
|
3518
|
-
admin: {
|
3519
|
-
hash: "1200635497217107248831982322269320244173535715339356861513501242012238077174",
|
3520
|
-
data: "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"
|
3521
|
-
},
|
3522
|
-
token: {
|
3523
|
-
hash: "25084457276132306637089336910977939820654927814172888515895248592725736067489",
|
3524
|
-
data: "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"
|
3525
|
-
}
|
3526
|
-
},
|
3527
|
-
mainnet_v1: {
|
3528
|
-
admin: {
|
3529
|
-
hash: "16115269877914581564299853766147447229664556890591132763176560855029019233817",
|
3530
|
-
data: "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"
|
3531
|
-
},
|
3532
|
-
token: {
|
3533
|
-
hash: "12320223354843720065815824451082596238990220882343256724550451075683722289248",
|
3534
|
-
data: "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"
|
3535
|
-
}
|
3536
|
-
}
|
3537
|
-
};
|
3538
|
-
|
3539
2031
|
// dist/node/mina/transactions/blockberry.js
|
3540
2032
|
async function getZkAppTxsFromBlockBerry(params) {
|
3541
2033
|
const { account, chain, blockBerryApiKey } = params;
|
@@ -3634,7 +2126,7 @@ async function getZkAppFromBlockBerry(params) {
|
|
3634
2126
|
}
|
3635
2127
|
|
3636
2128
|
// dist/node/mina/transactions/nonce.js
|
3637
|
-
var
|
2129
|
+
var import_o1js7 = require("o1js");
|
3638
2130
|
async function getNonce(params) {
|
3639
2131
|
const { account, chain, blockBerryApiKey } = params;
|
3640
2132
|
try {
|
@@ -3692,9 +2184,9 @@ async function getAccountNonce(params) {
|
|
3692
2184
|
const { account, chain = getCurrentNetwork().network.chainId, blockBerryApiKey, verbose = true } = params;
|
3693
2185
|
const canUseBlockBerry = blockBerryApiKey !== void 0 && (chain === "devnet" || chain === "mainnet");
|
3694
2186
|
if (chain === "zeko") {
|
3695
|
-
const publicKey =
|
2187
|
+
const publicKey = import_o1js7.PublicKey.fromBase58(account);
|
3696
2188
|
await fetchMinaAccount({ publicKey });
|
3697
|
-
const nonce = Number(
|
2189
|
+
const nonce = Number(import_o1js7.Mina.getAccount(publicKey).nonce.toBigint());
|
3698
2190
|
return nonce;
|
3699
2191
|
} else {
|
3700
2192
|
const blockberryNoncePromise = canUseBlockBerry ? getNonce({
|
@@ -3702,9 +2194,9 @@ async function getAccountNonce(params) {
|
|
3702
2194
|
blockBerryApiKey,
|
3703
2195
|
chain
|
3704
2196
|
}) : void 0;
|
3705
|
-
const publicKey =
|
2197
|
+
const publicKey = import_o1js7.PublicKey.fromBase58(account);
|
3706
2198
|
await fetchMinaAccount({ publicKey });
|
3707
|
-
const senderNonce = Number(
|
2199
|
+
const senderNonce = Number(import_o1js7.Mina.getAccount(publicKey).nonce.toBigint());
|
3708
2200
|
const blockberryNonce = blockberryNoncePromise ? (await blockberryNoncePromise).nonce ?? -1 : -1;
|
3709
2201
|
const nonce = Math.max(senderNonce, blockberryNonce + 1);
|
3710
2202
|
if (verbose && nonce > senderNonce)
|
@@ -3714,21 +2206,21 @@ async function getAccountNonce(params) {
|
|
3714
2206
|
}
|
3715
2207
|
|
3716
2208
|
// dist/node/mina/transactions/transaction.js
|
3717
|
-
var
|
2209
|
+
var import_o1js8 = require("o1js");
|
3718
2210
|
function transactionParams(serializedTransaction, signedJson) {
|
3719
2211
|
const { sender, nonce, tx } = JSON.parse(serializedTransaction);
|
3720
|
-
const transaction =
|
2212
|
+
const transaction = import_o1js8.Mina.Transaction.fromJSON(JSON.parse(tx));
|
3721
2213
|
const memo = transaction.transaction.memo;
|
3722
2214
|
return {
|
3723
|
-
fee:
|
3724
|
-
sender:
|
2215
|
+
fee: import_o1js8.UInt64.from(signedJson.zkappCommand.feePayer.body.fee),
|
2216
|
+
sender: import_o1js8.PublicKey.fromBase58(sender),
|
3725
2217
|
nonce: Number(signedJson.zkappCommand.feePayer.body.nonce),
|
3726
2218
|
memo
|
3727
2219
|
};
|
3728
2220
|
}
|
3729
2221
|
function deserializeTransaction(serializedTransaction, txNew, signedJson) {
|
3730
2222
|
const { tx, blindingValues, length, forestJSONs } = JSON.parse(serializedTransaction);
|
3731
|
-
const transaction =
|
2223
|
+
const transaction = import_o1js8.Mina.Transaction.fromJSON(JSON.parse(tx));
|
3732
2224
|
const forests = forestJSONs.map((f) => JSON.parse(f));
|
3733
2225
|
if (length !== txNew.transaction.accountUpdates.length) {
|
3734
2226
|
throw new Error("New Transaction length mismatch");
|
@@ -3742,7 +2234,7 @@ function deserializeTransaction(serializedTransaction, txNew, signedJson) {
|
|
3742
2234
|
if (transaction.transaction.accountUpdates[i].lazyAuthorization === void 0 || transaction.transaction.accountUpdates[i].lazyAuthorization.blindingValue === void 0) {
|
3743
2235
|
throw new Error(`Lazy authorization blinding value is undefined for item ${i}`);
|
3744
2236
|
}
|
3745
|
-
transaction.transaction.accountUpdates[i].lazyAuthorization.blindingValue =
|
2237
|
+
transaction.transaction.accountUpdates[i].lazyAuthorization.blindingValue = import_o1js8.Field.fromJSON(blindingValues[i]);
|
3746
2238
|
}
|
3747
2239
|
if (forests[i].length > 0) {
|
3748
2240
|
if (transaction.transaction.accountUpdates[i].lazyAuthorization === void 0 || transaction.transaction.accountUpdates[i].lazyAuthorization.args === void 0) {
|
@@ -3755,7 +2247,7 @@ function deserializeTransaction(serializedTransaction, txNew, signedJson) {
|
|
3755
2247
|
}
|
3756
2248
|
}
|
3757
2249
|
transaction.transaction.feePayer.authorization = signedJson.zkappCommand.feePayer.authorization;
|
3758
|
-
transaction.transaction.feePayer.body.fee =
|
2250
|
+
transaction.transaction.feePayer.body.fee = import_o1js8.UInt64.from(signedJson.zkappCommand.feePayer.body.fee);
|
3759
2251
|
for (let i = 0; i < length; i++) {
|
3760
2252
|
const signature = signedJson.zkappCommand.accountUpdates[i].authorization.signature;
|
3761
2253
|
if (signature !== void 0 && signature !== null) {
|
@@ -3890,30 +2382,30 @@ async function txStatusBlockberry(params) {
|
|
3890
2382
|
}
|
3891
2383
|
|
3892
2384
|
// dist/node/mina/transactions/tiny-contract.js
|
3893
|
-
var
|
3894
|
-
var
|
3895
|
-
var TinyContract = class extends
|
2385
|
+
var import_tslib = require("tslib");
|
2386
|
+
var import_o1js9 = require("o1js");
|
2387
|
+
var TinyContract = class extends import_o1js9.SmartContract {
|
3896
2388
|
constructor() {
|
3897
2389
|
super(...arguments);
|
3898
|
-
this.value = (0,
|
2390
|
+
this.value = (0, import_o1js9.State)();
|
3899
2391
|
}
|
3900
2392
|
async setValue(value) {
|
3901
2393
|
this.value.set(value);
|
3902
2394
|
}
|
3903
2395
|
};
|
3904
|
-
(0,
|
3905
|
-
(0,
|
3906
|
-
(0,
|
2396
|
+
(0, import_tslib.__decorate)([
|
2397
|
+
(0, import_o1js9.state)(import_o1js9.Field),
|
2398
|
+
(0, import_tslib.__metadata)("design:type", Object)
|
3907
2399
|
], TinyContract.prototype, "value", void 0);
|
3908
|
-
(0,
|
3909
|
-
|
3910
|
-
(0,
|
3911
|
-
(0,
|
3912
|
-
(0,
|
2400
|
+
(0, import_tslib.__decorate)([
|
2401
|
+
import_o1js9.method,
|
2402
|
+
(0, import_tslib.__metadata)("design:type", Function),
|
2403
|
+
(0, import_tslib.__metadata)("design:paramtypes", [import_o1js9.Field]),
|
2404
|
+
(0, import_tslib.__metadata)("design:returntype", Promise)
|
3913
2405
|
], TinyContract.prototype, "setValue", null);
|
3914
2406
|
|
3915
2407
|
// dist/node/mina/transactions/send.js
|
3916
|
-
var
|
2408
|
+
var import_o1js10 = require("o1js");
|
3917
2409
|
async function sendTx(params) {
|
3918
2410
|
const { tx, description = "", verbose = true, wait = true, chain = getCurrentNetwork().network.chainId } = params;
|
3919
2411
|
const accountUpdates = JSON.parse(tx.toJSON()).accountUpdates;
|
@@ -4002,7 +2494,7 @@ async function getTxStatusFast(params) {
|
|
4002
2494
|
if (chain === "local" || chain === "zeko")
|
4003
2495
|
return { success: true, result: true };
|
4004
2496
|
try {
|
4005
|
-
const txStatus = await (0,
|
2497
|
+
const txStatus = await (0, import_o1js10.checkZkappTransaction)(hash);
|
4006
2498
|
return {
|
4007
2499
|
success: true,
|
4008
2500
|
result: txStatus?.success ?? false
|
@@ -4014,21 +2506,21 @@ async function getTxStatusFast(params) {
|
|
4014
2506
|
}
|
4015
2507
|
|
4016
2508
|
// dist/node/mina/transactions/account.js
|
4017
|
-
var
|
2509
|
+
var import_o1js11 = require("o1js");
|
4018
2510
|
async function accountExists(address, tokenId) {
|
4019
2511
|
try {
|
4020
|
-
const publicKey = typeof address === "string" ?
|
2512
|
+
const publicKey = typeof address === "string" ? import_o1js11.PublicKey.fromBase58(address) : address;
|
4021
2513
|
await fetchMinaAccount({ publicKey, tokenId, force: false });
|
4022
|
-
return
|
2514
|
+
return import_o1js11.Mina.hasAccount(publicKey, tokenId);
|
4023
2515
|
} catch (error) {
|
4024
2516
|
return false;
|
4025
2517
|
}
|
4026
2518
|
}
|
4027
2519
|
async function tokenBalance(address, tokenId) {
|
4028
2520
|
try {
|
4029
|
-
const publicKey = typeof address === "string" ?
|
2521
|
+
const publicKey = typeof address === "string" ? import_o1js11.PublicKey.fromBase58(address) : address;
|
4030
2522
|
await fetchMinaAccount({ publicKey, tokenId, force: false });
|
4031
|
-
return
|
2523
|
+
return import_o1js11.Mina.hasAccount(publicKey, tokenId) ? Number(import_o1js11.Mina.getAccount(publicKey, tokenId).balance.toBigInt()) : void 0;
|
4032
2524
|
} catch (error) {
|
4033
2525
|
console.error("Cannot fetch account balance", error);
|
4034
2526
|
return void 0;
|
@@ -4040,7 +2532,7 @@ async function checkAddress(address) {
|
|
4040
2532
|
return false;
|
4041
2533
|
}
|
4042
2534
|
try {
|
4043
|
-
const publicKey =
|
2535
|
+
const publicKey = import_o1js11.PublicKey.fromBase58(address);
|
4044
2536
|
if (address !== publicKey.toBase58()) {
|
4045
2537
|
console.log("checkAddress: address is not valid", address, publicKey.toBase58());
|
4046
2538
|
return false;
|
@@ -4051,16 +2543,70 @@ async function checkAddress(address) {
|
|
4051
2543
|
return false;
|
4052
2544
|
}
|
4053
2545
|
}
|
2546
|
+
|
2547
|
+
// dist/node/mina/storage/ipfs.js
|
2548
|
+
function createIpfsURL(params) {
|
2549
|
+
let { hash, gateway, apiToken } = params;
|
2550
|
+
gateway ??= process.env.PINATA_IPFS_GATEWAY ?? process.env.NEXT_PUBLIC_PINATA_IPFS_GATEWAY ?? process.env.REACT_APP_PINATA_IPFS_GATEWAY;
|
2551
|
+
apiToken ??= process.env.PINATA_GATEWAY_TOKEN ?? process.env.NEXT_PUBLIC_PINATA_GATEWAY_TOKEN ?? process.env.REACT_APP_PINATA_GATEWAY_TOKEN;
|
2552
|
+
if (!gateway) {
|
2553
|
+
gateway = "https://gateway.pinata.cloud/ipfs/";
|
2554
|
+
}
|
2555
|
+
return gateway + hash + (apiToken ? "?pinataGatewayToken=" + apiToken : "");
|
2556
|
+
}
|
2557
|
+
|
2558
|
+
// dist/node/mina/storage/storage.js
|
2559
|
+
var import_o1js12 = require("o1js");
|
2560
|
+
var Storage = class _Storage extends (0, import_o1js12.Struct)({
|
2561
|
+
url: import_o1js12.Provable.Array(import_o1js12.Field, 2)
|
2562
|
+
}) {
|
2563
|
+
constructor(value) {
|
2564
|
+
super(value);
|
2565
|
+
}
|
2566
|
+
/**
|
2567
|
+
* Asserts that two Storage instances are equal.
|
2568
|
+
* @param a The first Storage instance.
|
2569
|
+
* @param b The second Storage instance.
|
2570
|
+
*/
|
2571
|
+
static assertEquals(a, b) {
|
2572
|
+
a.url[0].assertEquals(b.url[0]);
|
2573
|
+
a.url[1].assertEquals(b.url[1]);
|
2574
|
+
}
|
2575
|
+
/**
|
2576
|
+
* Checks if two Storage instances are equal.
|
2577
|
+
* @param a The first Storage instance.
|
2578
|
+
* @param b The second Storage instance.
|
2579
|
+
* @returns A Bool indicating whether the two instances are equal.
|
2580
|
+
*/
|
2581
|
+
static equals(a, b) {
|
2582
|
+
return a.url[0].equals(b.url[0]).and(a.url[1].equals(b.url[1]));
|
2583
|
+
}
|
2584
|
+
/**
|
2585
|
+
* Creates a Storage instance from a string.
|
2586
|
+
* @param url The string representing the storage URL.
|
2587
|
+
* @returns A new Storage instance.
|
2588
|
+
*/
|
2589
|
+
static fromString(url) {
|
2590
|
+
const fields = import_o1js12.Encoding.stringToFields(url);
|
2591
|
+
if (fields.length !== 2)
|
2592
|
+
throw new Error("Invalid string length");
|
2593
|
+
return new _Storage({ url: [fields[0], fields[1]] });
|
2594
|
+
}
|
2595
|
+
/**
|
2596
|
+
* Converts the Storage instance to a string.
|
2597
|
+
* @returns The string representation of the storage URL.
|
2598
|
+
*/
|
2599
|
+
toString() {
|
2600
|
+
if (this.url[0].toBigInt() === 0n && this.url[1].toBigInt() === 0n) {
|
2601
|
+
throw new Error("Invalid string");
|
2602
|
+
}
|
2603
|
+
return import_o1js12.Encoding.stringFromFields([this.url[0], this.url[1]]);
|
2604
|
+
}
|
2605
|
+
};
|
4054
2606
|
// Annotate the CommonJS export names for ESM import in node:
|
4055
2607
|
0 && (module.exports = {
|
4056
2608
|
Cloud,
|
4057
2609
|
Devnet,
|
4058
|
-
FungibleToken,
|
4059
|
-
FungibleTokenAdmin,
|
4060
|
-
FungibleTokenBidContract,
|
4061
|
-
FungibleTokenOfferContract,
|
4062
|
-
FungibleTokenWhitelistedAdmin,
|
4063
|
-
LAUNCH_FEE,
|
4064
2610
|
Lightnet,
|
4065
2611
|
Local,
|
4066
2612
|
LocalCloud,
|
@@ -4068,15 +2614,8 @@ async function checkAddress(address) {
|
|
4068
2614
|
Mainnet,
|
4069
2615
|
Memory,
|
4070
2616
|
Storage,
|
4071
|
-
TRANSACTION_FEE,
|
4072
2617
|
TinyContract,
|
4073
2618
|
TokenAPI,
|
4074
|
-
UInt64Option,
|
4075
|
-
Whitelist,
|
4076
|
-
WhitelistMap,
|
4077
|
-
WhitelistMapOption,
|
4078
|
-
WhitelistedAddress,
|
4079
|
-
WhitelistedFungibleToken,
|
4080
2619
|
Zeko,
|
4081
2620
|
accountBalance,
|
4082
2621
|
accountBalanceMina,
|
@@ -4085,8 +2624,6 @@ async function checkAddress(address) {
|
|
4085
2624
|
bigintFromBase64,
|
4086
2625
|
bigintToBase56,
|
4087
2626
|
bigintToBase64,
|
4088
|
-
buildTokenDeployTransaction,
|
4089
|
-
buildTokenTransaction,
|
4090
2627
|
checkAddress,
|
4091
2628
|
checkMinaZkappTransaction,
|
4092
2629
|
createIpfsURL,
|
@@ -4104,7 +2641,6 @@ async function checkAddress(address) {
|
|
4104
2641
|
fieldToBase64,
|
4105
2642
|
formatTime,
|
4106
2643
|
fromBase,
|
4107
|
-
fungibleTokenVerificationKeys,
|
4108
2644
|
getAccountFromGraphQL,
|
4109
2645
|
getAccountNonce,
|
4110
2646
|
getBalanceFromGraphQL,
|
@@ -4113,8 +2649,6 @@ async function checkAddress(address) {
|
|
4113
2649
|
getNetworkIdHash,
|
4114
2650
|
getNonce,
|
4115
2651
|
getPaymentTxsFromBlockBerry,
|
4116
|
-
getTokenSymbolAndAdmin,
|
4117
|
-
getTokenTransactionSender,
|
4118
2652
|
getTxStatusFast,
|
4119
2653
|
getZkAppFromBlockBerry,
|
4120
2654
|
getZkAppTxFromBlockBerry,
|
@@ -4133,7 +2667,6 @@ async function checkAddress(address) {
|
|
4133
2667
|
sleep,
|
4134
2668
|
toBase,
|
4135
2669
|
tokenBalance,
|
4136
|
-
tokenVerificationKeys,
|
4137
2670
|
transactionParams,
|
4138
2671
|
txStatusBlockberry,
|
4139
2672
|
zkCloudWorker,
|