@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
|
@@ -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"}
|
|
@@ -66,13 +66,11 @@ export class TrieNode {
|
|
|
66
66
|
}
|
|
67
67
|
/** View this node as a branch node */
|
|
68
68
|
asBranchNode() {
|
|
69
|
-
|
|
70
|
-
return new BranchNode(this);
|
|
69
|
+
return BranchNode.viewOf(this);
|
|
71
70
|
}
|
|
72
71
|
/** View this node as a leaf node */
|
|
73
72
|
asLeafNode() {
|
|
74
|
-
|
|
75
|
-
return new LeafNode(this);
|
|
73
|
+
return LeafNode.viewOf(this);
|
|
76
74
|
}
|
|
77
75
|
toString() {
|
|
78
76
|
return BytesBlob.blobFrom(this.raw).toString();
|
|
@@ -92,10 +90,7 @@ export class TrieNode {
|
|
|
92
90
|
*/
|
|
93
91
|
export class BranchNode {
|
|
94
92
|
node;
|
|
95
|
-
|
|
96
|
-
constructor(node) {
|
|
97
|
-
this.node = node;
|
|
98
|
-
}
|
|
93
|
+
/** Build a branch node from its left and right sub-node hashes. */
|
|
99
94
|
static fromSubNodes(left, right) {
|
|
100
95
|
const node = new TrieNode();
|
|
101
96
|
node.raw.set(left.raw, 0);
|
|
@@ -104,6 +99,15 @@ export class BranchNode {
|
|
|
104
99
|
node.raw[0] &= FIRST_BIT_SET_NEG;
|
|
105
100
|
return new BranchNode(node);
|
|
106
101
|
}
|
|
102
|
+
/** View an existing raw trie node as a branch node (validates node type). */
|
|
103
|
+
static viewOf(node) {
|
|
104
|
+
check `${node.getNodeType() === NodeType.Branch} not a branch!`;
|
|
105
|
+
return new BranchNode(node);
|
|
106
|
+
}
|
|
107
|
+
// Underlying raw node.
|
|
108
|
+
constructor(node) {
|
|
109
|
+
this.node = node;
|
|
110
|
+
}
|
|
107
111
|
/** Get the hash of the left sub-trie. */
|
|
108
112
|
getLeft() {
|
|
109
113
|
return Bytes.fromBlob(this.node.raw.subarray(0, HASH_SIZE), HASH_SIZE).asOpaque();
|
|
@@ -134,9 +138,6 @@ export class BranchNode {
|
|
|
134
138
|
export class LeafNode {
|
|
135
139
|
// Underlying raw node.
|
|
136
140
|
node;
|
|
137
|
-
constructor(node) {
|
|
138
|
-
this.node = node;
|
|
139
|
-
}
|
|
140
141
|
static fromValue(key, value, valueHash) {
|
|
141
142
|
const node = new TrieNode();
|
|
142
143
|
// The value will fit in the leaf itself.
|
|
@@ -156,6 +157,14 @@ export class LeafNode {
|
|
|
156
157
|
}
|
|
157
158
|
return new LeafNode(node);
|
|
158
159
|
}
|
|
160
|
+
/** View an existing raw trie node as a leaf node (validates node type). */
|
|
161
|
+
static viewOf(node) {
|
|
162
|
+
check `${node.getNodeType() !== NodeType.Branch} not a leaf!`;
|
|
163
|
+
return new LeafNode(node);
|
|
164
|
+
}
|
|
165
|
+
constructor(node) {
|
|
166
|
+
this.node = node;
|
|
167
|
+
}
|
|
159
168
|
/** Get the key (truncated to 31 bytes). */
|
|
160
169
|
getKey() {
|
|
161
170
|
return Bytes.fromBlob(this.node.raw.subarray(1, TRUNCATED_KEY_BYTES + 1), TRUNCATED_KEY_BYTES).asOpaque();
|
|
@@ -8,7 +8,8 @@ export type TrieHasher = {
|
|
|
8
8
|
export declare class NodesDb {
|
|
9
9
|
readonly hasher: TrieHasher;
|
|
10
10
|
protected readonly nodes: HashDictionary<TrieNodeHash, TrieNode>;
|
|
11
|
-
|
|
11
|
+
static new(hasher: TrieHasher): NodesDb;
|
|
12
|
+
protected constructor(hasher: TrieHasher);
|
|
12
13
|
get(hash: TrieNodeHash): TrieNode | null;
|
|
13
14
|
hashNode(n: TrieNode): TrieNodeHash;
|
|
14
15
|
leaves(): Generator<LeafNode>;
|
|
@@ -25,6 +26,7 @@ export declare class NodesDb {
|
|
|
25
26
|
* A version of `NodesDb` augmented with mutating methods.
|
|
26
27
|
*/
|
|
27
28
|
export declare class WriteableNodesDb extends NodesDb {
|
|
29
|
+
static new(hasher: TrieHasher): WriteableNodesDb;
|
|
28
30
|
remove(hash: TrieNodeHash): void;
|
|
29
31
|
insert(node: TrieNode, hash?: TrieNodeHash): TrieNodeHash;
|
|
30
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodesDb.d.ts","sourceRoot":"","sources":["../../../../../packages/core/trie/nodesDb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAE,KAAK,QAAQ,EAAY,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAEvF,sCAAsC;AACtC,MAAM,MAAM,UAAU,GAAG;IACvB,UAAU,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,YAAY,CAAC;CAC3D,CAAC;AAEF,mDAAmD;AACnD,qBAAa,OAAO;
|
|
1
|
+
{"version":3,"file":"nodesDb.d.ts","sourceRoot":"","sources":["../../../../../packages/core/trie/nodesDb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAE,KAAK,QAAQ,EAAY,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAEvF,sCAAsC;AACtC,MAAM,MAAM,UAAU,GAAG;IACvB,UAAU,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,YAAY,CAAC;CAC3D,CAAC;AAEF,mDAAmD;AACnD,qBAAa,OAAO;aAOoB,MAAM,EAAE,UAAU;IANxD,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAwB;IAExF,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU;IAI7B,SAAS,aAA6B,MAAM,EAAE,UAAU;IAExD,GAAG,CAAC,IAAI,EAAE,YAAY,GAAG,QAAQ,GAAG,IAAI;IAMxC,QAAQ,CAAC,CAAC,EAAE,QAAQ,GAAG,YAAY;IAIlC,MAAM,IAAI,SAAS,CAAC,QAAQ,CAAC;IAU9B;;;;;;OAMG;IACH,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,CAAC,GAAG,CAAC;CAS1F;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,OAAO;IAC3C,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU;IAI7B,MAAM,CAAC,IAAI,EAAE,YAAY;IAMzB,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,YAAY;CAO1D"}
|
|
@@ -5,6 +5,9 @@ import { NodeType } from "./nodes.js";
|
|
|
5
5
|
export class NodesDb {
|
|
6
6
|
hasher;
|
|
7
7
|
nodes = HashDictionary.new();
|
|
8
|
+
static new(hasher) {
|
|
9
|
+
return new NodesDb(hasher);
|
|
10
|
+
}
|
|
8
11
|
constructor(hasher) {
|
|
9
12
|
this.hasher = hasher;
|
|
10
13
|
}
|
|
@@ -46,6 +49,9 @@ export class NodesDb {
|
|
|
46
49
|
* A version of `NodesDb` augmented with mutating methods.
|
|
47
50
|
*/
|
|
48
51
|
export class WriteableNodesDb extends NodesDb {
|
|
52
|
+
static new(hasher) {
|
|
53
|
+
return new WriteableNodesDb(hasher);
|
|
54
|
+
}
|
|
49
55
|
remove(hash) {
|
|
50
56
|
return NodesDb.withHashCompat(hash, (key) => {
|
|
51
57
|
this.nodes.delete(key);
|
|
@@ -11,7 +11,7 @@ export class InMemoryTrie {
|
|
|
11
11
|
root;
|
|
12
12
|
/** Create an empty in-memory trie. */
|
|
13
13
|
static empty(hasher) {
|
|
14
|
-
return new InMemoryTrie(new
|
|
14
|
+
return new InMemoryTrie(WriteableNodesDb.new(hasher));
|
|
15
15
|
}
|
|
16
16
|
/** Given a collection of leaves, compute the state root. */
|
|
17
17
|
static computeStateRoot(hasher, leaves) {
|
|
@@ -99,7 +99,7 @@ export class InMemoryTrie {
|
|
|
99
99
|
static fromLeaves(hasher, leaves) {
|
|
100
100
|
// TODO [ToDr] [opti] Pair up the leaves and build upper levels.
|
|
101
101
|
let root = null;
|
|
102
|
-
const nodes = new
|
|
102
|
+
const nodes = WriteableNodesDb.new(hasher);
|
|
103
103
|
for (const leaf of leaves) {
|
|
104
104
|
root = trieInsert(root, nodes, leaf);
|
|
105
105
|
}
|
|
@@ -20,7 +20,7 @@ export var FuzzVersion;
|
|
|
20
20
|
export function startFuzzTarget(version, socket, api) {
|
|
21
21
|
const socketName = socket ?? "jam_target.sock";
|
|
22
22
|
if (version === FuzzVersion.V1) {
|
|
23
|
-
return startIpcServer(socketName, (sender) =>
|
|
23
|
+
return startIpcServer(socketName, (sender) => v1.FuzzTarget.new(FuzzHandler.new(api), sender, api.chainSpec));
|
|
24
24
|
}
|
|
25
25
|
assertNever(version);
|
|
26
26
|
}
|
|
@@ -43,13 +43,16 @@ function startJamnpExtension(api) {
|
|
|
43
43
|
};
|
|
44
44
|
const getKeyValuePairs = (_hash, startKey) => {
|
|
45
45
|
const value = BytesBlob.blobFromNumbers([255, 255, 0, 0]);
|
|
46
|
-
return [
|
|
46
|
+
return [ce129.KeyValuePair.new(startKey, value)];
|
|
47
47
|
};
|
|
48
48
|
return startJamnpIpcServer(api.nodeName, api.chainSpec, announcements, getHandshake, getBoundaryNodes, getKeyValuePairs);
|
|
49
49
|
}
|
|
50
50
|
const logger = Logger.new(import.meta.filename, "ext-ipc");
|
|
51
51
|
class FuzzHandler {
|
|
52
52
|
api;
|
|
53
|
+
static new(api) {
|
|
54
|
+
return new FuzzHandler(api);
|
|
55
|
+
}
|
|
53
56
|
constructor(api) {
|
|
54
57
|
this.api = api;
|
|
55
58
|
}
|
|
@@ -14,7 +14,8 @@ export declare class JamnpIpcHandler implements IpcHandler {
|
|
|
14
14
|
private readonly streamHandlers;
|
|
15
15
|
/** termination promise + resolvers */
|
|
16
16
|
private readonly onEnd;
|
|
17
|
-
|
|
17
|
+
static new(sender: IpcSender): JamnpIpcHandler;
|
|
18
|
+
private constructor();
|
|
18
19
|
/** Register stream handlers. */
|
|
19
20
|
registerStreamHandlers(...handlers: StreamHandler[]): void;
|
|
20
21
|
/** Re-use an existing stream of given kind if present. */
|
|
@@ -34,7 +35,8 @@ declare class EnvelopeSender implements StreamMessageSender {
|
|
|
34
35
|
private readonly ipcStreamId;
|
|
35
36
|
private readonly sender;
|
|
36
37
|
readonly streamId: StreamId;
|
|
37
|
-
|
|
38
|
+
static new(ipcStreamId: IpcStreamId, sender: IpcSender): EnvelopeSender;
|
|
39
|
+
private constructor();
|
|
38
40
|
open(newStream: NewStream): void;
|
|
39
41
|
bufferAndSend(msg: BytesBlob): boolean;
|
|
40
42
|
close(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../../../packages/extensions/ipc/jamnp/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,QAAQ,EAEb,KAAK,YAAY,EACjB,KAAK,mBAAmB,EAEzB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,KAAK,WAAW,EAAE,SAAS,EAAsC,MAAM,aAAa,CAAC;AAS9F,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,QAAQ,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;AAWhF,qBAAa,eAAgB,YAAW,UAAU;
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../../../packages/extensions/ipc/jamnp/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,QAAQ,EAEb,KAAK,YAAY,EACjB,KAAK,mBAAmB,EAEzB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,KAAK,WAAW,EAAE,SAAS,EAAsC,MAAM,aAAa,CAAC;AAS9F,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,QAAQ,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;AAWhF,qBAAa,eAAgB,YAAW,UAAU;IAc5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAb3C,gCAAgC;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8C;IACtE,yDAAyD;IACzD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwC;IACvE,0DAA0D;IAC1D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;IAC5E,sCAAsC;IACtC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAE9B,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS;IAI5B,OAAO;IAeP,gCAAgC;IAChC,sBAAsB,CAAC,GAAG,QAAQ,EAAE,aAAa,EAAE;IAMnD,0DAA0D;IAC1D,gBAAgB,CAAC,QAAQ,SAAS,aAAa,EAC7C,UAAU,EAAE,YAAY,CAAC,QAAQ,CAAC,EAClC,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,KAAK,IAAI,GACxD,IAAI;IAWP,uCAAuC;IACvC,aAAa,CAAC,QAAQ,SAAS,aAAa,EAC1C,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,EAC5B,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,KAAK,IAAI,GACxD,IAAI;IA2BP,8CAA8C;IACxC,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAmErD,yDAAyD;IACzD,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE;QAAE,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;IAkBpC,qEAAqE;IACrE,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAI5B;AAED,cAAM,cAAe,YAAW,mBAAmB;IAQ/C,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IARzB,SAAgB,QAAQ,EAAE,QAAQ,CAAC;IAEnC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS;IAItD,OAAO;IAOP,IAAI,CAAC,SAAS,EAAE,SAAS;IAUzB,aAAa,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO;IAWtC,KAAK,IAAI,IAAI;CAYd"}
|