@typeberry/lib 0.5.10-9567cee → 0.5.10-9ffd7ac

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 (470) 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/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.test.js +1 -1
  34. package/packages/core/pvm-host-calls/host-call-memory.d.ts +2 -1
  35. package/packages/core/pvm-host-calls/host-call-memory.d.ts.map +1 -1
  36. package/packages/core/pvm-host-calls/host-call-memory.js +3 -0
  37. package/packages/core/pvm-host-calls/host-call-memory.test.js +1 -1
  38. package/packages/core/pvm-host-calls/host-call-registers.d.ts +5 -1
  39. package/packages/core/pvm-host-calls/host-call-registers.d.ts.map +1 -1
  40. package/packages/core/pvm-host-calls/host-call-registers.js +11 -1
  41. package/packages/core/pvm-host-calls/host-call-registers.test.js +2 -2
  42. package/packages/core/pvm-host-calls/host-calls-executor.d.ts +2 -1
  43. package/packages/core/pvm-host-calls/host-calls-executor.d.ts.map +1 -1
  44. package/packages/core/pvm-host-calls/host-calls-executor.js +5 -2
  45. package/packages/core/pvm-host-calls/host-calls.d.ts +4 -2
  46. package/packages/core/pvm-host-calls/host-calls.d.ts.map +1 -1
  47. package/packages/core/pvm-host-calls/host-calls.js +9 -4
  48. package/packages/core/pvm-host-calls/pvm-instance-manager.js +1 -1
  49. package/packages/core/pvm-interpreter/args-decoder/args-decoder.js +1 -1
  50. package/packages/core/pvm-interpreter/args-decoder/args-decoder.test.js +3 -3
  51. package/packages/core/pvm-interpreter/args-decoder/args-decoding-results.js +11 -11
  52. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.d.ts +2 -1
  53. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.d.ts.map +1 -1
  54. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.js +3 -0
  55. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.test.js +2 -2
  56. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.d.ts +2 -1
  57. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.d.ts.map +1 -1
  58. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.js +3 -0
  59. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.test.js +26 -26
  60. package/packages/core/pvm-interpreter/basic-blocks/basic-blocks.test.js +8 -8
  61. package/packages/core/pvm-interpreter/bin.js +1 -1
  62. package/packages/core/pvm-interpreter/debugger-adapter.d.ts +2 -1
  63. package/packages/core/pvm-interpreter/debugger-adapter.d.ts.map +1 -1
  64. package/packages/core/pvm-interpreter/debugger-adapter.js +6 -3
  65. package/packages/core/pvm-interpreter/gas.js +4 -1
  66. package/packages/core/pvm-interpreter/interpreter.d.ts +2 -1
  67. package/packages/core/pvm-interpreter/interpreter.d.ts.map +1 -1
  68. package/packages/core/pvm-interpreter/interpreter.js +19 -16
  69. package/packages/core/pvm-interpreter/memory/memory-builder.js +2 -2
  70. package/packages/core/pvm-interpreter/memory/memory-builder.test.js +7 -7
  71. package/packages/core/pvm-interpreter/memory/memory.d.ts +2 -1
  72. package/packages/core/pvm-interpreter/memory/memory.d.ts.map +1 -1
  73. package/packages/core/pvm-interpreter/memory/memory.js +4 -1
  74. package/packages/core/pvm-interpreter/memory/memory.test.js +31 -31
  75. package/packages/core/pvm-interpreter/memory/pages/readable-page.d.ts +2 -1
  76. package/packages/core/pvm-interpreter/memory/pages/readable-page.d.ts.map +1 -1
  77. package/packages/core/pvm-interpreter/memory/pages/readable-page.js +3 -0
  78. package/packages/core/pvm-interpreter/memory/pages/readable-page.test.js +3 -3
  79. package/packages/core/pvm-interpreter/memory/pages/writeable-page.d.ts +2 -1
  80. package/packages/core/pvm-interpreter/memory/pages/writeable-page.d.ts.map +1 -1
  81. package/packages/core/pvm-interpreter/memory/pages/writeable-page.js +3 -0
  82. package/packages/core/pvm-interpreter/memory/pages/writeable-page.test.js +4 -4
  83. package/packages/core/pvm-interpreter/ops/bit-ops.d.ts +2 -1
  84. package/packages/core/pvm-interpreter/ops/bit-ops.d.ts.map +1 -1
  85. package/packages/core/pvm-interpreter/ops/bit-ops.js +3 -0
  86. package/packages/core/pvm-interpreter/ops/bit-ops.test.js +3 -3
  87. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.d.ts +2 -1
  88. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.d.ts.map +1 -1
  89. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.js +3 -0
  90. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.test.js +5 -5
  91. package/packages/core/pvm-interpreter/ops/boolean-ops.d.ts +2 -1
  92. package/packages/core/pvm-interpreter/ops/boolean-ops.d.ts.map +1 -1
  93. package/packages/core/pvm-interpreter/ops/boolean-ops.js +3 -0
  94. package/packages/core/pvm-interpreter/ops/boolean-ops.test.js +3 -3
  95. package/packages/core/pvm-interpreter/ops/branch-ops.d.ts +2 -1
  96. package/packages/core/pvm-interpreter/ops/branch-ops.d.ts.map +1 -1
  97. package/packages/core/pvm-interpreter/ops/branch-ops.js +3 -0
  98. package/packages/core/pvm-interpreter/ops/branch-ops.test.js +4 -4
  99. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.d.ts +2 -1
  100. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.d.ts.map +1 -1
  101. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.js +3 -0
  102. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.test.js +5 -5
  103. package/packages/core/pvm-interpreter/ops/host-call-ops.d.ts +2 -1
  104. package/packages/core/pvm-interpreter/ops/host-call-ops.d.ts.map +1 -1
  105. package/packages/core/pvm-interpreter/ops/host-call-ops.js +3 -0
  106. package/packages/core/pvm-interpreter/ops/host-call-ops.test.js +2 -2
  107. package/packages/core/pvm-interpreter/ops/load-ops.d.ts +2 -1
  108. package/packages/core/pvm-interpreter/ops/load-ops.d.ts.map +1 -1
  109. package/packages/core/pvm-interpreter/ops/load-ops.js +3 -0
  110. package/packages/core/pvm-interpreter/ops/load-ops.test.js +10 -10
  111. package/packages/core/pvm-interpreter/ops/math-ops.d.ts +2 -1
  112. package/packages/core/pvm-interpreter/ops/math-ops.d.ts.map +1 -1
  113. package/packages/core/pvm-interpreter/ops/math-ops.js +3 -0
  114. package/packages/core/pvm-interpreter/ops/math-ops.test.js +3 -3
  115. package/packages/core/pvm-interpreter/ops/memory-ops.d.ts +2 -1
  116. package/packages/core/pvm-interpreter/ops/memory-ops.d.ts.map +1 -1
  117. package/packages/core/pvm-interpreter/ops/memory-ops.js +3 -0
  118. package/packages/core/pvm-interpreter/ops/memory-ops.test.js +3 -3
  119. package/packages/core/pvm-interpreter/ops/move-ops.d.ts +2 -1
  120. package/packages/core/pvm-interpreter/ops/move-ops.d.ts.map +1 -1
  121. package/packages/core/pvm-interpreter/ops/move-ops.js +3 -0
  122. package/packages/core/pvm-interpreter/ops/move-ops.test.js +3 -3
  123. package/packages/core/pvm-interpreter/ops/no-args-ops.d.ts +2 -1
  124. package/packages/core/pvm-interpreter/ops/no-args-ops.d.ts.map +1 -1
  125. package/packages/core/pvm-interpreter/ops/no-args-ops.js +3 -0
  126. package/packages/core/pvm-interpreter/ops/no-args-ops.test.js +2 -2
  127. package/packages/core/pvm-interpreter/ops/shift-ops.d.ts +2 -1
  128. package/packages/core/pvm-interpreter/ops/shift-ops.d.ts.map +1 -1
  129. package/packages/core/pvm-interpreter/ops/shift-ops.js +3 -0
  130. package/packages/core/pvm-interpreter/ops/shift-ops.test.js +3 -3
  131. package/packages/core/pvm-interpreter/ops/store-ops.d.ts +2 -1
  132. package/packages/core/pvm-interpreter/ops/store-ops.d.ts.map +1 -1
  133. package/packages/core/pvm-interpreter/ops/store-ops.js +3 -0
  134. package/packages/core/pvm-interpreter/ops/store-ops.test.js +7 -7
  135. package/packages/core/pvm-interpreter/ops-dispatchers/no-args-dispatcher.test.js +1 -1
  136. package/packages/core/pvm-interpreter/ops-dispatchers/one-imm-dispatcher.test.js +4 -4
  137. package/packages/core/pvm-interpreter/ops-dispatchers/one-offset-dispatcher.test.js +2 -2
  138. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-ext-imm-dispatcher.test.js +4 -4
  139. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-imm-dispatcher.test.js +7 -7
  140. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-imm-one-offset-dispatcher.test.js +10 -10
  141. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-two-imms-dispatcher.test.js +5 -5
  142. package/packages/core/pvm-interpreter/ops-dispatchers/three-regs-dispatcher.test.js +7 -7
  143. package/packages/core/pvm-interpreter/ops-dispatchers/two-imms-dispatcher.test.js +5 -5
  144. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-dispatcher.test.js +6 -6
  145. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-one-imm-dispatcher.test.js +11 -11
  146. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-one-offset-dispatcher.test.js +2 -2
  147. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-two-imms-dispatcher.test.js +14 -14
  148. package/packages/core/pvm-interpreter/program-decoder/jump-table.d.ts +5 -2
  149. package/packages/core/pvm-interpreter/program-decoder/jump-table.d.ts.map +1 -1
  150. package/packages/core/pvm-interpreter/program-decoder/jump-table.js +9 -4
  151. package/packages/core/pvm-interpreter/program-decoder/jump-table.test.js +6 -6
  152. package/packages/core/pvm-interpreter/program-decoder/mask.d.ts +2 -1
  153. package/packages/core/pvm-interpreter/program-decoder/mask.d.ts.map +1 -1
  154. package/packages/core/pvm-interpreter/program-decoder/mask.js +3 -0
  155. package/packages/core/pvm-interpreter/program-decoder/mask.test.js +10 -10
  156. package/packages/core/pvm-interpreter/program-decoder/program-decoder.d.ts +2 -1
  157. package/packages/core/pvm-interpreter/program-decoder/program-decoder.d.ts.map +1 -1
  158. package/packages/core/pvm-interpreter/program-decoder/program-decoder.js +6 -3
  159. package/packages/core/pvm-interpreter/program-decoder/program-decoder.test.js +5 -5
  160. package/packages/core/pvm-interpreter/program.js +3 -3
  161. package/packages/core/pvm-interpreter/registers.d.ts +5 -2
  162. package/packages/core/pvm-interpreter/registers.d.ts.map +1 -1
  163. package/packages/core/pvm-interpreter/registers.js +10 -6
  164. package/packages/core/pvm-interpreter/registers.test.js +10 -10
  165. package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.d.ts +6 -3
  166. package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.d.ts.map +1 -1
  167. package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.js +11 -2
  168. package/packages/core/pvm-interpreter-ananas/index.d.ts +6 -3
  169. package/packages/core/pvm-interpreter-ananas/index.d.ts.map +1 -1
  170. package/packages/core/pvm-interpreter-ananas/index.js +12 -3
  171. package/packages/core/trie/nodes.d.ts +7 -2
  172. package/packages/core/trie/nodes.d.ts.map +1 -1
  173. package/packages/core/trie/nodes.js +20 -11
  174. package/packages/core/trie/nodesDb.d.ts +3 -1
  175. package/packages/core/trie/nodesDb.d.ts.map +1 -1
  176. package/packages/core/trie/nodesDb.js +6 -0
  177. package/packages/core/trie/trie.js +2 -2
  178. package/packages/extensions/ipc/index.js +5 -2
  179. package/packages/extensions/ipc/jamnp/handler.d.ts +4 -2
  180. package/packages/extensions/ipc/jamnp/handler.d.ts.map +1 -1
  181. package/packages/extensions/ipc/jamnp/handler.js +9 -3
  182. package/packages/extensions/ipc/jamnp/server.js +3 -3
  183. package/packages/extensions/ipc/server.d.ts +2 -1
  184. package/packages/extensions/ipc/server.d.ts.map +1 -1
  185. package/packages/extensions/ipc/server.js +4 -1
  186. package/packages/jam/block/header.js +1 -1
  187. package/packages/jam/block/work-package.d.ts +7 -7
  188. package/packages/jam/block/work-package.d.ts.map +1 -1
  189. package/packages/jam/block/work-package.js +12 -12
  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/pvm-executor.d.ts +7 -0
  213. package/packages/jam/executor/pvm-executor.d.ts.map +1 -1
  214. package/packages/jam/executor/pvm-executor.js +36 -21
  215. package/packages/jam/fuzz-proto/v1/handler.d.ts +2 -1
  216. package/packages/jam/fuzz-proto/v1/handler.d.ts.map +1 -1
  217. package/packages/jam/fuzz-proto/v1/handler.js +3 -0
  218. package/packages/jam/fuzz-proto/v1/handler.test.js +10 -10
  219. package/packages/jam/in-core/externalities/refine.d.ts +5 -5
  220. package/packages/jam/in-core/externalities/refine.d.ts.map +1 -1
  221. package/packages/jam/in-core/externalities/refine.js +42 -7
  222. package/packages/jam/in-core/externalities/refine.test.js +119 -1
  223. package/packages/jam/in-core/in-core.d.ts +9 -23
  224. package/packages/jam/in-core/in-core.d.ts.map +1 -1
  225. package/packages/jam/in-core/in-core.js +19 -184
  226. package/packages/jam/in-core/in-core.test.js +52 -20
  227. package/packages/jam/in-core/is-authorized.d.ts +33 -0
  228. package/packages/jam/in-core/is-authorized.d.ts.map +1 -0
  229. package/packages/jam/in-core/is-authorized.js +72 -0
  230. package/packages/jam/in-core/is-authorized.test.d.ts +2 -0
  231. package/packages/jam/in-core/is-authorized.test.d.ts.map +1 -0
  232. package/packages/jam/in-core/is-authorized.test.js +125 -0
  233. package/packages/jam/in-core/refine.d.ts +34 -0
  234. package/packages/jam/in-core/refine.d.ts.map +1 -0
  235. package/packages/jam/in-core/refine.js +176 -0
  236. package/packages/jam/in-core/refine.test.d.ts +2 -0
  237. package/packages/jam/in-core/refine.test.d.ts.map +1 -0
  238. package/packages/jam/in-core/refine.test.js +6 -0
  239. package/packages/jam/jam-host-calls/accumulate/assign.d.ts +2 -1
  240. package/packages/jam/jam-host-calls/accumulate/assign.d.ts.map +1 -1
  241. package/packages/jam/jam-host-calls/accumulate/assign.js +3 -0
  242. package/packages/jam/jam-host-calls/accumulate/assign.test.js +8 -9
  243. package/packages/jam/jam-host-calls/accumulate/bless.d.ts +2 -1
  244. package/packages/jam/jam-host-calls/accumulate/bless.d.ts.map +1 -1
  245. package/packages/jam/jam-host-calls/accumulate/bless.js +12 -9
  246. package/packages/jam/jam-host-calls/accumulate/bless.test.js +11 -12
  247. package/packages/jam/jam-host-calls/accumulate/checkpoint.d.ts +2 -1
  248. package/packages/jam/jam-host-calls/accumulate/checkpoint.d.ts.map +1 -1
  249. package/packages/jam/jam-host-calls/accumulate/checkpoint.js +4 -1
  250. package/packages/jam/jam-host-calls/accumulate/checkpoint.test.js +2 -3
  251. package/packages/jam/jam-host-calls/accumulate/designate.d.ts +2 -1
  252. package/packages/jam/jam-host-calls/accumulate/designate.d.ts.map +1 -1
  253. package/packages/jam/jam-host-calls/accumulate/designate.js +3 -0
  254. package/packages/jam/jam-host-calls/accumulate/designate.test.js +5 -6
  255. package/packages/jam/jam-host-calls/accumulate/eject.d.ts +2 -1
  256. package/packages/jam/jam-host-calls/accumulate/eject.d.ts.map +1 -1
  257. package/packages/jam/jam-host-calls/accumulate/eject.js +3 -0
  258. package/packages/jam/jam-host-calls/accumulate/eject.test.js +8 -9
  259. package/packages/jam/jam-host-calls/accumulate/forget.d.ts +2 -1
  260. package/packages/jam/jam-host-calls/accumulate/forget.d.ts.map +1 -1
  261. package/packages/jam/jam-host-calls/accumulate/forget.js +3 -0
  262. package/packages/jam/jam-host-calls/accumulate/forget.test.js +5 -6
  263. package/packages/jam/jam-host-calls/accumulate/new.d.ts +2 -1
  264. package/packages/jam/jam-host-calls/accumulate/new.d.ts.map +1 -1
  265. package/packages/jam/jam-host-calls/accumulate/new.js +3 -0
  266. package/packages/jam/jam-host-calls/accumulate/new.test.js +9 -10
  267. package/packages/jam/jam-host-calls/accumulate/provide.d.ts +2 -1
  268. package/packages/jam/jam-host-calls/accumulate/provide.d.ts.map +1 -1
  269. package/packages/jam/jam-host-calls/accumulate/provide.js +3 -0
  270. package/packages/jam/jam-host-calls/accumulate/provide.test.js +8 -9
  271. package/packages/jam/jam-host-calls/accumulate/query.d.ts +2 -1
  272. package/packages/jam/jam-host-calls/accumulate/query.d.ts.map +1 -1
  273. package/packages/jam/jam-host-calls/accumulate/query.js +3 -0
  274. package/packages/jam/jam-host-calls/accumulate/query.test.js +8 -9
  275. package/packages/jam/jam-host-calls/accumulate/solicit.d.ts +2 -1
  276. package/packages/jam/jam-host-calls/accumulate/solicit.d.ts.map +1 -1
  277. package/packages/jam/jam-host-calls/accumulate/solicit.js +3 -0
  278. package/packages/jam/jam-host-calls/accumulate/solicit.test.js +7 -8
  279. package/packages/jam/jam-host-calls/accumulate/transfer.d.ts +2 -1
  280. package/packages/jam/jam-host-calls/accumulate/transfer.d.ts.map +1 -1
  281. package/packages/jam/jam-host-calls/accumulate/transfer.js +3 -0
  282. package/packages/jam/jam-host-calls/accumulate/transfer.test.js +9 -10
  283. package/packages/jam/jam-host-calls/accumulate/upgrade.d.ts +2 -1
  284. package/packages/jam/jam-host-calls/accumulate/upgrade.d.ts.map +1 -1
  285. package/packages/jam/jam-host-calls/accumulate/upgrade.js +3 -0
  286. package/packages/jam/jam-host-calls/accumulate/upgrade.test.js +4 -5
  287. package/packages/jam/jam-host-calls/accumulate/yield.d.ts +2 -1
  288. package/packages/jam/jam-host-calls/accumulate/yield.d.ts.map +1 -1
  289. package/packages/jam/jam-host-calls/accumulate/yield.js +3 -0
  290. package/packages/jam/jam-host-calls/accumulate/yield.test.js +4 -5
  291. package/packages/jam/jam-host-calls/externalities/partial-state.d.ts +1 -1
  292. package/packages/jam/jam-host-calls/externalities/refine-externalities.d.ts +1 -1
  293. package/packages/jam/jam-host-calls/externalities/refine-externalities.d.ts.map +1 -1
  294. package/packages/jam/jam-host-calls/externalities/refine-externalities.test.js +9 -9
  295. package/packages/jam/jam-host-calls/externalities/state-update.d.ts +2 -3
  296. package/packages/jam/jam-host-calls/externalities/state-update.d.ts.map +1 -1
  297. package/packages/jam/jam-host-calls/externalities/state-update.js +5 -2
  298. package/packages/jam/jam-host-calls/externalities/test-accounts.js +2 -2
  299. package/packages/jam/jam-host-calls/general/fetch.d.ts +42 -41
  300. package/packages/jam/jam-host-calls/general/fetch.d.ts.map +1 -1
  301. package/packages/jam/jam-host-calls/general/fetch.js +33 -30
  302. package/packages/jam/jam-host-calls/general/fetch.test.js +44 -42
  303. package/packages/jam/jam-host-calls/general/gas.d.ts +2 -1
  304. package/packages/jam/jam-host-calls/general/gas.d.ts.map +1 -1
  305. package/packages/jam/jam-host-calls/general/gas.js +3 -0
  306. package/packages/jam/jam-host-calls/general/gas.test.js +4 -5
  307. package/packages/jam/jam-host-calls/general/info.d.ts +2 -1
  308. package/packages/jam/jam-host-calls/general/info.d.ts.map +1 -1
  309. package/packages/jam/jam-host-calls/general/info.js +3 -0
  310. package/packages/jam/jam-host-calls/general/info.test.js +6 -7
  311. package/packages/jam/jam-host-calls/general/log.d.ts +2 -1
  312. package/packages/jam/jam-host-calls/general/log.d.ts.map +1 -1
  313. package/packages/jam/jam-host-calls/general/log.js +3 -0
  314. package/packages/jam/jam-host-calls/general/lookup.d.ts +2 -1
  315. package/packages/jam/jam-host-calls/general/lookup.d.ts.map +1 -1
  316. package/packages/jam/jam-host-calls/general/lookup.js +3 -0
  317. package/packages/jam/jam-host-calls/general/lookup.test.js +8 -9
  318. package/packages/jam/jam-host-calls/general/read.d.ts +2 -1
  319. package/packages/jam/jam-host-calls/general/read.d.ts.map +1 -1
  320. package/packages/jam/jam-host-calls/general/read.js +3 -0
  321. package/packages/jam/jam-host-calls/general/read.test.js +11 -12
  322. package/packages/jam/jam-host-calls/general/write.d.ts +2 -1
  323. package/packages/jam/jam-host-calls/general/write.d.ts.map +1 -1
  324. package/packages/jam/jam-host-calls/general/write.js +3 -0
  325. package/packages/jam/jam-host-calls/general/write.test.js +10 -11
  326. package/packages/jam/jam-host-calls/refine/export.d.ts +2 -1
  327. package/packages/jam/jam-host-calls/refine/export.d.ts.map +1 -1
  328. package/packages/jam/jam-host-calls/refine/export.js +3 -0
  329. package/packages/jam/jam-host-calls/refine/export.test.js +6 -7
  330. package/packages/jam/jam-host-calls/refine/expunge.d.ts +2 -1
  331. package/packages/jam/jam-host-calls/refine/expunge.d.ts.map +1 -1
  332. package/packages/jam/jam-host-calls/refine/expunge.js +3 -0
  333. package/packages/jam/jam-host-calls/refine/expunge.test.js +3 -4
  334. package/packages/jam/jam-host-calls/refine/historical-lookup.d.ts +2 -1
  335. package/packages/jam/jam-host-calls/refine/historical-lookup.d.ts.map +1 -1
  336. package/packages/jam/jam-host-calls/refine/historical-lookup.js +3 -0
  337. package/packages/jam/jam-host-calls/refine/historical-lookup.test.js +11 -12
  338. package/packages/jam/jam-host-calls/refine/invoke.d.ts +2 -1
  339. package/packages/jam/jam-host-calls/refine/invoke.d.ts.map +1 -1
  340. package/packages/jam/jam-host-calls/refine/invoke.js +4 -1
  341. package/packages/jam/jam-host-calls/refine/invoke.test.js +10 -11
  342. package/packages/jam/jam-host-calls/refine/machine.d.ts +2 -1
  343. package/packages/jam/jam-host-calls/refine/machine.d.ts.map +1 -1
  344. package/packages/jam/jam-host-calls/refine/machine.js +3 -0
  345. package/packages/jam/jam-host-calls/refine/machine.test.js +6 -7
  346. package/packages/jam/jam-host-calls/refine/pages.d.ts +2 -1
  347. package/packages/jam/jam-host-calls/refine/pages.d.ts.map +1 -1
  348. package/packages/jam/jam-host-calls/refine/pages.js +3 -0
  349. package/packages/jam/jam-host-calls/refine/pages.test.js +3 -4
  350. package/packages/jam/jam-host-calls/refine/peek.d.ts +2 -1
  351. package/packages/jam/jam-host-calls/refine/peek.d.ts.map +1 -1
  352. package/packages/jam/jam-host-calls/refine/peek.js +3 -0
  353. package/packages/jam/jam-host-calls/refine/peek.test.js +3 -4
  354. package/packages/jam/jam-host-calls/refine/poke.d.ts +2 -1
  355. package/packages/jam/jam-host-calls/refine/poke.d.ts.map +1 -1
  356. package/packages/jam/jam-host-calls/refine/poke.js +3 -0
  357. package/packages/jam/jam-host-calls/refine/poke.test.js +3 -4
  358. package/packages/jam/jamnp-s/network.js +1 -1
  359. package/packages/jam/jamnp-s/peers.d.ts +2 -1
  360. package/packages/jam/jamnp-s/peers.d.ts.map +1 -1
  361. package/packages/jam/jamnp-s/peers.js +3 -0
  362. package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts +4 -2
  363. package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts.map +1 -1
  364. package/packages/jam/jamnp-s/protocol/ce-128-block-request.js +6 -0
  365. package/packages/jam/jamnp-s/protocol/ce-128-block-request.test.js +2 -2
  366. package/packages/jam/jamnp-s/protocol/ce-129-state-request.d.ts +4 -2
  367. package/packages/jam/jamnp-s/protocol/ce-129-state-request.d.ts.map +1 -1
  368. package/packages/jam/jamnp-s/protocol/ce-129-state-request.js +6 -0
  369. package/packages/jam/jamnp-s/protocol/ce-129-state-request.test.js +4 -4
  370. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts +4 -2
  371. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts.map +1 -1
  372. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.js +6 -0
  373. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.test.js +2 -2
  374. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts +6 -3
  375. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts.map +1 -1
  376. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.js +7 -0
  377. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.test.js +2 -2
  378. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.d.ts +5 -2
  379. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.d.ts.map +1 -1
  380. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.js +7 -0
  381. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.test.js +2 -2
  382. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts +4 -2
  383. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts.map +1 -1
  384. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.js +6 -0
  385. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.test.js +2 -2
  386. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts +2 -1
  387. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts.map +1 -1
  388. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.js +3 -0
  389. package/packages/jam/jamnp-s/stream-manager.d.ts +2 -1
  390. package/packages/jam/jamnp-s/stream-manager.d.ts.map +1 -1
  391. package/packages/jam/jamnp-s/stream-manager.js +4 -1
  392. package/packages/jam/jamnp-s/tasks/sync.js +4 -4
  393. package/packages/jam/jamnp-s/tasks/sync.test.js +4 -4
  394. package/packages/jam/jamnp-s/tasks/ticket-distribution.js +2 -2
  395. package/packages/jam/jamnp-s/tasks/ticket-distribution.test.js +1 -1
  396. package/packages/jam/node/common.d.ts.map +1 -1
  397. package/packages/jam/node/common.js +3 -3
  398. package/packages/jam/rpc-client/index.d.ts +4 -2
  399. package/packages/jam/rpc-client/index.d.ts.map +1 -1
  400. package/packages/jam/rpc-client/index.js +7 -1
  401. package/packages/jam/state/in-memory-state-view.d.ts +2 -1
  402. package/packages/jam/state/in-memory-state-view.d.ts.map +1 -1
  403. package/packages/jam/state/in-memory-state-view.js +3 -0
  404. package/packages/jam/state/in-memory-state.d.ts +16 -21
  405. package/packages/jam/state/in-memory-state.d.ts.map +1 -1
  406. package/packages/jam/state/in-memory-state.js +10 -6
  407. package/packages/jam/state/in-memory-state.test.js +2 -2
  408. package/packages/jam/state/service.d.ts +2 -6
  409. package/packages/jam/state/service.d.ts.map +1 -1
  410. package/packages/jam/state/service.js +3 -0
  411. package/packages/jam/state/test.utils.js +3 -3
  412. package/packages/jam/state-json/accounts.js +5 -5
  413. package/packages/jam/state-merkleization/in-memory-state-codec.d.ts +3 -34
  414. package/packages/jam/state-merkleization/in-memory-state-codec.d.ts.map +1 -1
  415. package/packages/jam/state-merkleization/in-memory-state-codec.js +1 -1
  416. package/packages/jam/state-merkleization/serialized-state-view.d.ts +8 -3
  417. package/packages/jam/state-merkleization/serialized-state-view.d.ts.map +1 -1
  418. package/packages/jam/state-merkleization/serialized-state-view.js +6 -3
  419. package/packages/jam/state-merkleization/serialized-state.d.ts +2 -3
  420. package/packages/jam/state-merkleization/serialized-state.d.ts.map +1 -1
  421. package/packages/jam/state-merkleization/serialized-state.js +10 -2
  422. package/packages/jam/state-merkleization/serialized-state.test.js +1 -1
  423. package/packages/jam/transition/accumulate/accumulate.js +10 -3
  424. package/packages/jam/transition/accumulate/accumulate.test.js +1 -1
  425. package/packages/jam/transition/accumulate/accumulation-result-merge-utils.js +48 -39
  426. package/packages/jam/transition/block-verifier.d.ts +2 -1
  427. package/packages/jam/transition/block-verifier.d.ts.map +1 -1
  428. package/packages/jam/transition/block-verifier.js +3 -0
  429. package/packages/jam/transition/block-verifier.test.js +8 -8
  430. package/packages/jam/transition/chain-stf.d.ts +12 -4
  431. package/packages/jam/transition/chain-stf.d.ts.map +1 -1
  432. package/packages/jam/transition/chain-stf.js +7 -3
  433. package/packages/jam/transition/externalities/accumulate-externalities.d.ts +22 -8
  434. package/packages/jam/transition/externalities/accumulate-externalities.d.ts.map +1 -1
  435. package/packages/jam/transition/externalities/accumulate-externalities.js +49 -29
  436. package/packages/jam/transition/externalities/accumulate-externalities.test.js +661 -101
  437. package/packages/jam/transition/externalities/index.d.ts +1 -0
  438. package/packages/jam/transition/externalities/index.d.ts.map +1 -1
  439. package/packages/jam/transition/externalities/index.js +1 -0
  440. package/packages/jam/transition/externalities/is-authorized-fetch-externalities.d.ts +22 -0
  441. package/packages/jam/transition/externalities/is-authorized-fetch-externalities.d.ts.map +1 -0
  442. package/packages/jam/transition/externalities/is-authorized-fetch-externalities.js +41 -0
  443. package/packages/jam/transition/externalities/refine-fetch-externalities.d.ts +9 -8
  444. package/packages/jam/transition/externalities/refine-fetch-externalities.d.ts.map +1 -1
  445. package/packages/jam/transition/externalities/refine-fetch-externalities.js +20 -9
  446. package/packages/jam/transition/externalities/refine-fetch-externalities.test.js +1 -1
  447. package/packages/jam/transition/hasher.d.ts +2 -1
  448. package/packages/jam/transition/hasher.d.ts.map +1 -1
  449. package/packages/jam/transition/hasher.js +5 -2
  450. package/packages/jam/transition/hasher.test.js +1 -1
  451. package/packages/jam/transition/preimages.test.js +4 -4
  452. package/packages/jam/transition/reports/test.utils.js +1 -1
  453. package/packages/workers/api-node/config.js +4 -4
  454. package/packages/workers/api-node/port.d.ts +2 -1
  455. package/packages/workers/api-node/port.d.ts.map +1 -1
  456. package/packages/workers/api-node/port.js +4 -1
  457. package/packages/workers/api-node/port.test.js +2 -2
  458. package/packages/workers/api-node/protocol.js +2 -2
  459. package/packages/workers/block-authorship/generator.d.ts +13 -2
  460. package/packages/workers/block-authorship/generator.d.ts.map +1 -1
  461. package/packages/workers/block-authorship/generator.js +13 -9
  462. package/packages/workers/block-authorship/generator.test.js +16 -2
  463. package/packages/workers/block-authorship/main.d.ts.map +1 -1
  464. package/packages/workers/block-authorship/main.js +8 -1
  465. package/packages/workers/importer/finality.test.js +1 -1
  466. package/packages/workers/importer/importer.d.ts +23 -6
  467. package/packages/workers/importer/importer.d.ts.map +1 -1
  468. package/packages/workers/importer/importer.js +34 -19
  469. package/packages/workers/importer/main.d.ts.map +1 -1
  470. package/packages/workers/importer/main.js +13 -5
