@typeberry/lib 0.5.10-ec38e0b → 0.5.11-019e542

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 (482) hide show
  1. package/README.md +2 -2
  2. package/bin/lib/examples/pvm-usage.test.js +2 -2
  3. package/package.json +2 -2
  4. package/packages/core/codec/descriptor.js +1 -1
  5. package/packages/core/codec/descriptors.js +7 -4
  6. package/packages/core/codec/index.test.js +1 -1
  7. package/packages/core/codec/skip.d.ts +2 -1
  8. package/packages/core/codec/skip.d.ts.map +1 -1
  9. package/packages/core/codec/skip.js +3 -0
  10. package/packages/core/codec/view.js +2 -2
  11. package/packages/core/collections/multi-map.d.ts +2 -1
  12. package/packages/core/collections/multi-map.d.ts.map +1 -1
  13. package/packages/core/collections/multi-map.js +3 -0
  14. package/packages/core/collections/multi-map.test.js +2 -2
  15. package/packages/core/concurrent/parent.js +4 -1
  16. package/packages/core/crypto/ed25519.d.ts +2 -5
  17. package/packages/core/crypto/ed25519.d.ts.map +1 -1
  18. package/packages/core/crypto/ed25519.js +4 -1
  19. package/packages/core/hash/hash.d.ts +4 -2
  20. package/packages/core/hash/hash.d.ts.map +1 -1
  21. package/packages/core/hash/hash.js +6 -1
  22. package/packages/core/networking/quic-network.d.ts +3 -2
  23. package/packages/core/networking/quic-network.d.ts.map +1 -1
  24. package/packages/core/networking/quic-network.js +3 -0
  25. package/packages/core/networking/quic-peer.d.ts +2 -1
  26. package/packages/core/networking/quic-peer.d.ts.map +1 -1
  27. package/packages/core/networking/quic-peer.js +5 -2
  28. package/packages/core/networking/quic-stream.d.ts +2 -1
  29. package/packages/core/networking/quic-stream.d.ts.map +1 -1
  30. package/packages/core/networking/quic-stream.js +3 -0
  31. package/packages/core/networking/setup.js +2 -2
  32. package/packages/core/pvm-host-calls/bin.js +2 -2
  33. package/packages/core/pvm-host-calls/ecalli-trace-logger.d.ts +5 -0
  34. package/packages/core/pvm-host-calls/ecalli-trace-logger.d.ts.map +1 -1
  35. package/packages/core/pvm-host-calls/ecalli-trace-logger.js +8 -1
  36. package/packages/core/pvm-host-calls/ecalli-trace-logger.test.js +1 -1
  37. package/packages/core/pvm-host-calls/host-call-memory.d.ts +2 -1
  38. package/packages/core/pvm-host-calls/host-call-memory.d.ts.map +1 -1
  39. package/packages/core/pvm-host-calls/host-call-memory.js +3 -0
  40. package/packages/core/pvm-host-calls/host-call-memory.test.js +1 -1
  41. package/packages/core/pvm-host-calls/host-call-registers.d.ts +5 -1
  42. package/packages/core/pvm-host-calls/host-call-registers.d.ts.map +1 -1
  43. package/packages/core/pvm-host-calls/host-call-registers.js +11 -1
  44. package/packages/core/pvm-host-calls/host-call-registers.test.js +2 -2
  45. package/packages/core/pvm-host-calls/host-calls-executor.d.ts +2 -1
  46. package/packages/core/pvm-host-calls/host-calls-executor.d.ts.map +1 -1
  47. package/packages/core/pvm-host-calls/host-calls-executor.js +5 -2
  48. package/packages/core/pvm-host-calls/host-calls.d.ts +4 -2
  49. package/packages/core/pvm-host-calls/host-calls.d.ts.map +1 -1
  50. package/packages/core/pvm-host-calls/host-calls.js +9 -4
  51. package/packages/core/pvm-host-calls/pvm-instance-manager.js +1 -1
  52. package/packages/core/pvm-interpreter/args-decoder/args-decoder.js +1 -1
  53. package/packages/core/pvm-interpreter/args-decoder/args-decoder.test.js +3 -3
  54. package/packages/core/pvm-interpreter/args-decoder/args-decoding-results.js +11 -11
  55. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.d.ts +2 -1
  56. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.d.ts.map +1 -1
  57. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.js +3 -0
  58. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.test.js +2 -2
  59. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.d.ts +2 -1
  60. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.d.ts.map +1 -1
  61. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.js +3 -0
  62. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.test.js +26 -26
  63. package/packages/core/pvm-interpreter/basic-blocks/basic-blocks.test.js +8 -8
  64. package/packages/core/pvm-interpreter/bin.js +1 -1
  65. package/packages/core/pvm-interpreter/debugger-adapter.d.ts +2 -1
  66. package/packages/core/pvm-interpreter/debugger-adapter.d.ts.map +1 -1
  67. package/packages/core/pvm-interpreter/debugger-adapter.js +6 -3
  68. package/packages/core/pvm-interpreter/gas.js +4 -1
  69. package/packages/core/pvm-interpreter/interpreter.d.ts +2 -1
  70. package/packages/core/pvm-interpreter/interpreter.d.ts.map +1 -1
  71. package/packages/core/pvm-interpreter/interpreter.js +19 -16
  72. package/packages/core/pvm-interpreter/memory/memory-builder.js +2 -2
  73. package/packages/core/pvm-interpreter/memory/memory-builder.test.js +7 -7
  74. package/packages/core/pvm-interpreter/memory/memory.d.ts +2 -1
  75. package/packages/core/pvm-interpreter/memory/memory.d.ts.map +1 -1
  76. package/packages/core/pvm-interpreter/memory/memory.js +4 -1
  77. package/packages/core/pvm-interpreter/memory/memory.test.js +31 -31
  78. package/packages/core/pvm-interpreter/memory/pages/readable-page.d.ts +2 -1
  79. package/packages/core/pvm-interpreter/memory/pages/readable-page.d.ts.map +1 -1
  80. package/packages/core/pvm-interpreter/memory/pages/readable-page.js +3 -0
  81. package/packages/core/pvm-interpreter/memory/pages/readable-page.test.js +3 -3
  82. package/packages/core/pvm-interpreter/memory/pages/writeable-page.d.ts +2 -1
  83. package/packages/core/pvm-interpreter/memory/pages/writeable-page.d.ts.map +1 -1
  84. package/packages/core/pvm-interpreter/memory/pages/writeable-page.js +3 -0
  85. package/packages/core/pvm-interpreter/memory/pages/writeable-page.test.js +4 -4
  86. package/packages/core/pvm-interpreter/ops/bit-ops.d.ts +2 -1
  87. package/packages/core/pvm-interpreter/ops/bit-ops.d.ts.map +1 -1
  88. package/packages/core/pvm-interpreter/ops/bit-ops.js +3 -0
  89. package/packages/core/pvm-interpreter/ops/bit-ops.test.js +3 -3
  90. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.d.ts +2 -1
  91. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.d.ts.map +1 -1
  92. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.js +3 -0
  93. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.test.js +5 -5
  94. package/packages/core/pvm-interpreter/ops/boolean-ops.d.ts +2 -1
  95. package/packages/core/pvm-interpreter/ops/boolean-ops.d.ts.map +1 -1
  96. package/packages/core/pvm-interpreter/ops/boolean-ops.js +3 -0
  97. package/packages/core/pvm-interpreter/ops/boolean-ops.test.js +3 -3
  98. package/packages/core/pvm-interpreter/ops/branch-ops.d.ts +2 -1
  99. package/packages/core/pvm-interpreter/ops/branch-ops.d.ts.map +1 -1
  100. package/packages/core/pvm-interpreter/ops/branch-ops.js +3 -0
  101. package/packages/core/pvm-interpreter/ops/branch-ops.test.js +4 -4
  102. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.d.ts +2 -1
  103. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.d.ts.map +1 -1
  104. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.js +3 -0
  105. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.test.js +5 -5
  106. package/packages/core/pvm-interpreter/ops/host-call-ops.d.ts +2 -1
  107. package/packages/core/pvm-interpreter/ops/host-call-ops.d.ts.map +1 -1
  108. package/packages/core/pvm-interpreter/ops/host-call-ops.js +3 -0
  109. package/packages/core/pvm-interpreter/ops/host-call-ops.test.js +2 -2
  110. package/packages/core/pvm-interpreter/ops/load-ops.d.ts +2 -1
  111. package/packages/core/pvm-interpreter/ops/load-ops.d.ts.map +1 -1
  112. package/packages/core/pvm-interpreter/ops/load-ops.js +3 -0
  113. package/packages/core/pvm-interpreter/ops/load-ops.test.js +10 -10
  114. package/packages/core/pvm-interpreter/ops/math-ops.d.ts +2 -1
  115. package/packages/core/pvm-interpreter/ops/math-ops.d.ts.map +1 -1
  116. package/packages/core/pvm-interpreter/ops/math-ops.js +3 -0
  117. package/packages/core/pvm-interpreter/ops/math-ops.test.js +3 -3
  118. package/packages/core/pvm-interpreter/ops/memory-ops.d.ts +2 -1
  119. package/packages/core/pvm-interpreter/ops/memory-ops.d.ts.map +1 -1
  120. package/packages/core/pvm-interpreter/ops/memory-ops.js +3 -0
  121. package/packages/core/pvm-interpreter/ops/memory-ops.test.js +3 -3
  122. package/packages/core/pvm-interpreter/ops/move-ops.d.ts +2 -1
  123. package/packages/core/pvm-interpreter/ops/move-ops.d.ts.map +1 -1
  124. package/packages/core/pvm-interpreter/ops/move-ops.js +3 -0
  125. package/packages/core/pvm-interpreter/ops/move-ops.test.js +3 -3
  126. package/packages/core/pvm-interpreter/ops/no-args-ops.d.ts +2 -1
  127. package/packages/core/pvm-interpreter/ops/no-args-ops.d.ts.map +1 -1
  128. package/packages/core/pvm-interpreter/ops/no-args-ops.js +3 -0
  129. package/packages/core/pvm-interpreter/ops/no-args-ops.test.js +2 -2
  130. package/packages/core/pvm-interpreter/ops/shift-ops.d.ts +2 -1
  131. package/packages/core/pvm-interpreter/ops/shift-ops.d.ts.map +1 -1
  132. package/packages/core/pvm-interpreter/ops/shift-ops.js +3 -0
  133. package/packages/core/pvm-interpreter/ops/shift-ops.test.js +3 -3
  134. package/packages/core/pvm-interpreter/ops/store-ops.d.ts +2 -1
  135. package/packages/core/pvm-interpreter/ops/store-ops.d.ts.map +1 -1
  136. package/packages/core/pvm-interpreter/ops/store-ops.js +3 -0
  137. package/packages/core/pvm-interpreter/ops/store-ops.test.js +7 -7
  138. package/packages/core/pvm-interpreter/ops-dispatchers/no-args-dispatcher.test.js +1 -1
  139. package/packages/core/pvm-interpreter/ops-dispatchers/one-imm-dispatcher.test.js +4 -4
  140. package/packages/core/pvm-interpreter/ops-dispatchers/one-offset-dispatcher.test.js +2 -2
  141. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-ext-imm-dispatcher.test.js +4 -4
  142. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-imm-dispatcher.test.js +7 -7
  143. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-imm-one-offset-dispatcher.test.js +10 -10
  144. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-two-imms-dispatcher.test.js +5 -5
  145. package/packages/core/pvm-interpreter/ops-dispatchers/three-regs-dispatcher.test.js +7 -7
  146. package/packages/core/pvm-interpreter/ops-dispatchers/two-imms-dispatcher.test.js +5 -5
  147. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-dispatcher.test.js +6 -6
  148. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-one-imm-dispatcher.test.js +11 -11
  149. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-one-offset-dispatcher.test.js +2 -2
  150. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-two-imms-dispatcher.test.js +14 -14
  151. package/packages/core/pvm-interpreter/program-decoder/jump-table.d.ts +5 -2
  152. package/packages/core/pvm-interpreter/program-decoder/jump-table.d.ts.map +1 -1
  153. package/packages/core/pvm-interpreter/program-decoder/jump-table.js +9 -4
  154. package/packages/core/pvm-interpreter/program-decoder/jump-table.test.js +6 -6
  155. package/packages/core/pvm-interpreter/program-decoder/mask.d.ts +2 -1
  156. package/packages/core/pvm-interpreter/program-decoder/mask.d.ts.map +1 -1
  157. package/packages/core/pvm-interpreter/program-decoder/mask.js +3 -0
  158. package/packages/core/pvm-interpreter/program-decoder/mask.test.js +10 -10
  159. package/packages/core/pvm-interpreter/program-decoder/program-decoder.d.ts +2 -1
  160. package/packages/core/pvm-interpreter/program-decoder/program-decoder.d.ts.map +1 -1
  161. package/packages/core/pvm-interpreter/program-decoder/program-decoder.js +6 -3
  162. package/packages/core/pvm-interpreter/program-decoder/program-decoder.test.js +5 -5
  163. package/packages/core/pvm-interpreter/program.js +3 -3
  164. package/packages/core/pvm-interpreter/registers.d.ts +5 -2
  165. package/packages/core/pvm-interpreter/registers.d.ts.map +1 -1
  166. package/packages/core/pvm-interpreter/registers.js +10 -6
  167. package/packages/core/pvm-interpreter/registers.test.js +10 -10
  168. package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.d.ts +6 -3
  169. package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.d.ts.map +1 -1
  170. package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.js +11 -2
  171. package/packages/core/pvm-interpreter-ananas/index.d.ts +6 -3
  172. package/packages/core/pvm-interpreter-ananas/index.d.ts.map +1 -1
  173. package/packages/core/pvm-interpreter-ananas/index.js +12 -3
  174. package/packages/core/trie/nodes.d.ts +7 -2
  175. package/packages/core/trie/nodes.d.ts.map +1 -1
  176. package/packages/core/trie/nodes.js +20 -11
  177. package/packages/core/trie/nodesDb.d.ts +3 -1
  178. package/packages/core/trie/nodesDb.d.ts.map +1 -1
  179. package/packages/core/trie/nodesDb.js +6 -0
  180. package/packages/core/trie/trie.js +2 -2
  181. package/packages/extensions/ipc/index.js +5 -2
  182. package/packages/extensions/ipc/jamnp/handler.d.ts +4 -2
  183. package/packages/extensions/ipc/jamnp/handler.d.ts.map +1 -1
  184. package/packages/extensions/ipc/jamnp/handler.js +9 -3
  185. package/packages/extensions/ipc/jamnp/server.js +3 -3
  186. package/packages/extensions/ipc/server.d.ts +2 -1
  187. package/packages/extensions/ipc/server.d.ts.map +1 -1
  188. package/packages/extensions/ipc/server.js +4 -1
  189. package/packages/jam/block/header.js +1 -1
  190. package/packages/jam/config/chain-spec.d.ts +2 -1
  191. package/packages/jam/config/chain-spec.d.ts.map +1 -1
  192. package/packages/jam/config/chain-spec.js +5 -2
  193. package/packages/jam/config/network.d.ts +2 -7
  194. package/packages/jam/config/network.d.ts.map +1 -1
  195. package/packages/jam/config/network.js +3 -0
  196. package/packages/jam/config-node/jip-chain-spec.js +1 -1
  197. package/packages/jam/database/blocks.test.js +1 -1
  198. package/packages/jam/database/states.d.ts +2 -1
  199. package/packages/jam/database/states.d.ts.map +1 -1
  200. package/packages/jam/database/states.js +3 -0
  201. package/packages/jam/database/states.test.js +1 -1
  202. package/packages/jam/database-lmdb/blocks.d.ts +2 -1
  203. package/packages/jam/database-lmdb/blocks.d.ts.map +1 -1
  204. package/packages/jam/database-lmdb/blocks.js +3 -0
  205. package/packages/jam/database-lmdb/root.d.ts +2 -1
  206. package/packages/jam/database-lmdb/root.d.ts.map +1 -1
  207. package/packages/jam/database-lmdb/root.js +3 -0
  208. package/packages/jam/database-lmdb/states.d.ts +2 -1
  209. package/packages/jam/database-lmdb/states.d.ts.map +1 -1
  210. package/packages/jam/database-lmdb/states.js +3 -0
  211. package/packages/jam/database-lmdb/states.test.js +9 -9
  212. package/packages/jam/executor/index.d.ts +1 -1
  213. package/packages/jam/executor/index.d.ts.map +1 -1
  214. package/packages/jam/executor/index.js +1 -1
  215. package/packages/jam/executor/pvm-executor.js +24 -24
  216. package/packages/jam/fuzz-proto/v1/handler.d.ts +2 -1
  217. package/packages/jam/fuzz-proto/v1/handler.d.ts.map +1 -1
  218. package/packages/jam/fuzz-proto/v1/handler.js +3 -0
  219. package/packages/jam/fuzz-proto/v1/handler.test.js +10 -10
  220. package/packages/jam/in-core/externalities/index.d.ts +4 -0
  221. package/packages/jam/in-core/externalities/index.d.ts.map +1 -0
  222. package/packages/jam/in-core/externalities/index.js +3 -0
  223. package/packages/jam/{transition/externalities/is-authorized-fetch-externalities.d.ts → in-core/externalities/is-authorized-fetch.d.ts} +7 -9
  224. package/packages/jam/in-core/externalities/is-authorized-fetch.d.ts.map +1 -0
  225. package/packages/jam/in-core/externalities/is-authorized-fetch.js +41 -0
  226. package/packages/jam/in-core/externalities/is-authorized-fetch.test.d.ts +2 -0
  227. package/packages/jam/in-core/externalities/is-authorized-fetch.test.d.ts.map +1 -0
  228. package/packages/jam/in-core/externalities/is-authorized-fetch.test.js +101 -0
  229. package/packages/jam/in-core/externalities/refine-fetch.d.ts +51 -0
  230. package/packages/jam/in-core/externalities/refine-fetch.d.ts.map +1 -0
  231. package/packages/jam/in-core/externalities/refine-fetch.js +80 -0
  232. package/packages/jam/in-core/externalities/refine-fetch.test.d.ts +2 -0
  233. package/packages/jam/in-core/externalities/refine-fetch.test.d.ts.map +1 -0
  234. package/packages/jam/in-core/externalities/refine-fetch.test.js +219 -0
  235. package/packages/jam/in-core/externalities/refine.d.ts +3 -3
  236. package/packages/jam/in-core/externalities/refine.d.ts.map +1 -1
  237. package/packages/jam/in-core/externalities/refine.js +33 -5
  238. package/packages/jam/in-core/externalities/refine.test.js +66 -1
  239. package/packages/jam/in-core/in-core.d.ts +4 -3
  240. package/packages/jam/in-core/in-core.d.ts.map +1 -1
  241. package/packages/jam/in-core/in-core.js +9 -4
  242. package/packages/jam/in-core/in-core.test.js +6 -6
  243. package/packages/jam/in-core/is-authorized.d.ts +3 -2
  244. package/packages/jam/in-core/is-authorized.d.ts.map +1 -1
  245. package/packages/jam/in-core/is-authorized.js +7 -6
  246. package/packages/jam/in-core/is-authorized.test.js +51 -9
  247. package/packages/jam/in-core/refine.d.ts +5 -8
  248. package/packages/jam/in-core/refine.d.ts.map +1 -1
  249. package/packages/jam/in-core/refine.js +12 -6
  250. package/packages/jam/jam-host-calls/accumulate/assign.d.ts +2 -1
  251. package/packages/jam/jam-host-calls/accumulate/assign.d.ts.map +1 -1
  252. package/packages/jam/jam-host-calls/accumulate/assign.js +3 -0
  253. package/packages/jam/jam-host-calls/accumulate/assign.test.js +8 -9
  254. package/packages/jam/jam-host-calls/accumulate/bless.d.ts +2 -1
  255. package/packages/jam/jam-host-calls/accumulate/bless.d.ts.map +1 -1
  256. package/packages/jam/jam-host-calls/accumulate/bless.js +3 -0
  257. package/packages/jam/jam-host-calls/accumulate/bless.test.js +11 -12
  258. package/packages/jam/jam-host-calls/accumulate/checkpoint.d.ts +2 -1
  259. package/packages/jam/jam-host-calls/accumulate/checkpoint.d.ts.map +1 -1
  260. package/packages/jam/jam-host-calls/accumulate/checkpoint.js +4 -1
  261. package/packages/jam/jam-host-calls/accumulate/checkpoint.test.js +2 -3
  262. package/packages/jam/jam-host-calls/accumulate/designate.d.ts +2 -1
  263. package/packages/jam/jam-host-calls/accumulate/designate.d.ts.map +1 -1
  264. package/packages/jam/jam-host-calls/accumulate/designate.js +3 -0
  265. package/packages/jam/jam-host-calls/accumulate/designate.test.js +5 -6
  266. package/packages/jam/jam-host-calls/accumulate/eject.d.ts +2 -1
  267. package/packages/jam/jam-host-calls/accumulate/eject.d.ts.map +1 -1
  268. package/packages/jam/jam-host-calls/accumulate/eject.js +3 -0
  269. package/packages/jam/jam-host-calls/accumulate/eject.test.js +8 -9
  270. package/packages/jam/jam-host-calls/accumulate/forget.d.ts +2 -1
  271. package/packages/jam/jam-host-calls/accumulate/forget.d.ts.map +1 -1
  272. package/packages/jam/jam-host-calls/accumulate/forget.js +3 -0
  273. package/packages/jam/jam-host-calls/accumulate/forget.test.js +5 -6
  274. package/packages/jam/jam-host-calls/accumulate/new.d.ts +2 -1
  275. package/packages/jam/jam-host-calls/accumulate/new.d.ts.map +1 -1
  276. package/packages/jam/jam-host-calls/accumulate/new.js +3 -0
  277. package/packages/jam/jam-host-calls/accumulate/new.test.js +9 -10
  278. package/packages/jam/jam-host-calls/accumulate/provide.d.ts +2 -1
  279. package/packages/jam/jam-host-calls/accumulate/provide.d.ts.map +1 -1
  280. package/packages/jam/jam-host-calls/accumulate/provide.js +3 -0
  281. package/packages/jam/jam-host-calls/accumulate/provide.test.js +8 -9
  282. package/packages/jam/jam-host-calls/accumulate/query.d.ts +2 -1
  283. package/packages/jam/jam-host-calls/accumulate/query.d.ts.map +1 -1
  284. package/packages/jam/jam-host-calls/accumulate/query.js +3 -0
  285. package/packages/jam/jam-host-calls/accumulate/query.test.js +8 -9
  286. package/packages/jam/jam-host-calls/accumulate/solicit.d.ts +2 -1
  287. package/packages/jam/jam-host-calls/accumulate/solicit.d.ts.map +1 -1
  288. package/packages/jam/jam-host-calls/accumulate/solicit.js +3 -0
  289. package/packages/jam/jam-host-calls/accumulate/solicit.test.js +7 -8
  290. package/packages/jam/jam-host-calls/accumulate/transfer.d.ts +2 -1
  291. package/packages/jam/jam-host-calls/accumulate/transfer.d.ts.map +1 -1
  292. package/packages/jam/jam-host-calls/accumulate/transfer.js +3 -0
  293. package/packages/jam/jam-host-calls/accumulate/transfer.test.js +9 -10
  294. package/packages/jam/jam-host-calls/accumulate/upgrade.d.ts +2 -1
  295. package/packages/jam/jam-host-calls/accumulate/upgrade.d.ts.map +1 -1
  296. package/packages/jam/jam-host-calls/accumulate/upgrade.js +3 -0
  297. package/packages/jam/jam-host-calls/accumulate/upgrade.test.js +4 -5
  298. package/packages/jam/jam-host-calls/accumulate/yield.d.ts +2 -1
  299. package/packages/jam/jam-host-calls/accumulate/yield.d.ts.map +1 -1
  300. package/packages/jam/jam-host-calls/accumulate/yield.js +3 -0
  301. package/packages/jam/jam-host-calls/accumulate/yield.test.js +4 -5
  302. package/packages/jam/jam-host-calls/externalities/refine-externalities.test.js +9 -9
  303. package/packages/jam/jam-host-calls/externalities/state-update.d.ts +2 -3
  304. package/packages/jam/jam-host-calls/externalities/state-update.d.ts.map +1 -1
  305. package/packages/jam/jam-host-calls/externalities/state-update.js +5 -2
  306. package/packages/jam/jam-host-calls/externalities/test-accounts.js +2 -2
  307. package/packages/jam/jam-host-calls/general/fetch.d.ts +2 -1
  308. package/packages/jam/jam-host-calls/general/fetch.d.ts.map +1 -1
  309. package/packages/jam/jam-host-calls/general/fetch.js +3 -0
  310. package/packages/jam/jam-host-calls/general/fetch.test.js +27 -28
  311. package/packages/jam/jam-host-calls/general/gas.d.ts +2 -1
  312. package/packages/jam/jam-host-calls/general/gas.d.ts.map +1 -1
  313. package/packages/jam/jam-host-calls/general/gas.js +3 -0
  314. package/packages/jam/jam-host-calls/general/gas.test.js +4 -5
  315. package/packages/jam/jam-host-calls/general/info.d.ts +2 -1
  316. package/packages/jam/jam-host-calls/general/info.d.ts.map +1 -1
  317. package/packages/jam/jam-host-calls/general/info.js +3 -0
  318. package/packages/jam/jam-host-calls/general/info.test.js +6 -7
  319. package/packages/jam/jam-host-calls/general/log.d.ts +2 -1
  320. package/packages/jam/jam-host-calls/general/log.d.ts.map +1 -1
  321. package/packages/jam/jam-host-calls/general/log.js +3 -0
  322. package/packages/jam/jam-host-calls/general/lookup.d.ts +2 -1
  323. package/packages/jam/jam-host-calls/general/lookup.d.ts.map +1 -1
  324. package/packages/jam/jam-host-calls/general/lookup.js +3 -0
  325. package/packages/jam/jam-host-calls/general/lookup.test.js +8 -9
  326. package/packages/jam/jam-host-calls/general/read.d.ts +2 -1
  327. package/packages/jam/jam-host-calls/general/read.d.ts.map +1 -1
  328. package/packages/jam/jam-host-calls/general/read.js +3 -0
  329. package/packages/jam/jam-host-calls/general/read.test.js +11 -12
  330. package/packages/jam/jam-host-calls/general/write.d.ts +2 -1
  331. package/packages/jam/jam-host-calls/general/write.d.ts.map +1 -1
  332. package/packages/jam/jam-host-calls/general/write.js +3 -0
  333. package/packages/jam/jam-host-calls/general/write.test.js +10 -11
  334. package/packages/jam/jam-host-calls/refine/export.d.ts +2 -1
  335. package/packages/jam/jam-host-calls/refine/export.d.ts.map +1 -1
  336. package/packages/jam/jam-host-calls/refine/export.js +3 -0
  337. package/packages/jam/jam-host-calls/refine/export.test.js +6 -7
  338. package/packages/jam/jam-host-calls/refine/expunge.d.ts +2 -1
  339. package/packages/jam/jam-host-calls/refine/expunge.d.ts.map +1 -1
  340. package/packages/jam/jam-host-calls/refine/expunge.js +3 -0
  341. package/packages/jam/jam-host-calls/refine/expunge.test.js +3 -4
  342. package/packages/jam/jam-host-calls/refine/historical-lookup.d.ts +2 -1
  343. package/packages/jam/jam-host-calls/refine/historical-lookup.d.ts.map +1 -1
  344. package/packages/jam/jam-host-calls/refine/historical-lookup.js +3 -0
  345. package/packages/jam/jam-host-calls/refine/historical-lookup.test.js +11 -12
  346. package/packages/jam/jam-host-calls/refine/invoke.d.ts +2 -1
  347. package/packages/jam/jam-host-calls/refine/invoke.d.ts.map +1 -1
  348. package/packages/jam/jam-host-calls/refine/invoke.js +4 -1
  349. package/packages/jam/jam-host-calls/refine/invoke.test.js +10 -11
  350. package/packages/jam/jam-host-calls/refine/machine.d.ts +2 -1
  351. package/packages/jam/jam-host-calls/refine/machine.d.ts.map +1 -1
  352. package/packages/jam/jam-host-calls/refine/machine.js +3 -0
  353. package/packages/jam/jam-host-calls/refine/machine.test.js +6 -7
  354. package/packages/jam/jam-host-calls/refine/pages.d.ts +2 -1
  355. package/packages/jam/jam-host-calls/refine/pages.d.ts.map +1 -1
  356. package/packages/jam/jam-host-calls/refine/pages.js +3 -0
  357. package/packages/jam/jam-host-calls/refine/pages.test.js +3 -4
  358. package/packages/jam/jam-host-calls/refine/peek.d.ts +2 -1
  359. package/packages/jam/jam-host-calls/refine/peek.d.ts.map +1 -1
  360. package/packages/jam/jam-host-calls/refine/peek.js +3 -0
  361. package/packages/jam/jam-host-calls/refine/peek.test.js +3 -4
  362. package/packages/jam/jam-host-calls/refine/poke.d.ts +2 -1
  363. package/packages/jam/jam-host-calls/refine/poke.d.ts.map +1 -1
  364. package/packages/jam/jam-host-calls/refine/poke.js +3 -0
  365. package/packages/jam/jam-host-calls/refine/poke.test.js +3 -4
  366. package/packages/jam/jamnp-s/network.js +1 -1
  367. package/packages/jam/jamnp-s/peers.d.ts +2 -1
  368. package/packages/jam/jamnp-s/peers.d.ts.map +1 -1
  369. package/packages/jam/jamnp-s/peers.js +3 -0
  370. package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts +4 -2
  371. package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts.map +1 -1
  372. package/packages/jam/jamnp-s/protocol/ce-128-block-request.js +6 -0
  373. package/packages/jam/jamnp-s/protocol/ce-128-block-request.test.js +2 -2
  374. package/packages/jam/jamnp-s/protocol/ce-129-state-request.d.ts +4 -2
  375. package/packages/jam/jamnp-s/protocol/ce-129-state-request.d.ts.map +1 -1
  376. package/packages/jam/jamnp-s/protocol/ce-129-state-request.js +6 -0
  377. package/packages/jam/jamnp-s/protocol/ce-129-state-request.test.js +4 -4
  378. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts +4 -2
  379. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts.map +1 -1
  380. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.js +6 -0
  381. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.test.js +2 -2
  382. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts +4 -1
  383. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts.map +1 -1
  384. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.js +7 -0
  385. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.test.js +2 -2
  386. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.d.ts +5 -2
  387. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.d.ts.map +1 -1
  388. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.js +7 -0
  389. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.test.js +2 -2
  390. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts +4 -2
  391. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts.map +1 -1
  392. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.js +6 -0
  393. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.test.js +2 -2
  394. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts +2 -1
  395. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts.map +1 -1
  396. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.js +3 -0
  397. package/packages/jam/jamnp-s/stream-manager.d.ts +2 -1
  398. package/packages/jam/jamnp-s/stream-manager.d.ts.map +1 -1
  399. package/packages/jam/jamnp-s/stream-manager.js +4 -1
  400. package/packages/jam/jamnp-s/tasks/sync.js +4 -4
  401. package/packages/jam/jamnp-s/tasks/sync.test.js +4 -4
  402. package/packages/jam/jamnp-s/tasks/ticket-distribution.js +2 -2
  403. package/packages/jam/jamnp-s/tasks/ticket-distribution.test.js +1 -1
  404. package/packages/jam/node/common.d.ts.map +1 -1
  405. package/packages/jam/node/common.js +3 -3
  406. package/packages/jam/rpc-client/index.d.ts +4 -2
  407. package/packages/jam/rpc-client/index.d.ts.map +1 -1
  408. package/packages/jam/rpc-client/index.js +7 -1
  409. package/packages/jam/state/in-memory-state-view.d.ts +2 -1
  410. package/packages/jam/state/in-memory-state-view.d.ts.map +1 -1
  411. package/packages/jam/state/in-memory-state-view.js +3 -0
  412. package/packages/jam/state/in-memory-state.d.ts +16 -21
  413. package/packages/jam/state/in-memory-state.d.ts.map +1 -1
  414. package/packages/jam/state/in-memory-state.js +10 -6
  415. package/packages/jam/state/in-memory-state.test.js +2 -2
  416. package/packages/jam/state/service.d.ts +2 -6
  417. package/packages/jam/state/service.d.ts.map +1 -1
  418. package/packages/jam/state/service.js +3 -0
  419. package/packages/jam/state/test.utils.js +3 -3
  420. package/packages/jam/state-json/accounts.js +5 -5
  421. package/packages/jam/state-merkleization/in-memory-state-codec.d.ts +3 -34
  422. package/packages/jam/state-merkleization/in-memory-state-codec.d.ts.map +1 -1
  423. package/packages/jam/state-merkleization/in-memory-state-codec.js +1 -1
  424. package/packages/jam/state-merkleization/serialized-state-view.d.ts +8 -3
  425. package/packages/jam/state-merkleization/serialized-state-view.d.ts.map +1 -1
  426. package/packages/jam/state-merkleization/serialized-state-view.js +6 -3
  427. package/packages/jam/state-merkleization/serialized-state.d.ts +2 -3
  428. package/packages/jam/state-merkleization/serialized-state.d.ts.map +1 -1
  429. package/packages/jam/state-merkleization/serialized-state.js +10 -2
  430. package/packages/jam/state-merkleization/serialized-state.test.js +1 -1
  431. package/packages/jam/transition/accumulate/accumulate.d.ts.map +1 -1
  432. package/packages/jam/transition/accumulate/accumulate.js +18 -6
  433. package/packages/jam/transition/accumulate/accumulate.test.js +1 -1
  434. package/packages/jam/transition/block-verifier.d.ts +2 -1
  435. package/packages/jam/transition/block-verifier.d.ts.map +1 -1
  436. package/packages/jam/transition/block-verifier.js +3 -0
  437. package/packages/jam/transition/block-verifier.test.js +8 -8
  438. package/packages/jam/transition/chain-stf.d.ts +12 -4
  439. package/packages/jam/transition/chain-stf.d.ts.map +1 -1
  440. package/packages/jam/transition/chain-stf.js +7 -3
  441. package/packages/jam/transition/externalities/accumulate-externalities.d.ts +20 -6
  442. package/packages/jam/transition/externalities/accumulate-externalities.d.ts.map +1 -1
  443. package/packages/jam/transition/externalities/accumulate-externalities.js +29 -22
  444. package/packages/jam/transition/externalities/accumulate-externalities.test.js +590 -100
  445. package/packages/jam/transition/externalities/fetch-externalities.d.ts +55 -2
  446. package/packages/jam/transition/externalities/fetch-externalities.d.ts.map +1 -1
  447. package/packages/jam/transition/externalities/fetch-externalities.js +44 -2
  448. package/packages/jam/transition/externalities/index.d.ts +0 -2
  449. package/packages/jam/transition/externalities/index.d.ts.map +1 -1
  450. package/packages/jam/transition/externalities/index.js +0 -2
  451. package/packages/jam/transition/hasher.d.ts +2 -1
  452. package/packages/jam/transition/hasher.d.ts.map +1 -1
  453. package/packages/jam/transition/hasher.js +5 -2
  454. package/packages/jam/transition/hasher.test.js +1 -1
  455. package/packages/jam/transition/preimages.test.js +4 -4
  456. package/packages/jam/transition/reports/test.utils.js +1 -1
  457. package/packages/workers/api-node/config.js +4 -4
  458. package/packages/workers/api-node/port.d.ts +2 -1
  459. package/packages/workers/api-node/port.d.ts.map +1 -1
  460. package/packages/workers/api-node/port.js +4 -1
  461. package/packages/workers/api-node/port.test.js +2 -2
  462. package/packages/workers/api-node/protocol.js +2 -2
  463. package/packages/workers/block-authorship/generator.d.ts +13 -2
  464. package/packages/workers/block-authorship/generator.d.ts.map +1 -1
  465. package/packages/workers/block-authorship/generator.js +13 -9
  466. package/packages/workers/block-authorship/generator.test.js +16 -2
  467. package/packages/workers/block-authorship/main.d.ts.map +1 -1
  468. package/packages/workers/block-authorship/main.js +8 -1
  469. package/packages/workers/importer/finality.test.js +1 -1
  470. package/packages/workers/importer/importer.d.ts +23 -6
  471. package/packages/workers/importer/importer.d.ts.map +1 -1
  472. package/packages/workers/importer/importer.js +34 -19
  473. package/packages/workers/importer/main.d.ts.map +1 -1
  474. package/packages/workers/importer/main.js +13 -5
  475. package/packages/jam/transition/externalities/is-authorized-fetch-externalities.d.ts.map +0 -1
  476. package/packages/jam/transition/externalities/is-authorized-fetch-externalities.js +0 -41
  477. package/packages/jam/transition/externalities/refine-fetch-externalities.d.ts +0 -23
  478. package/packages/jam/transition/externalities/refine-fetch-externalities.d.ts.map +0 -1
  479. package/packages/jam/transition/externalities/refine-fetch-externalities.js +0 -56
  480. package/packages/jam/transition/externalities/refine-fetch-externalities.test.d.ts +0 -2
  481. package/packages/jam/transition/externalities/refine-fetch-externalities.test.d.ts.map +0 -1
  482. package/packages/jam/transition/externalities/refine-fetch-externalities.test.js +0 -32
