@typeberry/lib 0.5.10 → 0.5.11-10b197e
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.
- package/README.md +2 -2
- package/bin/lib/examples/pvm-usage.test.js +2 -2
- package/package.json +1 -1
- package/packages/core/codec/descriptor.js +1 -1
- package/packages/core/codec/descriptors.js +7 -4
- package/packages/core/codec/encoder.d.ts +1 -1
- package/packages/core/codec/encoder.d.ts.map +1 -1
- package/packages/core/codec/encoder.js +3 -2
- package/packages/core/codec/index.test.js +1 -1
- package/packages/core/codec/skip.d.ts +2 -1
- package/packages/core/codec/skip.d.ts.map +1 -1
- package/packages/core/codec/skip.js +3 -0
- package/packages/core/codec/view.js +2 -2
- package/packages/core/collections/multi-map.d.ts +2 -1
- package/packages/core/collections/multi-map.d.ts.map +1 -1
- package/packages/core/collections/multi-map.js +3 -0
- package/packages/core/collections/multi-map.test.js +2 -2
- package/packages/core/concurrent/parent.js +4 -1
- package/packages/core/crypto/ed25519.d.ts +2 -5
- package/packages/core/crypto/ed25519.d.ts.map +1 -1
- package/packages/core/crypto/ed25519.js +4 -1
- package/packages/core/hash/hash.d.ts +4 -2
- package/packages/core/hash/hash.d.ts.map +1 -1
- package/packages/core/hash/hash.js +6 -1
- package/packages/core/networking/quic-network.d.ts +3 -2
- package/packages/core/networking/quic-network.d.ts.map +1 -1
- package/packages/core/networking/quic-network.js +3 -0
- package/packages/core/networking/quic-peer.d.ts +2 -1
- package/packages/core/networking/quic-peer.d.ts.map +1 -1
- package/packages/core/networking/quic-peer.js +5 -2
- package/packages/core/networking/quic-stream.d.ts +2 -1
- package/packages/core/networking/quic-stream.d.ts.map +1 -1
- package/packages/core/networking/quic-stream.js +3 -0
- package/packages/core/networking/setup.js +2 -2
- package/packages/core/pvm-host-calls/bin.js +2 -2
- package/packages/core/pvm-host-calls/ecalli-trace-logger.d.ts +5 -0
- package/packages/core/pvm-host-calls/ecalli-trace-logger.d.ts.map +1 -1
- package/packages/core/pvm-host-calls/ecalli-trace-logger.js +8 -1
- package/packages/core/pvm-host-calls/ecalli-trace-logger.test.js +1 -1
- package/packages/core/pvm-host-calls/host-call-memory.d.ts +2 -1
- package/packages/core/pvm-host-calls/host-call-memory.d.ts.map +1 -1
- package/packages/core/pvm-host-calls/host-call-memory.js +3 -0
- package/packages/core/pvm-host-calls/host-call-memory.test.js +1 -1
- package/packages/core/pvm-host-calls/host-call-registers.d.ts +5 -1
- package/packages/core/pvm-host-calls/host-call-registers.d.ts.map +1 -1
- package/packages/core/pvm-host-calls/host-call-registers.js +11 -1
- package/packages/core/pvm-host-calls/host-call-registers.test.js +2 -2
- package/packages/core/pvm-host-calls/host-calls-executor.d.ts +2 -1
- package/packages/core/pvm-host-calls/host-calls-executor.d.ts.map +1 -1
- package/packages/core/pvm-host-calls/host-calls-executor.js +5 -2
- package/packages/core/pvm-host-calls/host-calls.d.ts +4 -2
- package/packages/core/pvm-host-calls/host-calls.d.ts.map +1 -1
- package/packages/core/pvm-host-calls/host-calls.js +9 -4
- package/packages/core/pvm-host-calls/pvm-instance-manager.js +1 -1
- package/packages/core/pvm-interface/pvm.d.ts +2 -0
- package/packages/core/pvm-interface/pvm.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/args-decoder/args-decoder.js +1 -1
- package/packages/core/pvm-interpreter/args-decoder/args-decoder.test.js +3 -3
- package/packages/core/pvm-interpreter/args-decoder/args-decoding-results.js +11 -11
- package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.d.ts +2 -1
- package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.js +3 -0
- package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.test.js +2 -2
- package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.d.ts +2 -1
- package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.js +3 -0
- package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.test.js +26 -26
- package/packages/core/pvm-interpreter/basic-blocks/basic-blocks.test.js +8 -8
- package/packages/core/pvm-interpreter/bin.js +1 -1
- package/packages/core/pvm-interpreter/debugger-adapter.d.ts +2 -1
- package/packages/core/pvm-interpreter/debugger-adapter.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/debugger-adapter.js +6 -3
- package/packages/core/pvm-interpreter/gas.js +4 -1
- package/packages/core/pvm-interpreter/interpreter.d.ts +2 -1
- package/packages/core/pvm-interpreter/interpreter.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/interpreter.js +19 -16
- package/packages/core/pvm-interpreter/memory/memory-builder.js +2 -2
- package/packages/core/pvm-interpreter/memory/memory-builder.test.js +7 -7
- package/packages/core/pvm-interpreter/memory/memory.d.ts +2 -1
- package/packages/core/pvm-interpreter/memory/memory.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/memory/memory.js +4 -1
- package/packages/core/pvm-interpreter/memory/memory.test.js +31 -31
- package/packages/core/pvm-interpreter/memory/pages/readable-page.d.ts +2 -1
- package/packages/core/pvm-interpreter/memory/pages/readable-page.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/memory/pages/readable-page.js +3 -0
- package/packages/core/pvm-interpreter/memory/pages/readable-page.test.js +3 -3
- package/packages/core/pvm-interpreter/memory/pages/writeable-page.d.ts +2 -1
- package/packages/core/pvm-interpreter/memory/pages/writeable-page.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/memory/pages/writeable-page.js +3 -0
- package/packages/core/pvm-interpreter/memory/pages/writeable-page.test.js +4 -4
- package/packages/core/pvm-interpreter/ops/bit-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/bit-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/bit-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/bit-ops.test.js +3 -3
- package/packages/core/pvm-interpreter/ops/bit-rotation-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/bit-rotation-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/bit-rotation-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/bit-rotation-ops.test.js +5 -5
- package/packages/core/pvm-interpreter/ops/boolean-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/boolean-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/boolean-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/boolean-ops.test.js +3 -3
- package/packages/core/pvm-interpreter/ops/branch-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/branch-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/branch-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/branch-ops.test.js +4 -4
- package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.test.js +5 -5
- package/packages/core/pvm-interpreter/ops/host-call-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/host-call-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/host-call-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/host-call-ops.test.js +2 -2
- package/packages/core/pvm-interpreter/ops/load-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/load-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/load-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/load-ops.test.js +10 -10
- package/packages/core/pvm-interpreter/ops/math-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/math-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/math-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/math-ops.test.js +3 -3
- package/packages/core/pvm-interpreter/ops/memory-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/memory-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/memory-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/memory-ops.test.js +3 -3
- package/packages/core/pvm-interpreter/ops/move-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/move-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/move-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/move-ops.test.js +3 -3
- package/packages/core/pvm-interpreter/ops/no-args-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/no-args-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/no-args-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/no-args-ops.test.js +2 -2
- package/packages/core/pvm-interpreter/ops/shift-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/shift-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/shift-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/shift-ops.test.js +3 -3
- package/packages/core/pvm-interpreter/ops/store-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/store-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/store-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/store-ops.test.js +7 -7
- package/packages/core/pvm-interpreter/ops-dispatchers/no-args-dispatcher.test.js +1 -1
- package/packages/core/pvm-interpreter/ops-dispatchers/one-imm-dispatcher.test.js +4 -4
- package/packages/core/pvm-interpreter/ops-dispatchers/one-offset-dispatcher.test.js +2 -2
- package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-ext-imm-dispatcher.test.js +4 -4
- package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-imm-dispatcher.test.js +7 -7
- package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-imm-one-offset-dispatcher.test.js +10 -10
- package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-two-imms-dispatcher.test.js +5 -5
- package/packages/core/pvm-interpreter/ops-dispatchers/three-regs-dispatcher.test.js +7 -7
- package/packages/core/pvm-interpreter/ops-dispatchers/two-imms-dispatcher.test.js +5 -5
- package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-dispatcher.test.js +6 -6
- package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-one-imm-dispatcher.test.js +11 -11
- package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-one-offset-dispatcher.test.js +2 -2
- package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-two-imms-dispatcher.test.js +14 -14
- package/packages/core/pvm-interpreter/program-decoder/jump-table.d.ts +5 -2
- package/packages/core/pvm-interpreter/program-decoder/jump-table.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/program-decoder/jump-table.js +9 -4
- package/packages/core/pvm-interpreter/program-decoder/jump-table.test.js +6 -6
- package/packages/core/pvm-interpreter/program-decoder/mask.d.ts +2 -1
- package/packages/core/pvm-interpreter/program-decoder/mask.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/program-decoder/mask.js +3 -0
- package/packages/core/pvm-interpreter/program-decoder/mask.test.js +10 -10
- package/packages/core/pvm-interpreter/program-decoder/program-decoder.d.ts +2 -1
- package/packages/core/pvm-interpreter/program-decoder/program-decoder.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/program-decoder/program-decoder.js +6 -3
- package/packages/core/pvm-interpreter/program-decoder/program-decoder.test.js +5 -5
- package/packages/core/pvm-interpreter/program.js +3 -3
- package/packages/core/pvm-interpreter/registers.d.ts +5 -2
- package/packages/core/pvm-interpreter/registers.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/registers.js +10 -6
- package/packages/core/pvm-interpreter/registers.test.js +10 -10
- package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.d.ts +6 -3
- package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.js +11 -2
- package/packages/core/pvm-interpreter-ananas/index.d.ts +6 -3
- package/packages/core/pvm-interpreter-ananas/index.d.ts.map +1 -1
- package/packages/core/pvm-interpreter-ananas/index.js +12 -3
- package/packages/core/trie/nodes.d.ts +7 -2
- package/packages/core/trie/nodes.d.ts.map +1 -1
- package/packages/core/trie/nodes.js +20 -11
- package/packages/core/trie/nodesDb.d.ts +3 -1
- package/packages/core/trie/nodesDb.d.ts.map +1 -1
- package/packages/core/trie/nodesDb.js +6 -0
- package/packages/core/trie/trie.js +2 -2
- package/packages/extensions/ipc/index.js +5 -2
- package/packages/extensions/ipc/jamnp/handler.d.ts +4 -2
- package/packages/extensions/ipc/jamnp/handler.d.ts.map +1 -1
- package/packages/extensions/ipc/jamnp/handler.js +9 -3
- package/packages/extensions/ipc/jamnp/server.js +3 -3
- package/packages/extensions/ipc/server.d.ts +2 -1
- package/packages/extensions/ipc/server.d.ts.map +1 -1
- package/packages/extensions/ipc/server.js +4 -1
- package/packages/jam/block/header.js +1 -1
- package/packages/jam/block/work-package.d.ts +7 -7
- package/packages/jam/block/work-package.d.ts.map +1 -1
- package/packages/jam/block/work-package.js +12 -12
- package/packages/jam/config/chain-spec.d.ts +2 -1
- package/packages/jam/config/chain-spec.d.ts.map +1 -1
- package/packages/jam/config/chain-spec.js +5 -2
- package/packages/jam/config/network.d.ts +2 -7
- package/packages/jam/config/network.d.ts.map +1 -1
- package/packages/jam/config/network.js +3 -0
- package/packages/jam/config-node/jip-chain-spec.js +1 -1
- package/packages/jam/database/blocks.test.js +1 -1
- package/packages/jam/database/states.d.ts +2 -1
- package/packages/jam/database/states.d.ts.map +1 -1
- package/packages/jam/database/states.js +3 -0
- package/packages/jam/database/states.test.js +1 -1
- package/packages/jam/database-lmdb/blocks.d.ts +2 -1
- package/packages/jam/database-lmdb/blocks.d.ts.map +1 -1
- package/packages/jam/database-lmdb/blocks.js +3 -0
- package/packages/jam/database-lmdb/root.d.ts +2 -1
- package/packages/jam/database-lmdb/root.d.ts.map +1 -1
- package/packages/jam/database-lmdb/root.js +3 -0
- package/packages/jam/database-lmdb/states.d.ts +2 -1
- package/packages/jam/database-lmdb/states.d.ts.map +1 -1
- package/packages/jam/database-lmdb/states.js +3 -0
- package/packages/jam/database-lmdb/states.test.js +9 -9
- package/packages/jam/executor/index.d.ts +1 -1
- package/packages/jam/executor/index.d.ts.map +1 -1
- package/packages/jam/executor/index.js +1 -1
- package/packages/jam/executor/pvm-executor.d.ts +9 -2
- package/packages/jam/executor/pvm-executor.d.ts.map +1 -1
- package/packages/jam/executor/pvm-executor.js +36 -21
- package/packages/jam/fuzz-proto/v1/handler.d.ts +2 -1
- package/packages/jam/fuzz-proto/v1/handler.d.ts.map +1 -1
- package/packages/jam/fuzz-proto/v1/handler.js +3 -0
- package/packages/jam/fuzz-proto/v1/handler.test.js +10 -10
- package/packages/jam/in-core/externalities/refine.d.ts +18 -8
- package/packages/jam/in-core/externalities/refine.d.ts.map +1 -1
- package/packages/jam/in-core/externalities/refine.js +86 -7
- package/packages/jam/in-core/externalities/refine.test.js +168 -3
- package/packages/jam/in-core/in-core.d.ts +9 -23
- package/packages/jam/in-core/in-core.d.ts.map +1 -1
- package/packages/jam/in-core/in-core.js +19 -186
- package/packages/jam/in-core/in-core.test.js +52 -20
- package/packages/jam/in-core/is-authorized.d.ts +33 -0
- package/packages/jam/in-core/is-authorized.d.ts.map +1 -0
- package/packages/jam/in-core/is-authorized.js +72 -0
- package/packages/jam/in-core/is-authorized.test.d.ts +2 -0
- package/packages/jam/in-core/is-authorized.test.d.ts.map +1 -0
- package/packages/jam/in-core/is-authorized.test.js +125 -0
- package/packages/jam/in-core/refine.d.ts +34 -0
- package/packages/jam/in-core/refine.d.ts.map +1 -0
- package/packages/jam/in-core/refine.js +176 -0
- package/packages/jam/in-core/refine.test.d.ts +2 -0
- package/packages/jam/in-core/refine.test.d.ts.map +1 -0
- package/packages/jam/in-core/refine.test.js +6 -0
- package/packages/jam/jam-host-calls/accumulate/assign.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/assign.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/assign.js +3 -0
- package/packages/jam/jam-host-calls/accumulate/assign.test.js +8 -9
- package/packages/jam/jam-host-calls/accumulate/bless.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/bless.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/bless.js +12 -9
- package/packages/jam/jam-host-calls/accumulate/bless.test.js +11 -12
- package/packages/jam/jam-host-calls/accumulate/checkpoint.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/checkpoint.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/checkpoint.js +4 -1
- package/packages/jam/jam-host-calls/accumulate/checkpoint.test.js +2 -3
- package/packages/jam/jam-host-calls/accumulate/designate.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/designate.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/designate.js +3 -0
- package/packages/jam/jam-host-calls/accumulate/designate.test.js +5 -6
- package/packages/jam/jam-host-calls/accumulate/eject.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/eject.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/eject.js +3 -0
- package/packages/jam/jam-host-calls/accumulate/eject.test.js +8 -9
- package/packages/jam/jam-host-calls/accumulate/forget.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/forget.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/forget.js +3 -0
- package/packages/jam/jam-host-calls/accumulate/forget.test.js +5 -6
- package/packages/jam/jam-host-calls/accumulate/new.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/new.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/new.js +3 -0
- package/packages/jam/jam-host-calls/accumulate/new.test.js +9 -10
- package/packages/jam/jam-host-calls/accumulate/provide.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/provide.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/provide.js +3 -0
- package/packages/jam/jam-host-calls/accumulate/provide.test.js +8 -9
- package/packages/jam/jam-host-calls/accumulate/query.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/query.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/query.js +3 -0
- package/packages/jam/jam-host-calls/accumulate/query.test.js +8 -9
- package/packages/jam/jam-host-calls/accumulate/solicit.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/solicit.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/solicit.js +3 -0
- package/packages/jam/jam-host-calls/accumulate/solicit.test.js +7 -8
- package/packages/jam/jam-host-calls/accumulate/transfer.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/transfer.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/transfer.js +3 -0
- package/packages/jam/jam-host-calls/accumulate/transfer.test.js +9 -10
- package/packages/jam/jam-host-calls/accumulate/upgrade.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/upgrade.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/upgrade.js +3 -0
- package/packages/jam/jam-host-calls/accumulate/upgrade.test.js +4 -5
- package/packages/jam/jam-host-calls/accumulate/yield.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/yield.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/yield.js +3 -0
- package/packages/jam/jam-host-calls/accumulate/yield.test.js +4 -5
- package/packages/jam/jam-host-calls/externalities/partial-state.d.ts +1 -1
- package/packages/jam/jam-host-calls/externalities/refine-externalities.d.ts +1 -1
- package/packages/jam/jam-host-calls/externalities/refine-externalities.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/externalities/refine-externalities.test.js +9 -9
- package/packages/jam/jam-host-calls/externalities/state-update.d.ts +2 -3
- package/packages/jam/jam-host-calls/externalities/state-update.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/externalities/state-update.js +5 -2
- package/packages/jam/jam-host-calls/externalities/test-accounts.js +2 -2
- package/packages/jam/jam-host-calls/general/fetch.d.ts +166 -104
- package/packages/jam/jam-host-calls/general/fetch.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/general/fetch.js +120 -23
- package/packages/jam/jam-host-calls/general/fetch.test.js +125 -92
- package/packages/jam/jam-host-calls/general/gas.d.ts +2 -1
- package/packages/jam/jam-host-calls/general/gas.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/general/gas.js +3 -0
- package/packages/jam/jam-host-calls/general/gas.test.js +4 -5
- package/packages/jam/jam-host-calls/general/info.d.ts +2 -1
- package/packages/jam/jam-host-calls/general/info.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/general/info.js +3 -0
- package/packages/jam/jam-host-calls/general/info.test.js +6 -7
- package/packages/jam/jam-host-calls/general/log.d.ts +2 -1
- package/packages/jam/jam-host-calls/general/log.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/general/log.js +3 -0
- package/packages/jam/jam-host-calls/general/lookup.d.ts +2 -1
- package/packages/jam/jam-host-calls/general/lookup.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/general/lookup.js +3 -0
- package/packages/jam/jam-host-calls/general/lookup.test.js +8 -9
- package/packages/jam/jam-host-calls/general/read.d.ts +2 -1
- package/packages/jam/jam-host-calls/general/read.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/general/read.js +3 -0
- package/packages/jam/jam-host-calls/general/read.test.js +11 -12
- package/packages/jam/jam-host-calls/general/write.d.ts +2 -1
- package/packages/jam/jam-host-calls/general/write.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/general/write.js +3 -0
- package/packages/jam/jam-host-calls/general/write.test.js +10 -11
- package/packages/jam/jam-host-calls/refine/export.d.ts +2 -1
- package/packages/jam/jam-host-calls/refine/export.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/refine/export.js +3 -0
- package/packages/jam/jam-host-calls/refine/export.test.js +6 -7
- package/packages/jam/jam-host-calls/refine/expunge.d.ts +2 -1
- package/packages/jam/jam-host-calls/refine/expunge.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/refine/expunge.js +3 -0
- package/packages/jam/jam-host-calls/refine/expunge.test.js +3 -4
- package/packages/jam/jam-host-calls/refine/historical-lookup.d.ts +2 -1
- package/packages/jam/jam-host-calls/refine/historical-lookup.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/refine/historical-lookup.js +3 -0
- package/packages/jam/jam-host-calls/refine/historical-lookup.test.js +11 -12
- package/packages/jam/jam-host-calls/refine/invoke.d.ts +2 -1
- package/packages/jam/jam-host-calls/refine/invoke.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/refine/invoke.js +4 -1
- package/packages/jam/jam-host-calls/refine/invoke.test.js +10 -11
- package/packages/jam/jam-host-calls/refine/machine.d.ts +2 -1
- package/packages/jam/jam-host-calls/refine/machine.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/refine/machine.js +3 -0
- package/packages/jam/jam-host-calls/refine/machine.test.js +6 -7
- package/packages/jam/jam-host-calls/refine/pages.d.ts +2 -1
- package/packages/jam/jam-host-calls/refine/pages.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/refine/pages.js +3 -0
- package/packages/jam/jam-host-calls/refine/pages.test.js +3 -4
- package/packages/jam/jam-host-calls/refine/peek.d.ts +2 -1
- package/packages/jam/jam-host-calls/refine/peek.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/refine/peek.js +3 -0
- package/packages/jam/jam-host-calls/refine/peek.test.js +3 -4
- package/packages/jam/jam-host-calls/refine/poke.d.ts +2 -1
- package/packages/jam/jam-host-calls/refine/poke.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/refine/poke.js +3 -0
- package/packages/jam/jam-host-calls/refine/poke.test.js +3 -4
- package/packages/jam/jamnp-s/network.js +1 -1
- package/packages/jam/jamnp-s/peers.d.ts +2 -1
- package/packages/jam/jamnp-s/peers.d.ts.map +1 -1
- package/packages/jam/jamnp-s/peers.js +3 -0
- package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts +4 -2
- package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-128-block-request.js +6 -0
- package/packages/jam/jamnp-s/protocol/ce-128-block-request.test.js +2 -2
- package/packages/jam/jamnp-s/protocol/ce-129-state-request.d.ts +4 -2
- package/packages/jam/jamnp-s/protocol/ce-129-state-request.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-129-state-request.js +6 -0
- package/packages/jam/jamnp-s/protocol/ce-129-state-request.test.js +4 -4
- package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts +4 -2
- package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.js +6 -0
- package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.test.js +2 -2
- package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts +6 -3
- package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.js +7 -0
- package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.test.js +2 -2
- package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.d.ts +5 -2
- package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.js +7 -0
- package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.test.js +2 -2
- package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts +4 -2
- package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.js +6 -0
- package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.test.js +2 -2
- package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts +2 -1
- package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/up-0-block-announcement.js +3 -0
- package/packages/jam/jamnp-s/stream-manager.d.ts +2 -1
- package/packages/jam/jamnp-s/stream-manager.d.ts.map +1 -1
- package/packages/jam/jamnp-s/stream-manager.js +4 -1
- package/packages/jam/jamnp-s/tasks/sync.js +4 -4
- package/packages/jam/jamnp-s/tasks/sync.test.js +4 -4
- package/packages/jam/jamnp-s/tasks/ticket-distribution.js +2 -2
- package/packages/jam/jamnp-s/tasks/ticket-distribution.test.js +1 -1
- package/packages/jam/node/common.d.ts.map +1 -1
- package/packages/jam/node/common.js +3 -3
- package/packages/jam/rpc-client/index.d.ts +4 -2
- package/packages/jam/rpc-client/index.d.ts.map +1 -1
- package/packages/jam/rpc-client/index.js +7 -1
- package/packages/jam/state/in-memory-state-view.d.ts +2 -1
- package/packages/jam/state/in-memory-state-view.d.ts.map +1 -1
- package/packages/jam/state/in-memory-state-view.js +3 -0
- package/packages/jam/state/in-memory-state.d.ts +16 -21
- package/packages/jam/state/in-memory-state.d.ts.map +1 -1
- package/packages/jam/state/in-memory-state.js +10 -6
- package/packages/jam/state/in-memory-state.test.js +2 -2
- package/packages/jam/state/service.d.ts +2 -6
- package/packages/jam/state/service.d.ts.map +1 -1
- package/packages/jam/state/service.js +3 -0
- package/packages/jam/state/test.utils.js +3 -3
- package/packages/jam/state-json/accounts.js +5 -5
- package/packages/jam/state-merkleization/in-memory-state-codec.d.ts +3 -34
- package/packages/jam/state-merkleization/in-memory-state-codec.d.ts.map +1 -1
- package/packages/jam/state-merkleization/in-memory-state-codec.js +1 -1
- package/packages/jam/state-merkleization/serialized-state-view.d.ts +8 -3
- package/packages/jam/state-merkleization/serialized-state-view.d.ts.map +1 -1
- package/packages/jam/state-merkleization/serialized-state-view.js +6 -3
- package/packages/jam/state-merkleization/serialized-state.d.ts +2 -3
- package/packages/jam/state-merkleization/serialized-state.d.ts.map +1 -1
- package/packages/jam/state-merkleization/serialized-state.js +10 -2
- package/packages/jam/state-merkleization/serialized-state.test.js +1 -1
- package/packages/jam/transition/accumulate/accumulate.d.ts.map +1 -1
- package/packages/jam/transition/accumulate/accumulate.js +20 -8
- package/packages/jam/transition/accumulate/accumulate.test.js +1 -1
- package/packages/jam/transition/accumulate/accumulation-result-merge-utils.js +48 -39
- package/packages/jam/transition/block-verifier.d.ts +2 -1
- package/packages/jam/transition/block-verifier.d.ts.map +1 -1
- package/packages/jam/transition/block-verifier.js +3 -0
- package/packages/jam/transition/block-verifier.test.js +8 -8
- package/packages/jam/transition/chain-stf.d.ts +12 -4
- package/packages/jam/transition/chain-stf.d.ts.map +1 -1
- package/packages/jam/transition/chain-stf.js +7 -3
- package/packages/jam/transition/externalities/accumulate-externalities.d.ts +22 -8
- package/packages/jam/transition/externalities/accumulate-externalities.d.ts.map +1 -1
- package/packages/jam/transition/externalities/accumulate-externalities.js +49 -29
- package/packages/jam/transition/externalities/accumulate-externalities.test.js +661 -101
- package/packages/jam/transition/externalities/accumulate-fetch-externalities.d.ts +19 -0
- package/packages/jam/transition/externalities/accumulate-fetch-externalities.d.ts.map +1 -0
- package/packages/jam/transition/externalities/accumulate-fetch-externalities.js +45 -0
- package/packages/jam/transition/externalities/accumulate-fetch-externalities.test.d.ts +2 -0
- package/packages/jam/transition/externalities/accumulate-fetch-externalities.test.d.ts.map +1 -0
- package/packages/jam/transition/externalities/accumulate-fetch-externalities.test.js +192 -0
- package/packages/jam/transition/externalities/fetch-externalities.d.ts +3 -39
- package/packages/jam/transition/externalities/fetch-externalities.d.ts.map +1 -1
- package/packages/jam/transition/externalities/fetch-externalities.js +2 -88
- package/packages/jam/transition/externalities/index.d.ts +3 -0
- package/packages/jam/transition/externalities/index.d.ts.map +1 -1
- package/packages/jam/transition/externalities/index.js +3 -0
- package/packages/jam/transition/externalities/is-authorized-fetch-externalities.d.ts +22 -0
- package/packages/jam/transition/externalities/is-authorized-fetch-externalities.d.ts.map +1 -0
- package/packages/jam/transition/externalities/is-authorized-fetch-externalities.js +41 -0
- package/packages/jam/transition/externalities/refine-fetch-externalities.d.ts +24 -0
- package/packages/jam/transition/externalities/refine-fetch-externalities.d.ts.map +1 -0
- package/packages/jam/transition/externalities/refine-fetch-externalities.js +59 -0
- package/packages/jam/transition/externalities/refine-fetch-externalities.test.d.ts +2 -0
- package/packages/jam/transition/externalities/refine-fetch-externalities.test.d.ts.map +1 -0
- package/packages/jam/transition/externalities/refine-fetch-externalities.test.js +32 -0
- package/packages/jam/transition/hasher.d.ts +2 -1
- package/packages/jam/transition/hasher.d.ts.map +1 -1
- package/packages/jam/transition/hasher.js +5 -2
- package/packages/jam/transition/hasher.test.js +1 -1
- package/packages/jam/transition/preimages.test.js +4 -4
- package/packages/jam/transition/reports/test.utils.js +1 -1
- package/packages/workers/api-node/config.js +4 -4
- package/packages/workers/api-node/port.d.ts +2 -1
- package/packages/workers/api-node/port.d.ts.map +1 -1
- package/packages/workers/api-node/port.js +4 -1
- package/packages/workers/api-node/port.test.js +2 -2
- package/packages/workers/api-node/protocol.js +2 -2
- package/packages/workers/block-authorship/generator.d.ts +13 -2
- package/packages/workers/block-authorship/generator.d.ts.map +1 -1
- package/packages/workers/block-authorship/generator.js +13 -9
- package/packages/workers/block-authorship/generator.test.js +16 -2
- package/packages/workers/block-authorship/main.d.ts.map +1 -1
- package/packages/workers/block-authorship/main.js +8 -1
- package/packages/workers/importer/finality.test.js +1 -1
- package/packages/workers/importer/importer.d.ts +23 -6
- package/packages/workers/importer/importer.d.ts.map +1 -1
- package/packages/workers/importer/importer.js +34 -19
- package/packages/workers/importer/main.d.ts.map +1 -1
- package/packages/workers/importer/main.js +13 -5
- package/packages/jam/transition/externalities/fetch-externalities.test.d.ts +0 -2
- package/packages/jam/transition/externalities/fetch-externalities.test.d.ts.map +0 -1
- package/packages/jam/transition/externalities/fetch-externalities.test.js +0 -254
|
@@ -18,7 +18,6 @@ import { Result } from "#@typeberry/utils";
|
|
|
18
18
|
import { UpdatePrivilegesError } from "../externalities/partial-state.js";
|
|
19
19
|
import { PartialStateMock } from "../externalities/partial-state-mock.js";
|
|
20
20
|
import { HostCallResult } from "../general/results.js";
|
|
21
|
-
import { emptyRegistersBuffer } from "../utils.js";
|
|
22
21
|
import { Assign } from "./assign.js";
|
|
23
22
|
const gas = gasCounter(tryAsGas(0));
|
|
24
23
|
const RESULT_REG = 7;
|
|
@@ -27,7 +26,7 @@ const AUTH_QUEUE_START_REG = 8;
|
|
|
27
26
|
const AUTH_MANAGER_REG = 9;
|
|
28
27
|
function prepareRegsAndMemory(coreIndex, authQueue, { skipAuthQueue = false, assigners = null } = {}) {
|
|
29
28
|
const memStart = 2 ** 16;
|
|
30
|
-
const registers =
|
|
29
|
+
const registers = HostCallRegisters.empty();
|
|
31
30
|
registers.set(CORE_INDEX_REG, tryAsU64(coreIndex));
|
|
32
31
|
registers.set(AUTH_QUEUE_START_REG, tryAsU64(memStart));
|
|
33
32
|
if (assigners !== null) {
|
|
@@ -43,7 +42,7 @@ function prepareRegsAndMemory(coreIndex, authQueue, { skipAuthQueue = false, ass
|
|
|
43
42
|
if (!skipAuthQueue) {
|
|
44
43
|
builder.setReadablePages(tryAsMemoryIndex(memStart), tryAsMemoryIndex(memStart + PAGE_SIZE), data.raw);
|
|
45
44
|
}
|
|
46
|
-
const memory = new
|
|
45
|
+
const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
|
|
47
46
|
return {
|
|
48
47
|
registers,
|
|
49
48
|
memory,
|
|
@@ -53,7 +52,7 @@ describe("HostCalls: Assign", () => {
|
|
|
53
52
|
it("should assign authorization queue to a core", async () => {
|
|
54
53
|
const accumulate = new PartialStateMock();
|
|
55
54
|
const serviceId = tryAsServiceId(10_000);
|
|
56
|
-
const assign = new
|
|
55
|
+
const assign = Assign.new(serviceId, accumulate, tinyChainSpec);
|
|
57
56
|
const { registers, memory } = prepareRegsAndMemory(tryAsCoreIndex(0), [
|
|
58
57
|
Bytes.fill(HASH_SIZE, 1),
|
|
59
58
|
Bytes.fill(HASH_SIZE, 2),
|
|
@@ -79,7 +78,7 @@ describe("HostCalls: Assign", () => {
|
|
|
79
78
|
it("should return an error if core index is too large", async () => {
|
|
80
79
|
const accumulate = new PartialStateMock();
|
|
81
80
|
const serviceId = tryAsServiceId(10_000);
|
|
82
|
-
const assign = new
|
|
81
|
+
const assign = Assign.new(serviceId, accumulate, tinyChainSpec);
|
|
83
82
|
const { registers, memory } = prepareRegsAndMemory(tryAsCoreIndex(3), []);
|
|
84
83
|
// when
|
|
85
84
|
const result = await assign.execute(gas, registers, memory);
|
|
@@ -91,7 +90,7 @@ describe("HostCalls: Assign", () => {
|
|
|
91
90
|
it("should return an error if core index is waay too large", async () => {
|
|
92
91
|
const accumulate = new PartialStateMock();
|
|
93
92
|
const serviceId = tryAsServiceId(10_000);
|
|
94
|
-
const assign = new
|
|
93
|
+
const assign = Assign.new(serviceId, accumulate, tinyChainSpec);
|
|
95
94
|
const { registers, memory } = prepareRegsAndMemory(tryAsCoreIndex(3), []);
|
|
96
95
|
registers.set(CORE_INDEX_REG, tryAsU64(2 ** 16 + 3));
|
|
97
96
|
// when
|
|
@@ -104,7 +103,7 @@ describe("HostCalls: Assign", () => {
|
|
|
104
103
|
it("should return panic if data not readable", async () => {
|
|
105
104
|
const accumulate = new PartialStateMock();
|
|
106
105
|
const serviceId = tryAsServiceId(10_000);
|
|
107
|
-
const assign = new
|
|
106
|
+
const assign = Assign.new(serviceId, accumulate, tinyChainSpec);
|
|
108
107
|
const { registers, memory } = prepareRegsAndMemory(tryAsCoreIndex(3), [], { skipAuthQueue: true });
|
|
109
108
|
// when
|
|
110
109
|
const result = await assign.execute(gas, registers, memory);
|
|
@@ -116,7 +115,7 @@ describe("HostCalls: Assign", () => {
|
|
|
116
115
|
const accumulate = new PartialStateMock();
|
|
117
116
|
accumulate.authQueueResponse = Result.error(UpdatePrivilegesError.UnprivilegedService, () => "Test: unprivileged service attempting assign");
|
|
118
117
|
const serviceId = tryAsServiceId(10_000);
|
|
119
|
-
const assign = new
|
|
118
|
+
const assign = Assign.new(serviceId, accumulate, tinyChainSpec);
|
|
120
119
|
const { registers, memory } = prepareRegsAndMemory(tryAsCoreIndex(0), [], { assigners: 0 });
|
|
121
120
|
// when
|
|
122
121
|
const result = await assign.execute(gas, registers, memory);
|
|
@@ -129,7 +128,7 @@ describe("HostCalls: Assign", () => {
|
|
|
129
128
|
const accumulate = new PartialStateMock();
|
|
130
129
|
accumulate.authQueueResponse = Result.error(UpdatePrivilegesError.InvalidServiceId, () => "Test: invalid service ID for assign");
|
|
131
130
|
const serviceId = tryAsServiceId(10_000);
|
|
132
|
-
const assign = new
|
|
131
|
+
const assign = Assign.new(serviceId, accumulate, tinyChainSpec);
|
|
133
132
|
const { registers, memory } = prepareRegsAndMemory(tryAsCoreIndex(0), [], { assigners: null });
|
|
134
133
|
// when
|
|
135
134
|
const result = await assign.execute(gas, registers, memory);
|
|
@@ -16,7 +16,8 @@ export declare class Bless implements HostCallHandler {
|
|
|
16
16
|
index: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"HostCallIndex[U32]">;
|
|
17
17
|
basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
|
|
18
18
|
tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
|
|
19
|
-
|
|
19
|
+
static new(currentServiceId: ServiceId, partialState: PartialState, chainSpec: ChainSpec): Bless;
|
|
20
|
+
private constructor();
|
|
20
21
|
execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<undefined | PvmExecution>;
|
|
21
22
|
}
|
|
22
23
|
//# sourceMappingURL=bless.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bless.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/bless.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,SAAS,EAAmB,MAAM,kBAAkB,CAAC;AAEpF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAG3E,OAAO,EAAE,KAAK,YAAY,EAAyB,MAAM,mCAAmC,CAAC;AAkB7F;;;;GAIG;AACH,qBAAa,KAAM,YAAW,eAAe;
|
|
1
|
+
{"version":3,"file":"bless.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/bless.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,SAAS,EAAmB,MAAM,kBAAkB,CAAC;AAEpF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAG3E,OAAO,EAAE,KAAK,YAAY,EAAyB,MAAM,mCAAmC,CAAC;AAkB7F;;;;GAIG;AACH,qBAAa,KAAM,YAAW,eAAe;aAUzB,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAX5B,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,eAAe,uEAAgD;IAE/D,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS;IAIxF,OAAO;IAMD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CAkFrH"}
|
|
@@ -26,6 +26,9 @@ export class Bless {
|
|
|
26
26
|
index = tryAsHostCallIndex(14);
|
|
27
27
|
basicGasCost = tryAsSmallGas(10);
|
|
28
28
|
tracedRegisters = traceRegisters(IN_OUT_REG, 8, 9, 10, 11, 12);
|
|
29
|
+
static new(currentServiceId, partialState, chainSpec) {
|
|
30
|
+
return new Bless(currentServiceId, partialState, chainSpec);
|
|
31
|
+
}
|
|
29
32
|
constructor(currentServiceId, partialState, chainSpec) {
|
|
30
33
|
this.currentServiceId = currentServiceId;
|
|
31
34
|
this.partialState = partialState;
|
|
@@ -34,8 +37,8 @@ export class Bless {
|
|
|
34
37
|
async execute(_gas, regs, memory) {
|
|
35
38
|
// `m`: manager service (can change privileged services)
|
|
36
39
|
const manager = getServiceId(regs.get(IN_OUT_REG));
|
|
37
|
-
// `a`:
|
|
38
|
-
const
|
|
40
|
+
// `a`: mem pointer for collection of auth queue assigners (one per core)
|
|
41
|
+
const assignersPtr = regs.get(8);
|
|
39
42
|
// `v`: manages validator keys
|
|
40
43
|
const delegator = getServiceId(regs.get(9));
|
|
41
44
|
// `r`: manages creation of new services with id within protected range
|
|
@@ -67,29 +70,29 @@ export class Bless {
|
|
|
67
70
|
}
|
|
68
71
|
// https://graypaper.fluffylabs.dev/#/7e6ff6a/367200367200?v=0.6.7
|
|
69
72
|
const res = safeAllocUint8Array(tryAsExactBytes(codec.u32.sizeHint) * this.chainSpec.coresCount);
|
|
70
|
-
const
|
|
71
|
-
const memoryReadResult = memory.loadInto(res,
|
|
73
|
+
const assignersDecoder = Decoder.fromBlob(res);
|
|
74
|
+
const memoryReadResult = memory.loadInto(res, assignersPtr);
|
|
72
75
|
if (memoryReadResult.isError) {
|
|
73
76
|
logger.trace `[${this.currentServiceId}] BLESS(m: ${manager}, v: ${delegator}, r: ${registrar}, ${lazyInspect(autoAccumulate)}) <- PANIC`;
|
|
74
77
|
return PvmExecution.Panic;
|
|
75
78
|
}
|
|
76
79
|
// `a`
|
|
77
|
-
const
|
|
78
|
-
const updateResult = this.partialState.updatePrivilegedServices(manager,
|
|
80
|
+
const assigners = tryAsPerCore(assignersDecoder.sequenceFixLen(codec.u32.asOpaque(), this.chainSpec.coresCount), this.chainSpec);
|
|
81
|
+
const updateResult = this.partialState.updatePrivilegedServices(manager, assigners, delegator, registrar, autoAccumulate);
|
|
79
82
|
if (updateResult.isOk) {
|
|
80
|
-
logger.trace `[${this.currentServiceId}] BLESS(m: ${manager}, a: [${
|
|
83
|
+
logger.trace `[${this.currentServiceId}] BLESS(m: ${manager}, a: [${assigners}], v: ${delegator}, r: ${registrar}, ${lazyInspect(autoAccumulate)}) <- OK`;
|
|
81
84
|
regs.set(IN_OUT_REG, HostCallResult.OK);
|
|
82
85
|
return;
|
|
83
86
|
}
|
|
84
87
|
const e = updateResult.error;
|
|
85
88
|
// NOTE: `UpdatePrivilegesError.UnprivilegedService` won't happen in 0.7.1+
|
|
86
89
|
if (e === UpdatePrivilegesError.UnprivilegedService) {
|
|
87
|
-
logger.trace `[${this.currentServiceId}] BLESS(m: ${manager}, a: [${
|
|
90
|
+
logger.trace `[${this.currentServiceId}] BLESS(m: ${manager}, a: [${assigners}], v: ${delegator}, r: ${registrar}, ${lazyInspect(autoAccumulate)}) <- HUH`;
|
|
88
91
|
regs.set(IN_OUT_REG, HostCallResult.HUH);
|
|
89
92
|
return;
|
|
90
93
|
}
|
|
91
94
|
if (e === UpdatePrivilegesError.InvalidServiceId) {
|
|
92
|
-
logger.trace `[${this.currentServiceId}] BLESS(m: ${manager}, a: [${
|
|
95
|
+
logger.trace `[${this.currentServiceId}] BLESS(m: ${manager}, a: [${assigners}], v: ${delegator}, r: ${registrar}, ${lazyInspect(autoAccumulate)}) <- WHO`;
|
|
93
96
|
regs.set(IN_OUT_REG, HostCallResult.WHO);
|
|
94
97
|
return;
|
|
95
98
|
}
|
|
@@ -15,7 +15,6 @@ import { deepEqual, Result } from "#@typeberry/utils";
|
|
|
15
15
|
import { UpdatePrivilegesError } from "../externalities/partial-state.js";
|
|
16
16
|
import { PartialStateMock } from "../externalities/partial-state-mock.js";
|
|
17
17
|
import { HostCallResult } from "../general/results.js";
|
|
18
|
-
import { emptyRegistersBuffer } from "../utils.js";
|
|
19
18
|
import { Bless } from "./bless.js";
|
|
20
19
|
const gas = gasCounter(tryAsGas(0));
|
|
21
20
|
const RESULT_REG = 7;
|
|
@@ -40,7 +39,7 @@ function prepareAuthorizers() {
|
|
|
40
39
|
function prepareRegsAndMemory(entries, authorizerData, { skipDictionary = false, skipAuth = false, manager, validator, registrar, } = {}) {
|
|
41
40
|
const memAuthStart = 2 ** 24;
|
|
42
41
|
const memStart = 2 ** 16;
|
|
43
|
-
const registers =
|
|
42
|
+
const registers = HostCallRegisters.empty();
|
|
44
43
|
registers.set(MANAGER_REG, manager ?? tryAsU64(5));
|
|
45
44
|
registers.set(AUTHORIZATION_REG, tryAsU64(memAuthStart));
|
|
46
45
|
registers.set(VALIDATOR_REG, validator ?? tryAsU64(20));
|
|
@@ -61,7 +60,7 @@ function prepareRegsAndMemory(entries, authorizerData, { skipDictionary = false,
|
|
|
61
60
|
if (!skipAuth) {
|
|
62
61
|
builder.setReadablePages(tryAsMemoryIndex(memAuthStart), tryAsMemoryIndex(memAuthStart + PAGE_SIZE), dataAuth.raw);
|
|
63
62
|
}
|
|
64
|
-
const memory = new
|
|
63
|
+
const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
|
|
65
64
|
return {
|
|
66
65
|
registers,
|
|
67
66
|
memory,
|
|
@@ -71,7 +70,7 @@ describe("HostCalls: Bless", () => {
|
|
|
71
70
|
it("should set new privileged services and auto-accumulate services", async () => {
|
|
72
71
|
const accumulate = new PartialStateMock();
|
|
73
72
|
const serviceId = tryAsServiceId(10_000);
|
|
74
|
-
const bless = new
|
|
73
|
+
const bless = Bless.new(serviceId, accumulate, tinyChainSpec);
|
|
75
74
|
const entries = prepareServiceGasMap();
|
|
76
75
|
const authorizers = prepareAuthorizers();
|
|
77
76
|
const { registers, memory } = prepareRegsAndMemory(entries, authorizers);
|
|
@@ -93,7 +92,7 @@ describe("HostCalls: Bless", () => {
|
|
|
93
92
|
it("should return panic when dictionary is not readable", async () => {
|
|
94
93
|
const accumulate = new PartialStateMock();
|
|
95
94
|
const serviceId = tryAsServiceId(10_000);
|
|
96
|
-
const bless = new
|
|
95
|
+
const bless = Bless.new(serviceId, accumulate, tinyChainSpec);
|
|
97
96
|
const entries = prepareServiceGasMap();
|
|
98
97
|
const authorizers = prepareAuthorizers();
|
|
99
98
|
const { registers, memory } = prepareRegsAndMemory(entries, authorizers, { skipDictionary: true });
|
|
@@ -106,7 +105,7 @@ describe("HostCalls: Bless", () => {
|
|
|
106
105
|
it("should return panic when authorizers are not readable", async () => {
|
|
107
106
|
const accumulate = new PartialStateMock();
|
|
108
107
|
const serviceId = tryAsServiceId(10_000);
|
|
109
|
-
const bless = new
|
|
108
|
+
const bless = Bless.new(serviceId, accumulate, tinyChainSpec);
|
|
110
109
|
const entries = prepareServiceGasMap();
|
|
111
110
|
const authorizers = prepareAuthorizers();
|
|
112
111
|
const { registers, memory } = prepareRegsAndMemory(entries, authorizers, { skipAuth: true });
|
|
@@ -119,7 +118,7 @@ describe("HostCalls: Bless", () => {
|
|
|
119
118
|
it("should auto-accumulate services when dictionary is out of order", async () => {
|
|
120
119
|
const accumulate = new PartialStateMock();
|
|
121
120
|
const serviceId = tryAsServiceId(10_000);
|
|
122
|
-
const bless = new
|
|
121
|
+
const bless = Bless.new(serviceId, accumulate, tinyChainSpec);
|
|
123
122
|
const entries = prepareServiceGasMap();
|
|
124
123
|
entries.push([tryAsServiceId(5), tryAsServiceGas(10_000)]);
|
|
125
124
|
const authorizers = prepareAuthorizers();
|
|
@@ -142,7 +141,7 @@ describe("HostCalls: Bless", () => {
|
|
|
142
141
|
it("should auto-accumulate services when dictionary contains duplicates", async () => {
|
|
143
142
|
const accumulate = new PartialStateMock();
|
|
144
143
|
const serviceId = tryAsServiceId(10_000);
|
|
145
|
-
const bless = new
|
|
144
|
+
const bless = Bless.new(serviceId, accumulate, tinyChainSpec);
|
|
146
145
|
const entries = prepareServiceGasMap();
|
|
147
146
|
entries.push(entries[entries.length - 1]);
|
|
148
147
|
const authorizers = prepareAuthorizers();
|
|
@@ -166,7 +165,7 @@ describe("HostCalls: Bless", () => {
|
|
|
166
165
|
const accumulate = new PartialStateMock();
|
|
167
166
|
accumulate.privilegedServicesResponse = Result.error(UpdatePrivilegesError.UnprivilegedService, () => "Test: unprivileged service attempting bless");
|
|
168
167
|
const serviceId = tryAsServiceId(11_000);
|
|
169
|
-
const bless = new
|
|
168
|
+
const bless = Bless.new(serviceId, accumulate, tinyChainSpec);
|
|
170
169
|
const entries = prepareServiceGasMap();
|
|
171
170
|
const authorizers = prepareAuthorizers();
|
|
172
171
|
const { registers, memory } = prepareRegsAndMemory(entries, authorizers);
|
|
@@ -181,7 +180,7 @@ describe("HostCalls: Bless", () => {
|
|
|
181
180
|
const accumulate = new PartialStateMock();
|
|
182
181
|
accumulate.privilegedServicesResponse = Result.error(UpdatePrivilegesError.InvalidServiceId, () => "Test: invalid manager service ID for bless");
|
|
183
182
|
const serviceId = tryAsServiceId(11_000);
|
|
184
|
-
const bless = new
|
|
183
|
+
const bless = Bless.new(serviceId, accumulate, tinyChainSpec);
|
|
185
184
|
const entries = prepareServiceGasMap();
|
|
186
185
|
const authorizers = prepareAuthorizers();
|
|
187
186
|
const { registers, memory } = prepareRegsAndMemory(entries, authorizers, { manager: tryAsU64(MAX_VALUE_U64) });
|
|
@@ -196,7 +195,7 @@ describe("HostCalls: Bless", () => {
|
|
|
196
195
|
const accumulate = new PartialStateMock();
|
|
197
196
|
accumulate.privilegedServicesResponse = Result.error(UpdatePrivilegesError.InvalidServiceId, () => "Test: invalid validator service ID for bless");
|
|
198
197
|
const serviceId = tryAsServiceId(11_000);
|
|
199
|
-
const bless = new
|
|
198
|
+
const bless = Bless.new(serviceId, accumulate, tinyChainSpec);
|
|
200
199
|
const entries = prepareServiceGasMap();
|
|
201
200
|
const authorizers = prepareAuthorizers();
|
|
202
201
|
const { registers, memory } = prepareRegsAndMemory(entries, authorizers, { validator: tryAsU64(MAX_VALUE_U64) });
|
|
@@ -211,7 +210,7 @@ describe("HostCalls: Bless", () => {
|
|
|
211
210
|
const accumulate = new PartialStateMock();
|
|
212
211
|
accumulate.privilegedServicesResponse = Result.error(UpdatePrivilegesError.InvalidServiceId, () => "Test: invalid registrar service ID for bless");
|
|
213
212
|
const serviceId = tryAsServiceId(11_000);
|
|
214
|
-
const bless = new
|
|
213
|
+
const bless = Bless.new(serviceId, accumulate, tinyChainSpec);
|
|
215
214
|
const entries = prepareServiceGasMap();
|
|
216
215
|
const authorizers = prepareAuthorizers();
|
|
217
216
|
const { registers, memory } = prepareRegsAndMemory(entries, authorizers, { registrar: tryAsU64(MAX_VALUE_U64) });
|
|
@@ -16,7 +16,8 @@ export declare class Checkpoint implements HostCallHandler {
|
|
|
16
16
|
basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
|
|
17
17
|
tracedRegisters: RegisterIndex[];
|
|
18
18
|
private readonly gasHostCall;
|
|
19
|
-
|
|
19
|
+
static new(currentServiceId: ServiceId, partialState: PartialState): Checkpoint;
|
|
20
|
+
private constructor();
|
|
20
21
|
execute(gas: IGasCounter, regs: HostCallRegisters): Promise<undefined | PvmExecution>;
|
|
21
22
|
}
|
|
22
23
|
//# sourceMappingURL=checkpoint.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/checkpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpF,OAAO,EAAE,KAAK,YAAY,EAAsB,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAItE;;;;GAIG;AACH,qBAAa,UAAW,YAAW,eAAe;
|
|
1
|
+
{"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/checkpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpF,OAAO,EAAE,KAAK,YAAY,EAAsB,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAItE;;;;GAIG;AACH,qBAAa,UAAW,YAAW,eAAe;aAY9B,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAZ/B,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,eAAe,EAAE,aAAa,EAAE,CAAC;IAEjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAE1C,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY;IAIlE,OAAO;IAQD,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CAM5F"}
|
|
@@ -14,10 +14,13 @@ export class Checkpoint {
|
|
|
14
14
|
basicGasCost = tryAsSmallGas(10);
|
|
15
15
|
tracedRegisters;
|
|
16
16
|
gasHostCall;
|
|
17
|
+
static new(currentServiceId, partialState) {
|
|
18
|
+
return new Checkpoint(currentServiceId, partialState);
|
|
19
|
+
}
|
|
17
20
|
constructor(currentServiceId, partialState) {
|
|
18
21
|
this.currentServiceId = currentServiceId;
|
|
19
22
|
this.partialState = partialState;
|
|
20
|
-
this.gasHostCall = new
|
|
23
|
+
this.gasHostCall = GasHostCall.new(currentServiceId);
|
|
21
24
|
this.tracedRegisters = this.gasHostCall.tracedRegisters;
|
|
22
25
|
}
|
|
23
26
|
async execute(gas, regs) {
|
|
@@ -5,16 +5,15 @@ import { HostCallRegisters } from "#@typeberry/pvm-host-calls";
|
|
|
5
5
|
import { tryAsGas } from "#@typeberry/pvm-interface";
|
|
6
6
|
import { gasCounter } from "#@typeberry/pvm-interpreter/gas.js";
|
|
7
7
|
import { PartialStateMock } from "../externalities/partial-state-mock.js";
|
|
8
|
-
import { emptyRegistersBuffer } from "../utils.js";
|
|
9
8
|
import { Checkpoint } from "./checkpoint.js";
|
|
10
9
|
const REGISTER = 7;
|
|
11
10
|
describe("HostCalls: Checkpoint", () => {
|
|
12
11
|
it("should write U64 gas to register and checkpoint the state", async () => {
|
|
13
12
|
const accumulate = new PartialStateMock();
|
|
14
13
|
const serviceId = tryAsServiceId(10_000);
|
|
15
|
-
const checkpoint = new
|
|
14
|
+
const checkpoint = Checkpoint.new(serviceId, accumulate);
|
|
16
15
|
const counter = gasCounter(tryAsGas(2n ** 42n - 1n));
|
|
17
|
-
const regs =
|
|
16
|
+
const regs = HostCallRegisters.empty();
|
|
18
17
|
assert.deepStrictEqual(regs.get(REGISTER), 0n);
|
|
19
18
|
assert.deepStrictEqual(accumulate.checkpointCalled, 0);
|
|
20
19
|
// when
|
|
@@ -17,7 +17,8 @@ export declare class Designate implements HostCallHandler {
|
|
|
17
17
|
index: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"HostCallIndex[U32]">;
|
|
18
18
|
basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
|
|
19
19
|
tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
|
|
20
|
-
|
|
20
|
+
static new(currentServiceId: ServiceId, partialState: PartialState, chainSpec: ChainSpec): Designate;
|
|
21
|
+
private constructor();
|
|
21
22
|
execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<undefined | PvmExecution>;
|
|
22
23
|
}
|
|
23
24
|
//# sourceMappingURL=designate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"designate.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/designate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,kBAAkB,CAAC;AAErE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAG3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAKtE,eAAO,MAAM,oBAAoB,QAAgD,CAAC;AAElF;;;;GAIG;AACH,qBAAa,SAAU,YAAW,eAAe;
|
|
1
|
+
{"version":3,"file":"designate.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/designate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,kBAAkB,CAAC;AAErE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAG3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAKtE,eAAO,MAAM,oBAAoB,QAAgD,CAAC;AAElF;;;;GAIG;AACH,qBAAa,SAAU,YAAW,eAAe;aAU7B,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAX5B,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,eAAe,uEAA8B;IAE7C,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS;IAIxF,OAAO;IAMD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CAyBrH"}
|
|
@@ -20,6 +20,9 @@ export class Designate {
|
|
|
20
20
|
index = tryAsHostCallIndex(16);
|
|
21
21
|
basicGasCost = tryAsSmallGas(10);
|
|
22
22
|
tracedRegisters = traceRegisters(IN_OUT_REG);
|
|
23
|
+
static new(currentServiceId, partialState, chainSpec) {
|
|
24
|
+
return new Designate(currentServiceId, partialState, chainSpec);
|
|
25
|
+
}
|
|
23
26
|
constructor(currentServiceId, partialState, chainSpec) {
|
|
24
27
|
this.currentServiceId = currentServiceId;
|
|
25
28
|
this.partialState = partialState;
|
|
@@ -17,14 +17,13 @@ import { Result } from "#@typeberry/utils";
|
|
|
17
17
|
import { UnprivilegedError } from "../externalities/partial-state.js";
|
|
18
18
|
import { PartialStateMock } from "../externalities/partial-state-mock.js";
|
|
19
19
|
import { HostCallResult } from "../general/results.js";
|
|
20
|
-
import { emptyRegistersBuffer } from "../utils.js";
|
|
21
20
|
import { Designate } from "./designate.js";
|
|
22
21
|
const gas = gasCounter(tryAsGas(0));
|
|
23
22
|
const RESULT_REG = 7;
|
|
24
23
|
const VALIDATORS_DATA_START_REG = 7;
|
|
25
24
|
function prepareRegsAndMemory(validators, { skipValidators = false } = {}) {
|
|
26
25
|
const memStart = 2 ** 16;
|
|
27
|
-
const registers =
|
|
26
|
+
const registers = HostCallRegisters.empty();
|
|
28
27
|
registers.set(VALIDATORS_DATA_START_REG, tryAsU64(memStart));
|
|
29
28
|
const builder = new MemoryBuilder();
|
|
30
29
|
while (validators.length < tinyChainSpec.validatorsCount) {
|
|
@@ -41,7 +40,7 @@ function prepareRegsAndMemory(validators, { skipValidators = false } = {}) {
|
|
|
41
40
|
if (!skipValidators) {
|
|
42
41
|
builder.setReadablePages(tryAsMemoryIndex(memStart), tryAsMemoryIndex(memStart + PAGE_SIZE), data.raw);
|
|
43
42
|
}
|
|
44
|
-
const memory = new
|
|
43
|
+
const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
|
|
45
44
|
return {
|
|
46
45
|
registers: registers,
|
|
47
46
|
memory,
|
|
@@ -51,7 +50,7 @@ describe("HostCalls: Designate", () => {
|
|
|
51
50
|
it("should fail when no data in memory", async () => {
|
|
52
51
|
const accumulate = new PartialStateMock();
|
|
53
52
|
const serviceId = tryAsServiceId(10_000);
|
|
54
|
-
const designate = new
|
|
53
|
+
const designate = Designate.new(serviceId, accumulate, tinyChainSpec);
|
|
55
54
|
const { registers, memory } = prepareRegsAndMemory([], { skipValidators: true });
|
|
56
55
|
// when
|
|
57
56
|
const result = await designate.execute(gas, registers, memory);
|
|
@@ -62,7 +61,7 @@ describe("HostCalls: Designate", () => {
|
|
|
62
61
|
it("should designate new validator set", async () => {
|
|
63
62
|
const accumulate = new PartialStateMock();
|
|
64
63
|
const serviceId = tryAsServiceId(10_000);
|
|
65
|
-
const designate = new
|
|
64
|
+
const designate = Designate.new(serviceId, accumulate, tinyChainSpec);
|
|
66
65
|
const { registers, memory } = prepareRegsAndMemory([
|
|
67
66
|
ValidatorData.create({
|
|
68
67
|
ed25519: Bytes.fill(ED25519_KEY_BYTES, 1).asOpaque(),
|
|
@@ -100,7 +99,7 @@ describe("HostCalls: Designate", () => {
|
|
|
100
99
|
const accumulate = new PartialStateMock();
|
|
101
100
|
accumulate.validatorDataResponse = Result.error(UnprivilegedError, () => "Test: unprivileged service attempting designate");
|
|
102
101
|
const serviceId = tryAsServiceId(10_000);
|
|
103
|
-
const designate = new
|
|
102
|
+
const designate = Designate.new(serviceId, accumulate, tinyChainSpec);
|
|
104
103
|
const { registers, memory } = prepareRegsAndMemory([
|
|
105
104
|
ValidatorData.create({
|
|
106
105
|
ed25519: Bytes.fill(ED25519_KEY_BYTES, 1).asOpaque(),
|
|
@@ -14,7 +14,8 @@ export declare class Eject implements HostCallHandler {
|
|
|
14
14
|
index: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"HostCallIndex[U32]">;
|
|
15
15
|
basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
|
|
16
16
|
tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
|
|
17
|
-
|
|
17
|
+
static new(currentServiceId: ServiceId, partialState: PartialState): Eject;
|
|
18
|
+
private constructor();
|
|
18
19
|
execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<undefined | PvmExecution>;
|
|
19
20
|
}
|
|
20
21
|
//# sourceMappingURL=eject.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eject.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/eject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAIlD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAE3E,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAOlF;;;;GAIG;AACH,qBAAa,KAAM,YAAW,eAAe;
|
|
1
|
+
{"version":3,"file":"eject.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/eject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAIlD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAE3E,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAOlF;;;;GAIG;AACH,qBAAa,KAAM,YAAW,eAAe;aAUzB,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAV/B,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,eAAe,uEAAiC;IAEhD,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY;IAIlE,OAAO;IAKD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CA0CrH"}
|
|
@@ -19,6 +19,9 @@ export class Eject {
|
|
|
19
19
|
index = tryAsHostCallIndex(21);
|
|
20
20
|
basicGasCost = tryAsSmallGas(10);
|
|
21
21
|
tracedRegisters = traceRegisters(IN_OUT_REG, 8);
|
|
22
|
+
static new(currentServiceId, partialState) {
|
|
23
|
+
return new Eject(currentServiceId, partialState);
|
|
24
|
+
}
|
|
22
25
|
constructor(currentServiceId, partialState) {
|
|
23
26
|
this.currentServiceId = currentServiceId;
|
|
24
27
|
this.partialState = partialState;
|
|
@@ -15,21 +15,20 @@ import { deepEqual, OK, Result } from "#@typeberry/utils";
|
|
|
15
15
|
import { EjectError } from "../externalities/partial-state.js";
|
|
16
16
|
import { PartialStateMock } from "../externalities/partial-state-mock.js";
|
|
17
17
|
import { HostCallResult } from "../general/results.js";
|
|
18
|
-
import { emptyRegistersBuffer } from "../utils.js";
|
|
19
18
|
import { Eject } from "./eject.js";
|
|
20
19
|
const RESULT_REG = 7;
|
|
21
20
|
const SOURCE_REG = 7;
|
|
22
21
|
const HASH_START_REG = 8;
|
|
23
22
|
function prepareRegsAndMemory(source, hash, { skipHash = false } = {}) {
|
|
24
23
|
const hashStart = 2 ** 16;
|
|
25
|
-
const registers =
|
|
24
|
+
const registers = HostCallRegisters.empty();
|
|
26
25
|
registers.set(SOURCE_REG, tryAsU64(source));
|
|
27
26
|
registers.set(HASH_START_REG, tryAsU64(hashStart));
|
|
28
27
|
const builder = new MemoryBuilder();
|
|
29
28
|
if (!skipHash) {
|
|
30
29
|
builder.setReadablePages(tryAsMemoryIndex(hashStart), tryAsMemoryIndex(hashStart + PAGE_SIZE), hash.raw);
|
|
31
30
|
}
|
|
32
|
-
const memory = new
|
|
31
|
+
const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
|
|
33
32
|
return {
|
|
34
33
|
registers,
|
|
35
34
|
memory,
|
|
@@ -40,7 +39,7 @@ describe("HostCalls: Eject", () => {
|
|
|
40
39
|
it("should eject the account and transfer the funds", async () => {
|
|
41
40
|
const accumulate = new PartialStateMock();
|
|
42
41
|
const serviceId = tryAsServiceId(10_000);
|
|
43
|
-
const eject = new
|
|
42
|
+
const eject = Eject.new(serviceId, accumulate);
|
|
44
43
|
const sourceServiceId = tryAsServiceId(15_000);
|
|
45
44
|
const hash = Bytes.fill(HASH_SIZE, 5);
|
|
46
45
|
const { registers, memory } = prepareRegsAndMemory(sourceServiceId, hash);
|
|
@@ -55,7 +54,7 @@ describe("HostCalls: Eject", () => {
|
|
|
55
54
|
it("should fail if there is no memory for hash", async () => {
|
|
56
55
|
const accumulate = new PartialStateMock();
|
|
57
56
|
const serviceId = tryAsServiceId(10_000);
|
|
58
|
-
const eject = new
|
|
57
|
+
const eject = Eject.new(serviceId, accumulate);
|
|
59
58
|
const sourceServiceId = tryAsServiceId(15_000);
|
|
60
59
|
const hash = Bytes.fill(HASH_SIZE, 5);
|
|
61
60
|
const { registers, memory } = prepareRegsAndMemory(sourceServiceId, hash, { skipHash: true });
|
|
@@ -68,7 +67,7 @@ describe("HostCalls: Eject", () => {
|
|
|
68
67
|
it("should fail if destination does not exist", async () => {
|
|
69
68
|
const accumulate = new PartialStateMock();
|
|
70
69
|
const serviceId = tryAsServiceId(10_000);
|
|
71
|
-
const eject = new
|
|
70
|
+
const eject = Eject.new(serviceId, accumulate);
|
|
72
71
|
const sourceServiceId = tryAsServiceId(15_000);
|
|
73
72
|
const hash = Bytes.fill(HASH_SIZE, 5);
|
|
74
73
|
accumulate.ejectReturnValue = Result.error(EjectError.InvalidService, () => "Test: destination service does not exist for eject");
|
|
@@ -84,7 +83,7 @@ describe("HostCalls: Eject", () => {
|
|
|
84
83
|
it("should fail if destination and source are the same", async () => {
|
|
85
84
|
const accumulate = new PartialStateMock();
|
|
86
85
|
const serviceId = tryAsServiceId(15_000);
|
|
87
|
-
const eject = new
|
|
86
|
+
const eject = Eject.new(serviceId, accumulate);
|
|
88
87
|
const sourceServiceId = tryAsServiceId(15_000);
|
|
89
88
|
const hash = Bytes.fill(HASH_SIZE, 5);
|
|
90
89
|
const { registers, memory } = prepareRegsAndMemory(sourceServiceId, hash);
|
|
@@ -98,7 +97,7 @@ describe("HostCalls: Eject", () => {
|
|
|
98
97
|
it("should fail if destination has no available preimage", async () => {
|
|
99
98
|
const accumulate = new PartialStateMock();
|
|
100
99
|
const serviceId = tryAsServiceId(10_000);
|
|
101
|
-
const eject = new
|
|
100
|
+
const eject = Eject.new(serviceId, accumulate);
|
|
102
101
|
const sourceServiceId = tryAsServiceId(15_000);
|
|
103
102
|
const hash = Bytes.fill(HASH_SIZE, 5);
|
|
104
103
|
accumulate.ejectReturnValue = Result.error(EjectError.InvalidPreimage, () => "Test: no available preimage for eject");
|
|
@@ -114,7 +113,7 @@ describe("HostCalls: Eject", () => {
|
|
|
114
113
|
it("should fail if preimage is too old", async () => {
|
|
115
114
|
const accumulate = new PartialStateMock();
|
|
116
115
|
const serviceId = tryAsServiceId(10_000);
|
|
117
|
-
const eject = new
|
|
116
|
+
const eject = Eject.new(serviceId, accumulate);
|
|
118
117
|
const sourceServiceId = tryAsServiceId(15_000);
|
|
119
118
|
const hash = Bytes.fill(HASH_SIZE, 5);
|
|
120
119
|
accumulate.ejectReturnValue = Result.error(EjectError.InvalidPreimage, () => "Test: preimage is too old for eject");
|
|
@@ -14,7 +14,8 @@ export declare class Forget implements HostCallHandler {
|
|
|
14
14
|
index: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"HostCallIndex[U32]">;
|
|
15
15
|
basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
|
|
16
16
|
tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
|
|
17
|
-
|
|
17
|
+
static new(currentServiceId: ServiceId, partialState: PartialState): Forget;
|
|
18
|
+
private constructor();
|
|
18
19
|
execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<PvmExecution | undefined>;
|
|
19
20
|
}
|
|
20
21
|
//# sourceMappingURL=forget.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forget.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/forget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAE3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAMtE;;;;GAIG;AACH,qBAAa,MAAO,YAAW,eAAe;
|
|
1
|
+
{"version":3,"file":"forget.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/forget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAE3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAMtE;;;;GAIG;AACH,qBAAa,MAAO,YAAW,eAAe;aAU1B,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAV/B,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,eAAe,uEAAiC;IAEhD,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY;IAIlE,OAAO;IAKD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;CAuBrH"}
|
|
@@ -17,6 +17,9 @@ export class Forget {
|
|
|
17
17
|
index = tryAsHostCallIndex(24);
|
|
18
18
|
basicGasCost = tryAsSmallGas(10);
|
|
19
19
|
tracedRegisters = traceRegisters(IN_OUT_REG, 8);
|
|
20
|
+
static new(currentServiceId, partialState) {
|
|
21
|
+
return new Forget(currentServiceId, partialState);
|
|
22
|
+
}
|
|
20
23
|
constructor(currentServiceId, partialState) {
|
|
21
24
|
this.currentServiceId = currentServiceId;
|
|
22
25
|
this.partialState = partialState;
|
|
@@ -14,7 +14,6 @@ import { Result } from "#@typeberry/utils";
|
|
|
14
14
|
import { ForgetPreimageError } from "../externalities/partial-state.js";
|
|
15
15
|
import { PartialStateMock } from "../externalities/partial-state-mock.js";
|
|
16
16
|
import { HostCallResult } from "../general/results.js";
|
|
17
|
-
import { emptyRegistersBuffer } from "../utils.js";
|
|
18
17
|
import { Forget } from "./forget.js";
|
|
19
18
|
const gas = gasCounter(tryAsGas(0));
|
|
20
19
|
const RESULT_REG = 7;
|
|
@@ -22,14 +21,14 @@ const HASH_START_REG = 7;
|
|
|
22
21
|
const LENGTH_REG = 8;
|
|
23
22
|
function prepareRegsAndMemory(preimageHash, preimageLength, { skipPreimageHash = false } = {}) {
|
|
24
23
|
const memStart = 2 ** 16;
|
|
25
|
-
const registers =
|
|
24
|
+
const registers = HostCallRegisters.empty();
|
|
26
25
|
registers.set(HASH_START_REG, tryAsU64(memStart));
|
|
27
26
|
registers.set(LENGTH_REG, preimageLength);
|
|
28
27
|
const builder = new MemoryBuilder();
|
|
29
28
|
if (!skipPreimageHash) {
|
|
30
29
|
builder.setReadablePages(tryAsMemoryIndex(memStart), tryAsMemoryIndex(memStart + PAGE_SIZE), preimageHash.raw);
|
|
31
30
|
}
|
|
32
|
-
const memory = new
|
|
31
|
+
const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
|
|
33
32
|
return {
|
|
34
33
|
registers,
|
|
35
34
|
memory,
|
|
@@ -39,7 +38,7 @@ describe("HostCalls: Solicit", () => {
|
|
|
39
38
|
it("should request a preimage hash", async () => {
|
|
40
39
|
const accumulate = new PartialStateMock();
|
|
41
40
|
const serviceId = tryAsServiceId(10_000);
|
|
42
|
-
const forget = new
|
|
41
|
+
const forget = Forget.new(serviceId, accumulate);
|
|
43
42
|
const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(4_096));
|
|
44
43
|
// when
|
|
45
44
|
await forget.execute(gas, registers, memory);
|
|
@@ -50,7 +49,7 @@ describe("HostCalls: Solicit", () => {
|
|
|
50
49
|
it("should fail if hash not available", async () => {
|
|
51
50
|
const accumulate = new PartialStateMock();
|
|
52
51
|
const serviceId = tryAsServiceId(10_000);
|
|
53
|
-
const forget = new
|
|
52
|
+
const forget = Forget.new(serviceId, accumulate);
|
|
54
53
|
const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(4_096), {
|
|
55
54
|
skipPreimageHash: true,
|
|
56
55
|
});
|
|
@@ -63,7 +62,7 @@ describe("HostCalls: Solicit", () => {
|
|
|
63
62
|
it("should fail if preimage not available", async () => {
|
|
64
63
|
const accumulate = new PartialStateMock();
|
|
65
64
|
const serviceId = tryAsServiceId(10_000);
|
|
66
|
-
const forget = new
|
|
65
|
+
const forget = Forget.new(serviceId, accumulate);
|
|
67
66
|
accumulate.forgetPreimageResponse = Result.error(ForgetPreimageError.NotFound, () => "Test: preimage not found for forget");
|
|
68
67
|
const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(4_096));
|
|
69
68
|
// when
|
|
@@ -14,7 +14,8 @@ export declare class New 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
|
-
|
|
17
|
+
static new(currentServiceId: ServiceId, partialState: PartialState): New;
|
|
18
|
+
private constructor();
|
|
18
19
|
execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<undefined | PvmExecution>;
|
|
19
20
|
}
|
|
20
21
|
//# sourceMappingURL=new.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/new.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAmB,MAAM,kBAAkB,CAAC;AAInE,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAE3E,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAMvF;;;;GAIG;AACH,qBAAa,GAAI,YAAW,eAAe;
|
|
1
|
+
{"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/new.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAmB,MAAM,kBAAkB,CAAC;AAInE,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAE3E,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAMvF;;;;GAIG;AACH,qBAAa,GAAI,YAAW,eAAe;aAUvB,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAV/B,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,eAAe,uEAAgD;IAE/D,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY;IAIlE,OAAO;IAKD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CA0DrH"}
|
|
@@ -20,6 +20,9 @@ export class New {
|
|
|
20
20
|
index = tryAsHostCallIndex(18);
|
|
21
21
|
basicGasCost = tryAsSmallGas(10);
|
|
22
22
|
tracedRegisters = traceRegisters(IN_OUT_REG, 8, 9, 10, 11, 12);
|
|
23
|
+
static new(currentServiceId, partialState) {
|
|
24
|
+
return new New(currentServiceId, partialState);
|
|
25
|
+
}
|
|
23
26
|
constructor(currentServiceId, partialState) {
|
|
24
27
|
this.currentServiceId = currentServiceId;
|
|
25
28
|
this.partialState = partialState;
|