From d41d20cc81619bb6ee0d8474568a2a2e780ad8e0 Mon Sep 17 00:00:00 2001 From: Chris Troutner Date: Fri, 26 Jan 2024 19:52:55 -0800 Subject: [PATCH 01/10] prototyping keychain example --- package-lock.json | 362 ++++++++++++++++++++++++-------------- package.json | 2 + src/adapters/ipfs/ipfs.js | 19 ++ 3 files changed, 251 insertions(+), 132 deletions(-) diff --git a/package-lock.json b/package-lock.json index f011c81..f26c12e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,8 @@ "@libp2p/bootstrap": "10.0.7", "@libp2p/circuit-relay-v2": "1.0.7", "@libp2p/identify": "1.0.6", + "@libp2p/keychain": "4.0.7", + "@libp2p/logger": "4.0.5", "@libp2p/tcp": "9.0.7", "axios": "0.27.2", "bcryptjs": "2.4.3", @@ -1254,15 +1256,16 @@ } }, "node_modules/@libp2p/interface": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-1.0.2.tgz", - "integrity": "sha512-z/3Yyg+7cVyzRXwzdrDkJd7YmNaLE9iZjQaixo5luI/n9uk5OFFjb9ulAsNqpq8V1xylCo2DXIC7f94KClwzVw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-1.1.2.tgz", + "integrity": "sha512-uC4hxtEJuWiDiZfokkSNEEbCzdyZrqb5kp67Wc5PjZsySZ2IoImdIfie003yQXlB1xBp/XUJzdC6kVu4M7LUmg==", "dependencies": { "@multiformats/multiaddr": "^12.1.10", - "it-pushable": "^3.2.1", + "it-pushable": "^3.2.3", "it-stream-types": "^2.0.1", - "multiformats": "^12.1.3", - "uint8arraylist": "^2.4.3" + "multiformats": "^13.0.0", + "progress-events": "^1.0.0", + "uint8arraylist": "^2.4.7" } }, "node_modules/@libp2p/interface-internal": { @@ -1276,6 +1279,11 @@ "uint8arraylist": "^2.4.3" } }, + "node_modules/@libp2p/interface/node_modules/multiformats": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.0.1.tgz", + "integrity": "sha512-bt3R5iXe2O8xpp3wkmQhC73b/lC4S2ihU8Dndwcsysqbydqb8N+bpP116qMcClZ17g58iSIwtXUTcg2zT4sniA==" + }, "node_modules/@libp2p/kad-dht": { "version": "10.0.15", "resolved": "https://registry.npmjs.org/@libp2p/kad-dht/-/kad-dht-10.0.15.tgz", @@ -1391,84 +1399,65 @@ } }, "node_modules/@libp2p/keychain": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@libp2p/keychain/-/keychain-3.0.8.tgz", - "integrity": "sha512-+WmW9bN9WE0uKqTG3DVk+zsd9Np63lLS+uYRhncwCGTvg0HKXq1t+i4Xd8KbZvUv7UVakE8aae1oMezW3nS+2g==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@libp2p/keychain/-/keychain-4.0.7.tgz", + "integrity": "sha512-zWNv0SbHgFSFbvSqnK2uCIEmXGzk/HCGJtCUQCx3c0dWg/z/rPZD8oAx9rCA5eU1cjlfwXxrH1h4fDNlyBQt1w==", "dependencies": { - "@libp2p/crypto": "^2.0.8", - "@libp2p/interface": "^0.1.6", - "@libp2p/logger": "^3.1.0", - "@libp2p/peer-id": "^3.0.6", + "@libp2p/crypto": "^4.0.1", + "@libp2p/interface": "^1.1.2", + "@libp2p/peer-id": "^4.0.5", "interface-datastore": "^8.2.0", "merge-options": "^3.0.4", + "multiformats": "^13.0.0", "sanitize-filename": "^1.6.3", - "uint8arrays": "^4.0.6" + "uint8arrays": "^5.0.0" } }, "node_modules/@libp2p/keychain/node_modules/@libp2p/crypto": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-2.0.8.tgz", - "integrity": "sha512-8e5fh6bsJNpSjhrggtlm8QF+BERjelJswIjRS69aKgxp24R4z2kDM4pRYPkfQjXJDLNDtqWtKNmePgX23+QJsA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-4.0.1.tgz", + "integrity": "sha512-lKGbX8TvQt4JbqlttdexEz2VtYJnTwY31kVBDQviwt0pMF+6Uy2hzNnEQ1FHZBwnow8BIlyb6UevHfgyOFlnkw==", "dependencies": { - "@libp2p/interface": "^0.1.6", + "@libp2p/interface": "^1.1.2", "@noble/curves": "^1.1.0", - "@noble/hashes": "^1.3.1", - "multiformats": "^12.0.1", - "node-forge": "^1.1.0", + "@noble/hashes": "^1.3.3", + "asn1js": "^3.0.5", + "multiformats": "^13.0.0", "protons-runtime": "^5.0.0", - "uint8arraylist": "^2.4.3", - "uint8arrays": "^4.0.6" + "uint8arraylist": "^2.4.7", + "uint8arrays": "^5.0.0" } }, - "node_modules/@libp2p/keychain/node_modules/@libp2p/interface": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-0.1.6.tgz", - "integrity": "sha512-Lzc5cS/hXuoXhuAbVIxJIHLCYmfPcbU0vVgrpMoiP1Qb2Q3ETU4A46GB8s8mWXgSU6tr9RcqerUqzFYD6+OAag==", - "dependencies": { - "@multiformats/multiaddr": "^12.1.5", - "abortable-iterator": "^5.0.1", - "it-pushable": "^3.2.0", - "it-stream-types": "^2.0.1", - "multiformats": "^12.0.1", - "p-defer": "^4.0.0", - "race-signal": "^1.0.0", - "uint8arraylist": "^2.4.3" - } + "node_modules/@libp2p/keychain/node_modules/multiformats": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.0.1.tgz", + "integrity": "sha512-bt3R5iXe2O8xpp3wkmQhC73b/lC4S2ihU8Dndwcsysqbydqb8N+bpP116qMcClZ17g58iSIwtXUTcg2zT4sniA==" }, - "node_modules/@libp2p/keychain/node_modules/@libp2p/logger": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-3.1.0.tgz", - "integrity": "sha512-qJbJBAhxHVsRBtQSOIkSLi0lskUSFjzE+zm0QvoyxzZKSz+mX41mZLbnofPIVOVauoDQ40dXpe7WDUOq8AbiQQ==", + "node_modules/@libp2p/keychain/node_modules/uint8arrays": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.0.1.tgz", + "integrity": "sha512-ND5RpJAnPgHmZT7hWD/2T4BwRp04j8NLKvMKC/7bhiEwEjUMkQ4kvBKiH6hOqbljd6qJ2xS8reL3vl1e33grOQ==", "dependencies": { - "@libp2p/interface": "^0.1.6", - "@multiformats/multiaddr": "^12.1.5", - "debug": "^4.3.4", - "interface-datastore": "^8.2.0", - "multiformats": "^12.0.1" - } - }, - "node_modules/@libp2p/keychain/node_modules/@libp2p/peer-id": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-3.0.6.tgz", - "integrity": "sha512-iN1Ia5gH2U1V/GOVRmLHmVY6fblxzrOPUoZrMYjHl/K4s+AiI7ym/527WDeQvhQpD7j3TfDwcAYforD2dLGpLw==", - "dependencies": { - "@libp2p/interface": "^0.1.6", - "multiformats": "^12.0.1", - "uint8arrays": "^4.0.6" + "multiformats": "^13.0.0" } }, "node_modules/@libp2p/logger": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-4.0.2.tgz", - "integrity": "sha512-J9UMtMU9BKXNp+3c5kcI7HyWOPYg2B2E6sn1gEQckiSexTaz0wKJSlgTZ89f9F8bkC3AaC8ybXYuHbFQhwpTIg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-4.0.5.tgz", + "integrity": "sha512-cXETMNZINnxeQBlfQ2S4di92FDDU89R7RHagrpebGrM7oLl5nf/Mw6myc23kGaM3/2YG3ko2rl9sYjemu0azTA==", "dependencies": { - "@libp2p/interface": "^1.0.2", + "@libp2p/interface": "^1.1.2", "@multiformats/multiaddr": "^12.1.10", "debug": "^4.3.4", "interface-datastore": "^8.2.0", - "multiformats": "^12.1.3" + "multiformats": "^13.0.0" } }, + "node_modules/@libp2p/logger/node_modules/multiformats": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.0.1.tgz", + "integrity": "sha512-bt3R5iXe2O8xpp3wkmQhC73b/lC4S2ihU8Dndwcsysqbydqb8N+bpP116qMcClZ17g58iSIwtXUTcg2zT4sniA==" + }, "node_modules/@libp2p/mdns": { "version": "9.0.14", "resolved": "https://registry.npmjs.org/@libp2p/mdns/-/mdns-9.0.14.tgz", @@ -1616,12 +1605,12 @@ } }, "node_modules/@libp2p/peer-id": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-4.0.2.tgz", - "integrity": "sha512-TkUA6MjLJ3CE82yyFOfGpH18eUkxouQC7FZcW4vMB1C6F1Y90sf0nPTcXPVZSabEcQxLeOzNk2oEqLgZw47E9w==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-4.0.5.tgz", + "integrity": "sha512-/J9U6I/CWSOsYrTpFZpRQrhOhi+bp9WFp7+9Gc7kVt/oevIYTapUEjpxevjViem9ddR5RbdYeCj4ZLHA04QOoQ==", "dependencies": { - "@libp2p/interface": "^1.0.2", - "multiformats": "^12.1.3", + "@libp2p/interface": "^1.1.2", + "multiformats": "^13.0.0", "uint8arrays": "^5.0.0" } }, @@ -1647,6 +1636,11 @@ "multiformats": "^12.0.1" } }, + "node_modules/@libp2p/peer-id/node_modules/multiformats": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.0.1.tgz", + "integrity": "sha512-bt3R5iXe2O8xpp3wkmQhC73b/lC4S2ihU8Dndwcsysqbydqb8N+bpP116qMcClZ17g58iSIwtXUTcg2zT4sniA==" + }, "node_modules/@libp2p/peer-id/node_modules/uint8arrays": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.0.0.tgz", @@ -1655,6 +1649,15 @@ "multiformats": "^12.0.1" } }, + "node_modules/@libp2p/peer-id/node_modules/uint8arrays/node_modules/multiformats": { + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz", + "integrity": "sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==", + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" + } + }, "node_modules/@libp2p/peer-record": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/@libp2p/peer-record/-/peer-record-7.0.1.tgz", @@ -3590,6 +3593,19 @@ "safer-buffer": "~2.1.0" } }, + "node_modules/asn1js": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz", + "integrity": "sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==", + "dependencies": { + "pvtsutils": "^1.3.2", + "pvutils": "^1.1.3", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", @@ -8070,6 +8086,21 @@ "uint8arraylist": "^2.4.3" } }, + "node_modules/helia/node_modules/@libp2p/keychain": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@libp2p/keychain/-/keychain-3.0.8.tgz", + "integrity": "sha512-+WmW9bN9WE0uKqTG3DVk+zsd9Np63lLS+uYRhncwCGTvg0HKXq1t+i4Xd8KbZvUv7UVakE8aae1oMezW3nS+2g==", + "dependencies": { + "@libp2p/crypto": "^2.0.8", + "@libp2p/interface": "^0.1.6", + "@libp2p/logger": "^3.1.0", + "@libp2p/peer-id": "^3.0.6", + "interface-datastore": "^8.2.0", + "merge-options": "^3.0.4", + "sanitize-filename": "^1.6.3", + "uint8arrays": "^4.0.6" + } + }, "node_modules/helia/node_modules/@libp2p/logger": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-3.1.0.tgz", @@ -15213,6 +15244,22 @@ "node": ">=6" } }, + "node_modules/pvtsutils": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.5.tgz", + "integrity": "sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA==", + "dependencies": { + "tslib": "^2.6.1" + } + }, + "node_modules/pvutils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", + "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", @@ -17593,6 +17640,11 @@ "json5": "lib/cli.js" } }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, "node_modules/tsscmp": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", @@ -19447,15 +19499,23 @@ } }, "@libp2p/interface": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-1.0.2.tgz", - "integrity": "sha512-z/3Yyg+7cVyzRXwzdrDkJd7YmNaLE9iZjQaixo5luI/n9uk5OFFjb9ulAsNqpq8V1xylCo2DXIC7f94KClwzVw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-1.1.2.tgz", + "integrity": "sha512-uC4hxtEJuWiDiZfokkSNEEbCzdyZrqb5kp67Wc5PjZsySZ2IoImdIfie003yQXlB1xBp/XUJzdC6kVu4M7LUmg==", "requires": { "@multiformats/multiaddr": "^12.1.10", - "it-pushable": "^3.2.1", + "it-pushable": "^3.2.3", "it-stream-types": "^2.0.1", - "multiformats": "^12.1.3", - "uint8arraylist": "^2.4.3" + "multiformats": "^13.0.0", + "progress-events": "^1.0.0", + "uint8arraylist": "^2.4.7" + }, + "dependencies": { + "multiformats": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.0.1.tgz", + "integrity": "sha512-bt3R5iXe2O8xpp3wkmQhC73b/lC4S2ihU8Dndwcsysqbydqb8N+bpP116qMcClZ17g58iSIwtXUTcg2zT4sniA==" + } } }, "@libp2p/interface-internal": { @@ -19586,84 +19646,67 @@ } }, "@libp2p/keychain": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@libp2p/keychain/-/keychain-3.0.8.tgz", - "integrity": "sha512-+WmW9bN9WE0uKqTG3DVk+zsd9Np63lLS+uYRhncwCGTvg0HKXq1t+i4Xd8KbZvUv7UVakE8aae1oMezW3nS+2g==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@libp2p/keychain/-/keychain-4.0.7.tgz", + "integrity": "sha512-zWNv0SbHgFSFbvSqnK2uCIEmXGzk/HCGJtCUQCx3c0dWg/z/rPZD8oAx9rCA5eU1cjlfwXxrH1h4fDNlyBQt1w==", "requires": { - "@libp2p/crypto": "^2.0.8", - "@libp2p/interface": "^0.1.6", - "@libp2p/logger": "^3.1.0", - "@libp2p/peer-id": "^3.0.6", + "@libp2p/crypto": "^4.0.1", + "@libp2p/interface": "^1.1.2", + "@libp2p/peer-id": "^4.0.5", "interface-datastore": "^8.2.0", "merge-options": "^3.0.4", + "multiformats": "^13.0.0", "sanitize-filename": "^1.6.3", - "uint8arrays": "^4.0.6" + "uint8arrays": "^5.0.0" }, "dependencies": { "@libp2p/crypto": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-2.0.8.tgz", - "integrity": "sha512-8e5fh6bsJNpSjhrggtlm8QF+BERjelJswIjRS69aKgxp24R4z2kDM4pRYPkfQjXJDLNDtqWtKNmePgX23+QJsA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-4.0.1.tgz", + "integrity": "sha512-lKGbX8TvQt4JbqlttdexEz2VtYJnTwY31kVBDQviwt0pMF+6Uy2hzNnEQ1FHZBwnow8BIlyb6UevHfgyOFlnkw==", "requires": { - "@libp2p/interface": "^0.1.6", + "@libp2p/interface": "^1.1.2", "@noble/curves": "^1.1.0", - "@noble/hashes": "^1.3.1", - "multiformats": "^12.0.1", - "node-forge": "^1.1.0", + "@noble/hashes": "^1.3.3", + "asn1js": "^3.0.5", + "multiformats": "^13.0.0", "protons-runtime": "^5.0.0", - "uint8arraylist": "^2.4.3", - "uint8arrays": "^4.0.6" + "uint8arraylist": "^2.4.7", + "uint8arrays": "^5.0.0" } }, - "@libp2p/interface": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-0.1.6.tgz", - "integrity": "sha512-Lzc5cS/hXuoXhuAbVIxJIHLCYmfPcbU0vVgrpMoiP1Qb2Q3ETU4A46GB8s8mWXgSU6tr9RcqerUqzFYD6+OAag==", - "requires": { - "@multiformats/multiaddr": "^12.1.5", - "abortable-iterator": "^5.0.1", - "it-pushable": "^3.2.0", - "it-stream-types": "^2.0.1", - "multiformats": "^12.0.1", - "p-defer": "^4.0.0", - "race-signal": "^1.0.0", - "uint8arraylist": "^2.4.3" - } + "multiformats": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.0.1.tgz", + "integrity": "sha512-bt3R5iXe2O8xpp3wkmQhC73b/lC4S2ihU8Dndwcsysqbydqb8N+bpP116qMcClZ17g58iSIwtXUTcg2zT4sniA==" }, - "@libp2p/logger": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-3.1.0.tgz", - "integrity": "sha512-qJbJBAhxHVsRBtQSOIkSLi0lskUSFjzE+zm0QvoyxzZKSz+mX41mZLbnofPIVOVauoDQ40dXpe7WDUOq8AbiQQ==", + "uint8arrays": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.0.1.tgz", + "integrity": "sha512-ND5RpJAnPgHmZT7hWD/2T4BwRp04j8NLKvMKC/7bhiEwEjUMkQ4kvBKiH6hOqbljd6qJ2xS8reL3vl1e33grOQ==", "requires": { - "@libp2p/interface": "^0.1.6", - "@multiformats/multiaddr": "^12.1.5", - "debug": "^4.3.4", - "interface-datastore": "^8.2.0", - "multiformats": "^12.0.1" - } - }, - "@libp2p/peer-id": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-3.0.6.tgz", - "integrity": "sha512-iN1Ia5gH2U1V/GOVRmLHmVY6fblxzrOPUoZrMYjHl/K4s+AiI7ym/527WDeQvhQpD7j3TfDwcAYforD2dLGpLw==", - "requires": { - "@libp2p/interface": "^0.1.6", - "multiformats": "^12.0.1", - "uint8arrays": "^4.0.6" + "multiformats": "^13.0.0" } } } }, "@libp2p/logger": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-4.0.2.tgz", - "integrity": "sha512-J9UMtMU9BKXNp+3c5kcI7HyWOPYg2B2E6sn1gEQckiSexTaz0wKJSlgTZ89f9F8bkC3AaC8ybXYuHbFQhwpTIg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-4.0.5.tgz", + "integrity": "sha512-cXETMNZINnxeQBlfQ2S4di92FDDU89R7RHagrpebGrM7oLl5nf/Mw6myc23kGaM3/2YG3ko2rl9sYjemu0azTA==", "requires": { - "@libp2p/interface": "^1.0.2", + "@libp2p/interface": "^1.1.2", "@multiformats/multiaddr": "^12.1.10", "debug": "^4.3.4", "interface-datastore": "^8.2.0", - "multiformats": "^12.1.3" + "multiformats": "^13.0.0" + }, + "dependencies": { + "multiformats": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.0.1.tgz", + "integrity": "sha512-bt3R5iXe2O8xpp3wkmQhC73b/lC4S2ihU8Dndwcsysqbydqb8N+bpP116qMcClZ17g58iSIwtXUTcg2zT4sniA==" + } } }, "@libp2p/mdns": { @@ -19819,21 +19862,33 @@ } }, "@libp2p/peer-id": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-4.0.2.tgz", - "integrity": "sha512-TkUA6MjLJ3CE82yyFOfGpH18eUkxouQC7FZcW4vMB1C6F1Y90sf0nPTcXPVZSabEcQxLeOzNk2oEqLgZw47E9w==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-4.0.5.tgz", + "integrity": "sha512-/J9U6I/CWSOsYrTpFZpRQrhOhi+bp9WFp7+9Gc7kVt/oevIYTapUEjpxevjViem9ddR5RbdYeCj4ZLHA04QOoQ==", "requires": { - "@libp2p/interface": "^1.0.2", - "multiformats": "^12.1.3", + "@libp2p/interface": "^1.1.2", + "multiformats": "^13.0.0", "uint8arrays": "^5.0.0" }, "dependencies": { + "multiformats": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.0.1.tgz", + "integrity": "sha512-bt3R5iXe2O8xpp3wkmQhC73b/lC4S2ihU8Dndwcsysqbydqb8N+bpP116qMcClZ17g58iSIwtXUTcg2zT4sniA==" + }, "uint8arrays": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.0.0.tgz", "integrity": "sha512-RWO7gR4x6syxnKDfZO8mDCsaaYs1/BqZCxlHgrcRge50E9GTnLmtoA4kwFSGIL4s3dQkryeTkvtG6oEFEya3yg==", "requires": { "multiformats": "^12.0.1" + }, + "dependencies": { + "multiformats": { + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-12.1.3.tgz", + "integrity": "sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==" + } } } } @@ -21539,6 +21594,16 @@ "safer-buffer": "~2.1.0" } }, + "asn1js": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz", + "integrity": "sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==", + "requires": { + "pvtsutils": "^1.3.2", + "pvutils": "^1.1.3", + "tslib": "^2.4.0" + } + }, "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", @@ -24789,6 +24854,21 @@ "uint8arraylist": "^2.4.3" } }, + "@libp2p/keychain": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@libp2p/keychain/-/keychain-3.0.8.tgz", + "integrity": "sha512-+WmW9bN9WE0uKqTG3DVk+zsd9Np63lLS+uYRhncwCGTvg0HKXq1t+i4Xd8KbZvUv7UVakE8aae1oMezW3nS+2g==", + "requires": { + "@libp2p/crypto": "^2.0.8", + "@libp2p/interface": "^0.1.6", + "@libp2p/logger": "^3.1.0", + "@libp2p/peer-id": "^3.0.6", + "interface-datastore": "^8.2.0", + "merge-options": "^3.0.4", + "sanitize-filename": "^1.6.3", + "uint8arrays": "^4.0.6" + } + }, "@libp2p/logger": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-3.1.0.tgz", @@ -30376,6 +30456,19 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" }, + "pvtsutils": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.5.tgz", + "integrity": "sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA==", + "requires": { + "tslib": "^2.6.1" + } + }, + "pvutils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", + "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==" + }, "q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", @@ -32178,6 +32271,11 @@ } } }, + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, "tsscmp": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", diff --git a/package.json b/package.json index e86c74c..583a669 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,8 @@ "@libp2p/bootstrap": "10.0.7", "@libp2p/circuit-relay-v2": "1.0.7", "@libp2p/identify": "1.0.6", + "@libp2p/keychain": "4.0.7", + "@libp2p/logger": "4.0.5", "@libp2p/tcp": "9.0.7", "axios": "0.27.2", "bcryptjs": "2.4.3", diff --git a/src/adapters/ipfs/ipfs.js b/src/adapters/ipfs/ipfs.js index 4dc5d8c..50d4588 100644 --- a/src/adapters/ipfs/ipfs.js +++ b/src/adapters/ipfs/ipfs.js @@ -26,6 +26,8 @@ import { webSockets } from '@libp2p/websockets' import publicIp from 'public-ip' import { multiaddr } from '@multiformats/multiaddr' import { webRTC } from '@libp2p/webrtc' +// import { keychain } from '@libp2p/keychain' +// import { defaultLogger } from '@libp2p/logger' // Local libraries import config from '../../../config/index.js' @@ -39,6 +41,10 @@ const __dirname = url.fileURLToPath(new URL('.', import.meta.url)) const ROOT_DIR = `${__dirname}../../../` const IPFS_DIR = `${__dirname}../../../.ipfsdata/ipfs` +// const keychainInit = { +// pass: 'very long, very secure password' +// } + class IpfsAdapter { constructor (localConfig) { // Encapsulate dependencies @@ -109,6 +115,18 @@ class IpfsAdapter { const blockstore = new FsBlockstore(`${IPFS_DIR}/blockstore`) const datastore = new FsDatastore(`${IPFS_DIR}/datastore`) + // Create an identity + // let peerId + // const chain = keychain(keychainInit)({ + // datastore, + // logger: defaultLogger() + // }) + // const selfKey = new Key('/pkcs8/self') + // if (await datastore.has(selfKey)) { + // // load the peer id from the keychain + // peerId = await chain.exportPeerId('self') + // } + // Configure services const services = { identify: identify(), @@ -146,6 +164,7 @@ class IpfsAdapter { // libp2p is the networking layer that underpins Helia const libp2p = await this.createLibp2p({ + // peerId, datastore, addresses: { listen: [ From 2724b500eef1200c19b126ea6878ecfb1dba2f78 Mon Sep 17 00:00:00 2001 From: Chris Troutner Date: Sun, 28 Jan 2024 08:03:41 -0800 Subject: [PATCH 02/10] Got keychain working for first time --- package-lock.json | 13 ++++++----- package.json | 1 + src/adapters/ipfs/ipfs.js | 47 ++++++++++++++++++++++----------------- 3 files changed, 35 insertions(+), 26 deletions(-) diff --git a/package-lock.json b/package-lock.json index f26c12e..2aaea6d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,6 +25,7 @@ "glob": "7.1.6", "helia": "2.1.0", "helia-coord": "1.2.23", + "interface-datastore": "8.2.10", "jsonrpc-lite": "2.2.0", "jsonwebtoken": "8.5.1", "jwt-bch-lib": "1.3.0", @@ -8704,9 +8705,9 @@ } }, "node_modules/interface-datastore": { - "version": "8.2.9", - "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-8.2.9.tgz", - "integrity": "sha512-J/8PN8TnB5xxCRtgu9Vx3zExdOzcTU5/DBF2dlU41deX1GW6/SPpbJo5DRNSnvzfjmwJ7YhUOIFXyccUp8nuAA==", + "version": "8.2.10", + "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-8.2.10.tgz", + "integrity": "sha512-D8RuxMdjOPB+j6WMDJ+I2aXTDzUT6DIVjgzo1E+ODL7w8WrSFl9FXD2SYmgj6vVzdb7Kb5qmAI9pEnDZJz7ifg==", "dependencies": { "interface-store": "^5.0.0", "uint8arrays": "^5.0.0" @@ -25576,9 +25577,9 @@ } }, "interface-datastore": { - "version": "8.2.9", - "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-8.2.9.tgz", - "integrity": "sha512-J/8PN8TnB5xxCRtgu9Vx3zExdOzcTU5/DBF2dlU41deX1GW6/SPpbJo5DRNSnvzfjmwJ7YhUOIFXyccUp8nuAA==", + "version": "8.2.10", + "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-8.2.10.tgz", + "integrity": "sha512-D8RuxMdjOPB+j6WMDJ+I2aXTDzUT6DIVjgzo1E+ODL7w8WrSFl9FXD2SYmgj6vVzdb7Kb5qmAI9pEnDZJz7ifg==", "requires": { "interface-store": "^5.0.0", "uint8arrays": "^5.0.0" diff --git a/package.json b/package.json index 583a669..f13e265 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ "glob": "7.1.6", "helia": "2.1.0", "helia-coord": "1.2.23", + "interface-datastore": "8.2.10", "jsonrpc-lite": "2.2.0", "jsonwebtoken": "8.5.1", "jwt-bch-lib": "1.3.0", diff --git a/src/adapters/ipfs/ipfs.js b/src/adapters/ipfs/ipfs.js index 50d4588..68e76f0 100644 --- a/src/adapters/ipfs/ipfs.js +++ b/src/adapters/ipfs/ipfs.js @@ -26,8 +26,9 @@ import { webSockets } from '@libp2p/websockets' import publicIp from 'public-ip' import { multiaddr } from '@multiformats/multiaddr' import { webRTC } from '@libp2p/webrtc' -// import { keychain } from '@libp2p/keychain' -// import { defaultLogger } from '@libp2p/logger' +import { keychain } from '@libp2p/keychain' +import { defaultLogger } from '@libp2p/logger' +import {Key} from 'interface-datastore/key' // Local libraries import config from '../../../config/index.js' @@ -41,9 +42,9 @@ const __dirname = url.fileURLToPath(new URL('.', import.meta.url)) const ROOT_DIR = `${__dirname}../../../` const IPFS_DIR = `${__dirname}../../../.ipfsdata/ipfs` -// const keychainInit = { -// pass: 'very long, very secure password' -// } +const keychainInit = { + pass: 'very long, very secure password' +} class IpfsAdapter { constructor (localConfig) { @@ -116,16 +117,20 @@ class IpfsAdapter { const datastore = new FsDatastore(`${IPFS_DIR}/datastore`) // Create an identity - // let peerId - // const chain = keychain(keychainInit)({ - // datastore, - // logger: defaultLogger() - // }) - // const selfKey = new Key('/pkcs8/self') - // if (await datastore.has(selfKey)) { - // // load the peer id from the keychain - // peerId = await chain.exportPeerId('self') - // } + let peerId + const chain = keychain(keychainInit)({ + datastore, + logger: defaultLogger() + }) + const selfKey = new Key('/pkcs8/self') + if (await datastore.has(selfKey)) { + // load the peer id from the keychain + peerId = await chain.exportPeerId('self') + } else { + // await chain.createKey('myKey', 'RSA', 4096) + peerId = await chain.exportPeerId('myKey') + } + console.log(`Created peer ID: `, peerId) // Configure services const services = { @@ -164,7 +169,7 @@ class IpfsAdapter { // libp2p is the networking layer that underpins Helia const libp2p = await this.createLibp2p({ - // peerId, + peerId, datastore, addresses: { listen: [ @@ -194,10 +199,12 @@ class IpfsAdapter { services }) - // console.log(`Node started with id ${libp2p.peerId.toString()}`) - // console.log('Listening on:') - // libp2p.getMultiaddrs().forEach((ma) => console.log(ma.toString())) - + // Save the identity if it was newly created. + if (peerId != null && !await datastore.has(selfKey)) { + console.log(`Saving key for peer ID ${libp2p.peerId}`) + // a new PeerId would have been generated so store it in the keychain for next time + await chain.importPeer('self', libp2p.peerId) + } // create a Helia node const helia = await createHelia({ blockstore, From ceb58caba13337a9a01bdf877fc6d47aafbb29de Mon Sep 17 00:00:00 2001 From: Chris Troutner Date: Sun, 28 Jan 2024 08:04:02 -0800 Subject: [PATCH 03/10] linting --- src/adapters/ipfs/ipfs.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/adapters/ipfs/ipfs.js b/src/adapters/ipfs/ipfs.js index 68e76f0..39124d7 100644 --- a/src/adapters/ipfs/ipfs.js +++ b/src/adapters/ipfs/ipfs.js @@ -28,7 +28,7 @@ import { multiaddr } from '@multiformats/multiaddr' import { webRTC } from '@libp2p/webrtc' import { keychain } from '@libp2p/keychain' import { defaultLogger } from '@libp2p/logger' -import {Key} from 'interface-datastore/key' +import { Key } from 'interface-datastore/key' // Local libraries import config from '../../../config/index.js' @@ -130,7 +130,7 @@ class IpfsAdapter { // await chain.createKey('myKey', 'RSA', 4096) peerId = await chain.exportPeerId('myKey') } - console.log(`Created peer ID: `, peerId) + console.log('Created peer ID: ', peerId) // Configure services const services = { From b697f3719944838dddb05c4c768328f129634a0b Mon Sep 17 00:00:00 2001 From: Chris Troutner Date: Sun, 28 Jan 2024 08:19:38 -0800 Subject: [PATCH 04/10] fix(keys): Creating persistent keystore for libp2p v1.0.x --- package-lock.json | 1 - package.json | 1 - src/adapters/ipfs/ipfs.js | 46 ++++----------------------------------- 3 files changed, 4 insertions(+), 44 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2aaea6d..24b4823 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,7 +25,6 @@ "glob": "7.1.6", "helia": "2.1.0", "helia-coord": "1.2.23", - "interface-datastore": "8.2.10", "jsonrpc-lite": "2.2.0", "jsonwebtoken": "8.5.1", "jwt-bch-lib": "1.3.0", diff --git a/package.json b/package.json index f13e265..583a669 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,6 @@ "glob": "7.1.6", "helia": "2.1.0", "helia-coord": "1.2.23", - "interface-datastore": "8.2.10", "jsonrpc-lite": "2.2.0", "jsonwebtoken": "8.5.1", "jwt-bch-lib": "1.3.0", diff --git a/src/adapters/ipfs/ipfs.js b/src/adapters/ipfs/ipfs.js index 39124d7..391f9ed 100644 --- a/src/adapters/ipfs/ipfs.js +++ b/src/adapters/ipfs/ipfs.js @@ -28,7 +28,6 @@ import { multiaddr } from '@multiformats/multiaddr' import { webRTC } from '@libp2p/webrtc' import { keychain } from '@libp2p/keychain' import { defaultLogger } from '@libp2p/logger' -import { Key } from 'interface-datastore/key' // Local libraries import config from '../../../config/index.js' @@ -122,15 +121,12 @@ class IpfsAdapter { datastore, logger: defaultLogger() }) - const selfKey = new Key('/pkcs8/self') - if (await datastore.has(selfKey)) { - // load the peer id from the keychain - peerId = await chain.exportPeerId('self') - } else { - // await chain.createKey('myKey', 'RSA', 4096) + try { + peerId = await chain.exportPeerId('myKey') + } catch (err) { + await chain.createKey('myKey', 'RSA', 4096) peerId = await chain.exportPeerId('myKey') } - console.log('Created peer ID: ', peerId) // Configure services const services = { @@ -144,29 +140,6 @@ class IpfsAdapter { console.log('Helia (IPFS) node IS NOT configured as Circuit Relay') } - // const bootstrapList = [ - // // - // // // launchpad-p2wdb-service (Launchpad pinning service) - // // '/ip4/137.184.13.92/tcp/4001/p2p/12D3KooWPpBXhhAeoCZCGuQ3KR4xwHzzvtP57f6zLmo8P7ZFBJFE', - // // - // // // PSFoundation.info metrics - // // '/ip4/5.161.72.148/tcp/4001/p2p/12D3KooWDL1kPixc6hcT4s7teWGufrxXmZFD1kPeGdDrsKgYrFUt', - // // - // // // PSFoundation.info P2WDB - // // '/ip4/5.161.72.148/tcp/4101/p2p/12D3KooWHz1sRB94EEVRQRJvUX9MyRm3xhr4QSyCoJbTdu2AYheq', - // // - // // // TokenTiger.com backup P2WDB - // // '/ip4/161.35.99.207/tcp/4001/p2p/12D3KooWDtj9cfj1SKuLbDNKvKRKSsGN8qivq9M8CYpLPDpcD5pu', - // // - // // // helia-p2wdb-dev-server-01 prototype P2WDB server using Helia (Token Tiger) - // // '/ip4/137.184.93.145/tcp/4001/p2p/12D3KooWGZCpD5Ue3CJCBBEKowcuKEgeVKbTM7VMbJ8xm1bqST1j', - // // - // // // helia-p2wdb-dev-server-01 prototype P2WDB server using Helia (FullStack.cash) - // // '/ip4/78.46.129.7/tcp/7001/p2p/12D3KooWRqe7TwTj8apPxmpPqPgHiv7qv5YBJTo1VeQ7zrdyA2HN' - // ] - // bootstrapList = bootstrapList.concat(this.config.bootstrapRelays) - // console.log('bootstrapList: ', bootstrapList) - // libp2p is the networking layer that underpins Helia const libp2p = await this.createLibp2p({ peerId, @@ -191,20 +164,9 @@ class IpfsAdapter { streamMuxers: [ yamux() ], - // peerDiscovery: [ - // bootstrap({ - // list: bootstrapList - // }) - // ], services }) - // Save the identity if it was newly created. - if (peerId != null && !await datastore.has(selfKey)) { - console.log(`Saving key for peer ID ${libp2p.peerId}`) - // a new PeerId would have been generated so store it in the keychain for next time - await chain.importPeer('self', libp2p.peerId) - } // create a Helia node const helia = await createHelia({ blockstore, From 050141d31e58da5ad340fb3f64810d172c43b5bc Mon Sep 17 00:00:00 2001 From: Chris Troutner Date: Sun, 28 Jan 2024 08:22:55 -0800 Subject: [PATCH 05/10] Creating todo for seed --- src/adapters/ipfs/ipfs.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/adapters/ipfs/ipfs.js b/src/adapters/ipfs/ipfs.js index 391f9ed..5073721 100644 --- a/src/adapters/ipfs/ipfs.js +++ b/src/adapters/ipfs/ipfs.js @@ -41,10 +41,6 @@ const __dirname = url.fileURLToPath(new URL('.', import.meta.url)) const ROOT_DIR = `${__dirname}../../../` const IPFS_DIR = `${__dirname}../../../.ipfsdata/ipfs` -const keychainInit = { - pass: 'very long, very secure password' -} - class IpfsAdapter { constructor (localConfig) { // Encapsulate dependencies @@ -115,6 +111,11 @@ class IpfsAdapter { const blockstore = new FsBlockstore(`${IPFS_DIR}/blockstore`) const datastore = new FsDatastore(`${IPFS_DIR}/datastore`) + // TODO: Replace this with a random string generator. + const keychainInit = { + pass: 'very long, very secure password' + } + // Create an identity let peerId const chain = keychain(keychainInit)({ From c7217486bd5e3a74c59f039cdf9260e46f3a5e41 Mon Sep 17 00:00:00 2001 From: Chris Troutner Date: Sun, 28 Jan 2024 12:49:18 -0800 Subject: [PATCH 06/10] fix(getSeed()): Generates seed for IPFS private key --- src/adapters/ipfs/ipfs.js | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/src/adapters/ipfs/ipfs.js b/src/adapters/ipfs/ipfs.js index 5073721..0f3c1b3 100644 --- a/src/adapters/ipfs/ipfs.js +++ b/src/adapters/ipfs/ipfs.js @@ -31,6 +31,7 @@ import { defaultLogger } from '@libp2p/logger' // Local libraries import config from '../../../config/index.js' +import JsonFiles from '../json-files.js' // Hack to get __dirname back. // https://blog.logrocket.com/alternatives-dirname-node-js-es-modules/ @@ -49,6 +50,7 @@ class IpfsAdapter { this.createLibp2p = createLibp2p this.publicIp = publicIp this.multiaddr = multiaddr + this.jsonFiles = new JsonFiles() // Properties of this class instance. this.isReady = false @@ -58,6 +60,7 @@ class IpfsAdapter { this.createNode = this.createNode.bind(this) this.stop = this.stop.bind(this) this.ensureBlocksDir = this.ensureBlocksDir.bind(this) + this.getSeed = this.getSeed.bind(this) } // Start an IPFS node. @@ -112,8 +115,9 @@ class IpfsAdapter { const datastore = new FsDatastore(`${IPFS_DIR}/datastore`) // TODO: Replace this with a random string generator. + // const keychainInit = await this.getSeed() const keychainInit = { - pass: 'very long, very secure password' + pass: await this.getSeed() } // Create an identity @@ -207,6 +211,34 @@ class IpfsAdapter { throw err } } + + // This function opens the seed used to generate the key for this IPFS peer. + // The seed is stored in a JSON file. If it doesn't exist, a new one is created. + async getSeed() { + try { + let seed + + const filename = `${IPFS_DIR}/seed.json` + + try { + // Try to read the JSON file containing the seed. + seed = await this.jsonFiles.readJSON(filename) + } catch(err) { + const seedNum = Math.floor(Math.random() * 1000000000000000000000) + seed = seedNum.toString() + + // Save the newly generated seed + await this.jsonFiles.writeJSON(seed, filename) + } + + // console.log('getSeed() seed: ', seed) + + return seed + } catch(err) { + console.error('Error in getSeed()') + throw err + } + } } export default IpfsAdapter From 7f5b456018425917b6a1d4142c0b8ffe6f0de318 Mon Sep 17 00:00:00 2001 From: Chris Troutner Date: Sun, 28 Jan 2024 14:13:42 -0800 Subject: [PATCH 07/10] linting --- src/adapters/ipfs/ipfs.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/adapters/ipfs/ipfs.js b/src/adapters/ipfs/ipfs.js index 0f3c1b3..d161cd7 100644 --- a/src/adapters/ipfs/ipfs.js +++ b/src/adapters/ipfs/ipfs.js @@ -214,7 +214,7 @@ class IpfsAdapter { // This function opens the seed used to generate the key for this IPFS peer. // The seed is stored in a JSON file. If it doesn't exist, a new one is created. - async getSeed() { + async getSeed () { try { let seed @@ -223,7 +223,7 @@ class IpfsAdapter { try { // Try to read the JSON file containing the seed. seed = await this.jsonFiles.readJSON(filename) - } catch(err) { + } catch (err) { const seedNum = Math.floor(Math.random() * 1000000000000000000000) seed = seedNum.toString() @@ -234,7 +234,7 @@ class IpfsAdapter { // console.log('getSeed() seed: ', seed) return seed - } catch(err) { + } catch (err) { console.error('Error in getSeed()') throw err } From 44499d965256b2711325d96d5ccad9b1f8a9fecb Mon Sep 17 00:00:00 2001 From: Chris Troutner Date: Sun, 28 Jan 2024 15:00:30 -0800 Subject: [PATCH 08/10] Updating Dockerfile to use v1.0.10 branch --- production/docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/production/docker/Dockerfile b/production/docker/Dockerfile index 5ee12e5..23f4a7d 100644 --- a/production/docker/Dockerfile +++ b/production/docker/Dockerfile @@ -53,7 +53,7 @@ RUN git clone https://github.com/Permissionless-Software-Foundation/ipfs-service WORKDIR /home/safeuser/ipfs-service-provider # For development: switch to unstable branch -RUN git checkout ct-unstable +RUN git checkout v1.0.10 # Install dependencies #RUN mkdir .ipfsdata From ee0f2da64158650fe3f4d36b261f532c04e81544 Mon Sep 17 00:00:00 2001 From: Chris Troutner Date: Sun, 28 Jan 2024 15:05:34 -0800 Subject: [PATCH 09/10] fix(docker): Building container rather than using image --- production/docker/docker-compose.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/production/docker/docker-compose.yml b/production/docker/docker-compose.yml index edce087..66170dd 100644 --- a/production/docker/docker-compose.yml +++ b/production/docker/docker-compose.yml @@ -14,8 +14,8 @@ services: restart: always ipfs-service: - #build: . - image: christroutner/ipfs-service-provider:v5.0.1 + build: . + #image: christroutner/ipfs-service-provider:v5.0.1 container_name: ipfs-service logging: driver: 'json-file' @@ -27,6 +27,8 @@ services: - mongo-ipfs-service ports: - '5010:5010' # : + - '4001:4001' + - '4003:4003' volumes: - ../data/ipfsdata:/home/safeuser/ipfs-service-provider/.ipfsdata - ./start-production.sh:/home/safeuser/ipfs-service-provider/start-production.sh From 8d6af3e1b7389ec5a73d6ad43fdba225d94bbb50 Mon Sep 17 00:00:00 2001 From: Chris Troutner Date: Sun, 28 Jan 2024 15:17:01 -0800 Subject: [PATCH 10/10] fix(helia-coord): Updating to v1.4.3 --- package-lock.json | 16 ++++++++-------- package.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8dd61f1..536a29b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,7 +24,7 @@ "datastore-fs": "9.1.6", "glob": "7.1.6", "helia": "2.1.0", - "helia-coord": "1.4.2", + "helia-coord": "1.4.3", "jsonrpc-lite": "2.2.0", "jsonwebtoken": "8.5.1", "jwt-bch-lib": "1.3.0", @@ -7306,16 +7306,16 @@ } }, "node_modules/helia-coord": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/helia-coord/-/helia-coord-1.4.2.tgz", - "integrity": "sha512-WYTCR8IPCYgXe/HYEuoC1pqCb/aff9MQu71FcfV9Z2Zg7MqQ7SyrrRJbozXliaS//DFZgco08KEnTwohWj0tJA==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/helia-coord/-/helia-coord-1.4.3.tgz", + "integrity": "sha512-ZSWASgaZhql8dFzdiL3ChPMkOxylNNP9C7ZivO2RNADWzvGM0iEIUU9yMj1WpTnVkGlNIKtkcBe36oJVz/qiEQ==", "dependencies": { "@chris.troutner/retry-queue": "1.0.8", "bch-encrypt-lib": "2.1.1", "uuid": "9.0.0" }, "peerDependencies": { - "libp2p": "0.46.21" + "libp2p": ">0.46.14" } }, "node_modules/helia-coord/node_modules/uuid": { @@ -24295,9 +24295,9 @@ } }, "helia-coord": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/helia-coord/-/helia-coord-1.4.2.tgz", - "integrity": "sha512-WYTCR8IPCYgXe/HYEuoC1pqCb/aff9MQu71FcfV9Z2Zg7MqQ7SyrrRJbozXliaS//DFZgco08KEnTwohWj0tJA==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/helia-coord/-/helia-coord-1.4.3.tgz", + "integrity": "sha512-ZSWASgaZhql8dFzdiL3ChPMkOxylNNP9C7ZivO2RNADWzvGM0iEIUU9yMj1WpTnVkGlNIKtkcBe36oJVz/qiEQ==", "requires": { "@chris.troutner/retry-queue": "1.0.8", "bch-encrypt-lib": "2.1.1", diff --git a/package.json b/package.json index 4e21002..b133f9f 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "datastore-fs": "9.1.6", "glob": "7.1.6", "helia": "2.1.0", - "helia-coord": "1.4.2", + "helia-coord": "1.4.3", "jsonrpc-lite": "2.2.0", "jsonwebtoken": "8.5.1", "jwt-bch-lib": "1.3.0",