@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
@@ -55,51 +55,60 @@ export class PvmExecutor {
55
55
  constructor(serviceCode, hostCallHandlers, entrypoint, pvmInstanceManager) {
56
56
  this.serviceCode = serviceCode;
57
57
  this.entrypoint = entrypoint;
58
- this.hostCalls = new HostCalls({
58
+ this.hostCalls = HostCalls.new({
59
59
  missing: new general.Missing(),
60
60
  handlers: hostCallHandlers,
61
61
  });
62
- this.pvm = new HostCallsExecutor(pvmInstanceManager, this.hostCalls);
62
+ this.pvm = HostCallsExecutor.new(pvmInstanceManager, this.hostCalls);
63
63
  }
64
64
  static async prepareBackend(pvm) {
65
65
  return PvmInstanceManager.new(pvm);
66
66
  }
67
67
  /** Prepare refine host call handlers */
68
68
  static prepareRefineHostCalls(serviceId, externalities) {
69
- const refineHandlers = REFINE_HOST_CALL_CLASSES.map((HandlerClass) => new HandlerClass(externalities.refine));
69
+ const refineHandlers = REFINE_HOST_CALL_CLASSES.map((HandlerClass) => HandlerClass.new(externalities.refine));
70
70
  /** https://graypaper.fluffylabs.dev/#/ab2cdbd/2fa7022fa702?v=0.7.2 */
71
71
  const generalHandlers = [
72
- new general.LogHostCall(serviceId),
73
- new general.GasHostCall(serviceId),
74
- new general.Fetch(serviceId, externalities.fetchExternalities),
72
+ general.LogHostCall.new(serviceId),
73
+ general.GasHostCall.new(serviceId),
74
+ general.Fetch.new(serviceId, externalities.fetchExternalities),
75
75
  ];
76
76
  return refineHandlers.concat(generalHandlers);
77
77
  }
78
78
  /** Prepare accumulation host call handlers */
79
79
  static prepareAccumulateHostCalls(serviceId, externalities, chainSpec) {
80
- const accumulateHandlers = ACCUMULATE_HOST_CALL_CLASSES.map((HandlerClass) => new HandlerClass(serviceId, externalities.partialState, chainSpec));
80
+ const accumulateHandlers = ACCUMULATE_HOST_CALL_CLASSES.map((HandlerClass) => HandlerClass.new(serviceId, externalities.partialState, chainSpec));
81
81
  /** https://graypaper.fluffylabs.dev/#/ab2cdbd/30d00130d001?v=0.7.2 */
82
82
  const generalHandlers = [
83
- new general.LogHostCall(serviceId),
84
- new general.GasHostCall(serviceId),
85
- new general.Read(serviceId, externalities.serviceExternalities),
86
- new general.Write(serviceId, externalities.serviceExternalities),
87
- new general.Fetch(serviceId, externalities.fetchExternalities),
88
- new general.Lookup(serviceId, externalities.serviceExternalities),
89
- new general.Info(serviceId, externalities.serviceExternalities),
83
+ general.LogHostCall.new(serviceId),
84
+ general.GasHostCall.new(serviceId),
85
+ general.Read.new(serviceId, externalities.serviceExternalities),
86
+ general.Write.new(serviceId, externalities.serviceExternalities),
87
+ general.Fetch.new(serviceId, externalities.fetchExternalities),
88
+ general.Lookup.new(serviceId, externalities.serviceExternalities),
89
+ general.Info.new(serviceId, externalities.serviceExternalities),
90
90
  ];
91
91
  return accumulateHandlers.concat(generalHandlers);
92
92
  }
93
+ /** Prepare is-authorized host call handlers */
94
+ static prepareIsAuthorizedHostCalls(serviceId, externalities) {
95
+ const generalHandlers = [
96
+ general.LogHostCall.new(serviceId),
97
+ general.GasHostCall.new(serviceId),
98
+ general.Fetch.new(serviceId, externalities.fetchExternalities),
99
+ ];
100
+ return generalHandlers;
101
+ }
93
102
  /** Prepare on transfer host call handlers */
94
103
  static prepareOnTransferHostCalls(serviceId, externalities) {
95
104
  const generalHandlers = [
96
- new general.LogHostCall(serviceId),
97
- new general.GasHostCall(serviceId),
98
- new general.Fetch(serviceId, externalities.fetchExternalities),
99
- new general.Read(serviceId, externalities.partialState),
100
- new general.Write(serviceId, externalities.partialState),
101
- new general.Lookup(serviceId, externalities.partialState),
102
- new general.Info(serviceId, externalities.partialState),
105
+ general.LogHostCall.new(serviceId),
106
+ general.GasHostCall.new(serviceId),
107
+ general.Fetch.new(serviceId, externalities.fetchExternalities),
108
+ general.Read.new(serviceId, externalities.partialState),
109
+ general.Write.new(serviceId, externalities.partialState),
110
+ general.Lookup.new(serviceId, externalities.partialState),
111
+ general.Info.new(serviceId, externalities.partialState),
103
112
  ];
104
113
  return generalHandlers;
105
114
  }
@@ -123,6 +132,12 @@ export class PvmExecutor {
123
132
  const instances = await PvmExecutor.prepareBackend(pvm);
124
133
  return new PvmExecutor(serviceCode, hostCallHandlers, entrypoint.REFINE, instances);
125
134
  }
135
+ /** A utility function that can be used to prepare is-authorized executor */
136
+ static async createIsAuthorizedExecutor(serviceId, serviceCode, externalities, pvm) {
137
+ const hostCallHandlers = PvmExecutor.prepareIsAuthorizedHostCalls(serviceId, externalities);
138
+ const instances = await PvmExecutor.prepareBackend(pvm);
139
+ return new PvmExecutor(serviceCode, hostCallHandlers, entrypoint.IS_AUTHORIZED, instances);
140
+ }
126
141
  /** A utility function that can be used to prepare accumulate executor */
127
142
  static async createAccumulateExecutor(serviceId, serviceCode, externalities, chainSpec, pvm) {
128
143
  const hostCallHandlers = PvmExecutor.prepareAccumulateHostCalls(serviceId, externalities, chainSpec);
@@ -31,7 +31,8 @@ export declare class FuzzTarget implements IpcHandler {
31
31
  readonly sender: IpcSender;
32
32
  readonly spec: ChainSpec;
33
33
  private sessionFeatures;
34
- constructor(msgHandler: FuzzMessageHandler, sender: IpcSender, spec: ChainSpec);
34
+ static new(msgHandler: FuzzMessageHandler, sender: IpcSender, spec: ChainSpec): FuzzTarget;
35
+ private constructor();
35
36
  onSocketMessage(msg: Uint8Array): Promise<void>;
36
37
  private processAndRespond;
37
38
  onClose({ error }: {
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/fuzz-proto/v1/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAe,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EACL,YAAY,EAEZ,KAAK,UAAU,EACf,KAAK,QAAQ,EAKb,KAAK,QAAQ,EACd,MAAM,YAAY,CAAC;AAIpB;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEhD;;;OAGG;IACH,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAEvD;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC;IAE5E,gEAAgE;IAChE,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;CAC5D;AAED,qBAAa,UAAW,YAAW,UAAU;aAIzB,UAAU,EAAE,kBAAkB;aAC9B,MAAM,EAAE,SAAS;aACjB,IAAI,EAAE,SAAS;IALjC,OAAO,CAAC,eAAe,CAAK;gBAGV,UAAU,EAAE,kBAAkB,EAC9B,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS;IAG3B,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;YAiBvC,iBAAiB;IA2H/B,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE;QAAE,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,GAAG,IAAI;IAI3C,4DAA4D;IAC5D,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAGrC"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/fuzz-proto/v1/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAe,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EACL,YAAY,EAEZ,KAAK,UAAU,EACf,KAAK,QAAQ,EAKb,KAAK,QAAQ,EACd,MAAM,YAAY,CAAC;AAIpB;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEhD;;;OAGG;IACH,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAEvD;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC;IAE5E,gEAAgE;IAChE,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;CAC5D;AAED,qBAAa,UAAW,YAAW,UAAU;aAQzB,UAAU,EAAE,kBAAkB;aAC9B,MAAM,EAAE,SAAS;aACjB,IAAI,EAAE,SAAS;IATjC,OAAO,CAAC,eAAe,CAAK;IAE5B,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,kBAAkB,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS;IAI7E,OAAO;IAMD,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;YAiBvC,iBAAiB;IA2H/B,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE;QAAE,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,GAAG,IAAI;IAI3C,4DAA4D;IAC5D,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAGrC"}
@@ -8,6 +8,9 @@ export class FuzzTarget {
8
8
  sender;
9
9
  spec;
10
10
  sessionFeatures = 0;
11
+ static new(msgHandler, sender, spec) {
12
+ return new FuzzTarget(msgHandler, sender, spec);
13
+ }
11
14
  constructor(msgHandler, sender, spec) {
12
15
  this.msgHandler = msgHandler;
13
16
  this.sender = sender;
@@ -70,7 +70,7 @@ describe("FuzzV1Target Handler", () => {
70
70
  value: responsePeerInfo,
71
71
  };
72
72
  mockMessageHandler.getPeerInfo.mock.mockImplementation(async () => responsePeerInfo);
73
- const fuzzTarget = new FuzzTarget(mockMessageHandler, mockSender, spec);
73
+ const fuzzTarget = FuzzTarget.new(mockMessageHandler, mockSender, spec);
74
74
  const testMessage = encode(incomingMessage);
75
75
  await fuzzTarget.onSocketMessage(testMessage);
76
76
  // Verify handshake completion and feature negotiation
@@ -116,7 +116,7 @@ describe("FuzzV1Target Handler", () => {
116
116
  value: expectedStateRoot,
117
117
  };
118
118
  mockMessageHandler.initialize.mock.mockImplementation(async () => expectedStateRoot);
119
- const fuzzTarget = new FuzzTarget(mockMessageHandler, mockSender, spec);
119
+ const fuzzTarget = FuzzTarget.new(mockMessageHandler, mockSender, spec);
120
120
  await completeHandshake(mockMessageHandler, mockSender, fuzzTarget);
121
121
  mockSender._sentData = []; // Clear handshake response
122
122
  const testMessage = encode(incomingMessage);
@@ -144,7 +144,7 @@ describe("FuzzV1Target Handler", () => {
144
144
  value: expectedStateRoot,
145
145
  };
146
146
  mockMessageHandler.importBlock.mock.mockImplementation(async () => Result.ok(expectedStateRoot));
147
- const fuzzTarget = new FuzzTarget(mockMessageHandler, mockSender, spec);
147
+ const fuzzTarget = FuzzTarget.new(mockMessageHandler, mockSender, spec);
148
148
  await completeHandshake(mockMessageHandler, mockSender, fuzzTarget);
149
149
  mockSender._sentData = []; // Clear handshake response
150
150
  const testMessage = encode(incomingMessage);
@@ -169,7 +169,7 @@ describe("FuzzV1Target Handler", () => {
169
169
  value: expectedError,
170
170
  };
171
171
  mockMessageHandler.importBlock.mock.mockImplementation(async () => Result.error(expectedError, () => "Test: ImportBlock error"));
172
- const fuzzTarget = new FuzzTarget(mockMessageHandler, mockSender, spec);
172
+ const fuzzTarget = FuzzTarget.new(mockMessageHandler, mockSender, spec);
173
173
  await completeHandshake(mockMessageHandler, mockSender, fuzzTarget);
174
174
  mockSender._sentData = []; // Clear handshake response
175
175
  const testMessage = encode(incomingMessage);
@@ -205,7 +205,7 @@ describe("FuzzV1Target Handler", () => {
205
205
  value: keyValues,
206
206
  };
207
207
  mockMessageHandler.getSerializedState.mock.mockImplementation(async () => keyValues);
208
- const fuzzTarget = new FuzzTarget(mockMessageHandler, mockSender, spec);
208
+ const fuzzTarget = FuzzTarget.new(mockMessageHandler, mockSender, spec);
209
209
  await completeHandshake(mockMessageHandler, mockSender, fuzzTarget);
210
210
  mockSender._sentData = []; // Clear handshake response
211
211
  const testMessage = encode(incomingMessage);
@@ -227,7 +227,7 @@ describe("FuzzV1Target Handler", () => {
227
227
  type: MessageType.StateRoot,
228
228
  value: stateRoot,
229
229
  };
230
- const fuzzTarget = new FuzzTarget(mockMessageHandler, mockSender, spec);
230
+ const fuzzTarget = FuzzTarget.new(mockMessageHandler, mockSender, spec);
231
231
  await completeHandshake(mockMessageHandler, mockSender, fuzzTarget);
232
232
  mockSender._sentData = []; // Clear handshake response
233
233
  const testMessage = encode(incomingMessage);
@@ -248,7 +248,7 @@ describe("FuzzV1Target Handler", () => {
248
248
  type: MessageType.State,
249
249
  value: keyValues,
250
250
  };
251
- const fuzzTarget = new FuzzTarget(mockMessageHandler, mockSender, spec);
251
+ const fuzzTarget = FuzzTarget.new(mockMessageHandler, mockSender, spec);
252
252
  await completeHandshake(mockMessageHandler, mockSender, fuzzTarget);
253
253
  mockSender._sentData = []; // Clear handshake response
254
254
  const testMessage = encode(incomingMessage);
@@ -264,7 +264,7 @@ describe("FuzzV1Target Handler", () => {
264
264
  type: MessageType.Error,
265
265
  value: error,
266
266
  };
267
- const fuzzTarget = new FuzzTarget(mockMessageHandler, mockSender, spec);
267
+ const fuzzTarget = FuzzTarget.new(mockMessageHandler, mockSender, spec);
268
268
  await completeHandshake(mockMessageHandler, mockSender, fuzzTarget);
269
269
  mockSender._sentData = []; // Clear handshake response
270
270
  const testMessage = encode(incomingMessage);
@@ -277,7 +277,7 @@ describe("FuzzV1Target Handler", () => {
277
277
  it("should handle decoding error gracefully", async () => {
278
278
  const mockMessageHandler = new MockV1MessageHandler();
279
279
  const mockSender = new MockSender();
280
- const fuzzTarget = new FuzzTarget(mockMessageHandler, mockSender, spec);
280
+ const fuzzTarget = FuzzTarget.new(mockMessageHandler, mockSender, spec);
281
281
  // Create malformed message with valid length prefix but invalid data
282
282
  const malformedMessage = new Uint8Array(8);
283
283
  const dataView = new DataView(malformedMessage.buffer);
@@ -300,7 +300,7 @@ describe("FuzzV1Target Handler", () => {
300
300
  return Decoder.decodeObject(messageCodec, data, spec);
301
301
  }
302
302
  async function completeHandshake(mockMessageHandler, mockSender, fuzzTarget) {
303
- const target = fuzzTarget ?? new FuzzTarget(mockMessageHandler, mockSender, spec);
303
+ const target = fuzzTarget ?? FuzzTarget.new(mockMessageHandler, mockSender, spec);
304
304
  const inputPeerInfo = PeerInfo.create({
305
305
  fuzzVersion: tryAsU8(1),
306
306
  features: tryAsU32(Features.Ancestry),
@@ -2,9 +2,9 @@ import { type Segment, type SegmentIndex, type ServiceId } from "#@typeberry/blo
2
2
  import type { BytesBlob } from "#@typeberry/bytes";
3
3
  import type { PvmBackend } from "#@typeberry/config";
4
4
  import type { Blake2bHash } from "#@typeberry/hash";
5
- import { type MachineId, type MachineResult, type MemoryOperation, type NoMachineError, type PagesError, type PeekPokeError, type ProgramCounter, type RefineExternalities, SegmentExportError, type ZeroVoidError } from "#@typeberry/jam-host-calls";
6
- import type { U64 } from "#@typeberry/numbers";
7
- import { type HostCallMemory, type HostCallRegisters } from "#@typeberry/pvm-host-calls";
5
+ import { type MachineId, type MachineResult, type MemoryOperation, NoMachineError, type PagesError, type PeekPokeError, type ProgramCounter, type RefineExternalities, SegmentExportError, type ZeroVoidError } from "#@typeberry/jam-host-calls";
6
+ import { type U64 } from "#@typeberry/numbers";
7
+ import { type HostCallMemory, HostCallRegisters } from "#@typeberry/pvm-host-calls";
8
8
  import { type BigGas } from "#@typeberry/pvm-interface";
9
9
  import { type ProgramDecoderError } from "#@typeberry/pvm-interpreter";
10
10
  import type { State } from "#@typeberry/state";
@@ -41,14 +41,14 @@ export declare class RefineExternalitiesImpl implements RefineExternalities {
41
41
  static create(params: RefineExternalitiesParams): RefineExternalitiesImpl;
42
42
  private constructor();
43
43
  getExportedSegments(): readonly Segment[];
44
- machineExpunge(_machineIndex: MachineId): Promise<Result<ProgramCounter, NoMachineError>>;
44
+ machineExpunge(machineIndex: MachineId): Promise<Result<ProgramCounter, NoMachineError>>;
45
45
  machinePages(_machineIndex: MachineId, _pageStart: U64, _pageCount: U64, _requestType: MemoryOperation | null): Promise<Result<OK, PagesError>>;
46
46
  machineVoidPages(_machineIndex: MachineId, _pageStart: U64, _pageCount: U64): Promise<Result<OK, ZeroVoidError>>;
47
47
  machineZeroPages(_machineIndex: MachineId, _pageStart: U64, _pageCount: U64): Promise<Result<OK, ZeroVoidError>>;
48
48
  machinePeekFrom(_machineIndex: MachineId, _destinationStart: U64, _sourceStart: U64, _length: U64, _destination: HostCallMemory): Promise<Result<OK, PeekPokeError>>;
49
49
  machinePokeInto(_machineIndex: MachineId, _sourceStart: U64, _destinationStart: U64, _length: U64, _source: HostCallMemory): Promise<Result<OK, PeekPokeError>>;
50
50
  machineInit(code: BytesBlob, programCounter: ProgramCounter): Promise<Result<MachineId, ProgramDecoderError>>;
51
- machineInvoke(_machineIndex: MachineId, _gas: BigGas, _registers: HostCallRegisters): Promise<Result<MachineResult, NoMachineError>>;
51
+ machineInvoke(machineIndex: MachineId, gas: BigGas, registers: HostCallRegisters): Promise<Result<MachineResult, NoMachineError>>;
52
52
  exportSegment(segment: Segment): Result<SegmentIndex, SegmentExportError>;
53
53
  historicalLookup(serviceId: ServiceId | null, hash: Blake2bHash): Promise<BytesBlob | null>;
54
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"refine.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/in-core/externalities/refine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"refine.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/in-core/externalities/refine.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,14 @@
1
1
  import { MAX_NUMBER_OF_EXPORTS_WP, tryAsSegmentIndex, } from "#@typeberry/block";
2
2
  import { SortedArray } from "#@typeberry/collections";
3
- import { SegmentExportError, tryAsMachineId, } from "#@typeberry/jam-host-calls";
3
+ import { NoMachineError, SegmentExportError, tryAsMachineId, tryAsProgramCounter, } from "#@typeberry/jam-host-calls";
4
+ import { tryAsU64 } from "#@typeberry/numbers";
4
5
  import { Ordering } from "#@typeberry/ordering";
5
- import { PvmInstanceManager } from "#@typeberry/pvm-host-calls";
6
- import { tryAsGas } from "#@typeberry/pvm-interface";
6
+ import { HostCallRegisters, PvmInstanceManager } from "#@typeberry/pvm-host-calls";
7
+ import { Status, tryAsBigGas, tryAsGas } from "#@typeberry/pvm-interface";
7
8
  import { ProgramDecoder } from "#@typeberry/pvm-interpreter";
8
9
  import { Result } from "#@typeberry/utils";
10
+ /** Used when searching by MachineId only — the comparator ignores this field. */
11
+ const NULL_INTERPRETER = undefined;
9
12
  const machineComparator = (a, b) => {
10
13
  if (a[0] < b[0]) {
11
14
  return Ordering.Less;
@@ -40,8 +43,15 @@ export class RefineExternalitiesImpl {
40
43
  getExportedSegments() {
41
44
  return this.exportedSegments;
42
45
  }
43
- machineExpunge(_machineIndex) {
44
- throw new Error("Method not implemented.");
46
+ machineExpunge(machineIndex) {
47
+ // We just care about machineIndex
48
+ const entry = this.machines.findExact([machineIndex, NULL_INTERPRETER]);
49
+ if (entry === undefined) {
50
+ return Promise.resolve(Result.error(NoMachineError, () => `Machine not found (id: ${machineIndex})`));
51
+ }
52
+ const pc = tryAsProgramCounter(entry[1].getPC());
53
+ this.machines.removeOne(entry);
54
+ return Promise.resolve(Result.ok(pc));
45
55
  }
46
56
  machinePages(_machineIndex, _pageStart, _pageCount, _requestType) {
47
57
  throw new Error("Method not implemented.");
@@ -86,8 +96,33 @@ export class RefineExternalitiesImpl {
86
96
  this.machines.insert([machineId, innerPvm]);
87
97
  return Result.ok(machineId);
88
98
  }
89
- machineInvoke(_machineIndex, _gas, _registers) {
90
- throw new Error("Method not implemented.");
99
+ machineInvoke(machineIndex, gas, registers) {
100
+ const entry = this.machines.findExact([machineIndex, NULL_INTERPRETER]);
101
+ if (entry === undefined) {
102
+ return Promise.resolve(Result.error(NoMachineError, () => `Machine not found (id: ${machineIndex})`));
103
+ }
104
+ const innerPvm = entry[1];
105
+ // Prepare inner PVM
106
+ innerPvm.registers.setAllEncoded(registers.getEncoded());
107
+ innerPvm.gas.set(gas);
108
+ // Execute program
109
+ innerPvm.runProgram();
110
+ // Status
111
+ const status = innerPvm.getStatus();
112
+ const exitParam = innerPvm.getExitParam() ?? 0;
113
+ const remainingGas = tryAsBigGas(innerPvm.gas.get());
114
+ const outRegisters = HostCallRegisters.fromRaw(new Uint8Array(innerPvm.registers.getAllEncoded()));
115
+ let machineStatus;
116
+ if (status === Status.HOST) {
117
+ machineStatus = { status, hostCallIndex: tryAsU64(exitParam) };
118
+ }
119
+ else if (status === Status.FAULT) {
120
+ machineStatus = { status, address: tryAsU64(exitParam) };
121
+ }
122
+ else {
123
+ machineStatus = { status };
124
+ }
125
+ return Promise.resolve(Result.ok({ result: machineStatus, gas: remainingGas, registers: outRegisters }));
91
126
  }
92
127
  exportSegment(segment) {
93
128
  // https://graypaper.fluffylabs.dev/#/ab2cdbd/335d03335d03?v=0.7.2
@@ -7,6 +7,8 @@ import { PvmBackend, tinyChainSpec } from "#@typeberry/config";
7
7
  import { HASH_SIZE } from "#@typeberry/hash";
8
8
  import { SegmentExportError, tryAsMachineId, tryAsProgramCounter } from "#@typeberry/jam-host-calls";
9
9
  import { tryAsU32, tryAsU64 } from "#@typeberry/numbers";
10
+ import { HostCallRegisters } from "#@typeberry/pvm-host-calls";
11
+ import { Status, tryAsBigGas } from "#@typeberry/pvm-interface";
10
12
  import { InMemoryService, InMemoryState, PreimageItem, ServiceAccountInfo } from "#@typeberry/state";
11
13
  import { RefineExternalitiesImpl } from "./refine.js";
12
14
  const MINIMAL_PROGRAM = new Uint8Array([0, 1, 1, 0, 0x00]);
@@ -34,7 +36,7 @@ function createMockState(services) {
34
36
  preimages.set(hash, item);
35
37
  }
36
38
  const serviceId = tryAsServiceId(svc.id);
37
- serviceMap.set(serviceId, new InMemoryService(serviceId, {
39
+ serviceMap.set(serviceId, InMemoryService.new(serviceId, {
38
40
  info: ServiceAccountInfo.create({
39
41
  codeHash: Bytes.zero(HASH_SIZE).asOpaque(),
40
42
  balance: tryAsU64(1000000000n),
@@ -64,6 +66,9 @@ function createExt(overrides = {}) {
64
66
  ...overrides,
65
67
  });
66
68
  }
69
+ function emptyRegisters() {
70
+ return HostCallRegisters.empty();
71
+ }
67
72
  describe("RefineExternalitiesImpl", () => {
68
73
  describe("historicalLookup", () => {
69
74
  const PREIMAGE_HASH = "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
@@ -207,4 +212,117 @@ describe("RefineExternalitiesImpl", () => {
207
212
  assert.strictEqual(result.isOk, true);
208
213
  });
209
214
  });
215
+ describe("machineExpunge", () => {
216
+ it("should remove machine and return its program counter (0)", async () => {
217
+ const ext = createExt();
218
+ const code = BytesBlob.blobFrom(MINIMAL_PROGRAM);
219
+ const initResult = await ext.machineInit(code, tryAsProgramCounter(0));
220
+ assert.strictEqual(initResult.isOk, true);
221
+ const machineId = initResult.ok;
222
+ const result = await ext.machineExpunge(machineId);
223
+ assert.strictEqual(result.isOk, true);
224
+ // PC should be 0 since we initialized with PC=0
225
+ assert.strictEqual(result.ok, tryAsProgramCounter(0));
226
+ });
227
+ it("should remove machine and return its program counter (10)", async () => {
228
+ const ext = createExt();
229
+ const code = BytesBlob.blobFrom(MINIMAL_PROGRAM);
230
+ const initResult = await ext.machineInit(code, tryAsProgramCounter(10));
231
+ assert.strictEqual(initResult.isOk, true);
232
+ const machineId = initResult.ok;
233
+ const result = await ext.machineExpunge(machineId);
234
+ assert.strictEqual(result.isOk, true);
235
+ // PC should be 10 since we initialized with PC=10
236
+ assert.strictEqual(result.ok, tryAsProgramCounter(10));
237
+ });
238
+ it("should return NoMachineError for non-existent machine", async () => {
239
+ const ext = createExt();
240
+ const result = await ext.machineExpunge(tryAsMachineId(999));
241
+ assert.strictEqual(result.isError, true);
242
+ });
243
+ it("should not allow double expunge", async () => {
244
+ const ext = createExt();
245
+ const code = BytesBlob.blobFrom(MINIMAL_PROGRAM);
246
+ const initResult = await ext.machineInit(code, tryAsProgramCounter(0));
247
+ assert.strictEqual(initResult.isOk, true);
248
+ const machineId = initResult.ok;
249
+ const r1 = await ext.machineExpunge(machineId);
250
+ assert.strictEqual(r1.isOk, true);
251
+ const r2 = await ext.machineExpunge(machineId);
252
+ assert.strictEqual(r2.isError, true);
253
+ });
254
+ it("should remove exact machine from multiple and return its program counter (10)", async () => {
255
+ const ext = createExt();
256
+ const code = BytesBlob.blobFrom(MINIMAL_PROGRAM);
257
+ await ext.machineInit(code, tryAsProgramCounter(0));
258
+ const initResult = await ext.machineInit(code, tryAsProgramCounter(10));
259
+ await ext.machineInit(code, tryAsProgramCounter(20));
260
+ assert.strictEqual(initResult.isOk, true);
261
+ const machineId = initResult.ok;
262
+ const result = await ext.machineExpunge(machineId);
263
+ assert.strictEqual(result.isOk, true);
264
+ // PC should be 10 since we initialized with PC=10
265
+ assert.strictEqual(result.ok, tryAsProgramCounter(10));
266
+ });
267
+ });
268
+ describe("machineInvoke", () => {
269
+ it("should return NoMachineError for non-existent machine", async () => {
270
+ const ext = createExt();
271
+ const regs = emptyRegisters();
272
+ const result = await ext.machineInvoke(tryAsMachineId(999), tryAsBigGas(1000n), regs);
273
+ assert.strictEqual(result.isError, true);
274
+ });
275
+ it("should execute inner PVM and return PANIC for TRAP instruction", async () => {
276
+ const ext = createExt();
277
+ const code = BytesBlob.blobFrom(MINIMAL_PROGRAM);
278
+ const initResult = await ext.machineInit(code, tryAsProgramCounter(0));
279
+ assert.strictEqual(initResult.isOk, true);
280
+ const machineId = initResult.ok;
281
+ const regs = emptyRegisters();
282
+ const result = await ext.machineInvoke(machineId, tryAsBigGas(1000n), regs);
283
+ assert.strictEqual(result.isOk, true);
284
+ assert.strictEqual(result.ok.result.status, Status.PANIC);
285
+ });
286
+ it("should return OOG when gas is exhausted", async () => {
287
+ const ext = createExt();
288
+ const code = BytesBlob.blobFrom(MINIMAL_PROGRAM);
289
+ const initResult = await ext.machineInit(code, tryAsProgramCounter(0));
290
+ assert.strictEqual(initResult.isOk, true);
291
+ const machineId = initResult.ok;
292
+ const regs = emptyRegisters();
293
+ // With 0 gas, should immediately OOG
294
+ const result = await ext.machineInvoke(machineId, tryAsBigGas(0n), regs);
295
+ assert.strictEqual(result.isOk, true);
296
+ assert.strictEqual(result.ok.result.status, Status.OOG);
297
+ });
298
+ it("should pass registers to inner PVM and return them back", async () => {
299
+ const ext = createExt();
300
+ const code = BytesBlob.blobFrom(MINIMAL_PROGRAM);
301
+ const initResult = await ext.machineInit(code, tryAsProgramCounter(0));
302
+ assert.strictEqual(initResult.isOk, true);
303
+ const machineId = initResult.ok;
304
+ const regs = emptyRegisters();
305
+ regs.set(0, tryAsU64(0xdeadbeefn));
306
+ regs.set(5, tryAsU64(0xcafebaben));
307
+ const result = await ext.machineInvoke(machineId, tryAsBigGas(1000n), regs);
308
+ assert.strictEqual(result.isOk, true);
309
+ // Registers should be returned (TRAP doesn't modify registers)
310
+ assert.strictEqual(result.ok.registers.get(0), tryAsU64(0xdeadbeefn));
311
+ assert.strictEqual(result.ok.registers.get(5), tryAsU64(0xcafebaben));
312
+ });
313
+ it("should return remaining gas after execution", async () => {
314
+ const ext = createExt();
315
+ const code = BytesBlob.blobFrom(MINIMAL_PROGRAM);
316
+ const initResult = await ext.machineInit(code, tryAsProgramCounter(0));
317
+ assert.strictEqual(initResult.isOk, true);
318
+ const machineId = initResult.ok;
319
+ const regs = emptyRegisters();
320
+ const result = await ext.machineInvoke(machineId, tryAsBigGas(1000n), regs);
321
+ assert.strictEqual(result.isOk, true);
322
+ // TRAP costs 1 gas, so remaining should be 999
323
+ const remaining = Number(result.ok.gas);
324
+ assert.ok(remaining < 1000);
325
+ assert.ok(remaining >= 0);
326
+ });
327
+ });
210
328
  });
@@ -1,23 +1,18 @@
1
- import { type CoreIndex, type Segment, type SegmentIndex, type ServiceGas } from "#@typeberry/block";
1
+ import type { CoreIndex, Segment } from "#@typeberry/block";
2
2
  import { type WorkPackageHash } from "#@typeberry/block/refine-context.js";
3
3
  import type { WorkItemExtrinsic } from "#@typeberry/block/work-item.js";
4
4
  import type { WorkPackage } from "#@typeberry/block/work-package.js";
5
5
  import { WorkReport } from "#@typeberry/block/work-report.js";
6
- import { WorkExecResult, WorkResult } from "#@typeberry/block/work-result.js";
7
- import { type KnownSizeArray } from "#@typeberry/collections";
8
6
  import type { ChainSpec, PvmBackend } from "#@typeberry/config";
9
7
  import type { StatesDb } from "#@typeberry/database";
10
- import { type ReturnValue } from "#@typeberry/executor";
11
- import { type Blake2b, type WithHash } from "#@typeberry/hash";
8
+ import type { Blake2b, WithHash } from "#@typeberry/hash";
12
9
  import { Result } from "#@typeberry/utils";
10
+ import { type ImportedSegment, type PerWorkItem } from "./refine.js";
11
+ export type { ImportedSegment, PerWorkItem, RefineItemResult } from "./refine.js";
13
12
  export type RefineResult = {
14
13
  report: WorkReport;
15
14
  exports: PerWorkItem<Segment[]>;
16
15
  };
17
- export type RefineItemResult = {
18
- result: WorkResult;
19
- exports: readonly Segment[];
20
- };
21
16
  export declare enum RefineError {
22
17
  /** State for context anchor block or lookup anchor is not found in the DB. */
23
18
  StateMissing = 0,
@@ -28,17 +23,13 @@ export declare enum RefineError {
28
23
  /** Authorization error. */
29
24
  AuthorizationError = 3
30
25
  }
31
- export type PerWorkItem<T> = KnownSizeArray<T, "for each work item">;
32
- export type ImportedSegment = {
33
- index: SegmentIndex;
34
- data: Segment;
35
- };
36
26
  export declare class InCore {
37
27
  readonly chainSpec: ChainSpec;
38
28
  private readonly states;
39
- private readonly pvmBackend;
40
- private readonly blake2b;
41
- constructor(chainSpec: ChainSpec, states: StatesDb, pvmBackend: PvmBackend, blake2b: Blake2b);
29
+ private readonly isAuthorized;
30
+ private readonly refineItem;
31
+ static new(chainSpec: ChainSpec, states: StatesDb, pvmBackend: PvmBackend, blake2b: Blake2b): InCore;
32
+ private constructor();
42
33
  /**
43
34
  * Work-report computation function.
44
35
  *
@@ -50,11 +41,6 @@ export declare class InCore {
50
41
  * https://graypaper.fluffylabs.dev/#/ab2cdbd/1b7f021b7f02?v=0.7.2
51
42
  */
52
43
  refine(workPackageAndHash: WithHash<WorkPackageHash, WorkPackage>, core: CoreIndex, imports: PerWorkItem<ImportedSegment[]>, extrinsics: PerWorkItem<WorkItemExtrinsic[]>): Promise<Result<RefineResult, RefineError>>;
53
- private amalgamateWorkReport;
54
- private authorizePackage;
55
- private refineItem;
56
- extractWorkResult(execResult: ReturnValue<ServiceGas>): WorkExecResult;
57
- private getServiceCode;
58
- private createRefineExternalities;
44
+ private static amalgamateWorkReport;
59
45
  }
60
46
  //# sourceMappingURL=in-core.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"in-core.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/in-core/in-core.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,UAAU,EAIhB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAGL,KAAK,eAAe,EAErB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAY,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAmB,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAsC,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAGjH,OAAO,EAA+B,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAA+D,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACpH,OAAO,EAAE,KAAK,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAKzE,OAAO,EAA4B,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAGpE,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,SAAS,OAAO,EAAE,CAAC;CAC7B,CAAC;AAEF,oBAAY,WAAW;IACrB,8EAA8E;IAC9E,YAAY,IAAI;IAChB,qFAAqF;IACrF,iBAAiB,IAAI;IACrB,wEAAwE;IACxE,uBAAuB,IAAI;IAC3B,2BAA2B;IAC3B,kBAAkB,IAAI;CACvB;AAqBD,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC;AAErE,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAgBF,qBAAa,MAAM;aAEC,SAAS,EAAE,SAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAHR,SAAS,EAAE,SAAS,EACnB,MAAM,EAAE,QAAQ,EAChB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,OAAO;IAGnC;;;;;;;;;OASG;IACG,MAAM,CACV,kBAAkB,EAAE,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,EAC1D,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,WAAW,CAAC,eAAe,EAAE,CAAC,EACvC,UAAU,EAAE,WAAW,CAAC,iBAAiB,EAAE,CAAC,GAC3C,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAgF7C,OAAO,CAAC,oBAAoB;YAuDd,gBAAgB;YAkBhB,UAAU;IAoGxB,iBAAiB,CAAC,UAAU,EAAE,WAAW,CAAC,UAAU,CAAC;IAiBrD,OAAO,CAAC,cAAc;IAyCtB,OAAO,CAAC,yBAAyB;CAsBlC"}
1
+ {"version":3,"file":"in-core.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/in-core/in-core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAsB,KAAK,eAAe,EAAmB,MAAM,oCAAoC,CAAC;AAC/G,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAmB,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAG9E,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAIzD,OAAO,EAAe,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,WAAW,EAAiC,MAAM,aAAa,CAAC;AAEpG,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAElF,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;CACjC,CAAC;AAEF,oBAAY,WAAW;IACrB,8EAA8E;IAC9E,YAAY,IAAI;IAChB,qFAAqF;IACrF,iBAAiB,IAAI;IACrB,wEAAwE;IACxE,uBAAuB,IAAI;IAC3B,2BAA2B;IAC3B,kBAAkB,IAAI;CACvB;AAID,qBAAa,MAAM;aASC,SAAS,EAAE,SAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM;IATzB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO;IAI3F,OAAO;IAUP;;;;;;;;;OASG;IACG,MAAM,CACV,kBAAkB,EAAE,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,EAC1D,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,WAAW,CAAC,eAAe,EAAE,CAAC,EACvC,UAAU,EAAE,WAAW,CAAC,iBAAiB,EAAE,CAAC,GAC3C,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAwF7C,OAAO,CAAC,MAAM,CAAC,oBAAoB;CAsDpC"}