@silvana-one/nft 0.1.31 → 0.2.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.
Files changed (197) hide show
  1. package/dist/node/index.cjs +57 -1
  2. package/dist/node/marketplace/bb.d.ts +18 -0
  3. package/dist/node/marketplace/bb.js +58 -0
  4. package/dist/node/marketplace/bb.js.map +1 -1
  5. package/dist/tsconfig.node.tsbuildinfo +1 -0
  6. package/dist/web/src/admin/advanced.js.map +1 -0
  7. package/dist/web/src/admin/index.js.map +1 -0
  8. package/dist/web/src/contracts/admin.js.map +1 -0
  9. package/dist/web/src/contracts/collection.js.map +1 -0
  10. package/dist/web/src/contracts/index.js.map +1 -0
  11. package/dist/web/src/contracts/nft.js.map +1 -0
  12. package/dist/web/src/contracts.js.map +1 -0
  13. package/dist/web/src/index.js.map +1 -0
  14. package/dist/web/{interfaces → src/interfaces}/admin.js.map +1 -1
  15. package/dist/web/src/interfaces/approval.js.map +1 -0
  16. package/dist/web/src/interfaces/collection.js.map +1 -0
  17. package/dist/web/src/interfaces/encoding.js.map +1 -0
  18. package/dist/web/src/interfaces/events.js.map +1 -0
  19. package/dist/web/src/interfaces/index.js.map +1 -0
  20. package/dist/web/src/interfaces/ownable.js.map +1 -0
  21. package/dist/web/src/interfaces/owner.js.map +1 -0
  22. package/dist/web/src/interfaces/pausable.js.map +1 -0
  23. package/dist/web/src/interfaces/types.js.map +1 -0
  24. package/dist/web/src/interfaces/update.js.map +1 -0
  25. package/dist/web/src/marketplace/auction.js.map +1 -0
  26. package/dist/web/{marketplace → src/marketplace}/bb.d.ts +18 -0
  27. package/dist/web/{marketplace → src/marketplace}/bb.js +58 -0
  28. package/dist/web/src/marketplace/bb.js.map +1 -0
  29. package/dist/web/src/marketplace/bid.js.map +1 -0
  30. package/dist/web/src/marketplace/index.js.map +1 -0
  31. package/dist/web/src/marketplace/nft-shares.js.map +1 -0
  32. package/dist/web/src/marketplace/offer.js.map +1 -0
  33. package/dist/web/src/marketplace/types.js.map +1 -0
  34. package/dist/web/src/metadata/address.js.map +1 -0
  35. package/dist/web/src/metadata/index.js.map +1 -0
  36. package/dist/web/src/metadata/metadata.js.map +1 -0
  37. package/dist/web/src/metadata/pin.js.map +1 -0
  38. package/dist/web/src/metadata/text.js.map +1 -0
  39. package/dist/web/src/metadata/tree.js.map +1 -0
  40. package/dist/web/src/util/div.js.map +1 -0
  41. package/dist/web/src/util/index.js.map +1 -0
  42. package/dist/web/src/vk.js.map +1 -0
  43. package/dist/web/src/zkprogram-example/game.js.map +1 -0
  44. package/dist/web/src/zkprogram-example/index.js.map +1 -0
  45. package/dist/web/src/zkprogram-example/update.js.map +1 -0
  46. package/dist/web/test/auction.test.d.ts +1212 -0
  47. package/dist/web/test/auction.test.js +1248 -0
  48. package/dist/web/test/auction.test.js.map +1 -0
  49. package/dist/web/test/bb.test.d.ts +1 -0
  50. package/dist/web/test/bb.test.js +159 -0
  51. package/dist/web/test/bb.test.js.map +1 -0
  52. package/dist/web/test/contract.test.d.ts +1 -0
  53. package/dist/web/test/contract.test.js +1333 -0
  54. package/dist/web/test/contract.test.js.map +1 -0
  55. package/dist/web/test/div.test.d.ts +1 -0
  56. package/dist/web/test/div.test.js +55 -0
  57. package/dist/web/test/div.test.js.map +1 -0
  58. package/dist/web/test/helpers/config.d.ts +4 -0
  59. package/dist/web/test/helpers/config.js +103 -0
  60. package/dist/web/test/helpers/config.js.map +1 -0
  61. package/dist/web/test/helpers/metadata.d.ts +30 -0
  62. package/dist/web/test/helpers/metadata.js +155 -0
  63. package/dist/web/test/helpers/metadata.js.map +1 -0
  64. package/dist/web/test/helpers/utils.d.ts +16 -0
  65. package/dist/web/test/helpers/utils.js +36 -0
  66. package/dist/web/test/helpers/utils.js.map +1 -0
  67. package/dist/web/test/helpers/validators.d.ts +15 -0
  68. package/dist/web/test/helpers/validators.js +46 -0
  69. package/dist/web/test/helpers/validators.js.map +1 -0
  70. package/dist/web/test/metadata.test.d.ts +1 -0
  71. package/dist/web/test/metadata.test.js +66 -0
  72. package/dist/web/test/metadata.test.js.map +1 -0
  73. package/dist/web/test/mint.test.d.ts +1 -0
  74. package/dist/web/test/mint.test.js +262 -0
  75. package/dist/web/test/mint.test.js.map +1 -0
  76. package/dist/web/test/pack.test.d.ts +1 -0
  77. package/dist/web/test/pack.test.js +141 -0
  78. package/dist/web/test/pack.test.js.map +1 -0
  79. package/dist/web/test/zkprogram.test.d.ts +1 -0
  80. package/dist/web/test/zkprogram.test.js +728 -0
  81. package/dist/web/test/zkprogram.test.js.map +1 -0
  82. package/dist/web/tsconfig.web.tsbuildinfo +1 -0
  83. package/package.json +88 -14
  84. package/src/marketplace/bb.ts +51 -0
  85. package/dist/tsconfig.tsbuildinfo +0 -1
  86. package/dist/tsconfig.web.tsbuildinfo +0 -1
  87. package/dist/web/admin/advanced.js.map +0 -1
  88. package/dist/web/admin/index.js.map +0 -1
  89. package/dist/web/contracts/admin.js.map +0 -1
  90. package/dist/web/contracts/collection.js.map +0 -1
  91. package/dist/web/contracts/index.js.map +0 -1
  92. package/dist/web/contracts/nft.js.map +0 -1
  93. package/dist/web/contracts.js.map +0 -1
  94. package/dist/web/index.js.map +0 -1
  95. package/dist/web/interfaces/approval.js.map +0 -1
  96. package/dist/web/interfaces/collection.js.map +0 -1
  97. package/dist/web/interfaces/encoding.js.map +0 -1
  98. package/dist/web/interfaces/events.js.map +0 -1
  99. package/dist/web/interfaces/index.js.map +0 -1
  100. package/dist/web/interfaces/ownable.js.map +0 -1
  101. package/dist/web/interfaces/owner.js.map +0 -1
  102. package/dist/web/interfaces/pausable.js.map +0 -1
  103. package/dist/web/interfaces/types.js.map +0 -1
  104. package/dist/web/interfaces/update.js.map +0 -1
  105. package/dist/web/marketplace/auction.js.map +0 -1
  106. package/dist/web/marketplace/bb.js.map +0 -1
  107. package/dist/web/marketplace/bid.js.map +0 -1
  108. package/dist/web/marketplace/index.js.map +0 -1
  109. package/dist/web/marketplace/nft-shares.js.map +0 -1
  110. package/dist/web/marketplace/offer.js.map +0 -1
  111. package/dist/web/marketplace/types.js.map +0 -1
  112. package/dist/web/metadata/address.js.map +0 -1
  113. package/dist/web/metadata/index.js.map +0 -1
  114. package/dist/web/metadata/metadata.js.map +0 -1
  115. package/dist/web/metadata/pin.js.map +0 -1
  116. package/dist/web/metadata/text.js.map +0 -1
  117. package/dist/web/metadata/tree.js.map +0 -1
  118. package/dist/web/util/div.js.map +0 -1
  119. package/dist/web/util/index.js.map +0 -1
  120. package/dist/web/vk.js.map +0 -1
  121. package/dist/web/zkprogram-example/game.js.map +0 -1
  122. package/dist/web/zkprogram-example/index.js.map +0 -1
  123. package/dist/web/zkprogram-example/update.js.map +0 -1
  124. /package/dist/web/{admin → src/admin}/advanced.d.ts +0 -0
  125. /package/dist/web/{admin → src/admin}/advanced.js +0 -0
  126. /package/dist/web/{admin → src/admin}/index.d.ts +0 -0
  127. /package/dist/web/{admin → src/admin}/index.js +0 -0
  128. /package/dist/web/{contracts → src/contracts}/admin.d.ts +0 -0
  129. /package/dist/web/{contracts → src/contracts}/admin.js +0 -0
  130. /package/dist/web/{contracts → src/contracts}/collection.d.ts +0 -0
  131. /package/dist/web/{contracts → src/contracts}/collection.js +0 -0
  132. /package/dist/web/{contracts → src/contracts}/index.d.ts +0 -0
  133. /package/dist/web/{contracts → src/contracts}/index.js +0 -0
  134. /package/dist/web/{contracts → src/contracts}/nft.d.ts +0 -0
  135. /package/dist/web/{contracts → src/contracts}/nft.js +0 -0
  136. /package/dist/web/{contracts.d.ts → src/contracts.d.ts} +0 -0
  137. /package/dist/web/{contracts.js → src/contracts.js} +0 -0
  138. /package/dist/web/{index.d.ts → src/index.d.ts} +0 -0
  139. /package/dist/web/{index.js → src/index.js} +0 -0
  140. /package/dist/web/{interfaces → src/interfaces}/admin.d.ts +0 -0
  141. /package/dist/web/{interfaces → src/interfaces}/admin.js +0 -0
  142. /package/dist/web/{interfaces → src/interfaces}/approval.d.ts +0 -0
  143. /package/dist/web/{interfaces → src/interfaces}/approval.js +0 -0
  144. /package/dist/web/{interfaces → src/interfaces}/collection.d.ts +0 -0
  145. /package/dist/web/{interfaces → src/interfaces}/collection.js +0 -0
  146. /package/dist/web/{interfaces → src/interfaces}/encoding.d.ts +0 -0
  147. /package/dist/web/{interfaces → src/interfaces}/encoding.js +0 -0
  148. /package/dist/web/{interfaces → src/interfaces}/events.d.ts +0 -0
  149. /package/dist/web/{interfaces → src/interfaces}/events.js +0 -0
  150. /package/dist/web/{interfaces → src/interfaces}/index.d.ts +0 -0
  151. /package/dist/web/{interfaces → src/interfaces}/index.js +0 -0
  152. /package/dist/web/{interfaces → src/interfaces}/ownable.d.ts +0 -0
  153. /package/dist/web/{interfaces → src/interfaces}/ownable.js +0 -0
  154. /package/dist/web/{interfaces → src/interfaces}/owner.d.ts +0 -0
  155. /package/dist/web/{interfaces → src/interfaces}/owner.js +0 -0
  156. /package/dist/web/{interfaces → src/interfaces}/pausable.d.ts +0 -0
  157. /package/dist/web/{interfaces → src/interfaces}/pausable.js +0 -0
  158. /package/dist/web/{interfaces → src/interfaces}/types.d.ts +0 -0
  159. /package/dist/web/{interfaces → src/interfaces}/types.js +0 -0
  160. /package/dist/web/{interfaces → src/interfaces}/update.d.ts +0 -0
  161. /package/dist/web/{interfaces → src/interfaces}/update.js +0 -0
  162. /package/dist/web/{marketplace → src/marketplace}/auction.d.ts +0 -0
  163. /package/dist/web/{marketplace → src/marketplace}/auction.js +0 -0
  164. /package/dist/web/{marketplace → src/marketplace}/bid.d.ts +0 -0
  165. /package/dist/web/{marketplace → src/marketplace}/bid.js +0 -0
  166. /package/dist/web/{marketplace → src/marketplace}/index.d.ts +0 -0
  167. /package/dist/web/{marketplace → src/marketplace}/index.js +0 -0
  168. /package/dist/web/{marketplace → src/marketplace}/nft-shares.d.ts +0 -0
  169. /package/dist/web/{marketplace → src/marketplace}/nft-shares.js +0 -0
  170. /package/dist/web/{marketplace → src/marketplace}/offer.d.ts +0 -0
  171. /package/dist/web/{marketplace → src/marketplace}/offer.js +0 -0
  172. /package/dist/web/{marketplace → src/marketplace}/types.d.ts +0 -0
  173. /package/dist/web/{marketplace → src/marketplace}/types.js +0 -0
  174. /package/dist/web/{metadata → src/metadata}/address.d.ts +0 -0
  175. /package/dist/web/{metadata → src/metadata}/address.js +0 -0
  176. /package/dist/web/{metadata → src/metadata}/index.d.ts +0 -0
  177. /package/dist/web/{metadata → src/metadata}/index.js +0 -0
  178. /package/dist/web/{metadata → src/metadata}/metadata.d.ts +0 -0
  179. /package/dist/web/{metadata → src/metadata}/metadata.js +0 -0
  180. /package/dist/web/{metadata → src/metadata}/pin.d.ts +0 -0
  181. /package/dist/web/{metadata → src/metadata}/pin.js +0 -0
  182. /package/dist/web/{metadata → src/metadata}/text.d.ts +0 -0
  183. /package/dist/web/{metadata → src/metadata}/text.js +0 -0
  184. /package/dist/web/{metadata → src/metadata}/tree.d.ts +0 -0
  185. /package/dist/web/{metadata → src/metadata}/tree.js +0 -0
  186. /package/dist/web/{util → src/util}/div.d.ts +0 -0
  187. /package/dist/web/{util → src/util}/div.js +0 -0
  188. /package/dist/web/{util → src/util}/index.d.ts +0 -0
  189. /package/dist/web/{util → src/util}/index.js +0 -0
  190. /package/dist/web/{vk.d.ts → src/vk.d.ts} +0 -0
  191. /package/dist/web/{vk.js → src/vk.js} +0 -0
  192. /package/dist/web/{zkprogram-example → src/zkprogram-example}/game.d.ts +0 -0
  193. /package/dist/web/{zkprogram-example → src/zkprogram-example}/game.js +0 -0
  194. /package/dist/web/{zkprogram-example → src/zkprogram-example}/index.d.ts +0 -0
  195. /package/dist/web/{zkprogram-example → src/zkprogram-example}/index.js +0 -0
  196. /package/dist/web/{zkprogram-example → src/zkprogram-example}/update.d.ts +0 -0
  197. /package/dist/web/{zkprogram-example → src/zkprogram-example}/update.js +0 -0
