@acala-network/chopsticks 0.5.3 → 0.5.5
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/lib/api.js +1 -5
- package/lib/blockchain/block-builder.js +36 -43
- package/lib/blockchain/block.js +24 -28
- package/lib/blockchain/head-state.js +9 -14
- package/lib/blockchain/index.js +24 -28
- package/lib/blockchain/inherent/index.js +11 -20
- package/lib/blockchain/inherent/para-enter.js +3 -7
- package/lib/blockchain/inherent/parachain/babe-randomness.js +3 -7
- package/lib/blockchain/inherent/parachain/nimbus-author-inherent.js +3 -7
- package/lib/blockchain/inherent/parachain/validation-data.js +26 -33
- package/lib/blockchain/storage-layer.js +8 -16
- package/lib/blockchain/txpool.js +13 -20
- package/lib/cli.js +30 -35
- package/lib/db/entities.js +6 -9
- package/lib/db/index.js +5 -32
- package/lib/dry-run-preimage.js +23 -27
- package/lib/dry-run.js +12 -16
- package/lib/executor.js +24 -36
- package/lib/genesis-provider.js +17 -24
- package/lib/index.js +7 -31
- package/lib/logger.js +3 -10
- package/lib/rpc/dev/dry-run.js +21 -28
- package/lib/rpc/dev/index.js +14 -16
- package/lib/rpc/index.js +9 -16
- package/lib/rpc/shared.js +3 -7
- package/lib/rpc/substrate/author.js +8 -10
- package/lib/rpc/substrate/chain.js +5 -7
- package/lib/rpc/substrate/index.js +11 -16
- package/lib/rpc/substrate/payment.js +7 -9
- package/lib/rpc/substrate/state.js +5 -7
- package/lib/rpc/substrate/system.js +6 -11
- package/lib/run-block.js +12 -16
- package/lib/schema/index.js +22 -25
- package/lib/server.js +8 -35
- package/lib/setup-with-server.js +8 -12
- package/lib/setup.js +26 -30
- package/lib/utils/decoder.js +16 -25
- package/lib/utils/generate-html-diff.js +12 -20
- package/lib/utils/import-storage.js +11 -19
- package/lib/utils/index.js +10 -19
- package/lib/utils/open-html.js +3 -7
- package/lib/utils/proof.js +9 -17
- package/lib/utils/set-storage.js +10 -14
- package/lib/utils/time-travel.js +21 -28
- package/lib/xcm/downward.js +11 -15
- package/lib/xcm/horizontal.js +7 -11
- package/lib/xcm/index.js +14 -19
- package/lib/xcm/upward.js +6 -10
- package/package.json +2 -2
package/lib/utils/proof.js
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const util_1 = require("@polkadot/util");
|
|
5
|
-
const util_crypto_1 = require("@polkadot/util-crypto");
|
|
6
|
-
exports.WELL_KNOWN_KEYS = {
|
|
1
|
+
import { hexToU8a, u8aConcat, u8aToHex } from '@polkadot/util';
|
|
2
|
+
import { xxhashAsU8a } from '@polkadot/util-crypto';
|
|
3
|
+
export const WELL_KNOWN_KEYS = {
|
|
7
4
|
EPOCH_INDEX: '0x1cb6f36e027abb2091cfb5110ab5087f38316cbf8fa0da822a20ac1c55bf1be3',
|
|
8
5
|
CURRENT_BLOCK_RANDOMNESS: '0x1cb6f36e027abb2091cfb5110ab5087fd077dfdb8adb10f78f10a5df8742c545',
|
|
9
6
|
ONE_EPOCH_AGO_RANDOMNESS: '0x1cb6f36e027abb2091cfb5110ab5087f7ce678799d3eff024253b90e84927cc6',
|
|
@@ -12,30 +9,25 @@ exports.WELL_KNOWN_KEYS = {
|
|
|
12
9
|
ACTIVE_CONFIG: '0x06de3d8a54d27e44a9d5ce189618f22db4b49d95320d9021994c850f25b8e385',
|
|
13
10
|
};
|
|
14
11
|
const hash = (prefix, suffix) => {
|
|
15
|
-
return
|
|
12
|
+
return u8aToHex(u8aConcat(hexToU8a(prefix), xxhashAsU8a(suffix, 64), suffix));
|
|
16
13
|
};
|
|
17
|
-
const dmqMqcHead = (paraId) => {
|
|
14
|
+
export const dmqMqcHead = (paraId) => {
|
|
18
15
|
const prefix = '0x63f78c98723ddc9073523ef3beefda0c4d7fefc408aac59dbfe80a72ac8e3ce5';
|
|
19
16
|
return hash(prefix, paraId.toU8a());
|
|
20
17
|
};
|
|
21
|
-
|
|
22
|
-
const upgradeGoAheadSignal = (paraId) => {
|
|
18
|
+
export const upgradeGoAheadSignal = (paraId) => {
|
|
23
19
|
const prefix = '0xcd710b30bd2eab0352ddcc26417aa1949e94c040f5e73d9b7addd6cb603d15d3';
|
|
24
20
|
return hash(prefix, paraId.toU8a());
|
|
25
21
|
};
|
|
26
|
-
|
|
27
|
-
const hrmpIngressChannelIndex = (paraId) => {
|
|
22
|
+
export const hrmpIngressChannelIndex = (paraId) => {
|
|
28
23
|
const prefix = '0x6a0da05ca59913bc38a8630590f2627c1d3719f5b0b12c7105c073c507445948';
|
|
29
24
|
return hash(prefix, paraId.toU8a());
|
|
30
25
|
};
|
|
31
|
-
|
|
32
|
-
const hrmpEgressChannelIndex = (paraId) => {
|
|
26
|
+
export const hrmpEgressChannelIndex = (paraId) => {
|
|
33
27
|
const prefix = '0x6a0da05ca59913bc38a8630590f2627cf12b746dcf32e843354583c9702cc020';
|
|
34
28
|
return hash(prefix, paraId.toU8a());
|
|
35
29
|
};
|
|
36
|
-
|
|
37
|
-
const hrmpChannels = (channelId) => {
|
|
30
|
+
export const hrmpChannels = (channelId) => {
|
|
38
31
|
const prefix = '0x6a0da05ca59913bc38a8630590f2627cb6604cff828a6e3f579ca6c59ace013d';
|
|
39
32
|
return hash(prefix, channelId.toU8a());
|
|
40
33
|
};
|
|
41
|
-
exports.hrmpChannels = hrmpChannels;
|
package/lib/utils/set-storage.js
CHANGED
|
@@ -1,39 +1,36 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const types_1 = require("@polkadot/types");
|
|
5
|
-
const string_1 = require("@polkadot/util/string");
|
|
6
|
-
const util_1 = require("@polkadot/util");
|
|
1
|
+
import { StorageKey } from '@polkadot/types';
|
|
2
|
+
import { stringCamelCase } from '@polkadot/util/string';
|
|
3
|
+
import { u8aToHex } from '@polkadot/util';
|
|
7
4
|
function objectToStorageItems(meta, storage) {
|
|
8
5
|
const storageItems = [];
|
|
9
6
|
for (const sectionName in storage) {
|
|
10
7
|
const section = storage[sectionName];
|
|
11
|
-
const pallet = meta.query[
|
|
8
|
+
const pallet = meta.query[stringCamelCase(sectionName)];
|
|
12
9
|
if (!pallet)
|
|
13
10
|
throw Error(`Cannot find pallet ${sectionName}`);
|
|
14
11
|
for (const storageName in section) {
|
|
15
12
|
const storage = section[storageName];
|
|
16
13
|
if (storageName === '$removePrefix') {
|
|
17
14
|
for (const mapName of storage) {
|
|
18
|
-
const storageEntry = pallet[
|
|
15
|
+
const storageEntry = pallet[stringCamelCase(mapName)];
|
|
19
16
|
if (!storageEntry)
|
|
20
17
|
throw Error(`Cannot find storage ${mapName} in pallet ${sectionName}`);
|
|
21
18
|
const prefix = storageEntry.keyPrefix();
|
|
22
|
-
storageItems.push([
|
|
19
|
+
storageItems.push([u8aToHex(prefix), "DeletedPrefix" /* StorageValueKind.DeletedPrefix */]);
|
|
23
20
|
}
|
|
24
21
|
continue;
|
|
25
22
|
}
|
|
26
|
-
const storageEntry = pallet[
|
|
23
|
+
const storageEntry = pallet[stringCamelCase(storageName)];
|
|
27
24
|
if (!storageEntry)
|
|
28
25
|
throw Error(`Cannot find storage ${storageName} in pallet ${sectionName}`);
|
|
29
26
|
if (storageEntry.meta.type.isPlain) {
|
|
30
|
-
const key = new
|
|
27
|
+
const key = new StorageKey(meta.registry, [storageEntry]);
|
|
31
28
|
const type = storageEntry.meta.modifier.isOptional ? `Option<${key.outputType}>` : key.outputType;
|
|
32
29
|
storageItems.push([key.toHex(), storage ? meta.registry.createType(type, storage).toHex() : null]);
|
|
33
30
|
}
|
|
34
31
|
else {
|
|
35
32
|
for (const [keys, value] of storage) {
|
|
36
|
-
const key = new
|
|
33
|
+
const key = new StorageKey(meta.registry, [storageEntry, keys]);
|
|
37
34
|
const type = storageEntry.meta.modifier.isOptional ? `Option<${key.outputType}>` : key.outputType;
|
|
38
35
|
storageItems.push([key.toHex(), value ? meta.registry.createType(type, value).toHex() : null]);
|
|
39
36
|
}
|
|
@@ -42,7 +39,7 @@ function objectToStorageItems(meta, storage) {
|
|
|
42
39
|
}
|
|
43
40
|
return storageItems;
|
|
44
41
|
}
|
|
45
|
-
const setStorage = async (chain, storage, blockHash) => {
|
|
42
|
+
export const setStorage = async (chain, storage, blockHash) => {
|
|
46
43
|
const block = await chain.getBlock(blockHash);
|
|
47
44
|
if (!block)
|
|
48
45
|
throw Error(`Cannot find block ${blockHash || 'latest'}`);
|
|
@@ -56,4 +53,3 @@ const setStorage = async (chain, storage, blockHash) => {
|
|
|
56
53
|
block.pushStorageLayer().setAll(storageItems);
|
|
57
54
|
return block.hash;
|
|
58
55
|
};
|
|
59
|
-
exports.setStorage = setStorage;
|
package/lib/utils/time-travel.js
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const
|
|
6
|
-
const executor_1 = require("../executor");
|
|
7
|
-
const set_storage_1 = require("./set-storage");
|
|
8
|
-
const getCurrentSlot = async (chain) => {
|
|
1
|
+
import { hexToU8a, u8aToHex } from '@polkadot/util';
|
|
2
|
+
import { compactHex } from '.';
|
|
3
|
+
import { getAuraSlotDuration } from '../executor';
|
|
4
|
+
import { setStorage } from './set-storage';
|
|
5
|
+
export const getCurrentSlot = async (chain) => {
|
|
9
6
|
const meta = await chain.head.meta;
|
|
10
7
|
// use raw key here because some chain did not expose those storage to metadata
|
|
11
8
|
const slotRaw = meta.consts.babe
|
|
@@ -13,53 +10,49 @@ const getCurrentSlot = async (chain) => {
|
|
|
13
10
|
: await chain.head.get('0x57f8dc2f5ab09467896f47300f04243806155b3cd9a8c9e5e9a23fd5dc13a5ed'); // aura.currentSlot
|
|
14
11
|
if (!slotRaw)
|
|
15
12
|
throw new Error('Cannot find current slot');
|
|
16
|
-
return meta.registry.createType('Slot',
|
|
13
|
+
return meta.registry.createType('Slot', hexToU8a(slotRaw)).toNumber();
|
|
17
14
|
};
|
|
18
|
-
|
|
19
|
-
const getCurrentTimestamp = async (chain) => {
|
|
15
|
+
export const getCurrentTimestamp = async (chain) => {
|
|
20
16
|
const meta = await chain.head.meta;
|
|
21
|
-
const currentTimestampRaw = (await chain.head.get(
|
|
22
|
-
return meta.registry.createType('u64',
|
|
17
|
+
const currentTimestampRaw = (await chain.head.get(compactHex(meta.query.timestamp.now()))) || '0x';
|
|
18
|
+
return meta.registry.createType('u64', hexToU8a(currentTimestampRaw)).toNumber();
|
|
23
19
|
};
|
|
24
|
-
|
|
25
|
-
const getSlotDuration = async (chain) => {
|
|
20
|
+
export const getSlotDuration = async (chain) => {
|
|
26
21
|
const meta = await chain.head.meta;
|
|
27
22
|
return meta.consts.babe
|
|
28
23
|
? meta.consts.babe.expectedBlockTime.toNumber()
|
|
29
24
|
: meta.query.aura
|
|
30
|
-
?
|
|
25
|
+
? getAuraSlotDuration(await chain.head.wasm, meta.registry)
|
|
31
26
|
: 12_000;
|
|
32
27
|
};
|
|
33
|
-
|
|
34
|
-
const timeTravel = async (chain, timestamp) => {
|
|
28
|
+
export const timeTravel = async (chain, timestamp) => {
|
|
35
29
|
const meta = await chain.head.meta;
|
|
36
|
-
const slotDuration = await
|
|
30
|
+
const slotDuration = await getSlotDuration(chain);
|
|
37
31
|
const newSlot = Math.floor(timestamp / slotDuration);
|
|
38
32
|
// new timestamp
|
|
39
33
|
const storage = [
|
|
40
|
-
[
|
|
34
|
+
[compactHex(meta.query.timestamp.now()), u8aToHex(meta.registry.createType('u64', timestamp).toU8a())],
|
|
41
35
|
];
|
|
42
36
|
if (meta.consts.babe) {
|
|
43
37
|
// new slot
|
|
44
38
|
storage.push([
|
|
45
|
-
|
|
46
|
-
|
|
39
|
+
compactHex(meta.query.babe.currentSlot()),
|
|
40
|
+
u8aToHex(meta.registry.createType('Slot', newSlot).toU8a()),
|
|
47
41
|
]);
|
|
48
42
|
// new epoch
|
|
49
43
|
const epochDuration = meta.consts.babe.epochDuration.toNumber();
|
|
50
44
|
const newEpoch = Math.floor(timestamp / epochDuration);
|
|
51
45
|
storage.push([
|
|
52
|
-
|
|
53
|
-
|
|
46
|
+
compactHex(meta.query.babe.epochIndex()),
|
|
47
|
+
u8aToHex(meta.registry.createType('u64', newEpoch).toU8a()),
|
|
54
48
|
]);
|
|
55
49
|
}
|
|
56
50
|
else if (meta.query.aura) {
|
|
57
51
|
// new slot
|
|
58
52
|
storage.push([
|
|
59
|
-
|
|
60
|
-
|
|
53
|
+
compactHex(meta.query.aura.currentSlot()),
|
|
54
|
+
u8aToHex(meta.registry.createType('Slot', newSlot).toU8a()),
|
|
61
55
|
]);
|
|
62
56
|
}
|
|
63
|
-
await
|
|
57
|
+
await setStorage(chain, storage);
|
|
64
58
|
};
|
|
65
|
-
exports.timeTravel = timeTravel;
|
package/lib/xcm/downward.js
CHANGED
|
@@ -1,29 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const
|
|
6
|
-
const _1 = require(".");
|
|
7
|
-
const set_storage_1 = require("../utils/set-storage");
|
|
8
|
-
const connectDownward = async (relaychain, parachain) => {
|
|
1
|
+
import { hexToU8a } from '@polkadot/util';
|
|
2
|
+
import { compactHex, getParaId } from '../utils';
|
|
3
|
+
import { logger } from '.';
|
|
4
|
+
import { setStorage } from '../utils/set-storage';
|
|
5
|
+
export const connectDownward = async (relaychain, parachain) => {
|
|
9
6
|
const meta = await relaychain.head.meta;
|
|
10
|
-
const paraId = await
|
|
11
|
-
const downwardMessageQueuesKey =
|
|
7
|
+
const paraId = await getParaId(parachain);
|
|
8
|
+
const downwardMessageQueuesKey = compactHex(meta.query.dmp.downwardMessageQueues(paraId));
|
|
12
9
|
await relaychain.headState.subscribeStorage([downwardMessageQueuesKey], async (head, pairs) => {
|
|
13
10
|
const value = pairs[0][1];
|
|
14
11
|
if (!value)
|
|
15
12
|
return;
|
|
16
13
|
const meta = await head.meta;
|
|
17
|
-
const downwardMessageQueuesKey =
|
|
14
|
+
const downwardMessageQueuesKey = compactHex(meta.query.dmp.downwardMessageQueues(paraId));
|
|
18
15
|
// clear relaychain message queue
|
|
19
|
-
await
|
|
16
|
+
await setStorage(relaychain, [[downwardMessageQueuesKey, null]], head.hash);
|
|
20
17
|
const downwardMessages = meta.registry
|
|
21
|
-
.createType('Vec<PolkadotCorePrimitivesInboundDownwardMessage>',
|
|
18
|
+
.createType('Vec<PolkadotCorePrimitivesInboundDownwardMessage>', hexToU8a(value))
|
|
22
19
|
.toJSON();
|
|
23
20
|
if (downwardMessages.length === 0)
|
|
24
21
|
return;
|
|
25
|
-
|
|
22
|
+
logger.debug({ downwardMessages }, 'downward_message');
|
|
26
23
|
parachain.submitDownwardMessages(downwardMessages);
|
|
27
24
|
});
|
|
28
25
|
};
|
|
29
|
-
exports.connectDownward = connectDownward;
|
package/lib/xcm/horizontal.js
CHANGED
|
@@ -1,22 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
const utils_1 = require("../utils");
|
|
6
|
-
const _1 = require(".");
|
|
7
|
-
const connectHorizontal = async (parachains) => {
|
|
1
|
+
import { hexToU8a } from '@polkadot/util';
|
|
2
|
+
import { compactHex } from '../utils';
|
|
3
|
+
import { logger } from '.';
|
|
4
|
+
export const connectHorizontal = async (parachains) => {
|
|
8
5
|
for (const [id, chain] of Object.entries(parachains)) {
|
|
9
6
|
const meta = await chain.head.meta;
|
|
10
|
-
const hrmpOutboundMessagesKey =
|
|
7
|
+
const hrmpOutboundMessagesKey = compactHex(meta.query.parachainSystem.hrmpOutboundMessages());
|
|
11
8
|
await chain.headState.subscribeStorage([hrmpOutboundMessagesKey], async (head, pairs) => {
|
|
12
9
|
const value = pairs[0][1];
|
|
13
10
|
if (!value)
|
|
14
11
|
return;
|
|
15
12
|
const meta = await head.meta;
|
|
16
13
|
const outboundHrmpMessage = meta.registry
|
|
17
|
-
.createType('Vec<PolkadotCorePrimitivesOutboundHrmpMessage>',
|
|
14
|
+
.createType('Vec<PolkadotCorePrimitivesOutboundHrmpMessage>', hexToU8a(value))
|
|
18
15
|
.toJSON();
|
|
19
|
-
|
|
16
|
+
logger.info({ outboundHrmpMessage }, 'outboundHrmpMessage');
|
|
20
17
|
for (const { recipient, data } of outboundHrmpMessage) {
|
|
21
18
|
const receiver = parachains[recipient];
|
|
22
19
|
if (receiver) {
|
|
@@ -26,4 +23,3 @@ const connectHorizontal = async (parachains) => {
|
|
|
26
23
|
});
|
|
27
24
|
}
|
|
28
25
|
};
|
|
29
|
-
exports.connectHorizontal = connectHorizontal;
|
package/lib/xcm/index.js
CHANGED
|
@@ -1,25 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
await (0, downward_1.connectDownward)(relaychain, parachain);
|
|
12
|
-
await (0, upward_1.connectUpward)(parachain, relaychain);
|
|
13
|
-
exports.logger.info(`Connected relaychain '${await relaychain.api.getSystemChain()}' with parachain '${await parachain.api.getSystemChain()}'`);
|
|
1
|
+
import { connectDownward } from './downward';
|
|
2
|
+
import { connectHorizontal } from './horizontal';
|
|
3
|
+
import { connectUpward } from './upward';
|
|
4
|
+
import { defaultLogger } from '../logger';
|
|
5
|
+
import { getParaId } from '../utils';
|
|
6
|
+
export const logger = defaultLogger.child({ name: 'xcm' });
|
|
7
|
+
export const connectVertical = async (relaychain, parachain) => {
|
|
8
|
+
await connectDownward(relaychain, parachain);
|
|
9
|
+
await connectUpward(parachain, relaychain);
|
|
10
|
+
logger.info(`Connected relaychain '${await relaychain.api.getSystemChain()}' with parachain '${await parachain.api.getSystemChain()}'`);
|
|
14
11
|
};
|
|
15
|
-
|
|
16
|
-
const connectParachains = async (parachains) => {
|
|
12
|
+
export const connectParachains = async (parachains) => {
|
|
17
13
|
const list = {};
|
|
18
14
|
for (const chain of parachains) {
|
|
19
|
-
const paraId = await
|
|
15
|
+
const paraId = await getParaId(chain);
|
|
20
16
|
list[paraId.toNumber()] = chain;
|
|
21
17
|
}
|
|
22
|
-
await
|
|
23
|
-
|
|
18
|
+
await connectHorizontal(list);
|
|
19
|
+
logger.info(`Connected parachains [${Object.keys(list)}]`);
|
|
24
20
|
};
|
|
25
|
-
exports.connectParachains = connectParachains;
|
package/lib/xcm/upward.js
CHANGED
|
@@ -1,21 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const util_1 = require("@polkadot/util");
|
|
5
|
-
const utils_1 = require("../utils");
|
|
6
|
-
const connectUpward = async (parachain, relaychain) => {
|
|
1
|
+
import { hexToU8a } from '@polkadot/util';
|
|
2
|
+
import { compactHex, getParaId } from '../utils';
|
|
3
|
+
export const connectUpward = async (parachain, relaychain) => {
|
|
7
4
|
const meta = await parachain.head.meta;
|
|
8
|
-
const paraId = (await
|
|
9
|
-
const upwardMessagesKey =
|
|
5
|
+
const paraId = (await getParaId(parachain)).toNumber();
|
|
6
|
+
const upwardMessagesKey = compactHex(meta.query.parachainSystem.upwardMessages());
|
|
10
7
|
await parachain.headState.subscribeStorage([upwardMessagesKey], async (_head, pairs) => {
|
|
11
8
|
const value = pairs[0][1];
|
|
12
9
|
if (!value)
|
|
13
10
|
return;
|
|
14
11
|
const meta = await relaychain.head.meta;
|
|
15
|
-
const upwardMessages = meta.registry.createType('Vec<Bytes>',
|
|
12
|
+
const upwardMessages = meta.registry.createType('Vec<Bytes>', hexToU8a(value));
|
|
16
13
|
if (upwardMessages.length === 0)
|
|
17
14
|
return;
|
|
18
15
|
relaychain.submitUpwardMessages(paraId, upwardMessages.map((x) => x.toHex()));
|
|
19
16
|
});
|
|
20
17
|
};
|
|
21
|
-
exports.connectUpward = connectUpward;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@acala-network/chopsticks",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.5",
|
|
4
4
|
"main": "./lib/index.js",
|
|
5
5
|
"types": "./lib/index.d.ts",
|
|
6
6
|
"author": "Bryan Chen <xlchen1291@gmail.com>",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"dev:moonbeam": "ts-node-dev --transpile-only --inspect --notify=false src/cli.ts -- dev --config=../../configs/moonbeam.yml"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@acala-network/chopsticks-executor": "0.5.
|
|
20
|
+
"@acala-network/chopsticks-executor": "0.5.5",
|
|
21
21
|
"@polkadot/api": "^9.14.2",
|
|
22
22
|
"@polkadot/rpc-provider": "^9.14.2",
|
|
23
23
|
"@polkadot/types": "^9.14.2",
|