@acala-network/chopsticks-core 0.15.0 → 0.16.1
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/dist/cjs/blockchain/inherent/parachain/validation-data.js +13 -1
- package/dist/cjs/blockchain/txpool.d.ts +1 -0
- package/dist/cjs/blockchain/txpool.js +3 -1
- package/dist/cjs/rpc/dev/new-block.d.ts +7 -0
- package/dist/cjs/rpc/dev/new-block.js +11 -3
- package/dist/cjs/utils/proof.d.ts +1 -0
- package/dist/cjs/utils/proof.js +7 -0
- package/dist/esm/blockchain/inherent/parachain/validation-data.js +13 -1
- package/dist/esm/blockchain/txpool.d.ts +1 -0
- package/dist/esm/blockchain/txpool.js +3 -1
- package/dist/esm/rpc/dev/new-block.d.ts +7 -0
- package/dist/esm/rpc/dev/new-block.js +11 -3
- package/dist/esm/utils/proof.d.ts +1 -0
- package/dist/esm/utils/proof.js +4 -0
- package/package.json +2 -2
|
@@ -80,7 +80,7 @@ class SetValidationData {
|
|
|
80
80
|
return [];
|
|
81
81
|
}
|
|
82
82
|
const extrinsic = await getValidationData(parent);
|
|
83
|
-
|
|
83
|
+
let newEntries = [];
|
|
84
84
|
const downwardMessages = [];
|
|
85
85
|
const horizontalMessages = {};
|
|
86
86
|
const paraId = await (0, _index.getParaId)(parent.chain);
|
|
@@ -229,6 +229,18 @@ class SetValidationData {
|
|
|
229
229
|
null
|
|
230
230
|
]);
|
|
231
231
|
}
|
|
232
|
+
// Apply relay chain state overrides
|
|
233
|
+
if (params.relayChainStateOverrides) {
|
|
234
|
+
for (const [key, value] of params.relayChainStateOverrides){
|
|
235
|
+
// Remove any entry that matches the key being overridden
|
|
236
|
+
newEntries = newEntries.filter(([k, _])=>k != key);
|
|
237
|
+
// Push override
|
|
238
|
+
newEntries.push([
|
|
239
|
+
key,
|
|
240
|
+
value
|
|
241
|
+
]);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
232
244
|
const { trieRootHash, nodes } = await (0, _index1.createProof)(extrinsic.relayChainState.trieNodes, newEntries);
|
|
233
245
|
const newData = {
|
|
234
246
|
...extrinsic,
|
|
@@ -25,6 +25,7 @@ export interface BuildBlockParams {
|
|
|
25
25
|
horizontalMessages: Record<number, HorizontalMessage[]>;
|
|
26
26
|
transactions: HexString[];
|
|
27
27
|
unsafeBlockHeight?: number;
|
|
28
|
+
relayChainStateOverrides?: [HexString, HexString | null][];
|
|
28
29
|
}
|
|
29
30
|
export declare class TxPool {
|
|
30
31
|
#private;
|
|
@@ -193,6 +193,7 @@ class TxPool {
|
|
|
193
193
|
..._class_private_field_get(this, _hrmp)
|
|
194
194
|
};
|
|
195
195
|
const unsafeBlockHeight = params?.unsafeBlockHeight;
|
|
196
|
+
const relayChainStateOverrides = params?.relayChainStateOverrides;
|
|
196
197
|
if (!params?.upwardMessages) {
|
|
197
198
|
for (const id of Object.keys(_class_private_field_get(this, _ump))){
|
|
198
199
|
delete _class_private_field_get(this, _ump)[id];
|
|
@@ -209,7 +210,8 @@ class TxPool {
|
|
|
209
210
|
upwardMessages,
|
|
210
211
|
downwardMessages,
|
|
211
212
|
horizontalMessages,
|
|
212
|
-
unsafeBlockHeight
|
|
213
|
+
unsafeBlockHeight,
|
|
214
|
+
relayChainStateOverrides
|
|
213
215
|
});
|
|
214
216
|
// with the latest message queue, messages could be processed in the upcoming block
|
|
215
217
|
if (!_class_private_field_get(this, _chain).processQueuedMessages) return;
|
|
@@ -26,6 +26,7 @@ declare const schema: z.ZodObject<{
|
|
|
26
26
|
}>, "many">>>;
|
|
27
27
|
transactions: z.ZodOptional<z.ZodArray<z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>, "many">>;
|
|
28
28
|
unsafeBlockHeight: z.ZodOptional<z.ZodNumber>;
|
|
29
|
+
relayChainStateOverrides: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>, z.ZodUnion<[z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>, z.ZodNull]>], null>, "many">>;
|
|
29
30
|
}, "strip", z.ZodTypeAny, {
|
|
30
31
|
transactions?: `0x${string}`[] | undefined;
|
|
31
32
|
unsafeBlockHeight?: number | undefined;
|
|
@@ -38,6 +39,7 @@ declare const schema: z.ZodObject<{
|
|
|
38
39
|
data: `0x${string}`;
|
|
39
40
|
sentAt: number;
|
|
40
41
|
}[]> | undefined;
|
|
42
|
+
relayChainStateOverrides?: [`0x${string}`, `0x${string}` | null][] | undefined;
|
|
41
43
|
count?: number | undefined;
|
|
42
44
|
to?: number | undefined;
|
|
43
45
|
}, {
|
|
@@ -52,6 +54,7 @@ declare const schema: z.ZodObject<{
|
|
|
52
54
|
data: `0x${string}`;
|
|
53
55
|
sentAt: number;
|
|
54
56
|
}[]> | undefined;
|
|
57
|
+
relayChainStateOverrides?: [`0x${string}`, `0x${string}` | null][] | undefined;
|
|
55
58
|
count?: number | undefined;
|
|
56
59
|
to?: number | undefined;
|
|
57
60
|
}>;
|
|
@@ -85,6 +88,10 @@ export interface NewBlockParams {
|
|
|
85
88
|
* Build block using a specific block height (unsafe)
|
|
86
89
|
*/
|
|
87
90
|
unsafeBlockHeight: Params['unsafeBlockHeight'];
|
|
91
|
+
/**
|
|
92
|
+
* Build block using a custom relay chain state
|
|
93
|
+
*/
|
|
94
|
+
relayChainStateOverrides: Params['relayChainStateOverrides'];
|
|
88
95
|
}
|
|
89
96
|
/**
|
|
90
97
|
* Build new blocks.
|
|
@@ -27,10 +27,17 @@ const schema = _zod.z.object({
|
|
|
27
27
|
data: _shared.zHex
|
|
28
28
|
})).min(1)).optional(),
|
|
29
29
|
transactions: _zod.z.array(_shared.zHex).min(1).optional(),
|
|
30
|
-
unsafeBlockHeight: _zod.z.number().optional()
|
|
30
|
+
unsafeBlockHeight: _zod.z.number().optional(),
|
|
31
|
+
relayChainStateOverrides: _zod.z.array(_zod.z.tuple([
|
|
32
|
+
_shared.zHex,
|
|
33
|
+
_zod.z.union([
|
|
34
|
+
_shared.zHex,
|
|
35
|
+
_zod.z.null()
|
|
36
|
+
])
|
|
37
|
+
])).optional()
|
|
31
38
|
});
|
|
32
39
|
const dev_newBlock = async (context, [params])=>{
|
|
33
|
-
const { count, to, hrmp, ump, dmp, transactions, unsafeBlockHeight } = schema.parse(params || {});
|
|
40
|
+
const { count, to, hrmp, ump, dmp, transactions, unsafeBlockHeight, relayChainStateOverrides } = schema.parse(params || {});
|
|
34
41
|
const now = context.chain.head.number;
|
|
35
42
|
const diff = to ? to - now : count;
|
|
36
43
|
const finalCount = diff !== undefined ? Math.max(diff, 1) : 1;
|
|
@@ -44,7 +51,8 @@ const dev_newBlock = async (context, [params])=>{
|
|
|
44
51
|
horizontalMessages: hrmp,
|
|
45
52
|
upwardMessages: ump,
|
|
46
53
|
downwardMessages: dmp,
|
|
47
|
-
unsafeBlockHeight: i === 0 ? unsafeBlockHeight : undefined
|
|
54
|
+
unsafeBlockHeight: i === 0 ? unsafeBlockHeight : undefined,
|
|
55
|
+
relayChainStateOverrides: relayChainStateOverrides
|
|
48
56
|
}).catch((error)=>{
|
|
49
57
|
throw new _shared.ResponseError(1, error.toString());
|
|
50
58
|
});
|
|
@@ -11,6 +11,7 @@ export declare const WELL_KNOWN_KEYS: {
|
|
|
11
11
|
};
|
|
12
12
|
export declare const dmqMqcHead: (paraId: u32) => `0x${string}`;
|
|
13
13
|
export declare const upgradeGoAheadSignal: (paraId: u32) => `0x${string}`;
|
|
14
|
+
export declare const upgradeRestrictionSignal: (paraId: u32) => `0x${string}`;
|
|
14
15
|
export declare const hrmpIngressChannelIndex: (paraId: u32) => `0x${string}`;
|
|
15
16
|
export declare const hrmpEgressChannelIndex: (paraId: u32) => `0x${string}`;
|
|
16
17
|
export declare const hrmpChannels: (channelId: HrmpChannelId) => `0x${string}`;
|
package/dist/cjs/utils/proof.js
CHANGED
|
@@ -29,6 +29,9 @@ _export(exports, {
|
|
|
29
29
|
},
|
|
30
30
|
upgradeGoAheadSignal: function() {
|
|
31
31
|
return upgradeGoAheadSignal;
|
|
32
|
+
},
|
|
33
|
+
upgradeRestrictionSignal: function() {
|
|
34
|
+
return upgradeRestrictionSignal;
|
|
32
35
|
}
|
|
33
36
|
});
|
|
34
37
|
const _util = require("@polkadot/util");
|
|
@@ -52,6 +55,10 @@ const upgradeGoAheadSignal = (paraId)=>{
|
|
|
52
55
|
const prefix = '0xcd710b30bd2eab0352ddcc26417aa1949e94c040f5e73d9b7addd6cb603d15d3';
|
|
53
56
|
return hash(prefix, paraId.toU8a());
|
|
54
57
|
};
|
|
58
|
+
const upgradeRestrictionSignal = (paraId)=>{
|
|
59
|
+
const prefix = '0xcd710b30bd2eab0352ddcc26417aa194f27bbb460270642b5bcaf032ea04d56a';
|
|
60
|
+
return hash(prefix, paraId.toU8a());
|
|
61
|
+
};
|
|
55
62
|
const hrmpIngressChannelIndex = (paraId)=>{
|
|
56
63
|
const prefix = '0x6a0da05ca59913bc38a8630590f2627c1d3719f5b0b12c7105c073c507445948';
|
|
57
64
|
return hash(prefix, paraId.toU8a());
|
|
@@ -65,7 +65,7 @@ export class SetValidationData {
|
|
|
65
65
|
return [];
|
|
66
66
|
}
|
|
67
67
|
const extrinsic = await getValidationData(parent);
|
|
68
|
-
|
|
68
|
+
let newEntries = [];
|
|
69
69
|
const downwardMessages = [];
|
|
70
70
|
const horizontalMessages = {};
|
|
71
71
|
const paraId = await getParaId(parent.chain);
|
|
@@ -214,6 +214,18 @@ export class SetValidationData {
|
|
|
214
214
|
null
|
|
215
215
|
]);
|
|
216
216
|
}
|
|
217
|
+
// Apply relay chain state overrides
|
|
218
|
+
if (params.relayChainStateOverrides) {
|
|
219
|
+
for (const [key, value] of params.relayChainStateOverrides){
|
|
220
|
+
// Remove any entry that matches the key being overridden
|
|
221
|
+
newEntries = newEntries.filter(([k, _])=>k != key);
|
|
222
|
+
// Push override
|
|
223
|
+
newEntries.push([
|
|
224
|
+
key,
|
|
225
|
+
value
|
|
226
|
+
]);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
217
229
|
const { trieRootHash, nodes } = await createProof(extrinsic.relayChainState.trieNodes, newEntries);
|
|
218
230
|
const newData = {
|
|
219
231
|
...extrinsic,
|
|
@@ -25,6 +25,7 @@ export interface BuildBlockParams {
|
|
|
25
25
|
horizontalMessages: Record<number, HorizontalMessage[]>;
|
|
26
26
|
transactions: HexString[];
|
|
27
27
|
unsafeBlockHeight?: number;
|
|
28
|
+
relayChainStateOverrides?: [HexString, HexString | null][];
|
|
28
29
|
}
|
|
29
30
|
export declare class TxPool {
|
|
30
31
|
#private;
|
|
@@ -138,6 +138,7 @@ export class TxPool {
|
|
|
138
138
|
...this.#hrmp
|
|
139
139
|
};
|
|
140
140
|
const unsafeBlockHeight = params?.unsafeBlockHeight;
|
|
141
|
+
const relayChainStateOverrides = params?.relayChainStateOverrides;
|
|
141
142
|
if (!params?.upwardMessages) {
|
|
142
143
|
for (const id of Object.keys(this.#ump)){
|
|
143
144
|
delete this.#ump[id];
|
|
@@ -154,7 +155,8 @@ export class TxPool {
|
|
|
154
155
|
upwardMessages,
|
|
155
156
|
downwardMessages,
|
|
156
157
|
horizontalMessages,
|
|
157
|
-
unsafeBlockHeight
|
|
158
|
+
unsafeBlockHeight,
|
|
159
|
+
relayChainStateOverrides
|
|
158
160
|
});
|
|
159
161
|
// with the latest message queue, messages could be processed in the upcoming block
|
|
160
162
|
if (!this.#chain.processQueuedMessages) return;
|
|
@@ -26,6 +26,7 @@ declare const schema: z.ZodObject<{
|
|
|
26
26
|
}>, "many">>>;
|
|
27
27
|
transactions: z.ZodOptional<z.ZodArray<z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>, "many">>;
|
|
28
28
|
unsafeBlockHeight: z.ZodOptional<z.ZodNumber>;
|
|
29
|
+
relayChainStateOverrides: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>, z.ZodUnion<[z.ZodType<`0x${string}`, z.ZodTypeDef, `0x${string}`>, z.ZodNull]>], null>, "many">>;
|
|
29
30
|
}, "strip", z.ZodTypeAny, {
|
|
30
31
|
transactions?: `0x${string}`[] | undefined;
|
|
31
32
|
unsafeBlockHeight?: number | undefined;
|
|
@@ -38,6 +39,7 @@ declare const schema: z.ZodObject<{
|
|
|
38
39
|
data: `0x${string}`;
|
|
39
40
|
sentAt: number;
|
|
40
41
|
}[]> | undefined;
|
|
42
|
+
relayChainStateOverrides?: [`0x${string}`, `0x${string}` | null][] | undefined;
|
|
41
43
|
count?: number | undefined;
|
|
42
44
|
to?: number | undefined;
|
|
43
45
|
}, {
|
|
@@ -52,6 +54,7 @@ declare const schema: z.ZodObject<{
|
|
|
52
54
|
data: `0x${string}`;
|
|
53
55
|
sentAt: number;
|
|
54
56
|
}[]> | undefined;
|
|
57
|
+
relayChainStateOverrides?: [`0x${string}`, `0x${string}` | null][] | undefined;
|
|
55
58
|
count?: number | undefined;
|
|
56
59
|
to?: number | undefined;
|
|
57
60
|
}>;
|
|
@@ -85,6 +88,10 @@ export interface NewBlockParams {
|
|
|
85
88
|
* Build block using a specific block height (unsafe)
|
|
86
89
|
*/
|
|
87
90
|
unsafeBlockHeight: Params['unsafeBlockHeight'];
|
|
91
|
+
/**
|
|
92
|
+
* Build block using a custom relay chain state
|
|
93
|
+
*/
|
|
94
|
+
relayChainStateOverrides: Params['relayChainStateOverrides'];
|
|
88
95
|
}
|
|
89
96
|
/**
|
|
90
97
|
* Build new blocks.
|
|
@@ -17,7 +17,14 @@ const schema = z.object({
|
|
|
17
17
|
data: zHex
|
|
18
18
|
})).min(1)).optional(),
|
|
19
19
|
transactions: z.array(zHex).min(1).optional(),
|
|
20
|
-
unsafeBlockHeight: z.number().optional()
|
|
20
|
+
unsafeBlockHeight: z.number().optional(),
|
|
21
|
+
relayChainStateOverrides: z.array(z.tuple([
|
|
22
|
+
zHex,
|
|
23
|
+
z.union([
|
|
24
|
+
zHex,
|
|
25
|
+
z.null()
|
|
26
|
+
])
|
|
27
|
+
])).optional()
|
|
21
28
|
});
|
|
22
29
|
/**
|
|
23
30
|
* Build new blocks.
|
|
@@ -57,7 +64,7 @@ const schema = z.object({
|
|
|
57
64
|
* await ws.send('dev_newBlock', [{ count: 2, unsafeBlockHeight: 100000001 }])
|
|
58
65
|
* ```
|
|
59
66
|
*/ export const dev_newBlock = async (context, [params])=>{
|
|
60
|
-
const { count, to, hrmp, ump, dmp, transactions, unsafeBlockHeight } = schema.parse(params || {});
|
|
67
|
+
const { count, to, hrmp, ump, dmp, transactions, unsafeBlockHeight, relayChainStateOverrides } = schema.parse(params || {});
|
|
61
68
|
const now = context.chain.head.number;
|
|
62
69
|
const diff = to ? to - now : count;
|
|
63
70
|
const finalCount = diff !== undefined ? Math.max(diff, 1) : 1;
|
|
@@ -71,7 +78,8 @@ const schema = z.object({
|
|
|
71
78
|
horizontalMessages: hrmp,
|
|
72
79
|
upwardMessages: ump,
|
|
73
80
|
downwardMessages: dmp,
|
|
74
|
-
unsafeBlockHeight: i === 0 ? unsafeBlockHeight : undefined
|
|
81
|
+
unsafeBlockHeight: i === 0 ? unsafeBlockHeight : undefined,
|
|
82
|
+
relayChainStateOverrides: relayChainStateOverrides
|
|
75
83
|
}).catch((error)=>{
|
|
76
84
|
throw new ResponseError(1, error.toString());
|
|
77
85
|
});
|
|
@@ -11,6 +11,7 @@ export declare const WELL_KNOWN_KEYS: {
|
|
|
11
11
|
};
|
|
12
12
|
export declare const dmqMqcHead: (paraId: u32) => `0x${string}`;
|
|
13
13
|
export declare const upgradeGoAheadSignal: (paraId: u32) => `0x${string}`;
|
|
14
|
+
export declare const upgradeRestrictionSignal: (paraId: u32) => `0x${string}`;
|
|
14
15
|
export declare const hrmpIngressChannelIndex: (paraId: u32) => `0x${string}`;
|
|
15
16
|
export declare const hrmpEgressChannelIndex: (paraId: u32) => `0x${string}`;
|
|
16
17
|
export declare const hrmpChannels: (channelId: HrmpChannelId) => `0x${string}`;
|
package/dist/esm/utils/proof.js
CHANGED
|
@@ -19,6 +19,10 @@ export const upgradeGoAheadSignal = (paraId)=>{
|
|
|
19
19
|
const prefix = '0xcd710b30bd2eab0352ddcc26417aa1949e94c040f5e73d9b7addd6cb603d15d3';
|
|
20
20
|
return hash(prefix, paraId.toU8a());
|
|
21
21
|
};
|
|
22
|
+
export const upgradeRestrictionSignal = (paraId)=>{
|
|
23
|
+
const prefix = '0xcd710b30bd2eab0352ddcc26417aa194f27bbb460270642b5bcaf032ea04d56a';
|
|
24
|
+
return hash(prefix, paraId.toU8a());
|
|
25
|
+
};
|
|
22
26
|
export const hrmpIngressChannelIndex = (paraId)=>{
|
|
23
27
|
const prefix = '0x6a0da05ca59913bc38a8630590f2627c1d3719f5b0b12c7105c073c507445948';
|
|
24
28
|
return hash(prefix, paraId.toU8a());
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@acala-network/chopsticks-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.1",
|
|
4
4
|
"author": "Acala Developers <hello@acala.network>",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"depcheck": "npx depcheck"
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@acala-network/chopsticks-executor": "0.
|
|
14
|
+
"@acala-network/chopsticks-executor": "0.16.1",
|
|
15
15
|
"@polkadot/rpc-provider": "^12.3.1",
|
|
16
16
|
"@polkadot/types": "^12.3.1",
|
|
17
17
|
"@polkadot/types-codec": "^12.3.1",
|