@typeberry/lib 0.5.10-6cb1bd5 → 0.5.10-7338c21

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.
Files changed (71) hide show
  1. package/package.json +1 -1
  2. package/packages/core/codec/encoder.d.ts +1 -1
  3. package/packages/core/codec/encoder.d.ts.map +1 -1
  4. package/packages/core/codec/encoder.js +3 -2
  5. package/packages/core/pvm-interface/pvm.d.ts +2 -0
  6. package/packages/core/pvm-interface/pvm.d.ts.map +1 -1
  7. package/packages/jam/block/work-package.d.ts +7 -7
  8. package/packages/jam/block/work-package.d.ts.map +1 -1
  9. package/packages/jam/block/work-package.js +12 -12
  10. package/packages/jam/executor/pvm-executor.d.ts +9 -2
  11. package/packages/jam/executor/pvm-executor.d.ts.map +1 -1
  12. package/packages/jam/executor/pvm-executor.js +15 -0
  13. package/packages/jam/in-core/externalities/refine.d.ts +18 -8
  14. package/packages/jam/in-core/externalities/refine.d.ts.map +1 -1
  15. package/packages/jam/in-core/externalities/refine.js +86 -7
  16. package/packages/jam/in-core/externalities/refine.test.js +167 -2
  17. package/packages/jam/in-core/in-core.d.ts +7 -22
  18. package/packages/jam/in-core/in-core.d.ts.map +1 -1
  19. package/packages/jam/in-core/in-core.js +16 -186
  20. package/packages/jam/in-core/in-core.test.js +47 -15
  21. package/packages/jam/in-core/is-authorized.d.ts +33 -0
  22. package/packages/jam/in-core/is-authorized.d.ts.map +1 -0
  23. package/packages/jam/in-core/is-authorized.js +72 -0
  24. package/packages/jam/in-core/is-authorized.test.d.ts +2 -0
  25. package/packages/jam/in-core/is-authorized.test.d.ts.map +1 -0
  26. package/packages/jam/in-core/is-authorized.test.js +125 -0
  27. package/packages/jam/in-core/refine.d.ts +34 -0
  28. package/packages/jam/in-core/refine.d.ts.map +1 -0
  29. package/packages/jam/in-core/refine.js +176 -0
  30. package/packages/jam/in-core/refine.test.d.ts +2 -0
  31. package/packages/jam/in-core/refine.test.d.ts.map +1 -0
  32. package/packages/jam/in-core/refine.test.js +6 -0
  33. package/packages/jam/jam-host-calls/accumulate/bless.js +9 -9
  34. package/packages/jam/jam-host-calls/externalities/partial-state.d.ts +1 -1
  35. package/packages/jam/jam-host-calls/externalities/refine-externalities.d.ts +1 -1
  36. package/packages/jam/jam-host-calls/externalities/refine-externalities.d.ts.map +1 -1
  37. package/packages/jam/jam-host-calls/general/fetch.d.ts +164 -103
  38. package/packages/jam/jam-host-calls/general/fetch.d.ts.map +1 -1
  39. package/packages/jam/jam-host-calls/general/fetch.js +117 -23
  40. package/packages/jam/jam-host-calls/general/fetch.test.js +100 -66
  41. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts +2 -2
  42. package/packages/jam/transition/accumulate/accumulate.js +2 -2
  43. package/packages/jam/transition/accumulate/accumulation-result-merge-utils.js +48 -39
  44. package/packages/jam/transition/externalities/accumulate-externalities.d.ts +2 -2
  45. package/packages/jam/transition/externalities/accumulate-externalities.d.ts.map +1 -1
  46. package/packages/jam/transition/externalities/accumulate-externalities.js +20 -7
  47. package/packages/jam/transition/externalities/accumulate-externalities.test.js +74 -4
  48. package/packages/jam/transition/externalities/accumulate-fetch-externalities.d.ts +19 -0
  49. package/packages/jam/transition/externalities/accumulate-fetch-externalities.d.ts.map +1 -0
  50. package/packages/jam/transition/externalities/accumulate-fetch-externalities.js +45 -0
  51. package/packages/jam/transition/externalities/accumulate-fetch-externalities.test.d.ts +2 -0
  52. package/packages/jam/transition/externalities/accumulate-fetch-externalities.test.d.ts.map +1 -0
  53. package/packages/jam/transition/externalities/accumulate-fetch-externalities.test.js +192 -0
  54. package/packages/jam/transition/externalities/fetch-externalities.d.ts +3 -39
  55. package/packages/jam/transition/externalities/fetch-externalities.d.ts.map +1 -1
  56. package/packages/jam/transition/externalities/fetch-externalities.js +2 -88
  57. package/packages/jam/transition/externalities/index.d.ts +3 -0
  58. package/packages/jam/transition/externalities/index.d.ts.map +1 -1
  59. package/packages/jam/transition/externalities/index.js +3 -0
  60. package/packages/jam/transition/externalities/is-authorized-fetch-externalities.d.ts +22 -0
  61. package/packages/jam/transition/externalities/is-authorized-fetch-externalities.d.ts.map +1 -0
  62. package/packages/jam/transition/externalities/is-authorized-fetch-externalities.js +41 -0
  63. package/packages/jam/transition/externalities/refine-fetch-externalities.d.ts +23 -0
  64. package/packages/jam/transition/externalities/refine-fetch-externalities.d.ts.map +1 -0
  65. package/packages/jam/transition/externalities/refine-fetch-externalities.js +56 -0
  66. package/packages/jam/transition/externalities/refine-fetch-externalities.test.d.ts +2 -0
  67. package/packages/jam/transition/externalities/refine-fetch-externalities.test.d.ts.map +1 -0
  68. package/packages/jam/transition/externalities/refine-fetch-externalities.test.js +32 -0
  69. package/packages/jam/transition/externalities/fetch-externalities.test.d.ts +0 -2
  70. package/packages/jam/transition/externalities/fetch-externalities.test.d.ts.map +0 -1
  71. package/packages/jam/transition/externalities/fetch-externalities.test.js +0 -254
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typeberry/lib",
3
- "version": "0.5.10-6cb1bd5",
3
+ "version": "0.5.10-7338c21",
4
4
  "description": "Typeberry Library",
