@silvana-one/nft 0.2.0 → 0.2.1
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/tsconfig.web.tsbuildinfo +1 -0
- package/dist/web/admin/advanced.js.map +1 -0
- package/dist/web/admin/index.js.map +1 -0
- package/dist/web/contracts/admin.js.map +1 -0
- package/dist/web/contracts/collection.js.map +1 -0
- package/dist/web/contracts/index.js.map +1 -0
- package/dist/web/contracts/nft.js.map +1 -0
- package/dist/web/contracts.js.map +1 -0
- package/dist/web/index.js.map +1 -0
- package/dist/web/{src/interfaces → interfaces}/admin.js.map +1 -1
- package/dist/web/interfaces/approval.js.map +1 -0
- package/dist/web/interfaces/collection.js.map +1 -0
- package/dist/web/interfaces/encoding.js.map +1 -0
- package/dist/web/interfaces/events.js.map +1 -0
- package/dist/web/interfaces/index.js.map +1 -0
- package/dist/web/interfaces/ownable.js.map +1 -0
- package/dist/web/interfaces/owner.js.map +1 -0
- package/dist/web/interfaces/pausable.js.map +1 -0
- package/dist/web/interfaces/types.js.map +1 -0
- package/dist/web/interfaces/update.js.map +1 -0
- package/dist/web/marketplace/auction.js.map +1 -0
- package/dist/web/marketplace/bb.js.map +1 -0
- package/dist/web/marketplace/bid.js.map +1 -0
- package/dist/web/marketplace/index.js.map +1 -0
- package/dist/web/marketplace/nft-shares.js.map +1 -0
- package/dist/web/marketplace/offer.js.map +1 -0
- package/dist/web/marketplace/types.js.map +1 -0
- package/dist/web/metadata/address.js.map +1 -0
- package/dist/web/metadata/index.js.map +1 -0
- package/dist/web/metadata/metadata.js.map +1 -0
- package/dist/web/metadata/pin.js.map +1 -0
- package/dist/web/metadata/text.js.map +1 -0
- package/dist/web/metadata/tree.js.map +1 -0
- package/dist/web/util/div.js.map +1 -0
- package/dist/web/util/index.js.map +1 -0
- package/dist/web/vk.js.map +1 -0
- package/dist/web/zkprogram-example/game.js.map +1 -0
- package/dist/web/zkprogram-example/index.js.map +1 -0
- package/dist/web/zkprogram-example/update.js.map +1 -0
- package/package.json +8 -8
- package/dist/web/src/admin/advanced.js.map +0 -1
- package/dist/web/src/admin/index.js.map +0 -1
- package/dist/web/src/contracts/admin.js.map +0 -1
- package/dist/web/src/contracts/collection.js.map +0 -1
- package/dist/web/src/contracts/index.js.map +0 -1
- package/dist/web/src/contracts/nft.js.map +0 -1
- package/dist/web/src/contracts.js.map +0 -1
- package/dist/web/src/index.js.map +0 -1
- package/dist/web/src/interfaces/approval.js.map +0 -1
- package/dist/web/src/interfaces/collection.js.map +0 -1
- package/dist/web/src/interfaces/encoding.js.map +0 -1
- package/dist/web/src/interfaces/events.js.map +0 -1
- package/dist/web/src/interfaces/index.js.map +0 -1
- package/dist/web/src/interfaces/ownable.js.map +0 -1
- package/dist/web/src/interfaces/owner.js.map +0 -1
- package/dist/web/src/interfaces/pausable.js.map +0 -1
- package/dist/web/src/interfaces/types.js.map +0 -1
- package/dist/web/src/interfaces/update.js.map +0 -1
- package/dist/web/src/marketplace/auction.js.map +0 -1
- package/dist/web/src/marketplace/bb.js.map +0 -1
- package/dist/web/src/marketplace/bid.js.map +0 -1
- package/dist/web/src/marketplace/index.js.map +0 -1
- package/dist/web/src/marketplace/nft-shares.js.map +0 -1
- package/dist/web/src/marketplace/offer.js.map +0 -1
- package/dist/web/src/marketplace/types.js.map +0 -1
- package/dist/web/src/metadata/address.js.map +0 -1
- package/dist/web/src/metadata/index.js.map +0 -1
- package/dist/web/src/metadata/metadata.js.map +0 -1
- package/dist/web/src/metadata/pin.js.map +0 -1
- package/dist/web/src/metadata/text.js.map +0 -1
- package/dist/web/src/metadata/tree.js.map +0 -1
- package/dist/web/src/util/div.js.map +0 -1
- package/dist/web/src/util/index.js.map +0 -1
- package/dist/web/src/vk.js.map +0 -1
- package/dist/web/src/zkprogram-example/game.js.map +0 -1
- package/dist/web/src/zkprogram-example/index.js.map +0 -1
- package/dist/web/src/zkprogram-example/update.js.map +0 -1
- package/dist/web/test/auction.test.d.ts +0 -1212
- package/dist/web/test/auction.test.js +0 -1248
- package/dist/web/test/auction.test.js.map +0 -1
- package/dist/web/test/bb.test.d.ts +0 -1
- package/dist/web/test/bb.test.js +0 -159
- package/dist/web/test/bb.test.js.map +0 -1
- package/dist/web/test/contract.test.d.ts +0 -1
- package/dist/web/test/contract.test.js +0 -1333
- package/dist/web/test/contract.test.js.map +0 -1
- package/dist/web/test/div.test.d.ts +0 -1
- package/dist/web/test/div.test.js +0 -55
- package/dist/web/test/div.test.js.map +0 -1
- package/dist/web/test/helpers/config.d.ts +0 -4
- package/dist/web/test/helpers/config.js +0 -103
- package/dist/web/test/helpers/config.js.map +0 -1
- package/dist/web/test/helpers/metadata.d.ts +0 -30
- package/dist/web/test/helpers/metadata.js +0 -155
- package/dist/web/test/helpers/metadata.js.map +0 -1
- package/dist/web/test/helpers/utils.d.ts +0 -16
- package/dist/web/test/helpers/utils.js +0 -36
- package/dist/web/test/helpers/utils.js.map +0 -1
- package/dist/web/test/helpers/validators.d.ts +0 -15
- package/dist/web/test/helpers/validators.js +0 -46
- package/dist/web/test/helpers/validators.js.map +0 -1
- package/dist/web/test/metadata.test.d.ts +0 -1
- package/dist/web/test/metadata.test.js +0 -66
- package/dist/web/test/metadata.test.js.map +0 -1
- package/dist/web/test/mint.test.d.ts +0 -1
- package/dist/web/test/mint.test.js +0 -262
- package/dist/web/test/mint.test.js.map +0 -1
- package/dist/web/test/pack.test.d.ts +0 -1
- package/dist/web/test/pack.test.js +0 -141
- package/dist/web/test/pack.test.js.map +0 -1
- package/dist/web/test/zkprogram.test.d.ts +0 -1
- package/dist/web/test/zkprogram.test.js +0 -728
- package/dist/web/test/zkprogram.test.js.map +0 -1
- package/dist/web/tsconfig.web.tsbuildinfo +0 -1
- /package/dist/web/{src/admin → admin}/advanced.d.ts +0 -0
- /package/dist/web/{src/admin → admin}/advanced.js +0 -0
- /package/dist/web/{src/admin → admin}/index.d.ts +0 -0
- /package/dist/web/{src/admin → admin}/index.js +0 -0
- /package/dist/web/{src/contracts → contracts}/admin.d.ts +0 -0
- /package/dist/web/{src/contracts → contracts}/admin.js +0 -0
- /package/dist/web/{src/contracts → contracts}/collection.d.ts +0 -0
- /package/dist/web/{src/contracts → contracts}/collection.js +0 -0
- /package/dist/web/{src/contracts → contracts}/index.d.ts +0 -0
- /package/dist/web/{src/contracts → contracts}/index.js +0 -0
- /package/dist/web/{src/contracts → contracts}/nft.d.ts +0 -0
- /package/dist/web/{src/contracts → contracts}/nft.js +0 -0
- /package/dist/web/{src/contracts.d.ts → contracts.d.ts} +0 -0
- /package/dist/web/{src/contracts.js → contracts.js} +0 -0
- /package/dist/web/{src/index.d.ts → index.d.ts} +0 -0
- /package/dist/web/{src/index.js → index.js} +0 -0
- /package/dist/web/{src/interfaces → interfaces}/admin.d.ts +0 -0
- /package/dist/web/{src/interfaces → interfaces}/admin.js +0 -0
- /package/dist/web/{src/interfaces → interfaces}/approval.d.ts +0 -0
- /package/dist/web/{src/interfaces → interfaces}/approval.js +0 -0
- /package/dist/web/{src/interfaces → interfaces}/collection.d.ts +0 -0
- /package/dist/web/{src/interfaces → interfaces}/collection.js +0 -0
- /package/dist/web/{src/interfaces → interfaces}/encoding.d.ts +0 -0
- /package/dist/web/{src/interfaces → interfaces}/encoding.js +0 -0
- /package/dist/web/{src/interfaces → interfaces}/events.d.ts +0 -0
- /package/dist/web/{src/interfaces → interfaces}/events.js +0 -0
- /package/dist/web/{src/interfaces → interfaces}/index.d.ts +0 -0
- /package/dist/web/{src/interfaces → interfaces}/index.js +0 -0
- /package/dist/web/{src/interfaces → interfaces}/ownable.d.ts +0 -0
- /package/dist/web/{src/interfaces → interfaces}/ownable.js +0 -0
- /package/dist/web/{src/interfaces → interfaces}/owner.d.ts +0 -0
- /package/dist/web/{src/interfaces → interfaces}/owner.js +0 -0
- /package/dist/web/{src/interfaces → interfaces}/pausable.d.ts +0 -0
- /package/dist/web/{src/interfaces → interfaces}/pausable.js +0 -0
- /package/dist/web/{src/interfaces → interfaces}/types.d.ts +0 -0
- /package/dist/web/{src/interfaces → interfaces}/types.js +0 -0
- /package/dist/web/{src/interfaces → interfaces}/update.d.ts +0 -0
- /package/dist/web/{src/interfaces → interfaces}/update.js +0 -0
- /package/dist/web/{src/marketplace → marketplace}/auction.d.ts +0 -0
- /package/dist/web/{src/marketplace → marketplace}/auction.js +0 -0
- /package/dist/web/{src/marketplace → marketplace}/bb.d.ts +0 -0
- /package/dist/web/{src/marketplace → marketplace}/bb.js +0 -0
- /package/dist/web/{src/marketplace → marketplace}/bid.d.ts +0 -0
- /package/dist/web/{src/marketplace → marketplace}/bid.js +0 -0
- /package/dist/web/{src/marketplace → marketplace}/index.d.ts +0 -0
- /package/dist/web/{src/marketplace → marketplace}/index.js +0 -0
- /package/dist/web/{src/marketplace → marketplace}/nft-shares.d.ts +0 -0
- /package/dist/web/{src/marketplace → marketplace}/nft-shares.js +0 -0
- /package/dist/web/{src/marketplace → marketplace}/offer.d.ts +0 -0
- /package/dist/web/{src/marketplace → marketplace}/offer.js +0 -0
- /package/dist/web/{src/marketplace → marketplace}/types.d.ts +0 -0
- /package/dist/web/{src/marketplace → marketplace}/types.js +0 -0
- /package/dist/web/{src/metadata → metadata}/address.d.ts +0 -0
- /package/dist/web/{src/metadata → metadata}/address.js +0 -0
- /package/dist/web/{src/metadata → metadata}/index.d.ts +0 -0
- /package/dist/web/{src/metadata → metadata}/index.js +0 -0
- /package/dist/web/{src/metadata → metadata}/metadata.d.ts +0 -0
- /package/dist/web/{src/metadata → metadata}/metadata.js +0 -0
- /package/dist/web/{src/metadata → metadata}/pin.d.ts +0 -0
- /package/dist/web/{src/metadata → metadata}/pin.js +0 -0
- /package/dist/web/{src/metadata → metadata}/text.d.ts +0 -0
- /package/dist/web/{src/metadata → metadata}/text.js +0 -0
- /package/dist/web/{src/metadata → metadata}/tree.d.ts +0 -0
- /package/dist/web/{src/metadata → metadata}/tree.js +0 -0
- /package/dist/web/{src/util → util}/div.d.ts +0 -0
- /package/dist/web/{src/util → util}/div.js +0 -0
- /package/dist/web/{src/util → util}/index.d.ts +0 -0
- /package/dist/web/{src/util → util}/index.js +0 -0
- /package/dist/web/{src/vk.d.ts → vk.d.ts} +0 -0
- /package/dist/web/{src/vk.js → vk.js} +0 -0
- /package/dist/web/{src/zkprogram-example → zkprogram-example}/game.d.ts +0 -0
- /package/dist/web/{src/zkprogram-example → zkprogram-example}/game.js +0 -0
- /package/dist/web/{src/zkprogram-example → zkprogram-example}/index.d.ts +0 -0
- /package/dist/web/{src/zkprogram-example → zkprogram-example}/index.js +0 -0
- /package/dist/web/{src/zkprogram-example → zkprogram-example}/update.d.ts +0 -0
- /package/dist/web/{src/zkprogram-example → zkprogram-example}/update.js +0 -0
|
@@ -1,66 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.test.js","sourceRoot":"","sources":["../../../test/metadata.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,262 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mint.test.js","sourceRoot":"","sources":["../../../test/mint.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,141 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pack.test.js","sourceRoot":"","sources":["../../../test/pack.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|