@totemsdk/omnia-vtxo 0.5.3 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/anchor.js +4 -3
- package/dist/cjs/anchor.js +3 -2
- package/dist/cjs/exit-tx.js +1 -1
- package/dist/cjs/pool-script.d.ts +7 -3
- package/dist/cjs/pool-script.js +19 -14
- package/dist/exit-tx.js +2 -2
- package/dist/pool-script.d.ts +7 -3
- package/dist/pool-script.js +20 -15
- package/package.json +5 -5
package/dist/anchor.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* real PoW.
|
|
9
9
|
*/
|
|
10
10
|
import { computeOmniaTxDigest, omniaDraftToMinimaBytes, } from '@totemsdk/omnia';
|
|
11
|
-
import { serializeTxBody, mineTxPoW,
|
|
11
|
+
import { serializeTxBody, mineTxPoW, resolveTxPowTarget } from '@totemsdk/txpow';
|
|
12
12
|
import { concatBytes } from '@totemsdk/core';
|
|
13
13
|
import { buildAndHashPoolScript, POOL_SHARE_PORT_BASE } from './pool-script.js';
|
|
14
14
|
/** Pool output state: STATE(100)=root, STATE(101)=epoch, STATE(102)=exitBlock, STATE(300+k)=share k. */
|
|
@@ -75,8 +75,9 @@ export async function anchorBatch(params, deps) {
|
|
|
75
75
|
if (deps.chainProvider) {
|
|
76
76
|
const mine = deps.mine ?? ((txBody, difficulty) => mineTxPoW(txBody, difficulty));
|
|
77
77
|
const draftBytes = omniaDraftToMinimaBytes(draft);
|
|
78
|
-
const
|
|
79
|
-
const
|
|
78
|
+
const txnDifficulty = await resolveTxPowTarget(deps.chainProvider);
|
|
79
|
+
const txBody = serializeTxBody(draftBytes, signature, { txnDifficulty });
|
|
80
|
+
const mined = await mine(txBody, txnDifficulty);
|
|
80
81
|
const fullTxPoW = concatBytes(concatBytes(mined.minedHeaderBytes, new Uint8Array([0x01])), txBody);
|
|
81
82
|
await deps.chainProvider.broadcastTxPoW(Buffer.from(fullTxPoW).toString('hex'));
|
|
82
83
|
result.txpowId = Buffer.from(mined.txpowId).toString('hex');
|
package/dist/cjs/anchor.js
CHANGED
|
@@ -82,8 +82,9 @@ async function anchorBatch(params, deps) {
|
|
|
82
82
|
if (deps.chainProvider) {
|
|
83
83
|
const mine = deps.mine ?? ((txBody, difficulty) => (0, txpow_1.mineTxPoW)(txBody, difficulty));
|
|
84
84
|
const draftBytes = (0, omnia_1.omniaDraftToMinimaBytes)(draft);
|
|
85
|
-
const
|
|
86
|
-
const
|
|
85
|
+
const txnDifficulty = await (0, txpow_1.resolveTxPowTarget)(deps.chainProvider);
|
|
86
|
+
const txBody = (0, txpow_1.serializeTxBody)(draftBytes, signature, { txnDifficulty });
|
|
87
|
+
const mined = await mine(txBody, txnDifficulty);
|
|
87
88
|
const fullTxPoW = (0, core_1.concatBytes)((0, core_1.concatBytes)(mined.minedHeaderBytes, new Uint8Array([0x01])), txBody);
|
|
88
89
|
await deps.chainProvider.broadcastTxPoW(Buffer.from(fullTxPoW).toString('hex'));
|
|
89
90
|
result.txpowId = Buffer.from(mined.txpowId).toString('hex');
|
package/dist/cjs/exit-tx.js
CHANGED
|
@@ -32,7 +32,7 @@ function buildExitTransactionDraft(params) {
|
|
|
32
32
|
if (share <= 0n)
|
|
33
33
|
throw new Error('exit: holder share must be positive');
|
|
34
34
|
const outputs = [{
|
|
35
|
-
address: params.vtxo.owner,
|
|
35
|
+
address: (0, core_1.wotsAddressData)(params.vtxo.owner),
|
|
36
36
|
amount: share,
|
|
37
37
|
tokenId: params.vtxo.tokenId,
|
|
38
38
|
storeState: false,
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* (`STATE(base+k) EQ 0`) and returning the remainder to the pool. A holder
|
|
14
14
|
* cannot pay itself more than its share, so one holder can never rug the others.
|
|
15
15
|
* - **Cooperative update.** Before the exit window the pool may only move by
|
|
16
|
-
* `MULTISIG(operator + all holders)`, epoch-monotone (`ASSERT
|
|
16
|
+
* `MULTISIG(operator + all holders)`, epoch-monotone (`ASSERT epoch GT
|
|
17
17
|
* PREVSTATE(101)`), with the exit block immutable (`ASSERT SAMESTATE(102
|
|
18
18
|
* 102)`) so no one can push the escape clock, and value confined to the same
|
|
19
19
|
* script address (`ASSERT VERIFYOUT(@INPUT @ADDRESS @AMOUNT @TOKENID TRUE)`)
|
|
@@ -28,8 +28,12 @@
|
|
|
28
28
|
* See RFC-048 §12 / RFC-049 §5.
|
|
29
29
|
*/
|
|
30
30
|
export declare const POOL_SHARE_PORT_BASE = 128;
|
|
31
|
-
/** Lowest port reserved for MSHS-2 (MASH); Omnia ports MUST stay below this.
|
|
32
|
-
|
|
31
|
+
/** Lowest port reserved for MSHS-2 (MASH); Omnia ports MUST stay below this.
|
|
32
|
+
* The node installs the MASH authorization bundle at ports **230–255**
|
|
33
|
+
* (`bundleBase = 256 − (4 + k) = 230`): the header R / ROOTS_BLOB /
|
|
34
|
+
* SECRETS_BLOB / TREE_SIG at 230–233 and PROOF at 234–255. A composite
|
|
35
|
+
* MASH + Omnia coin must therefore keep Omnia ports ≤ 229. */
|
|
36
|
+
export declare const MSHS_PORT_FLOOR = 230;
|
|
33
37
|
/** Maximum holders whose share ports remain below the MSHS floor. */
|
|
34
38
|
export declare const POOL_MAX_HOLDERS: number;
|
|
35
39
|
export interface PoolScriptParams {
|
package/dist/cjs/pool-script.js
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* (`STATE(base+k) EQ 0`) and returning the remainder to the pool. A holder
|
|
15
15
|
* cannot pay itself more than its share, so one holder can never rug the others.
|
|
16
16
|
* - **Cooperative update.** Before the exit window the pool may only move by
|
|
17
|
-
* `MULTISIG(operator + all holders)`, epoch-monotone (`ASSERT
|
|
17
|
+
* `MULTISIG(operator + all holders)`, epoch-monotone (`ASSERT epoch GT
|
|
18
18
|
* PREVSTATE(101)`), with the exit block immutable (`ASSERT SAMESTATE(102
|
|
19
19
|
* 102)`) so no one can push the escape clock, and value confined to the same
|
|
20
20
|
* script address (`ASSERT VERIFYOUT(@INPUT @ADDRESS @AMOUNT @TOKENID TRUE)`)
|
|
@@ -35,8 +35,12 @@ const core_1 = require("@totemsdk/core");
|
|
|
35
35
|
* See RFC-048 §12 / RFC-049 §5.
|
|
36
36
|
*/
|
|
37
37
|
exports.POOL_SHARE_PORT_BASE = 128;
|
|
38
|
-
/** Lowest port reserved for MSHS-2 (MASH); Omnia ports MUST stay below this.
|
|
39
|
-
|
|
38
|
+
/** Lowest port reserved for MSHS-2 (MASH); Omnia ports MUST stay below this.
|
|
39
|
+
* The node installs the MASH authorization bundle at ports **230–255**
|
|
40
|
+
* (`bundleBase = 256 − (4 + k) = 230`): the header R / ROOTS_BLOB /
|
|
41
|
+
* SECRETS_BLOB / TREE_SIG at 230–233 and PROOF at 234–255. A composite
|
|
42
|
+
* MASH + Omnia coin must therefore keep Omnia ports ≤ 229. */
|
|
43
|
+
exports.MSHS_PORT_FLOOR = 230;
|
|
40
44
|
/** Maximum holders whose share ports remain below the MSHS floor. */
|
|
41
45
|
exports.POOL_MAX_HOLDERS = exports.MSHS_PORT_FLOOR - exports.POOL_SHARE_PORT_BASE;
|
|
42
46
|
function pkHex(digest, label) {
|
|
@@ -44,7 +48,7 @@ function pkHex(digest, label) {
|
|
|
44
48
|
if (!/^[0-9a-fA-F]{64}$/.test(raw)) {
|
|
45
49
|
throw new Error(`${label} public key digest must be 64 hex chars, got ${JSON.stringify(digest)}`);
|
|
46
50
|
}
|
|
47
|
-
return '
|
|
51
|
+
return '0x' + raw.toUpperCase();
|
|
48
52
|
}
|
|
49
53
|
/** Per-share-constrained, epoch-monotone, state-carrying pool script. */
|
|
50
54
|
function buildPoolScript(params) {
|
|
@@ -56,20 +60,21 @@ function buildPoolScript(params) {
|
|
|
56
60
|
throw new Error(`pool supports at most ${exports.POOL_MAX_HOLDERS} holders (got ${params.holders.length}) — share ports would reach the MSHS-2 band (≥${exports.MSHS_PORT_FLOOR})`);
|
|
57
61
|
}
|
|
58
62
|
const holders = params.holders.map((h, i) => pkHex(h, `holder[${i}]`));
|
|
63
|
+
const holderAddrs = params.holders.map((h) => (0, core_1.wotsAddressData)(h));
|
|
59
64
|
if (!Number.isInteger(params.exitBlock) || params.exitBlock < 0) {
|
|
60
65
|
throw new Error(`exitBlock must be a non-negative integer, got ${JSON.stringify(params.exitBlock)}`);
|
|
61
66
|
}
|
|
62
67
|
const lines = [
|
|
63
|
-
'LET
|
|
64
|
-
'LET
|
|
65
|
-
'IF @BLOCK GT
|
|
68
|
+
'LET epoch=STATE(101)',
|
|
69
|
+
'LET exitblock=PREVSTATE(102)',
|
|
70
|
+
'IF @BLOCK GT exitblock THEN',
|
|
66
71
|
];
|
|
67
72
|
holders.forEach((holder, k) => {
|
|
68
73
|
const port = exports.POOL_SHARE_PORT_BASE + k;
|
|
69
|
-
lines.push(` LET
|
|
74
|
+
lines.push(` LET share=PREVSTATE(${port})`);
|
|
70
75
|
lines.push(` IF SIGNEDBY(${holder}) THEN`);
|
|
71
|
-
lines.push(` IF
|
|
72
|
-
lines.push(` ASSERT VERIFYOUT(0 ${
|
|
76
|
+
lines.push(` IF share GT 0 THEN`);
|
|
77
|
+
lines.push(` ASSERT VERIFYOUT(0 ${holderAddrs[k]} share @TOKENID FALSE)`);
|
|
73
78
|
for (let j = 0; j < holders.length; j++) {
|
|
74
79
|
if (j === k)
|
|
75
80
|
continue;
|
|
@@ -78,19 +83,19 @@ function buildPoolScript(params) {
|
|
|
78
83
|
lines.push(` ASSERT STATE(${port}) EQ 0`);
|
|
79
84
|
// Remainder (other holders' shares) stays in the pool; skip it when the
|
|
80
85
|
// withdrawing holder's share is the whole pool (no room for another output).
|
|
81
|
-
lines.push(` IF @AMOUNT GT
|
|
82
|
-
lines.push(` RETURN VERIFYOUT(1 @ADDRESS @AMOUNT
|
|
86
|
+
lines.push(` IF @AMOUNT GT share THEN`);
|
|
87
|
+
lines.push(` RETURN VERIFYOUT(1 @ADDRESS @AMOUNT - share @TOKENID TRUE)`);
|
|
83
88
|
lines.push(' ENDIF');
|
|
84
89
|
lines.push(' RETURN TRUE');
|
|
85
90
|
lines.push(' ENDIF');
|
|
86
91
|
lines.push(' ENDIF');
|
|
87
92
|
});
|
|
88
93
|
lines.push('ENDIF');
|
|
89
|
-
lines.push('ASSERT
|
|
94
|
+
lines.push('ASSERT epoch GT PREVSTATE(101)');
|
|
90
95
|
lines.push('ASSERT SAMESTATE(102 102)');
|
|
91
96
|
lines.push('ASSERT VERIFYOUT(@INPUT @ADDRESS @AMOUNT @TOKENID TRUE)');
|
|
92
97
|
lines.push(`RETURN MULTISIG(${holders.length + 1} ${operator} ${holders.join(' ')})`);
|
|
93
|
-
return lines.join('\n');
|
|
98
|
+
return (0, core_1.toNodeScript)(lines.join('\n'));
|
|
94
99
|
}
|
|
95
100
|
function poolScriptAddress(script) {
|
|
96
101
|
return (0, core_1.computeScriptAddress)(script);
|
package/dist/exit-tx.js
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import { computeOmniaTxDigest, omniaDraftToMinimaBytes, serializeTxDraft, } from '@totemsdk/omnia';
|
|
15
15
|
import { serializeTxBody, mineTxPoW, TX_POW_MIN_DIFFICULTY } from '@totemsdk/txpow';
|
|
16
|
-
import { concatBytes } from '@totemsdk/core';
|
|
16
|
+
import { concatBytes, wotsAddressData } from '@totemsdk/core';
|
|
17
17
|
import { poolStateVariables } from './anchor.js';
|
|
18
18
|
/** State port carrying an optional exit delay on the holder's output. */
|
|
19
19
|
export const EXIT_DELAY_PORT = 110;
|
|
@@ -25,7 +25,7 @@ export function buildExitTransactionDraft(params) {
|
|
|
25
25
|
if (share <= 0n)
|
|
26
26
|
throw new Error('exit: holder share must be positive');
|
|
27
27
|
const outputs = [{
|
|
28
|
-
address: params.vtxo.owner,
|
|
28
|
+
address: wotsAddressData(params.vtxo.owner),
|
|
29
29
|
amount: share,
|
|
30
30
|
tokenId: params.vtxo.tokenId,
|
|
31
31
|
storeState: false,
|
package/dist/pool-script.d.ts
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* (`STATE(base+k) EQ 0`) and returning the remainder to the pool. A holder
|
|
14
14
|
* cannot pay itself more than its share, so one holder can never rug the others.
|
|
15
15
|
* - **Cooperative update.** Before the exit window the pool may only move by
|
|
16
|
-
* `MULTISIG(operator + all holders)`, epoch-monotone (`ASSERT
|
|
16
|
+
* `MULTISIG(operator + all holders)`, epoch-monotone (`ASSERT epoch GT
|
|
17
17
|
* PREVSTATE(101)`), with the exit block immutable (`ASSERT SAMESTATE(102
|
|
18
18
|
* 102)`) so no one can push the escape clock, and value confined to the same
|
|
19
19
|
* script address (`ASSERT VERIFYOUT(@INPUT @ADDRESS @AMOUNT @TOKENID TRUE)`)
|
|
@@ -28,8 +28,12 @@
|
|
|
28
28
|
* See RFC-048 §12 / RFC-049 §5.
|
|
29
29
|
*/
|
|
30
30
|
export declare const POOL_SHARE_PORT_BASE = 128;
|
|
31
|
-
/** Lowest port reserved for MSHS-2 (MASH); Omnia ports MUST stay below this.
|
|
32
|
-
|
|
31
|
+
/** Lowest port reserved for MSHS-2 (MASH); Omnia ports MUST stay below this.
|
|
32
|
+
* The node installs the MASH authorization bundle at ports **230–255**
|
|
33
|
+
* (`bundleBase = 256 − (4 + k) = 230`): the header R / ROOTS_BLOB /
|
|
34
|
+
* SECRETS_BLOB / TREE_SIG at 230–233 and PROOF at 234–255. A composite
|
|
35
|
+
* MASH + Omnia coin must therefore keep Omnia ports ≤ 229. */
|
|
36
|
+
export declare const MSHS_PORT_FLOOR = 230;
|
|
33
37
|
/** Maximum holders whose share ports remain below the MSHS floor. */
|
|
34
38
|
export declare const POOL_MAX_HOLDERS: number;
|
|
35
39
|
export interface PoolScriptParams {
|
package/dist/pool-script.js
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* (`STATE(base+k) EQ 0`) and returning the remainder to the pool. A holder
|
|
14
14
|
* cannot pay itself more than its share, so one holder can never rug the others.
|
|
15
15
|
* - **Cooperative update.** Before the exit window the pool may only move by
|
|
16
|
-
* `MULTISIG(operator + all holders)`, epoch-monotone (`ASSERT
|
|
16
|
+
* `MULTISIG(operator + all holders)`, epoch-monotone (`ASSERT epoch GT
|
|
17
17
|
* PREVSTATE(101)`), with the exit block immutable (`ASSERT SAMESTATE(102
|
|
18
18
|
* 102)`) so no one can push the escape clock, and value confined to the same
|
|
19
19
|
* script address (`ASSERT VERIFYOUT(@INPUT @ADDRESS @AMOUNT @TOKENID TRUE)`)
|
|
@@ -22,15 +22,19 @@
|
|
|
22
22
|
* The operator holds no unilateral path: it cannot move funds, cannot advance the
|
|
23
23
|
* exit block, and cannot stop a holder's exit. It is a liveness-only peer.
|
|
24
24
|
*/
|
|
25
|
-
import { computeScriptAddress } from '@totemsdk/core';
|
|
25
|
+
import { computeScriptAddress, toNodeScript, wotsAddressData } from '@totemsdk/core';
|
|
26
26
|
/**
|
|
27
27
|
* State port base for per-holder shares: holder k ⇒ `base + k`. Kept below the
|
|
28
28
|
* MSHS-2 floor so Omnia ports never collide with MASH (ports are bytes, 0–255).
|
|
29
29
|
* See RFC-048 §12 / RFC-049 §5.
|
|
30
30
|
*/
|
|
31
31
|
export const POOL_SHARE_PORT_BASE = 128;
|
|
32
|
-
/** Lowest port reserved for MSHS-2 (MASH); Omnia ports MUST stay below this.
|
|
33
|
-
|
|
32
|
+
/** Lowest port reserved for MSHS-2 (MASH); Omnia ports MUST stay below this.
|
|
33
|
+
* The node installs the MASH authorization bundle at ports **230–255**
|
|
34
|
+
* (`bundleBase = 256 − (4 + k) = 230`): the header R / ROOTS_BLOB /
|
|
35
|
+
* SECRETS_BLOB / TREE_SIG at 230–233 and PROOF at 234–255. A composite
|
|
36
|
+
* MASH + Omnia coin must therefore keep Omnia ports ≤ 229. */
|
|
37
|
+
export const MSHS_PORT_FLOOR = 230;
|
|
34
38
|
/** Maximum holders whose share ports remain below the MSHS floor. */
|
|
35
39
|
export const POOL_MAX_HOLDERS = MSHS_PORT_FLOOR - POOL_SHARE_PORT_BASE;
|
|
36
40
|
function pkHex(digest, label) {
|
|
@@ -38,7 +42,7 @@ function pkHex(digest, label) {
|
|
|
38
42
|
if (!/^[0-9a-fA-F]{64}$/.test(raw)) {
|
|
39
43
|
throw new Error(`${label} public key digest must be 64 hex chars, got ${JSON.stringify(digest)}`);
|
|
40
44
|
}
|
|
41
|
-
return '
|
|
45
|
+
return '0x' + raw.toUpperCase();
|
|
42
46
|
}
|
|
43
47
|
/** Per-share-constrained, epoch-monotone, state-carrying pool script. */
|
|
44
48
|
export function buildPoolScript(params) {
|
|
@@ -50,20 +54,21 @@ export function buildPoolScript(params) {
|
|
|
50
54
|
throw new Error(`pool supports at most ${POOL_MAX_HOLDERS} holders (got ${params.holders.length}) — share ports would reach the MSHS-2 band (≥${MSHS_PORT_FLOOR})`);
|
|
51
55
|
}
|
|
52
56
|
const holders = params.holders.map((h, i) => pkHex(h, `holder[${i}]`));
|
|
57
|
+
const holderAddrs = params.holders.map((h) => wotsAddressData(h));
|
|
53
58
|
if (!Number.isInteger(params.exitBlock) || params.exitBlock < 0) {
|
|
54
59
|
throw new Error(`exitBlock must be a non-negative integer, got ${JSON.stringify(params.exitBlock)}`);
|
|
55
60
|
}
|
|
56
61
|
const lines = [
|
|
57
|
-
'LET
|
|
58
|
-
'LET
|
|
59
|
-
'IF @BLOCK GT
|
|
62
|
+
'LET epoch=STATE(101)',
|
|
63
|
+
'LET exitblock=PREVSTATE(102)',
|
|
64
|
+
'IF @BLOCK GT exitblock THEN',
|
|
60
65
|
];
|
|
61
66
|
holders.forEach((holder, k) => {
|
|
62
67
|
const port = POOL_SHARE_PORT_BASE + k;
|
|
63
|
-
lines.push(` LET
|
|
68
|
+
lines.push(` LET share=PREVSTATE(${port})`);
|
|
64
69
|
lines.push(` IF SIGNEDBY(${holder}) THEN`);
|
|
65
|
-
lines.push(` IF
|
|
66
|
-
lines.push(` ASSERT VERIFYOUT(0 ${
|
|
70
|
+
lines.push(` IF share GT 0 THEN`);
|
|
71
|
+
lines.push(` ASSERT VERIFYOUT(0 ${holderAddrs[k]} share @TOKENID FALSE)`);
|
|
67
72
|
for (let j = 0; j < holders.length; j++) {
|
|
68
73
|
if (j === k)
|
|
69
74
|
continue;
|
|
@@ -72,19 +77,19 @@ export function buildPoolScript(params) {
|
|
|
72
77
|
lines.push(` ASSERT STATE(${port}) EQ 0`);
|
|
73
78
|
// Remainder (other holders' shares) stays in the pool; skip it when the
|
|
74
79
|
// withdrawing holder's share is the whole pool (no room for another output).
|
|
75
|
-
lines.push(` IF @AMOUNT GT
|
|
76
|
-
lines.push(` RETURN VERIFYOUT(1 @ADDRESS @AMOUNT
|
|
80
|
+
lines.push(` IF @AMOUNT GT share THEN`);
|
|
81
|
+
lines.push(` RETURN VERIFYOUT(1 @ADDRESS @AMOUNT - share @TOKENID TRUE)`);
|
|
77
82
|
lines.push(' ENDIF');
|
|
78
83
|
lines.push(' RETURN TRUE');
|
|
79
84
|
lines.push(' ENDIF');
|
|
80
85
|
lines.push(' ENDIF');
|
|
81
86
|
});
|
|
82
87
|
lines.push('ENDIF');
|
|
83
|
-
lines.push('ASSERT
|
|
88
|
+
lines.push('ASSERT epoch GT PREVSTATE(101)');
|
|
84
89
|
lines.push('ASSERT SAMESTATE(102 102)');
|
|
85
90
|
lines.push('ASSERT VERIFYOUT(@INPUT @ADDRESS @AMOUNT @TOKENID TRUE)');
|
|
86
91
|
lines.push(`RETURN MULTISIG(${holders.length + 1} ${operator} ${holders.join(' ')})`);
|
|
87
|
-
return lines.join('\n');
|
|
92
|
+
return toNodeScript(lines.join('\n'));
|
|
88
93
|
}
|
|
89
94
|
export function poolScriptAddress(script) {
|
|
90
95
|
return computeScriptAddress(script);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@totemsdk/omnia-vtxo",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Virtual UTXO / payment-pool claim layer for Omnia — cash-like off-chain balance primitive for Totem Edge",
|
|
5
5
|
"main": "dist/cjs/index.js",
|
|
6
6
|
"types": "dist/cjs/index.d.ts",
|
|
@@ -24,11 +24,11 @@
|
|
|
24
24
|
"LICENSE"
|
|
25
25
|
],
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@totemsdk/chain-provider": "^0.
|
|
28
|
-
"@totemsdk/
|
|
27
|
+
"@totemsdk/chain-provider": "^0.3.0",
|
|
28
|
+
"@totemsdk/core": "^1.4.0",
|
|
29
|
+
"@totemsdk/txpow": "^1.1.0",
|
|
29
30
|
"@totemsdk/storage": "^0.1.0",
|
|
30
|
-
"@totemsdk/
|
|
31
|
-
"@totemsdk/core": "^1.3.0",
|
|
31
|
+
"@totemsdk/omnia": "^2.2.0",
|
|
32
32
|
"@totemsdk/wots-lease": "^1.0.1"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|