Run the noter and payout bots on the fixed crypto stack, from their lockfiles

Both images ran `npm install` with version ranges and ignored any lockfile,
so what production ran depended on the day the image was built. The live
containers, built on 2026-10-03, run @pezkuwi/wasm-crypto 7.5.17, whose
ed25519, ecdsa and mnemonic generation are stubs that throw. Both bots sign
with sr25519 only, which is why they kept working.

Each bot now has a package.json and package-lock.json (@pezkuwi/api 16.5.37,
keyring, util and util-crypto 14.0.26, wasm-crypto 7.5.20) and its image
installs exactly that with `npm ci`. Node 20 is past its end of life; the
images move to node:24-alpine.

CI gains a `bots` job that builds each image and runs inside it:
scripts/bot-smoke.mjs checks the installed versions against the lockfile and
signs and verifies with sr25519, ed25519 and ecdsa, and the bot itself must
load and stop at the mnemonic it is not given. Against the previous lockfile
the smoke check fails on mnemonic generation, ed25519 and ecdsa.
This commit is contained in:
Satoshi Qazi Muhammed authored and SatoshiQaziMuhammed committed 2026-10-08 22:45:54 +04:00
1 parent d5b3962f24
commit 2937263461
8 files changed
+1225 -232

No files matched your search

