@typeberry/lib 0.5.10 → 0.5.11-1fbacf3

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 (502) hide show
  1. package/README.md +2 -2
  2. package/bin/lib/examples/pvm-usage.test.js +2 -2
  3. package/package.json +1 -1
  4. package/packages/core/codec/descriptor.js +1 -1
  5. package/packages/core/codec/descriptors.js +7 -4
  6. package/packages/core/codec/encoder.d.ts +1 -1
  7. package/packages/core/codec/encoder.d.ts.map +1 -1
  8. package/packages/core/codec/encoder.js +3 -2
  9. package/packages/core/codec/index.test.js +1 -1
  10. package/packages/core/codec/skip.d.ts +2 -1
  11. package/packages/core/codec/skip.d.ts.map +1 -1
  12. package/packages/core/codec/skip.js +3 -0
  13. package/packages/core/codec/view.js +2 -2
  14. package/packages/core/collections/multi-map.d.ts +2 -1
  15. package/packages/core/collections/multi-map.d.ts.map +1 -1
  16. package/packages/core/collections/multi-map.js +3 -0
  17. package/packages/core/collections/multi-map.test.js +2 -2
  18. package/packages/core/concurrent/parent.js +4 -1
  19. package/packages/core/crypto/ed25519.d.ts +2 -5
  20. package/packages/core/crypto/ed25519.d.ts.map +1 -1
  21. package/packages/core/crypto/ed25519.js +4 -1
  22. package/packages/core/hash/hash.d.ts +4 -2
  23. package/packages/core/hash/hash.d.ts.map +1 -1
  24. package/packages/core/hash/hash.js +6 -1
  25. package/packages/core/networking/quic-network.d.ts +3 -2
  26. package/packages/core/networking/quic-network.d.ts.map +1 -1
  27. package/packages/core/networking/quic-network.js +3 -0
  28. package/packages/core/networking/quic-peer.d.ts +2 -1
  29. package/packages/core/networking/quic-peer.d.ts.map +1 -1
  30. package/packages/core/networking/quic-peer.js +5 -2
  31. package/packages/core/networking/quic-stream.d.ts +2 -1
  32. package/packages/core/networking/quic-stream.d.ts.map +1 -1
  33. package/packages/core/networking/quic-stream.js +3 -0
  34. package/packages/core/networking/setup.js +2 -2
  35. package/packages/core/pvm-host-calls/bin.js +2 -2
  36. package/packages/core/pvm-host-calls/ecalli-trace-logger.d.ts +5 -0
  37. package/packages/core/pvm-host-calls/ecalli-trace-logger.d.ts.map +1 -1
  38. package/packages/core/pvm-host-calls/ecalli-trace-logger.js +8 -1
  39. package/packages/core/pvm-host-calls/ecalli-trace-logger.test.js +1 -1
  40. package/packages/core/pvm-host-calls/host-call-memory.d.ts +2 -1
  41. package/packages/core/pvm-host-calls/host-call-memory.d.ts.map +1 -1
  42. package/packages/core/pvm-host-calls/host-call-memory.js +3 -0
  43. package/packages/core/pvm-host-calls/host-call-memory.test.js +1 -1
  44. package/packages/core/pvm-host-calls/host-call-registers.d.ts +5 -1
  45. package/packages/core/pvm-host-calls/host-call-registers.d.ts.map +1 -1
  46. package/packages/core/pvm-host-calls/host-call-registers.js +11 -1
  47. package/packages/core/pvm-host-calls/host-call-registers.test.js +2 -2
  48. package/packages/core/pvm-host-calls/host-calls-executor.d.ts +2 -1
  49. package/packages/core/pvm-host-calls/host-calls-executor.d.ts.map +1 -1
  50. package/packages/core/pvm-host-calls/host-calls-executor.js +5 -2
  51. package/packages/core/pvm-host-calls/host-calls.d.ts +4 -2
  52. package/packages/core/pvm-host-calls/host-calls.d.ts.map +1 -1
  53. package/packages/core/pvm-host-calls/host-calls.js +9 -4
  54. package/packages/core/pvm-host-calls/pvm-instance-manager.js +1 -1
  55. package/packages/core/pvm-interface/pvm.d.ts +2 -0
  56. package/packages/core/pvm-interface/pvm.d.ts.map +1 -1
  57. package/packages/core/pvm-interpreter/args-decoder/args-decoder.js +1 -1
  58. package/packages/core/pvm-interpreter/args-decoder/args-decoder.test.js +3 -3
  59. package/packages/core/pvm-interpreter/args-decoder/args-decoding-results.js +11 -11
  60. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.d.ts +2 -1
  61. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.d.ts.map +1 -1
  62. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.js +3 -0
  63. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.test.js +2 -2
  64. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.d.ts +2 -1
  65. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.d.ts.map +1 -1
  66. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.js +3 -0
  67. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.test.js +26 -26
  68. package/packages/core/pvm-interpreter/basic-blocks/basic-blocks.test.js +8 -8
  69. package/packages/core/pvm-interpreter/bin.js +1 -1
  70. package/packages/core/pvm-interpreter/debugger-adapter.d.ts +2 -1
  71. package/packages/core/pvm-interpreter/debugger-adapter.d.ts.map +1 -1
  72. package/packages/core/pvm-interpreter/debugger-adapter.js +6 -3
  73. package/packages/core/pvm-interpreter/gas.js +4 -1
  74. package/packages/core/pvm-interpreter/interpreter.d.ts +2 -1
  75. package/packages/core/pvm-interpreter/interpreter.d.ts.map +1 -1
  76. package/packages/core/pvm-interpreter/interpreter.js +19 -16
  77. package/packages/core/pvm-interpreter/memory/memory-builder.js +2 -2
  78. package/packages/core/pvm-interpreter/memory/memory-builder.test.js +7 -7
  79. package/packages/core/pvm-interpreter/memory/memory.d.ts +2 -1
  80. package/packages/core/pvm-interpreter/memory/memory.d.ts.map +1 -1
  81. package/packages/core/pvm-interpreter/memory/memory.js +4 -1
  82. package/packages/core/pvm-interpreter/memory/memory.test.js +31 -31
  83. package/packages/core/pvm-interpreter/memory/pages/readable-page.d.ts +2 -1
  84. package/packages/core/pvm-interpreter/memory/pages/readable-page.d.ts.map +1 -1
  85. package/packages/core/pvm-interpreter/memory/pages/readable-page.js +3 -0
  86. package/packages/core/pvm-interpreter/memory/pages/readable-page.test.js +3 -3
  87. package/packages/core/pvm-interpreter/memory/pages/writeable-page.d.ts +2 -1
  88. package/packages/core/pvm-interpreter/memory/pages/writeable-page.d.ts.map +1 -1
  89. package/packages/core/pvm-interpreter/memory/pages/writeable-page.js +3 -0
  90. package/packages/core/pvm-interpreter/memory/pages/writeable-page.test.js +4 -4
  91. package/packages/core/pvm-interpreter/ops/bit-ops.d.ts +2 -1
  92. package/packages/core/pvm-interpreter/ops/bit-ops.d.ts.map +1 -1
  93. package/packages/core/pvm-interpreter/ops/bit-ops.js +3 -0
  94. package/packages/core/pvm-interpreter/ops/bit-ops.test.js +3 -3
  95. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.d.ts +2 -1
  96. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.d.ts.map +1 -1
  97. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.js +3 -0
  98. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.test.js +5 -5
  99. package/packages/core/pvm-interpreter/ops/boolean-ops.d.ts +2 -1
  100. package/packages/core/pvm-interpreter/ops/boolean-ops.d.ts.map +1 -1
  101. package/packages/core/pvm-interpreter/ops/boolean-ops.js +3 -0
  102. package/packages/core/pvm-interpreter/ops/boolean-ops.test.js +3 -3
  103. package/packages/core/pvm-interpreter/ops/branch-ops.d.ts +2 -1
  104. package/packages/core/pvm-interpreter/ops/branch-ops.d.ts.map +1 -1
  105. package/packages/core/pvm-interpreter/ops/branch-ops.js +3 -0
  106. package/packages/core/pvm-interpreter/ops/branch-ops.test.js +4 -4
  107. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.d.ts +2 -1
  108. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.d.ts.map +1 -1
  109. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.js +3 -0
  110. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.test.js +5 -5
  111. package/packages/core/pvm-interpreter/ops/host-call-ops.d.ts +2 -1
  112. package/packages/core/pvm-interpreter/ops/host-call-ops.d.ts.map +1 -1
  113. package/packages/core/pvm-interpreter/ops/host-call-ops.js +3 -0
  114. package/packages/core/pvm-interpreter/ops/host-call-ops.test.js +2 -2
  115. package/packages/core/pvm-interpreter/ops/load-ops.d.ts +2 -1
  116. package/packages/core/pvm-interpreter/ops/load-ops.d.ts.map +1 -1
  117. package/packages/core/pvm-interpreter/ops/load-ops.js +3 -0
  118. package/packages/core/pvm-interpreter/ops/load-ops.test.js +10 -10
  119. package/packages/core/pvm-interpreter/ops/math-ops.d.ts +2 -1
  120. package/packages/core/pvm-interpreter/ops/math-ops.d.ts.map +1 -1
  121. package/packages/core/pvm-interpreter/ops/math-ops.js +3 -0
  122. package/packages/core/pvm-interpreter/ops/math-ops.test.js +3 -3
  123. package/packages/core/pvm-interpreter/ops/memory-ops.d.ts +2 -1
  124. package/packages/core/pvm-interpreter/ops/memory-ops.d.ts.map +1 -1
  125. package/packages/core/pvm-interpreter/ops/memory-ops.js +3 -0
  126. package/packages/core/pvm-interpreter/ops/memory-ops.test.js +3 -3
  127. package/packages/core/pvm-interpreter/ops/move-ops.d.ts +2 -1
  128. package/packages/core/pvm-interpreter/ops/move-ops.d.ts.map +1 -1
  129. package/packages/core/pvm-interpreter/ops/move-ops.js +3 -0
  130. package/packages/core/pvm-interpreter/ops/move-ops.test.js +3 -3
  131. package/packages/core/pvm-interpreter/ops/no-args-ops.d.ts +2 -1
  132. package/packages/core/pvm-interpreter/ops/no-args-ops.d.ts.map +1 -1
  133. package/packages/core/pvm-interpreter/ops/no-args-ops.js +3 -0
  134. package/packages/core/pvm-interpreter/ops/no-args-ops.test.js +2 -2
  135. package/packages/core/pvm-interpreter/ops/shift-ops.d.ts +2 -1
  136. package/packages/core/pvm-interpreter/ops/shift-ops.d.ts.map +1 -1
  137. package/packages/core/pvm-interpreter/ops/shift-ops.js +3 -0
  138. package/packages/core/pvm-interpreter/ops/shift-ops.test.js +3 -3
  139. package/packages/core/pvm-interpreter/ops/store-ops.d.ts +2 -1
  140. package/packages/core/pvm-interpreter/ops/store-ops.d.ts.map +1 -1
  141. package/packages/core/pvm-interpreter/ops/store-ops.js +3 -0
  142. package/packages/core/pvm-interpreter/ops/store-ops.test.js +7 -7
  143. package/packages/core/pvm-interpreter/ops-dispatchers/no-args-dispatcher.test.js +1 -1
  144. package/packages/core/pvm-interpreter/ops-dispatchers/one-imm-dispatcher.test.js +4 -4
  145. package/packages/core/pvm-interpreter/ops-dispatchers/one-offset-dispatcher.test.js +2 -2
  146. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-ext-imm-dispatcher.test.js +4 -4
  147. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-imm-dispatcher.test.js +7 -7
  148. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-imm-one-offset-dispatcher.test.js +10 -10
  149. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-two-imms-dispatcher.test.js +5 -5
  150. package/packages/core/pvm-interpreter/ops-dispatchers/three-regs-dispatcher.test.js +7 -7
  151. package/packages/core/pvm-interpreter/ops-dispatchers/two-imms-dispatcher.test.js +5 -5
  152. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-dispatcher.test.js +6 -6
  153. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-one-imm-dispatcher.test.js +11 -11
  154. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-one-offset-dispatcher.test.js +2 -2
  155. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-two-imms-dispatcher.test.js +14 -14
  156. package/packages/core/pvm-interpreter/program-decoder/jump-table.d.ts +5 -2
  157. package/packages/core/pvm-interpreter/program-decoder/jump-table.d.ts.map +1 -1
  158. package/packages/core/pvm-interpreter/program-decoder/jump-table.js +9 -4
  159. package/packages/core/pvm-interpreter/program-decoder/jump-table.test.js +6 -6
  160. package/packages/core/pvm-interpreter/program-decoder/mask.d.ts +2 -1
  161. package/packages/core/pvm-interpreter/program-decoder/mask.d.ts.map +1 -1
  162. package/packages/core/pvm-interpreter/program-decoder/mask.js +3 -0
  163. package/packages/core/pvm-interpreter/program-decoder/mask.test.js +10 -10
  164. package/packages/core/pvm-interpreter/program-decoder/program-decoder.d.ts +2 -1
  165. package/packages/core/pvm-interpreter/program-decoder/program-decoder.d.ts.map +1 -1
  166. package/packages/core/pvm-interpreter/program-decoder/program-decoder.js +6 -3
  167. package/packages/core/pvm-interpreter/program-decoder/program-decoder.test.js +5 -5
  168. package/packages/core/pvm-interpreter/program.js +3 -3
  169. package/packages/core/pvm-interpreter/registers.d.ts +5 -2
  170. package/packages/core/pvm-interpreter/registers.d.ts.map +1 -1
  171. package/packages/core/pvm-interpreter/registers.js +10 -6
  172. package/packages/core/pvm-interpreter/registers.test.js +10 -10
  173. package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.d.ts +6 -3
  174. package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.d.ts.map +1 -1
  175. package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.js +11 -2
  176. package/packages/core/pvm-interpreter-ananas/index.d.ts +6 -3
  177. package/packages/core/pvm-interpreter-ananas/index.d.ts.map +1 -1
  178. package/packages/core/pvm-interpreter-ananas/index.js +12 -3
  179. package/packages/core/trie/nodes.d.ts +7 -2
  180. package/packages/core/trie/nodes.d.ts.map +1 -1
  181. package/packages/core/trie/nodes.js +20 -11
  182. package/packages/core/trie/nodesDb.d.ts +3 -1
  183. package/packages/core/trie/nodesDb.d.ts.map +1 -1
  184. package/packages/core/trie/nodesDb.js +6 -0
  185. package/packages/core/trie/trie.js +2 -2
  186. package/packages/extensions/ipc/index.js +5 -2
  187. package/packages/extensions/ipc/jamnp/handler.d.ts +4 -2
  188. package/packages/extensions/ipc/jamnp/handler.d.ts.map +1 -1
  189. package/packages/extensions/ipc/jamnp/handler.js +9 -3
  190. package/packages/extensions/ipc/jamnp/server.js +3 -3
  191. package/packages/extensions/ipc/server.d.ts +2 -1
  192. package/packages/extensions/ipc/server.d.ts.map +1 -1
  193. package/packages/extensions/ipc/server.js +4 -1
  194. package/packages/jam/block/header.js +1 -1
  195. package/packages/jam/block/work-package.d.ts +7 -7
  196. package/packages/jam/block/work-package.d.ts.map +1 -1
  197. package/packages/jam/block/work-package.js +12 -12
  198. package/packages/jam/config/chain-spec.d.ts +2 -1
  199. package/packages/jam/config/chain-spec.d.ts.map +1 -1
  200. package/packages/jam/config/chain-spec.js +5 -2
  201. package/packages/jam/config/network.d.ts +2 -7
  202. package/packages/jam/config/network.d.ts.map +1 -1
  203. package/packages/jam/config/network.js +3 -0
  204. package/packages/jam/config-node/jip-chain-spec.js +1 -1
  205. package/packages/jam/database/blocks.test.js +1 -1
  206. package/packages/jam/database/states.d.ts +2 -1
  207. package/packages/jam/database/states.d.ts.map +1 -1
  208. package/packages/jam/database/states.js +3 -0
  209. package/packages/jam/database/states.test.js +1 -1
  210. package/packages/jam/database-lmdb/blocks.d.ts +2 -1
  211. package/packages/jam/database-lmdb/blocks.d.ts.map +1 -1
  212. package/packages/jam/database-lmdb/blocks.js +3 -0
  213. package/packages/jam/database-lmdb/root.d.ts +2 -1
  214. package/packages/jam/database-lmdb/root.d.ts.map +1 -1
  215. package/packages/jam/database-lmdb/root.js +3 -0
  216. package/packages/jam/database-lmdb/states.d.ts +2 -1
  217. package/packages/jam/database-lmdb/states.d.ts.map +1 -1
  218. package/packages/jam/database-lmdb/states.js +3 -0
  219. package/packages/jam/database-lmdb/states.test.js +9 -9
  220. package/packages/jam/executor/index.d.ts +1 -1
  221. package/packages/jam/executor/index.d.ts.map +1 -1
  222. package/packages/jam/executor/index.js +1 -1
  223. package/packages/jam/executor/pvm-executor.d.ts +9 -2
  224. package/packages/jam/executor/pvm-executor.d.ts.map +1 -1
  225. package/packages/jam/executor/pvm-executor.js +36 -21
  226. package/packages/jam/fuzz-proto/v1/handler.d.ts +2 -1
  227. package/packages/jam/fuzz-proto/v1/handler.d.ts.map +1 -1
  228. package/packages/jam/fuzz-proto/v1/handler.js +3 -0
  229. package/packages/jam/fuzz-proto/v1/handler.test.js +10 -10
  230. package/packages/jam/in-core/externalities/index.d.ts +4 -0
  231. package/packages/jam/in-core/externalities/index.d.ts.map +1 -0
  232. package/packages/jam/in-core/externalities/index.js +3 -0
  233. package/packages/jam/in-core/externalities/is-authorized-fetch.d.ts +20 -0
  234. package/packages/jam/in-core/externalities/is-authorized-fetch.d.ts.map +1 -0
  235. package/packages/jam/in-core/externalities/is-authorized-fetch.js +41 -0
  236. package/packages/jam/in-core/externalities/is-authorized-fetch.test.d.ts +2 -0
  237. package/packages/jam/in-core/externalities/is-authorized-fetch.test.d.ts.map +1 -0
  238. package/packages/jam/in-core/externalities/is-authorized-fetch.test.js +101 -0
  239. package/packages/jam/in-core/externalities/refine-fetch.d.ts +51 -0
  240. package/packages/jam/in-core/externalities/refine-fetch.d.ts.map +1 -0
  241. package/packages/jam/in-core/externalities/refine-fetch.js +80 -0
  242. package/packages/jam/in-core/externalities/refine-fetch.test.d.ts +2 -0
  243. package/packages/jam/in-core/externalities/refine-fetch.test.d.ts.map +1 -0
  244. package/packages/jam/in-core/externalities/refine-fetch.test.js +219 -0
  245. package/packages/jam/in-core/externalities/refine.d.ts +18 -8
  246. package/packages/jam/in-core/externalities/refine.d.ts.map +1 -1
  247. package/packages/jam/in-core/externalities/refine.js +86 -7
  248. package/packages/jam/in-core/externalities/refine.test.js +168 -3
  249. package/packages/jam/in-core/in-core.d.ts +9 -23
  250. package/packages/jam/in-core/in-core.d.ts.map +1 -1
  251. package/packages/jam/in-core/in-core.js +22 -187
  252. package/packages/jam/in-core/in-core.test.js +52 -20
  253. package/packages/jam/in-core/is-authorized.d.ts +34 -0
  254. package/packages/jam/in-core/is-authorized.d.ts.map +1 -0
  255. package/packages/jam/in-core/is-authorized.js +73 -0
  256. package/packages/jam/in-core/is-authorized.test.d.ts +2 -0
  257. package/packages/jam/in-core/is-authorized.test.d.ts.map +1 -0
  258. package/packages/jam/in-core/is-authorized.test.js +167 -0
  259. package/packages/jam/in-core/refine.d.ts +31 -0
  260. package/packages/jam/in-core/refine.d.ts.map +1 -0
  261. package/packages/jam/in-core/refine.js +182 -0
  262. package/packages/jam/in-core/refine.test.d.ts +2 -0
  263. package/packages/jam/in-core/refine.test.d.ts.map +1 -0
  264. package/packages/jam/in-core/refine.test.js +6 -0
  265. package/packages/jam/jam-host-calls/accumulate/assign.d.ts +2 -1
  266. package/packages/jam/jam-host-calls/accumulate/assign.d.ts.map +1 -1
  267. package/packages/jam/jam-host-calls/accumulate/assign.js +3 -0
  268. package/packages/jam/jam-host-calls/accumulate/assign.test.js +8 -9
  269. package/packages/jam/jam-host-calls/accumulate/bless.d.ts +2 -1
  270. package/packages/jam/jam-host-calls/accumulate/bless.d.ts.map +1 -1
  271. package/packages/jam/jam-host-calls/accumulate/bless.js +12 -9
  272. package/packages/jam/jam-host-calls/accumulate/bless.test.js +11 -12
  273. package/packages/jam/jam-host-calls/accumulate/checkpoint.d.ts +2 -1
  274. package/packages/jam/jam-host-calls/accumulate/checkpoint.d.ts.map +1 -1
  275. package/packages/jam/jam-host-calls/accumulate/checkpoint.js +4 -1
  276. package/packages/jam/jam-host-calls/accumulate/checkpoint.test.js +2 -3
  277. package/packages/jam/jam-host-calls/accumulate/designate.d.ts +2 -1
  278. package/packages/jam/jam-host-calls/accumulate/designate.d.ts.map +1 -1
  279. package/packages/jam/jam-host-calls/accumulate/designate.js +3 -0
  280. package/packages/jam/jam-host-calls/accumulate/designate.test.js +5 -6
  281. package/packages/jam/jam-host-calls/accumulate/eject.d.ts +2 -1
  282. package/packages/jam/jam-host-calls/accumulate/eject.d.ts.map +1 -1
  283. package/packages/jam/jam-host-calls/accumulate/eject.js +3 -0
  284. package/packages/jam/jam-host-calls/accumulate/eject.test.js +8 -9
  285. package/packages/jam/jam-host-calls/accumulate/forget.d.ts +2 -1
  286. package/packages/jam/jam-host-calls/accumulate/forget.d.ts.map +1 -1
  287. package/packages/jam/jam-host-calls/accumulate/forget.js +3 -0
  288. package/packages/jam/jam-host-calls/accumulate/forget.test.js +5 -6
  289. package/packages/jam/jam-host-calls/accumulate/new.d.ts +2 -1
  290. package/packages/jam/jam-host-calls/accumulate/new.d.ts.map +1 -1
  291. package/packages/jam/jam-host-calls/accumulate/new.js +3 -0
  292. package/packages/jam/jam-host-calls/accumulate/new.test.js +9 -10
  293. package/packages/jam/jam-host-calls/accumulate/provide.d.ts +2 -1
  294. package/packages/jam/jam-host-calls/accumulate/provide.d.ts.map +1 -1
  295. package/packages/jam/jam-host-calls/accumulate/provide.js +3 -0
  296. package/packages/jam/jam-host-calls/accumulate/provide.test.js +8 -9
  297. package/packages/jam/jam-host-calls/accumulate/query.d.ts +2 -1
  298. package/packages/jam/jam-host-calls/accumulate/query.d.ts.map +1 -1
  299. package/packages/jam/jam-host-calls/accumulate/query.js +3 -0
  300. package/packages/jam/jam-host-calls/accumulate/query.test.js +8 -9
  301. package/packages/jam/jam-host-calls/accumulate/solicit.d.ts +2 -1
  302. package/packages/jam/jam-host-calls/accumulate/solicit.d.ts.map +1 -1
  303. package/packages/jam/jam-host-calls/accumulate/solicit.js +3 -0
  304. package/packages/jam/jam-host-calls/accumulate/solicit.test.js +7 -8
  305. package/packages/jam/jam-host-calls/accumulate/transfer.d.ts +2 -1
  306. package/packages/jam/jam-host-calls/accumulate/transfer.d.ts.map +1 -1
  307. package/packages/jam/jam-host-calls/accumulate/transfer.js +3 -0
  308. package/packages/jam/jam-host-calls/accumulate/transfer.test.js +9 -10
  309. package/packages/jam/jam-host-calls/accumulate/upgrade.d.ts +2 -1
  310. package/packages/jam/jam-host-calls/accumulate/upgrade.d.ts.map +1 -1
  311. package/packages/jam/jam-host-calls/accumulate/upgrade.js +3 -0
  312. package/packages/jam/jam-host-calls/accumulate/upgrade.test.js +4 -5
  313. package/packages/jam/jam-host-calls/accumulate/yield.d.ts +2 -1
  314. package/packages/jam/jam-host-calls/accumulate/yield.d.ts.map +1 -1
  315. package/packages/jam/jam-host-calls/accumulate/yield.js +3 -0
  316. package/packages/jam/jam-host-calls/accumulate/yield.test.js +4 -5
  317. package/packages/jam/jam-host-calls/externalities/partial-state.d.ts +1 -1
  318. package/packages/jam/jam-host-calls/externalities/refine-externalities.d.ts +1 -1
  319. package/packages/jam/jam-host-calls/externalities/refine-externalities.d.ts.map +1 -1
  320. package/packages/jam/jam-host-calls/externalities/refine-externalities.test.js +9 -9
  321. package/packages/jam/jam-host-calls/externalities/state-update.d.ts +2 -3
  322. package/packages/jam/jam-host-calls/externalities/state-update.d.ts.map +1 -1
  323. package/packages/jam/jam-host-calls/externalities/state-update.js +5 -2
  324. package/packages/jam/jam-host-calls/externalities/test-accounts.js +2 -2
  325. package/packages/jam/jam-host-calls/general/fetch.d.ts +166 -104
  326. package/packages/jam/jam-host-calls/general/fetch.d.ts.map +1 -1
  327. package/packages/jam/jam-host-calls/general/fetch.js +120 -23
  328. package/packages/jam/jam-host-calls/general/fetch.test.js +125 -92
  329. package/packages/jam/jam-host-calls/general/gas.d.ts +2 -1
  330. package/packages/jam/jam-host-calls/general/gas.d.ts.map +1 -1
  331. package/packages/jam/jam-host-calls/general/gas.js +3 -0
  332. package/packages/jam/jam-host-calls/general/gas.test.js +4 -5
  333. package/packages/jam/jam-host-calls/general/info.d.ts +2 -1
  334. package/packages/jam/jam-host-calls/general/info.d.ts.map +1 -1
  335. package/packages/jam/jam-host-calls/general/info.js +3 -0
  336. package/packages/jam/jam-host-calls/general/info.test.js +6 -7
  337. package/packages/jam/jam-host-calls/general/log.d.ts +2 -1
  338. package/packages/jam/jam-host-calls/general/log.d.ts.map +1 -1
  339. package/packages/jam/jam-host-calls/general/log.js +3 -0
  340. package/packages/jam/jam-host-calls/general/lookup.d.ts +2 -1
  341. package/packages/jam/jam-host-calls/general/lookup.d.ts.map +1 -1
  342. package/packages/jam/jam-host-calls/general/lookup.js +3 -0
  343. package/packages/jam/jam-host-calls/general/lookup.test.js +8 -9
  344. package/packages/jam/jam-host-calls/general/read.d.ts +2 -1
  345. package/packages/jam/jam-host-calls/general/read.d.ts.map +1 -1
  346. package/packages/jam/jam-host-calls/general/read.js +3 -0
  347. package/packages/jam/jam-host-calls/general/read.test.js +11 -12
  348. package/packages/jam/jam-host-calls/general/write.d.ts +2 -1
  349. package/packages/jam/jam-host-calls/general/write.d.ts.map +1 -1
  350. package/packages/jam/jam-host-calls/general/write.js +3 -0
  351. package/packages/jam/jam-host-calls/general/write.test.js +10 -11
  352. package/packages/jam/jam-host-calls/refine/export.d.ts +2 -1
  353. package/packages/jam/jam-host-calls/refine/export.d.ts.map +1 -1
  354. package/packages/jam/jam-host-calls/refine/export.js +3 -0
  355. package/packages/jam/jam-host-calls/refine/export.test.js +6 -7
  356. package/packages/jam/jam-host-calls/refine/expunge.d.ts +2 -1
  357. package/packages/jam/jam-host-calls/refine/expunge.d.ts.map +1 -1
  358. package/packages/jam/jam-host-calls/refine/expunge.js +3 -0
  359. package/packages/jam/jam-host-calls/refine/expunge.test.js +3 -4
  360. package/packages/jam/jam-host-calls/refine/historical-lookup.d.ts +2 -1
  361. package/packages/jam/jam-host-calls/refine/historical-lookup.d.ts.map +1 -1
  362. package/packages/jam/jam-host-calls/refine/historical-lookup.js +3 -0
  363. package/packages/jam/jam-host-calls/refine/historical-lookup.test.js +11 -12
  364. package/packages/jam/jam-host-calls/refine/invoke.d.ts +2 -1
  365. package/packages/jam/jam-host-calls/refine/invoke.d.ts.map +1 -1
  366. package/packages/jam/jam-host-calls/refine/invoke.js +4 -1
  367. package/packages/jam/jam-host-calls/refine/invoke.test.js +10 -11
  368. package/packages/jam/jam-host-calls/refine/machine.d.ts +2 -1
  369. package/packages/jam/jam-host-calls/refine/machine.d.ts.map +1 -1
  370. package/packages/jam/jam-host-calls/refine/machine.js +3 -0
  371. package/packages/jam/jam-host-calls/refine/machine.test.js +6 -7
  372. package/packages/jam/jam-host-calls/refine/pages.d.ts +2 -1
  373. package/packages/jam/jam-host-calls/refine/pages.d.ts.map +1 -1
  374. package/packages/jam/jam-host-calls/refine/pages.js +3 -0
  375. package/packages/jam/jam-host-calls/refine/pages.test.js +3 -4
  376. package/packages/jam/jam-host-calls/refine/peek.d.ts +2 -1
  377. package/packages/jam/jam-host-calls/refine/peek.d.ts.map +1 -1
  378. package/packages/jam/jam-host-calls/refine/peek.js +3 -0
  379. package/packages/jam/jam-host-calls/refine/peek.test.js +3 -4
  380. package/packages/jam/jam-host-calls/refine/poke.d.ts +2 -1
  381. package/packages/jam/jam-host-calls/refine/poke.d.ts.map +1 -1
  382. package/packages/jam/jam-host-calls/refine/poke.js +3 -0
  383. package/packages/jam/jam-host-calls/refine/poke.test.js +3 -4
  384. package/packages/jam/jamnp-s/network.js +1 -1
  385. package/packages/jam/jamnp-s/peers.d.ts +2 -1
  386. package/packages/jam/jamnp-s/peers.d.ts.map +1 -1
  387. package/packages/jam/jamnp-s/peers.js +3 -0
  388. package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts +4 -2
  389. package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts.map +1 -1
  390. package/packages/jam/jamnp-s/protocol/ce-128-block-request.js +6 -0
  391. package/packages/jam/jamnp-s/protocol/ce-128-block-request.test.js +2 -2
  392. package/packages/jam/jamnp-s/protocol/ce-129-state-request.d.ts +4 -2
  393. package/packages/jam/jamnp-s/protocol/ce-129-state-request.d.ts.map +1 -1
  394. package/packages/jam/jamnp-s/protocol/ce-129-state-request.js +6 -0
  395. package/packages/jam/jamnp-s/protocol/ce-129-state-request.test.js +4 -4
  396. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts +4 -2
  397. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts.map +1 -1
  398. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.js +6 -0
  399. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.test.js +2 -2
  400. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts +6 -3
  401. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts.map +1 -1
  402. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.js +7 -0
  403. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.test.js +2 -2
  404. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.d.ts +5 -2
  405. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.d.ts.map +1 -1
  406. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.js +7 -0
  407. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.test.js +2 -2
  408. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts +4 -2
  409. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts.map +1 -1
  410. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.js +6 -0
  411. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.test.js +2 -2
  412. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts +2 -1
  413. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts.map +1 -1
  414. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.js +3 -0
  415. package/packages/jam/jamnp-s/stream-manager.d.ts +2 -1
  416. package/packages/jam/jamnp-s/stream-manager.d.ts.map +1 -1
  417. package/packages/jam/jamnp-s/stream-manager.js +4 -1
  418. package/packages/jam/jamnp-s/tasks/sync.js +4 -4
  419. package/packages/jam/jamnp-s/tasks/sync.test.js +4 -4
  420. package/packages/jam/jamnp-s/tasks/ticket-distribution.js +2 -2
  421. package/packages/jam/jamnp-s/tasks/ticket-distribution.test.js +1 -1
  422. package/packages/jam/node/common.d.ts.map +1 -1
  423. package/packages/jam/node/common.js +3 -3
  424. package/packages/jam/rpc-client/index.d.ts +4 -2
  425. package/packages/jam/rpc-client/index.d.ts.map +1 -1
  426. package/packages/jam/rpc-client/index.js +7 -1
  427. package/packages/jam/state/in-memory-state-view.d.ts +2 -1
  428. package/packages/jam/state/in-memory-state-view.d.ts.map +1 -1
  429. package/packages/jam/state/in-memory-state-view.js +3 -0
  430. package/packages/jam/state/in-memory-state.d.ts +16 -21
  431. package/packages/jam/state/in-memory-state.d.ts.map +1 -1
  432. package/packages/jam/state/in-memory-state.js +10 -6
  433. package/packages/jam/state/in-memory-state.test.js +2 -2
  434. package/packages/jam/state/service.d.ts +2 -6
  435. package/packages/jam/state/service.d.ts.map +1 -1
  436. package/packages/jam/state/service.js +3 -0
  437. package/packages/jam/state/test.utils.js +3 -3
  438. package/packages/jam/state-json/accounts.js +5 -5
  439. package/packages/jam/state-merkleization/in-memory-state-codec.d.ts +3 -34
  440. package/packages/jam/state-merkleization/in-memory-state-codec.d.ts.map +1 -1
  441. package/packages/jam/state-merkleization/in-memory-state-codec.js +1 -1
  442. package/packages/jam/state-merkleization/serialized-state-view.d.ts +8 -3
  443. package/packages/jam/state-merkleization/serialized-state-view.d.ts.map +1 -1
  444. package/packages/jam/state-merkleization/serialized-state-view.js +6 -3
  445. package/packages/jam/state-merkleization/serialized-state.d.ts +2 -3
  446. package/packages/jam/state-merkleization/serialized-state.d.ts.map +1 -1
  447. package/packages/jam/state-merkleization/serialized-state.js +10 -2
  448. package/packages/jam/state-merkleization/serialized-state.test.js +1 -1
  449. package/packages/jam/transition/accumulate/accumulate.d.ts.map +1 -1
  450. package/packages/jam/transition/accumulate/accumulate.js +20 -8
  451. package/packages/jam/transition/accumulate/accumulate.test.js +1 -1
  452. package/packages/jam/transition/accumulate/accumulation-result-merge-utils.js +48 -39
  453. package/packages/jam/transition/block-verifier.d.ts +2 -1
  454. package/packages/jam/transition/block-verifier.d.ts.map +1 -1
  455. package/packages/jam/transition/block-verifier.js +3 -0
  456. package/packages/jam/transition/block-verifier.test.js +8 -8
  457. package/packages/jam/transition/chain-stf.d.ts +12 -4
  458. package/packages/jam/transition/chain-stf.d.ts.map +1 -1
  459. package/packages/jam/transition/chain-stf.js +7 -3
  460. package/packages/jam/transition/externalities/accumulate-externalities.d.ts +22 -8
  461. package/packages/jam/transition/externalities/accumulate-externalities.d.ts.map +1 -1
  462. package/packages/jam/transition/externalities/accumulate-externalities.js +49 -29
  463. package/packages/jam/transition/externalities/accumulate-externalities.test.js +661 -101
  464. package/packages/jam/transition/externalities/accumulate-fetch-externalities.d.ts +19 -0
  465. package/packages/jam/transition/externalities/accumulate-fetch-externalities.d.ts.map +1 -0
  466. package/packages/jam/transition/externalities/accumulate-fetch-externalities.js +45 -0
  467. package/packages/jam/transition/externalities/accumulate-fetch-externalities.test.d.ts +2 -0
  468. package/packages/jam/transition/externalities/accumulate-fetch-externalities.test.d.ts.map +1 -0
  469. package/packages/jam/transition/externalities/accumulate-fetch-externalities.test.js +192 -0
  470. package/packages/jam/transition/externalities/fetch-externalities.d.ts +54 -37
  471. package/packages/jam/transition/externalities/fetch-externalities.d.ts.map +1 -1
  472. package/packages/jam/transition/externalities/fetch-externalities.js +45 -89
  473. package/packages/jam/transition/externalities/index.d.ts +1 -0
  474. package/packages/jam/transition/externalities/index.d.ts.map +1 -1
  475. package/packages/jam/transition/externalities/index.js +1 -0
  476. package/packages/jam/transition/hasher.d.ts +2 -1
  477. package/packages/jam/transition/hasher.d.ts.map +1 -1
  478. package/packages/jam/transition/hasher.js +5 -2
  479. package/packages/jam/transition/hasher.test.js +1 -1
  480. package/packages/jam/transition/preimages.test.js +4 -4
  481. package/packages/jam/transition/reports/test.utils.js +1 -1
  482. package/packages/workers/api-node/config.js +4 -4
  483. package/packages/workers/api-node/port.d.ts +2 -1
  484. package/packages/workers/api-node/port.d.ts.map +1 -1
  485. package/packages/workers/api-node/port.js +4 -1
  486. package/packages/workers/api-node/port.test.js +2 -2
  487. package/packages/workers/api-node/protocol.js +2 -2
  488. package/packages/workers/block-authorship/generator.d.ts +13 -2
  489. package/packages/workers/block-authorship/generator.d.ts.map +1 -1
  490. package/packages/workers/block-authorship/generator.js +13 -9
  491. package/packages/workers/block-authorship/generator.test.js +16 -2
  492. package/packages/workers/block-authorship/main.d.ts.map +1 -1
  493. package/packages/workers/block-authorship/main.js +8 -1
  494. package/packages/workers/importer/finality.test.js +1 -1
  495. package/packages/workers/importer/importer.d.ts +23 -6
  496. package/packages/workers/importer/importer.d.ts.map +1 -1
  497. package/packages/workers/importer/importer.js +34 -19
  498. package/packages/workers/importer/main.d.ts.map +1 -1
  499. package/packages/workers/importer/main.js +13 -5
  500. package/packages/jam/transition/externalities/fetch-externalities.test.d.ts +0 -2
  501. package/packages/jam/transition/externalities/fetch-externalities.test.d.ts.map +0 -1
  502. package/packages/jam/transition/externalities/fetch-externalities.test.js +0 -254