@@ -8,7 +8,6 @@ import { HostCallMemory, HostCallRegisters, PvmExecution } from "#@typeberry/pvm
8
8
  import { tryAsGas } from "#@typeberry/pvm-interface";
9
9
  import { gasCounter, MemoryBuilder, tryAsMemoryIndex, tryAsSbrkIndex } from "#@typeberry/pvm-interpreter";
10
10
  import { PAGE_SIZE } from "#@typeberry/pvm-interpreter/memory/memory-consts.js";
11
- import { emptyRegistersBuffer } from "../utils.js";
12
11
  import { Fetch, FetchContext, FetchKind } from "./fetch.js";
13
12
  import { HostCallResult } from "./results.js";
14
13
  describe("Fetch", () => {
@@ -20,25 +19,28 @@ describe("Fetch", () => {
20
19
  const fetchMock = new RefineFetchMock();
21
20
  fetchMock.constantsResponse = blob;
22
21
  const badOffset = tryAsU64(0xfffff);
23
- const registers = new HostCallRegisters(emptyRegistersBuffer());
22
+ const registers = HostCallRegisters.empty();
24
23
  registers.set(IN_OUT_REG, badOffset);
25
24
  registers.set(8, tryAsU64(0));
26
25
  registers.set(9, tryAsU64(blob.length));
27
26
  registers.set(10, tryAsU64(FetchKind.Constants));
28
27
  const builder = new MemoryBuilder();
29
28
  // do not define any writable memory!
30
- const memory = new HostCallMemory(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
31
- const fetch = new Fetch(currentServiceId, fetchMock);
29
+ const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
30
+ const fetch = Fetch.new(currentServiceId, fetchMock);
32
31
  const result = await fetch.execute(gas, registers, memory);
33
32
  assert.strictEqual(result, PvmExecution.Panic);
34
33
  });
35
34
  it("should write empty result and set IN_OUT_REG to NONE if fetch returns null", async () => {
36
35
  const currentServiceId = tryAsServiceId(10_000);
37
36
  const fetchMock = new RefineFetchMock();
38
- // authorizerTraceResponse is null by default Kind 2 legitimately returns null
37
+ // oneWorkItem returns null when the work item index has no mock response registered
39
38
  const blob = BytesBlob.blobFromNumbers([]);
40
- const { registers, memory, readBack } = prepareRegsAndMemory(blob, FetchKind.AuthorizerTrace);
41
- const fetch = new Fetch(currentServiceId, fetchMock);
39
+ const { registers, memory, readBack } = prepareRegsAndMemory(blob, FetchKind.OneWorkItem);
40
+ // set work item index to one that has no response → oneWorkItem returns null
41
+ registers.set(11, tryAsU64(999));
42
+ fetchMock.oneWorkItemResponses.set("999", null);
43
+ const fetch = Fetch.new(currentServiceId, fetchMock);
42
44
  const result = await fetch.execute(gas, registers, memory);
43
45
  assert.strictEqual(result, undefined);
44
46
  assert.strictEqual(registers.get(IN_OUT_REG), HostCallResult.NONE);
@@ -51,7 +53,7 @@ describe("Fetch", () => {
51
53
  const fetchMock = new RefineFetchMock();
52
54
  fetchMock.constantsResponse = blob;
53
55
  const { registers, memory, readBack } = prepareRegsAndMemory(blob, FetchKind.Constants, 5, 2);
54
- const fetch = new Fetch(currentServiceId, fetchMock);
56
+ const fetch = Fetch.new(currentServiceId, fetchMock);
55
57
  const result = await fetch.execute(gas, registers, memory);
56
58
  assert.strictEqual(result, undefined);
57
59
  assert.deepStrictEqual(registers.get(IN_OUT_REG), tryAsU64(blob.length));
@@ -63,7 +65,7 @@ describe("Fetch", () => {
63
65
  const fetchMock = new RefineFetchMock();
64
66
  fetchMock.constantsResponse = blob;
65
67
  const { registers, memory, readBack } = prepareRegsAndMemory(blob, FetchKind.Constants, 3, 10);
66
- const fetch = new Fetch(currentServiceId, fetchMock);
68
+ const fetch = Fetch.new(currentServiceId, fetchMock);
67
69
  const result = await fetch.execute(gas, registers, memory);
68
70
  assert.strictEqual(result, undefined);
69
71
  assert.deepStrictEqual(registers.get(IN_OUT_REG), tryAsU64(blob.length));
@@ -76,7 +78,7 @@ describe("Fetch", () => {
76
78
  fetchMock.constantsResponse = blob;
77
79
  const { registers, memory, readBack } = prepareRegsAndMemory(blob, FetchKind.Constants);
78
80
  registers.set(10, tryAsU64(999));
79
- const fetch = new Fetch(currentServiceId, fetchMock);
81
+ const fetch = Fetch.new(currentServiceId, fetchMock);
80
82
  const result = await fetch.execute(gas, registers, memory);
81
83
  assert.strictEqual(result, undefined);
82
84
  assert.strictEqual(registers.get(IN_OUT_REG), HostCallResult.NONE);
@@ -88,7 +90,7 @@ describe("Fetch", () => {
88
90
  const fetchMock = new RefineFetchMock();
89
91
  fetchMock.constantsResponse = blob;
90
92
  const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.Constants);
91
- const fetch = new Fetch(currentServiceId, fetchMock);
93
+ const fetch = Fetch.new(currentServiceId, fetchMock);
92
94
  const result = await fetch.execute(gas, registers, memory);
93
95
  assert.strictEqual(result, undefined);
94
96
  assert.deepStrictEqual(registers.get(IN_OUT_REG), expectedLength);
@@ -100,7 +102,7 @@ describe("Fetch", () => {
100
102
  const fetchMock = new RefineFetchMock();
101
103
  fetchMock.entropyResponse = blob;
102
104
  const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.Entropy);
103
- const fetch = new Fetch(currentServiceId, fetchMock);
105
+ const fetch = Fetch.new(currentServiceId, fetchMock);
104
106
  const result = await fetch.execute(gas, registers, memory);
105
107
  assert.strictEqual(result, undefined);
106
108
  assert.deepStrictEqual(registers.get(IN_OUT_REG), expectedLength);
@@ -112,7 +114,7 @@ describe("Fetch", () => {
112
114
  const fetchMock = new RefineFetchMock();
113
115
  fetchMock.authorizerTraceResponse = blob;
114
116
  const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.AuthorizerTrace);
115
- const fetch = new Fetch(currentServiceId, fetchMock);
117
+ const fetch = Fetch.new(currentServiceId, fetchMock);
116
118
  const result = await fetch.execute(gas, registers, memory);
117
119
  assert.strictEqual(result, undefined);
118
120
  assert.deepStrictEqual(registers.get(IN_OUT_REG), expectedLength);
@@ -129,7 +131,7 @@ describe("Fetch", () => {
129
131
  const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.OtherWorkItemExtrinsics);
130
132
  registers.set(11, workItem);
131
133
  registers.set(12, index);
132
- const fetch = new Fetch(currentServiceId, fetchMock);
134
+ const fetch = Fetch.new(currentServiceId, fetchMock);
133
135
  const result = await fetch.execute(gas, registers, memory);
134
136
  assert.strictEqual(result, undefined);
135
137
  assert.deepStrictEqual(registers.get(IN_OUT_REG), expectedLength);
@@ -145,7 +147,7 @@ describe("Fetch", () => {
145
147
  fetchMock.workItemExtrinsicResponses.set(key, blob);
146
148
  const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.MyExtrinsics);
147
149
  registers.set(11, index); // only index; workItem is null
148
- const fetch = new Fetch(currentServiceId, fetchMock);
150
+ const fetch = Fetch.new(currentServiceId, fetchMock);
149
151
  const result = await fetch.execute(gas, registers, memory);
150
152
  assert.strictEqual(result, undefined);
151
153
  assert.deepStrictEqual(registers.get(IN_OUT_REG), expectedLength);
@@ -163,7 +165,7 @@ describe("Fetch", () => {
163
165
  const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.OtherWorkItemImports);
164
166
  registers.set(11, workItem);
165
167
  registers.set(12, index);
166
- const fetch = new Fetch(currentServiceId, fetchMock);
168
+ const fetch = Fetch.new(currentServiceId, fetchMock);
167
169
  const result = await fetch.execute(gas, registers, memory);
168
170
  assert.strictEqual(result, undefined);
169
171
  assert.deepStrictEqual(registers.get(IN_OUT_REG), expectedLength);
@@ -179,7 +181,7 @@ describe("Fetch", () => {
179
181
  fetchMock.workItemImportResponses.set(key, blob);
180
182
  const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.MyImports);
181
183
  registers.set(11, index); // workItem is implicitly null
182
- const fetch = new Fetch(currentServiceId, fetchMock);
184
+ const fetch = Fetch.new(currentServiceId, fetchMock);
183
185
  const result = await fetch.execute(gas, registers, memory);
184
186
  assert.strictEqual(result, undefined);
185
187
  assert.deepStrictEqual(registers.get(IN_OUT_REG), expectedLength);
@@ -192,7 +194,7 @@ describe("Fetch", () => {
192
194
  const fetchMock = new RefineFetchMock();
193
195
  fetchMock.workPackageResponse = blob;
194
196
  const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.WorkPackage);
195
- const fetch = new Fetch(currentServiceId, fetchMock);
197
+ const fetch = Fetch.new(currentServiceId, fetchMock);
196
198
  const result = await fetch.execute(gas, registers, memory);
197
199
  assert.strictEqual(result, undefined);
198
200
  assert.deepStrictEqual(registers.get(IN_OUT_REG), expectedLength);
@@ -203,8 +205,8 @@ describe("Fetch", () => {
203
205
  const blob = BytesBlob.blobFromNumbers([201, 202, 203]);
204
206
  const fetchMock = new RefineFetchMock();
205
207
  fetchMock.authorizerResponse = blob;
206
- const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.Authorizer);
207
- const fetch = new Fetch(currentServiceId, fetchMock);
208
+ const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.AuthConfiguration);
209
+ const fetch = Fetch.new(currentServiceId, fetchMock);
208
210
  const result = await fetch.execute(gas, registers, memory);
209
211
  assert.strictEqual(result, undefined);
210
212
  assert.deepStrictEqual(registers.get(IN_OUT_REG), expectedLength);
@@ -215,8 +217,8 @@ describe("Fetch", () => {
215
217
  const blob = BytesBlob.blobFromNumbers([210, 211, 212]);
216
218
  const fetchMock = new RefineFetchMock();
217
219
  fetchMock.authorizationTokenResponse = blob;
218
- const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.AuthorizationToken);
219
- const fetch = new Fetch(currentServiceId, fetchMock);
220
+ const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.AuthToken);
221
+ const fetch = Fetch.new(currentServiceId, fetchMock);
220
222
  const result = await fetch.execute(gas, registers, memory);
221
223
  assert.strictEqual(result, undefined);
222
224
  assert.deepStrictEqual(registers.get(IN_OUT_REG), expectedLength);
@@ -228,7 +230,7 @@ describe("Fetch", () => {
228
230
  const fetchMock = new RefineFetchMock();
229
231
  fetchMock.refineContextResponse = blob;
230
232
  const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.RefineContext);
231
- const fetch = new Fetch(currentServiceId, fetchMock);
233
+ const fetch = Fetch.new(currentServiceId, fetchMock);
232
234
  const result = await fetch.execute(gas, registers, memory);
233
235
  assert.strictEqual(result, undefined);
234
236
  assert.deepStrictEqual(registers.get(IN_OUT_REG), expectedLength);
@@ -240,7 +242,7 @@ describe("Fetch", () => {
240
242
  const fetchMock = new RefineFetchMock();
241
243
  fetchMock.allWorkItemsResponse = blob;
242
244
  const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.AllWorkItems);
243
- const fetch = new Fetch(currentServiceId, fetchMock);
245
+ const fetch = Fetch.new(currentServiceId, fetchMock);
244
246
  const result = await fetch.execute(gas, registers, memory);
245
247
  assert.strictEqual(result, undefined);
246
248
  assert.deepStrictEqual(registers.get(IN_OUT_REG), expectedLength);
@@ -254,7 +256,7 @@ describe("Fetch", () => {
254
256
  fetchMock.oneWorkItemResponses.set(workItem.toString(), blob);
255
257
  const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.OneWorkItem);
256
258
  registers.set(11, workItem);
257
- const fetch = new Fetch(currentServiceId, fetchMock);
259
+ const fetch = Fetch.new(currentServiceId, fetchMock);
258
260
  const result = await fetch.execute(gas, registers, memory);
259
261
  assert.strictEqual(result, undefined);
260
262
  assert.deepStrictEqual(registers.get(IN_OUT_REG), expectedLength);
@@ -269,7 +271,7 @@ describe("Fetch", () => {
269
271
  fetchMock.workItemPayloadResponses.set(workItem.toString(), blob);
270
272
  const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.WorkItemPayload);
271
273
  registers.set(11, workItem);
272
- const fetch = new Fetch(currentServiceId, fetchMock);
274
+ const fetch = Fetch.new(currentServiceId, fetchMock);
273
275
  const result = await fetch.execute(gas, registers, memory);
274
276
  assert.strictEqual(result, undefined);
275
277
  assert.deepStrictEqual(registers.get(IN_OUT_REG), expectedLength);
@@ -282,7 +284,7 @@ describe("Fetch", () => {
282
284
  const fetchMock = new AccumulateFetchMock();
283
285
  fetchMock.allTransfersAndOperandsResponse = blob;
284
286
  const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.AllTransfersAndOperands);
285
- const fetch = new Fetch(currentServiceId, fetchMock);
287
+ const fetch = Fetch.new(currentServiceId, fetchMock);
286
288
  const result = await fetch.execute(gas, registers, memory);
287
289
  assert.strictEqual(result, undefined);
288
290
  assert.deepStrictEqual(registers.get(IN_OUT_REG), expectedLength);
@@ -296,7 +298,7 @@ describe("Fetch", () => {
296
298
  fetchMock.oneTransferOrOperandResponses.set(index.toString(), blob);
297
299
  const { registers, memory, readBack, expectedLength } = prepareRegsAndMemory(blob, FetchKind.OneTransferOrOperand);
298
300
  registers.set(11, index);
299
- const fetch = new Fetch(currentServiceId, fetchMock);
301
+ const fetch = Fetch.new(currentServiceId, fetchMock);
300
302
  const result = await fetch.execute(gas, registers, memory);
301
303
  assert.strictEqual(result, undefined);
302
304
  assert.deepStrictEqual(registers.get(IN_OUT_REG), expectedLength);
@@ -314,15 +316,15 @@ describe("Fetch", () => {
314
316
  FetchKind.OtherWorkItemImports,
315
317
  FetchKind.MyImports,
316
318
  FetchKind.WorkPackage,
317
- FetchKind.Authorizer,
318
- FetchKind.AuthorizationToken,
319
+ FetchKind.AuthConfiguration,
320
+ FetchKind.AuthToken,
319
321
  FetchKind.RefineContext,
320
322
  FetchKind.AllWorkItems,
321
323
  FetchKind.OneWorkItem,
322
324
  FetchKind.WorkItemPayload,
323
325
  ]) {
324
326
  const { registers, memory } = prepareRegsAndMemory(blob, kind);
325
- const fetch = new Fetch(currentServiceId, fetchMock);
327
+ const fetch = Fetch.new(currentServiceId, fetchMock);
326
328
  const result = await fetch.execute(gas, registers, memory);
327
329
  assert.strictEqual(result, undefined, `Expected undefined for kind ${kind}`);
328
330
  assert.strictEqual(registers.get(IN_OUT_REG), HostCallResult.NONE, `Expected NONE for kind ${kind}`);
@@ -334,7 +336,7 @@ describe("Fetch", () => {
334
336
  const blob = BytesBlob.empty();
335
337
  for (const kind of [FetchKind.AllTransfersAndOperands, FetchKind.OneTransferOrOperand]) {
336
338
  const { registers, memory } = prepareRegsAndMemory(blob, kind);
337
- const fetch = new Fetch(currentServiceId, fetchMock);
339
+ const fetch = Fetch.new(currentServiceId, fetchMock);
338
340
  const result = await fetch.execute(gas, registers, memory);
339
341
  assert.strictEqual(result, undefined, `Expected undefined for kind ${kind}`);
340
342
  assert.strictEqual(registers.get(IN_OUT_REG), HostCallResult.NONE, `Expected NONE for kind ${kind}`);
@@ -344,14 +346,14 @@ describe("Fetch", () => {
344
346
  const pageStart = 2 ** 16;
345
347
  const memOffset = tryAsU64(pageStart + 1234);
346
348
  const blobLength = tryAsU64(blob.length);
347
- const registers = new HostCallRegisters(emptyRegistersBuffer());
349
+ const registers = HostCallRegisters.empty();
348
350
  registers.set(IN_OUT_REG, memOffset);
349
351
  registers.set(8, tryAsU64(offset));
350
352
  registers.set(9, tryAsU64(length));
351
353
  registers.set(10, tryAsU64(fetchKind));
352
354
  const builder = new MemoryBuilder();
353
355
  builder.setWriteablePages(tryAsMemoryIndex(pageStart), tryAsMemoryIndex(pageStart + PAGE_SIZE));
354
- const memory = new HostCallMemory(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
356
+ const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
355
357
  const readBack = () => {
356
358
  const result = new Uint8Array(blob.length);
357
359
  assert.strictEqual(memory.loadInto(result, memOffset).isOk, true);
@@ -373,14 +375,14 @@ class RefineFetchMock {
373
375
  workItemPayloadData = [];
374
376
  constantsResponse = null;
375
377
  entropyResponse = null;
376
- authorizerTraceResponse = null;
378
+ authorizerTraceResponse = BytesBlob.empty();
377
379
  workItemExtrinsicResponses = new Map();
378
380
  workItemImportResponses = new Map();
379
- workPackageResponse = null;
380
- authorizerResponse = null;
381
- authorizationTokenResponse = null;
382
- refineContextResponse = null;
383
- allWorkItemsResponse = null;
381
+ workPackageResponse = BytesBlob.empty();
382
+ authorizerResponse = BytesBlob.empty();
383
+ authorizationTokenResponse = BytesBlob.empty();
384
+ refineContextResponse = BytesBlob.empty();
385
+ allWorkItemsResponse = BytesBlob.empty();
384
386
  oneWorkItemResponses = new Map();
385
387
  workItemPayloadResponses = new Map();
386
388
  constants() {
@@ -417,10 +419,10 @@ class RefineFetchMock {
417
419
  workPackage() {
418
420
  return this.workPackageResponse;
419
421
  }
420
- authorizer() {
422
+ authConfiguration() {
421
423
  return this.authorizerResponse;
422
424
  }
423
- authorizationToken() {
425
+ authToken() {
424
426
  return this.authorizationTokenResponse;
425
427
  }
426
428
  refineContext() {
@@ -14,7 +14,8 @@ export declare class GasHostCall 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);
17
+ static new(currentServiceId: ServiceId): GasHostCall;
18
+ private constructor();
18
19
  execute(gas: IGasCounter, regs: HostCallRegisters): Promise<undefined | PvmExecution>;
19
20
  }
20
21
  //# sourceMappingURL=gas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gas.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/gas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpF,OAAO,EAAE,KAAK,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAClG,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAG3E;;;;;;GAMG;AACH,qBAAa,WAAY,YAAW,eAAe;aAKrB,gBAAgB,EAAE,SAAS;IAJvD,KAAK,iIAAyB;IAC9B,YAAY,4HAAqB;IACjC,eAAe,uEAAqB;gBAER,gBAAgB,EAAE,SAAS;IAEvD,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CAMtF"}
1
+ {"version":3,"file":"gas.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/gas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpF,OAAO,EAAE,KAAK,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAClG,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAG3E;;;;;;GAMG;AACH,qBAAa,WAAY,YAAW,eAAe;aASb,gBAAgB,EAAE,SAAS;IAR/D,KAAK,iIAAyB;IAC9B,YAAY,4HAAqB;IACjC,eAAe,uEAAqB;IAEpC,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS;IAItC,OAAO;IAEP,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CAMtF"}
@@ -14,6 +14,9 @@ export class GasHostCall {
14
14
  index = tryAsHostCallIndex(0);
15
15
  basicGasCost = tryAsSmallGas(10);
16
16
  tracedRegisters = traceRegisters(7);
17
+ static new(currentServiceId) {
18
+ return new GasHostCall(currentServiceId);
19
+ }
17
20
  constructor(currentServiceId) {
18
21
  this.currentServiceId = currentServiceId;
19
22
  }
@@ -4,15 +4,14 @@ import { tryAsServiceId } from "#@typeberry/block";
4
4
  import { HostCallRegisters } from "#@typeberry/pvm-host-calls";
5
5
  import { tryAsGas } from "#@typeberry/pvm-interface";
6
6
  import { gasCounter } from "#@typeberry/pvm-interpreter";
7
- import { emptyRegistersBuffer } from "../utils.js";
8
7
  import { GasHostCall } from "./gas.js";
9
8
  const REGISTER = 7;
10
9
  describe("HostCalls: Gas", () => {
11
10
  it("should write U32 gas to register", () => {
12
11
  const currentServiceId = tryAsServiceId(10_000);
13
- const gas = new GasHostCall(currentServiceId);
12
+ const gas = GasHostCall.new(currentServiceId);
14
13
  const counter = gasCounter(tryAsGas(10_000));
15
- const regs = new HostCallRegisters(emptyRegistersBuffer());
14
+ const regs = HostCallRegisters.empty();
16
15
  assert.deepStrictEqual(regs.get(REGISTER), 0n);
17
16
  // when
18
17
  gas.execute(counter, regs);
@@ -21,9 +20,9 @@ describe("HostCalls: Gas", () => {
21
20
  });
22
21
  it("should write U64 gas to register", () => {
23
22
  const currentServiceId = tryAsServiceId(10_000);
24
- const gas = new GasHostCall(currentServiceId);
23
+ const gas = GasHostCall.new(currentServiceId);
25
24
  const counter = gasCounter(tryAsGas(2n ** 64n - 1n));
26
- const regs = new HostCallRegisters(emptyRegistersBuffer());
25
+ const regs = HostCallRegisters.empty();
27
26
  assert.deepStrictEqual(regs.get(REGISTER), 0n);
28
27
  // when
29
28
  gas.execute(counter, regs);
@@ -33,7 +33,8 @@ export declare class Info implements HostCallHandler {
33
33
  index: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"HostCallIndex[U32]">;
34
34
  basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
35
35
  tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
36
- constructor(currentServiceId: ServiceId, account: AccountsInfo);
36
+ static new(currentServiceId: ServiceId, account: AccountsInfo): Info;
37
+ private constructor();
37
38
  execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<undefined | PvmExecution>;
38
39
  }
39
40
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAkD,MAAM,kBAAkB,CAAC;AAKlG,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;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAMtD,kDAAkD;AAClD,MAAM,WAAW,YAAY;IAC3B,wBAAwB;IACxB,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,GAAG,kBAAkB,GAAG,IAAI,CAAC;CACxE;AAMD,eAAO,MAAM,OAAO,QACsF,CAAC;AAE3G;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,IAAK,YAAW,eAAe;aAMxB,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAN1B,KAAK,iIAAyB;IAC9B,YAAY,4HAAqB;IACjC,eAAe,uEAAsD;gBAGnD,gBAAgB,EAAE,SAAS,EAC1B,OAAO,EAAE,YAAY;IAGlC,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CA8CrH;AAED;;;;;;GAMG;AACH,eAAO,MAAM,2CAA2C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAevD,CAAC"}
1
+ {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAkD,MAAM,kBAAkB,CAAC;AAKlG,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;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAMtD,kDAAkD;AAClD,MAAM,WAAW,YAAY;IAC3B,wBAAwB;IACxB,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,GAAG,kBAAkB,GAAG,IAAI,CAAC;CACxE;AAMD,eAAO,MAAM,OAAO,QACsF,CAAC;AAE3G;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,IAAK,YAAW,eAAe;aAUxB,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAV1B,KAAK,iIAAyB;IAC9B,YAAY,4HAAqB;IACjC,eAAe,uEAAsD;IAErE,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY;IAI7D,OAAO;IAKD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CA8CrH;AAED;;;;;;GAMG;AACH,eAAO,MAAM,2CAA2C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAevD,CAAC"}
@@ -37,6 +37,9 @@ export class Info {
37
37
  index = tryAsHostCallIndex(5);
38
38
  basicGasCost = tryAsSmallGas(10);
39
39
  tracedRegisters = traceRegisters(IN_OUT_REG, 8, OFFSET_REG, LEN_REG);
40
+ static new(currentServiceId, account) {
41
+ return new Info(currentServiceId, account);
42
+ }
40
43
  constructor(currentServiceId, account) {
41
44
  this.currentServiceId = currentServiceId;
42
45
  this.account = account;
@@ -12,7 +12,6 @@ import { tryAsSbrkIndex } from "#@typeberry/pvm-interpreter/memory/memory-index.
12
12
  import { PAGE_SIZE } from "#@typeberry/pvm-interpreter/spi-decoder/memory-conts.js";
13
13
  import { ServiceAccountInfo } from "#@typeberry/state";
14
14
  import { TestAccounts } from "../externalities/test-accounts.js";
15
- import { emptyRegistersBuffer } from "../utils.js";
16
15
  import { codecServiceAccountInfoWithThresholdBalance, Info, LEN_REG } from "./info.js";
17
16
  import { HostCallResult } from "./results.js";
18
17
  const SERVICE_ID_REG = 7;
@@ -23,13 +22,13 @@ const serviceAccountInfoSize = tryAsExactBytes(codecServiceAccountInfoWithThresh
23
22
  function prepareRegsAndMemory(serviceId, accountInfoLength = serviceAccountInfoSize) {
24
23
  const pageStart = 2 ** 16;
25
24
  const memStart = pageStart + PAGE_SIZE - accountInfoLength - 1;
26
- const registers = new HostCallRegisters(emptyRegistersBuffer());
25
+ const registers = HostCallRegisters.empty();
27
26
  registers.set(SERVICE_ID_REG, tryAsU64(serviceId));
28
27
  registers.set(DEST_START_REG, tryAsU64(memStart));
29
28
  registers.set(LEN_REG, tryAsU64(serviceAccountInfoSize));
30
29
  const builder = new MemoryBuilder();
31
30
  builder.setWriteablePages(tryAsMemoryIndex(pageStart), tryAsMemoryIndex(pageStart + PAGE_SIZE));
32
- const memory = new HostCallMemory(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
31
+ const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
33
32
  const readRaw = () => {
34
33
  const result = new Uint8Array(Number(registers.get(LEN_REG)));
35
34
  assert.strictEqual(memory.loadInto(result, tryAsU64(memStart)).isOk, true);
@@ -56,7 +55,7 @@ describe("HostCalls: Info", () => {
56
55
  const serviceId = tryAsServiceId(10_000);
57
56
  const currentServiceId = serviceId;
58
57
  const accounts = new TestAccounts(currentServiceId);
59
- const info = new Info(currentServiceId, accounts);
58
+ const info = Info.new(currentServiceId, accounts);
60
59
  const { registers, memory, readInfo } = prepareRegsAndMemory(serviceId);
61
60
  const storageUtilisationBytes = tryAsU64(10_000);
62
61
  const storageUtilisationCount = tryAsU32(1_000);
@@ -84,7 +83,7 @@ describe("HostCalls: Info", () => {
84
83
  const serviceId = tryAsServiceId(10_000);
85
84
  const currentServiceId = serviceId;
86
85
  const accounts = new TestAccounts(currentServiceId);
87
- const info = new Info(currentServiceId, accounts);
86
+ const info = Info.new(currentServiceId, accounts);
88
87
  const { registers, memory, readRaw } = prepareRegsAndMemory(serviceId);
89
88
  registers.set(LEN_REG, tryAsU64(10));
90
89
  const storageUtilisationBytes = tryAsU64(10_000);
@@ -108,7 +107,7 @@ describe("HostCalls: Info", () => {
108
107
  it("should write none if account info is missing", async () => {
109
108
  const currentServiceId = tryAsServiceId(15_000);
110
109
  const accounts = new TestAccounts(currentServiceId);
111
- const info = new Info(currentServiceId, accounts);
110
+ const info = Info.new(currentServiceId, accounts);
112
111
  const serviceId = tryAsServiceId(10_000);
113
112
  const { registers, memory } = prepareRegsAndMemory(serviceId);
114
113
  // when
@@ -121,7 +120,7 @@ describe("HostCalls: Info", () => {
121
120
  const serviceId = tryAsServiceId(10_000);
122
121
  const currentServiceId = serviceId;
123
122
  const accounts = new TestAccounts(currentServiceId);
124
- const info = new Info(serviceId, accounts);
123
+ const info = Info.new(serviceId, accounts);
125
124
  const { registers, memory } = prepareRegsAndMemory(serviceId, 10);
126
125
  const storageUtilisationBytes = tryAsU64(10_000);
127
126
  const storageUtilisationCount = tryAsU32(1_000);
@@ -11,7 +11,8 @@ export declare class LogHostCall implements HostCallHandler {
11
11
  index: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"HostCallIndex[U32]">;
12
12
  basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
13
13
  tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
14
- constructor(currentServiceId: ServiceId);
14
+ static new(currentServiceId: ServiceId): LogHostCall;
15
+ private constructor();
15
16
  execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<undefined>;
16
17
  }
17
18
  //# sourceMappingURL=log.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEpG,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAmB3E;;;;GAIG;AACH,qBAAa,WAAY,YAAW,eAAe;aAMrB,gBAAgB,EAAE,SAAS;IALvD,KAAK,iIAA2B;IAChC,YAAY,4HAA2F;IAEvG,eAAe,uEAAoB;gBAEP,gBAAgB,EAAE,SAAS;IAEjD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC;CAqBtG"}
1
+ {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEpG,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAmB3E;;;;GAIG;AACH,qBAAa,WAAY,YAAW,eAAe;aAUb,gBAAgB,EAAE,SAAS;IAT/D,KAAK,iIAA2B;IAChC,YAAY,4HAA2F;IAEvG,eAAe,uEAAoB;IAEnC,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS;IAItC,OAAO;IAED,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC;CAqBtG"}
@@ -26,6 +26,9 @@ export class LogHostCall {
26
26
  basicGasCost = Compatibility.isGreaterOrEqual(GpVersion.V0_7_2) ? tryAsSmallGas(10) : tryAsSmallGas(0);
27
27
  // intentionally not tracing anything here, since the message will be printed anyway.
28
28
  tracedRegisters = traceRegisters();
29
+ static new(currentServiceId) {
30
+ return new LogHostCall(currentServiceId);
31
+ }
29
32
  constructor(currentServiceId) {
30
33
  this.currentServiceId = currentServiceId;
31
34
  }
@@ -20,7 +20,8 @@ export declare class Lookup implements HostCallHandler {
20
20
  index: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"HostCallIndex[U32]">;
21
21
  basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
22
22
  tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
23
- constructor(currentServiceId: ServiceId, account: AccountsLookup);
23
+ static new(currentServiceId: ServiceId, account: AccountsLookup): Lookup;
24
+ private constructor();
24
25
  execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<undefined | PvmExecution>;
25
26
  }
26
27
  //# sourceMappingURL=lookup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lookup.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/lookup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,KAAK,WAAW,EAAa,MAAM,iBAAiB,CAAC;AAE9D,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;AAM3E,oDAAoD;AACpD,MAAM,WAAW,cAAc;IAC7B,yBAAyB;IACzB,MAAM,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,EAAE,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;CAC1E;AAID;;;;GAIG;AACH,qBAAa,MAAO,YAAW,eAAe;aAO1B,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAP1B,KAAK,iIAAyB;IAE9B,YAAY,4HAAqB;IACjC,eAAe,uEAA4C;gBAGzC,gBAAgB,EAAE,SAAS,EAC1B,OAAO,EAAE,cAAc;IAGpC,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CAgDrH"}
1
+ {"version":3,"file":"lookup.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/lookup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,KAAK,WAAW,EAAa,MAAM,iBAAiB,CAAC;AAE9D,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;AAM3E,oDAAoD;AACpD,MAAM,WAAW,cAAc;IAC7B,yBAAyB;IACzB,MAAM,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,EAAE,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;CAC1E;AAID;;;;GAIG;AACH,qBAAa,MAAO,YAAW,eAAe;aAW1B,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAX1B,KAAK,iIAAyB;IAE9B,YAAY,4HAAqB;IACjC,eAAe,uEAA4C;IAE3D,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc;IAI/D,OAAO;IAKD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CAgDrH"}
@@ -19,6 +19,9 @@ export class Lookup {
19
19
  index = tryAsHostCallIndex(2);
20
20
  basicGasCost = tryAsSmallGas(10);
21
21
  tracedRegisters = traceRegisters(IN_OUT_REG, 8, 9, 10, 11);
22
+ static new(currentServiceId, account) {
23
+ return new Lookup(currentServiceId, account);
24
+ }
22
25
  constructor(currentServiceId, account) {
23
26
  this.currentServiceId = currentServiceId;
24
27
  this.account = account;
@@ -11,7 +11,6 @@ import { MemoryBuilder, tryAsMemoryIndex } from "#@typeberry/pvm-interpreter/mem
11
11
  import { tryAsSbrkIndex } from "#@typeberry/pvm-interpreter/memory/memory-index.js";
12
12
  import { PAGE_SIZE } from "#@typeberry/pvm-interpreter/spi-decoder/memory-conts.js";
13
13
  import { TestAccounts } from "../externalities/test-accounts.js";
14
- import { emptyRegistersBuffer } from "../utils.js";
15
14
  import { Lookup } from "./lookup.js";
16
15
  import { HostCallResult } from "./results.js";
17
16
  let blake2b;
@@ -31,7 +30,7 @@ const PREIMAGE_BLOB = BytesBlob.blobFromString("hello world");
31
30
  const DESTINATION_MEM_ADDRESS = 2 ** 22;
32
31
  const PREIMAGE_HASH_ADDRESS = 2 ** 16;
33
32
  function prepareRegsAndMemory(serviceId, key, { skipKey = false, skipValue = false, preimageOffset = 0, preimageLength = 0, } = {}) {
34
- const registers = new HostCallRegisters(emptyRegistersBuffer());
33
+ const registers = HostCallRegisters.empty();
35
34
  registers.set(SERVICE_ID_REG, tryAsU64(serviceId));
36
35
  registers.set(HASH_ADDRESS_REG, tryAsU64(PREIMAGE_HASH_ADDRESS));
37
36
  registers.set(DEST_ADDRESS_REG, tryAsU64(DESTINATION_MEM_ADDRESS));
@@ -44,7 +43,7 @@ function prepareRegsAndMemory(serviceId, key, { skipKey = false, skipValue = fal
44
43
  if (!skipValue) {
45
44
  builder.setWriteablePages(tryAsMemoryIndex(DESTINATION_MEM_ADDRESS), tryAsMemoryIndex(DESTINATION_MEM_ADDRESS + PAGE_SIZE));
46
45
  }
47
- const memory = new HostCallMemory(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
46
+ const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
48
47
  return {
49
48
  registers,
50
49
  memory,
@@ -54,7 +53,7 @@ describe("HostCalls: Lookup", () => {
54
53
  it("should fail gracefully if account doesn't exist", async () => {
55
54
  const currentServiceId = tryAsServiceId(15_000);
56
55
  const accounts = new TestAccounts(currentServiceId);
57
- const lookup = new Lookup(currentServiceId, accounts);
56
+ const lookup = Lookup.new(currentServiceId, accounts);
58
57
  const serviceId = tryAsServiceId(10_000);
59
58
  const { registers, memory } = prepareRegsAndMemory(serviceId, HASH);
60
59
  // serviceId out of range
@@ -66,7 +65,7 @@ describe("HostCalls: Lookup", () => {
66
65
  it("should fail gracefully if preimage doesn't exist", async () => {
67
66
  const currentServiceId = tryAsServiceId(15_000);
68
67
  const accounts = new TestAccounts(currentServiceId);
69
- const lookup = new Lookup(currentServiceId, accounts);
68
+ const lookup = Lookup.new(currentServiceId, accounts);
70
69
  const serviceId = tryAsServiceId(10_000);
71
70
  const { registers, memory } = prepareRegsAndMemory(serviceId, HASH);
72
71
  accounts.preimages.set(null, serviceId, HASH);
@@ -77,7 +76,7 @@ describe("HostCalls: Lookup", () => {
77
76
  it("should fail on page fault if memory isn't readable", async () => {
78
77
  const currentServiceId = tryAsServiceId(15_000);
79
78
  const accounts = new TestAccounts(currentServiceId);
80
- const lookup = new Lookup(currentServiceId, accounts);
79
+ const lookup = Lookup.new(currentServiceId, accounts);
81
80
  const serviceId = tryAsServiceId(10_000);
82
81
  const { registers, memory: emptyMemory } = prepareRegsAndMemory(serviceId, HASH, {
83
82
  skipKey: true,
@@ -88,7 +87,7 @@ describe("HostCalls: Lookup", () => {
88
87
  it("should fail on page fault if destination memory is not writable", async () => {
89
88
  const currentServiceId = tryAsServiceId(15_000);
90
89
  const accounts = new TestAccounts(currentServiceId);
91
- const lookup = new Lookup(currentServiceId, accounts);
90
+ const lookup = Lookup.new(currentServiceId, accounts);
92
91
  const serviceId = tryAsServiceId(10_000);
93
92
  const { registers, memory: emptyMemory } = prepareRegsAndMemory(serviceId, HASH, {
94
93
  skipValue: true,
@@ -102,7 +101,7 @@ describe("HostCalls: Lookup", () => {
102
101
  it("without offset", async () => {
103
102
  const currentServiceId = tryAsServiceId(15_000);
104
103
  const accounts = new TestAccounts(currentServiceId);
105
- const lookup = new Lookup(currentServiceId, accounts);
104
+ const lookup = Lookup.new(currentServiceId, accounts);
106
105
  const serviceId = tryAsServiceId(10_000);
107
106
  const preimageLength = 5;
108
107
  const { registers, memory } = prepareRegsAndMemory(serviceId, HASH, { preimageLength });
@@ -118,7 +117,7 @@ describe("HostCalls: Lookup", () => {
118
117
  it("with offset", async () => {
119
118
  const currentServiceId = tryAsServiceId(15_000);
120
119
  const accounts = new TestAccounts(currentServiceId);
121
- const lookup = new Lookup(currentServiceId, accounts);
120
+ const lookup = Lookup.new(currentServiceId, accounts);
122
121
  const serviceId = tryAsServiceId(10_000);
123
122
  const preimageLength = 5;
124
123
  const preimageOffset = 6;
@@ -19,7 +19,8 @@ export declare class Read implements HostCallHandler {
19
19
  index: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"HostCallIndex[U32]">;
20
20
  basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
21
21
  tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
22
- constructor(currentServiceId: ServiceId, account: AccountsRead);
22
+ static new(currentServiceId: ServiceId, account: AccountsRead): Read;
23
+ private constructor();
23
24
  execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<undefined | PvmExecution>;
24
25
  }
25
26
  //# sourceMappingURL=read.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/read.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,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;AAM3E,kDAAkD;AAClD,MAAM,WAAW,YAAY;IAC3B,4BAA4B;IAC5B,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC;CACxE;AAID;;;;GAIG;AACH,qBAAa,IAAK,YAAW,eAAe;aAMxB,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAN1B,KAAK,iIAAyB;IAC9B,YAAY,4HAAqB;IACjC,eAAe,uEAAgD;gBAG7C,gBAAgB,EAAE,SAAS,EAC1B,OAAO,EAAE,YAAY;IAGlC,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CA2DrH"}
1
+ {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/read.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,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;AAM3E,kDAAkD;AAClD,MAAM,WAAW,YAAY;IAC3B,4BAA4B;IAC5B,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC;CACxE;AAID;;;;GAIG;AACH,qBAAa,IAAK,YAAW,eAAe;aAUxB,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAV1B,KAAK,iIAAyB;IAC9B,YAAY,4HAAqB;IACjC,eAAe,uEAAgD;IAE/D,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY;IAI7D,OAAO;IAKD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CA2DrH"}
@@ -18,6 +18,9 @@ export class Read {
18
18
  index = tryAsHostCallIndex(3);
19
19
  basicGasCost = tryAsSmallGas(10);
20
20
  tracedRegisters = traceRegisters(IN_OUT_REG, 8, 9, 10, 11, 12);
21
+ static new(currentServiceId, account) {
22
+ return new Read(currentServiceId, account);
23
+ }
21
24
  constructor(currentServiceId, account) {
22
25
  this.currentServiceId = currentServiceId;
23
26
  this.account = account;