@typeberry/lib 0.5.9-4e5b9e4 → 0.5.9-5f4bdf7
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/package.json +1 -1
- package/packages/jam/in-core/externalities/refine.d.ts +16 -2
- package/packages/jam/in-core/externalities/refine.d.ts.map +1 -1
- package/packages/jam/in-core/externalities/refine.js +20 -5
- package/packages/jam/in-core/externalities/refine.test.d.ts +2 -0
- package/packages/jam/in-core/externalities/refine.test.d.ts.map +1 -0
- package/packages/jam/in-core/externalities/refine.test.js +99 -0
- package/packages/jam/in-core/in-core.d.ts.map +1 -1
- package/packages/jam/in-core/in-core.js +8 -3
package/package.json
CHANGED
|
@@ -6,9 +6,23 @@ import type { U64 } from "#@typeberry/numbers";
|
|
|
6
6
|
import type { HostCallMemory, HostCallRegisters } from "#@typeberry/pvm-host-calls";
|
|
7
7
|
import type { BigGas } from "#@typeberry/pvm-interface";
|
|
8
8
|
import type { ProgramDecoderError } from "#@typeberry/pvm-interpreter";
|
|
9
|
+
import type { State } from "#@typeberry/state";
|
|
9
10
|
import type { OK, Result } from "#@typeberry/utils";
|
|
11
|
+
/**
|
|
12
|
+
* Parameters required to create a RefineExternalitiesImpl.
|
|
13
|
+
*/
|
|
14
|
+
export type RefineExternalitiesParams = {
|
|
15
|
+
/** The service currently being refined. */
|
|
16
|
+
currentServiceId: ServiceId;
|
|
17
|
+
/** State at the lookup anchor block, used for historical preimage lookups. */
|
|
18
|
+
lookupState: State;
|
|
19
|
+
};
|
|
10
20
|
export declare class RefineExternalitiesImpl implements RefineExternalities {
|
|
11
|
-
|
|
21
|
+
/** Service being refined (used as default for historicalLookup). */
|
|
22
|
+
private readonly currentServiceId;
|
|
23
|
+
/** State at the lookup anchor for preimage lookups. */
|
|
24
|
+
private readonly lookupState;
|
|
25
|
+
static create(params: RefineExternalitiesParams): RefineExternalitiesImpl;
|
|
12
26
|
private constructor();
|
|
13
27
|
machineExpunge(_machineIndex: MachineId): Promise<Result<ProgramCounter, NoMachineError>>;
|
|
14
28
|
machinePages(_machineIndex: MachineId, _pageStart: U64, _pageCount: U64, _requestType: MemoryOperation | null): Promise<Result<OK, PagesError>>;
|
|
@@ -19,6 +33,6 @@ export declare class RefineExternalitiesImpl implements RefineExternalities {
|
|
|
19
33
|
machineInit(_code: BytesBlob, _programCounter: ProgramCounter): Promise<Result<MachineId, ProgramDecoderError>>;
|
|
20
34
|
machineInvoke(_machineIndex: MachineId, _gas: BigGas, _registers: HostCallRegisters): Promise<Result<MachineResult, NoMachineError>>;
|
|
21
35
|
exportSegment(_segment: Segment): Result<SegmentIndex, SegmentExportError>;
|
|
22
|
-
historicalLookup(
|
|
36
|
+
historicalLookup(serviceId: ServiceId | null, hash: Blake2bHash): Promise<BytesBlob | null>;
|
|
23
37
|
}
|
|
24
38
|
//# sourceMappingURL=refine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refine.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/in-core/externalities/refine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EACb,eAAe,EACf,cAAc,EACd,UAAU,EACV,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACd,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEnD,qBAAa,uBAAwB,YAAW,mBAAmB;IACjE,MAAM,CAAC,MAAM;
|
|
1
|
+
{"version":3,"file":"refine.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/in-core/externalities/refine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
export class RefineExternalitiesImpl {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
/** Service being refined (used as default for historicalLookup). */
|
|
3
|
+
currentServiceId;
|
|
4
|
+
/** State at the lookup anchor for preimage lookups. */
|
|
5
|
+
lookupState;
|
|
6
|
+
static create(params) {
|
|
7
|
+
return new RefineExternalitiesImpl(params);
|
|
8
|
+
}
|
|
9
|
+
constructor(params) {
|
|
10
|
+
this.currentServiceId = params.currentServiceId;
|
|
11
|
+
this.lookupState = params.lookupState;
|
|
4
12
|
}
|
|
5
|
-
constructor() { }
|
|
6
13
|
machineExpunge(_machineIndex) {
|
|
7
14
|
throw new Error("Method not implemented.");
|
|
8
15
|
}
|
|
@@ -30,7 +37,15 @@ export class RefineExternalitiesImpl {
|
|
|
30
37
|
exportSegment(_segment) {
|
|
31
38
|
throw new Error("Method not implemented.");
|
|
32
39
|
}
|
|
33
|
-
historicalLookup(
|
|
34
|
-
|
|
40
|
+
historicalLookup(serviceId, hash) {
|
|
41
|
+
// https://graypaper.fluffylabs.dev/#/ab2cdbd/33d70133f901?v=0.7.2
|
|
42
|
+
const sid = serviceId ?? this.currentServiceId;
|
|
43
|
+
const service = this.lookupState.getService(sid);
|
|
44
|
+
// https://graypaper.fluffylabs.dev/#/ab2cdbd/334802334802?v=0.7.2
|
|
45
|
+
if (service === null) {
|
|
46
|
+
return Promise.resolve(null);
|
|
47
|
+
}
|
|
48
|
+
// https://graypaper.fluffylabs.dev/#/ab2cdbd/334f02334f02?v=0.7.2
|
|
49
|
+
return Promise.resolve(service.getPreimage(hash.asOpaque()));
|
|
35
50
|
}
|
|
36
51
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refine.test.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/in-core/externalities/refine.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import assert from "node:assert";
|
|
2
|
+
import { describe, it } from "node:test";
|
|
3
|
+
import { tryAsServiceGas, tryAsServiceId, tryAsTimeSlot } from "#@typeberry/block";
|
|
4
|
+
import { Bytes, BytesBlob } from "#@typeberry/bytes";
|
|
5
|
+
import { HashDictionary } from "#@typeberry/collections";
|
|
6
|
+
import { tinyChainSpec } from "#@typeberry/config";
|
|
7
|
+
import { HASH_SIZE } from "#@typeberry/hash";
|
|
8
|
+
import { tryAsU32, tryAsU64 } from "#@typeberry/numbers";
|
|
9
|
+
import { InMemoryService, InMemoryState, PreimageItem, ServiceAccountInfo } from "#@typeberry/state";
|
|
10
|
+
import { RefineExternalitiesImpl } from "./refine.js";
|
|
11
|
+
/**
|
|
12
|
+
* Create a mock State that has specified services with preimages.
|
|
13
|
+
*/
|
|
14
|
+
function createMockState(services) {
|
|
15
|
+
const serviceMap = new Map();
|
|
16
|
+
for (const svc of services) {
|
|
17
|
+
const preimages = HashDictionary.new();
|
|
18
|
+
for (const p of svc.preimages ?? []) {
|
|
19
|
+
const hash = Bytes.parseBytes(p.hash, HASH_SIZE).asOpaque();
|
|
20
|
+
const item = PreimageItem.create({
|
|
21
|
+
hash,
|
|
22
|
+
blob: BytesBlob.parseBlob(p.blob),
|
|
23
|
+
});
|
|
24
|
+
preimages.set(hash, item);
|
|
25
|
+
}
|
|
26
|
+
const serviceId = tryAsServiceId(svc.id);
|
|
27
|
+
serviceMap.set(serviceId, new InMemoryService(serviceId, {
|
|
28
|
+
info: ServiceAccountInfo.create({
|
|
29
|
+
codeHash: Bytes.zero(HASH_SIZE).asOpaque(),
|
|
30
|
+
balance: tryAsU64(1000000000n),
|
|
31
|
+
accumulateMinGas: tryAsServiceGas(100),
|
|
32
|
+
onTransferMinGas: tryAsServiceGas(100),
|
|
33
|
+
storageUtilisationBytes: tryAsU64(0),
|
|
34
|
+
storageUtilisationCount: tryAsU32(0),
|
|
35
|
+
gratisStorage: tryAsU64(0),
|
|
36
|
+
created: tryAsTimeSlot(0),
|
|
37
|
+
lastAccumulation: tryAsTimeSlot(0),
|
|
38
|
+
parentService: tryAsServiceId(0),
|
|
39
|
+
}),
|
|
40
|
+
preimages,
|
|
41
|
+
lookupHistory: HashDictionary.new(),
|
|
42
|
+
storage: new Map(),
|
|
43
|
+
}));
|
|
44
|
+
}
|
|
45
|
+
return InMemoryState.partial(tinyChainSpec, { services: serviceMap });
|
|
46
|
+
}
|
|
47
|
+
function createExt(overrides = {}) {
|
|
48
|
+
const defaultState = createMockState([]);
|
|
49
|
+
return RefineExternalitiesImpl.create({
|
|
50
|
+
currentServiceId: tryAsServiceId(42),
|
|
51
|
+
lookupState: overrides.lookupState ?? defaultState,
|
|
52
|
+
...overrides,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
describe("RefineExternalitiesImpl", () => {
|
|
56
|
+
describe("historicalLookup", () => {
|
|
57
|
+
const PREIMAGE_HASH = "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
|
|
58
|
+
const PREIMAGE_DATA = "0xdeadbeef";
|
|
59
|
+
it("should return preimage data for existing service and hash", async () => {
|
|
60
|
+
const lookupState = createMockState([{ id: 42, preimages: [{ hash: PREIMAGE_HASH, blob: PREIMAGE_DATA }] }]);
|
|
61
|
+
const ext = createExt({ lookupState });
|
|
62
|
+
const hash = Bytes.parseBytes(PREIMAGE_HASH, HASH_SIZE).asOpaque();
|
|
63
|
+
const result = await ext.historicalLookup(tryAsServiceId(42), hash);
|
|
64
|
+
assert.strictEqual(result?.toString(), BytesBlob.parseBlob(PREIMAGE_DATA).toString());
|
|
65
|
+
});
|
|
66
|
+
it("should use currentServiceId when serviceId is null", async () => {
|
|
67
|
+
const lookupState = createMockState([{ id: 42, preimages: [{ hash: PREIMAGE_HASH, blob: PREIMAGE_DATA }] }]);
|
|
68
|
+
const ext = createExt({ lookupState });
|
|
69
|
+
const hash = Bytes.parseBytes(PREIMAGE_HASH, HASH_SIZE).asOpaque();
|
|
70
|
+
const result = await ext.historicalLookup(null, hash);
|
|
71
|
+
assert.notStrictEqual(result, null);
|
|
72
|
+
});
|
|
73
|
+
it("should return null for non-existent service", async () => {
|
|
74
|
+
const ext = createExt();
|
|
75
|
+
const hash = Bytes.parseBytes(PREIMAGE_HASH, HASH_SIZE).asOpaque();
|
|
76
|
+
const result = await ext.historicalLookup(tryAsServiceId(999), hash);
|
|
77
|
+
assert.strictEqual(result, null);
|
|
78
|
+
});
|
|
79
|
+
it("should return null for non-existent preimage hash", async () => {
|
|
80
|
+
const lookupState = createMockState([{ id: 42 }]);
|
|
81
|
+
const ext = createExt({ lookupState });
|
|
82
|
+
const hash = Bytes.parseBytes(PREIMAGE_HASH, HASH_SIZE).asOpaque();
|
|
83
|
+
const result = await ext.historicalLookup(tryAsServiceId(42), hash);
|
|
84
|
+
assert.strictEqual(result, null);
|
|
85
|
+
});
|
|
86
|
+
it("should look up from the correct service when multiple exist", async () => {
|
|
87
|
+
const lookupState = createMockState([
|
|
88
|
+
{ id: 1, preimages: [{ hash: PREIMAGE_HASH, blob: "0x01" }] },
|
|
89
|
+
{ id: 2, preimages: [{ hash: PREIMAGE_HASH, blob: "0x02" }] },
|
|
90
|
+
]);
|
|
91
|
+
const ext = createExt({ lookupState });
|
|
92
|
+
const hash = Bytes.parseBytes(PREIMAGE_HASH, HASH_SIZE).asOpaque();
|
|
93
|
+
const r1 = await ext.historicalLookup(tryAsServiceId(1), hash);
|
|
94
|
+
const r2 = await ext.historicalLookup(tryAsServiceId(2), hash);
|
|
95
|
+
assert.strictEqual(r1?.raw[0], 0x01);
|
|
96
|
+
assert.strictEqual(r2?.raw[0], 0x02);
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-core.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/in-core/in-core.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,UAAU,EAIhB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAGL,KAAK,eAAe,EAErB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAY,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAmB,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAsC,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAGjH,OAAO,EAA+B,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAA+D,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACpH,OAAO,EAAE,KAAK,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAKzE,OAAO,EAA4B,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAGpE,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,OAAO,EAAE,CAAC;CACpB,CAAC;AAEF,oBAAY,WAAW;IACrB,8EAA8E;IAC9E,YAAY,IAAI;IAChB,qFAAqF;IACrF,iBAAiB,IAAI;IACrB,wEAAwE;IACxE,uBAAuB,IAAI;IAC3B,2BAA2B;IAC3B,kBAAkB,IAAI;CACvB;AAqBD,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC;AAErE,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAgBF,qBAAa,MAAM;aAEC,SAAS,EAAE,SAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAHR,SAAS,EAAE,SAAS,EACnB,MAAM,EAAE,QAAQ,EAChB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,OAAO;IAGnC;;;;;;;;;OASG;IACG,MAAM,CACV,kBAAkB,EAAE,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,EAC1D,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,WAAW,CAAC,eAAe,EAAE,CAAC,EACvC,UAAU,EAAE,WAAW,CAAC,iBAAiB,EAAE,CAAC,GAC3C,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"in-core.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/in-core/in-core.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,UAAU,EAIhB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAGL,KAAK,eAAe,EAErB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAY,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAmB,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAsC,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAGjH,OAAO,EAA+B,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAA+D,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACpH,OAAO,EAAE,KAAK,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAKzE,OAAO,EAA4B,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAGpE,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,OAAO,EAAE,CAAC;CACpB,CAAC;AAEF,oBAAY,WAAW;IACrB,8EAA8E;IAC9E,YAAY,IAAI;IAChB,qFAAqF;IACrF,iBAAiB,IAAI;IACrB,wEAAwE;IACxE,uBAAuB,IAAI;IAC3B,2BAA2B;IAC3B,kBAAkB,IAAI;CACvB;AAqBD,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC;AAErE,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAgBF,qBAAa,MAAM;aAEC,SAAS,EAAE,SAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAHR,SAAS,EAAE,SAAS,EACnB,MAAM,EAAE,QAAQ,EAChB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,OAAO;IAGnC;;;;;;;;;OASG;IACG,MAAM,CACV,kBAAkB,EAAE,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,EAC1D,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,WAAW,CAAC,eAAe,EAAE,CAAC,EACvC,UAAU,EAAE,WAAW,CAAC,iBAAiB,EAAE,CAAC,GAC3C,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAqE7C,OAAO,CAAC,oBAAoB;YAuDd,gBAAgB;YAkBhB,UAAU;IAmGxB,iBAAiB,CAAC,UAAU,EAAE,WAAW,CAAC,UAAU,CAAC;IAiBrD,OAAO,CAAC,cAAc;IAyCtB,OAAO,CAAC,yBAAyB;CAyBlC"}
|
|
@@ -105,7 +105,7 @@ export class InCore {
|
|
|
105
105
|
const refineResults = [];
|
|
106
106
|
for (const [idx, item] of items.entries()) {
|
|
107
107
|
logger.info `[core:${core}][i:${idx}] Refining item for service ${item.service}.`;
|
|
108
|
-
refineResults.push(await this.refineItem(state, idx, item, imports, extrinsics, core, workPackageHash));
|
|
108
|
+
refineResults.push(await this.refineItem(state, lookupState, idx, item, imports, extrinsics, core, workPackageHash));
|
|
109
109
|
}
|
|
110
110
|
// amalgamate the work report now
|
|
111
111
|
return Result.ok(this.amalgamateWorkReport(asKnownSize(refineResults), authResult.ok, workPackageHash, context, core));
|
|
@@ -164,7 +164,7 @@ export class InCore {
|
|
|
164
164
|
authorizationOutput,
|
|
165
165
|
});
|
|
166
166
|
}
|
|
167
|
-
async refineItem(state, idx, item, allImports, allExtrinsics, coreIndex, workPackageHash) {
|
|
167
|
+
async refineItem(state, lookupState, idx, item, allImports, allExtrinsics, coreIndex, workPackageHash) {
|
|
168
168
|
const payloadHash = this.blake2b.hashBytes(item.payload);
|
|
169
169
|
const baseResult = {
|
|
170
170
|
serviceId: item.service,
|
|
@@ -202,6 +202,8 @@ export class InCore {
|
|
|
202
202
|
payload: item.payload,
|
|
203
203
|
imports: allImports,
|
|
204
204
|
extrinsics: allExtrinsics,
|
|
205
|
+
currentServiceId: item.service,
|
|
206
|
+
lookupState,
|
|
205
207
|
});
|
|
206
208
|
const executor = await PvmExecutor.createRefineExecutor(item.service, code, externalities, this.pvmBackend);
|
|
207
209
|
const args = Encoder.encodeObject(ARGS_CODEC, {
|
|
@@ -285,7 +287,10 @@ export class InCore {
|
|
|
285
287
|
entropy: undefined,
|
|
286
288
|
...args,
|
|
287
289
|
}, this.chainSpec);
|
|
288
|
-
const refine = RefineExternalitiesImpl.create(
|
|
290
|
+
const refine = RefineExternalitiesImpl.create({
|
|
291
|
+
currentServiceId: args.currentServiceId,
|
|
292
|
+
lookupState: args.lookupState,
|
|
293
|
+
});
|
|
289
294
|
return {
|
|
290
295
|
fetchExternalities,
|
|
291
296
|
refine,
|