@substrate/api-sidecar 20.3.2 → 20.4.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/README.md +9 -0
- package/build/package.json +8 -18
- package/build/src/chains-config/assetHubKusamaControllers.js +17 -0
- package/build/src/chains-config/assetHubKusamaControllers.js.map +1 -1
- package/build/src/chains-config/assetHubNextWestendControllers.js +18 -0
- package/build/src/chains-config/assetHubNextWestendControllers.js.map +1 -1
- package/build/src/chains-config/assetHubPolkadotControllers.js +17 -0
- package/build/src/chains-config/assetHubPolkadotControllers.js.map +1 -1
- package/build/src/chains-config/assetHubWestendControllers.js +18 -0
- package/build/src/chains-config/assetHubWestendControllers.js.map +1 -1
- package/build/src/chains-config/index.d.ts +6 -0
- package/build/src/chains-config/index.js +24 -1
- package/build/src/chains-config/index.js.map +1 -1
- package/build/src/controllers/AbstractController.d.ts +13 -2
- package/build/src/controllers/AbstractController.js +56 -6
- package/build/src/controllers/AbstractController.js.map +1 -1
- package/build/src/controllers/accounts/AccountsAssetsController.d.ts +16 -0
- package/build/src/controllers/accounts/AccountsAssetsController.js +75 -8
- package/build/src/controllers/accounts/AccountsAssetsController.js.map +1 -1
- package/build/src/controllers/accounts/AccountsBalanceInfoController.d.ts +9 -0
- package/build/src/controllers/accounts/AccountsBalanceInfoController.js +50 -10
- package/build/src/controllers/accounts/AccountsBalanceInfoController.js.map +1 -1
- package/build/src/controllers/accounts/AccountsPoolAssetsController.d.ts +15 -0
- package/build/src/controllers/accounts/AccountsPoolAssetsController.js +74 -8
- package/build/src/controllers/accounts/AccountsPoolAssetsController.js.map +1 -1
- package/build/src/controllers/accounts/AccountsProxyInfoController.d.ts +1 -1
- package/build/src/controllers/accounts/AccountsProxyInfoController.js +30 -5
- package/build/src/controllers/accounts/AccountsProxyInfoController.js.map +1 -1
- package/build/src/controllers/accounts/AccountsStakingInfoController.d.ts +9 -0
- package/build/src/controllers/accounts/AccountsStakingInfoController.js +47 -6
- package/build/src/controllers/accounts/AccountsStakingInfoController.js.map +1 -1
- package/build/src/controllers/accounts/AccountsStakingPayoutsController.d.ts +9 -0
- package/build/src/controllers/accounts/AccountsStakingPayoutsController.js +71 -14
- package/build/src/controllers/accounts/AccountsStakingPayoutsController.js.map +1 -1
- package/build/src/controllers/accounts/AccountsVestingInfoController.d.ts +8 -0
- package/build/src/controllers/accounts/AccountsVestingInfoController.js +36 -8
- package/build/src/controllers/accounts/AccountsVestingInfoController.js.map +1 -1
- package/build/src/controllers/blocks/BlocksController.d.ts +10 -0
- package/build/src/controllers/blocks/BlocksController.js +244 -23
- package/build/src/controllers/blocks/BlocksController.js.map +1 -1
- package/build/src/controllers/blocks/BlocksExtrinsicsController.js +95 -36
- package/build/src/controllers/blocks/BlocksExtrinsicsController.js.map +1 -1
- package/build/src/controllers/blocks/BlocksRawExtrinsicsController.js +29 -4
- package/build/src/controllers/blocks/BlocksRawExtrinsicsController.js.map +1 -1
- package/build/src/controllers/controllerInjection.spec.js +5 -1
- package/build/src/controllers/controllerInjection.spec.js.map +1 -1
- package/build/src/controllers/index.d.ts +23 -0
- package/build/src/controllers/index.js +27 -4
- package/build/src/controllers/index.js.map +1 -1
- package/build/src/controllers/pallets/PalletsAssetConversionController.js +58 -6
- package/build/src/controllers/pallets/PalletsAssetConversionController.js.map +1 -1
- package/build/src/controllers/pallets/PalletsAssetsController.d.ts +8 -0
- package/build/src/controllers/pallets/PalletsAssetsController.js +38 -3
- package/build/src/controllers/pallets/PalletsAssetsController.js.map +1 -1
- package/build/src/controllers/pallets/PalletsConstsController.js +82 -18
- package/build/src/controllers/pallets/PalletsConstsController.js.map +1 -1
- package/build/src/controllers/pallets/PalletsDispatchablesController.d.ts +0 -8
- package/build/src/controllers/pallets/PalletsDispatchablesController.js +82 -28
- package/build/src/controllers/pallets/PalletsDispatchablesController.js.map +1 -1
- package/build/src/controllers/pallets/PalletsErrorsController.js +82 -18
- package/build/src/controllers/pallets/PalletsErrorsController.js.map +1 -1
- package/build/src/controllers/pallets/PalletsEventsController.js +82 -18
- package/build/src/controllers/pallets/PalletsEventsController.js.map +1 -1
- package/build/src/controllers/pallets/PalletsForeignAssetsController.d.ts +8 -0
- package/build/src/controllers/pallets/PalletsForeignAssetsController.js +38 -3
- package/build/src/controllers/pallets/PalletsForeignAssetsController.js.map +1 -1
- package/build/src/controllers/pallets/PalletsNominationPoolsController.js +58 -6
- package/build/src/controllers/pallets/PalletsNominationPoolsController.js.map +1 -1
- package/build/src/controllers/pallets/PalletsOnGoingReferendaController.js +30 -3
- package/build/src/controllers/pallets/PalletsOnGoingReferendaController.js.map +1 -1
- package/build/src/controllers/pallets/PalletsPoolAssetsController.js +30 -3
- package/build/src/controllers/pallets/PalletsPoolAssetsController.js.map +1 -1
- package/build/src/controllers/pallets/PalletsStakingProgressController.d.ts +1 -1
- package/build/src/controllers/pallets/PalletsStakingProgressController.js +30 -8
- package/build/src/controllers/pallets/PalletsStakingProgressController.js.map +1 -1
- package/build/src/controllers/pallets/PalletsStakingValidatorsController.js +30 -3
- package/build/src/controllers/pallets/PalletsStakingValidatorsController.js.map +1 -1
- package/build/src/controllers/pallets/PalletsStorageController.js +84 -19
- package/build/src/controllers/pallets/PalletsStorageController.js.map +1 -1
- package/build/src/controllers/rc/accounts/RcAccountsBalanceInfoController.d.ts +15 -0
- package/build/src/controllers/rc/accounts/RcAccountsBalanceInfoController.js +65 -0
- package/build/src/controllers/rc/accounts/RcAccountsBalanceInfoController.js.map +1 -0
- package/build/src/controllers/rc/accounts/RcAccountsProxyInfoController.d.ts +15 -0
- package/build/src/controllers/rc/accounts/RcAccountsProxyInfoController.js +59 -0
- package/build/src/controllers/rc/accounts/RcAccountsProxyInfoController.js.map +1 -0
- package/build/src/controllers/rc/accounts/index.d.ts +2 -0
- package/build/src/controllers/rc/accounts/index.js +26 -0
- package/build/src/controllers/rc/accounts/index.js.map +1 -0
- package/build/src/controllers/rc/blocks/RcBlocksController.d.ts +17 -0
- package/build/src/controllers/rc/blocks/RcBlocksController.js +263 -0
- package/build/src/controllers/rc/blocks/RcBlocksController.js.map +1 -0
- package/build/src/controllers/rc/blocks/RcBlocksExtrinsicsController.d.ts +11 -0
- package/build/src/controllers/rc/blocks/RcBlocksExtrinsicsController.js +80 -0
- package/build/src/controllers/rc/blocks/RcBlocksExtrinsicsController.js.map +1 -0
- package/build/src/controllers/rc/blocks/RcBlocksRawExtrinsicsController.d.ts +10 -0
- package/build/src/controllers/rc/blocks/RcBlocksRawExtrinsicsController.js +60 -0
- package/build/src/controllers/rc/blocks/RcBlocksRawExtrinsicsController.js.map +1 -0
- package/build/src/controllers/rc/blocks/RcBlocksTraceController.d.ts +12 -0
- package/build/src/controllers/rc/blocks/RcBlocksTraceController.js +89 -0
- package/build/src/controllers/rc/blocks/RcBlocksTraceController.js.map +1 -0
- package/build/src/controllers/rc/blocks/index.d.ts +4 -0
- package/build/src/controllers/rc/blocks/index.js +30 -0
- package/build/src/controllers/rc/blocks/index.js.map +1 -0
- package/build/src/controllers/rc/index.d.ts +4 -0
- package/build/src/controllers/rc/index.js +36 -0
- package/build/src/controllers/rc/index.js.map +1 -0
- package/build/src/controllers/rc/node/RcNodeNetworkController.d.ts +40 -0
- package/build/src/controllers/rc/node/RcNodeNetworkController.js +76 -0
- package/build/src/controllers/rc/node/RcNodeNetworkController.js.map +1 -0
- package/build/src/controllers/rc/node/RcNodeTransactionPoolController.d.ts +27 -0
- package/build/src/controllers/rc/node/RcNodeTransactionPoolController.js +66 -0
- package/build/src/controllers/rc/node/RcNodeTransactionPoolController.js.map +1 -0
- package/build/src/controllers/rc/node/RcNodeVersionController.d.ts +24 -0
- package/build/src/controllers/rc/node/RcNodeVersionController.js +59 -0
- package/build/src/controllers/rc/node/RcNodeVersionController.js.map +1 -0
- package/build/src/controllers/rc/node/index.d.ts +3 -0
- package/build/src/controllers/rc/node/index.js +13 -0
- package/build/src/controllers/rc/node/index.js.map +1 -0
- package/build/src/controllers/rc/pallets/RcPalletsConstsController.d.ts +10 -0
- package/build/src/controllers/rc/pallets/RcPalletsConstsController.js +79 -0
- package/build/src/controllers/rc/pallets/RcPalletsConstsController.js.map +1 -0
- package/build/src/controllers/rc/pallets/RcPalletsDispatchablesController.d.ts +10 -0
- package/build/src/controllers/rc/pallets/RcPalletsDispatchablesController.js +79 -0
- package/build/src/controllers/rc/pallets/RcPalletsDispatchablesController.js.map +1 -0
- package/build/src/controllers/rc/pallets/RcPalletsErrorsController.d.ts +10 -0
- package/build/src/controllers/rc/pallets/RcPalletsErrorsController.js +79 -0
- package/build/src/controllers/rc/pallets/RcPalletsErrorsController.js.map +1 -0
- package/build/src/controllers/rc/pallets/RcPalletsEventsController.d.ts +10 -0
- package/build/src/controllers/rc/pallets/RcPalletsEventsController.js +79 -0
- package/build/src/controllers/rc/pallets/RcPalletsEventsController.js.map +1 -0
- package/build/src/controllers/rc/pallets/RcPalletsOnGoingReferendaController.d.ts +9 -0
- package/build/src/controllers/rc/pallets/RcPalletsOnGoingReferendaController.js +52 -0
- package/build/src/controllers/rc/pallets/RcPalletsOnGoingReferendaController.js.map +1 -0
- package/build/src/controllers/rc/pallets/RcPalletsStorageController.d.ts +10 -0
- package/build/src/controllers/rc/pallets/RcPalletsStorageController.js +81 -0
- package/build/src/controllers/rc/pallets/RcPalletsStorageController.js.map +1 -0
- package/build/src/controllers/rc/pallets/index.d.ts +6 -0
- package/build/src/controllers/rc/pallets/index.js +34 -0
- package/build/src/controllers/rc/pallets/index.js.map +1 -0
- package/build/src/controllers/rc/runtime/RcRuntimeCodeController.d.ts +26 -0
- package/build/src/controllers/rc/runtime/RcRuntimeCodeController.js +68 -0
- package/build/src/controllers/rc/runtime/RcRuntimeCodeController.js.map +1 -0
- package/build/src/controllers/rc/runtime/RcRuntimeMetadataController.d.ts +47 -0
- package/build/src/controllers/rc/runtime/RcRuntimeMetadataController.js +140 -0
- package/build/src/controllers/rc/runtime/RcRuntimeMetadataController.js.map +1 -0
- package/build/src/controllers/rc/runtime/RcRuntimeSpecController.d.ts +34 -0
- package/build/src/controllers/rc/runtime/RcRuntimeSpecController.js +76 -0
- package/build/src/controllers/rc/runtime/RcRuntimeSpecController.js.map +1 -0
- package/build/src/controllers/rc/runtime/index.d.ts +3 -0
- package/build/src/controllers/rc/runtime/index.js +28 -0
- package/build/src/controllers/rc/runtime/index.js.map +1 -0
- package/build/src/main.js +4 -0
- package/build/src/main.js.map +1 -1
- package/build/src/middleware/validate/index.d.ts +1 -0
- package/build/src/middleware/validate/index.js +3 -1
- package/build/src/middleware/validate/index.js.map +1 -1
- package/build/src/middleware/validate/validateUseRcBlockMiddleware.d.ts +10 -0
- package/build/src/middleware/validate/validateUseRcBlockMiddleware.js +58 -0
- package/build/src/middleware/validate/validateUseRcBlockMiddleware.js.map +1 -0
- package/build/src/services/accounts/AccountsStakingInfoService.js +0 -1
- package/build/src/services/accounts/AccountsStakingInfoService.js.map +1 -1
- package/build/src/services/blocks/BlocksService.js +15 -1
- package/build/src/services/blocks/BlocksService.js.map +1 -1
- package/build/src/services/pallets/PalletsStakingProgressService.d.ts +56 -0
- package/build/src/services/pallets/PalletsStakingProgressService.js +140 -21
- package/build/src/services/pallets/PalletsStakingProgressService.js.map +1 -1
- package/build/src/services/pallets/PalletsStakingProgressService.spec.js +255 -43
- package/build/src/services/pallets/PalletsStakingProgressService.spec.js.map +1 -1
- package/build/src/types/requests.d.ts +1 -0
- package/build/src/types/responses/AccountAssets.d.ts +4 -0
- package/build/src/types/responses/AccountBalanceInfo.d.ts +2 -0
- package/build/src/types/responses/AccountPoolAssets.d.ts +6 -2
- package/build/src/types/responses/AccountProxyInfo.d.ts +2 -0
- package/build/src/types/responses/AccountStakingInfo.d.ts +2 -0
- package/build/src/types/responses/AccountStakingPayouts.d.ts +2 -0
- package/build/src/types/responses/AccountVestingInfo.d.ts +2 -0
- package/build/src/types/responses/PalletStakingProgress.d.ts +2 -0
- package/package.json +8 -18
|
@@ -20,6 +20,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
20
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
21
|
const util_1 = require("@polkadot/util");
|
|
22
22
|
const http_errors_1 = require("http-errors");
|
|
23
|
+
const apiRegistry_1 = require("../../apiRegistry");
|
|
23
24
|
const validate_1 = require("../../middleware/validate");
|
|
24
25
|
const services_1 = require("../../services");
|
|
25
26
|
const PromiseQueue_1 = require("../../util/PromiseQueue");
|
|
@@ -46,9 +47,17 @@ const AbstractController_1 = __importDefault(require("../AbstractController"));
|
|
|
46
47
|
* - (Optional for `/blocks/{blockId}) `paraId`: When it is set, it will return only the decoded
|
|
47
48
|
* XCM messages for the specified paraId/parachain Id. To activate this functionality, ensure
|
|
48
49
|
* that the `decodedXcmMsgs` parameter is set to true.
|
|
50
|
+
* - (Optional for `/blocks/head`) `useRcBlock`: When set to `true`, it will use the latest
|
|
51
|
+
* relay chain block to determine the corresponding Asset Hub block. Only supported for
|
|
52
|
+
* Asset Hub endpoints with relay chain API available.
|
|
49
53
|
*
|
|
50
54
|
*
|
|
51
55
|
* Returns:
|
|
56
|
+
* - When using `useRcBlock` parameter: An array of response objects, one for each Asset Hub block found
|
|
57
|
+
* corresponding to the relay chain block. Returns empty array `[]` if no Asset Hub blocks found.
|
|
58
|
+
* - When using standard block identifiers or no query params: A single response object.
|
|
59
|
+
*
|
|
60
|
+
* Response object structure:
|
|
52
61
|
* - `number`: Block height.
|
|
53
62
|
* - `hash`: The block's hash.
|
|
54
63
|
* - `parentHash`: The hash of the parent block.
|
|
@@ -79,6 +88,8 @@ const AbstractController_1 = __importDefault(require("../AbstractController"));
|
|
|
79
88
|
* finalization with the `method` and `data` for each.
|
|
80
89
|
* - `decodedXcmMsgs`: An array of the decoded XCM messages found within the extrinsics
|
|
81
90
|
* of the requested block.
|
|
91
|
+
* - `rcBlockNumber`: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.
|
|
92
|
+
* - `ahTimestamp`: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.
|
|
82
93
|
*
|
|
83
94
|
* Note: Block finalization does not correspond to consensus, i.e. whether the block is in the
|
|
84
95
|
* canonical chain. It denotes the finalization of block _construction._
|
|
@@ -126,15 +137,32 @@ class BlocksController extends AbstractController_1.default {
|
|
|
126
137
|
* @param _req Express Request
|
|
127
138
|
* @param res Express Response
|
|
128
139
|
*/
|
|
129
|
-
this.getLatestBlock = async ({ query: { eventDocs, extrinsicDocs, finalized, noFees, decodedXcmMsgs, paraId }, method, route }, res) => {
|
|
140
|
+
this.getLatestBlock = async ({ query: { eventDocs, extrinsicDocs, finalized, noFees, decodedXcmMsgs, paraId, useRcBlock }, method, route }, res) => {
|
|
141
|
+
var _a, _b, _c;
|
|
130
142
|
const eventDocsArg = eventDocs === 'true';
|
|
131
143
|
const extrinsicDocsArg = extrinsicDocs === 'true';
|
|
144
|
+
const useRcBlockArg = useRcBlock === 'true';
|
|
132
145
|
let hash, queryFinalizedHead, omitFinalizedTag;
|
|
146
|
+
let rcBlockNumber;
|
|
133
147
|
if (!this.options.finalizes) {
|
|
134
148
|
// If the network chain doesn't finalize blocks, we dont want a finalized tag.
|
|
135
149
|
omitFinalizedTag = true;
|
|
136
150
|
queryFinalizedHead = false;
|
|
137
|
-
|
|
151
|
+
if (useRcBlockArg) {
|
|
152
|
+
const rcApi = (_a = apiRegistry_1.ApiPromiseRegistry.getApiByType('relay')[0]) === null || _a === void 0 ? void 0 : _a.api;
|
|
153
|
+
const rcHeader = await rcApi.rpc.chain.getHeader();
|
|
154
|
+
const rcHash = rcHeader.hash;
|
|
155
|
+
rcBlockNumber = rcHeader.number.toString();
|
|
156
|
+
hash = await this.getAhAtFromRcAt(rcHash);
|
|
157
|
+
// Return empty array if no Asset Hub block found
|
|
158
|
+
if (!hash) {
|
|
159
|
+
BlocksController.sanitizedSend(res, []);
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
hash = (await this.api.rpc.chain.getHeader()).hash;
|
|
165
|
+
}
|
|
138
166
|
}
|
|
139
167
|
else if (finalized === 'false') {
|
|
140
168
|
// We query the finalized head to know where the latest finalized block
|
|
@@ -142,12 +170,40 @@ class BlocksController extends AbstractController_1.default {
|
|
|
142
170
|
// equal to the finalized head.
|
|
143
171
|
omitFinalizedTag = false;
|
|
144
172
|
queryFinalizedHead = true;
|
|
145
|
-
|
|
173
|
+
if (useRcBlockArg) {
|
|
174
|
+
const rcApi = (_b = apiRegistry_1.ApiPromiseRegistry.getApiByType('relay')[0]) === null || _b === void 0 ? void 0 : _b.api;
|
|
175
|
+
const rcHeader = await rcApi.rpc.chain.getHeader();
|
|
176
|
+
const rcHash = rcHeader.hash;
|
|
177
|
+
rcBlockNumber = rcHeader.number.toString();
|
|
178
|
+
hash = await this.getAhAtFromRcAt(rcHash);
|
|
179
|
+
// Return empty array if no Asset Hub block found
|
|
180
|
+
if (!hash) {
|
|
181
|
+
BlocksController.sanitizedSend(res, []);
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
hash = (await this.api.rpc.chain.getHeader()).hash;
|
|
187
|
+
}
|
|
146
188
|
}
|
|
147
189
|
else {
|
|
148
190
|
omitFinalizedTag = false;
|
|
149
191
|
queryFinalizedHead = false;
|
|
150
|
-
|
|
192
|
+
if (useRcBlockArg) {
|
|
193
|
+
const rcApi = (_c = apiRegistry_1.ApiPromiseRegistry.getApiByType('relay')[0]) === null || _c === void 0 ? void 0 : _c.api;
|
|
194
|
+
const rcHash = await rcApi.rpc.chain.getFinalizedHead();
|
|
195
|
+
const rcHeader = await rcApi.rpc.chain.getHeader(rcHash);
|
|
196
|
+
rcBlockNumber = rcHeader.number.toString();
|
|
197
|
+
hash = await this.getAhAtFromRcAt(rcHash);
|
|
198
|
+
// Return empty array if no Asset Hub block found
|
|
199
|
+
if (!hash) {
|
|
200
|
+
BlocksController.sanitizedSend(res, []);
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
hash = await this.api.rpc.chain.getFinalizedHead();
|
|
206
|
+
}
|
|
151
207
|
}
|
|
152
208
|
const noFeesArg = noFees === 'true';
|
|
153
209
|
const decodedXcmMsgsArg = decodedXcmMsgs === 'true';
|
|
@@ -172,13 +228,37 @@ class BlocksController extends AbstractController_1.default {
|
|
|
172
228
|
Number(options.paraId);
|
|
173
229
|
const isBlockCached = this.blockStore.get(cacheKey);
|
|
174
230
|
if (isBlockCached) {
|
|
175
|
-
|
|
231
|
+
if (rcBlockNumber) {
|
|
232
|
+
const apiAt = await this.api.at(hash);
|
|
233
|
+
const ahTimestamp = await apiAt.query.timestamp.now();
|
|
234
|
+
const enhancedCachedResult = {
|
|
235
|
+
...isBlockCached,
|
|
236
|
+
rcBlockNumber,
|
|
237
|
+
ahTimestamp: ahTimestamp.toString(),
|
|
238
|
+
};
|
|
239
|
+
BlocksController.sanitizedSend(res, [enhancedCachedResult]);
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
BlocksController.sanitizedSend(res, isBlockCached);
|
|
243
|
+
}
|
|
176
244
|
return;
|
|
177
245
|
}
|
|
178
246
|
const historicApi = await this.api.at(hash);
|
|
179
247
|
const block = await this.service.fetchBlock(hash, historicApi, options);
|
|
180
248
|
this.blockStore.set(cacheKey, block);
|
|
181
|
-
|
|
249
|
+
if (rcBlockNumber) {
|
|
250
|
+
const apiAt = await this.api.at(hash);
|
|
251
|
+
const ahTimestamp = await apiAt.query.timestamp.now();
|
|
252
|
+
const enhancedResult = {
|
|
253
|
+
...block,
|
|
254
|
+
rcBlockNumber,
|
|
255
|
+
ahTimestamp: ahTimestamp.toString(),
|
|
256
|
+
};
|
|
257
|
+
BlocksController.sanitizedSend(res, [enhancedResult]);
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
BlocksController.sanitizedSend(res, block);
|
|
261
|
+
}
|
|
182
262
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
183
263
|
const path = route.path;
|
|
184
264
|
if (res.locals.metrics) {
|
|
@@ -191,9 +271,24 @@ class BlocksController extends AbstractController_1.default {
|
|
|
191
271
|
* @param req Express Request
|
|
192
272
|
* @param res Express Response
|
|
193
273
|
*/
|
|
194
|
-
this.getBlockById = async ({ params: { number }, query: { eventDocs, extrinsicDocs, noFees, finalizedKey, decodedXcmMsgs, paraId }, method, route, }, res) => {
|
|
274
|
+
this.getBlockById = async ({ params: { number }, query: { eventDocs, extrinsicDocs, noFees, finalizedKey, decodedXcmMsgs, paraId, useRcBlock }, method, route, }, res) => {
|
|
275
|
+
const useRcBlockArg = useRcBlock === 'true';
|
|
195
276
|
const checkFinalized = (0, util_1.isHex)(number);
|
|
196
|
-
|
|
277
|
+
let hash;
|
|
278
|
+
let rcBlockNumber;
|
|
279
|
+
if (useRcBlockArg) {
|
|
280
|
+
// Treat the 'number' parameter as a relay chain block identifier
|
|
281
|
+
rcBlockNumber = number;
|
|
282
|
+
hash = await this.getAhAtFromRcAt(number);
|
|
283
|
+
// Return empty array if no Asset Hub block found
|
|
284
|
+
if (!hash) {
|
|
285
|
+
BlocksController.sanitizedSend(res, []);
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
hash = await this.getHashForBlock(number);
|
|
291
|
+
}
|
|
197
292
|
const eventDocsArg = eventDocs === 'true';
|
|
198
293
|
const extrinsicDocsArg = extrinsicDocs === 'true';
|
|
199
294
|
const finalizeOverride = finalizedKey === 'false';
|
|
@@ -225,15 +320,39 @@ class BlocksController extends AbstractController_1.default {
|
|
|
225
320
|
Number(options.paraId);
|
|
226
321
|
const isBlockCached = this.blockStore.get(cacheKey);
|
|
227
322
|
if (isBlockCached) {
|
|
228
|
-
|
|
323
|
+
if (rcBlockNumber) {
|
|
324
|
+
const apiAt = await this.api.at(hash);
|
|
325
|
+
const ahTimestamp = await apiAt.query.timestamp.now();
|
|
326
|
+
const enhancedCachedResult = {
|
|
327
|
+
...isBlockCached,
|
|
328
|
+
rcBlockNumber,
|
|
329
|
+
ahTimestamp: ahTimestamp.toString(),
|
|
330
|
+
};
|
|
331
|
+
BlocksController.sanitizedSend(res, [enhancedCachedResult]);
|
|
332
|
+
}
|
|
333
|
+
else {
|
|
334
|
+
BlocksController.sanitizedSend(res, isBlockCached);
|
|
335
|
+
}
|
|
229
336
|
return;
|
|
230
337
|
}
|
|
231
338
|
// HistoricApi to fetch any historic information that doesnt include the current runtime
|
|
232
339
|
const historicApi = await this.api.at(hash);
|
|
233
340
|
const block = await this.service.fetchBlock(hash, historicApi, options);
|
|
234
341
|
this.blockStore.set(cacheKey, block);
|
|
235
|
-
|
|
236
|
-
|
|
342
|
+
if (rcBlockNumber) {
|
|
343
|
+
const apiAt = await this.api.at(hash);
|
|
344
|
+
const ahTimestamp = await apiAt.query.timestamp.now();
|
|
345
|
+
const enhancedResult = {
|
|
346
|
+
...block,
|
|
347
|
+
rcBlockNumber,
|
|
348
|
+
ahTimestamp: ahTimestamp.toString(),
|
|
349
|
+
};
|
|
350
|
+
BlocksController.sanitizedSend(res, [enhancedResult]);
|
|
351
|
+
}
|
|
352
|
+
else {
|
|
353
|
+
// We set the last param to true because we haven't queried the finalizedHead
|
|
354
|
+
BlocksController.sanitizedSend(res, block);
|
|
355
|
+
}
|
|
237
356
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
238
357
|
const path = route.path;
|
|
239
358
|
if (res.locals.metrics) {
|
|
@@ -246,9 +365,41 @@ class BlocksController extends AbstractController_1.default {
|
|
|
246
365
|
* @param req Express Request
|
|
247
366
|
* @param res Express Response
|
|
248
367
|
*/
|
|
249
|
-
this.getBlockHeaderById = async ({ params: { number } }, res) => {
|
|
250
|
-
const
|
|
251
|
-
|
|
368
|
+
this.getBlockHeaderById = async ({ params: { number }, query: { useRcBlock } }, res) => {
|
|
369
|
+
const useRcBlockArg = useRcBlock === 'true';
|
|
370
|
+
let hash;
|
|
371
|
+
let rcBlockNumber;
|
|
372
|
+
if (useRcBlockArg) {
|
|
373
|
+
// Treat the 'number' parameter as a relay chain block identifier
|
|
374
|
+
rcBlockNumber = number;
|
|
375
|
+
hash = await this.getAhAtFromRcAt(number);
|
|
376
|
+
// Return empty array if no Asset Hub block found
|
|
377
|
+
if (!hash) {
|
|
378
|
+
BlocksController.sanitizedSend(res, []);
|
|
379
|
+
return;
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
else {
|
|
383
|
+
hash = await this.getHashForBlock(number);
|
|
384
|
+
}
|
|
385
|
+
const headerResult = await this.service.fetchBlockHeader(hash);
|
|
386
|
+
if (rcBlockNumber) {
|
|
387
|
+
const apiAt = await this.api.at(hash);
|
|
388
|
+
const ahTimestamp = await apiAt.query.timestamp.now();
|
|
389
|
+
const enhancedResult = {
|
|
390
|
+
parentHash: headerResult.parentHash,
|
|
391
|
+
number: headerResult.number,
|
|
392
|
+
stateRoot: headerResult.stateRoot,
|
|
393
|
+
extrinsicsRoot: headerResult.extrinsicsRoot,
|
|
394
|
+
digest: headerResult.digest,
|
|
395
|
+
rcBlockNumber,
|
|
396
|
+
ahTimestamp: ahTimestamp.toString(),
|
|
397
|
+
};
|
|
398
|
+
BlocksController.sanitizedSend(res, [enhancedResult]);
|
|
399
|
+
}
|
|
400
|
+
else {
|
|
401
|
+
BlocksController.sanitizedSend(res, headerResult);
|
|
402
|
+
}
|
|
252
403
|
};
|
|
253
404
|
/**
|
|
254
405
|
* Return the header of the latest block
|
|
@@ -256,10 +407,53 @@ class BlocksController extends AbstractController_1.default {
|
|
|
256
407
|
* @param req Express Request
|
|
257
408
|
* @param res Express Response
|
|
258
409
|
*/
|
|
259
|
-
this.getLatestBlockHeader = async ({ query: { finalized } }, res) => {
|
|
410
|
+
this.getLatestBlockHeader = async ({ query: { finalized, useRcBlock } }, res) => {
|
|
411
|
+
var _a;
|
|
260
412
|
const paramFinalized = finalized !== 'false';
|
|
261
|
-
const
|
|
262
|
-
|
|
413
|
+
const useRcBlockArg = useRcBlock === 'true';
|
|
414
|
+
let hash;
|
|
415
|
+
let rcBlockNumber;
|
|
416
|
+
if (useRcBlockArg) {
|
|
417
|
+
const rcApi = (_a = apiRegistry_1.ApiPromiseRegistry.getApiByType('relay')[0]) === null || _a === void 0 ? void 0 : _a.api;
|
|
418
|
+
if (paramFinalized) {
|
|
419
|
+
const rcHash = await rcApi.rpc.chain.getFinalizedHead();
|
|
420
|
+
const rcHeader = await rcApi.rpc.chain.getHeader(rcHash);
|
|
421
|
+
rcBlockNumber = rcHeader.number.toString();
|
|
422
|
+
hash = await this.getAhAtFromRcAt(rcHash);
|
|
423
|
+
}
|
|
424
|
+
else {
|
|
425
|
+
const rcHeader = await rcApi.rpc.chain.getHeader();
|
|
426
|
+
const rcHash = rcHeader.hash;
|
|
427
|
+
rcBlockNumber = rcHeader.number.toString();
|
|
428
|
+
hash = await this.getAhAtFromRcAt(rcHash);
|
|
429
|
+
}
|
|
430
|
+
// Return empty array if no Asset Hub block found
|
|
431
|
+
if (!hash) {
|
|
432
|
+
BlocksController.sanitizedSend(res, []);
|
|
433
|
+
return;
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
else {
|
|
437
|
+
hash = paramFinalized ? await this.api.rpc.chain.getFinalizedHead() : undefined;
|
|
438
|
+
}
|
|
439
|
+
const headerResult = await this.service.fetchBlockHeader(hash);
|
|
440
|
+
if (rcBlockNumber) {
|
|
441
|
+
const apiAt = await this.api.at(hash);
|
|
442
|
+
const ahTimestamp = await apiAt.query.timestamp.now();
|
|
443
|
+
const enhancedResult = {
|
|
444
|
+
parentHash: headerResult.parentHash,
|
|
445
|
+
number: headerResult.number,
|
|
446
|
+
stateRoot: headerResult.stateRoot,
|
|
447
|
+
extrinsicsRoot: headerResult.extrinsicsRoot,
|
|
448
|
+
digest: headerResult.digest,
|
|
449
|
+
rcBlockNumber,
|
|
450
|
+
ahTimestamp: ahTimestamp.toString(),
|
|
451
|
+
};
|
|
452
|
+
BlocksController.sanitizedSend(res, [enhancedResult]);
|
|
453
|
+
}
|
|
454
|
+
else {
|
|
455
|
+
BlocksController.sanitizedSend(res, headerResult);
|
|
456
|
+
}
|
|
263
457
|
};
|
|
264
458
|
/**
|
|
265
459
|
* Return a collection of blocks, given a range.
|
|
@@ -267,11 +461,12 @@ class BlocksController extends AbstractController_1.default {
|
|
|
267
461
|
* @param req Express Request
|
|
268
462
|
* @param res Express Response
|
|
269
463
|
*/
|
|
270
|
-
this.getBlocks = async ({ query: { range, eventDocs, extrinsicDocs, noFees }, method, route }, res) => {
|
|
464
|
+
this.getBlocks = async ({ query: { range, eventDocs, extrinsicDocs, noFees, useRcBlock }, method, route }, res) => {
|
|
271
465
|
if (!range)
|
|
272
466
|
throw new http_errors_1.BadRequest('range query parameter must be inputted.');
|
|
273
467
|
// We set a max range to 500 blocks.
|
|
274
468
|
const rangeOfNums = this.parseRangeOfNumbersOrThrow(range, 500);
|
|
469
|
+
const useRcBlockArg = useRcBlock === 'true';
|
|
275
470
|
const eventDocsArg = eventDocs === 'true';
|
|
276
471
|
const extrinsicDocsArg = extrinsicDocs === 'true';
|
|
277
472
|
const queryFinalizedHead = !this.options.finalizes ? false : true;
|
|
@@ -291,17 +486,43 @@ class BlocksController extends AbstractController_1.default {
|
|
|
291
486
|
const blocksPromise = [];
|
|
292
487
|
for (let i = 0; i < rangeOfNums.length; i++) {
|
|
293
488
|
const result = pQueue.run(async () => {
|
|
294
|
-
|
|
295
|
-
|
|
489
|
+
let hash;
|
|
490
|
+
let rcBlockNumber;
|
|
491
|
+
if (useRcBlockArg) {
|
|
492
|
+
// Treat range numbers as relay chain block identifiers
|
|
493
|
+
rcBlockNumber = rangeOfNums[i].toString();
|
|
494
|
+
hash = await this.getAhAtFromRcAt(rcBlockNumber);
|
|
495
|
+
// Skip this RC block if it doesn't have a corresponding AH block
|
|
496
|
+
if (!hash) {
|
|
497
|
+
return null;
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
else {
|
|
501
|
+
// Get block hash:
|
|
502
|
+
hash = await this.getHashForBlock(rangeOfNums[i].toString());
|
|
503
|
+
}
|
|
296
504
|
// Get API at that hash:
|
|
297
505
|
const historicApi = await this.api.at(hash);
|
|
298
506
|
// Get block details using this API/hash:
|
|
299
|
-
|
|
507
|
+
const block = await this.service.fetchBlock(hash, historicApi, options);
|
|
508
|
+
if (rcBlockNumber) {
|
|
509
|
+
// Add RC context to the block
|
|
510
|
+
const apiAt = await this.api.at(hash);
|
|
511
|
+
const ahTimestamp = await apiAt.query.timestamp.now();
|
|
512
|
+
return {
|
|
513
|
+
...block,
|
|
514
|
+
rcBlockNumber,
|
|
515
|
+
ahTimestamp: ahTimestamp.toString(),
|
|
516
|
+
};
|
|
517
|
+
}
|
|
518
|
+
return block;
|
|
300
519
|
});
|
|
301
520
|
blocksPromise.push(result);
|
|
302
521
|
}
|
|
303
|
-
const
|
|
522
|
+
const allBlocks = await Promise.all(blocksPromise);
|
|
304
523
|
blocksPromise.length = 0;
|
|
524
|
+
// Filter out null values (skipped RC blocks that don't have corresponding AH blocks)
|
|
525
|
+
const blocks = allBlocks.filter((block) => block !== null);
|
|
305
526
|
/**
|
|
306
527
|
* Sort blocks from least to greatest.
|
|
307
528
|
*/
|
|
@@ -324,7 +545,7 @@ class BlocksController extends AbstractController_1.default {
|
|
|
324
545
|
this.blockStore = options.blockStore;
|
|
325
546
|
}
|
|
326
547
|
initRoutes() {
|
|
327
|
-
this.router.use(this.path, (0, validate_1.validateBoolean)(['eventDocs', 'extrinsicDocs', 'finalized']));
|
|
548
|
+
this.router.use(this.path, (0, validate_1.validateBoolean)(['eventDocs', 'extrinsicDocs', 'finalized']), validate_1.validateUseRcBlock);
|
|
328
549
|
this.safeMountAsyncGetHandlers([
|
|
329
550
|
['/', this.getBlocks],
|
|
330
551
|
['/head', this.getLatestBlock],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlocksController.js","sourceRoot":"","sources":["../../../../src/controllers/blocks/BlocksController.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BlocksController.js","sourceRoot":"","sources":["../../../../src/controllers/blocks/BlocksController.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
18
18
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
19
19
|
};
|
|
20
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
const validate_1 = require("../../middleware/validate");
|
|
21
22
|
const services_1 = require("../../services");
|
|
22
23
|
const AbstractController_1 = __importDefault(require("../AbstractController"));
|
|
23
24
|
class BlocksExtrinsicsController extends AbstractController_1.default {
|
|
@@ -28,48 +29,106 @@ class BlocksExtrinsicsController extends AbstractController_1.default {
|
|
|
28
29
|
* @param _req Express Request
|
|
29
30
|
* @param res Express Response
|
|
30
31
|
*/
|
|
31
|
-
this.getExtrinsicByTimepoint = async ({ params: { blockId, extrinsicIndex }, query: { eventDocs, extrinsicDocs, noFees } }, res) => {
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
32
|
+
this.getExtrinsicByTimepoint = async ({ params: { blockId, extrinsicIndex }, query: { eventDocs, extrinsicDocs, noFees, useRcBlock } }, res) => {
|
|
33
|
+
const useRcBlockArg = useRcBlock === 'true';
|
|
34
|
+
if (useRcBlockArg) {
|
|
35
|
+
// Treat the blockId parameter as a relay chain block identifier
|
|
36
|
+
const rcBlockNumber = blockId;
|
|
37
|
+
const hash = await this.getAhAtFromRcAt(blockId);
|
|
38
|
+
// Return empty array if no Asset Hub block found
|
|
39
|
+
if (!hash) {
|
|
40
|
+
BlocksExtrinsicsController.sanitizedSend(res, []);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const eventDocsArg = eventDocs === 'true';
|
|
44
|
+
const extrinsicDocsArg = extrinsicDocs === 'true';
|
|
45
|
+
const noFeesArg = noFees === 'true';
|
|
46
|
+
const options = {
|
|
47
|
+
eventDocs: eventDocsArg,
|
|
48
|
+
extrinsicDocs: extrinsicDocsArg,
|
|
49
|
+
checkFinalized: true,
|
|
50
|
+
queryFinalizedHead: false,
|
|
51
|
+
omitFinalizedTag: true,
|
|
52
|
+
noFees: noFeesArg,
|
|
53
|
+
checkDecodedXcm: false,
|
|
54
|
+
paraId: undefined,
|
|
55
|
+
};
|
|
56
|
+
const cacheKey = hash.toString() +
|
|
57
|
+
Number(options.eventDocs) +
|
|
58
|
+
Number(options.extrinsicDocs) +
|
|
59
|
+
Number(options.checkFinalized) +
|
|
60
|
+
Number(options.noFees) +
|
|
61
|
+
Number(options.checkDecodedXcm);
|
|
62
|
+
const isBlockCached = this.blockStore.get(cacheKey);
|
|
63
|
+
const historicApi = await this.api.at(hash);
|
|
64
|
+
const block = isBlockCached ? isBlockCached : await this.service.fetchBlock(hash, historicApi, options);
|
|
65
|
+
if (!isBlockCached) {
|
|
66
|
+
this.blockStore.set(cacheKey, block);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Verify our param `extrinsicIndex` is an integer represented as a string
|
|
70
|
+
*/
|
|
71
|
+
this.parseNumberOrThrow(extrinsicIndex, '`exstrinsicIndex` path param is not a number');
|
|
72
|
+
/**
|
|
73
|
+
* Change extrinsicIndex from a type string to a number before passing it
|
|
74
|
+
* into any service.
|
|
75
|
+
*/
|
|
76
|
+
const index = parseInt(extrinsicIndex, 10);
|
|
77
|
+
const extrinsic = this.service.fetchExtrinsicByIndex(block, index);
|
|
78
|
+
const apiAt = await this.api.at(hash);
|
|
79
|
+
const ahTimestamp = await apiAt.query.timestamp.now();
|
|
80
|
+
const enhancedResult = {
|
|
81
|
+
...extrinsic,
|
|
82
|
+
rcBlockNumber,
|
|
83
|
+
ahTimestamp: ahTimestamp.toString(),
|
|
84
|
+
};
|
|
85
|
+
BlocksExtrinsicsController.sanitizedSend(res, [enhancedResult]);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
const hash = await this.getHashForBlock(blockId);
|
|
89
|
+
const eventDocsArg = eventDocs === 'true';
|
|
90
|
+
const extrinsicDocsArg = extrinsicDocs === 'true';
|
|
91
|
+
const noFeesArg = noFees === 'true';
|
|
92
|
+
const options = {
|
|
93
|
+
eventDocs: eventDocsArg,
|
|
94
|
+
extrinsicDocs: extrinsicDocsArg,
|
|
95
|
+
checkFinalized: true,
|
|
96
|
+
queryFinalizedHead: false,
|
|
97
|
+
omitFinalizedTag: true,
|
|
98
|
+
noFees: noFeesArg,
|
|
99
|
+
checkDecodedXcm: false,
|
|
100
|
+
paraId: undefined,
|
|
101
|
+
};
|
|
102
|
+
const cacheKey = hash.toString() +
|
|
103
|
+
Number(options.eventDocs) +
|
|
104
|
+
Number(options.extrinsicDocs) +
|
|
105
|
+
Number(options.checkFinalized) +
|
|
106
|
+
Number(options.noFees) +
|
|
107
|
+
Number(options.checkDecodedXcm);
|
|
108
|
+
const isBlockCached = this.blockStore.get(cacheKey);
|
|
109
|
+
const historicApi = await this.api.at(hash);
|
|
110
|
+
const block = isBlockCached ? isBlockCached : await this.service.fetchBlock(hash, historicApi, options);
|
|
111
|
+
if (!isBlockCached) {
|
|
112
|
+
this.blockStore.set(cacheKey, block);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Verify our param `extrinsicIndex` is an integer represented as a string
|
|
116
|
+
*/
|
|
117
|
+
this.parseNumberOrThrow(extrinsicIndex, '`exstrinsicIndex` path param is not a number');
|
|
118
|
+
/**
|
|
119
|
+
* Change extrinsicIndex from a type string to a number before passing it
|
|
120
|
+
* into any service.
|
|
121
|
+
*/
|
|
122
|
+
const index = parseInt(extrinsicIndex, 10);
|
|
123
|
+
const extrinsic = this.service.fetchExtrinsicByIndex(block, index);
|
|
124
|
+
BlocksExtrinsicsController.sanitizedSend(res, extrinsic);
|
|
57
125
|
}
|
|
58
|
-
/**
|
|
59
|
-
* Verify our param `extrinsicIndex` is an integer represented as a string
|
|
60
|
-
*/
|
|
61
|
-
this.parseNumberOrThrow(extrinsicIndex, '`exstrinsicIndex` path param is not a number');
|
|
62
|
-
/**
|
|
63
|
-
* Change extrinsicIndex from a type string to a number before passing it
|
|
64
|
-
* into any service.
|
|
65
|
-
*/
|
|
66
|
-
const index = parseInt(extrinsicIndex, 10);
|
|
67
|
-
BlocksExtrinsicsController.sanitizedSend(res, this.service.fetchExtrinsicByIndex(block, index));
|
|
68
126
|
};
|
|
69
127
|
this.initRoutes();
|
|
70
128
|
this.blockStore = options.blockStore;
|
|
71
129
|
}
|
|
72
130
|
initRoutes() {
|
|
131
|
+
this.router.use(this.path, validate_1.validateUseRcBlock);
|
|
73
132
|
this.safeMountAsyncGetHandlers([['/:extrinsicIndex', this.getExtrinsicByTimepoint]]);
|
|
74
133
|
}
|
|
75
134
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlocksExtrinsicsController.js","sourceRoot":"","sources":["../../../../src/controllers/blocks/BlocksExtrinsicsController.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE;;;;;AAMxE,6CAA+C;AAG/C,+EAAuD;AAEvD,MAAqB,0BAA2B,SAAQ,4BAAiC;IAIxF,YAAY,GAAW,EAAE,OAA0B;QAClD,KAAK,CACJ,GAAG,EACH,6BAA6B,EAC7B,IAAI,wBAAa,CAAC,GAAG,EAAE,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,cAAc,CAAC,CACzE,CAAC;
|
|
1
|
+
{"version":3,"file":"BlocksExtrinsicsController.js","sourceRoot":"","sources":["../../../../src/controllers/blocks/BlocksExtrinsicsController.ts"],"names":[],"mappings":"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"}
|