@acala-network/chopsticks-core 0.8.2 → 0.8.4
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/blockchain/block-builder.d.ts +5 -1
- package/lib/blockchain/block-builder.js +21 -20
- package/lib/blockchain/block.d.ts +1 -1
- package/lib/blockchain/block.js +4 -4
- package/lib/blockchain/index.d.ts +2 -2
- package/lib/blockchain/index.js +4 -2
- package/lib/blockchain/inherent/parachain/validation-data.js +5 -5
- package/lib/blockchain/storage-layer.js +25 -2
- package/lib/blockchain/txpool.js +18 -2
- package/lib/chopsticks-provider.d.ts +0 -0
- package/lib/chopsticks-provider.js +249 -0
- package/lib/chopsticks-worker.d.ts +1 -0
- package/lib/chopsticks-worker.js +101 -0
- package/lib/genesis-provider.d.ts +1 -1
- package/lib/genesis-provider.js +3 -3
- package/lib/index.d.ts +2 -1
- package/lib/index.js +3 -1
- package/lib/rpc/index.d.ts +5 -0
- package/lib/rpc/index.js +26 -0
- package/lib/rpc/shared.d.ts +27 -0
- package/lib/rpc/shared.js +19 -0
- package/lib/rpc/substrate/author.d.ts +28 -0
- package/lib/rpc/substrate/author.js +98 -0
- package/lib/rpc/substrate/chain.d.ts +45 -0
- package/lib/rpc/substrate/chain.js +103 -0
- package/lib/rpc/substrate/index.d.ts +66 -0
- package/lib/rpc/substrate/index.js +38 -0
- package/lib/rpc/substrate/payment.d.ts +16 -0
- package/lib/rpc/substrate/payment.js +54 -0
- package/lib/rpc/substrate/state.d.ts +97 -0
- package/lib/rpc/substrate/state.js +184 -0
- package/lib/rpc/substrate/system.d.ts +28 -0
- package/lib/rpc/substrate/system.js +71 -0
- package/lib/utils/time-travel.js +2 -2
- package/lib/wasm-executor/browser-wasm-executor.mjs +37 -0
- package/lib/wasm-executor/browser-worker.d.ts +5 -0
- package/lib/wasm-executor/browser-worker.js +28 -0
- package/lib/{executor.d.ts → wasm-executor/index.d.ts} +18 -1
- package/lib/{executor.js → wasm-executor/index.js} +60 -15
- package/lib/wasm-executor/node-wasm-executor.mjs +34 -0
- package/lib/wasm-executor/node-worker.d.ts +5 -0
- package/lib/wasm-executor/node-worker.js +31 -0
- package/package.json +6 -4
|
@@ -1,4 +1,27 @@
|
|
|
1
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
|
+
};
|
|
2
25
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
26
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
27
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -12,16 +35,30 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
35
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
36
|
};
|
|
14
37
|
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;
|
|
38
|
+
exports.releaseWorker = exports.getAuraSlotDuration = exports.emptyTaskHandler = exports.taskHandler = exports.runTask = exports.createProof = exports.decodeProof = exports.calculateStateRoot = exports.getRuntimeVersion = void 0;
|
|
39
|
+
const Comlink = __importStar(require("comlink"));
|
|
16
40
|
const util_1 = require("@polkadot/util");
|
|
17
41
|
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
42
|
const lodash_1 = __importDefault(require("lodash"));
|
|
43
|
+
const key_cache_1 = require("../utils/key-cache");
|
|
44
|
+
const logger_1 = require("../logger");
|
|
45
|
+
const utils_1 = require("../utils");
|
|
22
46
|
const logger = logger_1.defaultLogger.child({ name: 'executor' });
|
|
47
|
+
let __executor_worker;
|
|
48
|
+
const getWorker = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
49
|
+
if (__executor_worker)
|
|
50
|
+
return __executor_worker;
|
|
51
|
+
if (typeof Worker !== 'undefined') {
|
|
52
|
+
__executor_worker = Promise.resolve().then(() => __importStar(require('./browser-worker'))).then(({ startWorker }) => startWorker());
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
__executor_worker = Promise.resolve().then(() => __importStar(require('./node-worker'))).then(({ startWorker }) => startWorker());
|
|
56
|
+
}
|
|
57
|
+
return __executor_worker;
|
|
58
|
+
});
|
|
23
59
|
const getRuntimeVersion = (code) => __awaiter(void 0, void 0, void 0, function* () {
|
|
24
|
-
|
|
60
|
+
const worker = yield getWorker();
|
|
61
|
+
return worker.remote.getRuntimeVersion(code).then((version) => {
|
|
25
62
|
version.specName = (0, util_1.hexToString)(version.specName);
|
|
26
63
|
version.implName = (0, util_1.hexToString)(version.implName);
|
|
27
64
|
return version;
|
|
@@ -30,25 +67,24 @@ const getRuntimeVersion = (code) => __awaiter(void 0, void 0, void 0, function*
|
|
|
30
67
|
exports.getRuntimeVersion = getRuntimeVersion;
|
|
31
68
|
// trie_version: 0 for old trie, 1 for new trie
|
|
32
69
|
const calculateStateRoot = (entries, trie_version) => __awaiter(void 0, void 0, void 0, function* () {
|
|
33
|
-
|
|
70
|
+
const worker = yield getWorker();
|
|
71
|
+
return worker.remote.calculateStateRoot(entries, trie_version);
|
|
34
72
|
});
|
|
35
73
|
exports.calculateStateRoot = calculateStateRoot;
|
|
36
74
|
const decodeProof = (trieRootHash, keys, nodes) => __awaiter(void 0, void 0, void 0, function* () {
|
|
37
|
-
const
|
|
38
|
-
return
|
|
39
|
-
accum[key] = value;
|
|
40
|
-
return accum;
|
|
41
|
-
}, {});
|
|
75
|
+
const worker = yield getWorker();
|
|
76
|
+
return worker.remote.decodeProof(trieRootHash, keys, nodes);
|
|
42
77
|
});
|
|
43
78
|
exports.decodeProof = decodeProof;
|
|
44
79
|
const createProof = (nodes, entries) => __awaiter(void 0, void 0, void 0, function* () {
|
|
45
|
-
const
|
|
46
|
-
return
|
|
80
|
+
const worker = yield getWorker();
|
|
81
|
+
return worker.remote.createProof(nodes, entries);
|
|
47
82
|
});
|
|
48
83
|
exports.createProof = createProof;
|
|
49
84
|
const runTask = (task, callback = exports.emptyTaskHandler) => __awaiter(void 0, void 0, void 0, function* () {
|
|
85
|
+
const worker = yield getWorker();
|
|
50
86
|
logger.trace((0, logger_1.truncate)(task), 'taskRun');
|
|
51
|
-
const response = yield (
|
|
87
|
+
const response = yield worker.remote.runTask(task, Comlink.proxy(callback));
|
|
52
88
|
if (response.Call) {
|
|
53
89
|
logger.trace((0, logger_1.truncate)(response.Call), 'taskResponse');
|
|
54
90
|
}
|
|
@@ -78,7 +114,7 @@ const taskHandler = (block) => {
|
|
|
78
114
|
pageSize: 1,
|
|
79
115
|
startKey: key,
|
|
80
116
|
});
|
|
81
|
-
return nextKey;
|
|
117
|
+
return nextKey && (0, utils_1.stripChildPrefix)(nextKey);
|
|
82
118
|
});
|
|
83
119
|
},
|
|
84
120
|
offchainGetStorage: function (key) {
|
|
@@ -166,3 +202,12 @@ exports.getAuraSlotDuration = lodash_1.default.memoize((wasm, registry) => __awa
|
|
|
166
202
|
const slotDuration = registry.createType('u64', (0, util_1.hexToU8a)(result.Call.result)).toNumber();
|
|
167
203
|
return slotDuration;
|
|
168
204
|
}));
|
|
205
|
+
const releaseWorker = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
206
|
+
if (!__executor_worker)
|
|
207
|
+
return;
|
|
208
|
+
const executor = yield __executor_worker;
|
|
209
|
+
executor.remote[Comlink.releaseProxy]();
|
|
210
|
+
yield executor.terminate();
|
|
211
|
+
__executor_worker = undefined;
|
|
212
|
+
});
|
|
213
|
+
exports.releaseWorker = releaseWorker;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import * as Comlink from 'comlink'
|
|
2
|
+
import * as pkg from '@acala-network/chopsticks-executor'
|
|
3
|
+
import { parentPort } from 'node:worker_threads'
|
|
4
|
+
import nodeEndpoint from 'comlink/dist/umd/node-adapter.js'
|
|
5
|
+
|
|
6
|
+
const getRuntimeVersion = async (code) => {
|
|
7
|
+
return pkg.get_runtime_version(code)
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
// trie_version: 0 for old trie, 1 for new trie
|
|
11
|
+
const calculateStateRoot = async (entries, trie_version) => {
|
|
12
|
+
return pkg.calculate_state_root(entries, trie_version)
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const decodeProof = async (trieRootHash, keys, nodes) => {
|
|
16
|
+
const decoded = await pkg.decode_proof(trieRootHash, keys, nodes)
|
|
17
|
+
return decoded.reduce((accum, [key, value]) => {
|
|
18
|
+
accum[key] = value
|
|
19
|
+
return accum
|
|
20
|
+
}, {})
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const createProof = async (nodes, entries) => {
|
|
24
|
+
const result = await pkg.create_proof(nodes, entries)
|
|
25
|
+
return { trieRootHash: result[0], nodes: result[1] }
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const runTask = async (task, callback) => {
|
|
29
|
+
return pkg.run_task(task, callback, process.env.RUST_LOG)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export const wasmExecutor = { runTask, getRuntimeVersion, calculateStateRoot, createProof, decodeProof }
|
|
33
|
+
|
|
34
|
+
Comlink.expose(wasmExecutor, nodeEndpoint(parentPort))
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
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.startWorker = void 0;
|
|
16
|
+
const comlink_1 = require("comlink");
|
|
17
|
+
const node_adapter_js_1 = __importDefault(require("comlink/dist/umd/node-adapter.js"));
|
|
18
|
+
const node_worker_threads_1 = __importDefault(require("node:worker_threads"));
|
|
19
|
+
const node_url_1 = __importDefault(require("node:url"));
|
|
20
|
+
const startWorker = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
21
|
+
const worker = new node_worker_threads_1.default.Worker(node_url_1.default.resolve(__filename, 'node-wasm-executor.mjs'), {
|
|
22
|
+
name: 'chopsticks-wasm-executor',
|
|
23
|
+
});
|
|
24
|
+
return {
|
|
25
|
+
remote: (0, comlink_1.wrap)((0, node_adapter_js_1.default)(worker)),
|
|
26
|
+
terminate: () => __awaiter(void 0, void 0, void 0, function* () {
|
|
27
|
+
yield worker.terminate();
|
|
28
|
+
}),
|
|
29
|
+
};
|
|
30
|
+
});
|
|
31
|
+
exports.startWorker = startWorker;
|
package/package.json
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@acala-network/chopsticks-core",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.4",
|
|
4
4
|
"author": "Acala Developers <hello@acala.network>",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"clean": "rm -rf lib tsconfig.tsbuildinfo",
|
|
8
|
-
"pack-wasm": "scripts/pack-wasm.
|
|
9
|
-
"build": "yarn pack-wasm; tsc -p ./tsconfig.json",
|
|
8
|
+
"pack-wasm": "scripts/pack-wasm.cjs",
|
|
9
|
+
"build": "yarn pack-wasm; tsc -p ./tsconfig.json; yarn copyfiles",
|
|
10
|
+
"copyfiles": "cp -r src/wasm-executor/*.mjs lib/wasm-executor/",
|
|
10
11
|
"docs:prep": "typedoc"
|
|
11
12
|
},
|
|
12
13
|
"dependencies": {
|
|
13
|
-
"@acala-network/chopsticks-executor": "0.8.
|
|
14
|
+
"@acala-network/chopsticks-executor": "0.8.4",
|
|
14
15
|
"@polkadot/api": "^10.9.1",
|
|
15
16
|
"@polkadot/util-crypto": "^12.3.2",
|
|
16
17
|
"axios": "^1.5.1",
|
|
18
|
+
"comlink": "^4.4.1",
|
|
17
19
|
"eventemitter3": "^5.0.1",
|
|
18
20
|
"localforage": "^1.10.0",
|
|
19
21
|
"lodash": "^4.17.21",
|