@silvana-one/mina-utils 1.0.24 → 1.0.26
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/commitment/commitment.d.ts +3 -3
- package/dist/node/commitment/commitment.js +3 -3
- package/dist/node/commitment/commitment.js.map +1 -1
- package/dist/node/index.cjs +17 -6
- package/dist/node/networks.d.ts +3 -2
- package/dist/node/networks.js +10 -10
- package/dist/node/networks.js.map +1 -1
- package/dist/node/utils/mina.d.ts +1 -1
- package/dist/node/utils/mina.js +3 -1
- 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/commitment/commitment.d.ts +3 -3
- package/dist/web/commitment/commitment.js +3 -3
- package/dist/web/commitment/commitment.js.map +1 -1
- package/dist/web/networks.d.ts +3 -2
- package/dist/web/networks.js +10 -10
- package/dist/web/networks.js.map +1 -1
- package/dist/web/utils/mina.d.ts +1 -1
- package/dist/web/utils/mina.js +3 -1
- package/dist/web/utils/mina.js.map +1 -1
- package/package.json +4 -4
- package/src/commitment/commitment.ts +9 -9
- package/src/networks.ts +17 -10
- package/src/utils/mina.ts +5 -1
package/dist/web/utils/mina.d.ts
CHANGED
|
@@ -24,7 +24,7 @@ declare function getDeployer(): Mina.TestPublicKey | undefined;
|
|
|
24
24
|
* @param deployersNumber the number of deployers to use for the network (only for local and lightnet networks)
|
|
25
25
|
* @returns the Mina network instance
|
|
26
26
|
*/
|
|
27
|
-
declare function initBlockchain(instance: blockchain, deployersNumber?: number, proofsEnabled?: boolean): Promise<MinaNetworkInstance>;
|
|
27
|
+
declare function initBlockchain(instance: blockchain, deployersNumber?: number, proofsEnabled?: boolean, customMinaNodeUrl?: string | undefined, customMinaArchiveNodeUrl?: string | undefined): Promise<MinaNetworkInstance>;
|
|
28
28
|
/**
|
|
29
29
|
* Fetches the account balance for a given public key
|
|
30
30
|
* @param address the public key
|
package/dist/web/utils/mina.js
CHANGED
|
@@ -30,7 +30,7 @@ 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(instance, deployersNumber = 0, proofsEnabled = true) {
|
|
33
|
+
async function initBlockchain(instance, deployersNumber = 0, proofsEnabled = true, customMinaNodeUrl = undefined, customMinaArchiveNodeUrl = undefined) {
|
|
34
34
|
/*
|
|
35
35
|
if (instance === "mainnet") {
|
|
36
36
|
throw new Error("Mainnet is not supported yet by zkApps");
|
|
@@ -67,9 +67,11 @@ async function initBlockchain(instance, deployersNumber = 0, proofsEnabled = tru
|
|
|
67
67
|
const networkInstance = Mina.Network({
|
|
68
68
|
mina: process.env.MINA_NODE_URL ??
|
|
69
69
|
process.env.NEXT_PUBLIC_MINA_NODE_URL ??
|
|
70
|
+
customMinaNodeUrl ??
|
|
70
71
|
network.mina,
|
|
71
72
|
archive: process.env.MINA_ARCHIVE_NODE_URL ??
|
|
72
73
|
process.env.NEXT_PUBLIC_MINA_ARCHIVE_NODE_URL ??
|
|
74
|
+
customMinaArchiveNodeUrl ??
|
|
73
75
|
network.archive,
|
|
74
76
|
lightnetAccountManager: network.accountManager,
|
|
75
77
|
networkId: instance === "mainnet" ? "mainnet" : "testnet",
|
|
@@ -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,EAAE,QAAQ,EAA2B,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAgB1E,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,QAAoB,EACpB,kBAA0B,CAAC,EAC3B,gBAAyB,IAAI;
|
|
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,EAAE,QAAQ,EAA2B,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAgB1E,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,QAAoB,EACpB,kBAA0B,CAAC,EAC3B,gBAAyB,IAAI,EAC7B,oBAAwC,SAAS,EACjD,2BAA+C,SAAS;IAExD;;;;MAIE;IACF,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,OAAO,EAAE,CAAC;QACzB,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,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QACzD,uBAAuB,EAAE,QAAQ,KAAK,MAAM;KAC7C,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,UAAU,EAAE,CAAC;YAC5B,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,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@silvana-one/mina-utils",
|
|
3
3
|
"description": "Silvana Mina Utils",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.26",
|
|
5
5
|
"author": "DFST",
|
|
6
6
|
"bugs": "https://github.com/SilvanaOne/silvana-lib/issues",
|
|
7
7
|
"dependencies": {
|
|
@@ -10,12 +10,12 @@
|
|
|
10
10
|
"devDependencies": {
|
|
11
11
|
"@types/node": "^24.0.14",
|
|
12
12
|
"esbuild": "^0.25.6",
|
|
13
|
-
"o1js": "
|
|
13
|
+
"o1js": "2.4.0",
|
|
14
14
|
"ts-node": "^10.9.2",
|
|
15
15
|
"typescript": "^5.8.3"
|
|
16
16
|
},
|
|
17
17
|
"engines": {
|
|
18
|
-
"node": ">=
|
|
18
|
+
"node": ">=22.0.0"
|
|
19
19
|
},
|
|
20
20
|
"exports": {
|
|
21
21
|
"types": "./dist/node/index.d.ts",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"license": "Apache-2.0",
|
|
48
48
|
"main": "dist/web/index.js",
|
|
49
49
|
"peerDependencies": {
|
|
50
|
-
"o1js": "
|
|
50
|
+
"o1js": "2.4.0"
|
|
51
51
|
},
|
|
52
52
|
"publishConfig": {
|
|
53
53
|
"access": "public"
|
|
@@ -7,11 +7,11 @@ import { rScalarPowProvable } from "./exp.js";
|
|
|
7
7
|
// Example ZkProgram for commitment update
|
|
8
8
|
export const CommitmentProgram = ZkProgram({
|
|
9
9
|
name: "CommitmentUpdate",
|
|
10
|
-
publicOutput: Fr.
|
|
10
|
+
publicOutput: Fr.Canonical.provable,
|
|
11
11
|
methods: {
|
|
12
12
|
updateCommitment: {
|
|
13
13
|
privateInputs: [
|
|
14
|
-
Fr.
|
|
14
|
+
Fr.Canonical.provable, // oldTableCommitment
|
|
15
15
|
Fr.AlmostReduced.provable, // oldStructDigest
|
|
16
16
|
Fr.AlmostReduced.provable, // newStructDigest
|
|
17
17
|
UInt32, // index
|
|
@@ -82,17 +82,17 @@ export function blsCommitment(element: CanonicalElement): Field {
|
|
|
82
82
|
}
|
|
83
83
|
|
|
84
84
|
// inner: digest one struct
|
|
85
|
-
export function digestStruct(fields: CanonicalElement[]):
|
|
85
|
+
export function digestStruct(fields: CanonicalElement[]): CanonicalElement {
|
|
86
86
|
let d: AlmostReducedElement = Fr.from(0n).assertAlmostReduced();
|
|
87
87
|
for (const f of fields) {
|
|
88
88
|
const prod = d.mul(S); // returns Unreduced
|
|
89
89
|
d = prod.add(f).assertAlmostReduced(); // reduce for next iteration
|
|
90
90
|
}
|
|
91
|
-
return d;
|
|
91
|
+
return d.assertCanonical();
|
|
92
92
|
}
|
|
93
93
|
|
|
94
94
|
// outer: commit whole table (vector of digests)
|
|
95
|
-
export function commit(table:
|
|
95
|
+
export function commit(table: CanonicalElement[]): CanonicalElement {
|
|
96
96
|
let acc: AlmostReducedElement = Fr.from(0n).assertAlmostReduced();
|
|
97
97
|
const r = getR(); // Get R once, not in every iteration
|
|
98
98
|
|
|
@@ -101,7 +101,7 @@ export function commit(table: AlmostReducedElement[]): AlmostReducedElement {
|
|
|
101
101
|
const prod = acc.mul(r); // returns Unreduced
|
|
102
102
|
acc = prod.add(table[i]).assertAlmostReduced(); // reduce for next iteration
|
|
103
103
|
}
|
|
104
|
-
return acc;
|
|
104
|
+
return acc.assertCanonical();
|
|
105
105
|
}
|
|
106
106
|
|
|
107
107
|
// constant‑time single‑field update using struct digest recalculation (non-provable version)
|
|
@@ -128,11 +128,11 @@ export function commit(table: AlmostReducedElement[]): AlmostReducedElement {
|
|
|
128
128
|
|
|
129
129
|
// constant‑time single‑field update using struct digest recalculation (provable version)
|
|
130
130
|
export function update(
|
|
131
|
-
oldTableCommitment:
|
|
131
|
+
oldTableCommitment: CanonicalElement,
|
|
132
132
|
oldStructDigest: AlmostReducedElement,
|
|
133
133
|
newStructDigest: AlmostReducedElement,
|
|
134
134
|
index: UInt32
|
|
135
|
-
):
|
|
135
|
+
): CanonicalElement {
|
|
136
136
|
// The table commitment formula in commit() now produces:
|
|
137
137
|
// table[0]*R^0 + table[1]*R^1 + table[2]*R^2 + ... + table[i]*R^i
|
|
138
138
|
// So position i has coefficient R^i
|
|
@@ -145,5 +145,5 @@ export function update(
|
|
|
145
145
|
.sub(oldStructDigest)
|
|
146
146
|
.assertAlmostReduced();
|
|
147
147
|
const tableDelta = structDelta.mul(rPowI).assertAlmostReduced();
|
|
148
|
-
return oldTableCommitment.add(tableDelta).
|
|
148
|
+
return oldTableCommitment.add(tableDelta).assertCanonical();
|
|
149
149
|
}
|
package/src/networks.ts
CHANGED
|
@@ -5,6 +5,7 @@ export {
|
|
|
5
5
|
Mainnet,
|
|
6
6
|
Devnet,
|
|
7
7
|
Zeko,
|
|
8
|
+
ZekoAlphaNet,
|
|
8
9
|
Lightnet,
|
|
9
10
|
Local,
|
|
10
11
|
};
|
|
@@ -12,7 +13,13 @@ export {
|
|
|
12
13
|
/**
|
|
13
14
|
* blockchain is the type for the chain ID.
|
|
14
15
|
*/
|
|
15
|
-
type blockchain =
|
|
16
|
+
type blockchain =
|
|
17
|
+
| "local"
|
|
18
|
+
| "devnet"
|
|
19
|
+
| "lightnet"
|
|
20
|
+
| "mainnet"
|
|
21
|
+
| "zeko"
|
|
22
|
+
| "zeko:alphanet";
|
|
16
23
|
|
|
17
24
|
/**
|
|
18
25
|
* 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.
|
|
@@ -90,15 +97,15 @@ const Zeko: MinaNetwork = {
|
|
|
90
97
|
faucet: "https://zeko.io/faucet",
|
|
91
98
|
};
|
|
92
99
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
100
|
+
const ZekoAlphaNet: MinaNetwork = {
|
|
101
|
+
mina: ["http://m1.zeko.io/graphql"],
|
|
102
|
+
archive: ["http://m1.zeko.io/graphql"],
|
|
103
|
+
explorerAccountUrl: "",
|
|
104
|
+
explorerTransactionUrl: "",
|
|
105
|
+
chainId: "zeko:alphanet",
|
|
106
|
+
name: "Zeko AlphaNet",
|
|
107
|
+
faucet: "",
|
|
108
|
+
};
|
|
102
109
|
|
|
103
110
|
const Lightnet: MinaNetwork = {
|
|
104
111
|
mina: ["http://localhost:8080/graphql"],
|
package/src/utils/mina.ts
CHANGED
|
@@ -70,7 +70,9 @@ function getDeployer(): Mina.TestPublicKey | undefined {
|
|
|
70
70
|
async function initBlockchain(
|
|
71
71
|
instance: blockchain,
|
|
72
72
|
deployersNumber: number = 0,
|
|
73
|
-
proofsEnabled: boolean = true
|
|
73
|
+
proofsEnabled: boolean = true,
|
|
74
|
+
customMinaNodeUrl: string | undefined = undefined,
|
|
75
|
+
customMinaArchiveNodeUrl: string | undefined = undefined
|
|
74
76
|
): Promise<MinaNetworkInstance> {
|
|
75
77
|
/*
|
|
76
78
|
if (instance === "mainnet") {
|
|
@@ -113,10 +115,12 @@ async function initBlockchain(
|
|
|
113
115
|
mina:
|
|
114
116
|
process.env.MINA_NODE_URL ??
|
|
115
117
|
process.env.NEXT_PUBLIC_MINA_NODE_URL ??
|
|
118
|
+
customMinaNodeUrl ??
|
|
116
119
|
network.mina,
|
|
117
120
|
archive:
|
|
118
121
|
process.env.MINA_ARCHIVE_NODE_URL ??
|
|
119
122
|
process.env.NEXT_PUBLIC_MINA_ARCHIVE_NODE_URL ??
|
|
123
|
+
customMinaArchiveNodeUrl ??
|
|
120
124
|
network.archive,
|
|
121
125
|
lightnetAccountManager: network.accountManager,
|
|
122
126
|
networkId: instance === "mainnet" ? "mainnet" : "testnet",
|