@@ -3,13 +3,50 @@ import { readFileSync } from "node:fs";
3
3
  import { resolve } from "node:path";
4
4
  import { before, describe, it } from "node:test";
5
5
  import { tryAsCoreIndex, tryAsServiceGas, tryAsServiceId, tryAsTimeSlot } from "#@typeberry/block";
6
+ import { RefineContext } from "#@typeberry/block/refine-context.js";
7
+ import { WorkItem } from "#@typeberry/block/work-item.js";
8
+ import { tryAsWorkItemsCount, WorkPackage } from "#@typeberry/block/work-package.js";
6
9
  import { Bytes, BytesBlob } from "#@typeberry/bytes";
7
- import { HashDictionary } from "#@typeberry/collections";
10
+ import { asKnownSize, FixedSizeArray, HashDictionary } from "#@typeberry/collections";
8
11
  import { PvmBackend, tinyChainSpec } from "#@typeberry/config";
9
12
  import { Blake2b, HASH_SIZE } from "#@typeberry/hash";
10
- import { tryAsU32, tryAsU64 } from "#@typeberry/numbers";
13
+ import { tryAsU16, tryAsU32, tryAsU64 } from "#@typeberry/numbers";
11
14
  import { InMemoryService, InMemoryState, PreimageItem, ServiceAccountInfo } from "#@typeberry/state";
