@acala-network/chopsticks 0.6.5 → 0.6.6

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.
@@ -135,20 +135,71 @@ const buildBlock = async (head, inherents, extrinsics, ump, onApplyExtrinsicErro
135
135
  const meta = await head.meta;
136
136
  layer = new storage_layer_1.StorageLayer(head.storage);
137
137
  for (const [paraId, upwardMessages] of Object.entries(ump)) {
138
- const queueSize = meta.registry.createType('(u32, u32)', [
139
- upwardMessages.length,
140
- upwardMessages.map((x) => x.length).reduce((s, i) => s + i, 0),
141
- ]);
142
- const messages = meta.registry.createType('Vec<Bytes>', upwardMessages);
143
- // TODO: make sure we append instead of replace
144
- layer.setAll([
145
- [(0, utils_1.compactHex)(meta.query.ump.relayDispatchQueues(paraId)), messages.toHex()],
146
- [(0, utils_1.compactHex)(meta.query.ump.relayDispatchQueueSize(paraId)), queueSize.toHex()],
147
- ]);
138
+ const upwardMessagesU8a = upwardMessages.map((x) => (0, util_1.hexToU8a)(x));
139
+ const messagesCount = upwardMessages.length;
140
+ const messagesSize = upwardMessagesU8a.map((x) => x.length).reduce((s, i) => s + i, 0);
141
+ if (meta.query.ump) {
142
+ const queueSize = meta.registry.createType('(u32, u32)', [messagesCount, messagesSize]);
143
+ const messages = meta.registry.createType('Vec<Bytes>', upwardMessages);
144
+ // TODO: make sure we append instead of replace
145
+ layer.setAll([
146
+ [(0, utils_1.compactHex)(meta.query.ump.relayDispatchQueues(paraId)), messages.toHex()],
147
+ [(0, utils_1.compactHex)(meta.query.ump.relayDispatchQueueSize(paraId)), queueSize.toHex()],
148
+ ]);
149
+ }
150
+ else if (meta.query.messageQueue) {
151
+ // TODO: make sure we append instead of replace
152
+ const origin = { ump: { para: paraId } };
153
+ let last = 0;
154
+ let heap = new Uint8Array(0);
155
+ for (const message of upwardMessagesU8a) {
156
+ const payloadLen = message.length;
157
+ const header = meta.registry.createType('(u32, bool)', [payloadLen, false]);
158
+ last = heap.length;
159
+ heap = (0, util_1.u8aConcat)(heap, header.toU8a(), message);
160
+ }
161
+ layer.setAll([
162
+ [
163
+ (0, utils_1.compactHex)(meta.query.messageQueue.bookStateFor(origin)),
164
+ meta.registry
165
+ .createType('PalletMessageQueueBookState', {
166
+ begin: 0,
167
+ end: 1,
168
+ count: 1,
169
+ readyNeighbours: { prev: origin, next: origin },
170
+ messageCount: messagesCount,
171
+ size_: messagesSize,
172
+ })
173
+ .toHex(),
174
+ ],
175
+ [
176
+ (0, utils_1.compactHex)(meta.query.messageQueue.serviceHead(origin)),
177
+ meta.registry.createType('PolkadotRuntimeParachainsInclusionAggregateMessageOrigin', origin).toHex(),
178
+ ],
179
+ [
180
+ (0, utils_1.compactHex)(meta.query.messageQueue.pages(origin, 0)),
181
+ meta.registry
182
+ .createType('PalletMessageQueuePage', {
183
+ remaining: messagesCount,
184
+ remaining_size: messagesSize,
185
+ first_index: 0,
186
+ first: 0,
187
+ last,
188
+ heap: (0, util_1.compactAddLength)(heap),
189
+ })
190
+ .toHex(),
191
+ ],
192
+ ]);
193
+ }
194
+ else {
195
+ throw new Error('Unknown ump storage');
196
+ }
148
197
  logger.trace({ paraId, upwardMessages: (0, logger_1.truncate)(upwardMessages) }, 'Pushed UMP');
149
198
  }
150
- const needsDispatch = meta.registry.createType('Vec<u32>', Object.keys(ump));
151
- layer.set((0, utils_1.compactHex)(meta.query.ump.needsDispatch()), needsDispatch.toHex());
199
+ if (meta.query.ump) {
200
+ const needsDispatch = meta.registry.createType('Vec<u32>', Object.keys(ump));
201
+ layer.set((0, utils_1.compactHex)(meta.query.ump.needsDispatch()), needsDispatch.toHex());
202
+ }
152
203
  }
153
204
  const { block: newBlock } = await initNewBlock(head, header, inherents, layer);
154
205
  logger.info({
@@ -157,8 +157,8 @@ class TxPool {
157
157
  }
158
158
  finally {
159
159
  this.#isBuilding = false;
160
- this.#buildBlockIfNeeded();
161
160
  }
161
+ this.#buildBlockIfNeeded();
162
162
  }
163
163
  async #buildBlock() {
164
164
  await this.#chain.api.isReady;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acala-network/chopsticks",
3
- "version": "0.6.5",
3
+ "version": "0.6.6",
4
4
  "author": "Bryan Chen <xlchen1291@gmail.com>",
5
5
  "license": "Apache-2.0",
6
6
  "bin": "./chopsticks.js",
@@ -16,7 +16,7 @@
16
16
  "dev:moonbeam": "cd ../..; ts-node-dev --transpile-only --inspect --notify=false packages/chopsticks/src/cli.ts -- --config=configs/moonbeam.yml"
17
17
  },
18
18
  "dependencies": {
19
- "@acala-network/chopsticks-executor": "0.6.5",
19
+ "@acala-network/chopsticks-executor": "0.6.6",
20
20
  "@polkadot/api": "^10.7.2",
21
21
  "axios": "^1.4.0",
22
22
  "js-yaml": "^4.1.0",