@typeberry/lib 0.5.10-7338c21 → 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/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.js +24 -24
- 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.js +1 -1
- package/packages/jam/in-core/externalities/refine.test.js +3 -3
- package/packages/jam/in-core/in-core.d.ts +2 -1
- package/packages/jam/in-core/in-core.d.ts.map +1 -1
- package/packages/jam/in-core/in-core.js +3 -0
- package/packages/jam/in-core/in-core.test.js +6 -6
- package/packages/jam/in-core/is-authorized.test.js +2 -2
- package/packages/jam/in-core/refine.js +1 -1
- 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 +3 -0
- 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/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 +2 -1
- package/packages/jam/jam-host-calls/general/fetch.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/general/fetch.js +3 -0
- package/packages/jam/jam-host-calls/general/fetch.test.js +27 -28
- 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 +4 -1
- 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/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 +20 -6
- package/packages/jam/transition/externalities/accumulate-externalities.d.ts.map +1 -1
- package/packages/jam/transition/externalities/accumulate-externalities.js +29 -22
- package/packages/jam/transition/externalities/accumulate-externalities.test.js +590 -100
- package/packages/jam/transition/externalities/refine-fetch-externalities.d.ts +2 -1
- package/packages/jam/transition/externalities/refine-fetch-externalities.d.ts.map +1 -1
- package/packages/jam/transition/externalities/refine-fetch-externalities.js +3 -0
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gas.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/gas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpF,OAAO,EAAE,KAAK,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAClG,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAG3E;;;;;;GAMG;AACH,qBAAa,WAAY,YAAW,eAAe;
|
|
1
|
+
{"version":3,"file":"gas.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/gas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpF,OAAO,EAAE,KAAK,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAClG,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAG3E;;;;;;GAMG;AACH,qBAAa,WAAY,YAAW,eAAe;aASb,gBAAgB,EAAE,SAAS;IAR/D,KAAK,iIAAyB;IAC9B,YAAY,4HAAqB;IACjC,eAAe,uEAAqB;IAEpC,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS;IAItC,OAAO;IAEP,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CAMtF"}
|
|
@@ -14,6 +14,9 @@ export class GasHostCall {
|
|
|
14
14
|
index = tryAsHostCallIndex(0);
|
|
15
15
|
basicGasCost = tryAsSmallGas(10);
|
|
16
16
|
tracedRegisters = traceRegisters(7);
|
|
17
|
+
static new(currentServiceId) {
|
|
18
|
+
return new GasHostCall(currentServiceId);
|
|
19
|
+
}
|
|
17
20
|
constructor(currentServiceId) {
|
|
18
21
|
this.currentServiceId = currentServiceId;
|
|
19
22
|
}
|
|
@@ -4,15 +4,14 @@ import { tryAsServiceId } from "#@typeberry/block";
|
|
|
4
4
|
import { HostCallRegisters } from "#@typeberry/pvm-host-calls";
|
|
5
5
|
import { tryAsGas } from "#@typeberry/pvm-interface";
|
|
6
6
|
import { gasCounter } from "#@typeberry/pvm-interpreter";
|
|
7
|
-
import { emptyRegistersBuffer } from "../utils.js";
|
|
8
7
|
import { GasHostCall } from "./gas.js";
|
|
9
8
|
const REGISTER = 7;
|
|
10
9
|
describe("HostCalls: Gas", () => {
|
|
11
10
|
it("should write U32 gas to register", () => {
|
|
12
11
|
const currentServiceId = tryAsServiceId(10_000);
|
|
13
|
-
const gas = new
|
|
12
|
+
const gas = GasHostCall.new(currentServiceId);
|
|
14
13
|
const counter = gasCounter(tryAsGas(10_000));
|
|
15
|
-
const regs =
|
|
14
|
+
const regs = HostCallRegisters.empty();
|
|
16
15
|
assert.deepStrictEqual(regs.get(REGISTER), 0n);
|
|
17
16
|
// when
|
|
18
17
|
gas.execute(counter, regs);
|
|
@@ -21,9 +20,9 @@ describe("HostCalls: Gas", () => {
|
|
|
21
20
|
});
|
|
22
21
|
it("should write U64 gas to register", () => {
|
|
23
22
|
const currentServiceId = tryAsServiceId(10_000);
|
|
24
|
-
const gas = new
|
|
23
|
+
const gas = GasHostCall.new(currentServiceId);
|
|
25
24
|
const counter = gasCounter(tryAsGas(2n ** 64n - 1n));
|
|
26
|
-
const regs =
|
|
25
|
+
const regs = HostCallRegisters.empty();
|
|
27
26
|
assert.deepStrictEqual(regs.get(REGISTER), 0n);
|
|
28
27
|
// when
|
|
29
28
|
gas.execute(counter, regs);
|
|
@@ -33,7 +33,8 @@ export declare class Info implements HostCallHandler {
|
|
|
33
33
|
index: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"HostCallIndex[U32]">;
|
|
34
34
|
basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
|
|
35
35
|
tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
|
|
36
|
-
|
|
36
|
+
static new(currentServiceId: ServiceId, account: AccountsInfo): Info;
|
|
37
|
+
private constructor();
|
|
37
38
|
execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<undefined | PvmExecution>;
|
|
38
39
|
}
|
|
39
40
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAkD,MAAM,kBAAkB,CAAC;AAKlG,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAMtD,kDAAkD;AAClD,MAAM,WAAW,YAAY;IAC3B,wBAAwB;IACxB,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,GAAG,kBAAkB,GAAG,IAAI,CAAC;CACxE;AAMD,eAAO,MAAM,OAAO,QACsF,CAAC;AAE3G;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,IAAK,YAAW,eAAe;
|
|
1
|
+
{"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAkD,MAAM,kBAAkB,CAAC;AAKlG,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAMtD,kDAAkD;AAClD,MAAM,WAAW,YAAY;IAC3B,wBAAwB;IACxB,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,GAAG,kBAAkB,GAAG,IAAI,CAAC;CACxE;AAMD,eAAO,MAAM,OAAO,QACsF,CAAC;AAE3G;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,IAAK,YAAW,eAAe;aAUxB,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAV1B,KAAK,iIAAyB;IAC9B,YAAY,4HAAqB;IACjC,eAAe,uEAAsD;IAErE,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY;IAI7D,OAAO;IAKD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CA8CrH;AAED;;;;;;GAMG;AACH,eAAO,MAAM,2CAA2C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAevD,CAAC"}
|
|
@@ -37,6 +37,9 @@ export class Info {
|
|
|
37
37
|
index = tryAsHostCallIndex(5);
|
|
38
38
|
basicGasCost = tryAsSmallGas(10);
|
|
39
39
|
tracedRegisters = traceRegisters(IN_OUT_REG, 8, OFFSET_REG, LEN_REG);
|
|
40
|
+
static new(currentServiceId, account) {
|
|
41
|
+
return new Info(currentServiceId, account);
|
|
42
|
+
}
|
|
40
43
|
constructor(currentServiceId, account) {
|
|
41
44
|
this.currentServiceId = currentServiceId;
|
|
42
45
|
this.account = account;
|
|
@@ -12,7 +12,6 @@ import { tryAsSbrkIndex } from "#@typeberry/pvm-interpreter/memory/memory-index.
|
|
|
12
12
|
import { PAGE_SIZE } from "#@typeberry/pvm-interpreter/spi-decoder/memory-conts.js";
|
|
13
13
|
import { ServiceAccountInfo } from "#@typeberry/state";
|
|
14
14
|
import { TestAccounts } from "../externalities/test-accounts.js";
|
|
15
|
-
import { emptyRegistersBuffer } from "../utils.js";
|
|
16
15
|
import { codecServiceAccountInfoWithThresholdBalance, Info, LEN_REG } from "./info.js";
|
|
17
16
|
import { HostCallResult } from "./results.js";
|
|
18
17
|
const SERVICE_ID_REG = 7;
|
|
@@ -23,13 +22,13 @@ const serviceAccountInfoSize = tryAsExactBytes(codecServiceAccountInfoWithThresh
|
|
|
23
22
|
function prepareRegsAndMemory(serviceId, accountInfoLength = serviceAccountInfoSize) {
|
|
24
23
|
const pageStart = 2 ** 16;
|
|
25
24
|
const memStart = pageStart + PAGE_SIZE - accountInfoLength - 1;
|
|
26
|
-
const registers =
|
|
25
|
+
const registers = HostCallRegisters.empty();
|
|
27
26
|
registers.set(SERVICE_ID_REG, tryAsU64(serviceId));
|
|
28
27
|
registers.set(DEST_START_REG, tryAsU64(memStart));
|
|
29
28
|
registers.set(LEN_REG, tryAsU64(serviceAccountInfoSize));
|
|
30
29
|
const builder = new MemoryBuilder();
|
|
31
30
|
builder.setWriteablePages(tryAsMemoryIndex(pageStart), tryAsMemoryIndex(pageStart + PAGE_SIZE));
|
|
32
|
-
const memory = new
|
|
31
|
+
const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
|
|
33
32
|
const readRaw = () => {
|
|
34
33
|
const result = new Uint8Array(Number(registers.get(LEN_REG)));
|
|
35
34
|
assert.strictEqual(memory.loadInto(result, tryAsU64(memStart)).isOk, true);
|
|
@@ -56,7 +55,7 @@ describe("HostCalls: Info", () => {
|
|
|
56
55
|
const serviceId = tryAsServiceId(10_000);
|
|
57
56
|
const currentServiceId = serviceId;
|
|
58
57
|
const accounts = new TestAccounts(currentServiceId);
|
|
59
|
-
const info = new
|
|
58
|
+
const info = Info.new(currentServiceId, accounts);
|
|
60
59
|
const { registers, memory, readInfo } = prepareRegsAndMemory(serviceId);
|
|
61
60
|
const storageUtilisationBytes = tryAsU64(10_000);
|
|
62
61
|
const storageUtilisationCount = tryAsU32(1_000);
|
|
@@ -84,7 +83,7 @@ describe("HostCalls: Info", () => {
|
|
|
84
83
|
const serviceId = tryAsServiceId(10_000);
|
|
85
84
|
const currentServiceId = serviceId;
|
|
86
85
|
const accounts = new TestAccounts(currentServiceId);
|
|
87
|
-
const info = new
|
|
86
|
+
const info = Info.new(currentServiceId, accounts);
|
|
88
87
|
const { registers, memory, readRaw } = prepareRegsAndMemory(serviceId);
|
|
89
88
|
registers.set(LEN_REG, tryAsU64(10));
|
|
90
89
|
const storageUtilisationBytes = tryAsU64(10_000);
|
|
@@ -108,7 +107,7 @@ describe("HostCalls: Info", () => {
|
|
|
108
107
|
it("should write none if account info is missing", async () => {
|
|
109
108
|
const currentServiceId = tryAsServiceId(15_000);
|
|
110
109
|
const accounts = new TestAccounts(currentServiceId);
|
|
111
|
-
const info = new
|
|
110
|
+
const info = Info.new(currentServiceId, accounts);
|
|
112
111
|
const serviceId = tryAsServiceId(10_000);
|
|
113
112
|
const { registers, memory } = prepareRegsAndMemory(serviceId);
|
|
114
113
|
// when
|
|
@@ -121,7 +120,7 @@ describe("HostCalls: Info", () => {
|
|
|
121
120
|
const serviceId = tryAsServiceId(10_000);
|
|
122
121
|
const currentServiceId = serviceId;
|
|
123
122
|
const accounts = new TestAccounts(currentServiceId);
|
|
124
|
-
const info = new
|
|
123
|
+
const info = Info.new(serviceId, accounts);
|
|
125
124
|
const { registers, memory } = prepareRegsAndMemory(serviceId, 10);
|
|
126
125
|
const storageUtilisationBytes = tryAsU64(10_000);
|
|
127
126
|
const storageUtilisationCount = tryAsU32(1_000);
|
|
@@ -11,7 +11,8 @@ export declare class LogHostCall implements HostCallHandler {
|
|
|
11
11
|
index: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"HostCallIndex[U32]">;
|
|
12
12
|
basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
|
|
13
13
|
tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
|
|
14
|
-
|
|
14
|
+
static new(currentServiceId: ServiceId): LogHostCall;
|
|
15
|
+
private constructor();
|
|
15
16
|
execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<undefined>;
|
|
16
17
|
}
|
|
17
18
|
//# sourceMappingURL=log.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEpG,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAmB3E;;;;GAIG;AACH,qBAAa,WAAY,YAAW,eAAe;
|
|
1
|
+
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEpG,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAmB3E;;;;GAIG;AACH,qBAAa,WAAY,YAAW,eAAe;aAUb,gBAAgB,EAAE,SAAS;IAT/D,KAAK,iIAA2B;IAChC,YAAY,4HAA2F;IAEvG,eAAe,uEAAoB;IAEnC,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS;IAItC,OAAO;IAED,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC;CAqBtG"}
|
|
@@ -26,6 +26,9 @@ export class LogHostCall {
|
|
|
26
26
|
basicGasCost = Compatibility.isGreaterOrEqual(GpVersion.V0_7_2) ? tryAsSmallGas(10) : tryAsSmallGas(0);
|
|
27
27
|
// intentionally not tracing anything here, since the message will be printed anyway.
|
|
28
28
|
tracedRegisters = traceRegisters();
|
|
29
|
+
static new(currentServiceId) {
|
|
30
|
+
return new LogHostCall(currentServiceId);
|
|
31
|
+
}
|
|
29
32
|
constructor(currentServiceId) {
|
|
30
33
|
this.currentServiceId = currentServiceId;
|
|
31
34
|
}
|
|
@@ -20,7 +20,8 @@ export declare class Lookup implements HostCallHandler {
|
|
|
20
20
|
index: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"HostCallIndex[U32]">;
|
|
21
21
|
basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
|
|
22
22
|
tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
|
|
23
|
-
|
|
23
|
+
static new(currentServiceId: ServiceId, account: AccountsLookup): Lookup;
|
|
24
|
+
private constructor();
|
|
24
25
|
execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<undefined | PvmExecution>;
|
|
25
26
|
}
|
|
26
27
|
//# sourceMappingURL=lookup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lookup.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/lookup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,KAAK,WAAW,EAAa,MAAM,iBAAiB,CAAC;AAE9D,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAM3E,oDAAoD;AACpD,MAAM,WAAW,cAAc;IAC7B,yBAAyB;IACzB,MAAM,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,EAAE,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;CAC1E;AAID;;;;GAIG;AACH,qBAAa,MAAO,YAAW,eAAe;
|
|
1
|
+
{"version":3,"file":"lookup.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/lookup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,KAAK,WAAW,EAAa,MAAM,iBAAiB,CAAC;AAE9D,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAM3E,oDAAoD;AACpD,MAAM,WAAW,cAAc;IAC7B,yBAAyB;IACzB,MAAM,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,EAAE,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;CAC1E;AAID;;;;GAIG;AACH,qBAAa,MAAO,YAAW,eAAe;aAW1B,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAX1B,KAAK,iIAAyB;IAE9B,YAAY,4HAAqB;IACjC,eAAe,uEAA4C;IAE3D,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc;IAI/D,OAAO;IAKD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CAgDrH"}
|
|
@@ -19,6 +19,9 @@ export class Lookup {
|
|
|
19
19
|
index = tryAsHostCallIndex(2);
|
|
20
20
|
basicGasCost = tryAsSmallGas(10);
|
|
21
21
|
tracedRegisters = traceRegisters(IN_OUT_REG, 8, 9, 10, 11);
|
|
22
|
+
static new(currentServiceId, account) {
|
|
23
|
+
return new Lookup(currentServiceId, account);
|
|
24
|
+
}
|
|
22
25
|
constructor(currentServiceId, account) {
|
|
23
26
|
this.currentServiceId = currentServiceId;
|
|
24
27
|
this.account = account;
|
|
@@ -11,7 +11,6 @@ import { MemoryBuilder, tryAsMemoryIndex } from "#@typeberry/pvm-interpreter/mem
|
|
|
11
11
|
import { tryAsSbrkIndex } from "#@typeberry/pvm-interpreter/memory/memory-index.js";
|
|
12
12
|
import { PAGE_SIZE } from "#@typeberry/pvm-interpreter/spi-decoder/memory-conts.js";
|
|
13
13
|
import { TestAccounts } from "../externalities/test-accounts.js";
|
|
14
|
-
import { emptyRegistersBuffer } from "../utils.js";
|
|
15
14
|
import { Lookup } from "./lookup.js";
|
|
16
15
|
import { HostCallResult } from "./results.js";
|
|
17
16
|
let blake2b;
|
|
@@ -31,7 +30,7 @@ const PREIMAGE_BLOB = BytesBlob.blobFromString("hello world");
|
|
|
31
30
|
const DESTINATION_MEM_ADDRESS = 2 ** 22;
|
|
32
31
|
const PREIMAGE_HASH_ADDRESS = 2 ** 16;
|
|
33
32
|
function prepareRegsAndMemory(serviceId, key, { skipKey = false, skipValue = false, preimageOffset = 0, preimageLength = 0, } = {}) {
|
|
34
|
-
const registers =
|
|
33
|
+
const registers = HostCallRegisters.empty();
|
|
35
34
|
registers.set(SERVICE_ID_REG, tryAsU64(serviceId));
|
|
36
35
|
registers.set(HASH_ADDRESS_REG, tryAsU64(PREIMAGE_HASH_ADDRESS));
|
|
37
36
|
registers.set(DEST_ADDRESS_REG, tryAsU64(DESTINATION_MEM_ADDRESS));
|
|
@@ -44,7 +43,7 @@ function prepareRegsAndMemory(serviceId, key, { skipKey = false, skipValue = fal
|
|
|
44
43
|
if (!skipValue) {
|
|
45
44
|
builder.setWriteablePages(tryAsMemoryIndex(DESTINATION_MEM_ADDRESS), tryAsMemoryIndex(DESTINATION_MEM_ADDRESS + PAGE_SIZE));
|
|
46
45
|
}
|
|
47
|
-
const memory = new
|
|
46
|
+
const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
|
|
48
47
|
return {
|
|
49
48
|
registers,
|
|
50
49
|
memory,
|
|
@@ -54,7 +53,7 @@ describe("HostCalls: Lookup", () => {
|
|
|
54
53
|
it("should fail gracefully if account doesn't exist", async () => {
|
|
55
54
|
const currentServiceId = tryAsServiceId(15_000);
|
|
56
55
|
const accounts = new TestAccounts(currentServiceId);
|
|
57
|
-
const lookup = new
|
|
56
|
+
const lookup = Lookup.new(currentServiceId, accounts);
|
|
58
57
|
const serviceId = tryAsServiceId(10_000);
|
|
59
58
|
const { registers, memory } = prepareRegsAndMemory(serviceId, HASH);
|
|
60
59
|
// serviceId out of range
|
|
@@ -66,7 +65,7 @@ describe("HostCalls: Lookup", () => {
|
|
|
66
65
|
it("should fail gracefully if preimage doesn't exist", async () => {
|
|
67
66
|
const currentServiceId = tryAsServiceId(15_000);
|
|
68
67
|
const accounts = new TestAccounts(currentServiceId);
|
|
69
|
-
const lookup = new
|
|
68
|
+
const lookup = Lookup.new(currentServiceId, accounts);
|
|
70
69
|
const serviceId = tryAsServiceId(10_000);
|
|
71
70
|
const { registers, memory } = prepareRegsAndMemory(serviceId, HASH);
|
|
72
71
|
accounts.preimages.set(null, serviceId, HASH);
|
|
@@ -77,7 +76,7 @@ describe("HostCalls: Lookup", () => {
|
|
|
77
76
|
it("should fail on page fault if memory isn't readable", async () => {
|
|
78
77
|
const currentServiceId = tryAsServiceId(15_000);
|
|
79
78
|
const accounts = new TestAccounts(currentServiceId);
|
|
80
|
-
const lookup = new
|
|
79
|
+
const lookup = Lookup.new(currentServiceId, accounts);
|
|
81
80
|
const serviceId = tryAsServiceId(10_000);
|
|
82
81
|
const { registers, memory: emptyMemory } = prepareRegsAndMemory(serviceId, HASH, {
|
|
83
82
|
skipKey: true,
|
|
@@ -88,7 +87,7 @@ describe("HostCalls: Lookup", () => {
|
|
|
88
87
|
it("should fail on page fault if destination memory is not writable", async () => {
|
|
89
88
|
const currentServiceId = tryAsServiceId(15_000);
|
|
90
89
|
const accounts = new TestAccounts(currentServiceId);
|
|
91
|
-
const lookup = new
|
|
90
|
+
const lookup = Lookup.new(currentServiceId, accounts);
|
|
92
91
|
const serviceId = tryAsServiceId(10_000);
|
|
93
92
|
const { registers, memory: emptyMemory } = prepareRegsAndMemory(serviceId, HASH, {
|
|
94
93
|
skipValue: true,
|
|
@@ -102,7 +101,7 @@ describe("HostCalls: Lookup", () => {
|
|
|
102
101
|
it("without offset", async () => {
|
|
103
102
|
const currentServiceId = tryAsServiceId(15_000);
|
|
104
103
|
const accounts = new TestAccounts(currentServiceId);
|
|
105
|
-
const lookup = new
|
|
104
|
+
const lookup = Lookup.new(currentServiceId, accounts);
|
|
106
105
|
const serviceId = tryAsServiceId(10_000);
|
|
107
106
|
const preimageLength = 5;
|
|
108
107
|
const { registers, memory } = prepareRegsAndMemory(serviceId, HASH, { preimageLength });
|
|
@@ -118,7 +117,7 @@ describe("HostCalls: Lookup", () => {
|
|
|
118
117
|
it("with offset", async () => {
|
|
119
118
|
const currentServiceId = tryAsServiceId(15_000);
|
|
120
119
|
const accounts = new TestAccounts(currentServiceId);
|
|
121
|
-
const lookup = new
|
|
120
|
+
const lookup = Lookup.new(currentServiceId, accounts);
|
|
122
121
|
const serviceId = tryAsServiceId(10_000);
|
|
123
122
|
const preimageLength = 5;
|
|
124
123
|
const preimageOffset = 6;
|
|
@@ -19,7 +19,8 @@ export declare class Read implements HostCallHandler {
|
|
|
19
19
|
index: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"HostCallIndex[U32]">;
|
|
20
20
|
basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
|
|
21
21
|
tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
|
|
22
|
-
|
|
22
|
+
static new(currentServiceId: ServiceId, account: AccountsRead): Read;
|
|
23
|
+
private constructor();
|
|
23
24
|
execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<undefined | PvmExecution>;
|
|
24
25
|
}
|
|
25
26
|
//# sourceMappingURL=read.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/read.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAM3E,kDAAkD;AAClD,MAAM,WAAW,YAAY;IAC3B,4BAA4B;IAC5B,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC;CACxE;AAID;;;;GAIG;AACH,qBAAa,IAAK,YAAW,eAAe;
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/general/read.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAM3E,kDAAkD;AAClD,MAAM,WAAW,YAAY;IAC3B,4BAA4B;IAC5B,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC;CACxE;AAID;;;;GAIG;AACH,qBAAa,IAAK,YAAW,eAAe;aAUxB,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAV1B,KAAK,iIAAyB;IAC9B,YAAY,4HAAqB;IACjC,eAAe,uEAAgD;IAE/D,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY;IAI7D,OAAO;IAKD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CA2DrH"}
|
|
@@ -18,6 +18,9 @@ export class Read {
|
|
|
18
18
|
index = tryAsHostCallIndex(3);
|
|
19
19
|
basicGasCost = tryAsSmallGas(10);
|
|
20
20
|
tracedRegisters = traceRegisters(IN_OUT_REG, 8, 9, 10, 11, 12);
|
|
21
|
+
static new(currentServiceId, account) {
|
|
22
|
+
return new Read(currentServiceId, account);
|
|
23
|
+
}
|
|
21
24
|
constructor(currentServiceId, account) {
|
|
22
25
|
this.currentServiceId = currentServiceId;
|
|
23
26
|
this.account = account;
|
|
@@ -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
|
}
|