@@ -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;
@@ -34,8 +37,8 @@ export class Bless {
34
37
  async execute(_gas, regs, memory) {
35
38
  // `m`: manager service (can change privileged services)
36
39
  const manager = getServiceId(regs.get(IN_OUT_REG));
37
- // `a`: manages authorization queue
38
- const authorization = regs.get(8);
40
+ // `a`: mem pointer for collection of auth queue assigners (one per core)
41
+ const assignersPtr = regs.get(8);
39
42
  // `v`: manages validator keys
40
43
  const delegator = getServiceId(regs.get(9));
41
44
  // `r`: manages creation of new services with id within protected range
@@ -67,29 +70,29 @@ export class Bless {
67
70
  }
68
71
  // https://graypaper.fluffylabs.dev/#/7e6ff6a/367200367200?v=0.6.7
69
72
  const res = safeAllocUint8Array(tryAsExactBytes(codec.u32.sizeHint) * this.chainSpec.coresCount);
70
- const authorizersDecoder = Decoder.fromBlob(res);
71
- const memoryReadResult = memory.loadInto(res, authorization);
73
+ const assignersDecoder = Decoder.fromBlob(res);
74
+ const memoryReadResult = memory.loadInto(res, assignersPtr);
72
75
  if (memoryReadResult.isError) {
73
76
  logger.trace `[${this.currentServiceId}] BLESS(m: ${manager}, v: ${delegator}, r: ${registrar}, ${lazyInspect(autoAccumulate)}) <- PANIC`;
74
77
  return PvmExecution.Panic;
75
78
  }
76
79
  // `a`
77
- const authorizers = tryAsPerCore(authorizersDecoder.sequenceFixLen(codec.u32.asOpaque(), this.chainSpec.coresCount), this.chainSpec);
78
- const updateResult = this.partialState.updatePrivilegedServices(manager, authorizers, delegator, registrar, autoAccumulate);
80
+ const assigners = tryAsPerCore(assignersDecoder.sequenceFixLen(codec.u32.asOpaque(), this.chainSpec.coresCount), this.chainSpec);
81
+ const updateResult = this.partialState.updatePrivilegedServices(manager, assigners, delegator, registrar, autoAccumulate);
79
82
  if (updateResult.isOk) {
80
- logger.trace `[${this.currentServiceId}] BLESS(m: ${manager}, a: [${authorizers}], v: ${delegator}, r: ${registrar}, ${lazyInspect(autoAccumulate)}) <- OK`;
83
+ logger.trace `[${this.currentServiceId}] BLESS(m: ${manager}, a: [${assigners}], v: ${delegator}, r: ${registrar}, ${lazyInspect(autoAccumulate)}) <- OK`;
81
84
  regs.set(IN_OUT_REG, HostCallResult.OK);
82
85
  return;
83
86
  }
84
87
  const e = updateResult.error;
85
88
  // NOTE: `UpdatePrivilegesError.UnprivilegedService` won't happen in 0.7.1+
86
89
  if (e === UpdatePrivilegesError.UnprivilegedService) {
87
- logger.trace `[${this.currentServiceId}] BLESS(m: ${manager}, a: [${authorizers}], v: ${delegator}, r: ${registrar}, ${lazyInspect(autoAccumulate)}) <- HUH`;
90
+ logger.trace `[${this.currentServiceId}] BLESS(m: ${manager}, a: [${assigners}], v: ${delegator}, r: ${registrar}, ${lazyInspect(autoAccumulate)}) <- HUH`;
88
91
  regs.set(IN_OUT_REG, HostCallResult.HUH);
89
92
  return;
90
93
  }
91
94
  if (e === UpdatePrivilegesError.InvalidServiceId) {
92
- logger.trace `[${this.currentServiceId}] BLESS(m: ${manager}, a: [${authorizers}], v: ${delegator}, r: ${registrar}, ${lazyInspect(autoAccumulate)}) <- WHO`;
95
+ logger.trace `[${this.currentServiceId}] BLESS(m: ${manager}, a: [${assigners}], v: ${delegator}, r: ${registrar}, ${lazyInspect(autoAccumulate)}) <- WHO`;
93
96
  regs.set(IN_OUT_REG, HostCallResult.WHO);
94
97
  return;
95
98
  }
@@ -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"}
@@ -19,6 +19,9 @@ export class Eject {
19
19
  index = tryAsHostCallIndex(21);
20
20
  basicGasCost = tryAsSmallGas(10);
21
21
  tracedRegisters = traceRegisters(IN_OUT_REG, 8);
22
+ static new(currentServiceId, partialState) {
23
+ return new Eject(currentServiceId, partialState);
24
+ }
22
25
  constructor(currentServiceId, partialState) {
23
26
  this.currentServiceId = currentServiceId;
24
27
  this.partialState = partialState;
@@ -15,21 +15,20 @@ import { deepEqual, OK, Result } from "#@typeberry/utils";
15
15
  import { EjectError } 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 { Eject } from "./eject.js";
20
19
  const RESULT_REG = 7;
21
20
  const SOURCE_REG = 7;
22
21
  const HASH_START_REG = 8;
23
22
  function prepareRegsAndMemory(source, hash, { skipHash = false } = {}) {
24
23
  const hashStart = 2 ** 16;
25
- const registers = new HostCallRegisters(emptyRegistersBuffer());
24
+ const registers = HostCallRegisters.empty();
26
25
  registers.set(SOURCE_REG, tryAsU64(source));
27
26
  registers.set(HASH_START_REG, tryAsU64(hashStart));
28
27
  const builder = new MemoryBuilder();
29
28
  if (!skipHash) {
30
29
  builder.setReadablePages(tryAsMemoryIndex(hashStart), tryAsMemoryIndex(hashStart + PAGE_SIZE), hash.raw);
31
30
  }
32
- const memory = new HostCallMemory(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
31
+ const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
33
32
  return {
34
33
  registers,
35
34
  memory,
@@ -40,7 +39,7 @@ describe("HostCalls: Eject", () => {
40
39
  it("should eject the account and transfer the funds", async () => {
41
40
  const accumulate = new PartialStateMock();
42
41
  const serviceId = tryAsServiceId(10_000);
43
- const eject = new Eject(serviceId, accumulate);
42
+ const eject = Eject.new(serviceId, accumulate);
44
43
  const sourceServiceId = tryAsServiceId(15_000);
45
44
  const hash = Bytes.fill(HASH_SIZE, 5);
46
45
  const { registers, memory } = prepareRegsAndMemory(sourceServiceId, hash);
@@ -55,7 +54,7 @@ describe("HostCalls: Eject", () => {
55
54
  it("should fail if there is no memory for hash", async () => {
56
55
  const accumulate = new PartialStateMock();
57
56
  const serviceId = tryAsServiceId(10_000);
58
- const eject = new Eject(serviceId, accumulate);
57
+ const eject = Eject.new(serviceId, accumulate);
59
58
  const sourceServiceId = tryAsServiceId(15_000);
60
59
  const hash = Bytes.fill(HASH_SIZE, 5);
61
60
  const { registers, memory } = prepareRegsAndMemory(sourceServiceId, hash, { skipHash: true });
@@ -68,7 +67,7 @@ describe("HostCalls: Eject", () => {
68
67
  it("should fail if destination does not exist", async () => {
69
68
  const accumulate = new PartialStateMock();
70
69
  const serviceId = tryAsServiceId(10_000);
71
- const eject = new Eject(serviceId, accumulate);
70
+ const eject = Eject.new(serviceId, accumulate);
72
71
  const sourceServiceId = tryAsServiceId(15_000);
73
72
  const hash = Bytes.fill(HASH_SIZE, 5);
74
73
  accumulate.ejectReturnValue = Result.error(EjectError.InvalidService, () => "Test: destination service does not exist for eject");
@@ -84,7 +83,7 @@ describe("HostCalls: Eject", () => {
84
83
  it("should fail if destination and source are the same", async () => {
85
84
  const accumulate = new PartialStateMock();
86
85
  const serviceId = tryAsServiceId(15_000);
87
- const eject = new Eject(serviceId, accumulate);
86
+ const eject = Eject.new(serviceId, accumulate);
88
87
  const sourceServiceId = tryAsServiceId(15_000);
89
88
  const hash = Bytes.fill(HASH_SIZE, 5);
90
89
  const { registers, memory } = prepareRegsAndMemory(sourceServiceId, hash);
@@ -98,7 +97,7 @@ describe("HostCalls: Eject", () => {
98
97
  it("should fail if destination has no available preimage", async () => {
99
98
  const accumulate = new PartialStateMock();
100
99
  const serviceId = tryAsServiceId(10_000);
101
- const eject = new Eject(serviceId, accumulate);
100
+ const eject = Eject.new(serviceId, accumulate);
102
101
  const sourceServiceId = tryAsServiceId(15_000);
103
102
  const hash = Bytes.fill(HASH_SIZE, 5);
104
103
  accumulate.ejectReturnValue = Result.error(EjectError.InvalidPreimage, () => "Test: no available preimage for eject");
@@ -114,7 +113,7 @@ describe("HostCalls: Eject", () => {
114
113
  it("should fail if preimage is too old", async () => {
115
114
  const accumulate = new PartialStateMock();
116
115
  const serviceId = tryAsServiceId(10_000);
117
- const eject = new Eject(serviceId, accumulate);
116
+ const eject = Eject.new(serviceId, accumulate);
118
117
  const sourceServiceId = tryAsServiceId(15_000);
119
118
  const hash = Bytes.fill(HASH_SIZE, 5);
120
119
  accumulate.ejectReturnValue = Result.error(EjectError.InvalidPreimage, () => "Test: preimage is too old for eject");
@@ -14,7 +14,8 @@ export declare class Forget 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): Forget;
18
+ private constructor();
18
19
  execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<PvmExecution | undefined>;
19
20
  }
20
21
  //# sourceMappingURL=forget.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"forget.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/forget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,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,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAMtE;;;;GAIG;AACH,qBAAa,MAAO,YAAW,eAAe;aAM1B,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,YAAY,GAAG,SAAS,CAAC;CAuBrH"}
1
+ {"version":3,"file":"forget.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/forget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,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,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAMtE;;;;GAIG;AACH,qBAAa,MAAO,YAAW,eAAe;aAU1B,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,YAAY,GAAG,SAAS,CAAC;CAuBrH"}
@@ -17,6 +17,9 @@ export class Forget {
17
17
  index = tryAsHostCallIndex(24);
18
18
  basicGasCost = tryAsSmallGas(10);
19
19
  tracedRegisters = traceRegisters(IN_OUT_REG, 8);
20
+ static new(currentServiceId, partialState) {
21
+ return new Forget(currentServiceId, partialState);
22
+ }
20
23
  constructor(currentServiceId, partialState) {
21
24
  this.currentServiceId = currentServiceId;
22
25
  this.partialState = partialState;
@@ -14,7 +14,6 @@ import { Result } from "#@typeberry/utils";
14
14
  import { ForgetPreimageError } from "../externalities/partial-state.js";
15
15
  import { PartialStateMock } from "../externalities/partial-state-mock.js";
16
16
  import { HostCallResult } from "../general/results.js";
17
- import { emptyRegistersBuffer } from "../utils.js";
18
17
  import { Forget } from "./forget.js";
19
18
  const gas = gasCounter(tryAsGas(0));
20
19
  const RESULT_REG = 7;
@@ -22,14 +21,14 @@ const HASH_START_REG = 7;
22
21
  const LENGTH_REG = 8;
23
22
  function prepareRegsAndMemory(preimageHash, preimageLength, { skipPreimageHash = false } = {}) {
24
23
  const memStart = 2 ** 16;
25
- const registers = new HostCallRegisters(emptyRegistersBuffer());
24
+ const registers = HostCallRegisters.empty();
26
25
  registers.set(HASH_START_REG, tryAsU64(memStart));
27
26
  registers.set(LENGTH_REG, preimageLength);
28
27
  const builder = new MemoryBuilder();
29
28
  if (!skipPreimageHash) {
30
29
  builder.setReadablePages(tryAsMemoryIndex(memStart), tryAsMemoryIndex(memStart + PAGE_SIZE), preimageHash.raw);
31
30
  }
32
- const memory = new HostCallMemory(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
31
+ const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
33
32
  return {
34
33
  registers,
35
34
  memory,
@@ -39,7 +38,7 @@ describe("HostCalls: Solicit", () => {
39
38
  it("should request a preimage hash", async () => {
40
39
  const accumulate = new PartialStateMock();
41
40
  const serviceId = tryAsServiceId(10_000);
42
- const forget = new Forget(serviceId, accumulate);
41
+ const forget = Forget.new(serviceId, accumulate);
43
42
  const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(4_096));
44
43
  // when
45
44
  await forget.execute(gas, registers, memory);
@@ -50,7 +49,7 @@ describe("HostCalls: Solicit", () => {
50
49
  it("should fail if hash not available", async () => {
51
50
  const accumulate = new PartialStateMock();
52
51
  const serviceId = tryAsServiceId(10_000);
53
- const forget = new Forget(serviceId, accumulate);
52
+ const forget = Forget.new(serviceId, accumulate);
54
53
  const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(4_096), {
55
54
  skipPreimageHash: true,
56
55
  });
@@ -63,7 +62,7 @@ describe("HostCalls: Solicit", () => {
63
62
  it("should fail if preimage not available", async () => {
64
63
  const accumulate = new PartialStateMock();
65
64
  const serviceId = tryAsServiceId(10_000);
66
- const forget = new Forget(serviceId, accumulate);
65
+ const forget = Forget.new(serviceId, accumulate);
67
66
  accumulate.forgetPreimageResponse = Result.error(ForgetPreimageError.NotFound, () => "Test: preimage not found for forget");
68
67
  const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(4_096));
69
68
  // when