@acala-network/chopsticks-core 0.8.0-0 → 0.8.0-2
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 +5 -1
- package/lib/blockchain/block-builder.js +52 -45
- package/lib/blockchain/block.js +31 -27
- package/lib/blockchain/head-state.js +14 -9
- package/lib/blockchain/index.js +36 -32
- package/lib/blockchain/inherent/index.js +20 -11
- package/lib/blockchain/inherent/para-enter.js +7 -3
- package/lib/blockchain/inherent/parachain/babe-randomness.js +7 -3
- package/lib/blockchain/inherent/parachain/nimbus-author-inherent.js +7 -3
- package/lib/blockchain/inherent/parachain/validation-data.js +33 -26
- package/lib/blockchain/storage-layer.js +22 -14
- package/lib/blockchain/txpool.js +26 -19
- package/lib/db/browser.d.ts +1 -1
- package/lib/db/browser.js +42 -11
- package/lib/db/entities.js +6 -3
- package/lib/db/index.d.ts +1 -1
- package/lib/db/index.js +31 -4
- package/lib/db/node.js +31 -4
- package/lib/executor.js +40 -32
- package/lib/genesis-provider.js +46 -16
- package/lib/index.js +29 -13
- package/lib/logger.js +10 -3
- package/lib/offchain.js +11 -7
- package/lib/schema/index.js +12 -9
- package/lib/setup.d.ts +1 -1
- package/lib/setup.js +30 -21
- package/lib/utils/index.js +35 -12
- package/lib/utils/key-cache.js +24 -17
- package/lib/utils/proof.js +17 -9
- package/lib/utils/set-storage.js +15 -11
- package/lib/utils/time-travel.js +28 -21
- package/lib/xcm/downward.js +15 -11
- package/lib/xcm/horizontal.js +11 -7
- package/lib/xcm/index.js +19 -14
- package/lib/xcm/upward.js +10 -6
- package/package.json +2 -2
package/lib/blockchain/txpool.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
3
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
4
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -18,21 +19,26 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
18
19
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
19
20
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
20
21
|
};
|
|
22
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
23
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
24
|
+
};
|
|
21
25
|
var _TxPool_instances, _TxPool_chain, _TxPool_pool, _TxPool_ump, _TxPool_dmp, _TxPool_hrmp, _TxPool_mode, _TxPool_inherentProvider, _TxPool_pendingBlocks, _TxPool_isBuilding, _TxPool_getSigner, _TxPool_maybeBuildBlock, _TxPool_batchBuildBlock, _TxPool_buildBlockIfNeeded, _TxPool_buildBlock;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
+
exports.TxPool = exports.BuildBlockMode = exports.APPLY_EXTRINSIC_ERROR = void 0;
|
|
28
|
+
const eventemitter3_1 = require("eventemitter3");
|
|
29
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
30
|
+
const utils_1 = require("../utils");
|
|
31
|
+
const block_builder_1 = require("./block-builder");
|
|
32
|
+
const logger_1 = require("../logger");
|
|
33
|
+
const logger = logger_1.defaultLogger.child({ name: 'txpool' });
|
|
34
|
+
exports.APPLY_EXTRINSIC_ERROR = 'TxPool::ApplyExtrinsicError';
|
|
35
|
+
var BuildBlockMode;
|
|
30
36
|
(function (BuildBlockMode) {
|
|
31
37
|
BuildBlockMode[BuildBlockMode["Batch"] = 0] = "Batch";
|
|
32
38
|
BuildBlockMode[BuildBlockMode["Instant"] = 1] = "Instant";
|
|
33
39
|
BuildBlockMode[BuildBlockMode["Manual"] = 2] = "Manual";
|
|
34
|
-
})(BuildBlockMode || (BuildBlockMode = {}));
|
|
35
|
-
|
|
40
|
+
})(BuildBlockMode || (exports.BuildBlockMode = BuildBlockMode = {}));
|
|
41
|
+
class TxPool {
|
|
36
42
|
constructor(chain, inherentProvider, mode = BuildBlockMode.Batch) {
|
|
37
43
|
_TxPool_instances.add(this);
|
|
38
44
|
_TxPool_chain.set(this, void 0);
|
|
@@ -43,9 +49,9 @@ export class TxPool {
|
|
|
43
49
|
_TxPool_mode.set(this, void 0);
|
|
44
50
|
_TxPool_inherentProvider.set(this, void 0);
|
|
45
51
|
_TxPool_pendingBlocks.set(this, []);
|
|
46
|
-
this.event = new EventEmitter();
|
|
52
|
+
this.event = new eventemitter3_1.EventEmitter();
|
|
47
53
|
_TxPool_isBuilding.set(this, false);
|
|
48
|
-
_TxPool_batchBuildBlock.set(this,
|
|
54
|
+
_TxPool_batchBuildBlock.set(this, lodash_1.default.debounce(this.buildBlock, 100, { maxWait: 1000 }));
|
|
49
55
|
__classPrivateFieldSet(this, _TxPool_chain, chain, "f");
|
|
50
56
|
__classPrivateFieldSet(this, _TxPool_mode, mode, "f");
|
|
51
57
|
__classPrivateFieldSet(this, _TxPool_inherentProvider, inherentProvider, "f");
|
|
@@ -83,13 +89,13 @@ export class TxPool {
|
|
|
83
89
|
}
|
|
84
90
|
submitExtrinsic(extrinsic) {
|
|
85
91
|
return __awaiter(this, void 0, void 0, function* () {
|
|
86
|
-
logger.debug({ extrinsic: truncate(extrinsic) }, 'submit extrinsic');
|
|
92
|
+
logger.debug({ extrinsic: (0, logger_1.truncate)(extrinsic) }, 'submit extrinsic');
|
|
87
93
|
__classPrivateFieldGet(this, _TxPool_pool, "f").push({ extrinsic, signer: yield __classPrivateFieldGet(this, _TxPool_instances, "m", _TxPool_getSigner).call(this, extrinsic) });
|
|
88
94
|
__classPrivateFieldGet(this, _TxPool_instances, "m", _TxPool_maybeBuildBlock).call(this);
|
|
89
95
|
});
|
|
90
96
|
}
|
|
91
97
|
submitUpwardMessages(id, ump) {
|
|
92
|
-
logger.debug({ id, ump: truncate(ump) }, 'submit upward messages');
|
|
98
|
+
logger.debug({ id, ump: (0, logger_1.truncate)(ump) }, 'submit upward messages');
|
|
93
99
|
if (!__classPrivateFieldGet(this, _TxPool_ump, "f")[id]) {
|
|
94
100
|
__classPrivateFieldGet(this, _TxPool_ump, "f")[id] = [];
|
|
95
101
|
}
|
|
@@ -97,12 +103,12 @@ export class TxPool {
|
|
|
97
103
|
__classPrivateFieldGet(this, _TxPool_instances, "m", _TxPool_maybeBuildBlock).call(this);
|
|
98
104
|
}
|
|
99
105
|
submitDownwardMessages(dmp) {
|
|
100
|
-
logger.debug({ dmp: truncate(dmp) }, 'submit downward messages');
|
|
106
|
+
logger.debug({ dmp: (0, logger_1.truncate)(dmp) }, 'submit downward messages');
|
|
101
107
|
__classPrivateFieldGet(this, _TxPool_dmp, "f").push(...dmp);
|
|
102
108
|
__classPrivateFieldGet(this, _TxPool_instances, "m", _TxPool_maybeBuildBlock).call(this);
|
|
103
109
|
}
|
|
104
110
|
submitHorizontalMessages(id, hrmp) {
|
|
105
|
-
logger.debug({ id, hrmp: truncate(hrmp) }, 'submit horizontal messages');
|
|
111
|
+
logger.debug({ id, hrmp: (0, logger_1.truncate)(hrmp) }, 'submit horizontal messages');
|
|
106
112
|
if (!__classPrivateFieldGet(this, _TxPool_hrmp, "f")[id]) {
|
|
107
113
|
__classPrivateFieldGet(this, _TxPool_hrmp, "f")[id] = [];
|
|
108
114
|
}
|
|
@@ -113,7 +119,7 @@ export class TxPool {
|
|
|
113
119
|
return __awaiter(this, void 0, void 0, function* () {
|
|
114
120
|
__classPrivateFieldGet(this, _TxPool_pendingBlocks, "f").push({
|
|
115
121
|
params,
|
|
116
|
-
deferred: defer(),
|
|
122
|
+
deferred: (0, utils_1.defer)(),
|
|
117
123
|
});
|
|
118
124
|
__classPrivateFieldGet(this, _TxPool_instances, "m", _TxPool_buildBlockIfNeeded).call(this);
|
|
119
125
|
yield this.upcomingBlocks();
|
|
@@ -153,6 +159,7 @@ export class TxPool {
|
|
|
153
159
|
});
|
|
154
160
|
}
|
|
155
161
|
}
|
|
162
|
+
exports.TxPool = TxPool;
|
|
156
163
|
_TxPool_chain = new WeakMap(), _TxPool_pool = new WeakMap(), _TxPool_ump = new WeakMap(), _TxPool_dmp = new WeakMap(), _TxPool_hrmp = new WeakMap(), _TxPool_mode = new WeakMap(), _TxPool_inherentProvider = new WeakMap(), _TxPool_pendingBlocks = new WeakMap(), _TxPool_isBuilding = new WeakMap(), _TxPool_batchBuildBlock = new WeakMap(), _TxPool_instances = new WeakSet(), _TxPool_getSigner = function _TxPool_getSigner(extrinsic) {
|
|
157
164
|
return __awaiter(this, void 0, void 0, function* () {
|
|
158
165
|
const registry = yield __classPrivateFieldGet(this, _TxPool_chain, "f").head.registry;
|
|
@@ -197,8 +204,8 @@ _TxPool_chain = new WeakMap(), _TxPool_pool = new WeakMap(), _TxPool_ump = new W
|
|
|
197
204
|
logger.trace({ params }, 'build block');
|
|
198
205
|
const head = __classPrivateFieldGet(this, _TxPool_chain, "f").head;
|
|
199
206
|
const inherents = yield __classPrivateFieldGet(this, _TxPool_inherentProvider, "f").createInherents(head, params);
|
|
200
|
-
const [newBlock, pendingExtrinsics] = yield buildBlock(head, inherents, params.transactions, params.upwardMessages, (extrinsic, error) => {
|
|
201
|
-
this.event.emit(APPLY_EXTRINSIC_ERROR, [extrinsic, error]);
|
|
207
|
+
const [newBlock, pendingExtrinsics] = yield (0, block_builder_1.buildBlock)(head, inherents, params.transactions, params.upwardMessages, (extrinsic, error) => {
|
|
208
|
+
this.event.emit(exports.APPLY_EXTRINSIC_ERROR, [extrinsic, error]);
|
|
202
209
|
});
|
|
203
210
|
for (const extrinsic of pendingExtrinsics) {
|
|
204
211
|
__classPrivateFieldGet(this, _TxPool_pool, "f").push({ extrinsic, signer: yield __classPrivateFieldGet(this, _TxPool_instances, "m", _TxPool_getSigner).call(this, extrinsic) });
|
package/lib/db/browser.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { DataSource } from 'typeorm';
|
|
2
|
-
export declare const openDb: (
|
|
2
|
+
export declare const openDb: (sqlWasmUrl: URL) => Promise<DataSource>;
|
package/lib/db/browser.js
CHANGED
|
@@ -1,3 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
1
25
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
26
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
27
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -7,23 +31,29 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
31
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
32
|
});
|
|
9
33
|
};
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
34
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
+
};
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
exports.openDb = void 0;
|
|
39
|
+
const typeorm_1 = require("typeorm");
|
|
40
|
+
const localforage_1 = require("localforage");
|
|
41
|
+
const sql_js_1 = __importDefault(require("sql.js"));
|
|
42
|
+
const entities = __importStar(require("./entities"));
|
|
43
|
+
const openDb = (sqlWasmUrl) => __awaiter(void 0, void 0, void 0, function* () {
|
|
44
|
+
if (!globalThis.localforage) {
|
|
45
|
+
globalThis.localforage = (0, localforage_1.createInstance)({ name: 'chopsticks' });
|
|
46
|
+
}
|
|
47
|
+
const wasmBinary = yield fetch(sqlWasmUrl).then((response) => response.arrayBuffer());
|
|
48
|
+
const source = new typeorm_1.DataSource({
|
|
19
49
|
type: 'sqljs',
|
|
20
|
-
location:
|
|
50
|
+
location: 'cache',
|
|
21
51
|
entities: Object.values(entities),
|
|
22
52
|
synchronize: true,
|
|
23
53
|
autoSave: true,
|
|
24
54
|
logging: false,
|
|
25
55
|
useLocalForage: true,
|
|
26
|
-
driver:
|
|
56
|
+
driver: sql_js_1.default,
|
|
27
57
|
sqlJsConfig: {
|
|
28
58
|
wasmBinary,
|
|
29
59
|
},
|
|
@@ -31,3 +61,4 @@ export const openDb = (dbPath) => __awaiter(void 0, void 0, void 0, function* ()
|
|
|
31
61
|
yield source.initialize();
|
|
32
62
|
return source;
|
|
33
63
|
});
|
|
64
|
+
exports.openDb = openDb;
|
package/lib/db/entities.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BlockEntity = exports.KeyValuePair = void 0;
|
|
4
|
+
const typeorm_1 = require("typeorm");
|
|
5
|
+
exports.KeyValuePair = new typeorm_1.EntitySchema({
|
|
3
6
|
name: 'KeyValuePair',
|
|
4
7
|
columns: {
|
|
5
8
|
blockHash: {
|
|
@@ -18,7 +21,7 @@ export const KeyValuePair = new EntitySchema({
|
|
|
18
21
|
},
|
|
19
22
|
},
|
|
20
23
|
});
|
|
21
|
-
|
|
24
|
+
exports.BlockEntity = new typeorm_1.EntitySchema({
|
|
22
25
|
name: 'Block',
|
|
23
26
|
columns: {
|
|
24
27
|
hash: {
|
package/lib/db/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const openDb: (dbPath: string) => Promise<import("typeorm").DataSource>;
|
|
1
|
+
export declare const openDb: (dbPath: string | URL) => Promise<import("typeorm").DataSource>;
|
package/lib/db/index.js
CHANGED
|
@@ -1,3 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
1
25
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
26
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
27
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -7,11 +31,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
31
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
32
|
});
|
|
9
33
|
};
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
34
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
+
exports.openDb = void 0;
|
|
36
|
+
const openDb = (dbPath) => __awaiter(void 0, void 0, void 0, function* () {
|
|
37
|
+
if (dbPath instanceof URL) {
|
|
38
|
+
return (yield Promise.resolve().then(() => __importStar(require('./browser')))).openDb(dbPath);
|
|
13
39
|
}
|
|
14
40
|
else {
|
|
15
|
-
return (yield
|
|
41
|
+
return (yield Promise.resolve().then(() => __importStar(require('./node')))).openDb(dbPath);
|
|
16
42
|
}
|
|
17
43
|
});
|
|
44
|
+
exports.openDb = openDb;
|
package/lib/db/node.js
CHANGED
|
@@ -1,3 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
1
25
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
26
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
27
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -7,10 +31,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
31
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
32
|
});
|
|
9
33
|
};
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
34
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
+
exports.openDb = void 0;
|
|
36
|
+
const typeorm_1 = require("typeorm");
|
|
37
|
+
const entities = __importStar(require("./entities"));
|
|
38
|
+
const openDb = (dbPath) => __awaiter(void 0, void 0, void 0, function* () {
|
|
39
|
+
const source = new typeorm_1.DataSource({
|
|
14
40
|
type: 'sqlite',
|
|
15
41
|
database: dbPath,
|
|
16
42
|
entities: Object.values(entities),
|
|
@@ -20,3 +46,4 @@ export const openDb = (dbPath) => __awaiter(void 0, void 0, void 0, function* ()
|
|
|
20
46
|
yield source.initialize();
|
|
21
47
|
return source;
|
|
22
48
|
});
|
|
49
|
+
exports.openDb = openDb;
|
package/lib/executor.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
3
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
4
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -7,51 +8,57 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
9
|
});
|
|
9
10
|
};
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
version.
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.getAuraSlotDuration = exports.emptyTaskHandler = exports.taskHandler = exports.runTask = exports.createProof = exports.decodeProof = exports.calculateStateRoot = exports.getRuntimeVersion = void 0;
|
|
16
|
+
const util_1 = require("@polkadot/util");
|
|
17
|
+
const util_crypto_1 = require("@polkadot/util-crypto");
|
|
18
|
+
const key_cache_1 = require("./utils/key-cache");
|
|
19
|
+
const chopsticks_executor_1 = require("@acala-network/chopsticks-executor");
|
|
20
|
+
const logger_1 = require("./logger");
|
|
21
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
22
|
+
const logger = logger_1.defaultLogger.child({ name: 'executor' });
|
|
23
|
+
const getRuntimeVersion = (code) => __awaiter(void 0, void 0, void 0, function* () {
|
|
24
|
+
return (0, chopsticks_executor_1.get_runtime_version)(code).then((version) => {
|
|
25
|
+
version.specName = (0, util_1.hexToString)(version.specName);
|
|
26
|
+
version.implName = (0, util_1.hexToString)(version.implName);
|
|
25
27
|
return version;
|
|
26
28
|
});
|
|
27
29
|
});
|
|
30
|
+
exports.getRuntimeVersion = getRuntimeVersion;
|
|
28
31
|
// trie_version: 0 for old trie, 1 for new trie
|
|
29
|
-
|
|
30
|
-
return calculate_state_root(entries, trie_version);
|
|
32
|
+
const calculateStateRoot = (entries, trie_version) => __awaiter(void 0, void 0, void 0, function* () {
|
|
33
|
+
return (0, chopsticks_executor_1.calculate_state_root)(entries, trie_version);
|
|
31
34
|
});
|
|
32
|
-
|
|
33
|
-
|
|
35
|
+
exports.calculateStateRoot = calculateStateRoot;
|
|
36
|
+
const decodeProof = (trieRootHash, keys, nodes) => __awaiter(void 0, void 0, void 0, function* () {
|
|
37
|
+
const decoded = yield (0, chopsticks_executor_1.decode_proof)(trieRootHash, keys, nodes);
|
|
34
38
|
return decoded.reduce((accum, [key, value]) => {
|
|
35
39
|
accum[key] = value;
|
|
36
40
|
return accum;
|
|
37
41
|
}, {});
|
|
38
42
|
});
|
|
39
|
-
|
|
40
|
-
|
|
43
|
+
exports.decodeProof = decodeProof;
|
|
44
|
+
const createProof = (nodes, entries) => __awaiter(void 0, void 0, void 0, function* () {
|
|
45
|
+
const result = yield (0, chopsticks_executor_1.create_proof)(nodes, entries);
|
|
41
46
|
return { trieRootHash: result[0], nodes: result[1] };
|
|
42
47
|
});
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
48
|
+
exports.createProof = createProof;
|
|
49
|
+
const runTask = (task, callback = exports.emptyTaskHandler) => __awaiter(void 0, void 0, void 0, function* () {
|
|
50
|
+
logger.trace((0, logger_1.truncate)(task), 'taskRun');
|
|
51
|
+
const response = yield (0, chopsticks_executor_1.run_task)(task, callback, typeof process === 'object' ? process.env.RUST_LOG : 'info');
|
|
46
52
|
if (response.Call) {
|
|
47
|
-
logger.trace(truncate(response.Call), 'taskResponse');
|
|
53
|
+
logger.trace((0, logger_1.truncate)(response.Call), 'taskResponse');
|
|
48
54
|
}
|
|
49
55
|
else {
|
|
50
56
|
logger.trace({ response }, 'taskResponse');
|
|
51
57
|
}
|
|
52
58
|
return response;
|
|
53
59
|
});
|
|
54
|
-
|
|
60
|
+
exports.runTask = runTask;
|
|
61
|
+
const taskHandler = (block) => {
|
|
55
62
|
return {
|
|
56
63
|
getStorage: function (key) {
|
|
57
64
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -67,7 +74,7 @@ export const taskHandler = (block) => {
|
|
|
67
74
|
getNextKey: function (prefix, key) {
|
|
68
75
|
return __awaiter(this, void 0, void 0, function* () {
|
|
69
76
|
const [nextKey] = yield block.getKeysPaged({
|
|
70
|
-
prefix: prefix.length === 2 /** 0x */ ? key.slice(0, PREFIX_LENGTH) : prefix,
|
|
77
|
+
prefix: prefix.length === 2 /** 0x */ ? key.slice(0, key_cache_1.PREFIX_LENGTH) : prefix,
|
|
71
78
|
pageSize: 1,
|
|
72
79
|
startKey: key,
|
|
73
80
|
});
|
|
@@ -88,7 +95,7 @@ export const taskHandler = (block) => {
|
|
|
88
95
|
},
|
|
89
96
|
offchainRandomSeed: function () {
|
|
90
97
|
return __awaiter(this, void 0, void 0, function* () {
|
|
91
|
-
return randomAsHex(32);
|
|
98
|
+
return (0, util_crypto_1.randomAsHex)(32);
|
|
92
99
|
});
|
|
93
100
|
},
|
|
94
101
|
offchainSubmitTransaction: function (tx) {
|
|
@@ -108,7 +115,8 @@ export const taskHandler = (block) => {
|
|
|
108
115
|
},
|
|
109
116
|
};
|
|
110
117
|
};
|
|
111
|
-
|
|
118
|
+
exports.taskHandler = taskHandler;
|
|
119
|
+
exports.emptyTaskHandler = {
|
|
112
120
|
getStorage: function (_key) {
|
|
113
121
|
return __awaiter(this, void 0, void 0, function* () {
|
|
114
122
|
throw new Error('Method not implemented');
|
|
@@ -145,8 +153,8 @@ export const emptyTaskHandler = {
|
|
|
145
153
|
});
|
|
146
154
|
},
|
|
147
155
|
};
|
|
148
|
-
|
|
149
|
-
const result = yield runTask({
|
|
156
|
+
exports.getAuraSlotDuration = lodash_1.default.memoize((wasm, registry) => __awaiter(void 0, void 0, void 0, function* () {
|
|
157
|
+
const result = yield (0, exports.runTask)({
|
|
150
158
|
wasm,
|
|
151
159
|
calls: [['AuraApi_slot_duration', []]],
|
|
152
160
|
mockSignatureHost: false,
|
|
@@ -155,6 +163,6 @@ export const getAuraSlotDuration = _.memoize((wasm, registry) => __awaiter(void
|
|
|
155
163
|
});
|
|
156
164
|
if (!result.Call)
|
|
157
165
|
throw new Error(result.Error);
|
|
158
|
-
const slotDuration = registry.createType('u64', hexToU8a(result.Call.result)).toNumber();
|
|
166
|
+
const slotDuration = registry.createType('u64', (0, util_1.hexToU8a)(result.Call.result)).toNumber();
|
|
159
167
|
return slotDuration;
|
|
160
168
|
}));
|
package/lib/genesis-provider.js
CHANGED
|
@@ -1,3 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
1
25
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
26
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
27
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -18,14 +42,19 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
18
42
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
19
43
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
20
44
|
};
|
|
45
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
46
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
47
|
+
};
|
|
21
48
|
var _a, _GenesisProvider_isConnected, _GenesisProvider_eventemitter, _GenesisProvider_isReadyPromise, _GenesisProvider_genesis, _GenesisProvider_stateRoot;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
49
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
+
exports.GenesisProvider = void 0;
|
|
51
|
+
const eventemitter3_1 = require("eventemitter3");
|
|
52
|
+
const util_1 = require("@polkadot/util");
|
|
53
|
+
const axios_1 = __importDefault(require("axios"));
|
|
54
|
+
const schema_1 = require("./schema");
|
|
55
|
+
const executor_1 = require("./executor");
|
|
56
|
+
const utils_1 = require("./utils");
|
|
57
|
+
class GenesisProvider {
|
|
29
58
|
constructor(genesis) {
|
|
30
59
|
_GenesisProvider_isConnected.set(this, false);
|
|
31
60
|
_GenesisProvider_eventemitter.set(this, void 0);
|
|
@@ -77,8 +106,8 @@ export class GenesisProvider {
|
|
|
77
106
|
case 'system_name':
|
|
78
107
|
return __classPrivateFieldGet(this, _GenesisProvider_genesis, "f").name;
|
|
79
108
|
case 'state_getMetadata': {
|
|
80
|
-
const code = __classPrivateFieldGet(this, _GenesisProvider_genesis, "f").genesis.raw.top[stringToHex(':code')];
|
|
81
|
-
return runTask({
|
|
109
|
+
const code = __classPrivateFieldGet(this, _GenesisProvider_genesis, "f").genesis.raw.top[(0, util_1.stringToHex)(':code')];
|
|
110
|
+
return (0, executor_1.runTask)({
|
|
82
111
|
wasm: code,
|
|
83
112
|
calls: [['Metadata_metadata', []]],
|
|
84
113
|
mockSignatureHost: false,
|
|
@@ -109,11 +138,11 @@ export class GenesisProvider {
|
|
|
109
138
|
throw Error('unimplemented');
|
|
110
139
|
});
|
|
111
140
|
__classPrivateFieldSet(this, _GenesisProvider_genesis, genesis, "f");
|
|
112
|
-
__classPrivateFieldSet(this, _GenesisProvider_stateRoot, calculateStateRoot(Object.entries(__classPrivateFieldGet(this, _GenesisProvider_genesis, "f").genesis.raw.top).reduce((accu, item) => {
|
|
141
|
+
__classPrivateFieldSet(this, _GenesisProvider_stateRoot, (0, executor_1.calculateStateRoot)(Object.entries(__classPrivateFieldGet(this, _GenesisProvider_genesis, "f").genesis.raw.top).reduce((accu, item) => {
|
|
113
142
|
accu.push(item);
|
|
114
143
|
return accu;
|
|
115
144
|
}, []), 1), "f");
|
|
116
|
-
__classPrivateFieldSet(this, _GenesisProvider_eventemitter, new EventEmitter(), "f");
|
|
145
|
+
__classPrivateFieldSet(this, _GenesisProvider_eventemitter, new eventemitter3_1.EventEmitter(), "f");
|
|
117
146
|
__classPrivateFieldSet(this, _GenesisProvider_isReadyPromise, new Promise((resolve, reject) => {
|
|
118
147
|
__classPrivateFieldGet(this, _GenesisProvider_eventemitter, "f").once('connected', () => {
|
|
119
148
|
resolve();
|
|
@@ -139,7 +168,7 @@ export class GenesisProvider {
|
|
|
139
168
|
}
|
|
140
169
|
get _jsCallback() {
|
|
141
170
|
const storage = __classPrivateFieldGet(this, _GenesisProvider_genesis, "f").genesis.raw.top;
|
|
142
|
-
return Object.assign(Object.assign({}, emptyTaskHandler), { getStorage: function (key) {
|
|
171
|
+
return Object.assign(Object.assign({}, executor_1.emptyTaskHandler), { getStorage: function (key) {
|
|
143
172
|
return __awaiter(this, void 0, void 0, function* () {
|
|
144
173
|
return storage[key];
|
|
145
174
|
});
|
|
@@ -154,19 +183,20 @@ export class GenesisProvider {
|
|
|
154
183
|
} });
|
|
155
184
|
}
|
|
156
185
|
}
|
|
186
|
+
exports.GenesisProvider = GenesisProvider;
|
|
157
187
|
_a = GenesisProvider, _GenesisProvider_isConnected = new WeakMap(), _GenesisProvider_eventemitter = new WeakMap(), _GenesisProvider_isReadyPromise = new WeakMap(), _GenesisProvider_genesis = new WeakMap(), _GenesisProvider_stateRoot = new WeakMap();
|
|
158
188
|
GenesisProvider.fromUrl = (url) => __awaiter(void 0, void 0, void 0, function* () {
|
|
159
189
|
const getFile = (url) => __awaiter(void 0, void 0, void 0, function* () {
|
|
160
|
-
if (isUrl(url)) {
|
|
161
|
-
return
|
|
190
|
+
if ((0, utils_1.isUrl)(url)) {
|
|
191
|
+
return axios_1.default.get(url).then((x) => x.data);
|
|
162
192
|
}
|
|
163
193
|
else if (typeof process === 'object') {
|
|
164
|
-
const { lstatSync, readFileSync } = yield
|
|
194
|
+
const { lstatSync, readFileSync } = yield Promise.resolve().then(() => __importStar(require('node:fs')));
|
|
165
195
|
if (lstatSync(url).isFile()) {
|
|
166
196
|
return JSON.parse(String(readFileSync(url)));
|
|
167
197
|
}
|
|
168
198
|
}
|
|
169
199
|
throw Error(`invalid genesis path or url ${url}`);
|
|
170
200
|
});
|
|
171
|
-
return new GenesisProvider(genesisSchema.parse(yield getFile(url)));
|
|
201
|
+
return new GenesisProvider(schema_1.genesisSchema.parse(yield getFile(url)));
|
|
172
202
|
});
|
package/lib/index.js
CHANGED
|
@@ -1,13 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./api"), exports);
|
|
18
|
+
__exportStar(require("./blockchain"), exports);
|
|
19
|
+
__exportStar(require("./blockchain/block"), exports);
|
|
20
|
+
__exportStar(require("./blockchain/block-builder"), exports);
|
|
21
|
+
__exportStar(require("./blockchain/txpool"), exports);
|
|
22
|
+
__exportStar(require("./blockchain/storage-layer"), exports);
|
|
23
|
+
__exportStar(require("./utils"), exports);
|
|
24
|
+
__exportStar(require("./executor"), exports);
|
|
25
|
+
__exportStar(require("./schema"), exports);
|
|
26
|
+
__exportStar(require("./xcm"), exports);
|
|
27
|
+
__exportStar(require("./setup"), exports);
|
|
28
|
+
__exportStar(require("./blockchain/inherent"), exports);
|
|
29
|
+
__exportStar(require("./logger"), exports);
|
package/lib/logger.js
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.truncate = exports.defaultLogger = void 0;
|
|
7
|
+
const pino_1 = __importDefault(require("pino"));
|
|
8
|
+
exports.defaultLogger = (0, pino_1.default)({
|
|
3
9
|
level: (typeof process === 'object' && process.env.LOG_LEVEL) || 'info',
|
|
4
10
|
transport: {
|
|
5
11
|
target: 'pino-pretty',
|
|
@@ -31,4 +37,5 @@ const innerTruncate = (level = 0) => (val) => {
|
|
|
31
37
|
return val;
|
|
32
38
|
}
|
|
33
39
|
};
|
|
34
|
-
|
|
40
|
+
const truncate = (val) => innerTruncate(0)(val);
|
|
41
|
+
exports.truncate = truncate;
|