@typeberry/lib 0.5.10 → 0.5.11-1fbacf3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/bin/lib/examples/pvm-usage.test.js +2 -2
- package/package.json +1 -1
- package/packages/core/codec/descriptor.js +1 -1
- package/packages/core/codec/descriptors.js +7 -4
- package/packages/core/codec/encoder.d.ts +1 -1
- package/packages/core/codec/encoder.d.ts.map +1 -1
- package/packages/core/codec/encoder.js +3 -2
- package/packages/core/codec/index.test.js +1 -1
- package/packages/core/codec/skip.d.ts +2 -1
- package/packages/core/codec/skip.d.ts.map +1 -1
- package/packages/core/codec/skip.js +3 -0
- package/packages/core/codec/view.js +2 -2
- package/packages/core/collections/multi-map.d.ts +2 -1
- package/packages/core/collections/multi-map.d.ts.map +1 -1
- package/packages/core/collections/multi-map.js +3 -0
- package/packages/core/collections/multi-map.test.js +2 -2
- package/packages/core/concurrent/parent.js +4 -1
- package/packages/core/crypto/ed25519.d.ts +2 -5
- package/packages/core/crypto/ed25519.d.ts.map +1 -1
- package/packages/core/crypto/ed25519.js +4 -1
- package/packages/core/hash/hash.d.ts +4 -2
- package/packages/core/hash/hash.d.ts.map +1 -1
- package/packages/core/hash/hash.js +6 -1
- package/packages/core/networking/quic-network.d.ts +3 -2
- package/packages/core/networking/quic-network.d.ts.map +1 -1
- package/packages/core/networking/quic-network.js +3 -0
- package/packages/core/networking/quic-peer.d.ts +2 -1
- package/packages/core/networking/quic-peer.d.ts.map +1 -1
- package/packages/core/networking/quic-peer.js +5 -2
- package/packages/core/networking/quic-stream.d.ts +2 -1
- package/packages/core/networking/quic-stream.d.ts.map +1 -1
- package/packages/core/networking/quic-stream.js +3 -0
- package/packages/core/networking/setup.js +2 -2
- package/packages/core/pvm-host-calls/bin.js +2 -2
- package/packages/core/pvm-host-calls/ecalli-trace-logger.d.ts +5 -0
- package/packages/core/pvm-host-calls/ecalli-trace-logger.d.ts.map +1 -1
- package/packages/core/pvm-host-calls/ecalli-trace-logger.js +8 -1
- package/packages/core/pvm-host-calls/ecalli-trace-logger.test.js +1 -1
- package/packages/core/pvm-host-calls/host-call-memory.d.ts +2 -1
- package/packages/core/pvm-host-calls/host-call-memory.d.ts.map +1 -1
- package/packages/core/pvm-host-calls/host-call-memory.js +3 -0
- package/packages/core/pvm-host-calls/host-call-memory.test.js +1 -1
- package/packages/core/pvm-host-calls/host-call-registers.d.ts +5 -1
- package/packages/core/pvm-host-calls/host-call-registers.d.ts.map +1 -1
- package/packages/core/pvm-host-calls/host-call-registers.js +11 -1
- package/packages/core/pvm-host-calls/host-call-registers.test.js +2 -2
- package/packages/core/pvm-host-calls/host-calls-executor.d.ts +2 -1
- package/packages/core/pvm-host-calls/host-calls-executor.d.ts.map +1 -1
- package/packages/core/pvm-host-calls/host-calls-executor.js +5 -2
- package/packages/core/pvm-host-calls/host-calls.d.ts +4 -2
- package/packages/core/pvm-host-calls/host-calls.d.ts.map +1 -1
- package/packages/core/pvm-host-calls/host-calls.js +9 -4
- package/packages/core/pvm-host-calls/pvm-instance-manager.js +1 -1
- package/packages/core/pvm-interface/pvm.d.ts +2 -0
- package/packages/core/pvm-interface/pvm.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/args-decoder/args-decoder.js +1 -1
- package/packages/core/pvm-interpreter/args-decoder/args-decoder.test.js +3 -3
- package/packages/core/pvm-interpreter/args-decoder/args-decoding-results.js +11 -11
- package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.d.ts +2 -1
- package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.js +3 -0
- package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.test.js +2 -2
- package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.d.ts +2 -1
- package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.js +3 -0
- package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.test.js +26 -26
- package/packages/core/pvm-interpreter/basic-blocks/basic-blocks.test.js +8 -8
- package/packages/core/pvm-interpreter/bin.js +1 -1
- package/packages/core/pvm-interpreter/debugger-adapter.d.ts +2 -1
- package/packages/core/pvm-interpreter/debugger-adapter.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/debugger-adapter.js +6 -3
- package/packages/core/pvm-interpreter/gas.js +4 -1
- package/packages/core/pvm-interpreter/interpreter.d.ts +2 -1
- package/packages/core/pvm-interpreter/interpreter.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/interpreter.js +19 -16
- package/packages/core/pvm-interpreter/memory/memory-builder.js +2 -2
- package/packages/core/pvm-interpreter/memory/memory-builder.test.js +7 -7
- package/packages/core/pvm-interpreter/memory/memory.d.ts +2 -1
- package/packages/core/pvm-interpreter/memory/memory.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/memory/memory.js +4 -1
- package/packages/core/pvm-interpreter/memory/memory.test.js +31 -31
- package/packages/core/pvm-interpreter/memory/pages/readable-page.d.ts +2 -1
- package/packages/core/pvm-interpreter/memory/pages/readable-page.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/memory/pages/readable-page.js +3 -0
- package/packages/core/pvm-interpreter/memory/pages/readable-page.test.js +3 -3
- package/packages/core/pvm-interpreter/memory/pages/writeable-page.d.ts +2 -1
- package/packages/core/pvm-interpreter/memory/pages/writeable-page.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/memory/pages/writeable-page.js +3 -0
- package/packages/core/pvm-interpreter/memory/pages/writeable-page.test.js +4 -4
- package/packages/core/pvm-interpreter/ops/bit-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/bit-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/bit-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/bit-ops.test.js +3 -3
- package/packages/core/pvm-interpreter/ops/bit-rotation-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/bit-rotation-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/bit-rotation-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/bit-rotation-ops.test.js +5 -5
- package/packages/core/pvm-interpreter/ops/boolean-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/boolean-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/boolean-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/boolean-ops.test.js +3 -3
- package/packages/core/pvm-interpreter/ops/branch-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/branch-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/branch-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/branch-ops.test.js +4 -4
- package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.test.js +5 -5
- package/packages/core/pvm-interpreter/ops/host-call-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/host-call-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/host-call-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/host-call-ops.test.js +2 -2
- package/packages/core/pvm-interpreter/ops/load-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/load-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/load-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/load-ops.test.js +10 -10
- package/packages/core/pvm-interpreter/ops/math-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/math-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/math-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/math-ops.test.js +3 -3
- package/packages/core/pvm-interpreter/ops/memory-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/memory-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/memory-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/memory-ops.test.js +3 -3
- package/packages/core/pvm-interpreter/ops/move-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/move-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/move-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/move-ops.test.js +3 -3
- package/packages/core/pvm-interpreter/ops/no-args-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/no-args-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/no-args-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/no-args-ops.test.js +2 -2
- package/packages/core/pvm-interpreter/ops/shift-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/shift-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/shift-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/shift-ops.test.js +3 -3
- package/packages/core/pvm-interpreter/ops/store-ops.d.ts +2 -1
- package/packages/core/pvm-interpreter/ops/store-ops.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/store-ops.js +3 -0
- package/packages/core/pvm-interpreter/ops/store-ops.test.js +7 -7
- package/packages/core/pvm-interpreter/ops-dispatchers/no-args-dispatcher.test.js +1 -1
- package/packages/core/pvm-interpreter/ops-dispatchers/one-imm-dispatcher.test.js +4 -4
- package/packages/core/pvm-interpreter/ops-dispatchers/one-offset-dispatcher.test.js +2 -2
- package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-ext-imm-dispatcher.test.js +4 -4
- package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-imm-dispatcher.test.js +7 -7
- package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-imm-one-offset-dispatcher.test.js +10 -10
- package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-two-imms-dispatcher.test.js +5 -5
- package/packages/core/pvm-interpreter/ops-dispatchers/three-regs-dispatcher.test.js +7 -7
- package/packages/core/pvm-interpreter/ops-dispatchers/two-imms-dispatcher.test.js +5 -5
- package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-dispatcher.test.js +6 -6
- package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-one-imm-dispatcher.test.js +11 -11
- package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-one-offset-dispatcher.test.js +2 -2
- package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-two-imms-dispatcher.test.js +14 -14
- package/packages/core/pvm-interpreter/program-decoder/jump-table.d.ts +5 -2
- package/packages/core/pvm-interpreter/program-decoder/jump-table.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/program-decoder/jump-table.js +9 -4
- package/packages/core/pvm-interpreter/program-decoder/jump-table.test.js +6 -6
- package/packages/core/pvm-interpreter/program-decoder/mask.d.ts +2 -1
- package/packages/core/pvm-interpreter/program-decoder/mask.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/program-decoder/mask.js +3 -0
- package/packages/core/pvm-interpreter/program-decoder/mask.test.js +10 -10
- package/packages/core/pvm-interpreter/program-decoder/program-decoder.d.ts +2 -1
- package/packages/core/pvm-interpreter/program-decoder/program-decoder.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/program-decoder/program-decoder.js +6 -3
- package/packages/core/pvm-interpreter/program-decoder/program-decoder.test.js +5 -5
- package/packages/core/pvm-interpreter/program.js +3 -3
- package/packages/core/pvm-interpreter/registers.d.ts +5 -2
- package/packages/core/pvm-interpreter/registers.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/registers.js +10 -6
- package/packages/core/pvm-interpreter/registers.test.js +10 -10
- package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.d.ts +6 -3
- package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.js +11 -2
- package/packages/core/pvm-interpreter-ananas/index.d.ts +6 -3
- package/packages/core/pvm-interpreter-ananas/index.d.ts.map +1 -1
- package/packages/core/pvm-interpreter-ananas/index.js +12 -3
- package/packages/core/trie/nodes.d.ts +7 -2
- package/packages/core/trie/nodes.d.ts.map +1 -1
- package/packages/core/trie/nodes.js +20 -11
- package/packages/core/trie/nodesDb.d.ts +3 -1
- package/packages/core/trie/nodesDb.d.ts.map +1 -1
- package/packages/core/trie/nodesDb.js +6 -0
- package/packages/core/trie/trie.js +2 -2
- package/packages/extensions/ipc/index.js +5 -2
- package/packages/extensions/ipc/jamnp/handler.d.ts +4 -2
- package/packages/extensions/ipc/jamnp/handler.d.ts.map +1 -1
- package/packages/extensions/ipc/jamnp/handler.js +9 -3
- package/packages/extensions/ipc/jamnp/server.js +3 -3
- package/packages/extensions/ipc/server.d.ts +2 -1
- package/packages/extensions/ipc/server.d.ts.map +1 -1
- package/packages/extensions/ipc/server.js +4 -1
- package/packages/jam/block/header.js +1 -1
- package/packages/jam/block/work-package.d.ts +7 -7
- package/packages/jam/block/work-package.d.ts.map +1 -1
- package/packages/jam/block/work-package.js +12 -12
- package/packages/jam/config/chain-spec.d.ts +2 -1
- package/packages/jam/config/chain-spec.d.ts.map +1 -1
- package/packages/jam/config/chain-spec.js +5 -2
- package/packages/jam/config/network.d.ts +2 -7
- package/packages/jam/config/network.d.ts.map +1 -1
- package/packages/jam/config/network.js +3 -0
- package/packages/jam/config-node/jip-chain-spec.js +1 -1
- package/packages/jam/database/blocks.test.js +1 -1
- package/packages/jam/database/states.d.ts +2 -1
- package/packages/jam/database/states.d.ts.map +1 -1
- package/packages/jam/database/states.js +3 -0
- package/packages/jam/database/states.test.js +1 -1
- package/packages/jam/database-lmdb/blocks.d.ts +2 -1
- package/packages/jam/database-lmdb/blocks.d.ts.map +1 -1
- package/packages/jam/database-lmdb/blocks.js +3 -0
- package/packages/jam/database-lmdb/root.d.ts +2 -1
- package/packages/jam/database-lmdb/root.d.ts.map +1 -1
- package/packages/jam/database-lmdb/root.js +3 -0
- package/packages/jam/database-lmdb/states.d.ts +2 -1
- package/packages/jam/database-lmdb/states.d.ts.map +1 -1
- package/packages/jam/database-lmdb/states.js +3 -0
- package/packages/jam/database-lmdb/states.test.js +9 -9
- package/packages/jam/executor/index.d.ts +1 -1
- package/packages/jam/executor/index.d.ts.map +1 -1
- package/packages/jam/executor/index.js +1 -1
- package/packages/jam/executor/pvm-executor.d.ts +9 -2
- package/packages/jam/executor/pvm-executor.d.ts.map +1 -1
- package/packages/jam/executor/pvm-executor.js +36 -21
- package/packages/jam/fuzz-proto/v1/handler.d.ts +2 -1
- package/packages/jam/fuzz-proto/v1/handler.d.ts.map +1 -1
- package/packages/jam/fuzz-proto/v1/handler.js +3 -0
- package/packages/jam/fuzz-proto/v1/handler.test.js +10 -10
- package/packages/jam/in-core/externalities/index.d.ts +4 -0
- package/packages/jam/in-core/externalities/index.d.ts.map +1 -0
- package/packages/jam/in-core/externalities/index.js +3 -0
- package/packages/jam/in-core/externalities/is-authorized-fetch.d.ts +20 -0
- package/packages/jam/in-core/externalities/is-authorized-fetch.d.ts.map +1 -0
- package/packages/jam/in-core/externalities/is-authorized-fetch.js +41 -0
- package/packages/jam/in-core/externalities/is-authorized-fetch.test.d.ts +2 -0
- package/packages/jam/in-core/externalities/is-authorized-fetch.test.d.ts.map +1 -0
- package/packages/jam/in-core/externalities/is-authorized-fetch.test.js +101 -0
- package/packages/jam/in-core/externalities/refine-fetch.d.ts +51 -0
- package/packages/jam/in-core/externalities/refine-fetch.d.ts.map +1 -0
- package/packages/jam/in-core/externalities/refine-fetch.js +80 -0
- package/packages/jam/in-core/externalities/refine-fetch.test.d.ts +2 -0
- package/packages/jam/in-core/externalities/refine-fetch.test.d.ts.map +1 -0
- package/packages/jam/in-core/externalities/refine-fetch.test.js +219 -0
- package/packages/jam/in-core/externalities/refine.d.ts +18 -8
- package/packages/jam/in-core/externalities/refine.d.ts.map +1 -1
- package/packages/jam/in-core/externalities/refine.js +86 -7
- package/packages/jam/in-core/externalities/refine.test.js +168 -3
- package/packages/jam/in-core/in-core.d.ts +9 -23
- package/packages/jam/in-core/in-core.d.ts.map +1 -1
- package/packages/jam/in-core/in-core.js +22 -187
- package/packages/jam/in-core/in-core.test.js +52 -20
- package/packages/jam/in-core/is-authorized.d.ts +34 -0
- package/packages/jam/in-core/is-authorized.d.ts.map +1 -0
- package/packages/jam/in-core/is-authorized.js +73 -0
- package/packages/jam/in-core/is-authorized.test.d.ts +2 -0
- package/packages/jam/in-core/is-authorized.test.d.ts.map +1 -0
- package/packages/jam/in-core/is-authorized.test.js +167 -0
- package/packages/jam/in-core/refine.d.ts +31 -0
- package/packages/jam/in-core/refine.d.ts.map +1 -0
- package/packages/jam/in-core/refine.js +182 -0
- package/packages/jam/in-core/refine.test.d.ts +2 -0
- package/packages/jam/in-core/refine.test.d.ts.map +1 -0
- package/packages/jam/in-core/refine.test.js +6 -0
- package/packages/jam/jam-host-calls/accumulate/assign.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/assign.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/assign.js +3 -0
- package/packages/jam/jam-host-calls/accumulate/assign.test.js +8 -9
- package/packages/jam/jam-host-calls/accumulate/bless.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/bless.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/bless.js +12 -9
- package/packages/jam/jam-host-calls/accumulate/bless.test.js +11 -12
- package/packages/jam/jam-host-calls/accumulate/checkpoint.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/checkpoint.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/checkpoint.js +4 -1
- package/packages/jam/jam-host-calls/accumulate/checkpoint.test.js +2 -3
- package/packages/jam/jam-host-calls/accumulate/designate.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/designate.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/designate.js +3 -0
- package/packages/jam/jam-host-calls/accumulate/designate.test.js +5 -6
- package/packages/jam/jam-host-calls/accumulate/eject.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/eject.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/eject.js +3 -0
- package/packages/jam/jam-host-calls/accumulate/eject.test.js +8 -9
- package/packages/jam/jam-host-calls/accumulate/forget.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/forget.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/forget.js +3 -0
- package/packages/jam/jam-host-calls/accumulate/forget.test.js +5 -6
- package/packages/jam/jam-host-calls/accumulate/new.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/new.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/new.js +3 -0
- package/packages/jam/jam-host-calls/accumulate/new.test.js +9 -10
- package/packages/jam/jam-host-calls/accumulate/provide.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/provide.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/provide.js +3 -0
- package/packages/jam/jam-host-calls/accumulate/provide.test.js +8 -9
- package/packages/jam/jam-host-calls/accumulate/query.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/query.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/query.js +3 -0
- package/packages/jam/jam-host-calls/accumulate/query.test.js +8 -9
- package/packages/jam/jam-host-calls/accumulate/solicit.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/solicit.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/solicit.js +3 -0
- package/packages/jam/jam-host-calls/accumulate/solicit.test.js +7 -8
- package/packages/jam/jam-host-calls/accumulate/transfer.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/transfer.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/transfer.js +3 -0
- package/packages/jam/jam-host-calls/accumulate/transfer.test.js +9 -10
- package/packages/jam/jam-host-calls/accumulate/upgrade.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/upgrade.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/upgrade.js +3 -0
- package/packages/jam/jam-host-calls/accumulate/upgrade.test.js +4 -5
- package/packages/jam/jam-host-calls/accumulate/yield.d.ts +2 -1
- package/packages/jam/jam-host-calls/accumulate/yield.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/yield.js +3 -0
- package/packages/jam/jam-host-calls/accumulate/yield.test.js +4 -5
- package/packages/jam/jam-host-calls/externalities/partial-state.d.ts +1 -1
- package/packages/jam/jam-host-calls/externalities/refine-externalities.d.ts +1 -1
- package/packages/jam/jam-host-calls/externalities/refine-externalities.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/externalities/refine-externalities.test.js +9 -9
- package/packages/jam/jam-host-calls/externalities/state-update.d.ts +2 -3
- package/packages/jam/jam-host-calls/externalities/state-update.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/externalities/state-update.js +5 -2
- package/packages/jam/jam-host-calls/externalities/test-accounts.js +2 -2
- package/packages/jam/jam-host-calls/general/fetch.d.ts +166 -104
- package/packages/jam/jam-host-calls/general/fetch.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/general/fetch.js +120 -23
- package/packages/jam/jam-host-calls/general/fetch.test.js +125 -92
- package/packages/jam/jam-host-calls/general/gas.d.ts +2 -1
- package/packages/jam/jam-host-calls/general/gas.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/general/gas.js +3 -0
- package/packages/jam/jam-host-calls/general/gas.test.js +4 -5
- package/packages/jam/jam-host-calls/general/info.d.ts +2 -1
- package/packages/jam/jam-host-calls/general/info.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/general/info.js +3 -0
- package/packages/jam/jam-host-calls/general/info.test.js +6 -7
- package/packages/jam/jam-host-calls/general/log.d.ts +2 -1
- package/packages/jam/jam-host-calls/general/log.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/general/log.js +3 -0
- package/packages/jam/jam-host-calls/general/lookup.d.ts +2 -1
- package/packages/jam/jam-host-calls/general/lookup.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/general/lookup.js +3 -0
- package/packages/jam/jam-host-calls/general/lookup.test.js +8 -9
- package/packages/jam/jam-host-calls/general/read.d.ts +2 -1
- package/packages/jam/jam-host-calls/general/read.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/general/read.js +3 -0
- package/packages/jam/jam-host-calls/general/read.test.js +11 -12
- package/packages/jam/jam-host-calls/general/write.d.ts +2 -1
- package/packages/jam/jam-host-calls/general/write.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/general/write.js +3 -0
- package/packages/jam/jam-host-calls/general/write.test.js +10 -11
- package/packages/jam/jam-host-calls/refine/export.d.ts +2 -1
- package/packages/jam/jam-host-calls/refine/export.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/refine/export.js +3 -0
- package/packages/jam/jam-host-calls/refine/export.test.js +6 -7
- package/packages/jam/jam-host-calls/refine/expunge.d.ts +2 -1
- package/packages/jam/jam-host-calls/refine/expunge.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/refine/expunge.js +3 -0
- package/packages/jam/jam-host-calls/refine/expunge.test.js +3 -4
- package/packages/jam/jam-host-calls/refine/historical-lookup.d.ts +2 -1
- package/packages/jam/jam-host-calls/refine/historical-lookup.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/refine/historical-lookup.js +3 -0
- package/packages/jam/jam-host-calls/refine/historical-lookup.test.js +11 -12
- package/packages/jam/jam-host-calls/refine/invoke.d.ts +2 -1
- package/packages/jam/jam-host-calls/refine/invoke.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/refine/invoke.js +4 -1
- package/packages/jam/jam-host-calls/refine/invoke.test.js +10 -11
- package/packages/jam/jam-host-calls/refine/machine.d.ts +2 -1
- package/packages/jam/jam-host-calls/refine/machine.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/refine/machine.js +3 -0
- package/packages/jam/jam-host-calls/refine/machine.test.js +6 -7
- package/packages/jam/jam-host-calls/refine/pages.d.ts +2 -1
- package/packages/jam/jam-host-calls/refine/pages.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/refine/pages.js +3 -0
- package/packages/jam/jam-host-calls/refine/pages.test.js +3 -4
- package/packages/jam/jam-host-calls/refine/peek.d.ts +2 -1
- package/packages/jam/jam-host-calls/refine/peek.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/refine/peek.js +3 -0
- package/packages/jam/jam-host-calls/refine/peek.test.js +3 -4
- package/packages/jam/jam-host-calls/refine/poke.d.ts +2 -1
- package/packages/jam/jam-host-calls/refine/poke.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/refine/poke.js +3 -0
- package/packages/jam/jam-host-calls/refine/poke.test.js +3 -4
- package/packages/jam/jamnp-s/network.js +1 -1
- package/packages/jam/jamnp-s/peers.d.ts +2 -1
- package/packages/jam/jamnp-s/peers.d.ts.map +1 -1
- package/packages/jam/jamnp-s/peers.js +3 -0
- package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts +4 -2
- package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-128-block-request.js +6 -0
- package/packages/jam/jamnp-s/protocol/ce-128-block-request.test.js +2 -2
- package/packages/jam/jamnp-s/protocol/ce-129-state-request.d.ts +4 -2
- package/packages/jam/jamnp-s/protocol/ce-129-state-request.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-129-state-request.js +6 -0
- package/packages/jam/jamnp-s/protocol/ce-129-state-request.test.js +4 -4
- package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts +4 -2
- package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.js +6 -0
- package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.test.js +2 -2
- package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts +6 -3
- package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.js +7 -0
- package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.test.js +2 -2
- package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.d.ts +5 -2
- package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.js +7 -0
- package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.test.js +2 -2
- package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts +4 -2
- package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.js +6 -0
- package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.test.js +2 -2
- package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts +2 -1
- package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/up-0-block-announcement.js +3 -0
- package/packages/jam/jamnp-s/stream-manager.d.ts +2 -1
- package/packages/jam/jamnp-s/stream-manager.d.ts.map +1 -1
- package/packages/jam/jamnp-s/stream-manager.js +4 -1
- package/packages/jam/jamnp-s/tasks/sync.js +4 -4
- package/packages/jam/jamnp-s/tasks/sync.test.js +4 -4
- package/packages/jam/jamnp-s/tasks/ticket-distribution.js +2 -2
- package/packages/jam/jamnp-s/tasks/ticket-distribution.test.js +1 -1
- package/packages/jam/node/common.d.ts.map +1 -1
- package/packages/jam/node/common.js +3 -3
- package/packages/jam/rpc-client/index.d.ts +4 -2
- package/packages/jam/rpc-client/index.d.ts.map +1 -1
- package/packages/jam/rpc-client/index.js +7 -1
- package/packages/jam/state/in-memory-state-view.d.ts +2 -1
- package/packages/jam/state/in-memory-state-view.d.ts.map +1 -1
- package/packages/jam/state/in-memory-state-view.js +3 -0
- package/packages/jam/state/in-memory-state.d.ts +16 -21
- package/packages/jam/state/in-memory-state.d.ts.map +1 -1
- package/packages/jam/state/in-memory-state.js +10 -6
- package/packages/jam/state/in-memory-state.test.js +2 -2
- package/packages/jam/state/service.d.ts +2 -6
- package/packages/jam/state/service.d.ts.map +1 -1
- package/packages/jam/state/service.js +3 -0
- package/packages/jam/state/test.utils.js +3 -3
- package/packages/jam/state-json/accounts.js +5 -5
- package/packages/jam/state-merkleization/in-memory-state-codec.d.ts +3 -34
- package/packages/jam/state-merkleization/in-memory-state-codec.d.ts.map +1 -1
- package/packages/jam/state-merkleization/in-memory-state-codec.js +1 -1
- package/packages/jam/state-merkleization/serialized-state-view.d.ts +8 -3
- package/packages/jam/state-merkleization/serialized-state-view.d.ts.map +1 -1
- package/packages/jam/state-merkleization/serialized-state-view.js +6 -3
- package/packages/jam/state-merkleization/serialized-state.d.ts +2 -3
- package/packages/jam/state-merkleization/serialized-state.d.ts.map +1 -1
- package/packages/jam/state-merkleization/serialized-state.js +10 -2
- package/packages/jam/state-merkleization/serialized-state.test.js +1 -1
- package/packages/jam/transition/accumulate/accumulate.d.ts.map +1 -1
- package/packages/jam/transition/accumulate/accumulate.js +20 -8
- package/packages/jam/transition/accumulate/accumulate.test.js +1 -1
- package/packages/jam/transition/accumulate/accumulation-result-merge-utils.js +48 -39
- package/packages/jam/transition/block-verifier.d.ts +2 -1
- package/packages/jam/transition/block-verifier.d.ts.map +1 -1
- package/packages/jam/transition/block-verifier.js +3 -0
- package/packages/jam/transition/block-verifier.test.js +8 -8
- package/packages/jam/transition/chain-stf.d.ts +12 -4
- package/packages/jam/transition/chain-stf.d.ts.map +1 -1
- package/packages/jam/transition/chain-stf.js +7 -3
- package/packages/jam/transition/externalities/accumulate-externalities.d.ts +22 -8
- package/packages/jam/transition/externalities/accumulate-externalities.d.ts.map +1 -1
- package/packages/jam/transition/externalities/accumulate-externalities.js +49 -29
- package/packages/jam/transition/externalities/accumulate-externalities.test.js +661 -101
- package/packages/jam/transition/externalities/accumulate-fetch-externalities.d.ts +19 -0
- package/packages/jam/transition/externalities/accumulate-fetch-externalities.d.ts.map +1 -0
- package/packages/jam/transition/externalities/accumulate-fetch-externalities.js +45 -0
- package/packages/jam/transition/externalities/accumulate-fetch-externalities.test.d.ts +2 -0
- package/packages/jam/transition/externalities/accumulate-fetch-externalities.test.d.ts.map +1 -0
- package/packages/jam/transition/externalities/accumulate-fetch-externalities.test.js +192 -0
- package/packages/jam/transition/externalities/fetch-externalities.d.ts +54 -37
- package/packages/jam/transition/externalities/fetch-externalities.d.ts.map +1 -1
- package/packages/jam/transition/externalities/fetch-externalities.js +45 -89
- package/packages/jam/transition/externalities/index.d.ts +1 -0
- package/packages/jam/transition/externalities/index.d.ts.map +1 -1
- package/packages/jam/transition/externalities/index.js +1 -0
- package/packages/jam/transition/hasher.d.ts +2 -1
- package/packages/jam/transition/hasher.d.ts.map +1 -1
- package/packages/jam/transition/hasher.js +5 -2
- package/packages/jam/transition/hasher.test.js +1 -1
- package/packages/jam/transition/preimages.test.js +4 -4
- package/packages/jam/transition/reports/test.utils.js +1 -1
- package/packages/workers/api-node/config.js +4 -4
- package/packages/workers/api-node/port.d.ts +2 -1
- package/packages/workers/api-node/port.d.ts.map +1 -1
- package/packages/workers/api-node/port.js +4 -1
- package/packages/workers/api-node/port.test.js +2 -2
- package/packages/workers/api-node/protocol.js +2 -2
- package/packages/workers/block-authorship/generator.d.ts +13 -2
- package/packages/workers/block-authorship/generator.d.ts.map +1 -1
- package/packages/workers/block-authorship/generator.js +13 -9
- package/packages/workers/block-authorship/generator.test.js +16 -2
- package/packages/workers/block-authorship/main.d.ts.map +1 -1
- package/packages/workers/block-authorship/main.js +8 -1
- package/packages/workers/importer/finality.test.js +1 -1
- package/packages/workers/importer/importer.d.ts +23 -6
- package/packages/workers/importer/importer.d.ts.map +1 -1
- package/packages/workers/importer/importer.js +34 -19
- package/packages/workers/importer/main.d.ts.map +1 -1
- package/packages/workers/importer/main.js +13 -5
- package/packages/jam/transition/externalities/fetch-externalities.test.d.ts +0 -2
- package/packages/jam/transition/externalities/fetch-externalities.test.d.ts.map +0 -1
- package/packages/jam/transition/externalities/fetch-externalities.test.js +0 -254
|
@@ -5,7 +5,7 @@ describe("JumpTable", () => {
|
|
|
5
5
|
it("should return true when an index exist in jump table", () => {
|
|
6
6
|
const jumpTableItemLength = 4;
|
|
7
7
|
const bytes = new Uint8Array([0x78, 0x56, 0x34, 0x12]);
|
|
8
|
-
const jumpTable =
|
|
8
|
+
const jumpTable = JumpTable.fromRaw(jumpTableItemLength, bytes);
|
|
9
9
|
const indexToCheck = 0;
|
|
10
10
|
const result = jumpTable.hasIndex(indexToCheck);
|
|
11
11
|
assert.strictEqual(result, true);
|
|
@@ -13,7 +13,7 @@ describe("JumpTable", () => {
|
|
|
13
13
|
it("should return false when an index not exist in jump table", () => {
|
|
14
14
|
const jumpTableItemLength = 4;
|
|
15
15
|
const bytes = new Uint8Array([0x78, 0x56, 0x34, 0x12]);
|
|
16
|
-
const jumpTable =
|
|
16
|
+
const jumpTable = JumpTable.fromRaw(jumpTableItemLength, bytes);
|
|
17
17
|
const indexToCheck = 5;
|
|
18
18
|
const result = jumpTable.hasIndex(indexToCheck);
|
|
19
19
|
assert.strictEqual(result, false);
|
|
@@ -22,7 +22,7 @@ describe("JumpTable", () => {
|
|
|
22
22
|
const jumpTableItemLength = 4;
|
|
23
23
|
const expectedValue = 0x12_34_56_78;
|
|
24
24
|
const bytes = new Uint8Array([0xff, 0xff, 0xff, 0xff, 0x78, 0x56, 0x34, 0x12]);
|
|
25
|
-
const jumpTable =
|
|
25
|
+
const jumpTable = JumpTable.fromRaw(jumpTableItemLength, bytes);
|
|
26
26
|
const indexToCheck = 1;
|
|
27
27
|
const result = jumpTable.getDestination(indexToCheck);
|
|
28
28
|
assert.strictEqual(result, expectedValue);
|
|
@@ -31,7 +31,7 @@ describe("JumpTable", () => {
|
|
|
31
31
|
const jumpTableItemLength = 8;
|
|
32
32
|
const expectedValue = 0xff_ff_ff_ff;
|
|
33
33
|
const bytes = new Uint8Array([0xff, 0xff, 0xff, 0xff, 0x78, 0x56, 0x34, 0x12]);
|
|
34
|
-
const jumpTable =
|
|
34
|
+
const jumpTable = JumpTable.fromRaw(jumpTableItemLength, bytes);
|
|
35
35
|
const indexToCheck = 0;
|
|
36
36
|
const result = jumpTable.getDestination(indexToCheck);
|
|
37
37
|
assert.strictEqual(result, expectedValue);
|
|
@@ -40,7 +40,7 @@ describe("JumpTable", () => {
|
|
|
40
40
|
const jumpTableItemLength = 8;
|
|
41
41
|
const expectedValue = 0x00_00_00_00_12_34_56_78;
|
|
42
42
|
const bytes = new Uint8Array([0x78, 0x56, 0x34, 0x12, 0, 0, 0, 0]);
|
|
43
|
-
const jumpTable =
|
|
43
|
+
const jumpTable = JumpTable.fromRaw(jumpTableItemLength, bytes);
|
|
44
44
|
const indexToCheck = 0;
|
|
45
45
|
const result = jumpTable.getDestination(indexToCheck);
|
|
46
46
|
assert.strictEqual(result, expectedValue);
|
|
@@ -50,7 +50,7 @@ describe("JumpTable", () => {
|
|
|
50
50
|
const expectedValue = 2 ** 32 - 1;
|
|
51
51
|
const bytes = new Uint8Array(255);
|
|
52
52
|
bytes.fill(1);
|
|
53
|
-
const jumpTable =
|
|
53
|
+
const jumpTable = JumpTable.fromRaw(jumpTableItemLength, bytes);
|
|
54
54
|
const indexToCheck = 0;
|
|
55
55
|
const result = jumpTable.getDestination(indexToCheck);
|
|
56
56
|
assert.strictEqual(result, expectedValue);
|
|
@@ -17,7 +17,8 @@ export declare class Mask {
|
|
|
17
17
|
* There are instructions at indices `0, 3, 5, 9`.
|
|
18
18
|
*/
|
|
19
19
|
private lookupTableForward;
|
|
20
|
-
|
|
20
|
+
static new(mask: BitVec): Mask;
|
|
21
|
+
private constructor();
|
|
21
22
|
isInstruction(index: number): boolean;
|
|
22
23
|
getNoOfBytesToNextInstruction(index: number): number;
|
|
23
24
|
private buildLookupTableForward;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mask.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/pvm-interpreter/program-decoder/mask.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAQ1C;;;;GAIG;AACH,qBAAa,IAAI;IACf;;;;;;;;;;OAUG;IACH,OAAO,CAAC,kBAAkB,CAAa;
|
|
1
|
+
{"version":3,"file":"mask.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/pvm-interpreter/program-decoder/mask.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAQ1C;;;;GAIG;AACH,qBAAa,IAAI;IACf;;;;;;;;;;OAUG;IACH,OAAO,CAAC,kBAAkB,CAAa;IAEvC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM;IAIvB,OAAO;IAIP,aAAa,CAAC,KAAK,EAAE,MAAM;IAI3B,6BAA6B,CAAC,KAAK,EAAE,MAAM;IAK3C,OAAO,CAAC,uBAAuB;IAc/B,MAAM,CAAC,KAAK;CAGb"}
|
|
@@ -8,7 +8,7 @@ describe("Mask", () => {
|
|
|
8
8
|
const input = [0b0000_0001];
|
|
9
9
|
const index = 0;
|
|
10
10
|
const expectedResult = true;
|
|
11
|
-
const mask = new
|
|
11
|
+
const mask = Mask.new(BitVec.fromBlob(new Uint8Array(input), 3));
|
|
12
12
|
const result = mask.isInstruction(index);
|
|
13
13
|
assert.strictEqual(result, expectedResult);
|
|
14
14
|
});
|
|
@@ -16,7 +16,7 @@ describe("Mask", () => {
|
|
|
16
16
|
const input = [0b0000_0001];
|
|
17
17
|
const index = 1;
|
|
18
18
|
const expectedResult = false;
|
|
19
|
-
const mask = new
|
|
19
|
+
const mask = Mask.new(BitVec.fromBlob(new Uint8Array(input), 3));
|
|
20
20
|
const result = mask.isInstruction(index);
|
|
21
21
|
assert.strictEqual(result, expectedResult);
|
|
22
22
|
});
|
|
@@ -24,7 +24,7 @@ describe("Mask", () => {
|
|
|
24
24
|
const input = [0x0, 0b0000_0001];
|
|
25
25
|
const index = 8;
|
|
26
26
|
const expectedResult = true;
|
|
27
|
-
const mask = new
|
|
27
|
+
const mask = Mask.new(BitVec.fromBlob(new Uint8Array(input), 11));
|
|
28
28
|
const result = mask.isInstruction(index);
|
|
29
29
|
assert.strictEqual(result, expectedResult);
|
|
30
30
|
});
|
|
@@ -32,7 +32,7 @@ describe("Mask", () => {
|
|
|
32
32
|
const input = [0xff, 0b0000_0001];
|
|
33
33
|
const index = 10;
|
|
34
34
|
const expectedResult = false;
|
|
35
|
-
const mask = new
|
|
35
|
+
const mask = Mask.new(BitVec.fromBlob(new Uint8Array(input), 11));
|
|
36
36
|
const result = mask.isInstruction(index);
|
|
37
37
|
assert.strictEqual(result, expectedResult);
|
|
38
38
|
});
|
|
@@ -42,7 +42,7 @@ describe("Mask", () => {
|
|
|
42
42
|
const input = [0b0000_0001];
|
|
43
43
|
const index = 1;
|
|
44
44
|
const expectedResult = 2;
|
|
45
|
-
const mask = new
|
|
45
|
+
const mask = Mask.new(BitVec.fromBlob(new Uint8Array(input), 3));
|
|
46
46
|
const result = mask.getNoOfBytesToNextInstruction(index);
|
|
47
47
|
assert.strictEqual(result, expectedResult);
|
|
48
48
|
});
|
|
@@ -50,7 +50,7 @@ describe("Mask", () => {
|
|
|
50
50
|
const input = [0b0000_1001];
|
|
51
51
|
const index = 1;
|
|
52
52
|
const expectedResult = 2;
|
|
53
|
-
const mask = new
|
|
53
|
+
const mask = Mask.new(BitVec.fromBlob(new Uint8Array(input), 8));
|
|
54
54
|
const result = mask.getNoOfBytesToNextInstruction(index);
|
|
55
55
|
assert.strictEqual(result, expectedResult);
|
|
56
56
|
});
|
|
@@ -58,7 +58,7 @@ describe("Mask", () => {
|
|
|
58
58
|
const input = [0b0000_0001];
|
|
59
59
|
const index = 0;
|
|
60
60
|
const expectedResult = 0;
|
|
61
|
-
const mask = new
|
|
61
|
+
const mask = Mask.new(BitVec.fromBlob(new Uint8Array(input), 3));
|
|
62
62
|
const result = mask.getNoOfBytesToNextInstruction(index);
|
|
63
63
|
assert.strictEqual(result, expectedResult);
|
|
64
64
|
});
|
|
@@ -66,7 +66,7 @@ describe("Mask", () => {
|
|
|
66
66
|
const input = [0b0001_1001, 0b0001_1000];
|
|
67
67
|
const index = 5;
|
|
68
68
|
const expectedResult = 6;
|
|
69
|
-
const mask = new
|
|
69
|
+
const mask = Mask.new(BitVec.fromBlob(new Uint8Array(input), 16));
|
|
70
70
|
const result = mask.getNoOfBytesToNextInstruction(index);
|
|
71
71
|
assert.strictEqual(result, expectedResult);
|
|
72
72
|
});
|
|
@@ -74,7 +74,7 @@ describe("Mask", () => {
|
|
|
74
74
|
const input = [0b0001_1001];
|
|
75
75
|
const index = 5;
|
|
76
76
|
const expectedResult = 3;
|
|
77
|
-
const mask = new
|
|
77
|
+
const mask = Mask.new(BitVec.fromBlob(new Uint8Array(input), 8));
|
|
78
78
|
const result = mask.getNoOfBytesToNextInstruction(index);
|
|
79
79
|
assert.strictEqual(result, expectedResult);
|
|
80
80
|
});
|
|
@@ -82,7 +82,7 @@ describe("Mask", () => {
|
|
|
82
82
|
const input = [0b0000_0001, 0b0000_0000, 0b0000_0000, 0b1000_0000];
|
|
83
83
|
const index = 1;
|
|
84
84
|
const expectedResult = 25;
|
|
85
|
-
const mask = new
|
|
85
|
+
const mask = Mask.new(BitVec.fromBlob(new Uint8Array(input), input.length * 8));
|
|
86
86
|
const result = mask.getNoOfBytesToNextInstruction(index);
|
|
87
87
|
assert.strictEqual(result, expectedResult);
|
|
88
88
|
});
|
|
@@ -8,7 +8,8 @@ export declare class ProgramDecoder {
|
|
|
8
8
|
private code;
|
|
9
9
|
private mask;
|
|
10
10
|
private jumpTable;
|
|
11
|
-
|
|
11
|
+
static new(rawProgram: Uint8Array): ProgramDecoder;
|
|
12
|
+
private constructor();
|
|
12
13
|
private decodeProgram;
|
|
13
14
|
getMask(): Mask;
|
|
14
15
|
getCode(): Uint8Array<ArrayBufferLike>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program-decoder.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/pvm-interpreter/program-decoder/program-decoder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,oBAAY,mBAAmB;IAC7B,mBAAmB,IAAI;CACxB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,IAAI,CAAO;IACnB,OAAO,CAAC,SAAS,CAAY;
|
|
1
|
+
{"version":3,"file":"program-decoder.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/pvm-interpreter/program-decoder/program-decoder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,oBAAY,mBAAmB;IAC7B,mBAAmB,IAAI;CACxB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,IAAI,CAAO;IACnB,OAAO,CAAC,SAAS,CAAY;IAE7B,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU;IAIjC,OAAO;IAQP,OAAO,CAAC,aAAa;IAwBrB,OAAO;IAIP,OAAO;IAIP,YAAY;IAIZ,sEAAsE;IACtE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAAC,cAAc,EAAE,mBAAmB,CAAC;CAQhF"}
|
|
@@ -12,11 +12,14 @@ export class ProgramDecoder {
|
|
|
12
12
|
code;
|
|
13
13
|
mask;
|
|
14
14
|
jumpTable;
|
|
15
|
+
static new(rawProgram) {
|
|
16
|
+
return new ProgramDecoder(rawProgram);
|
|
17
|
+
}
|
|
15
18
|
constructor(rawProgram) {
|
|
16
19
|
const { code, mask, jumpTable, jumpTableItemLength } = this.decodeProgram(rawProgram);
|
|
17
20
|
this.code = new Uint8Array(code);
|
|
18
|
-
this.mask = new
|
|
19
|
-
this.jumpTable =
|
|
21
|
+
this.mask = Mask.new(mask);
|
|
22
|
+
this.jumpTable = JumpTable.fromRaw(jumpTableItemLength, jumpTable);
|
|
20
23
|
}
|
|
21
24
|
decodeProgram(program) {
|
|
22
25
|
const decoder = Decoder.fromBlob(program);
|
|
@@ -50,7 +53,7 @@ export class ProgramDecoder {
|
|
|
50
53
|
/** https://graypaper.fluffylabs.dev/#/68eaa1f/23f400234701?v=0.6.4 */
|
|
51
54
|
static deblob(program) {
|
|
52
55
|
try {
|
|
53
|
-
return Result.ok(new
|
|
56
|
+
return Result.ok(ProgramDecoder.new(program));
|
|
54
57
|
}
|
|
55
58
|
catch (e) {
|
|
56
59
|
logger.error `Invalid program: ${e}`;
|
|
@@ -11,18 +11,18 @@ const bitMask = [73, 6];
|
|
|
11
11
|
const program = new Uint8Array([jumpTable.length, jumpTableItemLength, 16, ...jumpTable, ...code, ...bitMask]);
|
|
12
12
|
describe("ProgramDecoder", () => {
|
|
13
13
|
it("should corectly decode instructions", () => {
|
|
14
|
-
const programDecoder = new
|
|
14
|
+
const programDecoder = ProgramDecoder.new(program);
|
|
15
15
|
const result = programDecoder.getCode();
|
|
16
16
|
assert.deepStrictEqual(result, new Uint8Array(code));
|
|
17
17
|
});
|
|
18
18
|
it("should corectly decode mask", () => {
|
|
19
|
-
const programDecoder = new
|
|
19
|
+
const programDecoder = ProgramDecoder.new(program);
|
|
20
20
|
const result = programDecoder.getMask();
|
|
21
|
-
assert.deepStrictEqual(result, new
|
|
21
|
+
assert.deepStrictEqual(result, Mask.new(BitVec.fromBlob(new Uint8Array(bitMask), code.length)));
|
|
22
22
|
});
|
|
23
23
|
it("should corectly decode jump table", () => {
|
|
24
|
-
const programDecoder = new
|
|
24
|
+
const programDecoder = ProgramDecoder.new(program);
|
|
25
25
|
const result = programDecoder.getJumpTable();
|
|
26
|
-
assert.deepStrictEqual(result,
|
|
26
|
+
assert.deepStrictEqual(result, JumpTable.fromRaw(jumpTableItemLength, new Uint8Array(jumpTable)));
|
|
27
27
|
});
|
|
28
28
|
});
|
|
@@ -11,7 +11,7 @@ export class Program {
|
|
|
11
11
|
static fromSpi(blob, args, hasMetadata) {
|
|
12
12
|
const { code: spiCode, metadata } = hasMetadata ? extractCodeAndMetadata(blob) : { code: blob };
|
|
13
13
|
const { code, memory: rawMemory, registers } = decodeStandardProgram(spiCode, args);
|
|
14
|
-
const regs =
|
|
14
|
+
const regs = Registers.empty();
|
|
15
15
|
regs.copyFrom(registers);
|
|
16
16
|
const memoryBuilder = new MemoryBuilder();
|
|
17
17
|
for (const { start, end, data } of rawMemory.readable) {
|
|
@@ -31,8 +31,8 @@ export class Program {
|
|
|
31
31
|
}
|
|
32
32
|
static fromGeneric(blob, hasMetadata) {
|
|
33
33
|
const { code, metadata } = hasMetadata ? extractCodeAndMetadata(blob) : { code: blob };
|
|
34
|
-
const regs =
|
|
35
|
-
const memory = new
|
|
34
|
+
const regs = Registers.empty();
|
|
35
|
+
const memory = Memory.new();
|
|
36
36
|
return new Program(code, regs, memory, metadata);
|
|
37
37
|
}
|
|
38
38
|
constructor(code, registers, memory, metadata = new Uint8Array()) {
|
|
@@ -6,10 +6,13 @@ export declare class Registers implements IRegisters {
|
|
|
6
6
|
private readonly bytes;
|
|
7
7
|
private asSigned;
|
|
8
8
|
private asUnsigned;
|
|
9
|
-
|
|
9
|
+
/** Creates an empty registers object backed by a freshly allocated buffer. */
|
|
10
|
+
static empty(): Registers;
|
|
11
|
+
/** Wraps an existing byte buffer, validating its size. */
|
|
12
|
+
static fromBytes(bytes: Uint8Array): Registers;
|
|
13
|
+
private constructor();
|
|
10
14
|
getAllEncoded(): Uint8Array;
|
|
11
15
|
setAllEncoded(bytes: Uint8Array): void;
|
|
12
|
-
static fromBytes(bytes: Uint8Array): Registers;
|
|
13
16
|
getBytesAsLittleEndian(index: number, len: number): Uint8Array<ArrayBufferLike>;
|
|
14
17
|
copyFrom(regs: Registers | BigUint64Array): void;
|
|
15
18
|
reset(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registers.d.ts","sourceRoot":"","sources":["../../../../../packages/core/pvm-interpreter/registers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAmB,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAuB,KAAK,MAAM,EAAuB,MAAM,kBAAkB,CAAC;AAIzF,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAE7D,eAAO,MAAM,kBAAkB,GAAI,OAAO,MAAM,KAAG,aAGlD,CAAC;AAEF,qBAAa,SAAU,YAAW,UAAU;
|
|
1
|
+
{"version":3,"file":"registers.d.ts","sourceRoot":"","sources":["../../../../../packages/core/pvm-interpreter/registers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAmB,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAuB,KAAK,MAAM,EAAuB,MAAM,kBAAkB,CAAC;AAIzF,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAE7D,eAAO,MAAM,kBAAkB,GAAI,OAAO,MAAM,KAAG,aAGlD,CAAC;AAEF,qBAAa,SAAU,YAAW,UAAU;IAetB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAd1C,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,UAAU,CAAiB;IAEnC,8EAA8E;IAC9E,MAAM,CAAC,KAAK;IAIZ,0DAA0D;IAC1D,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU;IAKlC,OAAO;IAKP,aAAa,IAAI,UAAU;IAI3B,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAKtC,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAKjD,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,cAAc;IAKzC,KAAK;IAML,WAAW,CAAC,aAAa,EAAE,MAAM;IAIjC,WAAW,CAAC,aAAa,EAAE,MAAM;IAIjC,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAI3C,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAI3C,MAAM,CAAC,aAAa,EAAE,MAAM;IAI5B,MAAM,CAAC,aAAa,EAAE,MAAM;IAI5B,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAI3C,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAI3C,SAAS;CAGV;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAgB/D"}
|
|
@@ -9,9 +9,17 @@ export class Registers {
|
|
|
9
9
|
bytes;
|
|
10
10
|
asSigned;
|
|
11
11
|
asUnsigned;
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
/** Creates an empty registers object backed by a freshly allocated buffer. */
|
|
13
|
+
static empty() {
|
|
14
|
+
return new Registers(safeAllocUint8Array(NO_OF_REGISTERS << REGISTER_SIZE_SHIFT));
|
|
15
|
+
}
|
|
16
|
+
/** Wraps an existing byte buffer, validating its size. */
|
|
17
|
+
static fromBytes(bytes) {
|
|
14
18
|
check `${bytes.length === NO_OF_REGISTERS << REGISTER_SIZE_SHIFT} Invalid size of registers array.`;
|
|
19
|
+
return new Registers(bytes);
|
|
20
|
+
}
|
|
21
|
+
constructor(bytes) {
|
|
22
|
+
this.bytes = bytes;
|
|
15
23
|
this.asSigned = new BigInt64Array(bytes.buffer, bytes.byteOffset);
|
|
16
24
|
this.asUnsigned = new BigUint64Array(bytes.buffer, bytes.byteOffset);
|
|
17
25
|
}
|
|
@@ -22,10 +30,6 @@ export class Registers {
|
|
|
22
30
|
check `${bytes.length === this.bytes.length} Incorrect size of input registers. Got: ${bytes.length}, need: ${this.bytes.length}`;
|
|
23
31
|
this.bytes.set(bytes, 0);
|
|
24
32
|
}
|
|
25
|
-
static fromBytes(bytes) {
|
|
26
|
-
check `${bytes.length === NO_OF_REGISTERS << REGISTER_SIZE_SHIFT} Invalid size of registers array.`;
|
|
27
|
-
return new Registers(bytes);
|
|
28
|
-
}
|
|
29
33
|
getBytesAsLittleEndian(index, len) {
|
|
30
34
|
const offset = index << REGISTER_SIZE_SHIFT;
|
|
31
35
|
return this.bytes.subarray(offset, offset + len);
|
|
@@ -6,7 +6,7 @@ const U64_BYTES = 8;
|
|
|
6
6
|
describe("Registers", () => {
|
|
7
7
|
describe("loading values", () => {
|
|
8
8
|
it("should return 0xff_ff_ff_ff correctly loaded into register", () => {
|
|
9
|
-
const registers =
|
|
9
|
+
const registers = Registers.empty();
|
|
10
10
|
const expectedSignedNumber = -1;
|
|
11
11
|
const expectedUnsignedNumber = 2 ** 32 - 1;
|
|
12
12
|
registers.setU32(0, 0xff_ff_ff_ff);
|
|
@@ -14,7 +14,7 @@ describe("Registers", () => {
|
|
|
14
14
|
assert.strictEqual(registers.getLowerU32(0), expectedUnsignedNumber);
|
|
15
15
|
});
|
|
16
16
|
it("should return 0x00_00_00_01 correctly loaded into register", () => {
|
|
17
|
-
const registers =
|
|
17
|
+
const registers = Registers.empty();
|
|
18
18
|
const expectedSignedNumber = 1;
|
|
19
19
|
const expectedUnsignedNumber = 1;
|
|
20
20
|
registers.setU32(0, 0x00_00_00_01);
|
|
@@ -22,7 +22,7 @@ describe("Registers", () => {
|
|
|
22
22
|
assert.strictEqual(registers.getLowerU32(0), expectedUnsignedNumber);
|
|
23
23
|
});
|
|
24
24
|
it("should return 0x80_00_00_00 correctly loaded into register", () => {
|
|
25
|
-
const registers =
|
|
25
|
+
const registers = Registers.empty();
|
|
26
26
|
const expectedSignedNumber = -(2 ** 31);
|
|
27
27
|
const expectedUnsignedNumber = 2 ** 31;
|
|
28
28
|
registers.setU32(0, 0x80_00_00_00);
|
|
@@ -32,28 +32,28 @@ describe("Registers", () => {
|
|
|
32
32
|
});
|
|
33
33
|
describe("getBytesAsLittleEndian", () => {
|
|
34
34
|
it("should return empty bytes array", () => {
|
|
35
|
-
const regs =
|
|
35
|
+
const regs = Registers.empty();
|
|
36
36
|
const num = 0;
|
|
37
37
|
const expectedBytes = new Uint8Array([0, 0, 0, 0]);
|
|
38
38
|
regs.setU32(1, num);
|
|
39
39
|
assert.deepStrictEqual(regs.getBytesAsLittleEndian(1, U32_BYTES), expectedBytes);
|
|
40
40
|
});
|
|
41
41
|
it("should return u8 number correctly encoded as little endian", () => {
|
|
42
|
-
const regs =
|
|
42
|
+
const regs = Registers.empty();
|
|
43
43
|
const num = 0xff;
|
|
44
44
|
const expectedBytes = new Uint8Array([0xff, 0, 0, 0]);
|
|
45
45
|
regs.setU32(1, num);
|
|
46
46
|
assert.deepStrictEqual(regs.getBytesAsLittleEndian(1, U32_BYTES), expectedBytes);
|
|
47
47
|
});
|
|
48
48
|
it("should return u16 number correctly encoded as little endian", () => {
|
|
49
|
-
const regs =
|
|
49
|
+
const regs = Registers.empty();
|
|
50
50
|
const num = 0xff_ee;
|
|
51
51
|
const expectedBytes = new Uint8Array([0xee, 0xff, 0, 0]);
|
|
52
52
|
regs.setU32(1, num);
|
|
53
53
|
assert.deepStrictEqual(regs.getBytesAsLittleEndian(1, U32_BYTES), expectedBytes);
|
|
54
54
|
});
|
|
55
55
|
it("should return u32 number correctly encoded as little endian", () => {
|
|
56
|
-
const regs =
|
|
56
|
+
const regs = Registers.empty();
|
|
57
57
|
const num = 0xff_ee_dd_cc;
|
|
58
58
|
const expectedBytes = new Uint8Array([0xcc, 0xdd, 0xee, 0xff]);
|
|
59
59
|
regs.setU32(1, num);
|
|
@@ -62,7 +62,7 @@ describe("Registers", () => {
|
|
|
62
62
|
});
|
|
63
63
|
describe("Implemented IRegister", () => {
|
|
64
64
|
it("should correctly get all registers into bytes encoded", () => {
|
|
65
|
-
const regs =
|
|
65
|
+
const regs = Registers.empty();
|
|
66
66
|
const num = 0xefcdab8967452301n;
|
|
67
67
|
const bytesReg = new Uint8Array([0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef]);
|
|
68
68
|
const fill = new Uint8Array(12 * U64_BYTES).fill(0); // we set 1st register so we fill remaining 12 with 0
|
|
@@ -75,7 +75,7 @@ describe("Registers", () => {
|
|
|
75
75
|
assert.deepStrictEqual(encodedAllRegisters, expected);
|
|
76
76
|
});
|
|
77
77
|
it("should correctly set all registers from bytes encoded", () => {
|
|
78
|
-
const regs =
|
|
78
|
+
const regs = Registers.empty();
|
|
79
79
|
const bytesReg = new Uint8Array([0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef]);
|
|
80
80
|
const fill = new Uint8Array(12 * U64_BYTES).fill(0); // we set 1st register so we fill remaining 12 with 0
|
|
81
81
|
const bytes = new Uint8Array([...bytesReg, ...fill]);
|
|
@@ -85,7 +85,7 @@ describe("Registers", () => {
|
|
|
85
85
|
assert.deepStrictEqual(reg, expected);
|
|
86
86
|
});
|
|
87
87
|
it("should throw when trying to set all registers from bytes encoded with incorrect size", () => {
|
|
88
|
-
const regs =
|
|
88
|
+
const regs = Registers.empty();
|
|
89
89
|
const bytesReg = new Uint8Array([0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef]);
|
|
90
90
|
const fill = new Uint8Array(12 * U64_BYTES).fill(0); // we set 1st register so we fill remaining 12 with 0
|
|
91
91
|
const bytes = new Uint8Array([...bytesReg, ...fill, 0x00]);
|
|
@@ -4,20 +4,23 @@ export declare class MemorySegment extends WithDebug {
|
|
|
4
4
|
readonly end: number;
|
|
5
5
|
readonly data: Uint8Array | null;
|
|
6
6
|
static from({ start, end, data }: Omit<MemorySegment, never>): MemorySegment;
|
|
7
|
-
|
|
7
|
+
static new(start: number, end: number, data: Uint8Array | null): MemorySegment;
|
|
8
|
+
private constructor();
|
|
8
9
|
}
|
|
9
10
|
export declare class SpiMemory extends WithDebug {
|
|
10
11
|
readonly readable: MemorySegment[];
|
|
11
12
|
readonly writeable: MemorySegment[];
|
|
12
13
|
readonly sbrkIndex: number;
|
|
13
14
|
readonly heapEnd: number;
|
|
14
|
-
|
|
15
|
+
static new(readable: MemorySegment[], writeable: MemorySegment[], sbrkIndex: number, heapEnd: number): SpiMemory;
|
|
16
|
+
private constructor();
|
|
15
17
|
}
|
|
16
18
|
export declare class SpiProgram extends WithDebug {
|
|
17
19
|
readonly code: Uint8Array;
|
|
18
20
|
readonly memory: SpiMemory;
|
|
19
21
|
readonly registers: BigUint64Array;
|
|
20
|
-
|
|
22
|
+
static new(code: Uint8Array, memory: SpiMemory, registers: BigUint64Array): SpiProgram;
|
|
23
|
+
private constructor();
|
|
21
24
|
}
|
|
22
25
|
/**
|
|
23
26
|
* program = E_3(|o|) ++ E_3(|w|) ++ E_2(z) ++ E_3(s) ++ o ++ w ++ E_4(|c|) ++ c
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decode-standard-program.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/pvm-interpreter/spi-decoder/decode-standard-program.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAapD,qBAAa,aAAc,SAAQ,SAAS;
|
|
1
|
+
{"version":3,"file":"decode-standard-program.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/pvm-interpreter/spi-decoder/decode-standard-program.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAapD,qBAAa,aAAc,SAAQ,SAAS;aAUxB,KAAK,EAAE,MAAM;aACb,GAAG,EAAE,MAAM;aACX,IAAI,EAAE,UAAU,GAAG,IAAI;IAXzC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;IAI5D,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI;IAI9D,OAAO;CAOR;AACD,qBAAa,SAAU,SAAQ,SAAS;aAMpB,QAAQ,EAAE,aAAa,EAAE;aACzB,SAAS,EAAE,aAAa,EAAE;aAC1B,SAAS,EAAE,MAAM;aACjB,OAAO,EAAE,MAAM;IARjC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAIpG,OAAO;CAQR;AAED,qBAAa,UAAW,SAAQ,SAAS;aAMrB,IAAI,EAAE,UAAU;aAChB,MAAM,EAAE,SAAS;aACjB,SAAS,EAAE,cAAc;IAP3C,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc;IAIzE,OAAO;CAOR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,cAgD1E"}
|
|
@@ -8,6 +8,9 @@ export class MemorySegment extends WithDebug {
|
|
|
8
8
|
end;
|
|
9
9
|
data;
|
|
10
10
|
static from({ start, end, data }) {
|
|
11
|
+
return MemorySegment.new(start, end, data);
|
|
12
|
+
}
|
|
13
|
+
static new(start, end, data) {
|
|
11
14
|
return new MemorySegment(start, end, data);
|
|
12
15
|
}
|
|
13
16
|
constructor(start, end, data) {
|
|
@@ -22,6 +25,9 @@ export class SpiMemory extends WithDebug {
|
|
|
22
25
|
writeable;
|
|
23
26
|
sbrkIndex;
|
|
24
27
|
heapEnd;
|
|
28
|
+
static new(readable, writeable, sbrkIndex, heapEnd) {
|
|
29
|
+
return new SpiMemory(readable, writeable, sbrkIndex, heapEnd);
|
|
30
|
+
}
|
|
25
31
|
constructor(readable, writeable, sbrkIndex, heapEnd) {
|
|
26
32
|
super();
|
|
27
33
|
this.readable = readable;
|
|
@@ -34,6 +40,9 @@ export class SpiProgram extends WithDebug {
|
|
|
34
40
|
code;
|
|
35
41
|
memory;
|
|
36
42
|
registers;
|
|
43
|
+
static new(code, memory, registers) {
|
|
44
|
+
return new SpiProgram(code, memory, registers);
|
|
45
|
+
}
|
|
37
46
|
constructor(code, memory, registers) {
|
|
38
47
|
super();
|
|
39
48
|
this.code = code;
|
|
@@ -92,10 +101,10 @@ export function decodeStandardProgram(program, args) {
|
|
|
92
101
|
heapDataEnd < heapZerosEnd && getMemorySegment(heapDataEnd, heapZerosEnd),
|
|
93
102
|
stackStart < stackEnd && getMemorySegment(stackStart, stackEnd),
|
|
94
103
|
].filter(nonEmpty);
|
|
95
|
-
return new
|
|
104
|
+
return SpiProgram.new(code, SpiMemory.new(readableMemory, writeableMemory, heapZerosEnd, stackStart), getRegisters(args.length));
|
|
96
105
|
}
|
|
97
106
|
function getMemorySegment(start, end, data = null) {
|
|
98
|
-
return new
|
|
107
|
+
return MemorySegment.new(start, end, data);
|
|
99
108
|
}
|
|
100
109
|
function getRegisters(argsLength) {
|
|
101
110
|
const regs = new BigUint64Array(NO_OF_REGISTERS);
|
|
@@ -5,21 +5,24 @@ import { OK, Result } from "#@typeberry/utils";
|
|
|
5
5
|
type Ananas = Awaited<ReturnType<typeof instantiate>>;
|
|
6
6
|
declare class AnanasRegisters implements IRegisters {
|
|
7
7
|
private readonly instance;
|
|
8
|
-
|
|
8
|
+
static new(instance: Ananas): AnanasRegisters;
|
|
9
|
+
private constructor();
|
|
9
10
|
getAllEncoded(): Uint8Array;
|
|
10
11
|
setAllEncoded(bytes: Uint8Array): void;
|
|
11
12
|
getAllU64(): BigUint64Array;
|
|
12
13
|
}
|
|
13
14
|
declare class AnanasMemory implements IMemory {
|
|
14
15
|
private readonly instance;
|
|
15
|
-
|
|
16
|
+
static new(instance: Ananas): AnanasMemory;
|
|
17
|
+
private constructor();
|
|
16
18
|
store(address: U32, bytes: Uint8Array): Result<OK, PageFault>;
|
|
17
19
|
read(address: U32, result: Uint8Array): Result<OK, PageFault>;
|
|
18
20
|
}
|
|
19
21
|
declare class AnanasGasCounter implements IGasCounter {
|
|
20
22
|
private readonly instance;
|
|
21
23
|
initialGas: Gas;
|
|
22
|
-
|
|
24
|
+
static new(instance: Ananas): AnanasGasCounter;
|
|
25
|
+
private constructor();
|
|
23
26
|
get(): Gas;
|
|
24
27
|
set(g: Gas): void;
|
|
25
28
|
sub(g: Gas): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/core/pvm-interpreter-ananas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AACtE,OAAO,EAAY,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EACL,KAAK,GAAG,EAER,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,eAAe,EACpB,KAAK,UAAU,EAEf,KAAK,SAAS,EAEd,MAAM,EAGP,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAS,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAErD,KAAK,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC;AAKtD,cAAM,eAAgB,YAAW,UAAU;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/core/pvm-interpreter-ananas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AACtE,OAAO,EAAY,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EACL,KAAK,GAAG,EAER,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,eAAe,EACpB,KAAK,UAAU,EAEf,KAAK,SAAS,EAEd,MAAM,EAGP,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAS,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAErD,KAAK,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC;AAKtD,cAAM,eAAgB,YAAW,UAAU;IAKrB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAJ7C,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM;IAI3B,OAAO;IAEP,aAAa,IAAI,UAAU;IAI3B,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAOtC,SAAS,IAAI,cAAc;CAI5B;AAED,cAAM,YAAa,YAAW,OAAO;IAKf,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAJ7C,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM;IAI3B,OAAO;IAEP,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC;IAO7D,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC;CAW9D;AAED,cAAM,gBAAiB,YAAW,WAAW;IAOvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAN7C,UAAU,EAAE,GAAG,CAAgB;IAE/B,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM;IAI3B,OAAO;IAEP,GAAG,IAAI,GAAG;IAIV,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI;IAIjB,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO;IAUpB,IAAI,IAAI,GAAG;CASZ;AAED,qBAAa,iBAAkB,YAAW,eAAe;IAKnC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAJ7C,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC;IAE/B,OAAO;WAMM,GAAG;IAWhB,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI;IAO3E,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI;IAS9D,QAAQ,IAAI,OAAO;IAInB,UAAU,IAAI,IAAI;IAMlB,SAAS,IAAI,MAAM;IASnB,KAAK,IAAI,MAAM;IAIf,YAAY,IAAI,GAAG,GAAG,IAAI;CAG3B"}
|
|
@@ -6,6 +6,9 @@ import { check, OK, Result } from "#@typeberry/utils";
|
|
|
6
6
|
const INF_STEPS = 2 ** 32 - 1;
|
|
7
7
|
class AnanasRegisters {
|
|
8
8
|
instance;
|
|
9
|
+
static new(instance) {
|
|
10
|
+
return new AnanasRegisters(instance);
|
|
11
|
+
}
|
|
9
12
|
constructor(instance) {
|
|
10
13
|
this.instance = instance;
|
|
11
14
|
}
|
|
@@ -25,6 +28,9 @@ class AnanasRegisters {
|
|
|
25
28
|
}
|
|
26
29
|
class AnanasMemory {
|
|
27
30
|
instance;
|
|
31
|
+
static new(instance) {
|
|
32
|
+
return new AnanasMemory(instance);
|
|
33
|
+
}
|
|
28
34
|
constructor(instance) {
|
|
29
35
|
this.instance = instance;
|
|
30
36
|
}
|
|
@@ -49,6 +55,9 @@ class AnanasMemory {
|
|
|
49
55
|
class AnanasGasCounter {
|
|
50
56
|
instance;
|
|
51
57
|
initialGas = tryAsGas(0n);
|
|
58
|
+
static new(instance) {
|
|
59
|
+
return new AnanasGasCounter(instance);
|
|
60
|
+
}
|
|
52
61
|
constructor(instance) {
|
|
53
62
|
this.instance = instance;
|
|
54
63
|
}
|
|
@@ -82,9 +91,9 @@ export class AnanasInterpreter {
|
|
|
82
91
|
gas;
|
|
83
92
|
constructor(instance) {
|
|
84
93
|
this.instance = instance;
|
|
85
|
-
this.registers = new
|
|
86
|
-
this.memory = new
|
|
87
|
-
this.gas = new
|
|
94
|
+
this.registers = AnanasRegisters.new(instance);
|
|
95
|
+
this.memory = AnanasMemory.new(instance);
|
|
96
|
+
this.gas = AnanasGasCounter.new(instance);
|
|
88
97
|
}
|
|
89
98
|
static async new() {
|
|
90
99
|
const instance = await instantiate({
|
|
@@ -82,8 +82,11 @@ export declare class TrieNode {
|
|
|
82
82
|
*/
|
|
83
83
|
export declare class BranchNode {
|
|
84
84
|
readonly node: TrieNode;
|
|
85
|
-
|
|
85
|
+
/** Build a branch node from its left and right sub-node hashes. */
|
|
86
86
|
static fromSubNodes(left: TrieNodeHash, right: TrieNodeHash): BranchNode;
|
|
87
|
+
/** View an existing raw trie node as a branch node (validates node type). */
|
|
88
|
+
static viewOf(node: TrieNode): BranchNode;
|
|
89
|
+
private constructor();
|
|
87
90
|
/** Get the hash of the left sub-trie. */
|
|
88
91
|
getLeft(): TrieNodeHash;
|
|
89
92
|
/** Get the hash of the right sub-trie. */
|
|
@@ -109,8 +112,10 @@ export declare class BranchNode {
|
|
|
109
112
|
*/
|
|
110
113
|
export declare class LeafNode {
|
|
111
114
|
readonly node: TrieNode;
|
|
112
|
-
constructor(node: TrieNode);
|
|
113
115
|
static fromValue(key: InputKey, value: BytesBlob, valueHash: () => ValueHash): LeafNode;
|
|
116
|
+
/** View an existing raw trie node as a leaf node (validates node type). */
|
|
117
|
+
static viewOf(node: TrieNode): LeafNode;
|
|
118
|
+
private constructor();
|
|
114
119
|
/** Get the key (truncated to 31 bytes). */
|
|
115
120
|
getKey(): TruncatedStateKey;
|
|
116
121
|
hasEmbeddedValue(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../../../../packages/core/trie/nodes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAS,KAAK,MAAM,EAAuB,MAAM,kBAAkB,CAAC;AAG3E,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;AAC1D,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,cAAc,CAAC,CAAC;AAEnF,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,iBAAiB,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAEtD,oDAAoD;AACpD,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAExD,sDAAsD;AACtD,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,MAAM,MAAM,mBAAmB,GAAG,EAAE,CAAC;AACrC,eAAO,MAAM,kBAAkB,QAA0B,CAAC;AAE1D,qDAAqD;AACrD,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,QAAQ,CAKjD;AAED;;GAEG;AACH,oBAAY,QAAQ;IAClB,gDAAgD;IAChD,MAAM,IAAI;IACV,6BAA6B;IAC7B,IAAI,IAAI;IACR,6CAA6C;IAC7C,SAAS,IAAI;CACd;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,QAAQ;IAEjB,kCAAkC;aAClB,GAAG,EAAE,UAAU;;IAD/B,kCAAkC;IAClB,GAAG,GAAE,UAAiD;IAGxE,mCAAmC;IACnC,WAAW,IAAI,QAAQ;IAYvB,sCAAsC;IACtC,YAAY,IAAI,UAAU;
|
|
1
|
+
{"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../../../../packages/core/trie/nodes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAS,KAAK,MAAM,EAAuB,MAAM,kBAAkB,CAAC;AAG3E,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;AAC1D,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,cAAc,CAAC,CAAC;AAEnF,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,iBAAiB,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAEtD,oDAAoD;AACpD,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAExD,sDAAsD;AACtD,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,MAAM,MAAM,mBAAmB,GAAG,EAAE,CAAC;AACrC,eAAO,MAAM,kBAAkB,QAA0B,CAAC;AAE1D,qDAAqD;AACrD,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,QAAQ,CAKjD;AAED;;GAEG;AACH,oBAAY,QAAQ;IAClB,gDAAgD;IAChD,MAAM,IAAI;IACV,6BAA6B;IAC7B,IAAI,IAAI;IACR,6CAA6C;IAC7C,SAAS,IAAI;CACd;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,QAAQ;IAEjB,kCAAkC;aAClB,GAAG,EAAE,UAAU;;IAD/B,kCAAkC;IAClB,GAAG,GAAE,UAAiD;IAGxE,mCAAmC;IACnC,WAAW,IAAI,QAAQ;IAYvB,sCAAsC;IACtC,YAAY,IAAI,UAAU;IAI1B,oCAAoC;IACpC,UAAU,IAAI,QAAQ;IAItB,QAAQ;CAGT;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,UAAU;IAoBD,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAnB3C,mEAAmE;IACnE,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY;IAW3D,6EAA6E;IAC7E,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU;IAMzC,OAAO;IAEP,yCAAyC;IACzC,OAAO,IAAI,YAAY;IAIvB,0CAA0C;IAC1C,QAAQ,IAAI,YAAY;CAGzB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,QAAQ;IAEnB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAExB,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,GAAG,QAAQ;IAoBvF,2EAA2E;IAC3E,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ;IAKvC,OAAO;IAIP,2CAA2C;IAC3C,MAAM,IAAI,iBAAiB;IAI3B,gBAAgB,IAAI,OAAO;IAI3B;;;;OAIG;IACH,cAAc,IAAI,MAAM;IAMxB;;;;OAIG;IACH,QAAQ,IAAI,SAAS;IAKrB;;;;OAIG;IACH,YAAY,IAAI,SAAS;IAIzB,QAAQ;CAGT"}
|