@silvana-one/mina-utils 1.0.28 → 1.0.30
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 +29 -10
- package/dist/node/networks.d.ts +5 -3
- package/dist/node/networks.js +22 -6
- package/dist/node/networks.js.map +1 -1
- package/dist/node/utils/mina.d.ts +1 -1
- package/dist/node/utils/mina.js +7 -11
- package/dist/node/utils/mina.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/tsconfig.web.tsbuildinfo +1 -1
- package/dist/web/networks.d.ts +5 -3
- package/dist/web/networks.js +22 -6
- package/dist/web/networks.js.map +1 -1
- package/dist/web/utils/mina.d.ts +1 -1
- package/dist/web/utils/mina.js +7 -11
- package/dist/web/utils/mina.js.map +1 -1
- package/package.json +4 -4
- package/src/networks.ts +35 -8
- package/src/utils/mina.ts +15 -11
package/dist/web/utils/mina.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { initBlockchain, accountBalance, accountBalanceMina, currentNetwork, getNetworkIdHash, getCurrentNetwork, getDeployer, };
|
|
2
2
|
import { Mina, PrivateKey, UInt64, fetchAccount, Lightnet, CircuitString, } from "o1js";
|
|
3
|
-
import { networks, Local } from "../networks.js";
|
|
3
|
+
import { networks, Local, getCanonicalBlockchain, } from "../networks.js";
|
|
4
4
|
let currentNetwork = undefined;
|
|
5
5
|
function getNetworkIdHash() {
|
|
6
6
|
if (currentNetwork === undefined) {
|
|
@@ -30,12 +30,8 @@ function getDeployer() {
|
|
|
30
30
|
* @param deployersNumber the number of deployers to use for the network (only for local and lightnet networks)
|
|
31
31
|
* @returns the Mina network instance
|
|
32
32
|
*/
|
|
33
|
-
async function initBlockchain(
|
|
34
|
-
|
|
35
|
-
if (instance === "mainnet") {
|
|
36
|
-
throw new Error("Mainnet is not supported yet by zkApps");
|
|
37
|
-
}
|
|
38
|
-
*/
|
|
33
|
+
async function initBlockchain(chain, deployersNumber = 0, proofsEnabled = true, customMinaNodeUrl = undefined, customMinaArchiveNodeUrl = undefined) {
|
|
34
|
+
const instance = getCanonicalBlockchain(chain);
|
|
39
35
|
if (currentNetwork !== undefined) {
|
|
40
36
|
if (currentNetwork?.network.chainId === instance) {
|
|
41
37
|
return currentNetwork;
|
|
@@ -46,7 +42,7 @@ async function initBlockchain(instance, deployersNumber = 0, proofsEnabled = tru
|
|
|
46
42
|
}
|
|
47
43
|
const networkIdHash = CircuitString.fromString(instance).hash();
|
|
48
44
|
// await used for compatibility with future versions of o1js
|
|
49
|
-
if (instance === "local") {
|
|
45
|
+
if (instance === "mina:local") {
|
|
50
46
|
const local = await Mina.LocalBlockchain({
|
|
51
47
|
proofsEnabled,
|
|
52
48
|
});
|
|
@@ -74,13 +70,13 @@ async function initBlockchain(instance, deployersNumber = 0, proofsEnabled = tru
|
|
|
74
70
|
customMinaArchiveNodeUrl ??
|
|
75
71
|
network.archive,
|
|
76
72
|
lightnetAccountManager: network.accountManager,
|
|
77
|
-
networkId: instance === "mainnet" ? "mainnet" : "testnet",
|
|
78
|
-
bypassTransactionLimits: instance === "zeko",
|
|
73
|
+
networkId: instance === "mina:mainnet" ? "mainnet" : "testnet",
|
|
74
|
+
bypassTransactionLimits: instance === "zeko:testnet" || instance === "zeko:alphanet",
|
|
79
75
|
});
|
|
80
76
|
Mina.setActiveInstance(networkInstance);
|
|
81
77
|
const keys = [];
|
|
82
78
|
if (deployersNumber > 0) {
|
|
83
|
-
if (instance === "lightnet") {
|
|
79
|
+
if (instance === "mina:lightnet") {
|
|
84
80
|
for (let i = 0; i < deployersNumber; i++) {
|
|
85
81
|
const keyPair = await Lightnet.acquireKeyPair();
|
|
86
82
|
const key = Mina.TestPublicKey(keyPair.privateKey);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mina.js","sourceRoot":"","sources":["../../../src/utils/mina.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,cAAc,EACd,kBAAkB,EAElB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,GACZ,CAAC;AAEF,OAAO,EACL,IAAI,EAEJ,UAAU,EACV,MAAM,EACN,YAAY,EAEZ,QAAQ,EACR,aAAa,GACd,MAAM,MAAM,CAAC;AACd,OAAO,
|
|
1
|
+
{"version":3,"file":"mina.js","sourceRoot":"","sources":["../../../src/utils/mina.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,cAAc,EACd,kBAAkB,EAElB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,GACZ,CAAC;AAEF,OAAO,EACL,IAAI,EAEJ,UAAU,EACV,MAAM,EACN,YAAY,EAEZ,QAAQ,EACR,aAAa,GACd,MAAM,MAAM,CAAC;AACd,OAAO,EACL,QAAQ,EAGR,KAAK,EACL,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAgBxB,IAAI,cAAc,GAAoC,SAAS,CAAC;AAEhE,SAAS,gBAAgB;IACvB,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,cAAc,CAAC,aAAa,CAAC;AACtC,CAAC;AAED,SAAS,iBAAiB;IACxB,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,WAAW;IAClB,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IACrD,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,cAAc,CAC3B,KAAiB,EACjB,kBAA0B,CAAC,EAC3B,gBAAyB,IAAI,EAC7B,oBAAwC,SAAS,EACjD,2BAA+C,SAAS;IAExD,MAAM,QAAQ,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAE/C,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,IAAI,cAAc,EAAE,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACjD,OAAO,cAAc,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CACb,qDAAqD,cAAc,CAAC,OAAO,CAAC,OAAO,0BAA0B,QAAQ,EAAE,CACxH,CAAC;QACJ,CAAC;IACH,CAAC;IACD,MAAM,aAAa,GAAG,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;IAEhE,4DAA4D;IAC5D,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC;YACvC,aAAa;SACd,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,eAAe,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM;YAC7C,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,cAAc,GAAG;YACf,IAAI,EAAE,KAAK,CAAC,YAAY;YACxB,OAAO,EAAE,KAAK;YACd,aAAa;SACd,CAAC;QACF,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC;IAC7D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC;QACnC,IAAI,EACF,OAAO,CAAC,GAAG,CAAC,aAAa;YACzB,OAAO,CAAC,GAAG,CAAC,yBAAyB;YACrC,iBAAiB;YACjB,OAAO,CAAC,IAAI;QACd,OAAO,EACL,OAAO,CAAC,GAAG,CAAC,qBAAqB;YACjC,OAAO,CAAC,GAAG,CAAC,iCAAiC;YAC7C,wBAAwB;YACxB,OAAO,CAAC,OAAO;QACjB,sBAAsB,EAAE,OAAO,CAAC,cAAc;QAC9C,SAAS,EAAE,QAAQ,KAAK,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QAC9D,uBAAuB,EACrB,QAAQ,KAAK,cAAc,IAAI,QAAQ,KAAK,eAAe;KAC9D,CAAC,CAAC;IACH,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;IAExC,MAAM,IAAI,GAAyB,EAAE,CAAC;IAEtC,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;QACxB,IAAI,QAAQ,KAAK,eAAe,EAAE,CAAC;YACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAChD,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBACnD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;YACxC,IACE,SAAS,KAAK,SAAS;gBACvB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,KAAK;gBAClC,SAAS,CAAC,MAAM,GAAG,eAAe;gBAElC,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzC,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvD,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;gBAC3C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IAED,cAAc,GAAG;QACf,IAAI;QACJ,OAAO;QACP,aAAa;KACd,CAAC;IACF,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,cAAc,CAAC,OAAkB;IAC9C,MAAM,YAAY,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3C,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;;QACzD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,kBAAkB,CAAC,OAAkB;IAClD,OAAO,MAAM,CAAC,CAAC,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,GAAG,CAAC;AAClE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@silvana-one/mina-utils",
|
|
3
3
|
"description": "Silvana Mina Utils",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.30",
|
|
5
5
|
"author": "DFST",
|
|
6
6
|
"bugs": "https://github.com/SilvanaOne/silvana-lib/issues",
|
|
7
7
|
"dependencies": {
|
|
8
8
|
"tslib": "^2.8.1"
|
|
9
9
|
},
|
|
10
10
|
"devDependencies": {
|
|
11
|
-
"@types/node": "^24.0
|
|
12
|
-
"esbuild": "^0.25.
|
|
11
|
+
"@types/node": "^24.3.0",
|
|
12
|
+
"esbuild": "^0.25.9",
|
|
13
13
|
"o1js": "2.4.0",
|
|
14
14
|
"ts-node": "^10.9.2",
|
|
15
|
-
"typescript": "^5.
|
|
15
|
+
"typescript": "^5.9.2"
|
|
16
16
|
},
|
|
17
17
|
"engines": {
|
|
18
18
|
"node": ">=22.0.0"
|
package/src/networks.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export {
|
|
2
|
+
CanonicalBlockchain,
|
|
2
3
|
blockchain,
|
|
4
|
+
getCanonicalBlockchain,
|
|
3
5
|
MinaNetwork,
|
|
4
6
|
networks,
|
|
5
7
|
Mainnet,
|
|
@@ -10,16 +12,41 @@ export {
|
|
|
10
12
|
Local,
|
|
11
13
|
};
|
|
12
14
|
|
|
15
|
+
type CanonicalBlockchain =
|
|
16
|
+
| "mina:local"
|
|
17
|
+
| "mina:lightnet"
|
|
18
|
+
| "mina:devnet"
|
|
19
|
+
| "mina:mainnet"
|
|
20
|
+
| "zeko:testnet"
|
|
21
|
+
| "zeko:alphanet";
|
|
22
|
+
|
|
13
23
|
/**
|
|
14
24
|
* blockchain is the type for the chain ID.
|
|
15
25
|
*/
|
|
16
26
|
type blockchain =
|
|
27
|
+
| CanonicalBlockchain
|
|
17
28
|
| "local"
|
|
18
29
|
| "devnet"
|
|
19
30
|
| "lightnet"
|
|
20
31
|
| "mainnet"
|
|
21
|
-
| "zeko"
|
|
22
|
-
|
|
32
|
+
| "zeko";
|
|
33
|
+
|
|
34
|
+
function getCanonicalBlockchain(chain: blockchain): CanonicalBlockchain {
|
|
35
|
+
switch (chain) {
|
|
36
|
+
case "local":
|
|
37
|
+
return "mina:local";
|
|
38
|
+
case "devnet":
|
|
39
|
+
return "mina:devnet";
|
|
40
|
+
case "lightnet":
|
|
41
|
+
return "mina:lightnet";
|
|
42
|
+
case "mainnet":
|
|
43
|
+
return "mina:mainnet";
|
|
44
|
+
case "zeko":
|
|
45
|
+
return "zeko:testnet";
|
|
46
|
+
default:
|
|
47
|
+
return chain;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
23
50
|
|
|
24
51
|
/**
|
|
25
52
|
* MinaNetwork is the data structure for a Mina network, keeping track of the Mina and archive endpoints, chain ID, name, account manager, explorer account URL, explorer transaction URL, and faucet.
|
|
@@ -32,7 +59,7 @@ interface MinaNetwork {
|
|
|
32
59
|
archive: string[];
|
|
33
60
|
|
|
34
61
|
/** The chain ID */
|
|
35
|
-
chainId:
|
|
62
|
+
chainId: CanonicalBlockchain;
|
|
36
63
|
|
|
37
64
|
/** The name of the network (optional) */
|
|
38
65
|
name?: string;
|
|
@@ -61,14 +88,14 @@ const Mainnet: MinaNetwork = {
|
|
|
61
88
|
],
|
|
62
89
|
explorerAccountUrl: "https://minascan.io/mainnet/account/",
|
|
63
90
|
explorerTransactionUrl: "https://minascan.io/mainnet/tx/",
|
|
64
|
-
chainId: "mainnet",
|
|
91
|
+
chainId: "mina:mainnet",
|
|
65
92
|
name: "Mainnet",
|
|
66
93
|
};
|
|
67
94
|
|
|
68
95
|
const Local: MinaNetwork = {
|
|
69
96
|
mina: [],
|
|
70
97
|
archive: [],
|
|
71
|
-
chainId: "local",
|
|
98
|
+
chainId: "mina:local",
|
|
72
99
|
};
|
|
73
100
|
|
|
74
101
|
const Devnet: MinaNetwork = {
|
|
@@ -82,7 +109,7 @@ const Devnet: MinaNetwork = {
|
|
|
82
109
|
],
|
|
83
110
|
explorerAccountUrl: "https://minascan.io/devnet/account/",
|
|
84
111
|
explorerTransactionUrl: "https://minascan.io/devnet/tx/",
|
|
85
|
-
chainId: "devnet",
|
|
112
|
+
chainId: "mina:devnet",
|
|
86
113
|
name: "Devnet",
|
|
87
114
|
faucet: "https://faucet.minaprotocol.com",
|
|
88
115
|
};
|
|
@@ -92,7 +119,7 @@ const Zeko: MinaNetwork = {
|
|
|
92
119
|
archive: ["https://devnet.zeko.io/graphql"],
|
|
93
120
|
explorerAccountUrl: "https://zekoscan.io/devnet/account/",
|
|
94
121
|
explorerTransactionUrl: "https://zekoscan.io/devnet/tx/",
|
|
95
|
-
chainId: "zeko",
|
|
122
|
+
chainId: "zeko:testnet",
|
|
96
123
|
name: "Zeko",
|
|
97
124
|
faucet: "https://zeko.io/faucet",
|
|
98
125
|
};
|
|
@@ -111,7 +138,7 @@ const Lightnet: MinaNetwork = {
|
|
|
111
138
|
mina: ["http://localhost:8080/graphql"],
|
|
112
139
|
archive: ["http://localhost:8282"],
|
|
113
140
|
accountManager: "http://localhost:8181",
|
|
114
|
-
chainId: "lightnet",
|
|
141
|
+
chainId: "mina:lightnet",
|
|
115
142
|
name: "Lightnet",
|
|
116
143
|
};
|
|
117
144
|
|
package/src/utils/mina.ts
CHANGED
|
@@ -19,7 +19,13 @@ import {
|
|
|
19
19
|
Lightnet,
|
|
20
20
|
CircuitString,
|
|
21
21
|
} from "o1js";
|
|
22
|
-
import {
|
|
22
|
+
import {
|
|
23
|
+
networks,
|
|
24
|
+
blockchain,
|
|
25
|
+
MinaNetwork,
|
|
26
|
+
Local,
|
|
27
|
+
getCanonicalBlockchain,
|
|
28
|
+
} from "../networks.js";
|
|
23
29
|
|
|
24
30
|
/**
|
|
25
31
|
* MinaNetworkInstance is the data structure for a Mina network instance, keeping track of the keys, network, and network ID hash.
|
|
@@ -68,17 +74,14 @@ function getDeployer(): Mina.TestPublicKey | undefined {
|
|
|
68
74
|
* @returns the Mina network instance
|
|
69
75
|
*/
|
|
70
76
|
async function initBlockchain(
|
|
71
|
-
|
|
77
|
+
chain: blockchain,
|
|
72
78
|
deployersNumber: number = 0,
|
|
73
79
|
proofsEnabled: boolean = true,
|
|
74
80
|
customMinaNodeUrl: string | undefined = undefined,
|
|
75
81
|
customMinaArchiveNodeUrl: string | undefined = undefined
|
|
76
82
|
): Promise<MinaNetworkInstance> {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
throw new Error("Mainnet is not supported yet by zkApps");
|
|
80
|
-
}
|
|
81
|
-
*/
|
|
83
|
+
const instance = getCanonicalBlockchain(chain);
|
|
84
|
+
|
|
82
85
|
if (currentNetwork !== undefined) {
|
|
83
86
|
if (currentNetwork?.network.chainId === instance) {
|
|
84
87
|
return currentNetwork;
|
|
@@ -91,7 +94,7 @@ async function initBlockchain(
|
|
|
91
94
|
const networkIdHash = CircuitString.fromString(instance).hash();
|
|
92
95
|
|
|
93
96
|
// await used for compatibility with future versions of o1js
|
|
94
|
-
if (instance === "local") {
|
|
97
|
+
if (instance === "mina:local") {
|
|
95
98
|
const local = await Mina.LocalBlockchain({
|
|
96
99
|
proofsEnabled,
|
|
97
100
|
});
|
|
@@ -123,15 +126,16 @@ async function initBlockchain(
|
|
|
123
126
|
customMinaArchiveNodeUrl ??
|
|
124
127
|
network.archive,
|
|
125
128
|
lightnetAccountManager: network.accountManager,
|
|
126
|
-
networkId: instance === "mainnet" ? "mainnet" : "testnet",
|
|
127
|
-
bypassTransactionLimits:
|
|
129
|
+
networkId: instance === "mina:mainnet" ? "mainnet" : "testnet",
|
|
130
|
+
bypassTransactionLimits:
|
|
131
|
+
instance === "zeko:testnet" || instance === "zeko:alphanet",
|
|
128
132
|
});
|
|
129
133
|
Mina.setActiveInstance(networkInstance);
|
|
130
134
|
|
|
131
135
|
const keys: Mina.TestPublicKey[] = [];
|
|
132
136
|
|
|
133
137
|
if (deployersNumber > 0) {
|
|
134
|
-
if (instance === "lightnet") {
|
|
138
|
+
if (instance === "mina:lightnet") {
|
|
135
139
|
for (let i = 0; i < deployersNumber; i++) {
|
|
136
140
|
const keyPair = await Lightnet.acquireKeyPair();
|
|
137
141
|
const key = Mina.TestPublicKey(keyPair.privateKey);
|