@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.
- 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/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.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-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/pvm-executor.d.ts +7 -0
- 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 +5 -5
- package/packages/jam/in-core/externalities/refine.d.ts.map +1 -1
- package/packages/jam/in-core/externalities/refine.js +42 -7
- package/packages/jam/in-core/externalities/refine.test.js +119 -1
- 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 -184
- 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 +42 -41
- package/packages/jam/jam-host-calls/general/fetch.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/general/fetch.js +33 -30
- package/packages/jam/jam-host-calls/general/fetch.test.js +44 -42
- 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.js +10 -3
- 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/index.d.ts +1 -0
- package/packages/jam/transition/externalities/index.d.ts.map +1 -1
- package/packages/jam/transition/externalities/index.js +1 -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 +9 -8
- package/packages/jam/transition/externalities/refine-fetch-externalities.d.ts.map +1 -1
- package/packages/jam/transition/externalities/refine-fetch-externalities.js +20 -9
- package/packages/jam/transition/externalities/refine-fetch-externalities.test.js +1 -1
- 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
|
@@ -11,7 +11,6 @@ import { tryAsSbrkIndex } from "#@typeberry/pvm-interpreter/memory/memory-index.
|
|
|
11
11
|
import { PAGE_SIZE } from "#@typeberry/pvm-interpreter/spi-decoder/memory-conts.js";
|
|
12
12
|
import { asOpaqueType, OK, Result } from "#@typeberry/utils";
|
|
13
13
|
import { TestAccounts } from "../externalities/test-accounts.js";
|
|
14
|
-
import { emptyRegistersBuffer } from "../utils.js";
|
|
15
14
|
import { Read } from "./read.js";
|
|
16
15
|
import { HostCallResult } from "./results.js";
|
|
17
16
|
const gas = gasCounter(tryAsGas(0));
|
|
@@ -25,7 +24,7 @@ const VALUE_LENGTH_TO_WRITE_REG = 12;
|
|
|
25
24
|
function prepareRegsAndMemory(key, valueLength, { skipKey = false, skipValue = false, valueOffset = 0, valueLengthToWrite = valueLength, serviceId, } = {}) {
|
|
26
25
|
const keyAddress = 2 ** 20;
|
|
27
26
|
const memStart = 2 ** 16;
|
|
28
|
-
const registers =
|
|
27
|
+
const registers = HostCallRegisters.empty();
|
|
29
28
|
if (serviceId !== undefined) {
|
|
30
29
|
registers.set(SERVICE_ID_REG, tryAsU64(serviceId));
|
|
31
30
|
}
|
|
@@ -44,7 +43,7 @@ function prepareRegsAndMemory(key, valueLength, { skipKey = false, skipValue = f
|
|
|
44
43
|
if (!skipValue) {
|
|
45
44
|
builder.setWriteablePages(tryAsMemoryIndex(memStart), tryAsMemoryIndex(memStart + PAGE_SIZE));
|
|
46
45
|
}
|
|
47
|
-
const memory = new
|
|
46
|
+
const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
|
|
48
47
|
return {
|
|
49
48
|
registers,
|
|
50
49
|
memory,
|
|
@@ -60,7 +59,7 @@ describe("HostCalls: Read", () => {
|
|
|
60
59
|
it("for current account", async () => {
|
|
61
60
|
const currentServiceId = tryAsServiceId(10_000);
|
|
62
61
|
const accounts = new TestAccounts(currentServiceId);
|
|
63
|
-
const read = new
|
|
62
|
+
const read = Read.new(currentServiceId, accounts);
|
|
64
63
|
const serviceId = tryAsServiceId(10_000);
|
|
65
64
|
const key = BytesBlob.blobFromString("key");
|
|
66
65
|
const value = "hello world";
|
|
@@ -74,7 +73,7 @@ describe("HostCalls: Read", () => {
|
|
|
74
73
|
it("for different service Id", async () => {
|
|
75
74
|
const currentServiceId = tryAsServiceId(10_000);
|
|
76
75
|
const accounts = new TestAccounts(currentServiceId);
|
|
77
|
-
const read = new
|
|
76
|
+
const read = Read.new(currentServiceId, accounts);
|
|
78
77
|
const serviceId = tryAsServiceId(11_000);
|
|
79
78
|
const key = BytesBlob.blobFromString("key");
|
|
80
79
|
const value = "hello world";
|
|
@@ -90,7 +89,7 @@ describe("HostCalls: Read", () => {
|
|
|
90
89
|
it("with offset", async () => {
|
|
91
90
|
const currentServiceId = tryAsServiceId(10_000);
|
|
92
91
|
const accounts = new TestAccounts(currentServiceId);
|
|
93
|
-
const read = new
|
|
92
|
+
const read = Read.new(currentServiceId, accounts);
|
|
94
93
|
const serviceId = tryAsServiceId(10_000);
|
|
95
94
|
const key = BytesBlob.blobFromString("key");
|
|
96
95
|
const value = "hello world";
|
|
@@ -106,7 +105,7 @@ describe("HostCalls: Read", () => {
|
|
|
106
105
|
it("with offset and length", async () => {
|
|
107
106
|
const currentServiceId = tryAsServiceId(10_000);
|
|
108
107
|
const accounts = new TestAccounts(currentServiceId);
|
|
109
|
-
const read = new
|
|
108
|
+
const read = Read.new(currentServiceId, accounts);
|
|
110
109
|
const serviceId = tryAsServiceId(10_000);
|
|
111
110
|
const key = BytesBlob.blobFromString("key");
|
|
112
111
|
const value = "hello world";
|
|
@@ -123,7 +122,7 @@ describe("HostCalls: Read", () => {
|
|
|
123
122
|
it("with 0-length destination target", async () => {
|
|
124
123
|
const currentServiceId = tryAsServiceId(10_000);
|
|
125
124
|
const accounts = new TestAccounts(currentServiceId);
|
|
126
|
-
const read = new
|
|
125
|
+
const read = Read.new(currentServiceId, accounts);
|
|
127
126
|
const serviceId = tryAsServiceId(10_000);
|
|
128
127
|
const key = BytesBlob.blobFromString("xyz");
|
|
129
128
|
const value = "hello world";
|
|
@@ -138,7 +137,7 @@ describe("HostCalls: Read", () => {
|
|
|
138
137
|
it("should handle missing account", async () => {
|
|
139
138
|
const currentServiceId = tryAsServiceId(10_000);
|
|
140
139
|
const accounts = new TestAccounts(currentServiceId);
|
|
141
|
-
const read = new
|
|
140
|
+
const read = Read.new(currentServiceId, accounts);
|
|
142
141
|
const value = "xyz";
|
|
143
142
|
const key = BytesBlob.blobFromString(value);
|
|
144
143
|
const { registers, memory } = prepareRegsAndMemory(key, value.length);
|
|
@@ -151,7 +150,7 @@ describe("HostCalls: Read", () => {
|
|
|
151
150
|
it("should handle missing value", async () => {
|
|
152
151
|
const currentServiceId = tryAsServiceId(10_000);
|
|
153
152
|
const accounts = new TestAccounts(currentServiceId);
|
|
154
|
-
const read = new
|
|
153
|
+
const read = Read.new(currentServiceId, accounts);
|
|
155
154
|
const serviceId = tryAsServiceId(10_000);
|
|
156
155
|
const value = "xyz";
|
|
157
156
|
const key = BytesBlob.blobFromString(value);
|
|
@@ -165,7 +164,7 @@ describe("HostCalls: Read", () => {
|
|
|
165
164
|
it("should fail if there is no memory for key", async () => {
|
|
166
165
|
const currentServiceId = tryAsServiceId(10_000);
|
|
167
166
|
const accounts = new TestAccounts(currentServiceId);
|
|
168
|
-
const read = new
|
|
167
|
+
const read = Read.new(currentServiceId, accounts);
|
|
169
168
|
const serviceId = tryAsServiceId(10_000);
|
|
170
169
|
const value = "xyz";
|
|
171
170
|
const key = BytesBlob.blobFromString(value);
|
|
@@ -177,7 +176,7 @@ describe("HostCalls: Read", () => {
|
|
|
177
176
|
it("should fail if there is no memory for result", async () => {
|
|
178
177
|
const currentServiceId = tryAsServiceId(10_000);
|
|
179
178
|
const accounts = new TestAccounts(currentServiceId);
|
|
180
|
-
const read = new
|
|
179
|
+
const read = Read.new(currentServiceId, accounts);
|
|
181
180
|
const serviceId = tryAsServiceId(10_000);
|
|
182
181
|
const value = "xyz";
|
|
183
182
|
const key = BytesBlob.blobFromString(value);
|
|
@@ -28,7 +28,8 @@ export declare class Write implements HostCallHandler {
|
|
|
28
28
|
index: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"HostCallIndex[U32]">;
|
|
29
29
|
basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
|
|
30
30
|
tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
|
|
31
|
-
|
|
31
|
+
static new(currentServiceId: ServiceId, account: AccountsWrite): Write;
|
|
32
|
+
private constructor();
|
|
32
33
|
execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<undefined | PvmExecution>;
|
|
33
34
|
}
|
|
34
35
|
//# sourceMappingURL=write.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/write.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAE3E,OAAO,EAAgB,KAAK,MAAM,EAAuC,MAAM,kBAAkB,CAAC;AAKlG,mDAAmD;AACnD,MAAM,WAAW,aAAa;IAC5B;;;;;;;;OAQG;IACH,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;CACjF;AAID;;;;GAIG;AACH,qBAAa,KAAM,YAAW,eAAe;
|
|
1
|
+
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/write.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAE3E,OAAO,EAAgB,KAAK,MAAM,EAAuC,MAAM,kBAAkB,CAAC;AAKlG,mDAAmD;AACnD,MAAM,WAAW,aAAa;IAC5B;;;;;;;;OAQG;IACH,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;CACjF;AAID;;;;GAIG;AACH,qBAAa,KAAM,YAAW,eAAe;aAUzB,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAV1B,KAAK,iIAAyB;IAC9B,YAAY,4HAAqB;IACjC,eAAe,uEAAwC;IAEvD,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa;IAI9D,OAAO;IAKD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CA+CrH"}
|
|
@@ -18,6 +18,9 @@ export class Write {
|
|
|
18
18
|
index = tryAsHostCallIndex(4);
|
|
19
19
|
basicGasCost = tryAsSmallGas(10);
|
|
20
20
|
tracedRegisters = traceRegisters(IN_OUT_REG, 8, 9, 10);
|
|
21
|
+
static new(currentServiceId, account) {
|
|
22
|
+
return new Write(currentServiceId, account);
|
|
23
|
+
}
|
|
21
24
|
constructor(currentServiceId, account) {
|
|
22
25
|
this.currentServiceId = currentServiceId;
|
|
23
26
|
this.account = account;
|
|
@@ -12,7 +12,6 @@ import { PAGE_SIZE } from "#@typeberry/pvm-interpreter/spi-decoder/memory-conts.
|
|
|
12
12
|
import { ServiceAccountInfo } from "#@typeberry/state";
|
|
13
13
|
import { asOpaqueType } from "#@typeberry/utils";
|
|
14
14
|
import { TestAccounts } from "../externalities/test-accounts.js";
|
|
15
|
-
import { emptyRegistersBuffer } from "../utils.js";
|
|
16
15
|
import { HostCallResult } from "./results.js";
|
|
17
16
|
import { Write } from "./write.js";
|
|
18
17
|
const gas = gasCounter(tryAsGas(0));
|
|
@@ -40,7 +39,7 @@ function prepareAccounts(serviceId, { balance, gratisStorage } = {}) {
|
|
|
40
39
|
function prepareRegsAndMemory(key, dataInMemory, { skipKey = false, skipValue = false } = {}) {
|
|
41
40
|
const keyAddress = 2 ** 18;
|
|
42
41
|
const memStart = 2 ** 16;
|
|
43
|
-
const registers =
|
|
42
|
+
const registers = HostCallRegisters.empty();
|
|
44
43
|
registers.set(KEY_START_REG, tryAsU64(keyAddress));
|
|
45
44
|
registers.set(KEY_LEN_REG, tryAsU64(key.length));
|
|
46
45
|
registers.set(DEST_START_REG, tryAsU64(memStart));
|
|
@@ -52,7 +51,7 @@ function prepareRegsAndMemory(key, dataInMemory, { skipKey = false, skipValue =
|
|
|
52
51
|
if (!skipValue && dataInMemory.length > 0) {
|
|
53
52
|
builder.setReadablePages(tryAsMemoryIndex(memStart), tryAsMemoryIndex(memStart + PAGE_SIZE), dataInMemory.raw);
|
|
54
53
|
}
|
|
55
|
-
const memory = new
|
|
54
|
+
const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
|
|
56
55
|
return {
|
|
57
56
|
registers,
|
|
58
57
|
memory,
|
|
@@ -62,7 +61,7 @@ describe("HostCalls: Write", () => {
|
|
|
62
61
|
it("should write data to account state", async () => {
|
|
63
62
|
const serviceId = tryAsServiceId(10_000);
|
|
64
63
|
const accounts = prepareAccounts(serviceId);
|
|
65
|
-
const write = new
|
|
64
|
+
const write = Write.new(serviceId, accounts);
|
|
66
65
|
const key = BytesBlob.blobFromString("imma key");
|
|
67
66
|
const { registers, memory } = prepareRegsAndMemory(key, BytesBlob.blobFromString("hello world!"));
|
|
68
67
|
accounts.storage.set(BytesBlob.blobFromString("old data"), serviceId, asOpaqueType(key));
|
|
@@ -77,7 +76,7 @@ describe("HostCalls: Write", () => {
|
|
|
77
76
|
it("should write data to account state when low balance but with gratisStorage", async () => {
|
|
78
77
|
const serviceId = tryAsServiceId(10_000);
|
|
79
78
|
const accounts = prepareAccounts(serviceId, { balance: 100n, gratisStorage: 150000n });
|
|
80
|
-
const write = new
|
|
79
|
+
const write = Write.new(serviceId, accounts);
|
|
81
80
|
const key = BytesBlob.blobFromString("imma key");
|
|
82
81
|
const { registers, memory } = prepareRegsAndMemory(key, BytesBlob.blobFromString("hello world!"));
|
|
83
82
|
accounts.storage.set(BytesBlob.blobFromString("old data"), serviceId, asOpaqueType(key));
|
|
@@ -92,7 +91,7 @@ describe("HostCalls: Write", () => {
|
|
|
92
91
|
it("should remove data from account state", async () => {
|
|
93
92
|
const serviceId = tryAsServiceId(10_000);
|
|
94
93
|
const accounts = prepareAccounts(serviceId);
|
|
95
|
-
const write = new
|
|
94
|
+
const write = Write.new(serviceId, accounts);
|
|
96
95
|
const key = BytesBlob.blobFromString("xyz");
|
|
97
96
|
const { registers, memory } = prepareRegsAndMemory(key, BytesBlob.blobFromNumbers([]));
|
|
98
97
|
accounts.storage.set(BytesBlob.blobFromString("hello world!"), serviceId, asOpaqueType(key));
|
|
@@ -107,7 +106,7 @@ describe("HostCalls: Write", () => {
|
|
|
107
106
|
it("should fail if there is no memory for key", async () => {
|
|
108
107
|
const serviceId = tryAsServiceId(10_000);
|
|
109
108
|
const accounts = prepareAccounts(serviceId);
|
|
110
|
-
const write = new
|
|
109
|
+
const write = Write.new(serviceId, accounts);
|
|
111
110
|
const key = BytesBlob.blobFromString("xyz");
|
|
112
111
|
const { registers, memory } = prepareRegsAndMemory(key, BytesBlob.blobFromString("hello world!"), {
|
|
113
112
|
skipKey: true,
|
|
@@ -121,7 +120,7 @@ describe("HostCalls: Write", () => {
|
|
|
121
120
|
it("should fail if there is no memory for result", async () => {
|
|
122
121
|
const serviceId = tryAsServiceId(10_000);
|
|
123
122
|
const accounts = prepareAccounts(serviceId);
|
|
124
|
-
const write = new
|
|
123
|
+
const write = Write.new(serviceId, accounts);
|
|
125
124
|
const key = BytesBlob.blobFromString("xyz");
|
|
126
125
|
const { registers, memory } = prepareRegsAndMemory(key, BytesBlob.blobFromString("hello world!"), {
|
|
127
126
|
skipValue: true,
|
|
@@ -135,7 +134,7 @@ describe("HostCalls: Write", () => {
|
|
|
135
134
|
it("should fail if the key is not fully readable", async () => {
|
|
136
135
|
const serviceId = tryAsServiceId(10_000);
|
|
137
136
|
const accounts = prepareAccounts(serviceId);
|
|
138
|
-
const write = new
|
|
137
|
+
const write = Write.new(serviceId, accounts);
|
|
139
138
|
const key = BytesBlob.blobFromString("xyz");
|
|
140
139
|
const { registers, memory } = prepareRegsAndMemory(key, BytesBlob.blobFromString("hello world!"));
|
|
141
140
|
registers.set(KEY_LEN_REG, tryAsU64(PAGE_SIZE + 1));
|
|
@@ -148,7 +147,7 @@ describe("HostCalls: Write", () => {
|
|
|
148
147
|
it("should fail if the value is not fully readable", async () => {
|
|
149
148
|
const serviceId = tryAsServiceId(10_000);
|
|
150
149
|
const accounts = prepareAccounts(serviceId);
|
|
151
|
-
const write = new
|
|
150
|
+
const write = Write.new(serviceId, accounts);
|
|
152
151
|
const key = BytesBlob.blobFromString("xyz");
|
|
153
152
|
const { registers, memory } = prepareRegsAndMemory(key, BytesBlob.blobFromString("hello world!"));
|
|
154
153
|
registers.set(DEST_LEN_REG, tryAsU64(PAGE_SIZE + 1));
|
|
@@ -161,7 +160,7 @@ describe("HostCalls: Write", () => {
|
|
|
161
160
|
it("should handle storage full when low balance in the account", async () => {
|
|
162
161
|
const serviceId = tryAsServiceId(10_000);
|
|
163
162
|
const accounts = prepareAccounts(serviceId, { balance: 100n });
|
|
164
|
-
const write = new
|
|
163
|
+
const write = Write.new(serviceId, accounts);
|
|
165
164
|
const key = BytesBlob.blobFromString("imma key");
|
|
166
165
|
const { registers, memory } = prepareRegsAndMemory(key, BytesBlob.blobFromString("hello world! Is super long very very very."));
|
|
167
166
|
accounts.storage.set(BytesBlob.blobFromString("old data"), serviceId, asOpaqueType(key));
|
|
@@ -12,7 +12,8 @@ export declare class Export implements HostCallHandler {
|
|
|
12
12
|
basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
|
|
13
13
|
currentServiceId: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"ServiceId[u32]">;
|
|
14
14
|
tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
|
|
15
|
-
|
|
15
|
+
static new(refine: RefineExternalities): Export;
|
|
16
|
+
private constructor();
|
|
16
17
|
execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<PvmExecution | undefined>;
|
|
17
18
|
}
|
|
18
19
|
//# sourceMappingURL=export.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/refine/export.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,YAAY,EAGb,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAE3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAOpF;;;;GAIG;AACH,qBAAa,MAAO,YAAW,eAAe;
|
|
1
|
+
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/refine/export.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,YAAY,EAGb,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAE3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAOpF;;;;GAIG;AACH,qBAAa,MAAO,YAAW,eAAe;IAUxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAT3C,KAAK,iIAAyB;IAC9B,YAAY,4HAAqB;IACjC,gBAAgB,6HAAsB;IACtC,eAAe,uEAAiC;IAEhD,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB;IAItC,OAAO;IAED,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;CA0BrH"}
|
|
@@ -19,6 +19,9 @@ export class Export {
|
|
|
19
19
|
basicGasCost = tryAsSmallGas(10);
|
|
20
20
|
currentServiceId = CURRENT_SERVICE_ID;
|
|
21
21
|
tracedRegisters = traceRegisters(IN_OUT_REG, 8);
|
|
22
|
+
static new(refine) {
|
|
23
|
+
return new Export(refine);
|
|
24
|
+
}
|
|
22
25
|
constructor(refine) {
|
|
23
26
|
this.refine = refine;
|
|
24
27
|
}
|
|
@@ -13,7 +13,6 @@ import { Result } from "#@typeberry/utils";
|
|
|
13
13
|
import { SegmentExportError } from "../externalities/refine-externalities.js";
|
|
14
14
|
import { TestRefineExt } from "../externalities/refine-externalities.test.js";
|
|
15
15
|
import { HostCallResult } from "../general/results.js";
|
|
16
|
-
import { emptyRegistersBuffer } from "../utils.js";
|
|
17
16
|
import { Export } from "./export.js";
|
|
18
17
|
const gas = gasCounter(tryAsGas(0));
|
|
19
18
|
const SEGMENT_START_REG = 7;
|
|
@@ -21,14 +20,14 @@ const RESULT_REG = SEGMENT_START_REG;
|
|
|
21
20
|
const SEGMENT_LENGTH_REG = 8;
|
|
22
21
|
function prepareRegsAndMemory(segment, segmentLength = segment.length, { skipSegment = false } = {}) {
|
|
23
22
|
const memStart = 2 ** 23;
|
|
24
|
-
const registers =
|
|
23
|
+
const registers = HostCallRegisters.empty();
|
|
25
24
|
registers.set(SEGMENT_START_REG, tryAsU64(memStart));
|
|
26
25
|
registers.set(SEGMENT_LENGTH_REG, tryAsU64(segmentLength));
|
|
27
26
|
const builder = new MemoryBuilder();
|
|
28
27
|
if (!skipSegment) {
|
|
29
28
|
builder.setReadablePages(tryAsMemoryIndex(memStart), tryAsMemoryIndex(memStart + 2 * PAGE_SIZE), segment.raw);
|
|
30
29
|
}
|
|
31
|
-
const memory = new
|
|
30
|
+
const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
|
|
32
31
|
return {
|
|
33
32
|
registers,
|
|
34
33
|
memory,
|
|
@@ -37,7 +36,7 @@ function prepareRegsAndMemory(segment, segmentLength = segment.length, { skipSeg
|
|
|
37
36
|
describe("HostCalls: Export", () => {
|
|
38
37
|
it("should export a segment", async () => {
|
|
39
38
|
const refine = new TestRefineExt();
|
|
40
|
-
const exp = new
|
|
39
|
+
const exp = Export.new(refine);
|
|
41
40
|
exp.currentServiceId = tryAsServiceId(10_000);
|
|
42
41
|
const segment = Bytes.fill(SEGMENT_BYTES, 15).asOpaque();
|
|
43
42
|
const { registers, memory } = prepareRegsAndMemory(segment);
|
|
@@ -51,7 +50,7 @@ describe("HostCalls: Export", () => {
|
|
|
51
50
|
});
|
|
52
51
|
it("should zero-pad when exported value is small", async () => {
|
|
53
52
|
const refine = new TestRefineExt();
|
|
54
|
-
const exp = new
|
|
53
|
+
const exp = Export.new(refine);
|
|
55
54
|
exp.currentServiceId = tryAsServiceId(10_000);
|
|
56
55
|
const segment = Bytes.fill(SEGMENT_BYTES, 15).asOpaque();
|
|
57
56
|
const { registers, memory } = prepareRegsAndMemory(segment, 2);
|
|
@@ -68,7 +67,7 @@ describe("HostCalls: Export", () => {
|
|
|
68
67
|
});
|
|
69
68
|
it("should panic if memory is not readable", async () => {
|
|
70
69
|
const refine = new TestRefineExt();
|
|
71
|
-
const exp = new
|
|
70
|
+
const exp = Export.new(refine);
|
|
72
71
|
exp.currentServiceId = tryAsServiceId(10_000);
|
|
73
72
|
const segment = Bytes.fill(SEGMENT_BYTES, 15).asOpaque();
|
|
74
73
|
const { registers, memory } = prepareRegsAndMemory(segment, segment.length, { skipSegment: true });
|
|
@@ -80,7 +79,7 @@ describe("HostCalls: Export", () => {
|
|
|
80
79
|
});
|
|
81
80
|
it("should fail with FULL if export limit is reached", async () => {
|
|
82
81
|
const refine = new TestRefineExt();
|
|
83
|
-
const exp = new
|
|
82
|
+
const exp = Export.new(refine);
|
|
84
83
|
exp.currentServiceId = tryAsServiceId(10_000);
|
|
85
84
|
const segment = Bytes.fill(SEGMENT_BYTES, 15).asOpaque();
|
|
86
85
|
const { registers, memory } = prepareRegsAndMemory(segment);
|
|
@@ -12,7 +12,8 @@ export declare class Expunge implements HostCallHandler {
|
|
|
12
12
|
basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
|
|
13
13
|
currentServiceId: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"ServiceId[u32]">;
|
|
14
14
|
tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
|
|
15
|
-
|
|
15
|
+
static new(refine: RefineExternalities): Expunge;
|
|
16
|
+
private constructor();
|
|
16
17
|
execute(_gas: IGasCounter, regs: HostCallRegisters): Promise<PvmExecution | undefined>;
|
|
17
18
|
}
|
|
18
19
|
//# sourceMappingURL=expunge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expunge.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/refine/expunge.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EAGlB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAE3E,OAAO,EAAE,KAAK,mBAAmB,EAAkB,MAAM,0CAA0C,CAAC;AAOpG;;;;GAIG;AACH,qBAAa,OAAQ,YAAW,eAAe;
|
|
1
|
+
{"version":3,"file":"expunge.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/refine/expunge.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EAGlB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAE3E,OAAO,EAAE,KAAK,mBAAmB,EAAkB,MAAM,0CAA0C,CAAC;AAOpG;;;;GAIG;AACH,qBAAa,OAAQ,YAAW,eAAe;IAUzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAT3C,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,gBAAgB,6HAAsB;IACtC,eAAe,uEAA8B;IAE7C,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB;IAItC,OAAO;IAED,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;CAe7F"}
|
|
@@ -17,6 +17,9 @@ export class Expunge {
|
|
|
17
17
|
basicGasCost = tryAsSmallGas(10);
|
|
18
18
|
currentServiceId = CURRENT_SERVICE_ID;
|
|
19
19
|
tracedRegisters = traceRegisters(IN_OUT_REG);
|
|
20
|
+
static new(refine) {
|
|
21
|
+
return new Expunge(refine);
|
|
22
|
+
}
|
|
20
23
|
constructor(refine) {
|
|
21
24
|
this.refine = refine;
|
|
22
25
|
}
|
|
@@ -9,15 +9,14 @@ import { Result } from "#@typeberry/utils";
|
|
|
9
9
|
import { NoMachineError, tryAsMachineId, tryAsProgramCounter, } from "../externalities/refine-externalities.js";
|
|
10
10
|
import { TestRefineExt } from "../externalities/refine-externalities.test.js";
|
|
11
11
|
import { HostCallResult } from "../general/results.js";
|
|
12
|
-
import { emptyRegistersBuffer } from "../utils.js";
|
|
13
12
|
import { Expunge } from "./expunge.js";
|
|
14
13
|
const gas = gasCounter(tryAsGas(0));
|
|
15
14
|
const RESULT_REG = 7;
|
|
16
15
|
function prepareRegsAndMemory(machineId) {
|
|
17
|
-
const registers =
|
|
16
|
+
const registers = HostCallRegisters.empty();
|
|
18
17
|
registers.set(7, machineId);
|
|
19
18
|
const builder = new MemoryBuilder();
|
|
20
|
-
const memory = new
|
|
19
|
+
const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
|
|
21
20
|
return {
|
|
22
21
|
registers,
|
|
23
22
|
memory,
|
|
@@ -25,7 +24,7 @@ function prepareRegsAndMemory(machineId) {
|
|
|
25
24
|
}
|
|
26
25
|
function prepareTest(result) {
|
|
27
26
|
const refine = new TestRefineExt();
|
|
28
|
-
const expunge = new
|
|
27
|
+
const expunge = Expunge.new(refine);
|
|
29
28
|
expunge.currentServiceId = tryAsServiceId(10_000);
|
|
30
29
|
const machineId = tryAsMachineId(10_000);
|
|
31
30
|
const { registers, memory } = prepareRegsAndMemory(machineId);
|
|
@@ -12,7 +12,8 @@ export declare class HistoricalLookup implements HostCallHandler {
|
|
|
12
12
|
basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
|
|
13
13
|
currentServiceId: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"ServiceId[u32]">;
|
|
14
14
|
tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
|
|
15
|
-
|
|
15
|
+
static new(refine: RefineExternalities): HistoricalLookup;
|
|
16
|
+
private constructor();
|
|
16
17
|
execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<PvmExecution | undefined>;
|
|
17
18
|
}
|
|
18
19
|
//# sourceMappingURL=historical-lookup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"historical-lookup.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/refine/historical-lookup.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,YAAY,EAGb,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAC3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAOpF;;;;GAIG;AACH,qBAAa,gBAAiB,YAAW,eAAe;
|
|
1
|
+
{"version":3,"file":"historical-lookup.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/refine/historical-lookup.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,YAAY,EAGb,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAC3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAOpF;;;;GAIG;AACH,qBAAa,gBAAiB,YAAW,eAAe;IAUlC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAT3C,KAAK,iIAAyB;IAC9B,YAAY,4HAAqB;IACjC,gBAAgB,6HAAsB;IACtC,eAAe,uEAAoC;IAEnD,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB;IAItC,OAAO;IAED,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;CAyCrH"}
|
|
@@ -18,6 +18,9 @@ export class HistoricalLookup {
|
|
|
18
18
|
basicGasCost = tryAsSmallGas(10);
|
|
19
19
|
currentServiceId = CURRENT_SERVICE_ID;
|
|
20
20
|
tracedRegisters = traceRegisters(IN_OUT_REG, 8, 9);
|
|
21
|
+
static new(refine) {
|
|
22
|
+
return new HistoricalLookup(refine);
|
|
23
|
+
}
|
|
21
24
|
constructor(refine) {
|
|
22
25
|
this.refine = refine;
|
|
23
26
|
}
|
|
@@ -11,7 +11,6 @@ import { tryAsSbrkIndex } from "#@typeberry/pvm-interpreter/memory/memory-index.
|
|
|
11
11
|
import { PAGE_SIZE } from "#@typeberry/pvm-interpreter/spi-decoder/memory-conts.js";
|
|
12
12
|
import { TestRefineExt } from "../externalities/refine-externalities.test.js";
|
|
13
13
|
import { HostCallResult } from "../general/results.js";
|
|
14
|
-
import { emptyRegistersBuffer } from "../utils.js";
|
|
15
14
|
import { HistoricalLookup } from "./historical-lookup.js";
|
|
16
15
|
const gas = gasCounter(tryAsGas(0));
|
|
17
16
|
const SERVICE_ID_REG = 7;
|
|
@@ -23,7 +22,7 @@ const DEST_LEN_REG = 11;
|
|
|
23
22
|
function prepareRegsAndMemory(serviceId, hash, offset, destinationLength, { skipHash = false, writableMemory = true } = {}) {
|
|
24
23
|
const hashAddress = 2 ** 16;
|
|
25
24
|
const memStart = 2 ** 20;
|
|
26
|
-
const registers =
|
|
25
|
+
const registers = HostCallRegisters.empty();
|
|
27
26
|
registers.set(SERVICE_ID_REG, tryAsU64(serviceId));
|
|
28
27
|
registers.set(HASH_START_REG, tryAsU64(hashAddress));
|
|
29
28
|
registers.set(DEST_START_REG, tryAsU64(memStart));
|
|
@@ -36,7 +35,7 @@ function prepareRegsAndMemory(serviceId, hash, offset, destinationLength, { skip
|
|
|
36
35
|
if (writableMemory) {
|
|
37
36
|
builder.setWriteablePages(tryAsMemoryIndex(memStart), tryAsMemoryIndex(memStart + PAGE_SIZE));
|
|
38
37
|
}
|
|
39
|
-
const memory = new
|
|
38
|
+
const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
|
|
40
39
|
return {
|
|
41
40
|
registers,
|
|
42
41
|
memory,
|
|
@@ -50,7 +49,7 @@ function prepareRegsAndMemory(serviceId, hash, offset, destinationLength, { skip
|
|
|
50
49
|
describe("HostCalls: Historical Lookup", () => {
|
|
51
50
|
it("should lookup key from an account", async () => {
|
|
52
51
|
const refine = new TestRefineExt();
|
|
53
|
-
const lookup = new
|
|
52
|
+
const lookup = HistoricalLookup.new(refine);
|
|
54
53
|
const serviceId = tryAsServiceId(10_000);
|
|
55
54
|
const hash = Bytes.fill(32, 3);
|
|
56
55
|
const data = "hello world";
|
|
@@ -65,7 +64,7 @@ describe("HostCalls: Historical Lookup", () => {
|
|
|
65
64
|
});
|
|
66
65
|
it("should lookup key longer than destination", async () => {
|
|
67
66
|
const refine = new TestRefineExt();
|
|
68
|
-
const lookup = new
|
|
67
|
+
const lookup = HistoricalLookup.new(refine);
|
|
69
68
|
const serviceId = tryAsServiceId(10_000);
|
|
70
69
|
const hash = Bytes.fill(32, 3);
|
|
71
70
|
const data = "hello world";
|
|
@@ -80,7 +79,7 @@ describe("HostCalls: Historical Lookup", () => {
|
|
|
80
79
|
});
|
|
81
80
|
it("should lookup key longer than destination + offset", async () => {
|
|
82
81
|
const refine = new TestRefineExt();
|
|
83
|
-
const lookup = new
|
|
82
|
+
const lookup = HistoricalLookup.new(refine);
|
|
84
83
|
const serviceId = tryAsServiceId(10_000);
|
|
85
84
|
const hash = Bytes.fill(32, 3);
|
|
86
85
|
const data = "hello world";
|
|
@@ -95,7 +94,7 @@ describe("HostCalls: Historical Lookup", () => {
|
|
|
95
94
|
});
|
|
96
95
|
it("should handle missing value", async () => {
|
|
97
96
|
const refine = new TestRefineExt();
|
|
98
|
-
const lookup = new
|
|
97
|
+
const lookup = HistoricalLookup.new(refine);
|
|
99
98
|
const serviceId = tryAsServiceId(10_000);
|
|
100
99
|
const hash = Bytes.fill(32, 3);
|
|
101
100
|
const { registers, memory, readResult } = prepareRegsAndMemory(serviceId, hash, 0, 32);
|
|
@@ -109,7 +108,7 @@ describe("HostCalls: Historical Lookup", () => {
|
|
|
109
108
|
});
|
|
110
109
|
it("should panic if no memory for key", async () => {
|
|
111
110
|
const refine = new TestRefineExt();
|
|
112
|
-
const lookup = new
|
|
111
|
+
const lookup = HistoricalLookup.new(refine);
|
|
113
112
|
const serviceId = tryAsServiceId(10_000);
|
|
114
113
|
const hash = Bytes.fill(32, 3);
|
|
115
114
|
const { registers, memory } = prepareRegsAndMemory(serviceId, hash, 0, 32, { skipHash: true });
|
|
@@ -121,7 +120,7 @@ describe("HostCalls: Historical Lookup", () => {
|
|
|
121
120
|
});
|
|
122
121
|
it("should panic if memory is not writable", async () => {
|
|
123
122
|
const refine = new TestRefineExt();
|
|
124
|
-
const lookup = new
|
|
123
|
+
const lookup = HistoricalLookup.new(refine);
|
|
125
124
|
const serviceId = tryAsServiceId(10_000);
|
|
126
125
|
const hash = Bytes.fill(32, 3);
|
|
127
126
|
const data = "hello world";
|
|
@@ -135,7 +134,7 @@ describe("HostCalls: Historical Lookup", () => {
|
|
|
135
134
|
});
|
|
136
135
|
it("should handle if the destination length is greater than data length", async () => {
|
|
137
136
|
const refine = new TestRefineExt();
|
|
138
|
-
const lookup = new
|
|
137
|
+
const lookup = HistoricalLookup.new(refine);
|
|
139
138
|
const serviceId = tryAsServiceId(10_000);
|
|
140
139
|
const hash = Bytes.fill(32, 3);
|
|
141
140
|
const data = "hello world";
|
|
@@ -151,7 +150,7 @@ describe("HostCalls: Historical Lookup", () => {
|
|
|
151
150
|
});
|
|
152
151
|
it("should panic if the destination is beyond mem limit", async () => {
|
|
153
152
|
const refine = new TestRefineExt();
|
|
154
|
-
const lookup = new
|
|
153
|
+
const lookup = HistoricalLookup.new(refine);
|
|
155
154
|
const serviceId = tryAsServiceId(10_000);
|
|
156
155
|
const hash = Bytes.fill(32, 3);
|
|
157
156
|
const data = "hello world";
|
|
@@ -167,7 +166,7 @@ describe("HostCalls: Historical Lookup", () => {
|
|
|
167
166
|
});
|
|
168
167
|
it("should handle 0-length destination", async () => {
|
|
169
168
|
const refine = new TestRefineExt();
|
|
170
|
-
const lookup = new
|
|
169
|
+
const lookup = HistoricalLookup.new(refine);
|
|
171
170
|
const serviceId = tryAsServiceId(10_000);
|
|
172
171
|
const hash = Bytes.fill(32, 3);
|
|
173
172
|
const data = "hello world";
|
|
@@ -12,7 +12,8 @@ export declare class Invoke implements HostCallHandler {
|
|
|
12
12
|
basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
|
|
13
13
|
currentServiceId: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"ServiceId[u32]">;
|
|
14
14
|
tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
|
|
15
|
-
|
|
15
|
+
static new(refine: RefineExternalities): Invoke;
|
|
16
|
+
private constructor();
|
|
16
17
|
execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<PvmExecution | undefined>;
|
|
17
18
|
}
|
|
18
19
|
//# sourceMappingURL=invoke.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invoke.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/refine/invoke.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,iBAAiB,EACjB,YAAY,EAGb,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,KAAK,WAAW,EAMjB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,KAAK,mBAAmB,EAAkB,MAAM,0CAA0C,CAAC;AAapG;;;;GAIG;AACH,qBAAa,MAAO,YAAW,eAAe;
|
|
1
|
+
{"version":3,"file":"invoke.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/refine/invoke.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,iBAAiB,EACjB,YAAY,EAGb,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,KAAK,WAAW,EAMjB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,KAAK,mBAAmB,EAAkB,MAAM,0CAA0C,CAAC;AAapG;;;;GAIG;AACH,qBAAa,MAAO,YAAW,eAAe;IAUxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAT3C,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,gBAAgB,6HAAsB;IACtC,eAAe,uEAA8C;IAE7D,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB;IAItC,OAAO;IAED,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;CAyErH"}
|
|
@@ -26,6 +26,9 @@ export class Invoke {
|
|
|
26
26
|
basicGasCost = tryAsSmallGas(10);
|
|
27
27
|
currentServiceId = CURRENT_SERVICE_ID;
|
|
28
28
|
tracedRegisters = traceRegisters(IN_OUT_REG_1, IN_OUT_REG_2);
|
|
29
|
+
static new(refine) {
|
|
30
|
+
return new Invoke(refine);
|
|
31
|
+
}
|
|
29
32
|
constructor(refine) {
|
|
30
33
|
this.refine = refine;
|
|
31
34
|
}
|
|
@@ -53,7 +56,7 @@ export class Invoke {
|
|
|
53
56
|
// `g`
|
|
54
57
|
const gasCost = tryAsBigGas(gasRegisters.gas);
|
|
55
58
|
// `w`
|
|
56
|
-
const registers =
|
|
59
|
+
const registers = HostCallRegisters.fromRaw(gasRegisters.registers.raw);
|
|
57
60
|
// try run the machine
|
|
58
61
|
const state = await this.refine.machineInvoke(machineIndex, gasCost, registers);
|
|
59
62
|
logger.trace `[${this.currentServiceId}] INVOKE(${machineIndex}, ${gasCost}, ${registers}) <- ${resultToString(state)}`;
|
|
@@ -12,7 +12,6 @@ import { PAGE_SIZE } from "#@typeberry/pvm-interpreter/spi-decoder/memory-conts.
|
|
|
12
12
|
import { MachineInstance, tryAsMachineId, } from "../externalities/refine-externalities.js";
|
|
13
13
|
import { TestRefineExt } from "../externalities/refine-externalities.test.js";
|
|
14
14
|
import { HostCallResult } from "../general/results.js";
|
|
15
|
-
import { emptyRegistersBuffer } from "../utils.js";
|
|
16
15
|
import { Invoke } from "./invoke.js";
|
|
17
16
|
const gas = gasCounter(tryAsGas(0));
|
|
18
17
|
const MACHINE_INDEX_REG = 7;
|
|
@@ -22,10 +21,10 @@ const RESULT_REG_2 = DEST_REG;
|
|
|
22
21
|
const GAS_REG_SIZE = 112;
|
|
23
22
|
const MEM_START = RESERVED_NUMBER_OF_PAGES * PAGE_SIZE;
|
|
24
23
|
function prepareRegsAndMemory(machineIndex, destinationStart, data, { registerMemory = true } = {}) {
|
|
25
|
-
const registers =
|
|
24
|
+
const registers = HostCallRegisters.empty();
|
|
26
25
|
registers.set(MACHINE_INDEX_REG, machineIndex);
|
|
27
26
|
registers.set(DEST_REG, tryAsU64(destinationStart));
|
|
28
|
-
const memory = new
|
|
27
|
+
const memory = HostCallMemory.new(prepareMemory(data, destinationStart, PAGE_SIZE, { registerMemory }));
|
|
29
28
|
return {
|
|
30
29
|
registers,
|
|
31
30
|
memory,
|
|
@@ -55,7 +54,7 @@ describe("HostCalls: Invoke", () => {
|
|
|
55
54
|
}, {
|
|
56
55
|
registerMachine: false,
|
|
57
56
|
});
|
|
58
|
-
const invoke = new
|
|
57
|
+
const invoke = Invoke.new(refine);
|
|
59
58
|
invoke.currentServiceId = tryAsServiceId(10_000);
|
|
60
59
|
const w7 = tryAsU64(machineId);
|
|
61
60
|
const w8 = tryAsU64(MEM_START);
|
|
@@ -72,7 +71,7 @@ describe("HostCalls: Invoke", () => {
|
|
|
72
71
|
}, {
|
|
73
72
|
registerMachine: false,
|
|
74
73
|
});
|
|
75
|
-
const invoke = new
|
|
74
|
+
const invoke = Invoke.new(refine);
|
|
76
75
|
invoke.currentServiceId = tryAsServiceId(10_000);
|
|
77
76
|
const w7 = tryAsU64(machineId);
|
|
78
77
|
const w8 = tryAsU64(MEM_START);
|
|
@@ -87,7 +86,7 @@ describe("HostCalls: Invoke", () => {
|
|
|
87
86
|
const [refine, machineId] = await prepareMachine({
|
|
88
87
|
status: Status.OK,
|
|
89
88
|
});
|
|
90
|
-
const invoke = new
|
|
89
|
+
const invoke = Invoke.new(refine);
|
|
91
90
|
invoke.currentServiceId = tryAsServiceId(10_000);
|
|
92
91
|
const w7 = tryAsU64(machineId + 1n);
|
|
93
92
|
const w8 = tryAsU64(MEM_START);
|
|
@@ -104,7 +103,7 @@ describe("HostCalls: Invoke", () => {
|
|
|
104
103
|
status: Status.HOST,
|
|
105
104
|
hostCallIndex,
|
|
106
105
|
});
|
|
107
|
-
const invoke = new
|
|
106
|
+
const invoke = Invoke.new(refine);
|
|
108
107
|
invoke.currentServiceId = tryAsServiceId(10_000);
|
|
109
108
|
const w7 = tryAsU64(machineId);
|
|
110
109
|
const w8 = tryAsU64(MEM_START);
|
|
@@ -121,7 +120,7 @@ describe("HostCalls: Invoke", () => {
|
|
|
121
120
|
status: Status.FAULT,
|
|
122
121
|
address,
|
|
123
122
|
});
|
|
124
|
-
const invoke = new
|
|
123
|
+
const invoke = Invoke.new(refine);
|
|
125
124
|
invoke.currentServiceId = tryAsServiceId(10_000);
|
|
126
125
|
const w7 = tryAsU64(machineId);
|
|
127
126
|
const w8 = tryAsU64(MEM_START);
|
|
@@ -136,7 +135,7 @@ describe("HostCalls: Invoke", () => {
|
|
|
136
135
|
const [refine, machineId] = await prepareMachine({
|
|
137
136
|
status: Status.OOG,
|
|
138
137
|
});
|
|
139
|
-
const invoke = new
|
|
138
|
+
const invoke = Invoke.new(refine);
|
|
140
139
|
invoke.currentServiceId = tryAsServiceId(10_000);
|
|
141
140
|
const w7 = tryAsU64(machineId);
|
|
142
141
|
const w8 = tryAsU64(MEM_START);
|
|
@@ -151,7 +150,7 @@ describe("HostCalls: Invoke", () => {
|
|
|
151
150
|
const [refine, machineId] = await prepareMachine({
|
|
152
151
|
status: Status.PANIC,
|
|
153
152
|
});
|
|
154
|
-
const invoke = new
|
|
153
|
+
const invoke = Invoke.new(refine);
|
|
155
154
|
invoke.currentServiceId = tryAsServiceId(10_000);
|
|
156
155
|
const w7 = tryAsU64(machineId);
|
|
157
156
|
const w8 = tryAsU64(MEM_START);
|
|
@@ -166,7 +165,7 @@ describe("HostCalls: Invoke", () => {
|
|
|
166
165
|
const [refine, machineId] = await prepareMachine({
|
|
167
166
|
status: Status.HALT,
|
|
168
167
|
});
|
|
169
|
-
const invoke = new
|
|
168
|
+
const invoke = Invoke.new(refine);
|
|
170
169
|
invoke.currentServiceId = tryAsServiceId(10_000);
|
|
171
170
|
const w7 = tryAsU64(machineId);
|
|
172
171
|
const w8 = tryAsU64(MEM_START);
|