@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
|
@@ -15,21 +15,20 @@ import { deepEqual, OK, Result } from "#@typeberry/utils";
|
|
|
15
15
|
import { EjectError } from "../externalities/partial-state.js";
|
|
16
16
|
import { PartialStateMock } from "../externalities/partial-state-mock.js";
|
|
17
17
|
import { HostCallResult } from "../general/results.js";
|
|
18
|
-
import { emptyRegistersBuffer } from "../utils.js";
|
|
19
18
|
import { Eject } from "./eject.js";
|
|
20
19
|
const RESULT_REG = 7;
|
|
21
20
|
const SOURCE_REG = 7;
|
|
22
21
|
const HASH_START_REG = 8;
|
|
23
22
|
function prepareRegsAndMemory(source, hash, { skipHash = false } = {}) {
|
|
24
23
|
const hashStart = 2 ** 16;
|
|
25
|
-
const registers =
|
|
24
|
+
const registers = HostCallRegisters.empty();
|
|
26
25
|
registers.set(SOURCE_REG, tryAsU64(source));
|
|
27
26
|
registers.set(HASH_START_REG, tryAsU64(hashStart));
|
|
28
27
|
const builder = new MemoryBuilder();
|
|
29
28
|
if (!skipHash) {
|
|
30
29
|
builder.setReadablePages(tryAsMemoryIndex(hashStart), tryAsMemoryIndex(hashStart + PAGE_SIZE), hash.raw);
|
|
31
30
|
}
|
|
32
|
-
const memory = new
|
|
31
|
+
const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
|
|
33
32
|
return {
|
|
34
33
|
registers,
|
|
35
34
|
memory,
|
|
@@ -40,7 +39,7 @@ describe("HostCalls: Eject", () => {
|
|
|
40
39
|
it("should eject the account and transfer the funds", async () => {
|
|
41
40
|
const accumulate = new PartialStateMock();
|
|
42
41
|
const serviceId = tryAsServiceId(10_000);
|
|
43
|
-
const eject = new
|
|
42
|
+
const eject = Eject.new(serviceId, accumulate);
|
|
44
43
|
const sourceServiceId = tryAsServiceId(15_000);
|
|
45
44
|
const hash = Bytes.fill(HASH_SIZE, 5);
|
|
46
45
|
const { registers, memory } = prepareRegsAndMemory(sourceServiceId, hash);
|
|
@@ -55,7 +54,7 @@ describe("HostCalls: Eject", () => {
|
|
|
55
54
|
it("should fail if there is no memory for hash", async () => {
|
|
56
55
|
const accumulate = new PartialStateMock();
|
|
57
56
|
const serviceId = tryAsServiceId(10_000);
|
|
58
|
-
const eject = new
|
|
57
|
+
const eject = Eject.new(serviceId, accumulate);
|
|
59
58
|
const sourceServiceId = tryAsServiceId(15_000);
|
|
60
59
|
const hash = Bytes.fill(HASH_SIZE, 5);
|
|
61
60
|
const { registers, memory } = prepareRegsAndMemory(sourceServiceId, hash, { skipHash: true });
|
|
@@ -68,7 +67,7 @@ describe("HostCalls: Eject", () => {
|
|
|
68
67
|
it("should fail if destination does not exist", async () => {
|
|
69
68
|
const accumulate = new PartialStateMock();
|
|
70
69
|
const serviceId = tryAsServiceId(10_000);
|
|
71
|
-
const eject = new
|
|
70
|
+
const eject = Eject.new(serviceId, accumulate);
|
|
72
71
|
const sourceServiceId = tryAsServiceId(15_000);
|
|
73
72
|
const hash = Bytes.fill(HASH_SIZE, 5);
|
|
74
73
|
accumulate.ejectReturnValue = Result.error(EjectError.InvalidService, () => "Test: destination service does not exist for eject");
|
|
@@ -84,7 +83,7 @@ describe("HostCalls: Eject", () => {
|
|
|
84
83
|
it("should fail if destination and source are the same", async () => {
|
|
85
84
|
const accumulate = new PartialStateMock();
|
|
86
85
|
const serviceId = tryAsServiceId(15_000);
|
|
87
|
-
const eject = new
|
|
86
|
+
const eject = Eject.new(serviceId, accumulate);
|
|
88
87
|
const sourceServiceId = tryAsServiceId(15_000);
|
|
89
88
|
const hash = Bytes.fill(HASH_SIZE, 5);
|
|
90
89
|
const { registers, memory } = prepareRegsAndMemory(sourceServiceId, hash);
|
|
@@ -98,7 +97,7 @@ describe("HostCalls: Eject", () => {
|
|
|
98
97
|
it("should fail if destination has no available preimage", async () => {
|
|
99
98
|
const accumulate = new PartialStateMock();
|
|
100
99
|
const serviceId = tryAsServiceId(10_000);
|
|
101
|
-
const eject = new
|
|
100
|
+
const eject = Eject.new(serviceId, accumulate);
|
|
102
101
|
const sourceServiceId = tryAsServiceId(15_000);
|
|
103
102
|
const hash = Bytes.fill(HASH_SIZE, 5);
|
|
104
103
|
accumulate.ejectReturnValue = Result.error(EjectError.InvalidPreimage, () => "Test: no available preimage for eject");
|
|
@@ -114,7 +113,7 @@ describe("HostCalls: Eject", () => {
|
|
|
114
113
|
it("should fail if preimage is too old", async () => {
|
|
115
114
|
const accumulate = new PartialStateMock();
|
|
116
115
|
const serviceId = tryAsServiceId(10_000);
|
|
117
|
-
const eject = new
|
|
116
|
+
const eject = Eject.new(serviceId, accumulate);
|
|
118
117
|
const sourceServiceId = tryAsServiceId(15_000);
|
|
119
118
|
const hash = Bytes.fill(HASH_SIZE, 5);
|
|
120
119
|
accumulate.ejectReturnValue = Result.error(EjectError.InvalidPreimage, () => "Test: preimage is too old for eject");
|
|
@@ -14,7 +14,8 @@ export declare class Forget implements HostCallHandler {
|
|
|
14
14
|
index: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"HostCallIndex[U32]">;
|
|
15
15
|
basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
|
|
16
16
|
tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
|
|
17
|
-
|
|
17
|
+
static new(currentServiceId: ServiceId, partialState: PartialState): Forget;
|
|
18
|
+
private constructor();
|
|
18
19
|
execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<PvmExecution | undefined>;
|
|
19
20
|
}
|
|
20
21
|
//# sourceMappingURL=forget.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forget.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/forget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAE3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAMtE;;;;GAIG;AACH,qBAAa,MAAO,YAAW,eAAe;
|
|
1
|
+
{"version":3,"file":"forget.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/forget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAE3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAMtE;;;;GAIG;AACH,qBAAa,MAAO,YAAW,eAAe;aAU1B,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAV/B,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,eAAe,uEAAiC;IAEhD,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY;IAIlE,OAAO;IAKD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;CAuBrH"}
|
|
@@ -17,6 +17,9 @@ export class Forget {
|
|
|
17
17
|
index = tryAsHostCallIndex(24);
|
|
18
18
|
basicGasCost = tryAsSmallGas(10);
|
|
19
19
|
tracedRegisters = traceRegisters(IN_OUT_REG, 8);
|
|
20
|
+
static new(currentServiceId, partialState) {
|
|
21
|
+
return new Forget(currentServiceId, partialState);
|
|
22
|
+
}
|
|
20
23
|
constructor(currentServiceId, partialState) {
|
|
21
24
|
this.currentServiceId = currentServiceId;
|
|
22
25
|
this.partialState = partialState;
|
|
@@ -14,7 +14,6 @@ import { Result } from "#@typeberry/utils";
|
|
|
14
14
|
import { ForgetPreimageError } from "../externalities/partial-state.js";
|
|
15
15
|
import { PartialStateMock } from "../externalities/partial-state-mock.js";
|
|
16
16
|
import { HostCallResult } from "../general/results.js";
|
|
17
|
-
import { emptyRegistersBuffer } from "../utils.js";
|
|
18
17
|
import { Forget } from "./forget.js";
|
|
19
18
|
const gas = gasCounter(tryAsGas(0));
|
|
20
19
|
const RESULT_REG = 7;
|
|
@@ -22,14 +21,14 @@ const HASH_START_REG = 7;
|
|
|
22
21
|
const LENGTH_REG = 8;
|
|
23
22
|
function prepareRegsAndMemory(preimageHash, preimageLength, { skipPreimageHash = false } = {}) {
|
|
24
23
|
const memStart = 2 ** 16;
|
|
25
|
-
const registers =
|
|
24
|
+
const registers = HostCallRegisters.empty();
|
|
26
25
|
registers.set(HASH_START_REG, tryAsU64(memStart));
|
|
27
26
|
registers.set(LENGTH_REG, preimageLength);
|
|
28
27
|
const builder = new MemoryBuilder();
|
|
29
28
|
if (!skipPreimageHash) {
|
|
30
29
|
builder.setReadablePages(tryAsMemoryIndex(memStart), tryAsMemoryIndex(memStart + PAGE_SIZE), preimageHash.raw);
|
|
31
30
|
}
|
|
32
|
-
const memory = new
|
|
31
|
+
const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
|
|
33
32
|
return {
|
|
34
33
|
registers,
|
|
35
34
|
memory,
|
|
@@ -39,7 +38,7 @@ describe("HostCalls: Solicit", () => {
|
|
|
39
38
|
it("should request a preimage hash", async () => {
|
|
40
39
|
const accumulate = new PartialStateMock();
|
|
41
40
|
const serviceId = tryAsServiceId(10_000);
|
|
42
|
-
const forget = new
|
|
41
|
+
const forget = Forget.new(serviceId, accumulate);
|
|
43
42
|
const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(4_096));
|
|
44
43
|
// when
|
|
45
44
|
await forget.execute(gas, registers, memory);
|
|
@@ -50,7 +49,7 @@ describe("HostCalls: Solicit", () => {
|
|
|
50
49
|
it("should fail if hash not available", async () => {
|
|
51
50
|
const accumulate = new PartialStateMock();
|
|
52
51
|
const serviceId = tryAsServiceId(10_000);
|
|
53
|
-
const forget = new
|
|
52
|
+
const forget = Forget.new(serviceId, accumulate);
|
|
54
53
|
const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(4_096), {
|
|
55
54
|
skipPreimageHash: true,
|
|
56
55
|
});
|
|
@@ -63,7 +62,7 @@ describe("HostCalls: Solicit", () => {
|
|
|
63
62
|
it("should fail if preimage not available", async () => {
|
|
64
63
|
const accumulate = new PartialStateMock();
|
|
65
64
|
const serviceId = tryAsServiceId(10_000);
|
|
66
|
-
const forget = new
|
|
65
|
+
const forget = Forget.new(serviceId, accumulate);
|
|
67
66
|
accumulate.forgetPreimageResponse = Result.error(ForgetPreimageError.NotFound, () => "Test: preimage not found for forget");
|
|
68
67
|
const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(4_096));
|
|
69
68
|
// when
|
|
@@ -14,7 +14,8 @@ export declare class New implements HostCallHandler {
|
|
|
14
14
|
index: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"HostCallIndex[U32]">;
|
|
15
15
|
basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
|
|
16
16
|
tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
|
|
17
|
-
|
|
17
|
+
static new(currentServiceId: ServiceId, partialState: PartialState): New;
|
|
18
|
+
private constructor();
|
|
18
19
|
execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<undefined | PvmExecution>;
|
|
19
20
|
}
|
|
20
21
|
//# sourceMappingURL=new.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/new.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAmB,MAAM,kBAAkB,CAAC;AAInE,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAE3E,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAMvF;;;;GAIG;AACH,qBAAa,GAAI,YAAW,eAAe;
|
|
1
|
+
{"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/new.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAmB,MAAM,kBAAkB,CAAC;AAInE,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAE3E,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAMvF;;;;GAIG;AACH,qBAAa,GAAI,YAAW,eAAe;aAUvB,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAV/B,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,eAAe,uEAAgD;IAE/D,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY;IAIlE,OAAO;IAKD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CA0DrH"}
|
|
@@ -20,6 +20,9 @@ export class New {
|
|
|
20
20
|
index = tryAsHostCallIndex(18);
|
|
21
21
|
basicGasCost = tryAsSmallGas(10);
|
|
22
22
|
tracedRegisters = traceRegisters(IN_OUT_REG, 8, 9, 10, 11, 12);
|
|
23
|
+
static new(currentServiceId, partialState) {
|
|
24
|
+
return new New(currentServiceId, partialState);
|
|
25
|
+
}
|
|
23
26
|
constructor(currentServiceId, partialState) {
|
|
24
27
|
this.currentServiceId = currentServiceId;
|
|
25
28
|
this.partialState = partialState;
|
|
@@ -14,7 +14,6 @@ import { Result } from "#@typeberry/utils";
|
|
|
14
14
|
import { NewServiceError } from "../externalities/partial-state.js";
|
|
15
15
|
import { PartialStateMock } from "../externalities/partial-state-mock.js";
|
|
16
16
|
import { HostCallResult } from "../general/results.js";
|
|
17
|
-
import { emptyRegistersBuffer } from "../utils.js";
|
|
18
17
|
import { New } from "./new.js";
|
|
19
18
|
const gas = gasCounter(tryAsGas(0));
|
|
20
19
|
const RESULT_REG = 7;
|
|
@@ -28,7 +27,7 @@ function prepareRegsAndMemory(codeHash, codeLength, gas, balance, gratisStorage,
|
|
|
28
27
|
// If value exceeds 2 ** 16 or the service is not registrar, it's ignored.
|
|
29
28
|
wantedServiceId = tryAsU64(2 ** 32 - 1), { skipCodeHash = false } = {}) {
|
|
30
29
|
const memStart = 2 ** 16;
|
|
31
|
-
const registers =
|
|
30
|
+
const registers = HostCallRegisters.empty();
|
|
32
31
|
registers.set(CODE_HASH_START_REG, tryAsU64(memStart));
|
|
33
32
|
registers.set(CODE_LENGTH_REG, tryAsU64(codeLength));
|
|
34
33
|
registers.set(GAS_REG, gas);
|
|
@@ -39,7 +38,7 @@ wantedServiceId = tryAsU64(2 ** 32 - 1), { skipCodeHash = false } = {}) {
|
|
|
39
38
|
if (!skipCodeHash) {
|
|
40
39
|
builder.setReadablePages(tryAsMemoryIndex(memStart), tryAsMemoryIndex(memStart + PAGE_SIZE), codeHash.raw);
|
|
41
40
|
}
|
|
42
|
-
const memory = new
|
|
41
|
+
const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
|
|
43
42
|
return {
|
|
44
43
|
registers,
|
|
45
44
|
memory,
|
|
@@ -49,7 +48,7 @@ describe("HostCalls: New", () => {
|
|
|
49
48
|
it("should create a new service", async () => {
|
|
50
49
|
const accumulate = new PartialStateMock();
|
|
51
50
|
const serviceId = tryAsServiceId(10_000);
|
|
52
|
-
const n = new
|
|
51
|
+
const n = New.new(serviceId, accumulate);
|
|
53
52
|
accumulate.newServiceResponse = Result.ok(tryAsServiceId(23_000));
|
|
54
53
|
const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(4096n), tryAsU64(2n ** 40n), tryAsU64(2n ** 50n), tryAsU64(1024n));
|
|
55
54
|
// when
|
|
@@ -64,7 +63,7 @@ describe("HostCalls: New", () => {
|
|
|
64
63
|
it("should fail when balance is not enough", async () => {
|
|
65
64
|
const accumulate = new PartialStateMock();
|
|
66
65
|
const serviceId = tryAsServiceId(10_000);
|
|
67
|
-
const n = new
|
|
66
|
+
const n = New.new(serviceId, accumulate);
|
|
68
67
|
accumulate.newServiceResponse = Result.error(NewServiceError.InsufficientFunds, () => "Test: insufficient funds for new service");
|
|
69
68
|
const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(4096n), tryAsU64(2n ** 40n), tryAsU64(2n ** 50n), tryAsU64(1n));
|
|
70
69
|
// when
|
|
@@ -76,7 +75,7 @@ describe("HostCalls: New", () => {
|
|
|
76
75
|
it("should fail when code not readable", async () => {
|
|
77
76
|
const accumulate = new PartialStateMock();
|
|
78
77
|
const serviceId = tryAsServiceId(10_000);
|
|
79
|
-
const n = new
|
|
78
|
+
const n = New.new(serviceId, accumulate);
|
|
80
79
|
const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(4096n), tryAsU64(2n ** 40n), tryAsU64(2n ** 50n), tryAsU64(1024n), tryAsU64(2 ** 32 - 1), // default service id
|
|
81
80
|
{ skipCodeHash: true });
|
|
82
81
|
// when
|
|
@@ -88,7 +87,7 @@ describe("HostCalls: New", () => {
|
|
|
88
87
|
it("should fail when trying to set gratis storage by unprivileged service", async () => {
|
|
89
88
|
const accumulate = new PartialStateMock();
|
|
90
89
|
const serviceId = tryAsServiceId(10_000);
|
|
91
|
-
const n = new
|
|
90
|
+
const n = New.new(serviceId, accumulate);
|
|
92
91
|
accumulate.newServiceResponse = Result.error(NewServiceError.UnprivilegedService, () => "Test: unprivileged service trying to set gratis storage");
|
|
93
92
|
const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(4096n), tryAsU64(2n ** 40n), tryAsU64(2n ** 50n), tryAsU64(1024n));
|
|
94
93
|
// when
|
|
@@ -100,7 +99,7 @@ describe("HostCalls: New", () => {
|
|
|
100
99
|
it("should create a new service with selected id", async () => {
|
|
101
100
|
const accumulate = new PartialStateMock();
|
|
102
101
|
const serviceId = tryAsServiceId(10); // service has registrar privilege
|
|
103
|
-
const n = new
|
|
102
|
+
const n = New.new(serviceId, accumulate);
|
|
104
103
|
accumulate.newServiceResponse = Result.ok(tryAsServiceId(42));
|
|
105
104
|
const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(4096n), tryAsU64(2n ** 40n), tryAsU64(2n ** 50n), tryAsU64(1024n), tryAsU64(42n));
|
|
106
105
|
// when
|
|
@@ -115,7 +114,7 @@ describe("HostCalls: New", () => {
|
|
|
115
114
|
it("should create a new service with random id", async () => {
|
|
116
115
|
const accumulate = new PartialStateMock();
|
|
117
116
|
const serviceId = tryAsServiceId(10_000); // service does not have registrar privilege
|
|
118
|
-
const n = new
|
|
117
|
+
const n = New.new(serviceId, accumulate);
|
|
119
118
|
accumulate.newServiceResponse = Result.ok(tryAsServiceId(2 ** 20));
|
|
120
119
|
const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(4096n), tryAsU64(2n ** 40n), tryAsU64(2n ** 50n), tryAsU64(1024n), tryAsU64(42n));
|
|
121
120
|
// when
|
|
@@ -130,7 +129,7 @@ describe("HostCalls: New", () => {
|
|
|
130
129
|
it("should fail when trying to set selected id, but service already exists", async () => {
|
|
131
130
|
const accumulate = new PartialStateMock();
|
|
132
131
|
const serviceId = tryAsServiceId(10);
|
|
133
|
-
const n = new
|
|
132
|
+
const n = New.new(serviceId, accumulate);
|
|
134
133
|
accumulate.newServiceResponse = Result.error(NewServiceError.RegistrarServiceIdAlreadyTaken, () => "Test: service ID already taken");
|
|
135
134
|
const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(4096n), tryAsU64(2n ** 40n), tryAsU64(2n ** 50n), tryAsU64(1024n), tryAsU64(serviceId));
|
|
136
135
|
// when
|
|
@@ -13,7 +13,8 @@ export declare class Provide implements HostCallHandler {
|
|
|
13
13
|
index: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"HostCallIndex[U32]">;
|
|
14
14
|
basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
|
|
15
15
|
tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
|
|
16
|
-
|
|
16
|
+
static new(currentServiceId: ServiceId, partialState: PartialState): Provide;
|
|
17
|
+
private constructor();
|
|
17
18
|
execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<PvmExecution.Panic | undefined>;
|
|
18
19
|
}
|
|
19
20
|
//# sourceMappingURL=provide.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provide.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/provide.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,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,EAAE,KAAK,YAAY,EAAwB,MAAM,mCAAmC,CAAC;AAO5F;;;;GAIG;AACH,qBAAa,OAAQ,YAAW,eAAe;
|
|
1
|
+
{"version":3,"file":"provide.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/provide.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,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,EAAE,KAAK,YAAY,EAAwB,MAAM,mCAAmC,CAAC;AAO5F;;;;GAIG;AACH,qBAAa,OAAQ,YAAW,eAAe;aAU3B,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAV/B,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,eAAe,uEAAoC;IAEnD,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY;IAIlE,OAAO;IAKD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc;CA0CjF"}
|
|
@@ -18,6 +18,9 @@ export class Provide {
|
|
|
18
18
|
index = tryAsHostCallIndex(26);
|
|
19
19
|
basicGasCost = tryAsSmallGas(10);
|
|
20
20
|
tracedRegisters = traceRegisters(IN_OUT_REG, 8, 9);
|
|
21
|
+
static new(currentServiceId, partialState) {
|
|
22
|
+
return new Provide(currentServiceId, partialState);
|
|
23
|
+
}
|
|
21
24
|
constructor(currentServiceId, partialState) {
|
|
22
25
|
this.currentServiceId = currentServiceId;
|
|
23
26
|
this.partialState = partialState;
|
|
@@ -11,7 +11,6 @@ import { deepEqual, Result } from "#@typeberry/utils";
|
|
|
11
11
|
import { ProvidePreimageError } from "../externalities/partial-state.js";
|
|
12
12
|
import { PartialStateMock } from "../externalities/partial-state-mock.js";
|
|
13
13
|
import { HostCallResult } from "../general/results.js";
|
|
14
|
-
import { emptyRegistersBuffer } from "../utils.js";
|
|
15
14
|
import { Provide } from "./provide.js";
|
|
16
15
|
const gas = gasCounter(tryAsGas(0));
|
|
17
16
|
const RESULT_REG = 7;
|
|
@@ -19,7 +18,7 @@ const PREIMAGE_START_REG = 8;
|
|
|
19
18
|
const LENGTH_REG = 9;
|
|
20
19
|
function prepareRegsAndMemory(service, preimage, { registerMemory = true } = {}) {
|
|
21
20
|
const preimageStart = 2 ** 16;
|
|
22
|
-
const registers =
|
|
21
|
+
const registers = HostCallRegisters.empty();
|
|
23
22
|
registers.set(RESULT_REG, tryAsU64(service));
|
|
24
23
|
registers.set(PREIMAGE_START_REG, tryAsU64(preimageStart));
|
|
25
24
|
registers.set(LENGTH_REG, tryAsU64(preimage.length));
|
|
@@ -27,7 +26,7 @@ function prepareRegsAndMemory(service, preimage, { registerMemory = true } = {})
|
|
|
27
26
|
if (registerMemory) {
|
|
28
27
|
builder.setReadablePages(tryAsMemoryIndex(preimageStart), tryAsMemoryIndex(preimageStart + PAGE_SIZE), preimage.raw);
|
|
29
28
|
}
|
|
30
|
-
const memory = new
|
|
29
|
+
const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
|
|
31
30
|
return {
|
|
32
31
|
registers,
|
|
33
32
|
memory,
|
|
@@ -37,7 +36,7 @@ describe("HostCalls: Provide", () => {
|
|
|
37
36
|
it("should return panic if memory is unreadable", async () => {
|
|
38
37
|
const accumulate = new PartialStateMock();
|
|
39
38
|
const currentServiceId = tryAsServiceId(10_000);
|
|
40
|
-
const provide = new
|
|
39
|
+
const provide = Provide.new(currentServiceId, accumulate);
|
|
41
40
|
const serviceId = tryAsServiceId(15_000);
|
|
42
41
|
const preimage = BytesBlob.blobFromNumbers([0xaa, 0xbb, 0xcc, 0xdd]);
|
|
43
42
|
const { registers, memory } = prepareRegsAndMemory(serviceId, preimage, { registerMemory: false });
|
|
@@ -48,7 +47,7 @@ describe("HostCalls: Provide", () => {
|
|
|
48
47
|
it("should return WHO if service not found", async () => {
|
|
49
48
|
const accumulate = new PartialStateMock();
|
|
50
49
|
const currentServiceId = tryAsServiceId(10_000);
|
|
51
|
-
const provide = new
|
|
50
|
+
const provide = Provide.new(currentServiceId, accumulate);
|
|
52
51
|
const serviceId = tryAsServiceId(15_000);
|
|
53
52
|
const preimage = BytesBlob.blobFromNumbers([0xaa, 0xbb, 0xcc, 0xdd]);
|
|
54
53
|
accumulate.providePreimageResponse = Result.error(ProvidePreimageError.ServiceNotFound, () => "Test: service not found for provide");
|
|
@@ -62,7 +61,7 @@ describe("HostCalls: Provide", () => {
|
|
|
62
61
|
it("should return HUH if preimage was not previously requested", async () => {
|
|
63
62
|
const accumulate = new PartialStateMock();
|
|
64
63
|
const currentServiceId = tryAsServiceId(10_000);
|
|
65
|
-
const provide = new
|
|
64
|
+
const provide = Provide.new(currentServiceId, accumulate);
|
|
66
65
|
const serviceId = tryAsServiceId(15_000);
|
|
67
66
|
const preimage = BytesBlob.blobFromNumbers([0xaa, 0xbb, 0xcc, 0xdd]);
|
|
68
67
|
accumulate.providePreimageResponse = Result.error(ProvidePreimageError.WasNotRequested, () => "Test: preimage was not requested for provide");
|
|
@@ -76,7 +75,7 @@ describe("HostCalls: Provide", () => {
|
|
|
76
75
|
it("should return HUH if preimage already provided", async () => {
|
|
77
76
|
const accumulate = new PartialStateMock();
|
|
78
77
|
const currentServiceId = tryAsServiceId(10_000);
|
|
79
|
-
const provide = new
|
|
78
|
+
const provide = Provide.new(currentServiceId, accumulate);
|
|
80
79
|
const serviceId = tryAsServiceId(15_000);
|
|
81
80
|
const preimage = BytesBlob.blobFromNumbers([0xaa, 0xbb, 0xcc, 0xdd]);
|
|
82
81
|
accumulate.providePreimageResponse = Result.error(ProvidePreimageError.AlreadyProvided, () => "Test: preimage already provided");
|
|
@@ -90,7 +89,7 @@ describe("HostCalls: Provide", () => {
|
|
|
90
89
|
it("should return OK if preimage was not provided before (for other service)", async () => {
|
|
91
90
|
const accumulate = new PartialStateMock();
|
|
92
91
|
const currentServiceId = tryAsServiceId(10_000);
|
|
93
|
-
const provide = new
|
|
92
|
+
const provide = Provide.new(currentServiceId, accumulate);
|
|
94
93
|
const serviceId = tryAsServiceId(15_000);
|
|
95
94
|
const preimage = BytesBlob.blobFromNumbers([0xaa, 0xbb, 0xcc, 0xdd]);
|
|
96
95
|
const { registers, memory } = prepareRegsAndMemory(serviceId, preimage);
|
|
@@ -102,7 +101,7 @@ describe("HostCalls: Provide", () => {
|
|
|
102
101
|
it("should return OK if preimage was not provided before (for self)", async () => {
|
|
103
102
|
const accumulate = new PartialStateMock();
|
|
104
103
|
const currentServiceId = tryAsServiceId(10_000);
|
|
105
|
-
const provide = new
|
|
104
|
+
const provide = Provide.new(currentServiceId, accumulate);
|
|
106
105
|
const serviceId = tryAsServiceId(15_000);
|
|
107
106
|
const preimage = BytesBlob.blobFromNumbers([0xaa, 0xbb, 0xcc, 0xdd]);
|
|
108
107
|
const { registers, memory } = prepareRegsAndMemory(serviceId, preimage);
|
|
@@ -15,7 +15,8 @@ export declare class Query implements HostCallHandler {
|
|
|
15
15
|
index: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"HostCallIndex[U32]">;
|
|
16
16
|
basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
|
|
17
17
|
tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
|
|
18
|
-
|
|
18
|
+
static new(currentServiceId: ServiceId, partialState: PartialState): Query;
|
|
19
|
+
private constructor();
|
|
19
20
|
execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<PvmExecution | undefined>;
|
|
20
21
|
}
|
|
21
22
|
//# sourceMappingURL=query.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAIlD,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,EAAE,KAAK,YAAY,EAAsB,MAAM,mCAAmC,CAAC;AAQ1F;;;;;;GAMG;AACH,qBAAa,KAAM,YAAW,eAAe;
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAIlD,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,EAAE,KAAK,YAAY,EAAsB,MAAM,mCAAmC,CAAC;AAQ1F;;;;;;GAMG;AACH,qBAAa,KAAM,YAAW,eAAe;aAUzB,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAV/B,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,eAAe,uEAA8C;IAE7D,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY;IAIlE,OAAO;IAKD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;CA+CrH"}
|
|
@@ -22,6 +22,9 @@ export class Query {
|
|
|
22
22
|
index = tryAsHostCallIndex(22);
|
|
23
23
|
basicGasCost = tryAsSmallGas(10);
|
|
24
24
|
tracedRegisters = traceRegisters(IN_OUT_REG_1, IN_OUT_REG_2);
|
|
25
|
+
static new(currentServiceId, partialState) {
|
|
26
|
+
return new Query(currentServiceId, partialState);
|
|
27
|
+
}
|
|
25
28
|
constructor(currentServiceId, partialState) {
|
|
26
29
|
this.currentServiceId = currentServiceId;
|
|
27
30
|
this.partialState = partialState;
|
|
@@ -11,7 +11,6 @@ import { PAGE_SIZE } from "#@typeberry/pvm-interpreter/spi-decoder/memory-conts.
|
|
|
11
11
|
import { PreimageStatusKind } from "../externalities/partial-state.js";
|
|
12
12
|
import { PartialStateMock } from "../externalities/partial-state-mock.js";
|
|
13
13
|
import { HostCallResult } from "../general/results.js";
|
|
14
|
-
import { emptyRegistersBuffer } from "../utils.js";
|
|
15
14
|
import { Query } from "./query.js";
|
|
16
15
|
const gas = gasCounter(tryAsGas(0));
|
|
17
16
|
const HASH_START_REG = 7;
|
|
@@ -20,14 +19,14 @@ const RESULT_REG_1 = 7;
|
|
|
20
19
|
const RESULT_REG_2 = 8;
|
|
21
20
|
const UPPER_BITS_SHIFT = 32n;
|
|
22
21
|
function prepareRegsAndMemory(hashStart, length, data, { registerMemory = true } = {}) {
|
|
23
|
-
const registers =
|
|
22
|
+
const registers = HostCallRegisters.empty();
|
|
24
23
|
registers.set(HASH_START_REG, tryAsU64(hashStart));
|
|
25
24
|
registers.set(LENGTH_REG, tryAsU64(length));
|
|
26
25
|
const builder = new MemoryBuilder();
|
|
27
26
|
if (registerMemory) {
|
|
28
27
|
builder.setReadablePages(tryAsMemoryIndex(hashStart), tryAsMemoryIndex(hashStart + PAGE_SIZE), data.raw);
|
|
29
28
|
}
|
|
30
|
-
const memory = new
|
|
29
|
+
const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
|
|
31
30
|
return {
|
|
32
31
|
registers,
|
|
33
32
|
memory,
|
|
@@ -37,7 +36,7 @@ describe("HostCalls: Query", () => {
|
|
|
37
36
|
it("should return panic if memory is unreadable", async () => {
|
|
38
37
|
const accumulate = new PartialStateMock();
|
|
39
38
|
const currentServiceId = tryAsServiceId(10_000);
|
|
40
|
-
const query = new
|
|
39
|
+
const query = Query.new(currentServiceId, accumulate);
|
|
41
40
|
const w7 = tryAsU64(2 ** 16);
|
|
42
41
|
const w8 = tryAsU64(0);
|
|
43
42
|
const data = Bytes.fill(HASH_SIZE, 0xaa).asOpaque();
|
|
@@ -55,7 +54,7 @@ describe("HostCalls: Query", () => {
|
|
|
55
54
|
it("should return none if preimage is not found", async () => {
|
|
56
55
|
const accumulate = new PartialStateMock();
|
|
57
56
|
const currentServiceId = tryAsServiceId(10_000);
|
|
58
|
-
const query = new
|
|
57
|
+
const query = Query.new(currentServiceId, accumulate);
|
|
59
58
|
const w7 = tryAsU64(2 ** 16);
|
|
60
59
|
const w8 = tryAsU64(32);
|
|
61
60
|
const data = Bytes.fill(HASH_SIZE, 0xaa).asOpaque();
|
|
@@ -72,7 +71,7 @@ describe("HostCalls: Query", () => {
|
|
|
72
71
|
it("should return requested if preimage is requested", async () => {
|
|
73
72
|
const accumulate = new PartialStateMock();
|
|
74
73
|
const currentServiceId = tryAsServiceId(10_000);
|
|
75
|
-
const query = new
|
|
74
|
+
const query = Query.new(currentServiceId, accumulate);
|
|
76
75
|
const w7 = tryAsU64(2 ** 16);
|
|
77
76
|
const w8 = tryAsU64(32);
|
|
78
77
|
const data = Bytes.fill(HASH_SIZE, 0xaa).asOpaque();
|
|
@@ -92,7 +91,7 @@ describe("HostCalls: Query", () => {
|
|
|
92
91
|
it("should return available if preimage is available", async () => {
|
|
93
92
|
const accumulate = new PartialStateMock();
|
|
94
93
|
const currentServiceId = tryAsServiceId(10_000);
|
|
95
|
-
const query = new
|
|
94
|
+
const query = Query.new(currentServiceId, accumulate);
|
|
96
95
|
const w7 = tryAsU64(2 ** 16);
|
|
97
96
|
const w8 = tryAsU64(32);
|
|
98
97
|
const data = Bytes.fill(HASH_SIZE, 0xaa).asOpaque();
|
|
@@ -114,7 +113,7 @@ describe("HostCalls: Query", () => {
|
|
|
114
113
|
it("should return unavailable if preimage is unavailable", async () => {
|
|
115
114
|
const accumulate = new PartialStateMock();
|
|
116
115
|
const currentServiceId = tryAsServiceId(10_000);
|
|
117
|
-
const query = new
|
|
116
|
+
const query = Query.new(currentServiceId, accumulate);
|
|
118
117
|
const w7 = tryAsU64(2 ** 16);
|
|
119
118
|
const w8 = tryAsU64(32);
|
|
120
119
|
const data = Bytes.fill(HASH_SIZE, 0xaa).asOpaque();
|
|
@@ -137,7 +136,7 @@ describe("HostCalls: Query", () => {
|
|
|
137
136
|
it("should return reavailable if preimage is reavailable", async () => {
|
|
138
137
|
const accumulate = new PartialStateMock();
|
|
139
138
|
const currentServiceId = tryAsServiceId(10_000);
|
|
140
|
-
const query = new
|
|
139
|
+
const query = Query.new(currentServiceId, accumulate);
|
|
141
140
|
const w7 = tryAsU64(2 ** 16);
|
|
142
141
|
const w8 = tryAsU64(32);
|
|
143
142
|
const data = Bytes.fill(HASH_SIZE, 0xaa).asOpaque();
|
|
@@ -14,7 +14,8 @@ export declare class Solicit implements HostCallHandler {
|
|
|
14
14
|
index: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"HostCallIndex[U32]">;
|
|
15
15
|
basicGasCost: number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">;
|
|
16
16
|
tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
|
|
17
|
-
|
|
17
|
+
static new(currentServiceId: ServiceId, partialState: PartialState): Solicit;
|
|
18
|
+
private constructor();
|
|
18
19
|
execute(_gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<PvmExecution | undefined>;
|
|
19
20
|
}
|
|
20
21
|
//# sourceMappingURL=solicit.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solicit.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/solicit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAE3E,OAAO,EAAE,KAAK,YAAY,EAAwB,MAAM,mCAAmC,CAAC;AAM5F;;;;GAIG;AACH,qBAAa,OAAQ,YAAW,eAAe;
|
|
1
|
+
{"version":3,"file":"solicit.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/solicit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAsC,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,0BAA0B,CAAC;AAE3E,OAAO,EAAE,KAAK,YAAY,EAAwB,MAAM,mCAAmC,CAAC;AAM5F;;;;GAIG;AACH,qBAAa,OAAQ,YAAW,eAAe;aAU3B,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAV/B,KAAK,iIAA0B;IAC/B,YAAY,4HAAqB;IACjC,eAAe,uEAAiC;IAEhD,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY;IAIlE,OAAO;IAKD,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;CAmCrH"}
|
|
@@ -18,6 +18,9 @@ export class Solicit {
|
|
|
18
18
|
index = tryAsHostCallIndex(23);
|
|
19
19
|
basicGasCost = tryAsSmallGas(10);
|
|
20
20
|
tracedRegisters = traceRegisters(IN_OUT_REG, 8);
|
|
21
|
+
static new(currentServiceId, partialState) {
|
|
22
|
+
return new Solicit(currentServiceId, partialState);
|
|
23
|
+
}
|
|
21
24
|
constructor(currentServiceId, partialState) {
|
|
22
25
|
this.currentServiceId = currentServiceId;
|
|
23
26
|
this.partialState = partialState;
|
|
@@ -14,7 +14,6 @@ import { Result } from "#@typeberry/utils";
|
|
|
14
14
|
import { RequestPreimageError } from "../externalities/partial-state.js";
|
|
15
15
|
import { PartialStateMock } from "../externalities/partial-state-mock.js";
|
|
16
16
|
import { HostCallResult } from "../general/results.js";
|
|
17
|
-
import { emptyRegistersBuffer } from "../utils.js";
|
|
18
17
|
import { Solicit } from "./solicit.js";
|
|
19
18
|
const gas = gasCounter(tryAsGas(0));
|
|
20
19
|
const RESULT_REG = 7;
|
|
@@ -22,14 +21,14 @@ const HASH_START_REG = 7;
|
|
|
22
21
|
const LENGTH_REG = 8;
|
|
23
22
|
function prepareRegsAndMemory(preimageHash, preimageLength, { skipPreimageHash = false } = {}) {
|
|
24
23
|
const memStart = 2 ** 16;
|
|
25
|
-
const registers =
|
|
24
|
+
const registers = HostCallRegisters.empty();
|
|
26
25
|
registers.set(HASH_START_REG, tryAsU64(memStart));
|
|
27
26
|
registers.set(LENGTH_REG, preimageLength);
|
|
28
27
|
const builder = new MemoryBuilder();
|
|
29
28
|
if (!skipPreimageHash) {
|
|
30
29
|
builder.setReadablePages(tryAsMemoryIndex(memStart), tryAsMemoryIndex(memStart + PAGE_SIZE), preimageHash.raw);
|
|
31
30
|
}
|
|
32
|
-
const memory = new
|
|
31
|
+
const memory = HostCallMemory.new(builder.finalize(tryAsMemoryIndex(0), tryAsSbrkIndex(0)));
|
|
33
32
|
return {
|
|
34
33
|
registers,
|
|
35
34
|
memory,
|
|
@@ -39,7 +38,7 @@ describe("HostCalls: Solicit", () => {
|
|
|
39
38
|
it("should request a preimage hash", async () => {
|
|
40
39
|
const accumulate = new PartialStateMock();
|
|
41
40
|
const currentServiceId = tryAsServiceId(10_000);
|
|
42
|
-
const solicit = new
|
|
41
|
+
const solicit = Solicit.new(currentServiceId, accumulate);
|
|
43
42
|
const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(4_096));
|
|
44
43
|
// when
|
|
45
44
|
await solicit.execute(gas, registers, memory);
|
|
@@ -50,7 +49,7 @@ describe("HostCalls: Solicit", () => {
|
|
|
50
49
|
it("should fail if hash not available", async () => {
|
|
51
50
|
const accumulate = new PartialStateMock();
|
|
52
51
|
const currentServiceId = tryAsServiceId(10_000);
|
|
53
|
-
const solicit = new
|
|
52
|
+
const solicit = Solicit.new(currentServiceId, accumulate);
|
|
54
53
|
const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(4_096), {
|
|
55
54
|
skipPreimageHash: true,
|
|
56
55
|
});
|
|
@@ -63,7 +62,7 @@ describe("HostCalls: Solicit", () => {
|
|
|
63
62
|
it("should fail if already requested", async () => {
|
|
64
63
|
const accumulate = new PartialStateMock();
|
|
65
64
|
const currentServiceId = tryAsServiceId(10_000);
|
|
66
|
-
const solicit = new
|
|
65
|
+
const solicit = Solicit.new(currentServiceId, accumulate);
|
|
67
66
|
accumulate.requestPreimageResponse = Result.error(RequestPreimageError.AlreadyRequested, () => "Test: preimage already requested for solicit");
|
|
68
67
|
const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(4_096));
|
|
69
68
|
// when
|
|
@@ -75,7 +74,7 @@ describe("HostCalls: Solicit", () => {
|
|
|
75
74
|
it("should fail if already available", async () => {
|
|
76
75
|
const accumulate = new PartialStateMock();
|
|
77
76
|
const currentServiceId = tryAsServiceId(10_000);
|
|
78
|
-
const solicit = new
|
|
77
|
+
const solicit = Solicit.new(currentServiceId, accumulate);
|
|
79
78
|
accumulate.requestPreimageResponse = Result.error(RequestPreimageError.AlreadyAvailable, () => "Test: preimage already available for solicit");
|
|
80
79
|
const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(4_096));
|
|
81
80
|
// when
|
|
@@ -87,7 +86,7 @@ describe("HostCalls: Solicit", () => {
|
|
|
87
86
|
it("should fail if balance too low", async () => {
|
|
88
87
|
const accumulate = new PartialStateMock();
|
|
89
88
|
const currentServiceId = tryAsServiceId(10_000);
|
|
90
|
-
const solicit = new
|
|
89
|
+
const solicit = Solicit.new(currentServiceId, accumulate);
|
|
91
90
|
accumulate.requestPreimageResponse = Result.error(RequestPreimageError.InsufficientFunds, () => "Test: insufficient funds for solicit");
|
|
92
91
|
const { registers, memory } = prepareRegsAndMemory(Bytes.fill(HASH_SIZE, 0x69).asOpaque(), tryAsU64(4_096));
|
|
93
92
|
// when
|
|
@@ -24,7 +24,8 @@ export declare class Transfer implements HostCallHandler {
|
|
|
24
24
|
*/
|
|
25
25
|
basicGasCost: (number & import("@typeberry/numbers").WithBytesRepresentation<4> & import("@typeberry/utils").WithOpaque<"SmallGas[U32]">) | ((regs: HostCallRegisters) => import("@typeberry/pvm-interface").Gas);
|
|
26
26
|
tracedRegisters: (number & import("@typeberry/utils").WithOpaque<"register index">)[];
|
|
27
|
-
|
|
27
|
+
static new(currentServiceId: ServiceId, partialState: PartialState): Transfer;
|
|
28
|
+
private constructor();
|
|
28
29
|
execute(gas: IGasCounter, regs: HostCallRegisters, memory: HostCallMemory): Promise<undefined | PvmExecution>;
|
|
29
30
|
}
|
|
30
31
|
//# sourceMappingURL=transfer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/transfer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAmB,MAAM,kBAAkB,CAAC;AAEnE,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,EAA2B,MAAM,0BAA0B,CAAC;AAErF,OAAO,EAAE,KAAK,YAAY,EAAsC,MAAM,mCAAmC,CAAC;AAU1G;;;;GAIG;AACH,qBAAa,QAAS,YAAW,eAAe;
|
|
1
|
+
{"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jam-host-calls/accumulate/transfer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAmB,MAAM,kBAAkB,CAAC;AAEnE,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,EAA2B,MAAM,0BAA0B,CAAC;AAErF,OAAO,EAAE,KAAK,YAAY,EAAsC,MAAM,mCAAmC,CAAC;AAU1G;;;;GAIG;AACH,qBAAa,QAAS,YAAW,eAAe;aAuB5B,gBAAgB,EAAE,SAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAvB/B,KAAK,iIAA0B;IAC/B;;;;;;;;;OASG;IACH,YAAY,wIAED,iBAAiB,6CAAoD;IAEhF,eAAe,uEAAgF;IAE/F,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY;IAIlE,OAAO;IAKD,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;CAsDpH"}
|
|
@@ -34,6 +34,9 @@ export class Transfer {
|
|
|
34
34
|
? tryAsSmallGas(10)
|
|
35
35
|
: (regs) => tryAsGas(10n + regs.get(TRANSFER_GAS_FEE_REG));
|
|
36
36
|
tracedRegisters = traceRegisters(IN_OUT_REG, AMOUNT_REG, TRANSFER_GAS_FEE_REG, MEMO_START_REG);
|
|
37
|
+
static new(currentServiceId, partialState) {
|
|
38
|
+
return new Transfer(currentServiceId, partialState);
|
|
39
|
+
}
|
|
37
40
|
constructor(currentServiceId, partialState) {
|
|
38
41
|
this.currentServiceId = currentServiceId;
|
|
39
42
|
this.partialState = partialState;
|