5
5
  "main": "./bin/lib/index.js",
6
6
  "types": "./bin/lib/index.d.ts",
@@ -125,7 +125,7 @@ export declare class Encoder {
125
125
  */
126
126
  i8(num: number): void;
127
127
  /**
128
- * Encode a single boolean discriminator using variable encoding.
128
+ * Encode a single boolean discriminator using 1-byte encoding.
129
129
  *
130
130
  * https://graypaper.fluffylabs.dev/#/579bd12/375300375300
131
131
  */
@@ -1 +1 @@
1
- {"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../../../../../packages/core/codec/encoder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../../../../../packages/core/codec/encoder.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { Bytes, BytesBlob } from "#@typeberry/bytes";
2
2
  import { tryAsU32 } from "#@typeberry/numbers";
3
3
  import { check } from "#@typeberry/utils";
4
+ import { tryAsU8 } from "../numbers/index.js";
4
5
  export function tryAsExactBytes(a) {
5
6
  check `${a.isExact} The value is not exact size estimation!`;
6
7
  return a.bytes;
@@ -150,12 +151,12 @@ export class Encoder {
150
151
  this.offset += 1;
151
152
  }
152
153
  /**
153
- * Encode a single boolean discriminator using variable encoding.
154
+ * Encode a single boolean discriminator using 1-byte encoding.
154
155
  *
155
156
  * https://graypaper.fluffylabs.dev/#/579bd12/375300375300
156
157
  */
157
158
  bool(bool) {
158
- this.varU32(tryAsU32(bool ? 1 : 0));
159
+ this.i8(tryAsU8(bool ? 1 : 0));
159
160
  }
160
161
  /**
161
162
  * Prepare for encoding of a fixed-bytes number.
@@ -12,6 +12,8 @@ export interface IPvmInterpreter {
12
12
  readonly memory: IMemory;
13
13
  /** Prepare SPI program to be executed. */
14
14
  resetJam(program: Uint8Array, args: Uint8Array, pc: number, gas: Gas): void;
15
+ /** Prepare a generic (non-SPI) program to be executed. */
16
+ resetGeneric(rawProgram: Uint8Array, pc: number, gas: Gas): void;
15
17
  /** Execute loaded program. */
16
18
  runProgram(): void;
17
19
  /** Get current Status. */
@@ -1 +1 @@
1
- {"version":3,"file":"pvm.d.ts","sourceRoot":"","sources":["../../../../../packages/core/pvm-interface/pvm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,WAAW,eAAe;IAC9B,sBAAsB;IACtB,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAE1B,4BAA4B;IAC5B,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;IAE/B,yBAAyB;IACzB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEzB,0CAA0C;IAC1C,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC;IAE5E,8BAA8B;IAC9B,UAAU,IAAI,IAAI,CAAC;IAEnB,0BAA0B;IAC1B,SAAS,IAAI,MAAM,CAAC;IAEpB,mCAAmC;IACnC,KAAK,IAAI,MAAM,CAAC;IAEhB,sDAAsD;IACtD,YAAY,IAAI,GAAG,GAAG,IAAI,CAAC;CAC5B"}
1
+ {"version":3,"file":"pvm.d.ts","sourceRoot":"","sources":["../../../../../packages/core/pvm-interface/pvm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,WAAW,eAAe;IAC9B,sBAAsB;IACtB,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAE1B,4BAA4B;IAC5B,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;IAE/B,yBAAyB;IACzB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEzB,0CAA0C;IAC1C,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC;IAE5E,0DAA0D;IAC1D,YAAY,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC;IAEjE,8BAA8B;IAC9B,UAAU,IAAI,IAAI,CAAC;IAEnB,0BAA0B;IAC1B,SAAS,IAAI,MAAM,CAAC;IAEpB,mCAAmC;IACnC,KAAK,IAAI,MAAM,CAAC;IAEhB,sDAAsD;IACtD,YAAY,IAAI,GAAG,GAAG,IAAI,CAAC;CAC5B"}
@@ -21,19 +21,19 @@ export declare const MAX_NUMBER_OF_WORK_ITEMS = 16;
21
21
  /**
22
22
  * A piece of work done within a core.
23
23
  *
24
- * `P = (j ∈ Y, h ∈ NS, u ∈ H, p ∈ Y, x ∈ X, w ∈ ⟦I⟧1∶I)
24
+ * `P = (j ∈ Y, h ∈ NS, u ∈ H, f ∈ Y, x ∈ X, w ∈ ⟦I⟧1∶I)
25
25
  *
26
26
  * https://graypaper.fluffylabs.dev/#/579bd12/197000197200
27
27
  */
28
28
  export declare class WorkPackage extends WithDebug {
29
29
  /** `j`: simple blob acting as an authorization token */
30
- readonly authorization: BytesBlob;
30
+ readonly authToken: BytesBlob;
31
31
  /** `h`: index of the service that hosts the authorization code */
32
32
  readonly authCodeHost: ServiceId;
33
33
  /** `u`: authorization code hash */
34
34
  readonly authCodeHash: CodeHash;
35
- /** `p`: authorization parametrization blob */
36
- readonly parametrization: BytesBlob;
35
+ /** `f`: authorization configuration blob */
36
+ readonly authConfiguration: BytesBlob;
37
37
  /** `x`: context in which the refine function should run */
38
38
  readonly context: RefineContext;
39
39
  /**
@@ -54,8 +54,8 @@ export declare class WorkPackage extends WithDebug {
54
54
  lookupAnchorSlot: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"TimeSlot[u32]">, import("@typeberry/bytes").Bytes<4>>;
55
55
  prerequisites: import("@typeberry/codec").Descriptor<(import("@typeberry/bytes").Bytes<32> & import("@typeberry/utils").WithOpaque<"WorkPackageHash">)[], import("@typeberry/codec").SequenceView<import("@typeberry/bytes").Bytes<32> & import("@typeberry/utils").WithOpaque<"WorkPackageHash">, import("@typeberry/bytes").Bytes<32>>>;
56
56
  }>>;
57
- authorization: import("@typeberry/codec").Descriptor<BytesBlob, BytesBlob>;
58
- parametrization: import("@typeberry/codec").Descriptor<BytesBlob, BytesBlob>;
57
+ authToken: import("@typeberry/codec").Descriptor<BytesBlob, BytesBlob>;
58
+ authConfiguration: import("@typeberry/codec").Descriptor<BytesBlob, BytesBlob>;
59
59
  items: import("@typeberry/codec").Descriptor<FixedSizeArray<WorkItem, U8>, import("@typeberry/codec").SequenceView<WorkItem, import("@typeberry/codec").ViewOf<WorkItem, {
60
60
  service: import("@typeberry/codec").Descriptor<number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"ServiceId[u32]">, import("@typeberry/bytes").Bytes<4>>;
61
61
  codeHash: import("@typeberry/codec").Descriptor<import("@typeberry/bytes").Bytes<32> & import("@typeberry/utils").WithOpaque<"CodeHash">, import("@typeberry/bytes").Bytes<32>>;
@@ -73,7 +73,7 @@ export declare class WorkPackage extends WithDebug {
73
73
  }>>>;
74
74
  }>>>;
75
75
  }>>;
76
- static create({ authorization, authCodeHost, authCodeHash, parametrization, context, items, }: CodecRecord<WorkPackage>): WorkPackage;
76
+ static create({ authToken, authCodeHost, authCodeHash, authConfiguration, context, items, }: CodecRecord<WorkPackage>): WorkPackage;
77
77
  private constructor();
78
78
  }
79
79
  export type WorkPackageView = DescribedBy<typeof WorkPackage.Codec.View>;
@@ -1 +1 @@
1
- {"version":3,"file":"work-package.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/block/work-package.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAAS,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAW,KAAK,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,6EAA6E;AAC7E,0FAA0F;AAC1F,MAAM,MAAM,cAAc,GAAG,EAAE,CAAC;AAEhC,kGAAkG;AAClG,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAE/D;AAED,8DAA8D;AAC9D,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,IAAI,cAAc,CAEnE;AAED,kFAAkF;AAClF,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAC1C,uFAAuF;AACvF,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C;;;;;;GAMG;AACH,qBAAa,WAAY,SAAQ,SAAS;IAyBtC,wDAAwD;aACxC,aAAa,EAAE,SAAS;IACxC,kEAAkE;aAClD,YAAY,EAAE,SAAS;IACvC,mCAAmC;aACnB,YAAY,EAAE,QAAQ;IACtC,8CAA8C;aAC9B,eAAe,EAAE,SAAS;IAC1C,2DAA2D;aAC3C,OAAO,EAAE,aAAa;IACtC;;;;;OAKG;aACa,KAAK,EAAE,cAAc,CAAC,QAAQ,EAAE,cAAc,CAAC;IAxCjE,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAUT;IAEH,MAAM,CAAC,MAAM,CAAC,EACZ,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,OAAO,EACP,KAAK,GACN,EAAE,WAAW,CAAC,WAAW,CAAC;IAI3B,OAAO;CAqBR;AAED,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"work-package.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/block/work-package.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAAS,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAW,KAAK,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,6EAA6E;AAC7E,0FAA0F;AAC1F,MAAM,MAAM,cAAc,GAAG,EAAE,CAAC;AAEhC,kGAAkG;AAClG,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAE/D;AAED,8DAA8D;AAC9D,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,IAAI,cAAc,CAEnE;AAED,kFAAkF;AAClF,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAC1C,uFAAuF;AACvF,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C;;;;;;GAMG;AACH,qBAAa,WAAY,SAAQ,SAAS;IAyBtC,wDAAwD;aACxC,SAAS,EAAE,SAAS;IACpC,kEAAkE;aAClD,YAAY,EAAE,SAAS;IACvC,mCAAmC;aACnB,YAAY,EAAE,QAAQ;IACtC,4CAA4C;aAC5B,iBAAiB,EAAE,SAAS;IAC5C,2DAA2D;aAC3C,OAAO,EAAE,aAAa;IACtC;;;;;OAKG;aACa,KAAK,EAAE,cAAc,CAAC,QAAQ,EAAE,cAAc,CAAC;IAxCjE,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAUT;IAEH,MAAM,CAAC,MAAM,CAAC,EACZ,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,OAAO,EACP,KAAK,GACN,EAAE,WAAW,CAAC,WAAW,CAAC;IAI3B,OAAO;CAqBR;AAED,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC"}
@@ -20,37 +20,37 @@ export const MAX_NUMBER_OF_WORK_ITEMS = 16;
20
20
  /**
21
21
  * A piece of work done within a core.
22
22
  *
23
- * `P = (j ∈ Y, h ∈ NS, u ∈ H, p ∈ Y, x ∈ X, w ∈ ⟦I⟧1∶I)
23
+ * `P = (j ∈ Y, h ∈ NS, u ∈ H, f ∈ Y, x ∈ X, w ∈ ⟦I⟧1∶I)
24
24
  *
25
25
  * https://graypaper.fluffylabs.dev/#/579bd12/197000197200
26
26
  */
27
27
  export class WorkPackage extends WithDebug {
28
- authorization;
28
+ authToken;
29
29
  authCodeHost;
30
30
  authCodeHash;
31
- parametrization;
31
+ authConfiguration;
32
32
  context;
33
33
  items;
34
34
  static Codec = codec.Class(WorkPackage, {
35
35
  authCodeHost: codec.u32.asOpaque(),
36
36
  authCodeHash: codec.bytes(HASH_SIZE).asOpaque(),
37
37
  context: RefineContext.Codec,
38
- authorization: codec.blob,
39
- parametrization: codec.blob,
38
+ authToken: codec.blob,
39
+ authConfiguration: codec.blob,
40
40
  items: codec.sequenceVarLen(WorkItem.Codec).convert((x) => x, (items) => FixedSizeArray.new(items, tryAsWorkItemsCount(items.length))),
41
41
  });
42
- static create({ authorization, authCodeHost, authCodeHash, parametrization, context, items, }) {
43
- return new WorkPackage(authorization, authCodeHost, authCodeHash, parametrization, context, items);
42
+ static create({ authToken, authCodeHost, authCodeHash, authConfiguration, context, items, }) {
43
+ return new WorkPackage(authToken, authCodeHost, authCodeHash, authConfiguration, context, items);
44
44
  }
45
45
  constructor(
46
46
  /** `j`: simple blob acting as an authorization token */
47
- authorization,
47
+ authToken,
48
48
  /** `h`: index of the service that hosts the authorization code */
49
49
  authCodeHost,
50
50
  /** `u`: authorization code hash */
51
51
  authCodeHash,
52
- /** `p`: authorization parametrization blob */
53
- parametrization,
52
+ /** `f`: authorization configuration blob */
53
+ authConfiguration,
54
54
  /** `x`: context in which the refine function should run */
55
55
  context,
56
56
  /**
@@ -61,10 +61,10 @@ export class WorkPackage extends WithDebug {
61
61
  */
62
62
  items) {
63
63
  super();
64
- this.authorization = authorization;
64
+ this.authToken = authToken;
65
65
  this.authCodeHost = authCodeHost;
66
66
  this.authCodeHash = authCodeHash;
67
- this.parametrization = parametrization;
67
+ this.authConfiguration = authConfiguration;
68
68
  this.context = context;
69
69
  this.items = items;
70
70
  }
@@ -6,13 +6,16 @@ import type { PartialState } from "#@typeberry/jam-host-calls/externalities/part
6
6
  import { type RefineExternalities } from "#@typeberry/jam-host-calls/externalities/refine-externalities.js";
7
7
  export type RefineHostCallExternalities = {
8
8
  refine: RefineExternalities;
9
- fetchExternalities: general.IFetchExternalities;
9
+ fetchExternalities: general.IRefineFetch;
10
10
  };
11
11
  export type AccumulateHostCallExternalities = {
12
12
  partialState: PartialState;
13
- fetchExternalities: general.IFetchExternalities;
13
+ fetchExternalities: general.IAccumulateFetch;
14
14
  serviceExternalities: general.AccountsInfo & general.AccountsLookup & general.AccountsWrite & general.AccountsRead;
15
15
  };
16
+ export type IsAuthorizedHostCallExternalities = {
17
+ fetchExternalities: general.IIsAuthorizedFetch;
18
+ };
16
19
  type OnTransferHostCallExternalities = {
17
20
  partialState: general.AccountsInfo & general.AccountsLookup & general.AccountsWrite & general.AccountsRead;
18
21
  fetchExternalities: general.IFetchExternalities;
@@ -31,6 +34,8 @@ export declare class PvmExecutor {
31
34
  private static prepareRefineHostCalls;
32
35
  /** Prepare accumulation host call handlers */
33
36
  private static prepareAccumulateHostCalls;
37
+ /** Prepare is-authorized host call handlers */
38
+ private static prepareIsAuthorizedHostCalls;
34
39
  /** Prepare on transfer host call handlers */
35
40
  private static prepareOnTransferHostCalls;
36
41
  /**
@@ -50,6 +55,8 @@ export declare class PvmExecutor {
50
55
  }>;
51
56
  /** A utility function that can be used to prepare refine executor */
52
57
  static createRefineExecutor(serviceId: ServiceId, serviceCode: BytesBlob, externalities: RefineHostCallExternalities, pvm: PvmBackend): Promise<PvmExecutor>;
58
+ /** A utility function that can be used to prepare is-authorized executor */
59
+ static createIsAuthorizedExecutor(serviceId: ServiceId, serviceCode: BytesBlob, externalities: IsAuthorizedHostCallExternalities, pvm: PvmBackend): Promise<PvmExecutor>;
53
60
  /** A utility function that can be used to prepare accumulate executor */
54
61
  static createAccumulateExecutor(serviceId: ServiceId, serviceCode: BytesBlob, externalities: AccumulateHostCallExternalities, chainSpec: ChainSpec, pvm: PvmBackend): Promise<PvmExecutor>;
55
62
  /** A utility function that can be used to prepare on transfer executor */
@@ -1 +1 @@
1
- {"version":3,"file":"pvm-executor.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/executor/pvm-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAmB,MAAM,kBAAkB,CAAC;AACpF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAc,OAAO,EAAU,MAAM,2BAA2B,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0DAA0D,CAAC;AAC7F,OAAO,EAEL,KAAK,mBAAmB,EAEzB,MAAM,iEAAiE,CAAC;AAuCzE,MAAM,MAAM,2BAA2B,GAAG;IACxC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,kBAAkB,EAAE,OAAO,CAAC,mBAAmB,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,YAAY,EAAE,YAAY,CAAC;IAC3B,kBAAkB,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAChD,oBAAoB,EAAE,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;CACpH,CAAC;AAEF,KAAK,+BAA+B,GAAG;IACrC,YAAY,EAAE,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAC3G,kBAAkB,EAAE,OAAO,CAAC,mBAAmB,CAAC;CACjD,CAAC;AAUF;;GAEG;AACH,qBAAa,WAAW;IAKpB,OAAO,CAAC,WAAW;IAEnB,OAAO,CAAC,UAAU;IANpB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAoB;IACxC,OAAO,CAAC,SAAS,CAAY;IAE7B,OAAO;mBAac,cAAc;IAInC,wCAAwC;IACxC,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAerC,8CAA8C;IAC9C,OAAO,CAAC,MAAM,CAAC,0BAA0B;IAuBzC,6CAA6C;IAC7C,OAAO,CAAC,MAAM,CAAC,0BAA0B;IAazC;;;;;;OAMG;IACG,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU;;;;;;;;IAQ1C,qEAAqE;WACxD,oBAAoB,CAC/B,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,SAAS,EACtB,aAAa,EAAE,2BAA2B,EAC1C,GAAG,EAAE,UAAU;IAOjB,yEAAyE;WAC5D,wBAAwB,CACnC,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,SAAS,EACtB,aAAa,EAAE,+BAA+B,EAC9C,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,UAAU;IAQjB,0EAA0E;WAC7D,wBAAwB,CACnC,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,SAAS,EACtB,aAAa,EAAE,+BAA+B,EAC9C,GAAG,EAAE,UAAU;CAMlB"}
1
+ {"version":3,"file":"pvm-executor.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/executor/pvm-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAmB,MAAM,kBAAkB,CAAC;AACpF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAc,OAAO,EAAU,MAAM,2BAA2B,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0DAA0D,CAAC;AAC7F,OAAO,EAEL,KAAK,mBAAmB,EAEzB,MAAM,iEAAiE,CAAC;AAuCzE,MAAM,MAAM,2BAA2B,GAAG;IACxC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,kBAAkB,EAAE,OAAO,CAAC,YAAY,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,YAAY,EAAE,YAAY,CAAC;IAC3B,kBAAkB,EAAE,OAAO,CAAC,gBAAgB,CAAC;IAC7C,oBAAoB,EAAE,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;CACpH,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,CAAC;CAChD,CAAC;AAEF,KAAK,+BAA+B,GAAG;IACrC,YAAY,EAAE,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAC3G,kBAAkB,EAAE,OAAO,CAAC,mBAAmB,CAAC;CACjD,CAAC;AAUF;;GAEG;AACH,qBAAa,WAAW;IAKpB,OAAO,CAAC,WAAW;IAEnB,OAAO,CAAC,UAAU;IANpB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAoB;IACxC,OAAO,CAAC,SAAS,CAAY;IAE7B,OAAO;mBAac,cAAc;IAInC,wCAAwC;IACxC,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAerC,8CAA8C;IAC9C,OAAO,CAAC,MAAM,CAAC,0BAA0B;IAuBzC,+CAA+C;IAC/C,OAAO,CAAC,MAAM,CAAC,4BAA4B;IAU3C,6CAA6C;IAC7C,OAAO,CAAC,MAAM,CAAC,0BAA0B;IAazC;;;;;;OAMG;IACG,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU;;;;;;;;IAQ1C,qEAAqE;WACxD,oBAAoB,CAC/B,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,SAAS,EACtB,aAAa,EAAE,2BAA2B,EAC1C,GAAG,EAAE,UAAU;IAOjB,4EAA4E;WAC/D,0BAA0B,CACrC,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,SAAS,EACtB,aAAa,EAAE,iCAAiC,EAChD,GAAG,EAAE,UAAU;IAOjB,yEAAyE;WAC5D,wBAAwB,CACnC,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,SAAS,EACtB,aAAa,EAAE,+BAA+B,EAC9C,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,UAAU;IAQjB,0EAA0E;WAC7D,wBAAwB,CACnC,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,SAAS,EACtB,aAAa,EAAE,+BAA+B,EAC9C,GAAG,EAAE,UAAU;CAMlB"}
@@ -90,6 +90,15 @@ export class PvmExecutor {
90
90
  ];
91
91
  return accumulateHandlers.concat(generalHandlers);
92
92
  }
93
+ /** Prepare is-authorized host call handlers */
94
+ static prepareIsAuthorizedHostCalls(serviceId, externalities) {
95
+ const generalHandlers = [
96
+ new general.LogHostCall(serviceId),
97
+ new general.GasHostCall(serviceId),
98
+ new general.Fetch(serviceId, externalities.fetchExternalities),
99
+ ];
100
+ return generalHandlers;
101
+ }
93
102
  /** Prepare on transfer host call handlers */
94
103
  static prepareOnTransferHostCalls(serviceId, externalities) {
95
104
  const generalHandlers = [
@@ -123,6 +132,12 @@ export class PvmExecutor {
123
132
  const instances = await PvmExecutor.prepareBackend(pvm);
124
133
  return new PvmExecutor(serviceCode, hostCallHandlers, entrypoint.REFINE, instances);
125
134
  }
135
+ /** A utility function that can be used to prepare is-authorized executor */
136
+ static async createIsAuthorizedExecutor(serviceId, serviceCode, externalities, pvm) {
137
+ const hostCallHandlers = PvmExecutor.prepareIsAuthorizedHostCalls(serviceId, externalities);
138
+ const instances = await PvmExecutor.prepareBackend(pvm);
139
+ return new PvmExecutor(serviceCode, hostCallHandlers, entrypoint.IS_AUTHORIZED, instances);
140
+ }
126
141
  /** A utility function that can be used to prepare accumulate executor */
127
142
  static async createAccumulateExecutor(serviceId, serviceCode, externalities, chainSpec, pvm) {
128
143
  const hostCallHandlers = PvmExecutor.prepareAccumulateHostCalls(serviceId, externalities, chainSpec);
@@ -1,11 +1,12 @@
1
1
  import { type Segment, type SegmentIndex, type ServiceId } from "#@typeberry/block";
2
2
  import type { BytesBlob } from "#@typeberry/bytes";
3
+ import type { PvmBackend } from "#@typeberry/config";
3
4
  import type { Blake2bHash } from "#@typeberry/hash";
4
- import { type MachineId, type MachineResult, type MemoryOperation, type NoMachineError, type PagesError, type PeekPokeError, type ProgramCounter, type RefineExternalities, SegmentExportError, type ZeroVoidError } from "#@typeberry/jam-host-calls";
5
- import type { U64 } from "#@typeberry/numbers";
6
- import type { HostCallMemory, HostCallRegisters } from "#@typeberry/pvm-host-calls";
7
- import type { BigGas } from "#@typeberry/pvm-interface";
8
- import type { ProgramDecoderError } from "#@typeberry/pvm-interpreter";
5
+ import { type MachineId, type MachineResult, type MemoryOperation, NoMachineError, type PagesError, type PeekPokeError, type ProgramCounter, type RefineExternalities, SegmentExportError, type ZeroVoidError } from "#@typeberry/jam-host-calls";
6
+ import { type U64 } from "#@typeberry/numbers";
7
+ import { type HostCallMemory, HostCallRegisters } from "#@typeberry/pvm-host-calls";
8
+ import { type BigGas } from "#@typeberry/pvm-interface";
9
+ import { type ProgramDecoderError } from "#@typeberry/pvm-interpreter";
9
10
  import type { State } from "#@typeberry/state";
10
11
  import { type OK, Result } from "#@typeberry/utils";
11
12
  /**
@@ -18,8 +19,15 @@ export type RefineExternalitiesParams = {
18
19
  lookupState: State;
19
20
  /** Export offset -- sum of exports from prior work items in this package. */
20
21
  exportOffset: number;
22
+ /**
23
+ * PVM backend to use for creating inner PVM instances.
24
+ * NIT: Could accept PVMInstanceManager
25
+ */
26
+ pvmBackend: PvmBackend;
21
27
  };
22
28
  export declare class RefineExternalitiesImpl implements RefineExternalities {
29
+ /** Inner PVM instances sorted by MachineId. */
30
+ private machines;
23
31
  /** Service being refined (used as default for historicalLookup). */
24
32
  private readonly currentServiceId;
25
33
  /** State at the lookup anchor for preimage lookups. */
@@ -28,17 +36,19 @@ export declare class RefineExternalitiesImpl implements RefineExternalities {
28
36
  private readonly exportedSegments;
29
37
  /** Offset for segment indexing (sum of exports from prior items). */
30
38
  private readonly exportOffset;
39
+ /** PVM backend for creating inner machines. */
40
+ private readonly pvmBackend;
31
41
  static create(params: RefineExternalitiesParams): RefineExternalitiesImpl;
32
42
  private constructor();
33
43
  getExportedSegments(): readonly Segment[];
34
- machineExpunge(_machineIndex: MachineId): Promise<Result<ProgramCounter, NoMachineError>>;
44
+ machineExpunge(machineIndex: MachineId): Promise<Result<ProgramCounter, NoMachineError>>;
35
45
  machinePages(_machineIndex: MachineId, _pageStart: U64, _pageCount: U64, _requestType: MemoryOperation | null): Promise<Result<OK, PagesError>>;
36
46
  machineVoidPages(_machineIndex: MachineId, _pageStart: U64, _pageCount: U64): Promise<Result<OK, ZeroVoidError>>;
37
47
  machineZeroPages(_machineIndex: MachineId, _pageStart: U64, _pageCount: U64): Promise<Result<OK, ZeroVoidError>>;
38
48
  machinePeekFrom(_machineIndex: MachineId, _destinationStart: U64, _sourceStart: U64, _length: U64, _destination: HostCallMemory): Promise<Result<OK, PeekPokeError>>;
39
49
  machinePokeInto(_machineIndex: MachineId, _sourceStart: U64, _destinationStart: U64, _length: U64, _source: HostCallMemory): Promise<Result<OK, PeekPokeError>>;
40
- machineInit(_code: BytesBlob, _programCounter: ProgramCounter): Promise<Result<MachineId, ProgramDecoderError>>;
41
- machineInvoke(_machineIndex: MachineId, _gas: BigGas, _registers: HostCallRegisters): Promise<Result<MachineResult, NoMachineError>>;
50
+ machineInit(code: BytesBlob, programCounter: ProgramCounter): Promise<Result<MachineId, ProgramDecoderError>>;
51
+ machineInvoke(machineIndex: MachineId, gas: BigGas, registers: HostCallRegisters): Promise<Result<MachineResult, NoMachineError>>;
42
52
  exportSegment(segment: Segment): Result<SegmentIndex, SegmentExportError>;
43
53
  historicalLookup(serviceId: ServiceId | null, hash: Blake2bHash): Promise<BytesBlob | null>;
44
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"refine.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/in-core/externalities/refine.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,SAAS,EAEf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EACL,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,kBAAkB,EAClB,KAAK,aAAa,EACnB,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,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,2CAA2C;IAC3C,gBAAgB,EAAE,SAAS,CAAC;IAC5B,8EAA8E;IAC9E,WAAW,EAAE,KAAK,CAAC;IACnB,6EAA6E;IAC7E,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,qBAAa,uBAAwB,YAAW,mBAAmB;IACjE,oEAAoE;IACpE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAY;IAC7C,uDAAuD;IACvD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;IACpC,6DAA6D;IAC7D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiB;IAClD,qEAAqE;IACrE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IAEtC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,yBAAyB;IAI/C,OAAO;IAMP,mBAAmB,IAAI,SAAS,OAAO,EAAE;IAIzC,cAAc,CAAC,aAAa,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;IAIzF,YAAY,CACV,aAAa,EAAE,SAAS,EACxB,UAAU,EAAE,GAAG,EACf,UAAU,EAAE,GAAG,EACf,YAAY,EAAE,eAAe,GAAG,IAAI,GACnC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IAIlC,gBAAgB,CAAC,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;IAIhH,gBAAgB,CAAC,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;IAIhH,eAAe,CACb,aAAa,EAAE,SAAS,EACxB,iBAAiB,EAAE,GAAG,EACtB,YAAY,EAAE,GAAG,EACjB,OAAO,EAAE,GAAG,EACZ,YAAY,EAAE,cAAc,GAC3B,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;IAIrC,eAAe,CACb,aAAa,EAAE,SAAS,EACxB,YAAY,EAAE,GAAG,EACjB,iBAAiB,EAAE,GAAG,EACtB,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;IAIrC,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;IAI/G,aAAa,CACX,aAAa,EAAE,SAAS,EACxB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,iBAAiB,GAC5B,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IAIjD,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,YAAY,EAAE,kBAAkB,CAAC;IAezE,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;CAW5F"}
1
+ {"version":3,"file":"refine.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/in-core/externalities/refine.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,26 @@
1
1
  import { MAX_NUMBER_OF_EXPORTS_WP, tryAsSegmentIndex, } from "#@typeberry/block";
2
- import { SegmentExportError, } from "#@typeberry/jam-host-calls";
2
+ import { SortedArray } from "#@typeberry/collections";
3
+ import { NoMachineError, SegmentExportError, tryAsMachineId, tryAsProgramCounter, } from "#@typeberry/jam-host-calls";
4
+ import { tryAsU64 } from "#@typeberry/numbers";
5
+ import { Ordering } from "#@typeberry/ordering";
6
+ import { HostCallRegisters, PvmInstanceManager } from "#@typeberry/pvm-host-calls";
7
+ import { Status, tryAsBigGas, tryAsGas } from "#@typeberry/pvm-interface";
8
+ import { ProgramDecoder } from "#@typeberry/pvm-interpreter";
3
9
  import { Result } from "#@typeberry/utils";
10
+ /** Used when searching by MachineId only — the comparator ignores this field. */
11
+ const NULL_INTERPRETER = undefined;
12
+ const machineComparator = (a, b) => {
13
+ if (a[0] < b[0]) {
14
+ return Ordering.Less;
15
+ }
16
+ if (a[0] > b[0]) {
17
+ return Ordering.Greater;
18
+ }
19
+ return Ordering.Equal;
20
+ };
4
21
  export class RefineExternalitiesImpl {
22
+ /** Inner PVM instances sorted by MachineId. */
23
+ machines = SortedArray.fromSortedArray(machineComparator);
5
24
  /** Service being refined (used as default for historicalLookup). */
6
25
  currentServiceId;
7
26
  /** State at the lookup anchor for preimage lookups. */
@@ -10,6 +29,8 @@ export class RefineExternalitiesImpl {
10
29
  exportedSegments = [];
11
30
  /** Offset for segment indexing (sum of exports from prior items). */
12
31
  exportOffset;
32
+ /** PVM backend for creating inner machines. */
33
+ pvmBackend;
13
34
  static create(params) {
14
35
  return new RefineExternalitiesImpl(params);
15
36
  }
@@ -17,12 +38,20 @@ export class RefineExternalitiesImpl {
17
38
  this.currentServiceId = params.currentServiceId;
18
39
  this.lookupState = params.lookupState;
19
40
  this.exportOffset = params.exportOffset;
41
+ this.pvmBackend = params.pvmBackend;
20
42
  }
21
43
  getExportedSegments() {
22
44
  return this.exportedSegments;
23
45
  }
24
- machineExpunge(_machineIndex) {
25
- throw new Error("Method not implemented.");
46
+ machineExpunge(machineIndex) {
47
+ // We just care about machineIndex
48
+ const entry = this.machines.findExact([machineIndex, NULL_INTERPRETER]);
49
+ if (entry === undefined) {
50
+ return Promise.resolve(Result.error(NoMachineError, () => `Machine not found (id: ${machineIndex})`));
51
+ }
52
+ const pc = tryAsProgramCounter(entry[1].getPC());
53
+ this.machines.removeOne(entry);
54
+ return Promise.resolve(Result.ok(pc));
26
55
  }
27
56
  machinePages(_machineIndex, _pageStart, _pageCount, _requestType) {
28
57
  throw new Error("Method not implemented.");
@@ -39,11 +68,61 @@ export class RefineExternalitiesImpl {
39
68
  machinePokeInto(_machineIndex, _sourceStart, _destinationStart, _length, _source) {
40
69
  throw new Error("Method not implemented.");
41
70
  }
42
- machineInit(_code, _programCounter) {
43
- throw new Error("Method not implemented.");
71
+ async machineInit(code, programCounter) {
72
+ // https://graypaper.fluffylabs.dev/#/ab2cdbd/346400346400?v=0.7.2
73
+ const deblobResult = ProgramDecoder.deblob(code.raw);
74
+ if (deblobResult.isError) {
75
+ return Result.error(deblobResult.error, deblobResult.details);
76
+ }
77
+ const manager = await PvmInstanceManager.new(this.pvmBackend);
78
+ const innerPvm = await manager.getInstance();
79
+ innerPvm.resetGeneric(code.raw, Number(programCounter), tryAsGas(0));
80
+ // https://graypaper.fluffylabs.dev/#/ab2cdbd/348c00348c00?v=0.7.2
81
+ // Binary search for the minimal free MachineId
82
+ const arr = this.machines.array;
83
+ let low = 0;
84
+ let high = arr.length;
85
+ while (low < high) {
86
+ const mid = (low + high) >> 1;
87
+ if (arr[mid][0] > BigInt(mid)) {
88
+ high = mid;
89
+ }
90
+ else {
91
+ low = mid + 1;
92
+ }
93
+ }
94
+ const machineId = tryAsMachineId(low);
95
+ // https://graypaper.fluffylabs.dev/#/ab2cdbd/340501340b01?v=0.7.2
96
+ this.machines.insert([machineId, innerPvm]);
97
+ return Result.ok(machineId);
44
98
  }
45
- machineInvoke(_machineIndex, _gas, _registers) {
46
- throw new Error("Method not implemented.");
99
+ machineInvoke(machineIndex, gas, registers) {
100
+ const entry = this.machines.findExact([machineIndex, NULL_INTERPRETER]);
101
+ if (entry === undefined) {
102
+ return Promise.resolve(Result.error(NoMachineError, () => `Machine not found (id: ${machineIndex})`));
103
+ }
104
+ const innerPvm = entry[1];
105
+ // Prepare inner PVM
106
+ innerPvm.registers.setAllEncoded(registers.getEncoded());
107
+ innerPvm.gas.set(gas);
108
+ // Execute program
109
+ innerPvm.runProgram();
110
+ // Status
111
+ const status = innerPvm.getStatus();
112
+ const exitParam = innerPvm.getExitParam() ?? 0;
113
+ const remainingGas = tryAsBigGas(innerPvm.gas.get());
114
+ const outRegisters = new HostCallRegisters(new Uint8Array(innerPvm.registers.getAllEncoded()));
115
+ let machineStatus;
116
+ if (status === Status.HOST) {
117
+ machineStatus = { status, hostCallIndex: tryAsU64(exitParam) };
118
+ }
119
+ else if (status === Status.FAULT) {
120
+ machineStatus = { status, address: tryAsU64(exitParam) };
121
+ }
122
+ else {
123
+ machineStatus = { status };
124
+ }
125
+ return Promise.resolve(Result.ok({ result: machineStatus, gas: remainingGas, registers: outRegisters }));
47
126
  }
48
127
  exportSegment(segment) {
49
128
  // https://graypaper.fluffylabs.dev/#/ab2cdbd/335d03335d03?v=0.7.2