@@ -0,0 +1,66 @@
1
+ import { describe, it } from "node:test";
2
+ import assert from "node:assert";
3
+ import { Metadata, ColorPlugin } from "../src/index.js";
4
+ import { randomMap, randomImage } from "./helpers/metadata.js";
5
+ const NUMBER_OF_ITERATIONS = 5;
6
+ const printMetadata = false;
7
+ describe("Test serializing and deserializing Metadata", () => {
8
+ it("should serialize and deserialize Metadata with plugins", async () => {
9
+ const map = new Metadata({
10
+ name: "test",
11
+ image: randomImage(),
12
+ plugins: [new ColorPlugin()],
13
+ });
14
+ map.addTrait({
15
+ key: "color1",
16
+ type: "color",
17
+ value: "blue",
18
+ });
19
+ map.addTrait({
20
+ key: "color2",
21
+ type: "color",
22
+ value: "#800080",
23
+ });
24
+ map.addTrait({
25
+ key: "color3",
26
+ type: "color",
27
+ value: 0xffa500,
28
+ });
29
+ const serializedPublic = JSON.stringify(map.toJSON(false), null, 2);
30
+ const serializedPrivate = JSON.stringify(map.toJSON(true), null, 2);
31
+ if (printMetadata)
32
+ console.log("Serialized", serializedPrivate);
33
+ assert(!serializedPublic.includes("isPrivate"));
34
+ const deserializedPublic = Metadata.fromJSON({
35
+ json: JSON.parse(serializedPublic),
36
+ checkRoot: false,
37
+ plugins: [new ColorPlugin()],
38
+ });
39
+ const deserializedPrivate = Metadata.fromJSON({
40
+ json: JSON.parse(serializedPrivate),
41
+ checkRoot: true,
42
+ plugins: [new ColorPlugin()],
43
+ });
44
+ assert.deepStrictEqual(deserializedPrivate, map);
45
+ });
46
+ it("should serialize and deserialize Metadata", async () => {
47
+ for (let i = 0; i < NUMBER_OF_ITERATIONS; i++) {
48
+ const map = randomMap();
49
+ const serializedPublic = JSON.stringify(map.toJSON(false), null, 2);
50
+ const serializedPrivate = JSON.stringify(map.toJSON(true), null, 2);
51
+ if (printMetadata)
52
+ console.log("Serialized", serializedPrivate);
53
+ assert(!serializedPublic.includes("isPrivate"));
54
+ const deserializedPublic = Metadata.fromJSON({
55
+ json: JSON.parse(serializedPublic),
56
+ checkRoot: false,
57
+ });
58
+ const deserializedPrivate = Metadata.fromJSON({
59
+ json: JSON.parse(serializedPrivate),
60
+ checkRoot: true,
61
+ });
62
+ assert.deepStrictEqual(deserializedPrivate, map);
63
+ }
64
+ });
65
+ });
66
+ //# sourceMappingURL=metadata.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.test.js","sourceRoot":"","sources":["../../../test/metadata.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,262 @@
1
+ import { afterEach, beforeEach, describe, it } from "node:test";
2
+ import assert from "node:assert";
3
+ import { Mina, Field, AccountUpdate, UInt32, Cache, UInt64, fetchLastBlock, PublicKey, } from "o1js";
4
+ import { fetchMinaAccount, initBlockchain, accountBalanceMina, Memory, sendTx, } from "@silvana-one/mina-utils";
5
+ import { TEST_ACCOUNTS } from "./helpers/config.js";
6
+ import { NFT, Collection, NFTAdmin, CollectionData, fieldFromString, NFTData, MintParams, nftVerificationKeys, } from "../src/index.js";
7
+ import { Storage } from "@silvana-one/storage";
8
+ import { processArguments } from "./helpers/utils.js";
9
+ import { randomMetadata } from "./helpers/metadata.js";
10
+ let { chain, approveTransfer, noLog } = processArguments();
11
+ const NUMBER_OF_NFTS = 3;
12
+ const networkId = chain === "mainnet" ? "mainnet" : "devnet";
13
+ const expectedTxStatus = chain === "zeko" ? "pending" : "included";
14
+ const vk = nftVerificationKeys[networkId].vk;
15
+ const { TestPublicKey } = Mina;
16
+ let nftContractVk;
17
+ let nftProgramVk;
18
+ let collectionVk;
19
+ let adminVk;
20
+ const cache = Cache.FileSystem("./cache");
21
+ const zkCollectionKey = TestPublicKey.random();
22
+ const zkAdminKey = TestPublicKey.random();
23
+ const collectionContract = new Collection(zkCollectionKey);
24
+ const tokenId = collectionContract.deriveTokenId();
25
+ const adminContract = new NFTAdmin(zkAdminKey);
26
+ const NUMBER_OF_USERS = 1;
27
+ let admin;
28
+ let faucet;
29
+ const whitelistedUsers = TEST_ACCOUNTS.slice(NUMBER_OF_USERS)
30
+ .map((account) => TestPublicKey.fromBase58(account.privateKey))
31
+ .slice(0, NUMBER_OF_USERS);
32
+ const validators = [
33
+ TestPublicKey.random(),
34
+ TestPublicKey.random(),
35
+ TestPublicKey.random(),
36
+ ];
37
+ const creator = whitelistedUsers[0];
38
+ const nftParams = [];
39
+ describe(`NFT mint tests: ${chain} ${approveTransfer ? "approve " : ""}${noLog ? "noLog" : ""}`, () => {
40
+ const originalConsoleLog = console.log;
41
+ if (noLog) {
42
+ beforeEach(() => {
43
+ console.log = () => { };
44
+ });
45
+ afterEach(() => {
46
+ console.log = originalConsoleLog;
47
+ });
48
+ }
49
+ it("should initialize a blockchain", async () => {
50
+ if (chain === "devnet" || chain === "zeko" || chain === "mainnet") {
51
+ await initBlockchain(chain);
52
+ admin = TestPublicKey.fromBase58(TEST_ACCOUNTS[0].privateKey);
53
+ }
54
+ else if (chain === "local") {
55
+ const { keys } = await initBlockchain(chain, 2);
56
+ faucet = TestPublicKey(keys[0].key);
57
+ admin = TestPublicKey(keys[1].key);
58
+ }
59
+ else if (chain === "lightnet") {
60
+ const { keys } = await initBlockchain(chain, 2);
61
+ faucet = TestPublicKey(keys[0].key);
62
+ admin = TestPublicKey(keys[1].key);
63
+ }
64
+ console.log("chain:", chain);
65
+ console.log("networkId:", Mina.getNetworkId());
66
+ console.log("Collection contract address:", zkCollectionKey.toBase58());
67
+ console.log("Admin contract address:", zkAdminKey.toBase58());
68
+ if (chain === "local" || chain === "lightnet") {
69
+ await fetchMinaAccount({ publicKey: faucet, force: true });
70
+ let nonce = Number(Mina.getAccount(faucet).nonce.toBigint());
71
+ let txs = [];
72
+ for (const user of whitelistedUsers) {
73
+ await fetchMinaAccount({ publicKey: user, force: true });
74
+ const balance = await accountBalanceMina(user);
75
+ if (balance > 30) {
76
+ continue;
77
+ }
78
+ const transaction = await Mina.transaction({
79
+ sender: faucet,
80
+ fee: 100_000_000,
81
+ memo: "topup",
82
+ nonce: nonce++,
83
+ }, async () => {
84
+ const senderUpdate = AccountUpdate.createSigned(faucet);
85
+ if (balance === 0)
86
+ senderUpdate.balance.subInPlace(1000000000);
87
+ senderUpdate.send({ to: user, amount: 100_000_000_000 });
88
+ });
89
+ txs.push(await sendTx({
90
+ tx: transaction.sign([faucet.key]),
91
+ description: "topup",
92
+ wait: false,
93
+ }));
94
+ }
95
+ for (const tx of txs) {
96
+ if (tx?.status === "pending") {
97
+ const txIncluded = await tx.safeWait();
98
+ if (txIncluded.status !== expectedTxStatus) {
99
+ throw new Error("Transaction not included");
100
+ }
101
+ else {
102
+ console.log("Topup tx included:", txIncluded.hash);
103
+ }
104
+ }
105
+ else
106
+ throw new Error("Topup transaction not pending");
107
+ }
108
+ console.log("Topup done");
109
+ }
110
+ console.log("Creator", creator.toBase58(), "balance:", await accountBalanceMina(creator));
111
+ console.log("Admin ", admin.toBase58(), "balance:", await accountBalanceMina(admin));
112
+ Memory.info("before compiling");
113
+ });
114
+ it("should compile NFT Contract", async () => {
115
+ console.log("compiling...");
116
+ console.time("compiled NFTContract");
117
+ const { verificationKey } = await NFT.compile({ cache });
118
+ nftContractVk = verificationKey;
119
+ console.timeEnd("compiled NFTContract");
120
+ assert.strictEqual(nftContractVk.hash.toJSON(), vk.NFT.hash);
121
+ assert.strictEqual(nftContractVk.data, vk.NFT.data);
122
+ });
123
+ it("should compile Admin", async () => {
124
+ console.time("compiled Admin");
125
+ const { verificationKey } = await NFTAdmin.compile({ cache });
126
+ adminVk = verificationKey;
127
+ console.timeEnd("compiled Admin");
128
+ console.log("Admin vk hash:", adminVk.hash.toJSON());
129
+ });
130
+ it("should compile Collection", async () => {
131
+ console.time("compiled Collection");
132
+ const { verificationKey } = await Collection.compile({ cache });
133
+ collectionVk = verificationKey;
134
+ console.timeEnd("compiled Collection");
135
+ console.log("Collection vk hash:", collectionVk.hash.toJSON());
136
+ });
137
+ it("should deploy a Collection", async () => {
138
+ console.time("deployed Collection");
139
+ const { metadataRoot, ipfsHash, serializedMap, name, privateMetadata } = await randomMetadata({
140
+ includePrivateTraits: false,
141
+ includeBanner: true,
142
+ });
143
+ if (!ipfsHash) {
144
+ throw new Error("IPFS hash is undefined");
145
+ }
146
+ const slot = chain === "local"
147
+ ? Mina.currentSlot()
148
+ : chain === "zeko"
149
+ ? UInt32.zero
150
+ : (await fetchLastBlock()).globalSlotSinceGenesis;
151
+ const expiry = slot.add(UInt32.from(100000));
152
+ const masterNFT = new MintParams({
153
+ name: fieldFromString(name),
154
+ address: zkCollectionKey,
155
+ tokenId,
156
+ data: NFTData.new({
157
+ owner: creator,
158
+ }),
159
+ fee: UInt64.zero,
160
+ metadata: metadataRoot,
161
+ storage: Storage.fromString(ipfsHash),
162
+ metadataVerificationKeyHash: Field(0),
163
+ expiry,
164
+ });
165
+ await fetchMinaAccount({ publicKey: creator, force: true });
166
+ const tx = await Mina.transaction({
167
+ sender: creator,
168
+ fee: 100_000_000,
169
+ memo: `Deploy Collection ${name}`.substring(0, 30),
170
+ }, async () => {
171
+ AccountUpdate.fundNewAccount(creator, 3);
172
+ await adminContract.deploy({
173
+ admin: creator,
174
+ uri: `AdminContract`,
175
+ });
176
+ // deploy() and initialize() create 2 account updates for the same publicKey, it is intended
177
+ await collectionContract.deploy({
178
+ creator,
179
+ collectionName: fieldFromString(name),
180
+ baseURL: fieldFromString("ipfs"),
181
+ admin: zkAdminKey,
182
+ symbol: "NFT",
183
+ url: `https://${chain}.minanft.io`,
184
+ });
185
+ await collectionContract.initialize(masterNFT, CollectionData.new({
186
+ requireTransferApproval: approveTransfer,
187
+ royaltyFee: 10, // 10%
188
+ transferFee: 1_000_000_000, // 1 MINA
189
+ }));
190
+ });
191
+ await tx.prove();
192
+ assert.strictEqual((await sendTx({
193
+ tx: tx.sign([creator.key, zkCollectionKey.key, zkAdminKey.key]),
194
+ description: "deploy Collection",
195
+ }))?.status, expectedTxStatus);
196
+ console.timeEnd("deployed Collection");
197
+ });
198
+ it("should mint NFT", async () => {
199
+ Memory.info("before mint");
200
+ console.time("minted NFT");
201
+ for (let i = 0; i < NUMBER_OF_NFTS; i++) {
202
+ const { name, ipfsHash, metadataRoot, privateMetadata } = await randomMetadata();
203
+ if (!ipfsHash) {
204
+ throw new Error("IPFS hash is undefined");
205
+ }
206
+ const zkNFTKey = TestPublicKey.random();
207
+ console.log(`NFT ${i}:`, zkNFTKey.toBase58());
208
+ nftParams.push({
209
+ name,
210
+ address: zkNFTKey,
211
+ collection: zkCollectionKey,
212
+ privateMetadata,
213
+ });
214
+ await fetchMinaAccount({ publicKey: creator, force: true });
215
+ await fetchMinaAccount({ publicKey: zkCollectionKey, force: true });
216
+ await fetchMinaAccount({ publicKey: zkAdminKey, force: true });
217
+ const slot = chain === "local"
218
+ ? Mina.currentSlot()
219
+ : chain === "zeko"
220
+ ? UInt32.zero
221
+ : (await fetchLastBlock()).globalSlotSinceGenesis;
222
+ const expiry = slot.add(UInt32.from(100000));
223
+ const tx = await Mina.transaction({
224
+ sender: creator,
225
+ fee: 100_000_000,
226
+ memo: `Mint NFT ${name}`.substring(0, 30),
227
+ }, async () => {
228
+ await collectionContract.mintByCreator({
229
+ name: fieldFromString(name),
230
+ address: zkNFTKey,
231
+ tokenId,
232
+ metadata: metadataRoot,
233
+ data: NFTData.new({
234
+ canChangeMetadata: false,
235
+ canPause: false,
236
+ owner: creator,
237
+ }),
238
+ metadataVerificationKeyHash: Field(0),
239
+ expiry,
240
+ fee: UInt64.from(10_000_000_000),
241
+ storage: Storage.fromString(ipfsHash),
242
+ });
243
+ });
244
+ await tx.prove();
245
+ assert.strictEqual((await sendTx({
246
+ tx: tx.sign([creator.key, zkNFTKey.key]),
247
+ description: "mint",
248
+ }))?.status, expectedTxStatus);
249
+ await fetchMinaAccount({ publicKey: zkNFTKey, tokenId, force: true });
250
+ const nft = new NFT(zkNFTKey, tokenId);
251
+ const dataCheck = NFTData.unpack(nft.packedData.get());
252
+ console.log("owner", creator.toBase58());
253
+ console.log("ownerCheck", dataCheck.owner.toBase58());
254
+ console.log("approvalCheck", dataCheck.approved.toBase58());
255
+ console.log("creator", creator.toBase58());
256
+ assert.strictEqual(dataCheck.owner.equals(creator).toBoolean(), true);
257
+ assert.strictEqual(dataCheck.approved.equals(PublicKey.empty()).toBoolean(), true);
258
+ }
259
+ console.timeEnd("minted NFT");
260
+ });
261
+ });
262
+ //# sourceMappingURL=mint.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mint.test.js","sourceRoot":"","sources":["../../../test/mint.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,141 @@
1
+ import { describe, it } from "node:test";
2
+ import assert from "node:assert";
3
+ import { UInt32, Bool, UInt64, PrivateKey, PublicKey, Field } from "o1js";
4
+ import { NFTData, CollectionData, AdminData } from "../src/index.js";
5
+ import { Storage } from "@silvana-one/storage";
6
+ import { UpgradeDatabaseState, PublicKeyOption } from "@silvana-one/upgradable";
7
+ const NUMBER_OF_ITERATIONS = 1000;
8
+ const randomBool = () => Math.random() < 0.5;
9
+ describe("Test packing and unpacking", async () => {
10
+ it("should pack and unpack NFTData", async () => {
11
+ for (let i = 0; i < NUMBER_OF_ITERATIONS; i++) {
12
+ const randomVersion = UInt32.from(Math.floor(Math.random() * 2 ** 32));
13
+ const randomId = UInt64.from(Math.floor(Math.random() * 2 ** 64));
14
+ const original = new NFTData({
15
+ owner: PrivateKey.random().toPublicKey(),
16
+ approved: PrivateKey.random().toPublicKey(),
17
+ version: randomVersion,
18
+ id: randomId,
19
+ canChangeOwnerByProof: Bool(randomBool()),
20
+ canTransfer: Bool(randomBool()),
21
+ canApprove: Bool(randomBool()),
22
+ canChangeMetadata: Bool(randomBool()),
23
+ canChangeStorage: Bool(randomBool()),
24
+ canChangeName: Bool(randomBool()),
25
+ canChangeMetadataVerificationKeyHash: Bool(randomBool()),
26
+ canPause: Bool(randomBool()),
27
+ isPaused: Bool(randomBool()),
28
+ requireOwnerAuthorizationToUpgrade: Bool(randomBool()),
29
+ });
30
+ const packed = original.pack();
31
+ const unpacked = NFTData.unpack(packed);
32
+ assert.strictEqual(unpacked.owner.equals(original.owner).toBoolean(), true);
33
+ assert.strictEqual(unpacked.approved.equals(original.approved).toBoolean(), true);
34
+ assert.strictEqual(unpacked.version.toBigint(), original.version.toBigint());
35
+ assert.strictEqual(unpacked.id.toBigInt(), original.id.toBigInt());
36
+ assert.strictEqual(unpacked.canChangeOwnerByProof.toBoolean(), original.canChangeOwnerByProof.toBoolean());
37
+ assert.strictEqual(unpacked.canTransfer.toBoolean(), original.canTransfer.toBoolean());
38
+ assert.strictEqual(unpacked.canApprove.toBoolean(), original.canApprove.toBoolean());
39
+ assert.strictEqual(unpacked.canChangeMetadata.toBoolean(), original.canChangeMetadata.toBoolean());
40
+ assert.strictEqual(unpacked.canChangeStorage.toBoolean(), original.canChangeStorage.toBoolean());
41
+ assert.strictEqual(unpacked.canChangeName.toBoolean(), original.canChangeName.toBoolean());
42
+ assert.strictEqual(unpacked.canChangeMetadataVerificationKeyHash.toBoolean(), original.canChangeMetadataVerificationKeyHash.toBoolean());
43
+ assert.strictEqual(unpacked.canPause.toBoolean(), original.canPause.toBoolean());
44
+ assert.strictEqual(unpacked.isPaused.toBoolean(), original.isPaused.toBoolean());
45
+ assert.strictEqual(unpacked.requireOwnerAuthorizationToUpgrade.toBoolean(), original.requireOwnerAuthorizationToUpgrade.toBoolean());
46
+ }
47
+ });
48
+ it("should pack and unpack CollectionData", async () => {
49
+ for (let i = 0; i < NUMBER_OF_ITERATIONS; i++) {
50
+ const publicKey = PrivateKey.random().toPublicKey();
51
+ const original = new CollectionData({
52
+ royaltyFee: UInt32.from(Math.floor(Math.random() * 2 ** 32)),
53
+ transferFee: UInt64.from(Math.floor(Math.random() * 2 ** 64)),
54
+ requireTransferApproval: Bool(randomBool()),
55
+ mintingIsLimited: Bool(randomBool()),
56
+ isPaused: Bool(randomBool()),
57
+ });
58
+ const packed = original.pack();
59
+ const unpacked = CollectionData.unpack(packed);
60
+ assert.strictEqual(unpacked.requireTransferApproval.toBoolean(), original.requireTransferApproval.toBoolean());
61
+ assert.strictEqual(unpacked.mintingIsLimited.toBoolean(), original.mintingIsLimited.toBoolean());
62
+ assert.strictEqual(unpacked.isPaused.toBoolean(), original.isPaused.toBoolean());
63
+ assert.strictEqual(unpacked.royaltyFee.toBigint() === original.royaltyFee.toBigint(), true);
64
+ assert.strictEqual(unpacked.transferFee.toBigInt() === original.transferFee.toBigInt(), true);
65
+ }
66
+ });
67
+ it("should pack and unpack PublicKey", async () => {
68
+ for (let i = 0; i < NUMBER_OF_ITERATIONS; i++) {
69
+ const publicKey = PrivateKey.random().toPublicKey();
70
+ const x = publicKey.x;
71
+ const isOdd = publicKey.isOdd;
72
+ const restored = PublicKey.from({ x, isOdd });
73
+ assert.strictEqual(restored.equals(publicKey).toBoolean(), true);
74
+ }
75
+ });
76
+ it("should pack and unpack AdminData", async () => {
77
+ for (let i = 0; i < NUMBER_OF_ITERATIONS; i++) {
78
+ const original = new AdminData({
79
+ canPause: Bool(randomBool()),
80
+ isPaused: Bool(randomBool()),
81
+ allowChangeRoyalty: Bool(randomBool()),
82
+ allowChangeTransferFee: Bool(randomBool()),
83
+ allowChangeBaseUri: Bool(randomBool()),
84
+ allowChangeCreator: Bool(randomBool()),
85
+ allowChangeAdmin: Bool(randomBool()),
86
+ allowChangeName: Bool(randomBool()),
87
+ });
88
+ const packed = original.pack();
89
+ const unpacked = AdminData.unpack(packed);
90
+ assert.strictEqual(unpacked.canPause.toBoolean(), original.canPause.toBoolean());
91
+ assert.strictEqual(unpacked.isPaused.toBoolean(), original.isPaused.toBoolean());
92
+ assert.strictEqual(unpacked.allowChangeRoyalty.toBoolean(), original.allowChangeRoyalty.toBoolean());
93
+ assert.strictEqual(unpacked.allowChangeTransferFee.toBoolean(), original.allowChangeTransferFee.toBoolean());
94
+ assert.strictEqual(unpacked.allowChangeBaseUri.toBoolean(), original.allowChangeBaseUri.toBoolean());
95
+ assert.strictEqual(unpacked.allowChangeCreator.toBoolean(), original.allowChangeCreator.toBoolean());
96
+ assert.strictEqual(unpacked.allowChangeAdmin.toBoolean(), original.allowChangeAdmin.toBoolean());
97
+ assert.strictEqual(unpacked.allowChangeName.toBoolean(), original.allowChangeName.toBoolean());
98
+ }
99
+ });
100
+ it("should pack and unpack UpgradeDatabaseState", async () => {
101
+ const original = UpgradeDatabaseState.empty();
102
+ const packed = original.pack();
103
+ const unpacked = UpgradeDatabaseState.unpack(packed);
104
+ assert.strictEqual(unpacked.root.equals(original.root).toBoolean(), true);
105
+ assert.strictEqual(Storage.equals(unpacked.storage, original.storage).toBoolean(), true);
106
+ assert.strictEqual(unpacked.nextUpgradeAuthority.value
107
+ .equals(original.nextUpgradeAuthority.value)
108
+ .toBoolean(), true);
109
+ assert.strictEqual(unpacked.nextUpgradeAuthority.isSome.toBoolean() ===
110
+ original.nextUpgradeAuthority.isSome.toBoolean(), true);
111
+ assert.strictEqual(unpacked.version.toBigint(), original.version.toBigint());
112
+ assert.strictEqual(unpacked.validFrom.toBigint(), original.validFrom.toBigint());
113
+ for (let i = 0; i < NUMBER_OF_ITERATIONS; i++) {
114
+ const randomVersion = UInt32.from(Math.floor(Math.random() * 2 ** 32));
115
+ const randomValidFrom = UInt32.from(Math.floor(Math.random() * 2 ** 32));
116
+ const randomStorage = new Storage({
117
+ url: [Field.random(), Field.random()],
118
+ });
119
+ const original = new UpgradeDatabaseState({
120
+ root: Field.random(),
121
+ storage: randomStorage,
122
+ nextUpgradeAuthority: Math.random() < 0.5
123
+ ? PublicKeyOption.from(PrivateKey.random().toPublicKey())
124
+ : PublicKeyOption.none(),
125
+ validFrom: randomValidFrom,
126
+ version: randomVersion,
127
+ });
128
+ const packed = original.pack();
129
+ const unpacked = UpgradeDatabaseState.unpack(packed);
130
+ assert.strictEqual(unpacked.root.equals(original.root).toBoolean(), true);
131
+ assert.strictEqual(Storage.equals(unpacked.storage, original.storage).toBoolean(), true);
132
+ assert.strictEqual(unpacked.nextUpgradeAuthority.value
133
+ .equals(original.nextUpgradeAuthority.value)
134
+ .toBoolean(), true);
135
+ assert.strictEqual(unpacked.nextUpgradeAuthority.isSome.toBoolean() ===
136
+ original.nextUpgradeAuthority.isSome.toBoolean(), true);
137
+ assert.strictEqual(unpacked.validFrom.toBigint(), original.validFrom.toBigint());
138
+ }
139
+ });
140
+ });
141
+ //# sourceMappingURL=pack.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pack.test.js","sourceRoot":"","sources":["../../../test/pack.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};