15
+ import { buildWorkPackageFetchData } from "#@typeberry/transition/externalities/fetch-externalities.js";
12
16
  import { AuthorizationError, IsAuthorized } from "./is-authorized.js";
17
+ function buildPackageAndFetchData(authCodeHash, authToken, authConfiguration) {
18
+ const pkg = buildPackage(authCodeHash, authToken, authConfiguration);
19
+ return { pkg, fetchData: buildWorkPackageFetchData(tinyChainSpec, pkg) };
20
+ }
21
+ function buildPackage(authCodeHash, authToken, authConfiguration) {
22
+ const items = [
23
+ WorkItem.create({
24
+ service: tryAsServiceId(1),
25
+ codeHash: Bytes.zero(HASH_SIZE).asOpaque(),
26
+ refineGasLimit: tryAsServiceGas(1_000_000),
27
+ accumulateGasLimit: tryAsServiceGas(1_000_000),
28
+ exportCount: tryAsU16(0),
29
+ payload: BytesBlob.empty(),
30
+ importSegments: asKnownSize([]),
31
+ extrinsic: [],
32
+ }),
33
+ ];
34
+ return WorkPackage.create({
35
+ authToken,
36
+ authCodeHost: AUTH_SERVICE_ID,
37
+ authCodeHash,
38
+ authConfiguration,
39
+ context: RefineContext.create({
40
+ anchor: Bytes.zero(HASH_SIZE).asOpaque(),
41
+ stateRoot: Bytes.zero(HASH_SIZE).asOpaque(),
42
+ beefyRoot: Bytes.zero(HASH_SIZE).asOpaque(),
43
+ lookupAnchor: Bytes.zero(HASH_SIZE).asOpaque(),
44
+ lookupAnchorSlot: tryAsTimeSlot(16),
45
+ prerequisites: [],
46
+ }),
47
+ items: FixedSizeArray.new(items, tryAsWorkItemsCount(1)),
48
+ });
49
+ }
13
50
  let blake2b;
