diff --git a/docker/Dockerfile.KuboRpc b/docker/Dockerfile.KuboRpc index 32dda2311c5afb5fdcd6d805a29000ced040e3aa..ae3fa49eb39a2541284eb4308bb371518bf616aa 100644 --- a/docker/Dockerfile.KuboRpc +++ b/docker/Dockerfile.KuboRpc @@ -1,6 +1,6 @@ # kubo config suited for unsafe remote RPC instance FROM ipfs/kubo:v0.32.1 -COPY ./scripts/configure-addresses.sh /container-init.d/001-configure.sh +COPY ./scripts/configure-rpc-addresses.sh /container-init.d/001-configure.sh COPY ./scripts/configure-bootstrap.sh /container-init.d/002-configure.sh COPY ./scripts/configure-peering.sh /container-init.d/003-configure.sh COPY ./scripts/configure-rpc-public.sh /container-init.d/004-configure.sh diff --git a/logo.png b/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..cfbe1faf31e9d6d43e5baba1d3fe94e180ce484b Binary files /dev/null and b/logo.png differ diff --git a/package.json b/package.json index 97dcfa1b3863fb1c510f40724f4723641e72acc5..3e409d15c09d307585c32854f6463aa749516cb1 100644 --- a/package.json +++ b/package.json @@ -18,8 +18,8 @@ "dependencies": { "@libp2p/peer-id": "^4.1.0", "@multiformats/multiaddr": "^12.2.1", - "@polkadot/util": "^12.6.2", - "@polkadot/util-crypto": "^12.6.2", + "@polkadot/util": "^13.2.3", + "@polkadot/util-crypto": "^13.2.3", "bs58": "^5.0.0", "kubo-rpc-client": "^4.1.1", "multiformats": "^13.1.0", @@ -27,6 +27,7 @@ }, "devDependencies": { "@libp2p/interface": "^1.3.0", + "@polkadot/keyring": "^13.2.3", "@rushstack/eslint-patch": "^1.10.2", "@tsconfig/node20": "^20.1.4", "@types/node": "^20.12.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 30416775ae4d99ba4183c6abcc7084f596b29d3f..36935892203fa004df99aba2b8b4383604443ee2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,11 +15,11 @@ importers: specifier: ^12.2.1 version: 12.2.1 '@polkadot/util': - specifier: ^12.6.2 - version: 12.6.2 + specifier: ^13.2.3 + version: 13.2.3 '@polkadot/util-crypto': - specifier: ^12.6.2 - version: 12.6.2(@polkadot/util@12.6.2) + specifier: ^13.2.3 + version: 13.2.3(@polkadot/util@13.2.3) bs58: specifier: ^5.0.0 version: 5.0.0 @@ -36,6 +36,9 @@ importers: '@libp2p/interface': specifier: ^1.3.0 version: 1.3.0 + '@polkadot/keyring': + specifier: ^13.2.3 + version: 13.2.3(@polkadot/util-crypto@13.2.3(@polkadot/util@13.2.3))(@polkadot/util@13.2.3) '@rushstack/eslint-patch': specifier: ^1.10.2 version: 1.10.2 @@ -423,6 +426,7 @@ packages: '@humanwhocodes/config-array@0.11.14': resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} @@ -430,6 +434,7 @@ packages: '@humanwhocodes/object-schema@2.0.3': resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead '@ipld/dag-cbor@9.2.0': resolution: {integrity: sha512-N14oMy0q4gM6OuZkIpisKe0JBSjf1Jb39VI+7jMLiWX9124u1Z3Fdj/Tag1NA0cVxxqWDh0CqsjcVfOKtelPDA==} @@ -490,80 +495,87 @@ packages: resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@polkadot/networks@12.6.2': - resolution: {integrity: sha512-1oWtZm1IvPWqvMrldVH6NI2gBoCndl5GEwx7lAuQWGr7eNL+6Bdc5K3Z9T0MzFvDGoi2/CBqjX9dRKo39pDC/w==} + '@polkadot/keyring@13.2.3': + resolution: {integrity: sha512-pgTo6DXNXub0wGD+MnVHYhKxf80Jl+QMOCb818ioGdXz++Uw4mTueFAwtB+N7TGo0HafhChUiNJDxFdlDkcAng==} + engines: {node: '>=18'} + peerDependencies: + '@polkadot/util': 13.2.3 + '@polkadot/util-crypto': 13.2.3 + + '@polkadot/networks@13.2.3': + resolution: {integrity: sha512-mG+zkXg/33AyPrkv2xBbAo3LBUwOwBn6qznBU/4jxiZPnVvCwMaxE7xHM22B5riItbNJ169FXv3wy0v6ZmkFbw==} engines: {node: '>=18'} - '@polkadot/util-crypto@12.6.2': - resolution: {integrity: sha512-FEWI/dJ7wDMNN1WOzZAjQoIcCP/3vz3wvAp5QQm+lOrzOLj0iDmaIGIcBkz8HVm3ErfSe/uKP0KS4jgV/ib+Mg==} + '@polkadot/util-crypto@13.2.3': + resolution: {integrity: sha512-5sbggmLbn5eiuVMyPROPlT5roHRqdKHOfSpioNbGvGIZ1qIWVoC1RfsK0NWJOVGDzy6DpQe0KYT/kgcU5Xsrzw==} engines: {node: '>=18'} peerDependencies: - '@polkadot/util': 12.6.2 + '@polkadot/util': 13.2.3 - '@polkadot/util@12.6.2': - resolution: {integrity: sha512-l8TubR7CLEY47240uki0TQzFvtnxFIO7uI/0GoWzpYD/O62EIAMRsuY01N4DuwgKq2ZWD59WhzsLYmA5K6ksdw==} + '@polkadot/util@13.2.3': + resolution: {integrity: sha512-pioNnsig3qHXrfOKMe4Yqos8B8N3/EZUpS+WfTpWnn1VjYban/0GrTXeavPlAwggnY27b8fS6rBzQBhnVYDw8g==} engines: {node: '>=18'} - '@polkadot/wasm-bridge@7.3.2': - resolution: {integrity: sha512-AJEXChcf/nKXd5Q/YLEV5dXQMle3UNT7jcXYmIffZAo/KI394a+/24PaISyQjoNC0fkzS1Q8T5pnGGHmXiVz2g==} + '@polkadot/wasm-bridge@7.4.1': + resolution: {integrity: sha512-tdkJaV453tezBxhF39r4oeG0A39sPKGDJmN81LYLf+Fihb7astzwju+u75BRmDrHZjZIv00un3razJEWCxze6g==} engines: {node: '>=18'} peerDependencies: '@polkadot/util': '*' '@polkadot/x-randomvalues': '*' - '@polkadot/wasm-crypto-asmjs@7.3.2': - resolution: {integrity: sha512-QP5eiUqUFur/2UoF2KKKYJcesc71fXhQFLT3D4ZjG28Mfk2ZPI0QNRUfpcxVQmIUpV5USHg4geCBNuCYsMm20Q==} + '@polkadot/wasm-crypto-asmjs@7.4.1': + resolution: {integrity: sha512-pwU8QXhUW7IberyHJIQr37IhbB6DPkCG5FhozCiNTq4vFBsFPjm9q8aZh7oX1QHQaiAZa2m2/VjIVE+FHGbvHQ==} engines: {node: '>=18'} peerDependencies: '@polkadot/util': '*' - '@polkadot/wasm-crypto-init@7.3.2': - resolution: {integrity: sha512-FPq73zGmvZtnuJaFV44brze3Lkrki3b4PebxCy9Fplw8nTmisKo9Xxtfew08r0njyYh+uiJRAxPCXadkC9sc8g==} + '@polkadot/wasm-crypto-init@7.4.1': + resolution: {integrity: sha512-AVka33+f7MvXEEIGq5U0dhaA2SaXMXnxVCQyhJTaCnJ5bRDj0Xlm3ijwDEQUiaDql7EikbkkRtmlvs95eSUWYQ==} engines: {node: '>=18'} peerDependencies: '@polkadot/util': '*' '@polkadot/x-randomvalues': '*' - '@polkadot/wasm-crypto-wasm@7.3.2': - resolution: {integrity: sha512-15wd0EMv9IXs5Abp1ZKpKKAVyZPhATIAHfKsyoWCEFDLSOA0/K0QGOxzrAlsrdUkiKZOq7uzSIgIDgW8okx2Mw==} + '@polkadot/wasm-crypto-wasm@7.4.1': + resolution: {integrity: sha512-PE1OAoupFR0ZOV2O8tr7D1FEUAwaggzxtfs3Aa5gr+yxlSOaWUKeqsOYe1KdrcjmZVV3iINEAXxgrbzCmiuONg==} engines: {node: '>=18'} peerDependencies: '@polkadot/util': '*' - '@polkadot/wasm-crypto@7.3.2': - resolution: {integrity: sha512-+neIDLSJ6jjVXsjyZ5oLSv16oIpwp+PxFqTUaZdZDoA2EyFRQB8pP7+qLsMNk+WJuhuJ4qXil/7XiOnZYZ+wxw==} + '@polkadot/wasm-crypto@7.4.1': + resolution: {integrity: sha512-kHN/kF7hYxm1y0WeFLWeWir6oTzvcFmR4N8fJJokR+ajYbdmrafPN+6iLgQVbhZnDdxyv9jWDuRRsDnBx8tPMQ==} engines: {node: '>=18'} peerDependencies: '@polkadot/util': '*' '@polkadot/x-randomvalues': '*' - '@polkadot/wasm-util@7.3.2': - resolution: {integrity: sha512-bmD+Dxo1lTZyZNxbyPE380wd82QsX+43mgCm40boyKrRppXEyQmWT98v/Poc7chLuskYb6X8IQ6lvvK2bGR4Tg==} + '@polkadot/wasm-util@7.4.1': + resolution: {integrity: sha512-RAcxNFf3zzpkr+LX/ItAsvj+QyM56TomJ0xjUMo4wKkHjwsxkz4dWJtx5knIgQz/OthqSDMR59VNEycQeNuXzA==} engines: {node: '>=18'} peerDependencies: '@polkadot/util': '*' - '@polkadot/x-bigint@12.6.2': - resolution: {integrity: sha512-HSIk60uFPX4GOFZSnIF7VYJz7WZA7tpFJsne7SzxOooRwMTWEtw3fUpFy5cYYOeLh17/kHH1Y7SVcuxzVLc74Q==} + '@polkadot/x-bigint@13.2.3': + resolution: {integrity: sha512-VKgEAh0LsxTd/Hg517Tt5ZU4CySjBwMpaojbkjgv3fOdg1cN7t4eFEUxpyj7mlO0cp22SzDh7nmy4TO98qhLQA==} engines: {node: '>=18'} - '@polkadot/x-global@12.6.2': - resolution: {integrity: sha512-a8d6m+PW98jmsYDtAWp88qS4dl8DyqUBsd0S+WgyfSMtpEXu6v9nXDgPZgwF5xdDvXhm+P0ZfVkVTnIGrScb5g==} + '@polkadot/x-global@13.2.3': + resolution: {integrity: sha512-7MYQIAEwBkRcNrgqac5PbB0kNPlI6ISJEy6/Nb+crj8BFjQ8rf11PF49fq0QsvDeuYM1aNLigrvYZNptQs4lbw==} engines: {node: '>=18'} - '@polkadot/x-randomvalues@12.6.2': - resolution: {integrity: sha512-Vr8uG7rH2IcNJwtyf5ebdODMcr0XjoCpUbI91Zv6AlKVYOGKZlKLYJHIwpTaKKB+7KPWyQrk4Mlym/rS7v9feg==} + '@polkadot/x-randomvalues@13.2.3': + resolution: {integrity: sha512-Zf0GTfLmVk+VzPUmcQSpXjjmFzMTjPhXoLuIoE7xIu73T+vQ+TX9j7DvorN6bIRsnZ9l1SyTZsSf/NTjNZKIZg==} engines: {node: '>=18'} peerDependencies: - '@polkadot/util': 12.6.2 + '@polkadot/util': 13.2.3 '@polkadot/wasm-util': '*' - '@polkadot/x-textdecoder@12.6.2': - resolution: {integrity: sha512-M1Bir7tYvNappfpFWXOJcnxUhBUFWkUFIdJSyH0zs5LmFtFdbKAeiDXxSp2Swp5ddOZdZgPac294/o2TnQKN1w==} + '@polkadot/x-textdecoder@13.2.3': + resolution: {integrity: sha512-i8hRXPtGknmdm3FYv6/94I52VXHJZa5sgYNw1+Hqb4Jqmq4awUjea35CKXd/+aw70Qn8Ngg31l2GoiH494fa+Q==} engines: {node: '>=18'} - '@polkadot/x-textencoder@12.6.2': - resolution: {integrity: sha512-4N+3UVCpI489tUJ6cv3uf0PjOHvgGp9Dl+SZRLgFGt9mvxnvpW/7+XBADRMtlG4xi5gaRK7bgl5bmY6OMDsNdw==} + '@polkadot/x-textencoder@13.2.3': + resolution: {integrity: sha512-wJI3Bb/dC4zyBXJFm5+ZhyBXWoI5wvP8k8qX0/ZC0PQsgSAqs7LVhiofk4Wd94n0P41W5re58LrGXLyziSAshw==} engines: {node: '>=18'} '@rollup/rollup-android-arm-eabi@4.16.4': @@ -649,17 +661,17 @@ packages: '@rushstack/eslint-patch@1.10.2': resolution: {integrity: sha512-hw437iINopmQuxWPSUEvqE56NCPsiU8N4AYtfHmJFckclktzK9YQJieD3XkDCDH4OjL+C7zgPUh73R/nrcHrqw==} - '@scure/base@1.1.6': - resolution: {integrity: sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g==} + '@scure/base@1.2.1': + resolution: {integrity: sha512-DGmGtC8Tt63J5GfHgfl5CuAXh96VF/LD8K9Hr/Gv0J2lAoRGlPOMpqMpMbCTOoOJMZCk2Xt+DskdDyn6dEFdzQ==} - '@substrate/ss58-registry@1.47.0': - resolution: {integrity: sha512-6kuIJedRcisUJS2pgksEH2jZf3hfSIVzqtFzs/AyjTW3ETbMg5q1Bb7VWa0WYaT6dTrEXp/6UoXM5B9pSIUmcw==} + '@substrate/ss58-registry@1.51.0': + resolution: {integrity: sha512-TWDurLiPxndFgKjVavCniytBIw+t4ViOi7TYp9h/D0NMmkEc9klFTo+827eyEJ0lELpqO207Ey7uGxUa+BS1jQ==} '@tsconfig/node20@20.1.4': resolution: {integrity: sha512-sqgsT69YFeLWf5NtJ4Xq/xAF8p4ZQHlmGW74Nu2tD4+g5fAsposc4ZfaaPixVu4y01BEiDCWLRDCvDM5JOsRxg==} - '@types/bn.js@5.1.5': - resolution: {integrity: sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==} + '@types/bn.js@5.1.6': + resolution: {integrity: sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==} '@types/dns-packet@5.6.5': resolution: {integrity: sha512-qXOC7XLOEe43ehtWJCMnQXvgcIpv6rPmQ1jXT98Ad8A3TB1Ue50jsCbSSSyuazScEuZ/Q026vHbrOTVkmwA+7Q==} @@ -1042,6 +1054,7 @@ packages: eslint@8.57.0: resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. hasBin: true espree@9.6.1: @@ -1144,6 +1157,7 @@ packages: glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported globals@13.24.0: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} @@ -1197,6 +1211,7 @@ packages: inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -1593,6 +1608,7 @@ packages: rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true rollup@4.16.4: @@ -1680,8 +1696,8 @@ packages: peerDependencies: typescript: '>=4.2.0' - tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} tsx@4.7.3: resolution: {integrity: sha512-+fQnMqIp/jxZEXLcj6WzYy9FhcS5/Dfk8y4AtzJ6ejKcKqmfTF8Gso/jtrzDggCF2zTU20gJa6n8XqPYwDAUYQ==} @@ -2090,104 +2106,110 @@ snapshots: '@pkgr/core@0.1.1': {} - '@polkadot/networks@12.6.2': + '@polkadot/keyring@13.2.3(@polkadot/util-crypto@13.2.3(@polkadot/util@13.2.3))(@polkadot/util@13.2.3)': + dependencies: + '@polkadot/util': 13.2.3 + '@polkadot/util-crypto': 13.2.3(@polkadot/util@13.2.3) + tslib: 2.8.1 + + '@polkadot/networks@13.2.3': dependencies: - '@polkadot/util': 12.6.2 - '@substrate/ss58-registry': 1.47.0 - tslib: 2.6.2 + '@polkadot/util': 13.2.3 + '@substrate/ss58-registry': 1.51.0 + tslib: 2.8.1 - '@polkadot/util-crypto@12.6.2(@polkadot/util@12.6.2)': + '@polkadot/util-crypto@13.2.3(@polkadot/util@13.2.3)': dependencies: '@noble/curves': 1.4.0 '@noble/hashes': 1.4.0 - '@polkadot/networks': 12.6.2 - '@polkadot/util': 12.6.2 - '@polkadot/wasm-crypto': 7.3.2(@polkadot/util@12.6.2)(@polkadot/x-randomvalues@12.6.2(@polkadot/util@12.6.2)(@polkadot/wasm-util@7.3.2(@polkadot/util@12.6.2))) - '@polkadot/wasm-util': 7.3.2(@polkadot/util@12.6.2) - '@polkadot/x-bigint': 12.6.2 - '@polkadot/x-randomvalues': 12.6.2(@polkadot/util@12.6.2)(@polkadot/wasm-util@7.3.2(@polkadot/util@12.6.2)) - '@scure/base': 1.1.6 - tslib: 2.6.2 - - '@polkadot/util@12.6.2': - dependencies: - '@polkadot/x-bigint': 12.6.2 - '@polkadot/x-global': 12.6.2 - '@polkadot/x-textdecoder': 12.6.2 - '@polkadot/x-textencoder': 12.6.2 - '@types/bn.js': 5.1.5 + '@polkadot/networks': 13.2.3 + '@polkadot/util': 13.2.3 + '@polkadot/wasm-crypto': 7.4.1(@polkadot/util@13.2.3)(@polkadot/x-randomvalues@13.2.3(@polkadot/util@13.2.3)(@polkadot/wasm-util@7.4.1(@polkadot/util@13.2.3))) + '@polkadot/wasm-util': 7.4.1(@polkadot/util@13.2.3) + '@polkadot/x-bigint': 13.2.3 + '@polkadot/x-randomvalues': 13.2.3(@polkadot/util@13.2.3)(@polkadot/wasm-util@7.4.1(@polkadot/util@13.2.3)) + '@scure/base': 1.2.1 + tslib: 2.8.1 + + '@polkadot/util@13.2.3': + dependencies: + '@polkadot/x-bigint': 13.2.3 + '@polkadot/x-global': 13.2.3 + '@polkadot/x-textdecoder': 13.2.3 + '@polkadot/x-textencoder': 13.2.3 + '@types/bn.js': 5.1.6 bn.js: 5.2.1 - tslib: 2.6.2 + tslib: 2.8.1 - '@polkadot/wasm-bridge@7.3.2(@polkadot/util@12.6.2)(@polkadot/x-randomvalues@12.6.2(@polkadot/util@12.6.2)(@polkadot/wasm-util@7.3.2(@polkadot/util@12.6.2)))': + '@polkadot/wasm-bridge@7.4.1(@polkadot/util@13.2.3)(@polkadot/x-randomvalues@13.2.3(@polkadot/util@13.2.3)(@polkadot/wasm-util@7.4.1(@polkadot/util@13.2.3)))': dependencies: - '@polkadot/util': 12.6.2 - '@polkadot/wasm-util': 7.3.2(@polkadot/util@12.6.2) - '@polkadot/x-randomvalues': 12.6.2(@polkadot/util@12.6.2)(@polkadot/wasm-util@7.3.2(@polkadot/util@12.6.2)) - tslib: 2.6.2 + '@polkadot/util': 13.2.3 + '@polkadot/wasm-util': 7.4.1(@polkadot/util@13.2.3) + '@polkadot/x-randomvalues': 13.2.3(@polkadot/util@13.2.3)(@polkadot/wasm-util@7.4.1(@polkadot/util@13.2.3)) + tslib: 2.8.1 - '@polkadot/wasm-crypto-asmjs@7.3.2(@polkadot/util@12.6.2)': + '@polkadot/wasm-crypto-asmjs@7.4.1(@polkadot/util@13.2.3)': dependencies: - '@polkadot/util': 12.6.2 - tslib: 2.6.2 + '@polkadot/util': 13.2.3 + tslib: 2.8.1 - '@polkadot/wasm-crypto-init@7.3.2(@polkadot/util@12.6.2)(@polkadot/x-randomvalues@12.6.2(@polkadot/util@12.6.2)(@polkadot/wasm-util@7.3.2(@polkadot/util@12.6.2)))': + '@polkadot/wasm-crypto-init@7.4.1(@polkadot/util@13.2.3)(@polkadot/x-randomvalues@13.2.3(@polkadot/util@13.2.3)(@polkadot/wasm-util@7.4.1(@polkadot/util@13.2.3)))': dependencies: - '@polkadot/util': 12.6.2 - '@polkadot/wasm-bridge': 7.3.2(@polkadot/util@12.6.2)(@polkadot/x-randomvalues@12.6.2(@polkadot/util@12.6.2)(@polkadot/wasm-util@7.3.2(@polkadot/util@12.6.2))) - '@polkadot/wasm-crypto-asmjs': 7.3.2(@polkadot/util@12.6.2) - '@polkadot/wasm-crypto-wasm': 7.3.2(@polkadot/util@12.6.2) - '@polkadot/wasm-util': 7.3.2(@polkadot/util@12.6.2) - '@polkadot/x-randomvalues': 12.6.2(@polkadot/util@12.6.2)(@polkadot/wasm-util@7.3.2(@polkadot/util@12.6.2)) - tslib: 2.6.2 + '@polkadot/util': 13.2.3 + '@polkadot/wasm-bridge': 7.4.1(@polkadot/util@13.2.3)(@polkadot/x-randomvalues@13.2.3(@polkadot/util@13.2.3)(@polkadot/wasm-util@7.4.1(@polkadot/util@13.2.3))) + '@polkadot/wasm-crypto-asmjs': 7.4.1(@polkadot/util@13.2.3) + '@polkadot/wasm-crypto-wasm': 7.4.1(@polkadot/util@13.2.3) + '@polkadot/wasm-util': 7.4.1(@polkadot/util@13.2.3) + '@polkadot/x-randomvalues': 13.2.3(@polkadot/util@13.2.3)(@polkadot/wasm-util@7.4.1(@polkadot/util@13.2.3)) + tslib: 2.8.1 - '@polkadot/wasm-crypto-wasm@7.3.2(@polkadot/util@12.6.2)': + '@polkadot/wasm-crypto-wasm@7.4.1(@polkadot/util@13.2.3)': dependencies: - '@polkadot/util': 12.6.2 - '@polkadot/wasm-util': 7.3.2(@polkadot/util@12.6.2) - tslib: 2.6.2 + '@polkadot/util': 13.2.3 + '@polkadot/wasm-util': 7.4.1(@polkadot/util@13.2.3) + tslib: 2.8.1 - '@polkadot/wasm-crypto@7.3.2(@polkadot/util@12.6.2)(@polkadot/x-randomvalues@12.6.2(@polkadot/util@12.6.2)(@polkadot/wasm-util@7.3.2(@polkadot/util@12.6.2)))': + '@polkadot/wasm-crypto@7.4.1(@polkadot/util@13.2.3)(@polkadot/x-randomvalues@13.2.3(@polkadot/util@13.2.3)(@polkadot/wasm-util@7.4.1(@polkadot/util@13.2.3)))': dependencies: - '@polkadot/util': 12.6.2 - '@polkadot/wasm-bridge': 7.3.2(@polkadot/util@12.6.2)(@polkadot/x-randomvalues@12.6.2(@polkadot/util@12.6.2)(@polkadot/wasm-util@7.3.2(@polkadot/util@12.6.2))) - '@polkadot/wasm-crypto-asmjs': 7.3.2(@polkadot/util@12.6.2) - '@polkadot/wasm-crypto-init': 7.3.2(@polkadot/util@12.6.2)(@polkadot/x-randomvalues@12.6.2(@polkadot/util@12.6.2)(@polkadot/wasm-util@7.3.2(@polkadot/util@12.6.2))) - '@polkadot/wasm-crypto-wasm': 7.3.2(@polkadot/util@12.6.2) - '@polkadot/wasm-util': 7.3.2(@polkadot/util@12.6.2) - '@polkadot/x-randomvalues': 12.6.2(@polkadot/util@12.6.2)(@polkadot/wasm-util@7.3.2(@polkadot/util@12.6.2)) - tslib: 2.6.2 + '@polkadot/util': 13.2.3 + '@polkadot/wasm-bridge': 7.4.1(@polkadot/util@13.2.3)(@polkadot/x-randomvalues@13.2.3(@polkadot/util@13.2.3)(@polkadot/wasm-util@7.4.1(@polkadot/util@13.2.3))) + '@polkadot/wasm-crypto-asmjs': 7.4.1(@polkadot/util@13.2.3) + '@polkadot/wasm-crypto-init': 7.4.1(@polkadot/util@13.2.3)(@polkadot/x-randomvalues@13.2.3(@polkadot/util@13.2.3)(@polkadot/wasm-util@7.4.1(@polkadot/util@13.2.3))) + '@polkadot/wasm-crypto-wasm': 7.4.1(@polkadot/util@13.2.3) + '@polkadot/wasm-util': 7.4.1(@polkadot/util@13.2.3) + '@polkadot/x-randomvalues': 13.2.3(@polkadot/util@13.2.3)(@polkadot/wasm-util@7.4.1(@polkadot/util@13.2.3)) + tslib: 2.8.1 - '@polkadot/wasm-util@7.3.2(@polkadot/util@12.6.2)': + '@polkadot/wasm-util@7.4.1(@polkadot/util@13.2.3)': dependencies: - '@polkadot/util': 12.6.2 - tslib: 2.6.2 + '@polkadot/util': 13.2.3 + tslib: 2.8.1 - '@polkadot/x-bigint@12.6.2': + '@polkadot/x-bigint@13.2.3': dependencies: - '@polkadot/x-global': 12.6.2 - tslib: 2.6.2 + '@polkadot/x-global': 13.2.3 + tslib: 2.8.1 - '@polkadot/x-global@12.6.2': + '@polkadot/x-global@13.2.3': dependencies: - tslib: 2.6.2 + tslib: 2.8.1 - '@polkadot/x-randomvalues@12.6.2(@polkadot/util@12.6.2)(@polkadot/wasm-util@7.3.2(@polkadot/util@12.6.2))': + '@polkadot/x-randomvalues@13.2.3(@polkadot/util@13.2.3)(@polkadot/wasm-util@7.4.1(@polkadot/util@13.2.3))': dependencies: - '@polkadot/util': 12.6.2 - '@polkadot/wasm-util': 7.3.2(@polkadot/util@12.6.2) - '@polkadot/x-global': 12.6.2 - tslib: 2.6.2 + '@polkadot/util': 13.2.3 + '@polkadot/wasm-util': 7.4.1(@polkadot/util@13.2.3) + '@polkadot/x-global': 13.2.3 + tslib: 2.8.1 - '@polkadot/x-textdecoder@12.6.2': + '@polkadot/x-textdecoder@13.2.3': dependencies: - '@polkadot/x-global': 12.6.2 - tslib: 2.6.2 + '@polkadot/x-global': 13.2.3 + tslib: 2.8.1 - '@polkadot/x-textencoder@12.6.2': + '@polkadot/x-textencoder@13.2.3': dependencies: - '@polkadot/x-global': 12.6.2 - tslib: 2.6.2 + '@polkadot/x-global': 13.2.3 + tslib: 2.8.1 '@rollup/rollup-android-arm-eabi@4.16.4': optional: true @@ -2239,13 +2261,13 @@ snapshots: '@rushstack/eslint-patch@1.10.2': {} - '@scure/base@1.1.6': {} + '@scure/base@1.2.1': {} - '@substrate/ss58-registry@1.47.0': {} + '@substrate/ss58-registry@1.51.0': {} '@tsconfig/node20@20.1.4': {} - '@types/bn.js@5.1.5': + '@types/bn.js@5.1.6': dependencies: '@types/node': 20.12.7 @@ -3353,7 +3375,7 @@ snapshots: synckit@0.8.8: dependencies: '@pkgr/core': 0.1.1 - tslib: 2.6.2 + tslib: 2.8.1 text-table@0.2.0: {} @@ -3367,7 +3389,7 @@ snapshots: dependencies: typescript: 5.4.5 - tslib@2.6.2: {} + tslib@2.8.1: {} tsx@4.7.3: dependencies: diff --git a/scripts/configure-rpc-addresses.sh b/scripts/configure-rpc-addresses.sh new file mode 100644 index 0000000000000000000000000000000000000000..7d078d0ffb3319b2e56a0c4fce9a598d43adee1f --- /dev/null +++ b/scripts/configure-rpc-addresses.sh @@ -0,0 +1,19 @@ +#!/bin/sh +set -ex + +# --- addresses --- +# enable p2p, quic, webtransport, webrtc +# ipfs config Swarm.Transports.Network.Websocket --json true +# internal port is always 4001 +ipfs config Addresses.Swarm --json '[ + "/ip4/0.0.0.0/tcp/4001", + "/ip6/::/tcp/4001", + "/ip4/0.0.0.0/udp/4001/quic-v1", + "/ip6/::/udp/4001/quic-v1" +]' +# configure the addresses to announce +# KUBO_PORT is external port mapped in docker compose to 4001 +ipfs config Addresses.Announce --json "[ + \"/dns/$KUBO_DOMAIN/tcp/$KUBO_PORT\", + \"/dns/$KUBO_DOMAIN/udp/$KUBO_PORT/quic-v1\" +]" diff --git a/src/scripts/datapod-profile-example.ts b/src/scripts/datapod-profile-example.ts new file mode 100644 index 0000000000000000000000000000000000000000..014f8493623eb3c059cc6213b4901354c4812365 --- /dev/null +++ b/src/scripts/datapod-profile-example.ts @@ -0,0 +1,79 @@ +// This script shows a minimal working example to publish a datapod profile + +import { readFileSync } from 'fs' +import { CESIUM_PLUS_PROFILE_INSERT } from '../consts' +import type { IndexRequest } from '../types' +import { create } from 'kubo-rpc-client' +import type { ImportCandidate, KuboRPCClient } from 'kubo-rpc-client' +import { buildStringPayload } from '../collector' +import { Keyring } from '@polkadot/keyring' +import { u8aToHex } from '@polkadot/util' + +// This public Kubo node exposes features necessary to upload data and relay to datapod network +// This is a simple alternative to embedding an ipfs node when it is not possible or suited +const KUBO_RPC = 'https://rpc.datapod.gyroi.de/' + +const kubo: KuboRPCClient = create({ + url: new URL(KUBO_RPC) +}) + +async function main() { + // 0. keyring + const keyring = new Keyring({ type: 'ed25519', ss58Format: 42 }) + const alice = keyring.addFromUri('//Alice') + + // 1. profile picture + // simply get image as buffer for demo + const img = getImage() + // upload the image and get its CID + const img_cid = (await kubo.add(img)).cid + + // 2. profile + // build the profile + const data = { title: 'Alice Example', description: 'This is a demo', avatar: img_cid } + // upload the profile and get its CID + const data_cid = await kubo.dag.put(data) + + // 3. partial index request + // build the index request + const ir: IndexRequest = { + pubkey: alice.address, + time: Date.now(), + kind: CESIUM_PLUS_PROFILE_INSERT, + data: data_cid, + sig: null + } + + // 4. signature + // define the binary payload + const payload = buildStringPayload(ir) + // sign the payload + const signature = alice.sign(payload) + // put signature in partial index request + ir.sig = u8aToHex(signature) + + // 5. index request + // upload index request + const ir_cid = await kubo.dag.put(ir) + + // 6. broadcast index request CID on pubsub + const enc = new TextEncoder() + await kubo.pubsub.publish('ddd', enc.encode(ir_cid.toString() + '\n')) + + console.log(`➡️ published ${ir_cid} on pubsub`) + console.log('➡️ corresponding to the following index request') + console.log(ir) + console.log('➡️ that has the given profile') + console.log(data) + console.log('➡️ you can visit the following link to confirm that data has been indexed') + console.log('https://duniter--vue-coinduf-eu.ipns.pagu.re/#/data/' + alice.address) +} + +main() + +// get image for demo purpose +function getImage(): ImportCandidate { + const buffer = readFileSync('logo.png') + const bytearray = new Uint8Array(buffer) + return { content: bytearray } +}