+40
View File
@@ -30,3 +30,43 @@ jobs:
- name: Build - name: Build
run: ./node_modules/.bin/subql build pezkuwi.yaml run: ./node_modules/.bin/subql build pezkuwi.yaml
# The noter and payout bots ship as their own images (docker-compose.prod.yml)
# and nothing else here builds or runs them. Build each image as production
# does, then run inside it: the crypto stack must be the locked one and sign
# with every key type, and the bot must load its whole module graph and stop
# only where it reads the mnemonic that CI does not have.
bots:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- bot: noter
mode: esm
expect: 'No noter mnemonic found'
- bot: payout-bot
mode: cjs
expect: "ENOENT: no such file or directory, open '/run/secrets/payout_mnemonic'"
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Build the image
run: docker build -t bot ${{ matrix.bot }}
- name: Crypto stack
run: docker run --rm -v "$PWD/scripts/bot-smoke.mjs:/app/bot-smoke.mjs:ro" bot node bot-smoke.mjs ${{ matrix.mode }}
- name: The bot loads and stops at its missing mnemonic
env:
EXPECT: ${{ matrix.expect }}
run: |
set +e
out=$(timeout 60 docker run --rm bot 2>&1)
code=$?
set -e
echo "$out"
[ "$code" -ne 0 ] && [ "$code" -ne 124 ] || { echo "expected the bot to exit with an error, got $code"; exit 1; }
grep -qF "$EXPECT" <<<"$out" || { echo "expected: $EXPECT"; exit 1; }
+6 -7
View File
@@ -1,13 +1,12 @@
FROM node:20-alpine FROM node:24-alpine
WORKDIR /app WORKDIR /app
COPY package.json ./ # Install exactly what package-lock.json records, so the image runs the
RUN npm install \ # versions that were reviewed and tested rather than whatever the ranges
@pezkuwi/api@^16.5.36 \ # resolve to on the day it is built.
@pezkuwi/keyring@^14.0.25 \ COPY package.json package-lock.json ./
@pezkuwi/util@^14.0.25 \ RUN npm ci --omit=dev --no-audit --no-fund
@pezkuwi/util-crypto@^14.0.25
COPY bot.js ./ COPY bot.js ./
+214 -214
View File
@@ -8,10 +8,10 @@
"name": "pezkuwi-noter-bot", "name": "pezkuwi-noter-bot",
"version": "1.0.0", "version": "1.0.0",
"dependencies": { "dependencies": {
"@pezkuwi/api": "^16.5.36", "@pezkuwi/api": "^16.5.37",
"@pezkuwi/keyring": "^14.0.25", "@pezkuwi/keyring": "^14.0.26",
"@pezkuwi/util": "^14.0.25", "@pezkuwi/util": "^14.0.26",
"@pezkuwi/util-crypto": "^14.0.25" "@pezkuwi/util-crypto": "^14.0.26"
} }
}, },
"node_modules/@bizinikiwi/connect": { "node_modules/@bizinikiwi/connect": {
@@ -86,26 +86,26 @@
} }
}, },
"node_modules/@pezkuwi/api": { "node_modules/@pezkuwi/api": {
"version": "16.5.36", "version": "16.5.37",
"resolved": "https://registry.npmjs.org/@pezkuwi/api/-/api-16.5.36.tgz", "resolved": "https://registry.npmjs.org/@pezkuwi/api/-/api-16.5.37.tgz",
"integrity": "sha512-zlewHN64IvVsvNJpbB7U6LR8XG0O9yuO0IqS+znvLs9F2Dn9Os66X2mFFnpZNMyKurB3VWhpNWUIYvsLy8qoVg==", "integrity": "sha512-juDlShgJ3VOFHblg5pMZonoNoqpNrszmCYhfmA+8al53pMLp/GYcgD6xv9+Yf6rNifY7KzLTPOjjzxQDheNUsQ==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@pezkuwi/api-augment": "16.5.36", "@pezkuwi/api-augment": "16.5.37",
"@pezkuwi/api-base": "16.5.36", "@pezkuwi/api-base": "16.5.37",
"@pezkuwi/api-derive": "16.5.36", "@pezkuwi/api-derive": "16.5.37",
"@pezkuwi/keyring": "14.0.25", "@pezkuwi/keyring": "14.0.26",
"@pezkuwi/rpc-augment": "16.5.36", "@pezkuwi/rpc-augment": "16.5.37",
"@pezkuwi/rpc-core": "16.5.36", "@pezkuwi/rpc-core": "16.5.37",
"@pezkuwi/rpc-provider": "16.5.36", "@pezkuwi/rpc-provider": "16.5.37",
"@pezkuwi/types": "16.5.36", "@pezkuwi/types": "16.5.37",
"@pezkuwi/types-augment": "16.5.36", "@pezkuwi/types-augment": "16.5.37",
"@pezkuwi/types-codec": "16.5.36", "@pezkuwi/types-codec": "16.5.37",
"@pezkuwi/types-create": "16.5.36", "@pezkuwi/types-create": "16.5.37",
"@pezkuwi/types-known": "16.5.36", "@pezkuwi/types-known": "16.5.37",
"@pezkuwi/types-support": "16.5.36", "@pezkuwi/types-support": "16.5.37",
"@pezkuwi/util": "14.0.25", "@pezkuwi/util": "14.0.26",
"@pezkuwi/util-crypto": "14.0.25", "@pezkuwi/util-crypto": "14.0.26",
"eventemitter3": "^5.0.1", "eventemitter3": "^5.0.1",
"rxjs": "^7.8.1", "rxjs": "^7.8.1",
"tslib": "^2.8.1" "tslib": "^2.8.1"
@@ -115,17 +115,17 @@
} }
}, },
"node_modules/@pezkuwi/api-augment": { "node_modules/@pezkuwi/api-augment": {
"version": "16.5.36", "version": "16.5.37",
"resolved": "https://registry.npmjs.org/@pezkuwi/api-augment/-/api-augment-16.5.36.tgz", "resolved": "https://registry.npmjs.org/@pezkuwi/api-augment/-/api-augment-16.5.37.tgz",
"integrity": "sha512-f42DSdMTKAVQywYaUcnDoxGS8DFvb4hfAxSghOJYONlH6LyBkfkWbRITh9mKrSoxDcovM44GhuiC6SxNXTx9cQ==", "integrity": "sha512-EfQZuebTbO0sFNWUN7+DTBeH38X70rZPj0oV/VnMFO/LT3bFCqOdbFCyV14j7FvEheZ6yajPQ3+uJknuVM7Ytg==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@pezkuwi/api-base": "16.5.36", "@pezkuwi/api-base": "16.5.37",
"@pezkuwi/rpc-augment": "16.5.36", "@pezkuwi/rpc-augment": "16.5.37",
"@pezkuwi/types": "16.5.36", "@pezkuwi/types": "16.5.37",
"@pezkuwi/types-augment": "16.5.36", "@pezkuwi/types-augment": "16.5.37",
"@pezkuwi/types-codec": "16.5.36", "@pezkuwi/types-codec": "16.5.37",
"@pezkuwi/util": "14.0.25", "@pezkuwi/util": "14.0.26",
"tslib": "^2.8.1" "tslib": "^2.8.1"
}, },
"engines": { "engines": {
@@ -133,14 +133,14 @@
} }
}, },
"node_modules/@pezkuwi/api-base": { "node_modules/@pezkuwi/api-base": {
"version": "16.5.36", "version": "16.5.37",
"resolved": "https://registry.npmjs.org/@pezkuwi/api-base/-/api-base-16.5.36.tgz", "resolved": "https://registry.npmjs.org/@pezkuwi/api-base/-/api-base-16.5.37.tgz",
"integrity": "sha512-czmyuDZkA4Qi7hkFLR8KmnHMyQjM0GJXyS92rdylFPip5FZb9cdys5j1B79gKTVirhTynVACB5FCYnwpWtf5Lg==", "integrity": "sha512-DTh1/xaUmjyudQxMCWFOxmCrC+Oar5duZa9z4k2BSKdqS48PKWVUlpo36GquH/Iu3fzdoYG59ZF07KAP94Eq3w==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@pezkuwi/rpc-core": "16.5.36", "@pezkuwi/rpc-core": "16.5.37",
"@pezkuwi/types": "16.5.36", "@pezkuwi/types": "16.5.37",
"@pezkuwi/util": "14.0.25", "@pezkuwi/util": "14.0.26",
"rxjs": "^7.8.1", "rxjs": "^7.8.1",
"tslib": "^2.8.1" "tslib": "^2.8.1"
}, },
@@ -149,21 +149,21 @@
} }
}, },
"node_modules/@pezkuwi/api-derive": { "node_modules/@pezkuwi/api-derive": {
"version": "16.5.36", "version": "16.5.37",
"resolved": "https://registry.npmjs.org/@pezkuwi/api-derive/-/api-derive-16.5.36.tgz", "resolved": "https://registry.npmjs.org/@pezkuwi/api-derive/-/api-derive-16.5.37.tgz",
"integrity": "sha512-tiyiQZFCOStzzclfQdgKpVpg8iZX6sqO01IIEvqRiJfTgaglUfGunmsicvVgFz0rwgVkodDTpkgwSGq1lZl/FQ==", "integrity": "sha512-cDyRUUZ6hNcL6H2lLcig/NihpgynyEkpTjXZ19MqPAYaP3Uu60rlkZBQ2QLIJOKBF8DUN/pDEh5puh/+w9VhAA==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@pezkuwi/api": "16.5.36", "@pezkuwi/api": "16.5.37",
"@pezkuwi/api-augment": "16.5.36", "@pezkuwi/api-augment": "16.5.37",
"@pezkuwi/api-base": "16.5.36", "@pezkuwi/api-base": "16.5.37",
"@pezkuwi/rpc-core": "16.5.36", "@pezkuwi/rpc-core": "16.5.37",
"@pezkuwi/rpc-provider": "16.5.36", "@pezkuwi/rpc-provider": "16.5.37",
"@pezkuwi/types": "16.5.36", "@pezkuwi/types": "16.5.37",
"@pezkuwi/types-codec": "16.5.36", "@pezkuwi/types-codec": "16.5.37",
"@pezkuwi/types-support": "16.5.36", "@pezkuwi/types-support": "16.5.37",
"@pezkuwi/util": "14.0.25", "@pezkuwi/util": "14.0.26",
"@pezkuwi/util-crypto": "14.0.25", "@pezkuwi/util-crypto": "14.0.26",
"rxjs": "^7.8.1", "rxjs": "^7.8.1",
"tslib": "^2.8.1" "tslib": "^2.8.1"
}, },
@@ -172,30 +172,30 @@
} }
}, },
"node_modules/@pezkuwi/keyring": { "node_modules/@pezkuwi/keyring": {
"version": "14.0.25", "version": "14.0.26",
"resolved": "https://registry.npmjs.org/@pezkuwi/keyring/-/keyring-14.0.25.tgz", "resolved": "https://registry.npmjs.org/@pezkuwi/keyring/-/keyring-14.0.26.tgz",
"integrity": "sha512-EJBA4u2Sw4bpPjjTvmVi8ggRAEblq/L3D/SiaEn40ftv0qJGziluxEaYG4/iTVXmfbCuzu9xNKbIwmWldBWQBQ==", "integrity": "sha512-stcWcKFKgS1DbIq1CTRzPdpOXuLudFiRPN8MZ0B8COJGKkqElHleWEWC55nhjG3bLZaTUHveuAsMURhu3wHAbg==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@pezkuwi/util": "14.0.25", "@pezkuwi/util": "14.0.26",
"@pezkuwi/util-crypto": "14.0.25", "@pezkuwi/util-crypto": "14.0.26",
"tslib": "^2.8.0" "tslib": "^2.8.0"
}, },
"engines": { "engines": {
"node": ">=18" "node": ">=18"
}, },
"peerDependencies": { "peerDependencies": {
"@pezkuwi/util": "14.0.25", "@pezkuwi/util": "14.0.26",
"@pezkuwi/util-crypto": "14.0.25" "@pezkuwi/util-crypto": "14.0.26"
} }
}, },
"node_modules/@pezkuwi/networks": { "node_modules/@pezkuwi/networks": {
"version": "14.0.25", "version": "14.0.26",
"resolved": "https://registry.npmjs.org/@pezkuwi/networks/-/networks-14.0.25.tgz", "resolved": "https://registry.npmjs.org/@pezkuwi/networks/-/networks-14.0.26.tgz",
"integrity": "sha512-wTkWXwWWv/YU6KYx/Z1o98x0/6GV7H1demRT0NmOhXrlnWvSbReXsvm0YTnZlqArLuAPAhJlFi2jzfbARKZh+g==", "integrity": "sha512-omDbJzFjDSm1FS32zebyNP1QGBk9/ZayM0YM0mUlOOwiLIP7iDVq3KQe2JdI7hm1dz01Lm68/hjerSoqiWEclA==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@pezkuwi/util": "14.0.25", "@pezkuwi/util": "14.0.26",
"@substrate/ss58-registry": "^1.51.0", "@substrate/ss58-registry": "^1.51.0",
"tslib": "^2.8.0" "tslib": "^2.8.0"
}, },
@@ -204,15 +204,15 @@
} }
}, },
"node_modules/@pezkuwi/rpc-augment": { "node_modules/@pezkuwi/rpc-augment": {
"version": "16.5.36", "version": "16.5.37",
"resolved": "https://registry.npmjs.org/@pezkuwi/rpc-augment/-/rpc-augment-16.5.36.tgz", "resolved": "https://registry.npmjs.org/@pezkuwi/rpc-augment/-/rpc-augment-16.5.37.tgz",
"integrity": "sha512-u7nqzDJpqjVZbFwWYIQAeKegI7XZ7XmD1d2LtoOoA/FKBzH6HDgGK3kEIodRBM6w8LuqyB9h8oXK/DrxR1OElg==", "integrity": "sha512-WvHG9Zu/d3eaDgsf/SAHEAoPdkeDZ6BXAhLsWJEVaFL8eT5bLpuf3qOoZ7b7rRegaW5KfGlhXluiJSDuB6Q3Lg==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@pezkuwi/rpc-core": "16.5.36", "@pezkuwi/rpc-core": "16.5.37",
"@pezkuwi/types": "16.5.36", "@pezkuwi/types": "16.5.37",
"@pezkuwi/types-codec": "16.5.36", "@pezkuwi/types-codec": "16.5.37",
"@pezkuwi/util": "14.0.25", "@pezkuwi/util": "14.0.26",
"tslib": "^2.8.1" "tslib": "^2.8.1"
}, },
"engines": { "engines": {
@@ -220,16 +220,16 @@
} }
}, },
"node_modules/@pezkuwi/rpc-core": { "node_modules/@pezkuwi/rpc-core": {
"version": "16.5.36", "version": "16.5.37",
"resolved": "https://registry.npmjs.org/@pezkuwi/rpc-core/-/rpc-core-16.5.36.tgz", "resolved": "https://registry.npmjs.org/@pezkuwi/rpc-core/-/rpc-core-16.5.37.tgz",
"integrity": "sha512-duGBL4Lt17+ireW8Ku3Mtb700f21kw8qGkAvvhwp9G+949ZcwbpHWlToZ7umQe1qTQS8iTiMvA/xpH3HXg2UQw==", "integrity": "sha512-waP8ieN89eKAXsUx1Y1rHn2k9snRgUJhiEfox2by9X0Unbap5GAbDG/pu1buBBxpYz4Jni4zVgdV1aoAya8vJQ==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@pezkuwi/keyring": "14.0.25", "@pezkuwi/keyring": "14.0.26",
"@pezkuwi/rpc-augment": "16.5.36", "@pezkuwi/rpc-augment": "16.5.37",
"@pezkuwi/rpc-provider": "16.5.36", "@pezkuwi/rpc-provider": "16.5.37",
"@pezkuwi/types": "16.5.36", "@pezkuwi/types": "16.5.37",
"@pezkuwi/util": "14.0.25", "@pezkuwi/util": "14.0.26",
"rxjs": "^7.8.1", "rxjs": "^7.8.1",
"tslib": "^2.8.1" "tslib": "^2.8.1"
}, },
@@ -238,19 +238,19 @@
} }
}, },
"node_modules/@pezkuwi/rpc-provider": { "node_modules/@pezkuwi/rpc-provider": {
"version": "16.5.36", "version": "16.5.37",
"resolved": "https://registry.npmjs.org/@pezkuwi/rpc-provider/-/rpc-provider-16.5.36.tgz", "resolved": "https://registry.npmjs.org/@pezkuwi/rpc-provider/-/rpc-provider-16.5.37.tgz",
"integrity": "sha512-kNaLr+yx99MsmxBFf+VPZV+0GglHNrhNie9O6QWbQj8R6CGVN/dB39ohSHoAh0wJXPzumhLiQ8tFOlj3Czh6FQ==", "integrity": "sha512-B727rg9hOBON+CwSffJCFpfKjkMbaDvEGs+HyDnUvZjU8yFp4b/WW7yax84ZL5Dv9dOm1WPDoPKDA1w1+JVqdw==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@pezkuwi/keyring": "14.0.25", "@pezkuwi/keyring": "14.0.26",
"@pezkuwi/types": "16.5.36", "@pezkuwi/types": "16.5.37",
"@pezkuwi/types-support": "16.5.36", "@pezkuwi/types-support": "16.5.37",
"@pezkuwi/util": "14.0.25", "@pezkuwi/util": "14.0.26",
"@pezkuwi/util-crypto": "14.0.25", "@pezkuwi/util-crypto": "14.0.26",
"@pezkuwi/x-fetch": "14.0.25", "@pezkuwi/x-fetch": "14.0.26",
"@pezkuwi/x-global": "14.0.25", "@pezkuwi/x-global": "14.0.26",
"@pezkuwi/x-ws": "14.0.25", "@pezkuwi/x-ws": "14.0.26",
"eventemitter3": "^5.0.1", "eventemitter3": "^5.0.1",
"mock-socket": "^9.3.1", "mock-socket": "^9.3.1",
"nock": "^13.5.5", "nock": "^13.5.5",
@@ -274,18 +274,18 @@
} }
}, },
"node_modules/@pezkuwi/types": { "node_modules/@pezkuwi/types": {
"version": "16.5.36", "version": "16.5.37",
"resolved": "https://registry.npmjs.org/@pezkuwi/types/-/types-16.5.36.tgz", "resolved": "https://registry.npmjs.org/@pezkuwi/types/-/types-16.5.37.tgz",
"integrity": "sha512-8g5PxNHzpT0aH3mUWsICnpRdgXAMTzN3PK68xlPLujN8op41d5IoLY9HzeVYFVAndCiaKxXSusOsVeDusVmY4g==", "integrity": "sha512-sMNw7xJMLkv4qgGJTQkFe1oyyWVRcDxDswJFUc3P90KkKDdPlBRtJDEqG3L1MnFv5ES4c3WGTDhdUXXiKFppiA==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@pezkuwi/keyring": "14.0.25", "@pezkuwi/keyring": "14.0.26",
"@pezkuwi/types-augment": "16.5.36", "@pezkuwi/types-augment": "16.5.37",
"@pezkuwi/types-codec": "16.5.36", "@pezkuwi/types-codec": "16.5.37",
"@pezkuwi/types-create": "16.5.36", "@pezkuwi/types-create": "16.5.37",
"@pezkuwi/types-support": "16.5.36", "@pezkuwi/types-support": "16.5.37",
"@pezkuwi/util": "14.0.25", "@pezkuwi/util": "14.0.26",
"@pezkuwi/util-crypto": "14.0.25", "@pezkuwi/util-crypto": "14.0.26",
"rxjs": "^7.8.1", "rxjs": "^7.8.1",
"tslib": "^2.8.1" "tslib": "^2.8.1"
}, },
@@ -294,14 +294,14 @@
} }
}, },
"node_modules/@pezkuwi/types-augment": { "node_modules/@pezkuwi/types-augment": {
"version": "16.5.36", "version": "16.5.37",
"resolved": "https://registry.npmjs.org/@pezkuwi/types-augment/-/types-augment-16.5.36.tgz", "resolved": "https://registry.npmjs.org/@pezkuwi/types-augment/-/types-augment-16.5.37.tgz",
"integrity": "sha512-Uxk+/7SBifqbFkGhWavb47uHP7PFHHNKiC+1rD7R8ilYTR/RO6o4VbLoq51S4ng7h+P6rqf/5ABTWbE1MOTPXg==", "integrity": "sha512-JcXtBFg9p99speS5RI1Sh0SQZWlD+SO1nMkxQ3HGwzKQG842B0/UrMykkpP7hxZ6rGDDIepnX8ytqqslZXUZ2A==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@pezkuwi/types": "16.5.36", "@pezkuwi/types": "16.5.37",
"@pezkuwi/types-codec": "16.5.36", "@pezkuwi/types-codec": "16.5.37",
"@pezkuwi/util": "14.0.25", "@pezkuwi/util": "14.0.26",
"tslib": "^2.8.1" "tslib": "^2.8.1"
}, },
"engines": { "engines": {
@@ -309,17 +309,17 @@
} }
}, },
"node_modules/@pezkuwi/types-codec": { "node_modules/@pezkuwi/types-codec": {
"version": "16.5.36", "version": "16.5.37",
"resolved": "https://registry.npmjs.org/@pezkuwi/types-codec/-/types-codec-16.5.36.tgz", "resolved": "https://registry.npmjs.org/@pezkuwi/types-codec/-/types-codec-16.5.37.tgz",
"integrity": "sha512-ETAG5yubw1kA0esORBwtLYwEQTfPZvMcQYniyRjqLebXU/Vht+NASmMNUNZ9MvtyqQs4BdPmLkAU5ZJiRyhO4w==", "integrity": "sha512-Bu3Kq0URBDd3CskZWsKPP/jb4Q6PnFJ/R7p8RPF1P1TZQ5fhSEKbDZ8+qpkrfPHQGFDrBMnAGVTtot08cVbHiw==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@pezkuwi/types": "16.5.36", "@pezkuwi/types": "16.5.37",
"@pezkuwi/types-augment": "16.5.36", "@pezkuwi/types-augment": "16.5.37",
"@pezkuwi/types-support": "16.5.36", "@pezkuwi/types-support": "16.5.37",
"@pezkuwi/util": "14.0.25", "@pezkuwi/util": "14.0.26",
"@pezkuwi/util-crypto": "14.0.25", "@pezkuwi/util-crypto": "14.0.26",
"@pezkuwi/x-bigint": "14.0.25", "@pezkuwi/x-bigint": "14.0.26",
"tslib": "^2.8.1" "tslib": "^2.8.1"
}, },
"engines": { "engines": {
@@ -327,14 +327,14 @@
} }
}, },
"node_modules/@pezkuwi/types-create": { "node_modules/@pezkuwi/types-create": {
"version": "16.5.36", "version": "16.5.37",
"resolved": "https://registry.npmjs.org/@pezkuwi/types-create/-/types-create-16.5.36.tgz", "resolved": "https://registry.npmjs.org/@pezkuwi/types-create/-/types-create-16.5.37.tgz",
"integrity": "sha512-xZ2knB+wGnFFOeIy+0b56P6OUCZtzNcP0fk24umN/SCEs2a212QMhQ7Fyd9lhJZSmnZqiOljQaw5VRGqblMtlQ==", "integrity": "sha512-iViQ2wnIHWrv4OkL33eIxc9Z9eE8THZWkyEIn3a/jXnLij0H1unlzOXwcdsAe5lKhADamZDsMIBlQ5bYzsGSSg==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@pezkuwi/types": "16.5.36", "@pezkuwi/types": "16.5.37",
"@pezkuwi/types-codec": "16.5.36", "@pezkuwi/types-codec": "16.5.37",
"@pezkuwi/util": "14.0.25", "@pezkuwi/util": "14.0.26",
"tslib": "^2.8.1" "tslib": "^2.8.1"
}, },
"engines": { "engines": {
@@ -342,16 +342,16 @@
} }
}, },
"node_modules/@pezkuwi/types-known": { "node_modules/@pezkuwi/types-known": {
"version": "16.5.36", "version": "16.5.37",
"resolved": "https://registry.npmjs.org/@pezkuwi/types-known/-/types-known-16.5.36.tgz", "resolved": "https://registry.npmjs.org/@pezkuwi/types-known/-/types-known-16.5.37.tgz",
"integrity": "sha512-niILSGCNt2s/GsbnFwBcoxi35y6CI7Y/HMKm3ZyKk9hwiY70wnfJK2DIu9ObBSXalRxbD0Sni9T3XZmYxIxhkQ==", "integrity": "sha512-+c1Fk3CQ0eIkv6brwfv8A64E9lSLg5XPFW4x7h5fR34PzpdfTvP7R2xcBIVlIkHd3JQUTsGP/zNXWHCi1EpHJg==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@pezkuwi/networks": "14.0.25", "@pezkuwi/networks": "14.0.26",
"@pezkuwi/types": "16.5.36", "@pezkuwi/types": "16.5.37",
"@pezkuwi/types-codec": "16.5.36", "@pezkuwi/types-codec": "16.5.37",
"@pezkuwi/types-create": "16.5.36", "@pezkuwi/types-create": "16.5.37",
"@pezkuwi/util": "14.0.25", "@pezkuwi/util": "14.0.26",
"tslib": "^2.8.1" "tslib": "^2.8.1"
}, },
"engines": { "engines": {
@@ -359,12 +359,12 @@
} }
}, },
"node_modules/@pezkuwi/types-support": { "node_modules/@pezkuwi/types-support": {
"version": "16.5.36", "version": "16.5.37",
"resolved": "https://registry.npmjs.org/@pezkuwi/types-support/-/types-support-16.5.36.tgz", "resolved": "https://registry.npmjs.org/@pezkuwi/types-support/-/types-support-16.5.37.tgz",
"integrity": "sha512-+EWMQjs50e5eHPX5jZ4HnTqCQxhRJf/FioGfJtBqpchW0dypg08blz6qw48Y2oQ3lUsA2s4wZbObIBIfO5xtYA==", "integrity": "sha512-rfi7qhSysUweQEyAfe/qk26M2HZotf/xylb6gcfhWJkwiSURhW4Jof/1Rye5SSssk7nCfQcgfYUFDE+oWOHuog==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@pezkuwi/util": "14.0.25", "@pezkuwi/util": "14.0.26",
"tslib": "^2.8.1" "tslib": "^2.8.1"
}, },
"engines": { "engines": {
@@ -372,15 +372,15 @@
} }
}, },
"node_modules/@pezkuwi/util": { "node_modules/@pezkuwi/util": {
"version": "14.0.25", "version": "14.0.26",
"resolved": "https://registry.npmjs.org/@pezkuwi/util/-/util-14.0.25.tgz", "resolved": "https://registry.npmjs.org/@pezkuwi/util/-/util-14.0.26.tgz",
"integrity": "sha512-OCqCieVmdI74c8GfSLkuC1xpcMJTIez5YxWcVssxR0NpA462fXc1uHaIZBit/aHgYXn18G3TMeGBxSx1DVLWpg==", "integrity": "sha512-xV7uct4jtIqf+9LixcCoTgYz8JEZ2eK6aosMD92Zu5DRPSW87QcCYBQuq8Phec0LdjGvC/l7DgiloQODhTtHWA==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@pezkuwi/x-bigint": "14.0.25", "@pezkuwi/x-bigint": "14.0.26",
"@pezkuwi/x-global": "14.0.25", "@pezkuwi/x-global": "14.0.26",
"@pezkuwi/x-textdecoder": "14.0.25", "@pezkuwi/x-textdecoder": "14.0.26",
"@pezkuwi/x-textencoder": "14.0.25", "@pezkuwi/x-textencoder": "14.0.26",
"@types/bn.js": "^5.1.6", "@types/bn.js": "^5.1.6",
"bn.js": "^5.2.1", "bn.js": "^5.2.1",
"tslib": "^2.8.0" "tslib": "^2.8.0"
@@ -390,20 +390,20 @@
} }
}, },
"node_modules/@pezkuwi/util-crypto": { "node_modules/@pezkuwi/util-crypto": {
"version": "14.0.25", "version": "14.0.26",
"resolved": "https://registry.npmjs.org/@pezkuwi/util-crypto/-/util-crypto-14.0.25.tgz", "resolved": "https://registry.npmjs.org/@pezkuwi/util-crypto/-/util-crypto-14.0.26.tgz",
"integrity": "sha512-SZLOx8J8+l9oEHOPOFbzcdKeyr7zvGOgD1WQ74ylYTZN+VRzMvSYOAio8HZObwSc5dc0mmzoc5HlrpFFDreNBQ==", "integrity": "sha512-YR+3N2FwKx3q9NF11q75O0lJ+SKpM9CNKPE7rLEoPvFt7wpHpB/GXOAekYhNtrotkcsI8v/WoyOi4RI9NiwYVQ==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@noble/curves": "^1.3.0", "@noble/curves": "^1.9.7",
"@noble/hashes": "^1.3.3", "@noble/hashes": "^1.8.0",
"@pezkuwi/networks": "14.0.25", "@pezkuwi/networks": "14.0.26",
"@pezkuwi/scure-sr25519": "^0.2.1", "@pezkuwi/scure-sr25519": "^0.2.1",
"@pezkuwi/util": "14.0.25", "@pezkuwi/util": "14.0.26",
"@pezkuwi/wasm-crypto": "7.5.17", "@pezkuwi/wasm-crypto": "^7.5.20",
"@pezkuwi/wasm-util": "7.5.17", "@pezkuwi/wasm-util": "^7.5.20",
"@pezkuwi/x-bigint": "14.0.25", "@pezkuwi/x-bigint": "14.0.26",
"@pezkuwi/x-randomvalues": "14.0.25", "@pezkuwi/x-randomvalues": "14.0.26",
"@scure/base": "^1.1.7", "@scure/base": "^1.1.7",
"tslib": "^2.8.0" "tslib": "^2.8.0"
}, },
@@ -411,16 +411,16 @@
"node": ">=18" "node": ">=18"
}, },
"peerDependencies": { "peerDependencies": {
"@pezkuwi/util": "14.0.25" "@pezkuwi/util": "14.0.26"
} }
}, },
"node_modules/@pezkuwi/wasm-bridge": { "node_modules/@pezkuwi/wasm-bridge": {
"version": "7.5.17", "version": "7.5.20",
"resolved": "https://registry.npmjs.org/@pezkuwi/wasm-bridge/-/wasm-bridge-7.5.17.tgz", "resolved": "https://registry.npmjs.org/@pezkuwi/wasm-bridge/-/wasm-bridge-7.5.20.tgz",
"integrity": "sha512-7mk6+9XzPReP60MLl+oxeq3SxadK13J4LfmzJWa2Bl08SyTwrpOPgD1ohowd1IvBVbMgnqPGr6BDnso8lEI1fw==", "integrity": "sha512-JKgDtLvQzT6uBfD8PcSD7Nud4OB8u6BJjABADDLxFrxHPsKbQNnkTd6f/27GfbkOJL4p17fWwoACICp/oEDxCw==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@pezkuwi/wasm-util": "7.5.17", "@pezkuwi/wasm-util": "7.5.20",
"tslib": "^2.7.0" "tslib": "^2.7.0"
}, },
"engines": { "engines": {
@@ -432,17 +432,17 @@
} }
}, },
"node_modules/@pezkuwi/wasm-crypto": { "node_modules/@pezkuwi/wasm-crypto": {
"version": "7.5.17", "version": "7.5.20",
"resolved": "https://registry.npmjs.org/@pezkuwi/wasm-crypto/-/wasm-crypto-7.5.17.tgz", "resolved": "https://registry.npmjs.org/@pezkuwi/wasm-crypto/-/wasm-crypto-7.5.20.tgz",
"integrity": "sha512-RmXyo3V4VIUqlInRtsolD90Tg6iLgSGyZ8EFbKqnvzmoKreVA3ybnW8gqBxioQXkfCQKl63jnSAmd3mV0VwYNg==", "integrity": "sha512-7yo9CjFMiqzpWdVn8ZCT93YG4pMnmk/VzYzviSmXzzfY13wVW0M8VwwXijq5h9b3qTtaZR+F/fEPr0eUT9sO1g==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@noble/hashes": "^1.3.3", "@noble/hashes": "^1.3.3",
"@pezkuwi/wasm-bridge": "7.5.17", "@pezkuwi/wasm-bridge": "7.5.20",
"@pezkuwi/wasm-crypto-asmjs": "7.5.17", "@pezkuwi/wasm-crypto-asmjs": "7.5.20",
"@pezkuwi/wasm-crypto-init": "7.5.17", "@pezkuwi/wasm-crypto-init": "7.5.20",
"@pezkuwi/wasm-crypto-wasm": "7.5.17", "@pezkuwi/wasm-crypto-wasm": "7.5.20",
"@pezkuwi/wasm-util": "7.5.17", "@pezkuwi/wasm-util": "7.5.20",
"tslib": "^2.7.0" "tslib": "^2.7.0"
}, },
"engines": { "engines": {
@@ -454,9 +454,9 @@
} }
}, },
"node_modules/@pezkuwi/wasm-crypto-asmjs": { "node_modules/@pezkuwi/wasm-crypto-asmjs": {
"version": "7.5.17", "version": "7.5.20",
"resolved": "https://registry.npmjs.org/@pezkuwi/wasm-crypto-asmjs/-/wasm-crypto-asmjs-7.5.17.tgz", "resolved": "https://registry.npmjs.org/@pezkuwi/wasm-crypto-asmjs/-/wasm-crypto-asmjs-7.5.20.tgz",
"integrity": "sha512-akM7/goSqYenoQXQYYiMP2esxka6IaqhcidKB54FAucvtIO5O2LtbAfCeNN+e5xyiAeTcTUXbSrVzDOd4+3czA==", "integrity": "sha512-Yvd1168GjXREiOViGb+veXbEYBWEv2wS5qPZMeI7g3FeGx8pBbczvi29cTa5j/U5dmdq7ryb8rLKoXEFWG2Xkw==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"tslib": "^2.7.0" "tslib": "^2.7.0"
@@ -469,15 +469,15 @@
} }
}, },
"node_modules/@pezkuwi/wasm-crypto-init": { "node_modules/@pezkuwi/wasm-crypto-init": {
"version": "7.5.17", "version": "7.5.20",
"resolved": "https://registry.npmjs.org/@pezkuwi/wasm-crypto-init/-/wasm-crypto-init-7.5.17.tgz", "resolved": "https://registry.npmjs.org/@pezkuwi/wasm-crypto-init/-/wasm-crypto-init-7.5.20.tgz",
"integrity": "sha512-q/T6sj8bFL2JPeTmSGbwd8E4LpK+hKdAhDR86jrZ/rKMNuLnYMSYuiR7GraymYFqlG2yLZoJihKn5b8J40YjaQ==", "integrity": "sha512-rtsGn81dvnlb1Qmlm8hPaXOlE6Cn0rrvYUirNEHLvn55D6irGEoCEuON9nNuGjamw09En8GrK3P59Y2mDkFCmw==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@pezkuwi/wasm-bridge": "7.5.17", "@pezkuwi/wasm-bridge": "7.5.20",
"@pezkuwi/wasm-crypto-asmjs": "7.5.17", "@pezkuwi/wasm-crypto-asmjs": "7.5.20",
"@pezkuwi/wasm-crypto-wasm": "7.5.17", "@pezkuwi/wasm-crypto-wasm": "7.5.20",
"@pezkuwi/wasm-util": "7.5.17", "@pezkuwi/wasm-util": "7.5.20",
"tslib": "^2.7.0" "tslib": "^2.7.0"
}, },
"engines": { "engines": {
@@ -489,12 +489,12 @@
} }
}, },
"node_modules/@pezkuwi/wasm-crypto-wasm": { "node_modules/@pezkuwi/wasm-crypto-wasm": {
"version": "7.5.17", "version": "7.5.20",
"resolved": "https://registry.npmjs.org/@pezkuwi/wasm-crypto-wasm/-/wasm-crypto-wasm-7.5.17.tgz", "resolved": "https://registry.npmjs.org/@pezkuwi/wasm-crypto-wasm/-/wasm-crypto-wasm-7.5.20.tgz",
"integrity": "sha512-yg9/ldrHSUaIJ+db7vuPkU6DBw/SAuU4kK2L05LEbFeC093SfRS4f0qnIwNhlgjEJVsAfSWjZXOGBAM1Mc8aHg==", "integrity": "sha512-znId0RjOrHNTcMHtifW3IVYTJiDt/pVTjQC5MHA1KqBDuiEFHWFWKcGVe/aieXN4pvLqCZZtm4G1X80qDBHdTQ==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@pezkuwi/wasm-util": "7.5.17", "@pezkuwi/wasm-util": "7.5.20",
"tslib": "^2.7.0" "tslib": "^2.7.0"
}, },
"engines": { "engines": {
@@ -505,9 +505,9 @@
} }
}, },
"node_modules/@pezkuwi/wasm-util": { "node_modules/@pezkuwi/wasm-util": {
"version": "7.5.17", "version": "7.5.20",
"resolved": "https://registry.npmjs.org/@pezkuwi/wasm-util/-/wasm-util-7.5.17.tgz", "resolved": "https://registry.npmjs.org/@pezkuwi/wasm-util/-/wasm-util-7.5.20.tgz",
"integrity": "sha512-MHodOmAuldNmmkTwZgGmSvCvUbhgR79N6biG6QVXrUtwVGUK37IUx/195T1cG0IZaSjLsWwz3olhksto5z54Lw==", "integrity": "sha512-bYHtbtiDdBtK/SRQMtMFGhrk4BvTe85vPqPI4CwDt8tJUmEuLgl0uHNJd9jSUcK784EQdo5E3yKYksGaHy80dQ==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"tslib": "^2.7.0" "tslib": "^2.7.0"
@@ -520,12 +520,12 @@
} }
}, },
"node_modules/@pezkuwi/x-bigint": { "node_modules/@pezkuwi/x-bigint": {
"version": "14.0.25", "version": "14.0.26",
"resolved": "https://registry.npmjs.org/@pezkuwi/x-bigint/-/x-bigint-14.0.25.tgz", "resolved": "https://registry.npmjs.org/@pezkuwi/x-bigint/-/x-bigint-14.0.26.tgz",
"integrity": "sha512-9CG28jPK0EUuXTn8QWnsYjXycfHBVQCR5QGJ17hgRenzRRDzoIB5unhC0XklcIh5U/KO88TPRVZKKiwSfQXlKg==", "integrity": "sha512-TiCUVJiW07KurXot79AuKsqdIKGCtysMVDKLGlUc7mxlDJ+BCNJVmi9D0vvbB/gboxfJqONFQKt8eOXHKFg1iw==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@pezkuwi/x-global": "14.0.25", "@pezkuwi/x-global": "14.0.26",
"tslib": "^2.8.0" "tslib": "^2.8.0"
}, },
"engines": { "engines": {
@@ -533,12 +533,12 @@
} }
}, },
"node_modules/@pezkuwi/x-fetch": { "node_modules/@pezkuwi/x-fetch": {
"version": "14.0.25", "version": "14.0.26",
"resolved": "https://registry.npmjs.org/@pezkuwi/x-fetch/-/x-fetch-14.0.25.tgz", "resolved": "https://registry.npmjs.org/@pezkuwi/x-fetch/-/x-fetch-14.0.26.tgz",
"integrity": "sha512-fiNYdYMq0OdYsSUwVBA68eKieeQ+PJYniEeCRNvkMUN1LUWMzdv9zTTPRtsGUEGm12y9uUgymgD92eo4PSoJog==", "integrity": "sha512-XVpFZ/Bk1l7dKYcC+1RMJlvQEbbyfQ/Ou4I8rTSv6MvaCtfD3vl0TxolHnhwA564eyemLfoidF/Kvbfmnz7mlg==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@pezkuwi/x-global": "14.0.25", "@pezkuwi/x-global": "14.0.26",
"node-fetch": "^3.3.2", "node-fetch": "^3.3.2",
"tslib": "^2.8.0" "tslib": "^2.8.0"
}, },
@@ -547,9 +547,9 @@
} }
}, },
"node_modules/@pezkuwi/x-global": { "node_modules/@pezkuwi/x-global": {
"version": "14.0.25", "version": "14.0.26",
"resolved": "https://registry.npmjs.org/@pezkuwi/x-global/-/x-global-14.0.25.tgz", "resolved": "https://registry.npmjs.org/@pezkuwi/x-global/-/x-global-14.0.26.tgz",
"integrity": "sha512-WxY0dCOWFfqqd2jtLNX8BmJMCR5NTlc9QBuL3u4TwF6yAc4jKqlq3F1J1vAMESnBwnR1jUepKgn+2dpGuspJYw==", "integrity": "sha512-3D/dgFUugJfJ59JETey2EPpWL7X7NOrSEgNj1Rt3Vu9zR74QNocc5HEcyapFKj2hNNp5gPPDOOWbrLkkDnbdXw==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"tslib": "^2.8.0" "tslib": "^2.8.0"
@@ -559,29 +559,29 @@
} }
}, },
"node_modules/@pezkuwi/x-randomvalues": { "node_modules/@pezkuwi/x-randomvalues": {
"version": "14.0.25", "version": "14.0.26",
"resolved": "https://registry.npmjs.org/@pezkuwi/x-randomvalues/-/x-randomvalues-14.0.25.tgz", "resolved": "https://registry.npmjs.org/@pezkuwi/x-randomvalues/-/x-randomvalues-14.0.26.tgz",
"integrity": "sha512-Kkbkdv8e2XZEnhwJHaqM27wKn25fc/Dt6neGy3x150AVuf4EjWnM0Q9pNVC4WQKbThvDQ8SvzCdfZos4Lae8sA==", "integrity": "sha512-9tQ5+e7b5sC6y7NWFojfkfKZNSmWBpB1dnuyMv5vJMPlBPlsscTYARfk8ln860XWLdemQBYBvYbibmEBtLFfSQ==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@pezkuwi/x-global": "14.0.25", "@pezkuwi/x-global": "14.0.26",
"tslib": "^2.8.0" "tslib": "^2.8.0"
}, },
"engines": { "engines": {
"node": ">=18" "node": ">=18"
}, },
"peerDependencies": { "peerDependencies": {
"@pezkuwi/util": "14.0.25", "@pezkuwi/util": "14.0.26",
"@pezkuwi/wasm-util": "7.5.17" "@pezkuwi/wasm-util": "*"
} }
}, },
"node_modules/@pezkuwi/x-textdecoder": { "node_modules/@pezkuwi/x-textdecoder": {
"version": "14.0.25", "version": "14.0.26",
"resolved": "https://registry.npmjs.org/@pezkuwi/x-textdecoder/-/x-textdecoder-14.0.25.tgz", "resolved": "https://registry.npmjs.org/@pezkuwi/x-textdecoder/-/x-textdecoder-14.0.26.tgz",
"integrity": "sha512-ecse2X9BKG164BfCesCZfL3lZU+XAdLjaOKzLqPB+hlTshHVnnSAvUvZNaw4zq9ztBVhhktxZ9K27S1w8ZANMg==", "integrity": "sha512-O3l/pcT+7q89COMe+h+Gr+HLLym3k0RfWXWwEg6RYGBHxp77GfixwqAR/o6k6rBXNfxlAY60RcYUqu+DGkKSZw==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@pezkuwi/x-global": "14.0.25", "@pezkuwi/x-global": "14.0.26",
"tslib": "^2.8.0" "tslib": "^2.8.0"
}, },
"engines": { "engines": {
@@ -589,12 +589,12 @@
} }
}, },
"node_modules/@pezkuwi/x-textencoder": { "node_modules/@pezkuwi/x-textencoder": {
"version": "14.0.25", "version": "14.0.26",
"resolved": "https://registry.npmjs.org/@pezkuwi/x-textencoder/-/x-textencoder-14.0.25.tgz", "resolved": "https://registry.npmjs.org/@pezkuwi/x-textencoder/-/x-textencoder-14.0.26.tgz",
"integrity": "sha512-0R25a5V8ykoHCHwl2zYsW6FxQlGdPgHiaGUUqY4wfnNAyUsolsm1YU772vfNfARdLN6K+jiRdQ6I6RW114LtgQ==", "integrity": "sha512-aUk+h0g5iO+V3CZV1vdlRy4G9MbE0SbomB5Lw/8IkuQ+wNPK9JQ1FlArMhxVBfXM9JD8DPih/ViZsaNhWfjVVw==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@pezkuwi/x-global": "14.0.25", "@pezkuwi/x-global": "14.0.26",
"tslib": "^2.8.0" "tslib": "^2.8.0"
}, },
"engines": { "engines": {
@@ -602,12 +602,12 @@
} }
}, },
"node_modules/@pezkuwi/x-ws": { "node_modules/@pezkuwi/x-ws": {
"version": "14.0.25", "version": "14.0.26",
"resolved": "https://registry.npmjs.org/@pezkuwi/x-ws/-/x-ws-14.0.25.tgz", "resolved": "https://registry.npmjs.org/@pezkuwi/x-ws/-/x-ws-14.0.26.tgz",
"integrity": "sha512-YwbnTl+EF3Gtp2qrs/23Qo2FkpPB2y+0HGa4XovyfbDk7iAXJuIAAw0sq2StxVF1NsSm0DZIyX1GJU+nyM/5Pw==", "integrity": "sha512-ZAvB5WgDJXSkunlZ/b2X/CJaft1eHztoWKO7SYgahk8NftAEIFet1SnWJoYL4TPvM/B9ReacNislIQXGwH0WYQ==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@pezkuwi/x-global": "14.0.25", "@pezkuwi/x-global": "14.0.26",
"tslib": "^2.8.0", "tslib": "^2.8.0",
"ws": "^8.18.0" "ws": "^8.18.0"
}, },
@@ -640,12 +640,12 @@
} }
}, },
"node_modules/@types/node": { "node_modules/@types/node": {
"version": "25.2.3", "version": "26.6.4",
"resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.4.tgz",
"integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", "integrity": "sha512-ldVPDCzj7fsaGZrLB0NuHuTvJcsNasysBAqMolr/cgxrLd1xbqxIr3XJiPnHHJUCxj5sNF1vnRj9aWnrVh5Jcg==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"undici-types": "~7.16.0" "undici-types": "~8.9.0"
} }
}, },
"node_modules/bn.js": { "node_modules/bn.js": {
@@ -829,9 +829,9 @@
"license": "0BSD" "license": "0BSD"
}, },
"node_modules/undici-types": { "node_modules/undici-types": {
"version": "7.16.0", "version": "8.9.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.9.0.tgz",
"integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", "integrity": "sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/web-streams-polyfill": { "node_modules/web-streams-polyfill": {
+6 -5
View File
@@ -8,9 +8,10 @@
"dev": "node --watch bot.js" "dev": "node --watch bot.js"
}, },
"dependencies": { "dependencies": {
"@pezkuwi/api": "^16.5.36", "@pezkuwi/api": "^16.5.37",
"@pezkuwi/keyring": "^14.0.25", "@pezkuwi/keyring": "^14.0.26",
"@pezkuwi/util": "^14.0.25", "@pezkuwi/util": "^14.0.26",
"@pezkuwi/util-crypto": "^14.0.25" "@pezkuwi/util-crypto": "^14.0.26"
} },
"private": true
} }
+10 -6
View File
@@ -1,9 +1,13 @@
FROM node:20-alpine FROM node:24-alpine
WORKDIR /app WORKDIR /app
RUN npm install \
@pezkuwi/api@^16.5.36 \ # Install exactly what package-lock.json records, so the image runs the
@pezkuwi/keyring@^14.0.25 \ # versions that were reviewed and tested rather than whatever the ranges
@pezkuwi/util@^14.0.25 \ # resolve to on the day it is built.
@pezkuwi/util-crypto@^14.0.25 COPY package.json package-lock.json ./
RUN npm ci --omit=dev --no-audit --no-fund
COPY bot.js ./ COPY bot.js ./
CMD ["node", "bot.js"] CMD ["node", "bot.js"]
+868
View File
@@ -0,0 +1,868 @@
{
"name": "pezkuwi-payout-bot",
"version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "pezkuwi-payout-bot",
"version": "1.0.0",
"dependencies": {
"@pezkuwi/api": "^16.5.37",
"@pezkuwi/keyring": "^14.0.26",
"@pezkuwi/util": "^14.0.26",
"@pezkuwi/util-crypto": "^14.0.26"
}
},
"node_modules/@bizinikiwi/connect": {
"version": "2.1.9",
"resolved": "https://registry.npmjs.org/@bizinikiwi/connect/-/connect-2.1.9.tgz",
"integrity": "sha512-dHzMerp2f/Q/xhroUVXTLPIqn6PRBBorGwg/Y1L9TWS9Za8L7J3Iw0XJhN3KI2yqdywOGSYM+hMLuGcvkncgkQ==",
"license": "GPL-3.0-only",
"optional": true,
"dependencies": {
"@bizinikiwi/connect-extension-protocol": "^2.2.2",
"@bizinikiwi/connect-known-chains": "^1.10.3",
"@bizinikiwi/smoldot-discovery": "^2.0.3",
"smoldot": "^2.0.34"
}
},
"node_modules/@bizinikiwi/connect-extension-protocol": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/@bizinikiwi/connect-extension-protocol/-/connect-extension-protocol-2.2.2.tgz",
"integrity": "sha512-2xsfJNAEQqZG1LBxdDzKreBFsvldqTDiC7xGNX/6avWPQDcIkm1gHtVYJ+Yw9wvsEodMrg3gBV87rcFJVgNV/g==",
"license": "GPL-3.0-only",
"optional": true
},
"node_modules/@bizinikiwi/connect-known-chains": {
"version": "1.10.3",
"resolved": "https://registry.npmjs.org/@bizinikiwi/connect-known-chains/-/connect-known-chains-1.10.3.tgz",
"integrity": "sha512-MIL+JP/RkkX4ytoxm4enok4OP+k5rAaBM+yNBCdJataTPQ8OrTuv4FGwBXc7SpMZeRado/v+WmiwQT5qFbISRg==",
"license": "GPL-3.0-only",
"optional": true
},
"node_modules/@bizinikiwi/discovery": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/@bizinikiwi/discovery/-/discovery-0.2.2.tgz",
"integrity": "sha512-LSq3/4Fb7i3YNzGW9r9ZVvLR6ojlXPUbhfheoKFncG+IwXKKSP6CMIB8QpRGRKMgr15k4L4rQp0awBWhEVdPyQ==",
"license": "MIT",
"optional": true
},
"node_modules/@bizinikiwi/smoldot-discovery": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/@bizinikiwi/smoldot-discovery/-/smoldot-discovery-2.0.3.tgz",
"integrity": "sha512-7iInxXewJaRZJk+nD89g88uvo1Fhut76cqHi4xCLgZw0dqDhrEzq8LO5MYbISEkZLL4nAANPCmBa0Ohm47fSMA==",
"license": "MIT",
"optional": true,
"dependencies": {
"@bizinikiwi/discovery": "^0.2.2"
}
},
"node_modules/@noble/curves": {
"version": "1.9.7",
"resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz",
"integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==",
"license": "MIT",
"dependencies": {
"@noble/hashes": "1.8.0"
},
"engines": {
"node": "^14.21.3 || >=16"
},
"funding": {
"url": "https://paulmillr.com/funding/"
}
},
"node_modules/@noble/hashes": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz",
"integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==",
"license": "MIT",
"engines": {
"node": "^14.21.3 || >=16"
},
"funding": {
"url": "https://paulmillr.com/funding/"
}
},
"node_modules/@pezkuwi/api": {
"version": "16.5.37",
"resolved": "https://registry.npmjs.org/@pezkuwi/api/-/api-16.5.37.tgz",
"integrity": "sha512-juDlShgJ3VOFHblg5pMZonoNoqpNrszmCYhfmA+8al53pMLp/GYcgD6xv9+Yf6rNifY7KzLTPOjjzxQDheNUsQ==",
"license": "Apache-2.0",
"dependencies": {
"@pezkuwi/api-augment": "16.5.37",
"@pezkuwi/api-base": "16.5.37",
"@pezkuwi/api-derive": "16.5.37",
"@pezkuwi/keyring": "14.0.26",
"@pezkuwi/rpc-augment": "16.5.37",
"@pezkuwi/rpc-core": "16.5.37",
"@pezkuwi/rpc-provider": "16.5.37",
"@pezkuwi/types": "16.5.37",
"@pezkuwi/types-augment": "16.5.37",
"@pezkuwi/types-codec": "16.5.37",
"@pezkuwi/types-create": "16.5.37",
"@pezkuwi/types-known": "16.5.37",
"@pezkuwi/types-support": "16.5.37",
"@pezkuwi/util": "14.0.26",
"@pezkuwi/util-crypto": "14.0.26",
"eventemitter3": "^5.0.1",
"rxjs": "^7.8.1",
"tslib": "^2.8.1"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@pezkuwi/api-augment": {
"version": "16.5.37",
"resolved": "https://registry.npmjs.org/@pezkuwi/api-augment/-/api-augment-16.5.37.tgz",
"integrity": "sha512-EfQZuebTbO0sFNWUN7+DTBeH38X70rZPj0oV/VnMFO/LT3bFCqOdbFCyV14j7FvEheZ6yajPQ3+uJknuVM7Ytg==",
"license": "Apache-2.0",
"dependencies": {
"@pezkuwi/api-base": "16.5.37",
"@pezkuwi/rpc-augment": "16.5.37",
"@pezkuwi/types": "16.5.37",
"@pezkuwi/types-augment": "16.5.37",
"@pezkuwi/types-codec": "16.5.37",
"@pezkuwi/util": "14.0.26",
"tslib": "^2.8.1"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@pezkuwi/api-base": {
"version": "16.5.37",
"resolved": "https://registry.npmjs.org/@pezkuwi/api-base/-/api-base-16.5.37.tgz",
"integrity": "sha512-DTh1/xaUmjyudQxMCWFOxmCrC+Oar5duZa9z4k2BSKdqS48PKWVUlpo36GquH/Iu3fzdoYG59ZF07KAP94Eq3w==",
"license": "Apache-2.0",
"dependencies": {
"@pezkuwi/rpc-core": "16.5.37",
"@pezkuwi/types": "16.5.37",
"@pezkuwi/util": "14.0.26",
"rxjs": "^7.8.1",
"tslib": "^2.8.1"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@pezkuwi/api-derive": {
"version": "16.5.37",
"resolved": "https://registry.npmjs.org/@pezkuwi/api-derive/-/api-derive-16.5.37.tgz",
"integrity": "sha512-cDyRUUZ6hNcL6H2lLcig/NihpgynyEkpTjXZ19MqPAYaP3Uu60rlkZBQ2QLIJOKBF8DUN/pDEh5puh/+w9VhAA==",
"license": "Apache-2.0",
"dependencies": {
"@pezkuwi/api": "16.5.37",
"@pezkuwi/api-augment": "16.5.37",
"@pezkuwi/api-base": "16.5.37",
"@pezkuwi/rpc-core": "16.5.37",
"@pezkuwi/rpc-provider": "16.5.37",
"@pezkuwi/types": "16.5.37",
"@pezkuwi/types-codec": "16.5.37",
"@pezkuwi/types-support": "16.5.37",
"@pezkuwi/util": "14.0.26",
"@pezkuwi/util-crypto": "14.0.26",
"rxjs": "^7.8.1",
"tslib": "^2.8.1"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@pezkuwi/keyring": {
"version": "14.0.26",
"resolved": "https://registry.npmjs.org/@pezkuwi/keyring/-/keyring-14.0.26.tgz",
"integrity": "sha512-stcWcKFKgS1DbIq1CTRzPdpOXuLudFiRPN8MZ0B8COJGKkqElHleWEWC55nhjG3bLZaTUHveuAsMURhu3wHAbg==",
"license": "Apache-2.0",
"dependencies": {
"@pezkuwi/util": "14.0.26",
"@pezkuwi/util-crypto": "14.0.26",
"tslib": "^2.8.0"
},
"engines": {
"node": ">=18"
},
"peerDependencies": {
"@pezkuwi/util": "14.0.26",
"@pezkuwi/util-crypto": "14.0.26"
}
},
"node_modules/@pezkuwi/networks": {
"version": "14.0.26",
"resolved": "https://registry.npmjs.org/@pezkuwi/networks/-/networks-14.0.26.tgz",
"integrity": "sha512-omDbJzFjDSm1FS32zebyNP1QGBk9/ZayM0YM0mUlOOwiLIP7iDVq3KQe2JdI7hm1dz01Lm68/hjerSoqiWEclA==",
"license": "Apache-2.0",
"dependencies": {
"@pezkuwi/util": "14.0.26",
"@substrate/ss58-registry": "^1.51.0",
"tslib": "^2.8.0"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@pezkuwi/rpc-augment": {
"version": "16.5.37",
"resolved": "https://registry.npmjs.org/@pezkuwi/rpc-augment/-/rpc-augment-16.5.37.tgz",
"integrity": "sha512-WvHG9Zu/d3eaDgsf/SAHEAoPdkeDZ6BXAhLsWJEVaFL8eT5bLpuf3qOoZ7b7rRegaW5KfGlhXluiJSDuB6Q3Lg==",
"license": "Apache-2.0",
"dependencies": {
"@pezkuwi/rpc-core": "16.5.37",
"@pezkuwi/types": "16.5.37",
"@pezkuwi/types-codec": "16.5.37",
"@pezkuwi/util": "14.0.26",
"tslib": "^2.8.1"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@pezkuwi/rpc-core": {
"version": "16.5.37",
"resolved": "https://registry.npmjs.org/@pezkuwi/rpc-core/-/rpc-core-16.5.37.tgz",
"integrity": "sha512-waP8ieN89eKAXsUx1Y1rHn2k9snRgUJhiEfox2by9X0Unbap5GAbDG/pu1buBBxpYz4Jni4zVgdV1aoAya8vJQ==",
"license": "Apache-2.0",
"dependencies": {
"@pezkuwi/keyring": "14.0.26",
"@pezkuwi/rpc-augment": "16.5.37",
"@pezkuwi/rpc-provider": "16.5.37",
"@pezkuwi/types": "16.5.37",
"@pezkuwi/util": "14.0.26",
"rxjs": "^7.8.1",
"tslib": "^2.8.1"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@pezkuwi/rpc-provider": {
"version": "16.5.37",
"resolved": "https://registry.npmjs.org/@pezkuwi/rpc-provider/-/rpc-provider-16.5.37.tgz",
"integrity": "sha512-B727rg9hOBON+CwSffJCFpfKjkMbaDvEGs+HyDnUvZjU8yFp4b/WW7yax84ZL5Dv9dOm1WPDoPKDA1w1+JVqdw==",
"license": "Apache-2.0",
"dependencies": {
"@pezkuwi/keyring": "14.0.26",
"@pezkuwi/types": "16.5.37",
"@pezkuwi/types-support": "16.5.37",
"@pezkuwi/util": "14.0.26",
"@pezkuwi/util-crypto": "14.0.26",
"@pezkuwi/x-fetch": "14.0.26",
"@pezkuwi/x-global": "14.0.26",
"@pezkuwi/x-ws": "14.0.26",
"eventemitter3": "^5.0.1",
"mock-socket": "^9.3.1",
"nock": "^13.5.5",
"tslib": "^2.8.1"
},
"engines": {
"node": ">=18"
},
"optionalDependencies": {
"@bizinikiwi/connect": "2.1.9"
}
},
"node_modules/@pezkuwi/scure-sr25519": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/@pezkuwi/scure-sr25519/-/scure-sr25519-0.2.1.tgz",
"integrity": "sha512-KGxCR+fI4p8QyIpwmRNIj8fbq7O+yz0iZZ/O2HJBVE7O9D6ksBKwIILqODJfE6Qvrf3F8DyT6/3cPoR3e/s8iA==",
"license": "MIT",
"dependencies": {
"@noble/curves": "~1.9.2",
"@noble/hashes": "~1.8.0"
}
},
"node_modules/@pezkuwi/types": {
"version": "16.5.37",
"resolved": "https://registry.npmjs.org/@pezkuwi/types/-/types-16.5.37.tgz",
"integrity": "sha512-sMNw7xJMLkv4qgGJTQkFe1oyyWVRcDxDswJFUc3P90KkKDdPlBRtJDEqG3L1MnFv5ES4c3WGTDhdUXXiKFppiA==",
"license": "Apache-2.0",
"dependencies": {
"@pezkuwi/keyring": "14.0.26",
"@pezkuwi/types-augment": "16.5.37",
"@pezkuwi/types-codec": "16.5.37",
"@pezkuwi/types-create": "16.5.37",
"@pezkuwi/types-support": "16.5.37",
"@pezkuwi/util": "14.0.26",
"@pezkuwi/util-crypto": "14.0.26",
"rxjs": "^7.8.1",
"tslib": "^2.8.1"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@pezkuwi/types-augment": {
"version": "16.5.37",
"resolved": "https://registry.npmjs.org/@pezkuwi/types-augment/-/types-augment-16.5.37.tgz",
"integrity": "sha512-JcXtBFg9p99speS5RI1Sh0SQZWlD+SO1nMkxQ3HGwzKQG842B0/UrMykkpP7hxZ6rGDDIepnX8ytqqslZXUZ2A==",
"license": "Apache-2.0",
"dependencies": {
"@pezkuwi/types": "16.5.37",
"@pezkuwi/types-codec": "16.5.37",
"@pezkuwi/util": "14.0.26",
"tslib": "^2.8.1"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@pezkuwi/types-codec": {
"version": "16.5.37",
"resolved": "https://registry.npmjs.org/@pezkuwi/types-codec/-/types-codec-16.5.37.tgz",
"integrity": "sha512-Bu3Kq0URBDd3CskZWsKPP/jb4Q6PnFJ/R7p8RPF1P1TZQ5fhSEKbDZ8+qpkrfPHQGFDrBMnAGVTtot08cVbHiw==",
"license": "Apache-2.0",
"dependencies": {
"@pezkuwi/types": "16.5.37",
"@pezkuwi/types-augment": "16.5.37",
"@pezkuwi/types-support": "16.5.37",
"@pezkuwi/util": "14.0.26",
"@pezkuwi/util-crypto": "14.0.26",
"@pezkuwi/x-bigint": "14.0.26",
"tslib": "^2.8.1"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@pezkuwi/types-create": {
"version": "16.5.37",
"resolved": "https://registry.npmjs.org/@pezkuwi/types-create/-/types-create-16.5.37.tgz",
"integrity": "sha512-iViQ2wnIHWrv4OkL33eIxc9Z9eE8THZWkyEIn3a/jXnLij0H1unlzOXwcdsAe5lKhADamZDsMIBlQ5bYzsGSSg==",
"license": "Apache-2.0",
"dependencies": {
"@pezkuwi/types": "16.5.37",
"@pezkuwi/types-codec": "16.5.37",
"@pezkuwi/util": "14.0.26",
"tslib": "^2.8.1"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@pezkuwi/types-known": {
"version": "16.5.37",
"resolved": "https://registry.npmjs.org/@pezkuwi/types-known/-/types-known-16.5.37.tgz",
"integrity": "sha512-+c1Fk3CQ0eIkv6brwfv8A64E9lSLg5XPFW4x7h5fR34PzpdfTvP7R2xcBIVlIkHd3JQUTsGP/zNXWHCi1EpHJg==",
"license": "Apache-2.0",
"dependencies": {
"@pezkuwi/networks": "14.0.26",
"@pezkuwi/types": "16.5.37",
"@pezkuwi/types-codec": "16.5.37",
"@pezkuwi/types-create": "16.5.37",
"@pezkuwi/util": "14.0.26",
"tslib": "^2.8.1"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@pezkuwi/types-support": {
"version": "16.5.37",
"resolved": "https://registry.npmjs.org/@pezkuwi/types-support/-/types-support-16.5.37.tgz",
"integrity": "sha512-rfi7qhSysUweQEyAfe/qk26M2HZotf/xylb6gcfhWJkwiSURhW4Jof/1Rye5SSssk7nCfQcgfYUFDE+oWOHuog==",
"license": "Apache-2.0",
"dependencies": {
"@pezkuwi/util": "14.0.26",
"tslib": "^2.8.1"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@pezkuwi/util": {
"version": "14.0.26",
"resolved": "https://registry.npmjs.org/@pezkuwi/util/-/util-14.0.26.tgz",
"integrity": "sha512-xV7uct4jtIqf+9LixcCoTgYz8JEZ2eK6aosMD92Zu5DRPSW87QcCYBQuq8Phec0LdjGvC/l7DgiloQODhTtHWA==",
"license": "Apache-2.0",
"dependencies": {
"@pezkuwi/x-bigint": "14.0.26",
"@pezkuwi/x-global": "14.0.26",
"@pezkuwi/x-textdecoder": "14.0.26",
"@pezkuwi/x-textencoder": "14.0.26",
"@types/bn.js": "^5.1.6",
"bn.js": "^5.2.1",
"tslib": "^2.8.0"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@pezkuwi/util-crypto": {
"version": "14.0.26",
"resolved": "https://registry.npmjs.org/@pezkuwi/util-crypto/-/util-crypto-14.0.26.tgz",
"integrity": "sha512-YR+3N2FwKx3q9NF11q75O0lJ+SKpM9CNKPE7rLEoPvFt7wpHpB/GXOAekYhNtrotkcsI8v/WoyOi4RI9NiwYVQ==",
"license": "Apache-2.0",
"dependencies": {
"@noble/curves": "^1.9.7",
"@noble/hashes": "^1.8.0",
"@pezkuwi/networks": "14.0.26",
"@pezkuwi/scure-sr25519": "^0.2.1",
"@pezkuwi/util": "14.0.26",
"@pezkuwi/wasm-crypto": "^7.5.20",
"@pezkuwi/wasm-util": "^7.5.20",
"@pezkuwi/x-bigint": "14.0.26",
"@pezkuwi/x-randomvalues": "14.0.26",
"@scure/base": "^1.1.7",
"tslib": "^2.8.0"
},
"engines": {
"node": ">=18"
},
"peerDependencies": {
"@pezkuwi/util": "14.0.26"
}
},
"node_modules/@pezkuwi/wasm-bridge": {
"version": "7.5.20",
"resolved": "https://registry.npmjs.org/@pezkuwi/wasm-bridge/-/wasm-bridge-7.5.20.tgz",
"integrity": "sha512-JKgDtLvQzT6uBfD8PcSD7Nud4OB8u6BJjABADDLxFrxHPsKbQNnkTd6f/27GfbkOJL4p17fWwoACICp/oEDxCw==",
"license": "Apache-2.0",
"dependencies": {
"@pezkuwi/wasm-util": "7.5.20",
"tslib": "^2.7.0"
},
"engines": {
"node": ">=18"
},
"peerDependencies": {
"@pezkuwi/util": "*",
"@pezkuwi/x-randomvalues": "*"
}
},
"node_modules/@pezkuwi/wasm-crypto": {
"version": "7.5.20",
"resolved": "https://registry.npmjs.org/@pezkuwi/wasm-crypto/-/wasm-crypto-7.5.20.tgz",
"integrity": "sha512-7yo9CjFMiqzpWdVn8ZCT93YG4pMnmk/VzYzviSmXzzfY13wVW0M8VwwXijq5h9b3qTtaZR+F/fEPr0eUT9sO1g==",
"license": "Apache-2.0",
"dependencies": {
"@noble/hashes": "^1.3.3",
"@pezkuwi/wasm-bridge": "7.5.20",
"@pezkuwi/wasm-crypto-asmjs": "7.5.20",
"@pezkuwi/wasm-crypto-init": "7.5.20",
"@pezkuwi/wasm-crypto-wasm": "7.5.20",
"@pezkuwi/wasm-util": "7.5.20",
"tslib": "^2.7.0"
},
"engines": {
"node": ">=18"
},
"peerDependencies": {
"@pezkuwi/util": "*",
"@pezkuwi/x-randomvalues": "*"
}
},
"node_modules/@pezkuwi/wasm-crypto-asmjs": {
"version": "7.5.20",
"resolved": "https://registry.npmjs.org/@pezkuwi/wasm-crypto-asmjs/-/wasm-crypto-asmjs-7.5.20.tgz",
"integrity": "sha512-Yvd1168GjXREiOViGb+veXbEYBWEv2wS5qPZMeI7g3FeGx8pBbczvi29cTa5j/U5dmdq7ryb8rLKoXEFWG2Xkw==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.7.0"
},
"engines": {
"node": ">=18"
},
"peerDependencies": {
"@pezkuwi/util": "*"
}
},
"node_modules/@pezkuwi/wasm-crypto-init": {
"version": "7.5.20",
"resolved": "https://registry.npmjs.org/@pezkuwi/wasm-crypto-init/-/wasm-crypto-init-7.5.20.tgz",
"integrity": "sha512-rtsGn81dvnlb1Qmlm8hPaXOlE6Cn0rrvYUirNEHLvn55D6irGEoCEuON9nNuGjamw09En8GrK3P59Y2mDkFCmw==",
"license": "Apache-2.0",
"dependencies": {
"@pezkuwi/wasm-bridge": "7.5.20",
"@pezkuwi/wasm-crypto-asmjs": "7.5.20",
"@pezkuwi/wasm-crypto-wasm": "7.5.20",
"@pezkuwi/wasm-util": "7.5.20",
"tslib": "^2.7.0"
},
"engines": {
"node": ">=18"
},
"peerDependencies": {
"@pezkuwi/util": "*",
"@pezkuwi/x-randomvalues": "*"
}
},
"node_modules/@pezkuwi/wasm-crypto-wasm": {
"version": "7.5.20",
"resolved": "https://registry.npmjs.org/@pezkuwi/wasm-crypto-wasm/-/wasm-crypto-wasm-7.5.20.tgz",
"integrity": "sha512-znId0RjOrHNTcMHtifW3IVYTJiDt/pVTjQC5MHA1KqBDuiEFHWFWKcGVe/aieXN4pvLqCZZtm4G1X80qDBHdTQ==",
"license": "Apache-2.0",
"dependencies": {
"@pezkuwi/wasm-util": "7.5.20",
"tslib": "^2.7.0"
},
"engines": {
"node": ">=18"
},
"peerDependencies": {
"@pezkuwi/util": "*"
}
},
"node_modules/@pezkuwi/wasm-util": {
"version": "7.5.20",
"resolved": "https://registry.npmjs.org/@pezkuwi/wasm-util/-/wasm-util-7.5.20.tgz",
"integrity": "sha512-bYHtbtiDdBtK/SRQMtMFGhrk4BvTe85vPqPI4CwDt8tJUmEuLgl0uHNJd9jSUcK784EQdo5E3yKYksGaHy80dQ==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.7.0"
},
"engines": {
"node": ">=18"
},
"peerDependencies": {
"@pezkuwi/util": "*"
}
},
"node_modules/@pezkuwi/x-bigint": {
"version": "14.0.26",
"resolved": "https://registry.npmjs.org/@pezkuwi/x-bigint/-/x-bigint-14.0.26.tgz",
"integrity": "sha512-TiCUVJiW07KurXot79AuKsqdIKGCtysMVDKLGlUc7mxlDJ+BCNJVmi9D0vvbB/gboxfJqONFQKt8eOXHKFg1iw==",
"license": "Apache-2.0",
"dependencies": {
"@pezkuwi/x-global": "14.0.26",
"tslib": "^2.8.0"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@pezkuwi/x-fetch": {
"version": "14.0.26",
"resolved": "https://registry.npmjs.org/@pezkuwi/x-fetch/-/x-fetch-14.0.26.tgz",
"integrity": "sha512-XVpFZ/Bk1l7dKYcC+1RMJlvQEbbyfQ/Ou4I8rTSv6MvaCtfD3vl0TxolHnhwA564eyemLfoidF/Kvbfmnz7mlg==",
"license": "Apache-2.0",
"dependencies": {
"@pezkuwi/x-global": "14.0.26",
"node-fetch": "^3.3.2",
"tslib": "^2.8.0"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@pezkuwi/x-global": {
"version": "14.0.26",
"resolved": "https://registry.npmjs.org/@pezkuwi/x-global/-/x-global-14.0.26.tgz",
"integrity": "sha512-3D/dgFUugJfJ59JETey2EPpWL7X7NOrSEgNj1Rt3Vu9zR74QNocc5HEcyapFKj2hNNp5gPPDOOWbrLkkDnbdXw==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.8.0"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@pezkuwi/x-randomvalues": {
"version": "14.0.26",
"resolved": "https://registry.npmjs.org/@pezkuwi/x-randomvalues/-/x-randomvalues-14.0.26.tgz",
"integrity": "sha512-9tQ5+e7b5sC6y7NWFojfkfKZNSmWBpB1dnuyMv5vJMPlBPlsscTYARfk8ln860XWLdemQBYBvYbibmEBtLFfSQ==",
"license": "Apache-2.0",
"dependencies": {
"@pezkuwi/x-global": "14.0.26",
"tslib": "^2.8.0"
},
"engines": {
"node": ">=18"
},
"peerDependencies": {
"@pezkuwi/util": "14.0.26",
"@pezkuwi/wasm-util": "*"
}
},
"node_modules/@pezkuwi/x-textdecoder": {
"version": "14.0.26",
"resolved": "https://registry.npmjs.org/@pezkuwi/x-textdecoder/-/x-textdecoder-14.0.26.tgz",
"integrity": "sha512-O3l/pcT+7q89COMe+h+Gr+HLLym3k0RfWXWwEg6RYGBHxp77GfixwqAR/o6k6rBXNfxlAY60RcYUqu+DGkKSZw==",
"license": "Apache-2.0",
"dependencies": {
"@pezkuwi/x-global": "14.0.26",
"tslib": "^2.8.0"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@pezkuwi/x-textencoder": {
"version": "14.0.26",
"resolved": "https://registry.npmjs.org/@pezkuwi/x-textencoder/-/x-textencoder-14.0.26.tgz",
"integrity": "sha512-aUk+h0g5iO+V3CZV1vdlRy4G9MbE0SbomB5Lw/8IkuQ+wNPK9JQ1FlArMhxVBfXM9JD8DPih/ViZsaNhWfjVVw==",
"license": "Apache-2.0",
"dependencies": {
"@pezkuwi/x-global": "14.0.26",
"tslib": "^2.8.0"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@pezkuwi/x-ws": {
"version": "14.0.26",
"resolved": "https://registry.npmjs.org/@pezkuwi/x-ws/-/x-ws-14.0.26.tgz",
"integrity": "sha512-ZAvB5WgDJXSkunlZ/b2X/CJaft1eHztoWKO7SYgahk8NftAEIFet1SnWJoYL4TPvM/B9ReacNislIQXGwH0WYQ==",
"license": "Apache-2.0",
"dependencies": {
"@pezkuwi/x-global": "14.0.26",
"tslib": "^2.8.0",
"ws": "^8.18.0"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@scure/base": {
"version": "1.2.6",
"resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz",
"integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==",
"license": "MIT",
"funding": {
"url": "https://paulmillr.com/funding/"
}
},
"node_modules/@substrate/ss58-registry": {
"version": "1.51.0",
"resolved": "https://registry.npmjs.org/@substrate/ss58-registry/-/ss58-registry-1.51.0.tgz",
"integrity": "sha512-TWDurLiPxndFgKjVavCniytBIw+t4ViOi7TYp9h/D0NMmkEc9klFTo+827eyEJ0lELpqO207Ey7uGxUa+BS1jQ==",
"license": "Apache-2.0"
},
"node_modules/@types/bn.js": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.2.0.tgz",
"integrity": "sha512-DLbJ1BPqxvQhIGbeu8VbUC1DiAiahHtAYvA0ZEAa4P31F7IaArc8z3C3BRQdWX4mtLQuABG4yzp76ZrS02Ui1Q==",
"license": "MIT",
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/node": {
"version": "26.6.4",
"resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.4.tgz",
"integrity": "sha512-ldVPDCzj7fsaGZrLB0NuHuTvJcsNasysBAqMolr/cgxrLd1xbqxIr3XJiPnHHJUCxj5sNF1vnRj9aWnrVh5Jcg==",
"license": "MIT",
"dependencies": {
"undici-types": "~8.9.0"
}
},
"node_modules/bn.js": {
"version": "5.2.5",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.5.tgz",
"integrity": "sha512-Vq886eXykuP5E6HcKSSStP3bJgrE6In5WKxVUvJ8XGpWWYs2xZHWqUwzCtGgEtBcxyd57KBFDPFoUfNzdaHCNg==",
"license": "MIT"
},
"node_modules/data-uri-to-buffer": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz",
"integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==",
"license": "MIT",
"engines": {
"node": ">= 12"
}
},
"node_modules/debug": {
"version": "4.4.3",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
"integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
"license": "MIT",
"dependencies": {
"ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
},
"peerDependenciesMeta": {
"supports-color": {
"optional": true
}
}
},
"node_modules/eventemitter3": {
"version": "5.0.4",
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz",
"integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==",
"license": "MIT"
},
"node_modules/fetch-blob": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
"integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/jimmywarting"
},
{
"type": "paypal",
"url": "https://paypal.me/jimmywarting"
}
],
"license": "MIT",
"dependencies": {
"node-domexception": "^1.0.0",
"web-streams-polyfill": "^3.0.3"
},
"engines": {
"node": "^12.20 || >= 14.13"
}
},
"node_modules/formdata-polyfill": {
"version": "4.0.10",
"resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
"integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
"license": "MIT",
"dependencies": {
"fetch-blob": "^3.1.2"
},
"engines": {
"node": ">=12.20.0"
}
},
"node_modules/json-stringify-safe": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
"license": "ISC"
},
"node_modules/mock-socket": {
"version": "9.3.1",
"resolved": "https://registry.npmjs.org/mock-socket/-/mock-socket-9.3.1.tgz",
"integrity": "sha512-qxBgB7Qa2sEQgHFjj0dSigq7fX4k6Saisd5Nelwp2q8mlbAFh5dHV9JTTlF8viYJLSSWgMCZFUom8PJcMNBoJw==",
"license": "MIT",
"engines": {
"node": ">= 8"
}
},
"node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"license": "MIT"
},
"node_modules/nock": {
"version": "13.5.6",
"resolved": "https://registry.npmjs.org/nock/-/nock-13.5.6.tgz",
"integrity": "sha512-o2zOYiCpzRqSzPj0Zt/dQ/DqZeYoaQ7TUonc/xUPjCGl9WeHpNbxgVvOquXYAaJzI0M9BXV3HTzG0p8IUAbBTQ==",
"license": "MIT",
"dependencies": {
"debug": "^4.1.0",
"json-stringify-safe": "^5.0.1",
"propagate": "^2.0.0"
},
"engines": {
"node": ">= 10.13"
}
},
"node_modules/node-domexception": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
"integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
"deprecated": "Use your platform's native DOMException instead",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/jimmywarting"
},
{
"type": "github",
"url": "https://paypal.me/jimmywarting"
}
],
"license": "MIT",
"engines": {
"node": ">=10.5.0"
}
},
"node_modules/node-fetch": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz",
"integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==",
"license": "MIT",
"dependencies": {
"data-uri-to-buffer": "^4.0.0",
"fetch-blob": "^3.1.4",
"formdata-polyfill": "^4.0.10"
},
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/node-fetch"
}
},
"node_modules/propagate": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz",
"integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==",
"license": "MIT",
"engines": {
"node": ">= 8"
}
},
"node_modules/rxjs": {
"version": "7.8.2",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz",
"integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.1.0"
}
},
"node_modules/smoldot": {
"version": "2.0.40",
"resolved": "https://registry.npmjs.org/smoldot/-/smoldot-2.0.40.tgz",
"integrity": "sha512-h6XC/kKDLdZBBTI0X8y4ZxmaZ2KYVVB0+5isCQm6j26ljeNjHZUDOV+hf8VyoE23+jg00wrxNJ2IVcIAURxwtg==",
"license": "GPL-3.0-or-later WITH Classpath-exception-2.0",
"optional": true,
"dependencies": {
"ws": "^8.8.1"
}
},
"node_modules/tslib": {
"version": "2.8.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
"license": "0BSD"
},
"node_modules/undici-types": {
"version": "8.9.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.9.0.tgz",
"integrity": "sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==",
"license": "MIT"
},
"node_modules/web-streams-polyfill": {
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz",
"integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==",
"license": "MIT",
"engines": {
"node": ">= 8"
}
},
"node_modules/ws": {
"version": "8.22.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.22.0.tgz",
"integrity": "sha512-Ydggc987+RO0AnWtZ/7Wq9FtNvcrL1b/RO0ud9mWjUPgDrsAAwQSF51sm2hm1XofbU/4jkpGEsLFsZZxU+1DOg==",
"license": "MIT",
"engines": {
"node": ">=10.0.0"
},
"peerDependencies": {
"bufferutil": "^4.0.1",
"utf-8-validate": ">=5.0.2"
},
"peerDependenciesMeta": {
"bufferutil": {
"optional": true
},
"utf-8-validate": {
"optional": true
}
}
}
}
}
+16
View File
@@ -0,0 +1,16 @@
{
"name": "pezkuwi-payout-bot",
"version": "1.0.0",
"private": true,
"description": "Payout bot: claims staking rewards for every validator in completed eras on Asset Hub",
"type": "commonjs",
"scripts": {
"start": "node bot.js"
},
"dependencies": {
"@pezkuwi/api": "^16.5.37",
"@pezkuwi/keyring": "^14.0.26",
"@pezkuwi/util": "^14.0.26",
"@pezkuwi/util-crypto": "^14.0.26"
}
}
+65
View File
@@ -0,0 +1,65 @@
// Runs from a bot's directory (in its image: mounted at /app/bot-smoke.mjs) and fails unless the
// installed crypto stack is the one package-lock.json records and can sign and
// verify with every key type. A stack that only loads is not enough: the broken
// @pezkuwi/wasm-crypto 7.5.17 loaded fine and failed at ed25519 and ecdsa.
//
// node bot-smoke.mjs <esm|cjs>
import fs from 'node:fs';
import { createRequire } from 'node:module';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
const mode = process.argv[2];
const require = createRequire(import.meta.url);
const dir = path.dirname(fileURLToPath(import.meta.url));
let failed = 0;
function check (name, ok, detail = '') {
console.log(`${ok ? 'ok ' : 'FAIL'} ${name}${detail ? ` (${detail})` : ''}`);
if (!ok) {
failed++;
}
}
const lock = JSON.parse(fs.readFileSync(path.join(dir, 'package-lock.json'), 'utf8'));
for (const name of ['@pezkuwi/wasm-crypto', '@pezkuwi/util-crypto', '@pezkuwi/api', '@pezkuwi/keyring']) {
const want = lock.packages[`node_modules/${name}`]?.version;
const have = JSON.parse(fs.readFileSync(path.join(dir, 'node_modules', name, 'package.json'), 'utf8')).version;
check(`${name} is the locked version`, !!want && want === have, `lock ${want}, installed ${have}`);
}
// Load the stack the way the bot does: the noter is an ES module, the payout
// bot is CommonJS.
const { Keyring } = mode === 'cjs' ? require('@pezkuwi/api') : await import('@pezkuwi/api');
const { cryptoWaitReady, mnemonicGenerate } = mode === 'cjs' ? require('@pezkuwi/util-crypto') : await import('@pezkuwi/util-crypto');
check('crypto initialises', await cryptoWaitReady());
try {
check('a mnemonic can be generated', mnemonicGenerate().split(' ').length === 12);
} catch (error) {
check('a mnemonic can be generated', false, error.message);
}
// Derived from the public development phrase, so the check needs no secret
// and does not depend on mnemonic generation working.
const message = new TextEncoder().encode('pezkuwi bot smoke');
for (const type of ['sr25519', 'ed25519', 'ecdsa']) {
try {
const pair = new Keyring({ type }).addFromUri('//Smoke');
const signature = pair.sign(message);
check(`${type} signs and verifies`, pair.verify(message, signature, pair.publicKey));
check(`${type} rejects a tampered message`, !pair.verify(new TextEncoder().encode('tampered'), signature, pair.publicKey));
} catch (error) {
check(`${type} signs and verifies`, false, error.message);
}
}
console.log(failed ? `FAILED: ${failed}` : 'all bot smoke checks passed');
process.exit(failed ? 1 : 0);