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

+10 -6
View File
@@ -1,9 +1,13 @@
FROM node:20-alpine
FROM node:24-alpine
WORKDIR /app
RUN npm install \
@pezkuwi/api@^16.5.36 \
@pezkuwi/keyring@^14.0.25 \
@pezkuwi/util@^14.0.25 \
@pezkuwi/util-crypto@^14.0.25
# Install exactly what package-lock.json records, so the image runs the
# versions that were reviewed and tested rather than whatever the ranges
# resolve to on the day it is built.
COPY package.json package-lock.json ./
RUN npm ci --omit=dev --no-audit --no-fund
COPY 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"
}
}