14
51
  before(async () => {
15
52
  blake2b = await Blake2b.createHasher();
@@ -20,7 +57,7 @@ before(async () => {
20
57
  const AUTHORIZER_PVM = BytesBlob.blobFrom(readFileSync(resolve(import.meta.dirname, "fixtures/authorizer.pvm")));
21
58
  const AUTH_SERVICE_ID = tryAsServiceId(42);
22
59
  function createService(serviceId, codeHash, code) {
23
- return new InMemoryService(serviceId, {
60
+ return InMemoryService.new(serviceId, {
24
61
  info: ServiceAccountInfo.create({
25
62
  codeHash: codeHash.asOpaque(),
26
63
  balance: tryAsU64(10_000_000_000),
@@ -54,7 +91,8 @@ describe("IsAuthorized", () => {
54
91
  const state = createStateWithService(authCodeHash, AUTHORIZER_PVM);
55
92
  const isAuthorized = new IsAuthorized(spec, PvmBackend.BuiltIn, blake2b);
56
93
  const token = BytesBlob.blobFromString("hello");
57
- const result = await isAuthorized.invoke(state, tryAsCoreIndex(0), token, AUTH_SERVICE_ID, authCodeHash, token);
94
+ const { fetchData } = buildPackageAndFetchData(authCodeHash, token, token);
95
+ const result = await isAuthorized.invoke(state, tryAsCoreIndex(0), fetchData);
58
96
  assert.strictEqual(result.isOk, true, `Expected OK but got error: ${result.isError ? result.details() : ""}`);
59
97
  // Verify the authorization output starts with "Auth=<hello>"
60
98
  const outputStr = Buffer.from(result.ok.authorizationOutput.raw).toString("utf8");
@@ -69,7 +107,8 @@ describe("IsAuthorized", () => {
69
107
  const authCodeHash = getAuthCodeHash();
70
108
  const state = createStateWithService(authCodeHash, AUTHORIZER_PVM);
71
109
  const isAuthorized = new IsAuthorized(spec, PvmBackend.BuiltIn, blake2b);
72
- const result = await isAuthorized.invoke(state, tryAsCoreIndex(0), BytesBlob.empty(), AUTH_SERVICE_ID, authCodeHash, BytesBlob.empty());
110
+ const empty = buildPackageAndFetchData(authCodeHash, BytesBlob.empty(), BytesBlob.empty());
111
+ const result = await isAuthorized.invoke(state, tryAsCoreIndex(0), empty.fetchData);
73
112
  assert.strictEqual(result.isOk, true, `Expected OK but got error: ${result.isError ? result.details() : ""}`);
74
113
  const outputStr = Buffer.from(result.ok.authorizationOutput.raw).toString("utf8");
75
114
  assert.ok(outputStr.startsWith("Auth=<>"), `Expected "Auth=<>" prefix but got "${outputStr.slice(0, 30)}"`);
@@ -78,7 +117,8 @@ describe("IsAuthorized", () => {
78
117
  const authCodeHash = getAuthCodeHash();
79
118
  const state = createStateWithService(authCodeHash, AUTHORIZER_PVM);
80
119
  const isAuthorized = new IsAuthorized(spec, PvmBackend.BuiltIn, blake2b);
81
- const result = await isAuthorized.invoke(state, tryAsCoreIndex(0), BytesBlob.blobFromString("wrong"), AUTH_SERVICE_ID, authCodeHash, BytesBlob.blobFromString("right"));
120
+ const mismatch = buildPackageAndFetchData(authCodeHash, BytesBlob.blobFromString("wrong"), BytesBlob.blobFromString("right"));
121
+ const result = await isAuthorized.invoke(state, tryAsCoreIndex(0), mismatch.fetchData);
82
122
  assert.strictEqual(result.isError, true);
83
123
  assert.strictEqual(result.error, AuthorizationError.PvmFailed);
84
124
  });
@@ -89,14 +129,15 @@ describe("IsAuthorized", () => {
89
129
  services: new Map(),
90
130
  });
91
131
  const isAuthorized = new IsAuthorized(spec, PvmBackend.BuiltIn, blake2b);
92
- const result = await isAuthorized.invoke(state, tryAsCoreIndex(0), BytesBlob.empty(), AUTH_SERVICE_ID, authCodeHash, BytesBlob.empty());
132
+ const missing = buildPackageAndFetchData(authCodeHash, BytesBlob.empty(), BytesBlob.empty());
133
+ const result = await isAuthorized.invoke(state, tryAsCoreIndex(0), missing.fetchData);
93
134
  assert.strictEqual(result.isError, true);
94
135
  assert.strictEqual(result.error, AuthorizationError.CodeNotFound);
95
136
  });
96
137
  it("should fail when auth code preimage is missing", async () => {
97
138
  const authCodeHash = getAuthCodeHash();
98
139
  // Service exists but with no preimages
99
- const emptyService = new InMemoryService(AUTH_SERVICE_ID, {
140
+ const emptyService = InMemoryService.new(AUTH_SERVICE_ID, {
100
141
  info: ServiceAccountInfo.create({
101
142
  codeHash: Bytes.zero(HASH_SIZE).asOpaque(),
102
143
  balance: tryAsU64(0),
@@ -118,7 +159,8 @@ describe("IsAuthorized", () => {
118
159
  services: new Map([[AUTH_SERVICE_ID, emptyService]]),
119
160
  });
120
161
  const isAuthorized = new IsAuthorized(spec, PvmBackend.BuiltIn, blake2b);
121
- const result = await isAuthorized.invoke(state, tryAsCoreIndex(0), BytesBlob.empty(), AUTH_SERVICE_ID, authCodeHash, BytesBlob.empty());
162
+ const emptyPreimage = buildPackageAndFetchData(authCodeHash, BytesBlob.empty(), BytesBlob.empty());
163
+ const result = await isAuthorized.invoke(state, tryAsCoreIndex(0), emptyPreimage.fetchData);
122
164
  assert.strictEqual(result.isError, true);
123
165
  assert.strictEqual(result.error, AuthorizationError.CodeNotFound);
124
166
  });
@@ -1,21 +1,18 @@
1
- import { type CoreIndex, type Segment, type SegmentIndex, type ServiceGas } from "#@typeberry/block";
1
+ import { type CoreIndex, type Segment, type ServiceGas } from "#@typeberry/block";
2
2
  import type { WorkPackageHash } from "#@typeberry/block/refine-context.js";
3
3
  import type { WorkItem, WorkItemExtrinsic } from "#@typeberry/block/work-item.js";
4
4
  import { WorkExecResult, WorkResult } from "#@typeberry/block/work-result.js";
5
- import type { KnownSizeArray } from "#@typeberry/collections";
5
+ import { BytesBlob } from "#@typeberry/bytes";
6
6
  import type { ChainSpec, PvmBackend } from "#@typeberry/config";
7
7
  import { type ReturnValue } from "#@typeberry/executor";
8
8
  import { type Blake2b } from "#@typeberry/hash";
9
9
  import type { State } from "#@typeberry/state";
10
+ import type { WorkPackageFetchData } from "#@typeberry/transition/externalities/fetch-externalities.js";
11
+ import { type ImportedSegment, type PerWorkItem } from "./externalities/index.js";
10
12
  export type RefineItemResult = {
11
13
  result: WorkResult;
12
14
  exports: readonly Segment[];
13
15
  };
14
- export type PerWorkItem<T> = KnownSizeArray<T, "for each work item">;
15
- export type ImportedSegment = {
16
- index: SegmentIndex;
17
- data: Segment;
18
- };
19
16
  /**
20
17
  * Refine PVM invocation (Psi_R).
21
18
  *
@@ -26,7 +23,7 @@ export declare class Refine {
26
23
  private readonly pvmBackend;
27
24
  private readonly blake2b;
28
25
  constructor(chainSpec: ChainSpec, pvmBackend: PvmBackend, blake2b: Blake2b);
29
- invoke(state: State, lookupState: State, idx: number, item: WorkItem, allImports: PerWorkItem<ImportedSegment[]>, allExtrinsics: PerWorkItem<WorkItemExtrinsic[]>, coreIndex: CoreIndex, workPackageHash: WorkPackageHash, exportOffset: number): Promise<RefineItemResult>;
26
+ invoke(state: State, lookupState: State, packageFetchData: WorkPackageFetchData, idx: number, item: WorkItem, allImports: PerWorkItem<ImportedSegment[]>, allExtrinsics: PerWorkItem<WorkItemExtrinsic[]>, coreIndex: CoreIndex, workPackageHash: WorkPackageHash, exportOffset: number, authorizerTrace: BytesBlob): Promise<RefineItemResult>;
30
27
  static extractWorkResult(execResult: ReturnValue<ServiceGas>): WorkExecResult;
31
28
  private getServiceCode;
32
29
  private createRefineExternalities;
@@ -1 +1 @@
1
- {"version":3,"file":"refine.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/in-core/refine.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,UAAU,EAIhB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,EAAE,cAAc,EAAsC,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAGjH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAA+D,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACpH,OAAO,EAAE,KAAK,OAAO,EAAa,MAAM,iBAAiB,CAAC;AAE1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAK9C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,SAAS,OAAO,EAAE,CAAC;CAC7B,CAAC;AAEF,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;AAyBF;;;;GAIG;AACH,qBAAa,MAAM;IAEf,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAFP,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,OAAO;IAG7B,MAAM,CACV,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,KAAK,EAClB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,QAAQ,EACd,UAAU,EAAE,WAAW,CAAC,eAAe,EAAE,CAAC,EAC1C,aAAa,EAAE,WAAW,CAAC,iBAAiB,EAAE,CAAC,EAC/C,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,gBAAgB,CAAC;IA0F5B,MAAM,CAAC,iBAAiB,CAAC,UAAU,EAAE,WAAW,CAAC,UAAU,CAAC;IAiB5D,OAAO,CAAC,cAAc;IAyCtB,OAAO,CAAC,yBAAyB;CAsBlC"}
1
+ {"version":3,"file":"refine.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/in-core/refine.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,UAAU,EAIhB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,EAAE,cAAc,EAAsC,UAAU,EAAE,MAAM,iCAAiC,CAAC;AACjH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAA+D,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACpH,OAAO,EAAE,KAAK,OAAO,EAAa,MAAM,iBAAiB,CAAC;AAE1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4DAA4D,CAAC;AAEvG,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,WAAW,EAGjB,MAAM,0BAA0B,CAAC;AAElC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,SAAS,OAAO,EAAE,CAAC;CAC7B,CAAC;AAyBF;;;;GAIG;AACH,qBAAa,MAAM;IAEf,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAFP,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,OAAO;IAG7B,MAAM,CACV,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,KAAK,EAClB,gBAAgB,EAAE,oBAAoB,EACtC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,QAAQ,EACd,UAAU,EAAE,WAAW,CAAC,eAAe,EAAE,CAAC,EAC1C,aAAa,EAAE,WAAW,CAAC,iBAAiB,EAAE,CAAC,EAC/C,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,SAAS,GACzB,OAAO,CAAC,gBAAgB,CAAC;IA4F5B,MAAM,CAAC,iBAAiB,CAAC,UAAU,EAAE,WAAW,CAAC,UAAU,CAAC;IAiB5D,OAAO,CAAC,cAAc;IAyCtB,OAAO,CAAC,yBAAyB;CA6BlC"}
@@ -6,9 +6,8 @@ import { codec, Encoder } from "#@typeberry/codec";
6
6
  import { PvmExecutor, ReturnStatus } from "#@typeberry/executor";
7
7
  import { HASH_SIZE } from "#@typeberry/hash";
8
8
  import { tryAsU32 } from "#@typeberry/numbers";
9
- import { RefineFetchExternalities } from "#@typeberry/transition/externalities/refine-fetch-externalities.js";
10
9
  import { assertNever, Result } from "#@typeberry/utils";
11
- import { RefineExternalitiesImpl } from "./externalities/refine.js";
10
+ import { RefineExternalitiesImpl, RefineFetchExternalities, } from "./externalities/index.js";
12
11
  var ServiceCodeError;
13
12
  (function (ServiceCodeError) {
14
13
  /** Service id is not found in the state. */
@@ -42,7 +41,7 @@ export class Refine {
42
41
  this.pvmBackend = pvmBackend;
43
42
  this.blake2b = blake2b;
44
43
  }
45
- async invoke(state, lookupState, idx, item, allImports, allExtrinsics, coreIndex, workPackageHash, exportOffset) {
44
+ async invoke(state, lookupState, packageFetchData, idx, item, allImports, allExtrinsics, coreIndex, workPackageHash, exportOffset, authorizerTrace) {
46
45
  const payloadHash = this.blake2b.hashBytes(item.payload);
47
46
  const baseResult = {
48
47
  serviceId: item.service,
@@ -77,12 +76,14 @@ export class Refine {
77
76
  }
78
77
  const code = maybeCode.ok;
79
78
  const externalities = this.createRefineExternalities({
80
- payload: item.payload,
79
+ packageFetchData,
80
+ currentWorkItemIndex: idx,
81
81
  imports: allImports,
82
82
  extrinsics: allExtrinsics,
83
83
  currentServiceId: item.service,
84
84
  lookupState,
85
85
  exportOffset,
86
+ authorizerTrace,
86
87
  });
87
88
  const executor = await PvmExecutor.createRefineExecutor(item.service, code, externalities, this.pvmBackend);
88
89
  const args = Encoder.encodeObject(REFINE_ARGS_CODEC, {
@@ -160,8 +161,13 @@ export class Refine {
160
161
  return Result.ok(code);
161
162
  }
162
163
  createRefineExternalities(args) {
163
- // TODO [ToDr] Pass all required fetch data
164
- const fetchExternalities = new RefineFetchExternalities(this.chainSpec);
164
+ const fetchExternalities = new RefineFetchExternalities(this.chainSpec, {
165
+ packageData: args.packageFetchData,
166
+ currentWorkItemIndex: args.currentWorkItemIndex,
167
+ imports: args.imports,
168
+ extrinsics: args.extrinsics,
169
+ authorizerTrace: args.authorizerTrace,
170
+ });
165
171
  const refine = RefineExternalitiesImpl.create({
166
172
  currentServiceId: args.currentServiceId,
167
173
  lookupState: args.lookupState,
@@ -16,7 +16,8 @@ export declare class Assign implements HostCallHandler {
16
16
  index: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"HostCallIndex[U32]">;
17
17
  basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
18
18
  tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
19
- constructor(currentServiceId: ServiceId, partialState: PartialState, chainSpec: ChainSpec);
19
+ static new(currentServiceId: ServiceId, partialState: PartialState, chainSpec: ChainSpec): Assign;
20
+ private constructor();
20
21
  execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<undefined | PvmExecution>;
21
22
  }
22
23
  //# sourceMappingURL=assign.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"assign.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/assign.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAkB,MAAM,kBAAkB,CAAC;AAGlE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAG3E,OAAO,EAAE,KAAK,YAAY,EAAyB,MAAM,mCAAmC,CAAC;AAO7F;;;;GAIG;AACH,qBAAa,MAAO,YAAW,eAAe;aAM1B,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAP5B,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,eAAe,uEAAiC;gBAG9B,gBAAgB,EAAE,SAAS,EAC1B,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS;IAGjC,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CAkDrH"}
1
+ {"version":3,"file":"assign.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/assign.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAkB,MAAM,kBAAkB,CAAC;AAGlE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAG3E,OAAO,EAAE,KAAK,YAAY,EAAyB,MAAM,mCAAmC,CAAC;AAO7F;;;;GAIG;AACH,qBAAa,MAAO,YAAW,eAAe;aAU1B,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAX5B,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,eAAe,uEAAiC;IAEhD,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS;IAIxF,OAAO;IAMD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CAkDrH"}
@@ -23,6 +23,9 @@ export class Assign {
23
23
  index = tryAsHostCallIndex(15);
24
24
  basicGasCost = tryAsSmallGas(10);
25
25
  tracedRegisters = traceRegisters(IN_OUT_REG, 8);
26
+ static new(currentServiceId, partialState, chainSpec) {
27
+ return new Assign(currentServiceId, partialState, chainSpec);
28
+ }
26
29
  constructor(currentServiceId, partialState, chainSpec) {
27
30
  this.currentServiceId = currentServiceId;
28
31
  this.partialState = partialState;
@@ -18,7 +18,6 @@ import { Result } from "#@typeberry/utils";
18
18
  import { UpdatePrivilegesError } from "../externalities/partial-state.js";
19
19
  import { PartialStateMock } from "../externalities/partial-state-mock.js";
20
20
  import { HostCallResult } from "../general/results.js";
21
- import { emptyRegistersBuffer } from "../utils.js";
22
21
  import { Assign } from "./assign.js";
23
22
  const gas = gasCounter(tryAsGas(0));
24
23
  const RESULT_REG = 7;
@@ -27,7 +26,7 @@ const AUTH_QUEUE_START_REG = 8;
27
26
  const AUTH_MANAGER_REG = 9;
28
27
  function prepareRegsAndMemory(coreIndex, authQueue, { skipAuthQueue = false, assigners = null } = {}) {
29
28
  const memStart = 2 ** 16;
30
- const registers = new HostCallRegisters(emptyRegistersBuffer());
29
+ const registers = HostCallRegisters.empty();
31
30
  registers.set(CORE_INDEX_REG, tryAsU64(coreIndex));
32
31
  registers.set(AUTH_QUEUE_START_REG, tryAsU64(memStart));
33
32
  if (assigners !== null) {
@@ -43,7 +42,7 @@ function prepareRegsAndMemory(coreIndex, authQueue, { skipAuthQueue = false, ass
43
42
  if (!skipAuthQueue) {
44
43
  builder.setReadablePages(tryAsMemoryIndex(memStart), tryAsMemoryIndex(memStart + PAGE_SIZE), data.raw);
45
44
  }
46
- const memory = new HostCallMemory(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
45
+ const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
47
46
  return {
48
47
  registers,
49
48
  memory,
@@ -53,7 +52,7 @@ describe("HostCalls: Assign", () => {
53
52
  it("should assign authorization queue to a core", async () => {
54
53
  const accumulate = new PartialStateMock();
55
54
  const serviceId = tryAsServiceId(10_000);
56
- const assign = new Assign(serviceId, accumulate, tinyChainSpec);
55
+ const assign = Assign.new(serviceId, accumulate, tinyChainSpec);
57
56
  const { registers, memory } = prepareRegsAndMemory(tryAsCoreIndex(0), [
58
57
  Bytes.fill(HASH_SIZE, 1),
59
58
  Bytes.fill(HASH_SIZE, 2),
@@ -79,7 +78,7 @@ describe("HostCalls: Assign", () => {
79
78
  it("should return an error if core index is too large", async () => {
80
79
  const accumulate = new PartialStateMock();
81
80
  const serviceId = tryAsServiceId(10_000);
82
- const assign = new Assign(serviceId, accumulate, tinyChainSpec);
81
+ const assign = Assign.new(serviceId, accumulate, tinyChainSpec);
83
82
  const { registers, memory } = prepareRegsAndMemory(tryAsCoreIndex(3), []);
84
83
  // when
85
84
  const result = await assign.execute(gas, registers, memory);
@@ -91,7 +90,7 @@ describe("HostCalls: Assign", () => {
91
90
  it("should return an error if core index is waay too large", async () => {
92
91
  const accumulate = new PartialStateMock();
93
92
  const serviceId = tryAsServiceId(10_000);
94
- const assign = new Assign(serviceId, accumulate, tinyChainSpec);
93
+ const assign = Assign.new(serviceId, accumulate, tinyChainSpec);
95
94
  const { registers, memory } = prepareRegsAndMemory(tryAsCoreIndex(3), []);
96
95
  registers.set(CORE_INDEX_REG, tryAsU64(2 ** 16 + 3));
97
96
  // when
@@ -104,7 +103,7 @@ describe("HostCalls: Assign", () => {
104
103
  it("should return panic if data not readable", async () => {
105
104
  const accumulate = new PartialStateMock();
106
105
  const serviceId = tryAsServiceId(10_000);
107
- const assign = new Assign(serviceId, accumulate, tinyChainSpec);
106
+ const assign = Assign.new(serviceId, accumulate, tinyChainSpec);
108
107
  const { registers, memory } = prepareRegsAndMemory(tryAsCoreIndex(3), [], { skipAuthQueue: true });
109
108
  // when
110
109
  const result = await assign.execute(gas, registers, memory);
@@ -116,7 +115,7 @@ describe("HostCalls: Assign", () => {
116
115
  const accumulate = new PartialStateMock();
117
116
  accumulate.authQueueResponse = Result.error(UpdatePrivilegesError.UnprivilegedService, () => "Test: unprivileged service attempting assign");
118
117
  const serviceId = tryAsServiceId(10_000);
119
- const assign = new Assign(serviceId, accumulate, tinyChainSpec);
118
+ const assign = Assign.new(serviceId, accumulate, tinyChainSpec);
120
119
  const { registers, memory } = prepareRegsAndMemory(tryAsCoreIndex(0), [], { assigners: 0 });
121
120
  // when
122
121
  const result = await assign.execute(gas, registers, memory);
@@ -129,7 +128,7 @@ describe("HostCalls: Assign", () => {
129
128
  const accumulate = new PartialStateMock();
130
129
  accumulate.authQueueResponse = Result.error(UpdatePrivilegesError.InvalidServiceId, () => "Test: invalid service ID for assign");
131
130
  const serviceId = tryAsServiceId(10_000);
132
- const assign = new Assign(serviceId, accumulate, tinyChainSpec);
131
+ const assign = Assign.new(serviceId, accumulate, tinyChainSpec);
133
132
  const { registers, memory } = prepareRegsAndMemory(tryAsCoreIndex(0), [], { assigners: null });
134
133
  // when
135
134
  const result = await assign.execute(gas, registers, memory);
@@ -16,7 +16,8 @@ export declare class Bless implements HostCallHandler {
16
16
  index: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"HostCallIndex[U32]">;
17
17
  basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
18
18
  tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
19
- constructor(currentServiceId: ServiceId, partialState: PartialState, chainSpec: ChainSpec);
19
+ static new(currentServiceId: ServiceId, partialState: PartialState, chainSpec: ChainSpec): Bless;
20
+ private constructor();
20
21
  execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<undefined | PvmExecution>;
21
22
  }
22
23
  //# sourceMappingURL=bless.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bless.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/bless.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,SAAS,EAAmB,MAAM,kBAAkB,CAAC;AAEpF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAG3E,OAAO,EAAE,KAAK,YAAY,EAAyB,MAAM,mCAAmC,CAAC;AAkB7F;;;;GAIG;AACH,qBAAa,KAAM,YAAW,eAAe;aAMzB,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAP5B,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,eAAe,uEAAgD;gBAG7C,gBAAgB,EAAE,SAAS,EAC1B,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS;IAGjC,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CAkFrH"}
1
+ {"version":3,"file":"bless.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/bless.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,SAAS,EAAmB,MAAM,kBAAkB,CAAC;AAEpF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAG3E,OAAO,EAAE,KAAK,YAAY,EAAyB,MAAM,mCAAmC,CAAC;AAkB7F;;;;GAIG;AACH,qBAAa,KAAM,YAAW,eAAe;aAUzB,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAX5B,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,eAAe,uEAAgD;IAE/D,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS;IAIxF,OAAO;IAMD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CAkFrH"}
@@ -26,6 +26,9 @@ export class Bless {
26
26
  index = tryAsHostCallIndex(14);
27
27
  basicGasCost = tryAsSmallGas(10);
28
28
  tracedRegisters = traceRegisters(IN_OUT_REG, 8, 9, 10, 11, 12);
29
+ static new(currentServiceId, partialState, chainSpec) {
30
+ return new Bless(currentServiceId, partialState, chainSpec);
31
+ }
29
32
  constructor(currentServiceId, partialState, chainSpec) {
30
33
  this.currentServiceId = currentServiceId;
31
34
  this.partialState = partialState;
@@ -15,7 +15,6 @@ import { deepEqual, Result } from "#@typeberry/utils";
15
15
  import { UpdatePrivilegesError } from "../externalities/partial-state.js";
16
16
  import { PartialStateMock } from "../externalities/partial-state-mock.js";
17
17
  import { HostCallResult } from "../general/results.js";
18
- import { emptyRegistersBuffer } from "../utils.js";
19
18
  import { Bless } from "./bless.js";
20
19
  const gas = gasCounter(tryAsGas(0));
21
20
  const RESULT_REG = 7;
@@ -40,7 +39,7 @@ function prepareAuthorizers() {
40
39
  function prepareRegsAndMemory(entries, authorizerData, { skipDictionary = false, skipAuth = false, manager, validator, registrar, } = {}) {
41
40
  const memAuthStart = 2 ** 24;
42
41
  const memStart = 2 ** 16;
43
- const registers = new HostCallRegisters(emptyRegistersBuffer());
42
+ const registers = HostCallRegisters.empty();
44
43
  registers.set(MANAGER_REG, manager ?? tryAsU64(5));
45
44
  registers.set(AUTHORIZATION_REG, tryAsU64(memAuthStart));
46
45
  registers.set(VALIDATOR_REG, validator ?? tryAsU64(20));
@@ -61,7 +60,7 @@ function prepareRegsAndMemory(entries, authorizerData, { skipDictionary = false,
61
60
  if (!skipAuth) {
62
61
  builder.setReadablePages(tryAsMemoryIndex(memAuthStart), tryAsMemoryIndex(memAuthStart + PAGE_SIZE), dataAuth.raw);
63
62
  }
64
- const memory = new HostCallMemory(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
63
+ const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
65
64
  return {
66
65
  registers,
67
66
  memory,
@@ -71,7 +70,7 @@ describe("HostCalls: Bless", () => {
71
70
  it("should set new privileged services and auto-accumulate services", async () => {
72
71
  const accumulate = new PartialStateMock();
73
72
  const serviceId = tryAsServiceId(10_000);
74
- const bless = new Bless(serviceId, accumulate, tinyChainSpec);
73
+ const bless = Bless.new(serviceId, accumulate, tinyChainSpec);
75
74
  const entries = prepareServiceGasMap();
76
75
  const authorizers = prepareAuthorizers();
77
76
  const { registers, memory } = prepareRegsAndMemory(entries, authorizers);
@@ -93,7 +92,7 @@ describe("HostCalls: Bless", () => {
93
92
  it("should return panic when dictionary is not readable", async () => {
94
93
  const accumulate = new PartialStateMock();
95
94
  const serviceId = tryAsServiceId(10_000);
96
- const bless = new Bless(serviceId, accumulate, tinyChainSpec);
95
+ const bless = Bless.new(serviceId, accumulate, tinyChainSpec);
97
96
  const entries = prepareServiceGasMap();
98
97
  const authorizers = prepareAuthorizers();
99
98
  const { registers, memory } = prepareRegsAndMemory(entries, authorizers, { skipDictionary: true });
@@ -106,7 +105,7 @@ describe("HostCalls: Bless", () => {
106
105
  it("should return panic when authorizers are not readable", async () => {
107
106
  const accumulate = new PartialStateMock();
108
107
  const serviceId = tryAsServiceId(10_000);
109
- const bless = new Bless(serviceId, accumulate, tinyChainSpec);
108
+ const bless = Bless.new(serviceId, accumulate, tinyChainSpec);
110
109
  const entries = prepareServiceGasMap();
111
110
  const authorizers = prepareAuthorizers();
112
111
  const { registers, memory } = prepareRegsAndMemory(entries, authorizers, { skipAuth: true });
@@ -119,7 +118,7 @@ describe("HostCalls: Bless", () => {
119
118
  it("should auto-accumulate services when dictionary is out of order", async () => {
120
119
  const accumulate = new PartialStateMock();
121
120
  const serviceId = tryAsServiceId(10_000);
122
- const bless = new Bless(serviceId, accumulate, tinyChainSpec);
121
+ const bless = Bless.new(serviceId, accumulate, tinyChainSpec);
123
122
  const entries = prepareServiceGasMap();
124
123
  entries.push([tryAsServiceId(5), tryAsServiceGas(10_000)]);
125
124
  const authorizers = prepareAuthorizers();
@@ -142,7 +141,7 @@ describe("HostCalls: Bless", () => {
142
141
  it("should auto-accumulate services when dictionary contains duplicates", async () => {
143
142
  const accumulate = new PartialStateMock();
144
143
  const serviceId = tryAsServiceId(10_000);
145
- const bless = new Bless(serviceId, accumulate, tinyChainSpec);
144
+ const bless = Bless.new(serviceId, accumulate, tinyChainSpec);
146
145
  const entries = prepareServiceGasMap();
147
146
  entries.push(entries[entries.length - 1]);
148
147
  const authorizers = prepareAuthorizers();
@@ -166,7 +165,7 @@ describe("HostCalls: Bless", () => {
166
165
  const accumulate = new PartialStateMock();
167
166
  accumulate.privilegedServicesResponse = Result.error(UpdatePrivilegesError.UnprivilegedService, () => "Test: unprivileged service attempting bless");
168
167
  const serviceId = tryAsServiceId(11_000);
169
- const bless = new Bless(serviceId, accumulate, tinyChainSpec);
168
+ const bless = Bless.new(serviceId, accumulate, tinyChainSpec);
170
169
  const entries = prepareServiceGasMap();
171
170
  const authorizers = prepareAuthorizers();
172
171
  const { registers, memory } = prepareRegsAndMemory(entries, authorizers);
@@ -181,7 +180,7 @@ describe("HostCalls: Bless", () => {
181
180
  const accumulate = new PartialStateMock();
182
181
  accumulate.privilegedServicesResponse = Result.error(UpdatePrivilegesError.InvalidServiceId, () => "Test: invalid manager service ID for bless");
183
182
  const serviceId = tryAsServiceId(11_000);
184
- const bless = new Bless(serviceId, accumulate, tinyChainSpec);
183
+ const bless = Bless.new(serviceId, accumulate, tinyChainSpec);
185
184
  const entries = prepareServiceGasMap();
186
185
  const authorizers = prepareAuthorizers();
187
186
  const { registers, memory } = prepareRegsAndMemory(entries, authorizers, { manager: tryAsU64(MAX_VALUE_U64) });
@@ -196,7 +195,7 @@ describe("HostCalls: Bless", () => {
196
195
  const accumulate = new PartialStateMock();
197
196
  accumulate.privilegedServicesResponse = Result.error(UpdatePrivilegesError.InvalidServiceId, () => "Test: invalid validator service ID for bless");
198
197
  const serviceId = tryAsServiceId(11_000);
199
- const bless = new Bless(serviceId, accumulate, tinyChainSpec);
198
+ const bless = Bless.new(serviceId, accumulate, tinyChainSpec);
200
199
  const entries = prepareServiceGasMap();
201
200
  const authorizers = prepareAuthorizers();
202
201
  const { registers, memory } = prepareRegsAndMemory(entries, authorizers, { validator: tryAsU64(MAX_VALUE_U64) });
@@ -211,7 +210,7 @@ describe("HostCalls: Bless", () => {
211
210
  const accumulate = new PartialStateMock();
212
211
  accumulate.privilegedServicesResponse = Result.error(UpdatePrivilegesError.InvalidServiceId, () => "Test: invalid registrar service ID for bless");
213
212
  const serviceId = tryAsServiceId(11_000);
214
- const bless = new Bless(serviceId, accumulate, tinyChainSpec);
213
+ const bless = Bless.new(serviceId, accumulate, tinyChainSpec);
215
214
  const entries = prepareServiceGasMap();
216
215
  const authorizers = prepareAuthorizers();
217
216
  const { registers, memory } = prepareRegsAndMemory(entries, authorizers, { registrar: tryAsU64(MAX_VALUE_U64) });
@@ -16,7 +16,8 @@ export declare class Checkpoint implements HostCallHandler {
16
16
  basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
17
17
  tracedRegisters: RegisterIndex[];
18
18
  private readonly gasHostCall;
19
- constructor(currentServiceId: ServiceId, partialState: PartialState);
19
+ static new(currentServiceId: ServiceId, partialState: PartialState): Checkpoint;
20
+ private constructor();
20
21
  execute(gas: IGasCounter, regs: HostCallRegisters): Promise<undefined | PvmExecution>;
21
22
  }
22
23
  //# sourceMappingURL=checkpoint.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/checkpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpF,OAAO,EAAE,KAAK,YAAY,EAAsB,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAItE;;;;GAIG;AACH,qBAAa,UAAW,YAAW,eAAe;aAQ9B,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAR/B,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,eAAe,EAAE,aAAa,EAAE,CAAC;IAEjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;gBAGxB,gBAAgB,EAAE,SAAS,EAC1B,YAAY,EAAE,YAAY;IAMvC,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CAM5F"}
1
+ {"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/checkpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpF,OAAO,EAAE,KAAK,YAAY,EAAsB,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAItE;;;;GAIG;AACH,qBAAa,UAAW,YAAW,eAAe;aAY9B,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAZ/B,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,eAAe,EAAE,aAAa,EAAE,CAAC;IAEjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAE1C,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY;IAIlE,OAAO;IAQD,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CAM5F"}
@@ -14,10 +14,13 @@ export class Checkpoint {
14
14
  basicGasCost = tryAsSmallGas(10);
15
15
  tracedRegisters;
16
16
  gasHostCall;
17
+ static new(currentServiceId, partialState) {
18
+ return new Checkpoint(currentServiceId, partialState);
19
+ }
17
20
  constructor(currentServiceId, partialState) {
18
21
  this.currentServiceId = currentServiceId;
19
22
  this.partialState = partialState;
20
- this.gasHostCall = new GasHostCall(currentServiceId);
23
+ this.gasHostCall = GasHostCall.new(currentServiceId);
21
24
  this.tracedRegisters = this.gasHostCall.tracedRegisters;
22
25
  }
23
26
  async execute(gas, regs) {
@@ -5,16 +5,15 @@ import { HostCallRegisters } from "#@typeberry/pvm-host-calls";
5
5
  import { tryAsGas } from "#@typeberry/pvm-interface";
6
6
  import { gasCounter } from "#@typeberry/pvm-interpreter/gas.js";
7
7
  import { PartialStateMock } from "../externalities/partial-state-mock.js";
8
- import { emptyRegistersBuffer } from "../utils.js";
9
8
  import { Checkpoint } from "./checkpoint.js";
10
9
  const REGISTER = 7;
11
10
  describe("HostCalls: Checkpoint", () => {
12
11
  it("should write U64 gas to register and checkpoint the state", async () => {
13
12
  const accumulate = new PartialStateMock();
14
13
  const serviceId = tryAsServiceId(10_000);
15
- const checkpoint = new Checkpoint(serviceId, accumulate);
14
+ const checkpoint = Checkpoint.new(serviceId, accumulate);
16
15
  const counter = gasCounter(tryAsGas(2n ** 42n - 1n));
17
- const regs = new HostCallRegisters(emptyRegistersBuffer());
16
+ const regs = HostCallRegisters.empty();
18
17
  assert.deepStrictEqual(regs.get(REGISTER), 0n);
19
18
  assert.deepStrictEqual(accumulate.checkpointCalled, 0);
20
19
  // when
@@ -17,7 +17,8 @@ export declare class Designate implements HostCallHandler {
17
17
  index: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"HostCallIndex[U32]">;
18
18
  basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
19
19
  tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
20
- constructor(currentServiceId: ServiceId, partialState: PartialState, chainSpec: ChainSpec);
20
+ static new(currentServiceId: ServiceId, partialState: PartialState, chainSpec: ChainSpec): Designate;
21
+ private constructor();
21
22
  execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<undefined | PvmExecution>;
22
23
  }
23
24
  //# sourceMappingURL=designate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"designate.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/designate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,kBAAkB,CAAC;AAErE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAG3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAKtE,eAAO,MAAM,oBAAoB,QAAgD,CAAC;AAElF;;;;GAIG;AACH,qBAAa,SAAU,YAAW,eAAe;aAM7B,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAP5B,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,eAAe,uEAA8B;gBAG3B,gBAAgB,EAAE,SAAS,EAC1B,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS;IAGjC,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CAyBrH"}
1
+ {"version":3,"file":"designate.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/designate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,kBAAkB,CAAC;AAErE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAG3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAKtE,eAAO,MAAM,oBAAoB,QAAgD,CAAC;AAElF;;;;GAIG;AACH,qBAAa,SAAU,YAAW,eAAe;aAU7B,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAX5B,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,eAAe,uEAA8B;IAE7C,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS;IAIxF,OAAO;IAMD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CAyBrH"}
@@ -20,6 +20,9 @@ export class Designate {
20
20
  index = tryAsHostCallIndex(16);
21
21
  basicGasCost = tryAsSmallGas(10);
22
22
  tracedRegisters = traceRegisters(IN_OUT_REG);
23
+ static new(currentServiceId, partialState, chainSpec) {
24
+ return new Designate(currentServiceId, partialState, chainSpec);
25
+ }
23
26
  constructor(currentServiceId, partialState, chainSpec) {
24
27
  this.currentServiceId = currentServiceId;
25
28
  this.partialState = partialState;
@@ -17,14 +17,13 @@ import { Result } from "#@typeberry/utils";
17
17
  import { UnprivilegedError } from "../externalities/partial-state.js";
18
18
  import { PartialStateMock } from "../externalities/partial-state-mock.js";
19
19
  import { HostCallResult } from "../general/results.js";
20
- import { emptyRegistersBuffer } from "../utils.js";
21
20
  import { Designate } from "./designate.js";
22
21
  const gas = gasCounter(tryAsGas(0));
23
22
  const RESULT_REG = 7;
24
23
  const VALIDATORS_DATA_START_REG = 7;
25
24
  function prepareRegsAndMemory(validators, { skipValidators = false } = {}) {
26
25
  const memStart = 2 ** 16;
27
- const registers = new HostCallRegisters(emptyRegistersBuffer());
26
+ const registers = HostCallRegisters.empty();
28
27
  registers.set(VALIDATORS_DATA_START_REG, tryAsU64(memStart));
29
28
  const builder = new MemoryBuilder();
30
29
  while (validators.length < tinyChainSpec.validatorsCount) {
@@ -41,7 +40,7 @@ function prepareRegsAndMemory(validators, { skipValidators = false } = {}) {
41
40
  if (!skipValidators) {
42
41
  builder.setReadablePages(tryAsMemoryIndex(memStart), tryAsMemoryIndex(memStart + PAGE_SIZE), data.raw);
43
42
  }
44
- const memory = new HostCallMemory(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
43
+ const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
45
44
  return {
46
45
  registers: registers,
47
46
  memory,
@@ -51,7 +50,7 @@ describe("HostCalls: Designate", () => {
51
50
  it("should fail when no data in memory", async () => {
52
51
  const accumulate = new PartialStateMock();
53
52
  const serviceId = tryAsServiceId(10_000);
54
- const designate = new Designate(serviceId, accumulate, tinyChainSpec);
53
+ const designate = Designate.new(serviceId, accumulate, tinyChainSpec);
55
54
  const { registers, memory } = prepareRegsAndMemory([], { skipValidators: true });
56
55
  // when
57
56
  const result = await designate.execute(gas, registers, memory);
@@ -62,7 +61,7 @@ describe("HostCalls: Designate", () => {
62
61
  it("should designate new validator set", async () => {
63
62
  const accumulate = new PartialStateMock();
64
63
  const serviceId = tryAsServiceId(10_000);
65
- const designate = new Designate(serviceId, accumulate, tinyChainSpec);
64
+ const designate = Designate.new(serviceId, accumulate, tinyChainSpec);
66
65
  const { registers, memory } = prepareRegsAndMemory([
67
66
  ValidatorData.create({
68
67
  ed25519: Bytes.fill(ED25519_KEY_BYTES, 1).asOpaque(),
@@ -100,7 +99,7 @@ describe("HostCalls: Designate", () => {
100
99
  const accumulate = new PartialStateMock();
101
100
  accumulate.validatorDataResponse = Result.error(UnprivilegedError, () => "Test: unprivileged service attempting designate");
102
101
  const serviceId = tryAsServiceId(10_000);
103
- const designate = new Designate(serviceId, accumulate, tinyChainSpec);
102
+ const designate = Designate.new(serviceId, accumulate, tinyChainSpec);
104
103
  const { registers, memory } = prepareRegsAndMemory([
105
104
  ValidatorData.create({
106
105
  ed25519: Bytes.fill(ED25519_KEY_BYTES, 1).asOpaque(),
@@ -14,7 +14,8 @@ export declare class Eject implements HostCallHandler {
14
14
  index: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"HostCallIndex[U32]">;
15
15
  basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
16
16
  tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
17
- constructor(currentServiceId: ServiceId, partialState: PartialState);
17
+ static new(currentServiceId: ServiceId, partialState: PartialState): Eject;
18
+ private constructor();
18
19
  execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<undefined | PvmExecution>;
19
20
  }
20
21
  //# sourceMappingURL=eject.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"eject.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/eject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAIlD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAE3E,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAOlF;;;;GAIG;AACH,qBAAa,KAAM,YAAW,eAAe;aAMzB,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAN/B,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,eAAe,uEAAiC;gBAG9B,gBAAgB,EAAE,SAAS,EAC1B,YAAY,EAAE,YAAY;IAGvC,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CA0CrH"}
1
+ {"version":3,"file":"eject.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/eject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAIlD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAE3E,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAOlF;;;;GAIG;AACH,qBAAa,KAAM,YAAW,eAAe;aAUzB,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAV/B,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,eAAe,uEAAiC;IAEhD,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY;IAIlE,OAAO;IAKD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CA0CrH"}