From d2809cd1b4c2d4780f7e29714d15f101aeba9c19 Mon Sep 17 00:00:00 2001 From: ukfkumyjuf Date: Fri, 30 Jan 2026 08:42:07 +0100 Subject: [PATCH 01/25] feat(block explorer): Creating the base app for the block explorer --- .gitignore | 32 +- assignments/2-gas-hash/package-lock.json | 348 ----------------- assignments/2-gas-hash/package.json | 6 +- assignments/3-block-hash/package-lock.json | 354 ------------------ .../6-wallet-address/package-lock.json | 328 ---------------- .../sepolia-explorer/.gitignore | 24 ++ .../sepolia-explorer/README.md | 98 +++++ .../sepolia-explorer/eslint.config.js | 23 ++ .../sepolia-explorer/index.html | 13 + .../sepolia-explorer/package.json | 34 ++ .../sepolia-explorer/public/favicon.ico | Bin 0 -> 15406 bytes .../favicon_io/android-chrome-192x192.png | Bin 0 -> 33960 bytes .../favicon_io/android-chrome-512x512.png | Bin 0 -> 154013 bytes .../public/favicon_io/apple-touch-icon.png | Bin 0 -> 30604 bytes .../public/favicon_io/favicon-16x16.png | Bin 0 -> 858 bytes .../public/favicon_io/favicon-32x32.png | Bin 0 -> 2337 bytes .../public/favicon_io/favicon.ico | Bin 0 -> 15406 bytes .../public/favicon_io/site.webmanifest | 1 + .../sepolia-explorer/src/App.css | 42 +++ .../sepolia-explorer/src/App.tsx | 49 +++ .../sepolia-explorer/src/assets/react.svg | 1 + .../src/components/BlockCard.tsx | 5 + .../src/components/Footer.tsx | 11 + .../src/components/Header.tsx | 23 ++ .../src/components/LatestTransaction.tsx | 38 ++ .../src/components/TransactionRow.tsx | 9 + .../src/components/ui/BlockCard.tsx | 5 + .../src/components/ui/ErrorMessage.tsx | 9 + .../src/components/ui/LatestBlocks.tsx | 42 +++ .../src/components/ui/LatestTransactions.tsx | 38 ++ .../src/components/ui/LoadingSpinner.tsx | 3 + .../src/components/ui/TransactionRow.tsx | 10 + .../sepolia-explorer/src/hooks/useSepolia.ts | 110 ++++++ .../sepolia-explorer/src/index.css | 7 + .../sepolia-explorer/src/main.tsx | 10 + .../src/pages/BlockDetail.tsx | 68 ++++ .../sepolia-explorer/src/pages/Blocks.tsx | 11 + .../sepolia-explorer/src/pages/Home.tsx | 65 ++++ .../src/pages/LatestBlocks.tsx | 41 ++ .../src/pages/Transactions.tsx | 10 + .../sepolia-explorer/src/pages/TxDetail.tsx | 61 +++ .../sepolia-explorer/src/routes/index.ts | 0 .../src/services/etherscanApi.ts | 0 .../sepolia-explorer/src/services/rpc.ts | 105 ++++++ .../sepolia-explorer/src/styles/layout.css | 0 .../sepolia-explorer/src/types/types.ts | 31 ++ .../sepolia-explorer/src/utils/formatters.ts | 24 ++ .../sepolia-explorer/tailwind.config.js | 15 + .../sepolia-explorer/tsconfig.app.json | 28 ++ .../sepolia-explorer/tsconfig.json | 7 + .../sepolia-explorer/tsconfig.node.json | 26 ++ .../sepolia-explorer/vite.config.ts | 7 + 52 files changed, 1135 insertions(+), 1037 deletions(-) delete mode 100644 assignments/2-gas-hash/package-lock.json delete mode 100644 assignments/3-block-hash/package-lock.json delete mode 100644 assignments/6-wallet-address/package-lock.json create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/.gitignore create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/README.md create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/eslint.config.js create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/index.html create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/package.json create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/public/favicon.ico create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/public/favicon_io/android-chrome-192x192.png create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/public/favicon_io/android-chrome-512x512.png create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/public/favicon_io/apple-touch-icon.png create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/public/favicon_io/favicon-16x16.png create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/public/favicon_io/favicon-32x32.png create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/public/favicon_io/favicon.ico create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/public/favicon_io/site.webmanifest create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/src/App.css create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/src/App.tsx create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/src/assets/react.svg create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/src/components/BlockCard.tsx create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/src/components/Footer.tsx create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/src/components/Header.tsx create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/src/components/LatestTransaction.tsx create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/src/components/TransactionRow.tsx create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/src/components/ui/BlockCard.tsx create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/src/components/ui/ErrorMessage.tsx create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/src/components/ui/LatestBlocks.tsx create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/src/components/ui/LatestTransactions.tsx create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/src/components/ui/LoadingSpinner.tsx create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/src/components/ui/TransactionRow.tsx create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/src/hooks/useSepolia.ts create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/src/index.css create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/src/main.tsx create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/src/pages/BlockDetail.tsx create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/src/pages/Blocks.tsx create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/src/pages/Home.tsx create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/src/pages/LatestBlocks.tsx create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/src/pages/Transactions.tsx create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/src/pages/TxDetail.tsx create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/src/routes/index.ts create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/src/services/etherscanApi.ts create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/src/services/rpc.ts create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/src/styles/layout.css create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/src/types/types.ts create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/src/utils/formatters.ts create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/tailwind.config.js create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/tsconfig.app.json create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/tsconfig.json create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/tsconfig.node.json create mode 100644 assignments/7-explorer-wallet/sepolia-explorer/vite.config.ts diff --git a/.gitignore b/.gitignore index 962c2511..bb616a51 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,29 @@ -.env -.vscode/ -package-lock.json -node_modules \ No newline at end of file +# --- Node / npm +**/node_modules/ +**/package-lock.json +**/npm-debug.log* +**/pnpm-debug.log* + +# --- Env / secrets --- +**/.env +**/.env.* + +# --- Editors --- +**/.vscode/ +**/.idea/ + +# --- Build outputs --- +**/dist/ +**/build/ +**/out/ +**/.cache/ +**/.turbo/ + +# --- Rust --- +**/target/ +**/*.rs.bk + +# --- OS --- +.DS_Store +Thumbs.db \ No newline at end of file diff --git a/assignments/2-gas-hash/package-lock.json b/assignments/2-gas-hash/package-lock.json deleted file mode 100644 index b088725f..00000000 --- a/assignments/2-gas-hash/package-lock.json +++ /dev/null @@ -1,348 +0,0 @@ -{ - "name": "2-gas-hash", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "dependencies": { - "@types/node": "^25.0.9", - "crypto": "^1.0.1", - "ethers": "^6.16.0", - "readline-sync": "^1.4.10", - "ts-node": "^10.9.2" - }, - "devDependencies": { - "@types/readline-sync": "^1.4.8" - } - }, - "node_modules/@adraffy/ens-normalize": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", - "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==", - "license": "MIT" - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@noble/curves": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", - "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.3.2" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@noble/hashes": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", - "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", - "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", - "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", - "license": "MIT" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "license": "MIT" - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "license": "MIT" - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "25.0.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.9.tgz", - "integrity": "sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==", - "license": "MIT", - "peer": true, - "dependencies": { - "undici-types": "~7.16.0" - } - }, - "node_modules/@types/readline-sync": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/@types/readline-sync/-/readline-sync-1.4.8.tgz", - "integrity": "sha512-BL7xOf0yKLA6baAX6MMOnYkoflUyj/c7y3pqMRfU0va7XlwHAOTOIo4x55P/qLfMsuaYdJJKubToLqRVmRtRZA==", - "dev": true, - "license": "MIT" - }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/aes-js": { - "version": "4.0.0-beta.5", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", - "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==", - "license": "MIT" - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "license": "MIT" - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "license": "MIT" - }, - "node_modules/crypto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz", - "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==", - "deprecated": "This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in.", - "license": "ISC" - }, - "node_modules/diff": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz", - "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/ethers": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.16.0.tgz", - "integrity": "sha512-U1wulmetNymijEhpSEQ7Ct/P/Jw9/e7R1j5XIbPRydgV2DjLVMsULDlNksq3RQnFgKoLlZf88ijYtWEXcPa07A==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/ethers-io/" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@adraffy/ens-normalize": "1.10.1", - "@noble/curves": "1.2.0", - "@noble/hashes": "1.3.2", - "@types/node": "22.7.5", - "aes-js": "4.0.0-beta.5", - "tslib": "2.7.0", - "ws": "8.17.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/ethers/node_modules/@types/node": { - "version": "22.7.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", - "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", - "license": "MIT", - "dependencies": { - "undici-types": "~6.19.2" - } - }, - "node_modules/ethers/node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", - "license": "MIT" - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "license": "ISC" - }, - "node_modules/readline-sync": { - "version": "1.4.10", - "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz", - "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==", - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/ts-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "license": "MIT", - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "license": "0BSD" - }, - "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "license": "Apache-2.0", - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", - "license": "MIT" - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "license": "MIT" - }, - "node_modules/ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", - "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 - } - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "license": "MIT", - "engines": { - "node": ">=6" - } - } - } -} diff --git a/assignments/2-gas-hash/package.json b/assignments/2-gas-hash/package.json index 3d505094..40cabcec 100644 --- a/assignments/2-gas-hash/package.json +++ b/assignments/2-gas-hash/package.json @@ -7,10 +7,10 @@ "@types/node": "^25.0.9", "crypto": "^1.0.1", "ethers": "^6.16.0", - "readline-sync": "^1.4.10", - "ts-node": "^10.9.2" + "readline-sync": "^1.4.10" }, "devDependencies": { - "@types/readline-sync": "^1.4.8" + "@types/readline-sync": "^1.4.8", + "ts-node": "^10.9.2" } } diff --git a/assignments/3-block-hash/package-lock.json b/assignments/3-block-hash/package-lock.json deleted file mode 100644 index 621fb32f..00000000 --- a/assignments/3-block-hash/package-lock.json +++ /dev/null @@ -1,354 +0,0 @@ -{ - "name": "3-block-hash", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "3-block-hash", - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "crypto": "^1.0.1", - "ethers": "^6.16.0" - }, - "devDependencies": { - "@types/node": "^25.0.10", - "ts-node": "^10.9.2" - } - }, - "node_modules/@adraffy/ens-normalize": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", - "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==", - "license": "MIT" - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@noble/curves": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", - "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.3.2" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@noble/hashes": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", - "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", - "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", - "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "25.0.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.10.tgz", - "integrity": "sha512-zWW5KPngR/yvakJgGOmZ5vTBemDoSqF3AcV/LrO5u5wTWyEAVVh+IT39G4gtyAkh3CtTZs8aX/yRM82OfzHJRg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "undici-types": "~7.16.0" - } - }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/aes-js": { - "version": "4.0.0-beta.5", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", - "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==", - "license": "MIT" - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "license": "MIT" - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/crypto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz", - "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==", - "deprecated": "This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in.", - "license": "ISC" - }, - "node_modules/diff": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz", - "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/ethers": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.16.0.tgz", - "integrity": "sha512-U1wulmetNymijEhpSEQ7Ct/P/Jw9/e7R1j5XIbPRydgV2DjLVMsULDlNksq3RQnFgKoLlZf88ijYtWEXcPa07A==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/ethers-io/" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@adraffy/ens-normalize": "1.10.1", - "@noble/curves": "1.2.0", - "@noble/hashes": "1.3.2", - "@types/node": "22.7.5", - "aes-js": "4.0.0-beta.5", - "tslib": "2.7.0", - "ws": "8.17.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/ethers/node_modules/@types/node": { - "version": "22.7.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", - "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", - "license": "MIT", - "dependencies": { - "undici-types": "~6.19.2" - } - }, - "node_modules/ethers/node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", - "license": "MIT" - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true, - "license": "ISC" - }, - "node_modules/ts-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "license": "0BSD" - }, - "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", - "dev": true, - "license": "MIT" - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true, - "license": "MIT" - }, - "node_modules/ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", - "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 - } - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - } - } -} diff --git a/assignments/6-wallet-address/package-lock.json b/assignments/6-wallet-address/package-lock.json deleted file mode 100644 index 9cbca588..00000000 --- a/assignments/6-wallet-address/package-lock.json +++ /dev/null @@ -1,328 +0,0 @@ -{ - "name": "6-wallet-address", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "6-wallet-address", - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "ethers": "^6.16.0" - }, - "devDependencies": { - "ts-node": "^10.9.2" - } - }, - "node_modules/@adraffy/ens-normalize": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", - "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==", - "license": "MIT" - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@noble/curves": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", - "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.3.2" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@noble/hashes": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", - "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", - "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", - "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "22.7.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", - "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "undici-types": "~6.19.2" - } - }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/aes-js": { - "version": "4.0.0-beta.5", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", - "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==", - "license": "MIT" - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "license": "MIT" - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/diff": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz", - "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/ethers": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.16.0.tgz", - "integrity": "sha512-U1wulmetNymijEhpSEQ7Ct/P/Jw9/e7R1j5XIbPRydgV2DjLVMsULDlNksq3RQnFgKoLlZf88ijYtWEXcPa07A==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/ethers-io/" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@adraffy/ens-normalize": "1.10.1", - "@noble/curves": "1.2.0", - "@noble/hashes": "1.3.2", - "@types/node": "22.7.5", - "aes-js": "4.0.0-beta.5", - "tslib": "2.7.0", - "ws": "8.17.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true, - "license": "ISC" - }, - "node_modules/ts-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "license": "0BSD" - }, - "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", - "license": "MIT" - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true, - "license": "MIT" - }, - "node_modules/ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", - "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 - } - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - } - } -} diff --git a/assignments/7-explorer-wallet/sepolia-explorer/.gitignore b/assignments/7-explorer-wallet/sepolia-explorer/.gitignore new file mode 100644 index 00000000..a547bf36 --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/assignments/7-explorer-wallet/sepolia-explorer/README.md b/assignments/7-explorer-wallet/sepolia-explorer/README.md new file mode 100644 index 00000000..d06997b1 --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/README.md @@ -0,0 +1,98 @@ +# React + TypeScript + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) (or [oxc](https://oxc.rs) when used in [rolldown-vite](https://vite.dev/guide/rolldown)) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## React Compiler + +The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation). + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules: + +```js +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + // Other configs... + + // Remove tseslint.configs.recommended and replace with this + tseslint.configs.recommendedTypeChecked, + // Alternatively, use this for stricter rules + tseslint.configs.strictTypeChecked, + // Optionally, add this for stylistic rules + tseslint.configs.stylisticTypeChecked, + + // Other configs... + ], + languageOptions: { + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + // other options... + }, + }, +]) +``` + +You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules: + +```js +// eslint.config.js +import reactX from 'eslint-plugin-react-x' +import reactDom from 'eslint-plugin-react-dom' + +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + // Other configs... + // Enable lint rules for React + reactX.configs['recommended-typescript'], + // Enable lint rules for React DOM + reactDom.configs.recommended, + ], + languageOptions: { + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + // other options... + }, + }, +]) +``` + + +## Step 2: Folder Structure (Your Provided One, Corrected) +Your structure is solid—reusable and scalable. Why each folder? + +components/: Reusable UI (e.g., LatestBlocks renders a table; ui/ for primitives like Spinner). +pages/: Page components (e.g., Home composes components; loaded by router). +services/: API logic (rpc.ts wraps RPC calls—keeps App clean). +types/: TS interfaces (e.g., RpcBlock—ensures type safety across app). +hooks/: Data fetching (e.g., useRecentBlocks—encapsulates useState/useEffect for reuse). +utils/: Helpers (e.g., formatters.ts for hex-to-human-readable). +routes/: Optional (we'll put routes in App.tsx for simplicity—no index.tsx needed). +App.tsx: Root (router, header/footer). +main.tsx: Entry (ReactDOM.render). +No changes needed—it's production-ready. +Step 3: Implementing Header and Footer + +Header: Fixed top nav with links (Home, Blocks). Why? Consistent navigation; uses React Router's Link for client-side routing (no page reloads). +Footer: Simple bottom with copyright. Why? Completes layout; add more later (e.g., links). +Integration: Wrap in App.tsx with and . + +Now, the complete codebase (all files, fully typed, no 'any', no errors). I've included all from previous (corrected for pure RPC, types fixed). Copy-paste into files. + + + diff --git a/assignments/7-explorer-wallet/sepolia-explorer/eslint.config.js b/assignments/7-explorer-wallet/sepolia-explorer/eslint.config.js new file mode 100644 index 00000000..5e6b472f --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/eslint.config.js @@ -0,0 +1,23 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import tseslint from 'typescript-eslint' +import { defineConfig, globalIgnores } from 'eslint/config' + +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + js.configs.recommended, + tseslint.configs.recommended, + reactHooks.configs.flat.recommended, + reactRefresh.configs.vite, + ], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + }, +]) diff --git a/assignments/7-explorer-wallet/sepolia-explorer/index.html b/assignments/7-explorer-wallet/sepolia-explorer/index.html new file mode 100644 index 00000000..054f3acc --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/index.html @@ -0,0 +1,13 @@ + + + + + + + sepolia-explorer + + +
+ + + diff --git a/assignments/7-explorer-wallet/sepolia-explorer/package.json b/assignments/7-explorer-wallet/sepolia-explorer/package.json new file mode 100644 index 00000000..d4e0b173 --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/package.json @@ -0,0 +1,34 @@ +{ + "name": "sepolia-explorer", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "react": "^19.2.0", + "react-dom": "^19.2.0", + "react-router-dom": "^7.13.0" + }, + "devDependencies": { + "@eslint/js": "^9.39.1", + "@types/node": "^24.10.1", + "@types/react": "^19.2.5", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^5.1.1", + "eslint": "^9.39.1", + "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-refresh": "^0.4.24", + "globals": "^16.5.0", + "typescript": "~5.9.3", + "typescript-eslint": "^8.46.4", + "vite": "npm:rolldown-vite@7.2.5" + }, + "overrides": { + "vite": "npm:rolldown-vite@7.2.5" + } +} diff --git a/assignments/7-explorer-wallet/sepolia-explorer/public/favicon.ico b/assignments/7-explorer-wallet/sepolia-explorer/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..de6418a1d88bfab682efc0483006cc07117b17e3 GIT binary patch literal 15406 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 M^8d^H220?-0q|k-lmGw# literal 0 HcmV?d00001 diff --git a/assignments/7-explorer-wallet/sepolia-explorer/public/favicon_io/android-chrome-192x192.png b/assignments/7-explorer-wallet/sepolia-explorer/public/favicon_io/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..84b87b961bba90671ca8a1bd87aa20489c6a88a7 GIT binary patch literal 33960 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 Y0Jd5-F1ngc^Z)<=07*qoM6N<$f_*uwY5)KL literal 0 HcmV?d00001 diff --git a/assignments/7-explorer-wallet/sepolia-explorer/public/favicon_io/android-chrome-512x512.png b/assignments/7-explorer-wallet/sepolia-explorer/public/favicon_io/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..e7d3d416b4231c501d6b0b675d7deab3ca66b73e GIT binary patch literal 154013 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

$6D#_NR0D&6x^*}rY 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

`?VNiRdqIQk>+SwOI`u!9ufFzbXu~tO`1NLJaqh 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 literal 0 HcmV?d00001 diff --git a/assignments/7-explorer-wallet/sepolia-explorer/public/favicon_io/favicon-32x32.png b/assignments/7-explorer-wallet/sepolia-explorer/public/favicon_io/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..b9966103b71e49b14dc03ef865fa0f4bdd6ad1c0 GIT binary patch literal 2337 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 M^8d^H220?-0q|k-lmGw# literal 0 HcmV?d00001 diff --git a/assignments/7-explorer-wallet/sepolia-explorer/public/favicon_io/site.webmanifest b/assignments/7-explorer-wallet/sepolia-explorer/public/favicon_io/site.webmanifest new file mode 100644 index 00000000..45dc8a20 --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/public/favicon_io/site.webmanifest @@ -0,0 +1 @@ +{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} \ No newline at end of file diff --git a/assignments/7-explorer-wallet/sepolia-explorer/src/App.css b/assignments/7-explorer-wallet/sepolia-explorer/src/App.css new file mode 100644 index 00000000..b9d355df --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/src/App.css @@ -0,0 +1,42 @@ +#root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +.logo { + height: 6em; + padding: 1.5em; + will-change: filter; + transition: filter 300ms; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.react:hover { + filter: drop-shadow(0 0 2em #61dafbaa); +} + +@keyframes logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@media (prefers-reduced-motion: no-preference) { + a:nth-of-type(2) .logo { + animation: logo-spin infinite 20s linear; + } +} + +.card { + padding: 2em; +} + +.read-the-docs { + color: #888; +} diff --git a/assignments/7-explorer-wallet/sepolia-explorer/src/App.tsx b/assignments/7-explorer-wallet/sepolia-explorer/src/App.tsx new file mode 100644 index 00000000..bbbf9512 --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/src/App.tsx @@ -0,0 +1,49 @@ +import type { JSX } from 'react'; +import { BrowserRouter, Routes, Route, Link } from 'react-router-dom'; +import Home from './pages/Home'; +import Blocks from './pages/Blocks'; +import BlockDetail from './pages/BlockDetail'; +import TxDetail from './pages/TxDetail'; + +export default function App(): JSX.Element { + return ( + +

+ +
+
+ + } /> + } /> + } /> + } /> + + Transactions List (Implement similar to Blocks) + + } + />{' '} + {/* Placeholder */} + +
+
+
+ © 2026 Sepolia Explorer. Powered by Ethereum JSON-RPC. +
+
+ + ); +} diff --git a/assignments/7-explorer-wallet/sepolia-explorer/src/assets/react.svg b/assignments/7-explorer-wallet/sepolia-explorer/src/assets/react.svg new file mode 100644 index 00000000..6c87de9b --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assignments/7-explorer-wallet/sepolia-explorer/src/components/BlockCard.tsx b/assignments/7-explorer-wallet/sepolia-explorer/src/components/BlockCard.tsx new file mode 100644 index 00000000..d103ebe9 --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/src/components/BlockCard.tsx @@ -0,0 +1,5 @@ +import type { JSX } from 'react'; +// Placeholder: Can be used for card-style blocks if needed. +export default function BlockCard(): JSX.Element { + return
Block Card Placeholder
; +} diff --git a/assignments/7-explorer-wallet/sepolia-explorer/src/components/Footer.tsx b/assignments/7-explorer-wallet/sepolia-explorer/src/components/Footer.tsx new file mode 100644 index 00000000..4d5a4606 --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/src/components/Footer.tsx @@ -0,0 +1,11 @@ +import '../styles/layout.css'; + +const Footer: React.FC = () => { + return ( +
+

© {new Date().getFullYear()} My React App

+
+ ); +}; + +export default Footer; diff --git a/assignments/7-explorer-wallet/sepolia-explorer/src/components/Header.tsx b/assignments/7-explorer-wallet/sepolia-explorer/src/components/Header.tsx new file mode 100644 index 00000000..546b29f5 --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/src/components/Header.tsx @@ -0,0 +1,23 @@ +import { NavLink } from "react-router-dom"; +// import "../styles/layout.css"; + +const Header: React.FC = () => { + return ( +
+ + +
+ ); +}; + +export default Header; diff --git a/assignments/7-explorer-wallet/sepolia-explorer/src/components/LatestTransaction.tsx b/assignments/7-explorer-wallet/sepolia-explorer/src/components/LatestTransaction.tsx new file mode 100644 index 00000000..4d3fcbe5 --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/src/components/LatestTransaction.tsx @@ -0,0 +1,38 @@ +import { Link } from 'react-router-dom'; +import { useRecentTransactions } from '../hooks/useSepolia'; +import { shortenHash, weiToEth } from '../utils/formatters'; +import LoadingSpinner from './ui/LoadingSpinner'; +import ErrorMessage from './ui/ErrorMessage'; +import type { RpcTransaction } from '../types/types'; + +export default function LatestTransactions(): JSX.Element { + const { data, loading, error } = useRecentTransactions(10); + + if (loading) return ; + if (error) return ; + + return ( +
+

Latest Transactions

+ + + {data?.map((tx: RpcTransaction) => ( + + + + + + + ))} + +
+ + {shortenHash(tx.hash)} + + From {shortenHash(tx.from)}To {tx.to ? shortenHash(tx.to) : 'Contract Creation'}{weiToEth(tx.value)} ETH
+ + View All Transactions → + +
+ ); +} diff --git a/assignments/7-explorer-wallet/sepolia-explorer/src/components/TransactionRow.tsx b/assignments/7-explorer-wallet/sepolia-explorer/src/components/TransactionRow.tsx new file mode 100644 index 00000000..864a7d98 --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/src/components/TransactionRow.tsx @@ -0,0 +1,9 @@ +import type { JSX } from 'react'; +// Placeholder: For reusable tx rows in tables. +export default function TransactionRow(): JSX.Element { + return ( + + Tx Row Placeholder + + ); +} diff --git a/assignments/7-explorer-wallet/sepolia-explorer/src/components/ui/BlockCard.tsx b/assignments/7-explorer-wallet/sepolia-explorer/src/components/ui/BlockCard.tsx new file mode 100644 index 00000000..d103ebe9 --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/src/components/ui/BlockCard.tsx @@ -0,0 +1,5 @@ +import type { JSX } from 'react'; +// Placeholder: Can be used for card-style blocks if needed. +export default function BlockCard(): JSX.Element { + return
Block Card Placeholder
; +} diff --git a/assignments/7-explorer-wallet/sepolia-explorer/src/components/ui/ErrorMessage.tsx b/assignments/7-explorer-wallet/sepolia-explorer/src/components/ui/ErrorMessage.tsx new file mode 100644 index 00000000..671724d5 --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/src/components/ui/ErrorMessage.tsx @@ -0,0 +1,9 @@ +interface ErrorMessageProps { + message: string; +} + +export default function ErrorMessage({ + message, +}: ErrorMessageProps): JSX.Element { + return
{message}
; +} diff --git a/assignments/7-explorer-wallet/sepolia-explorer/src/components/ui/LatestBlocks.tsx b/assignments/7-explorer-wallet/sepolia-explorer/src/components/ui/LatestBlocks.tsx new file mode 100644 index 00000000..ed8a716c --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/src/components/ui/LatestBlocks.tsx @@ -0,0 +1,42 @@ +import type { JSX } from 'react'; +import { Link } from 'react-router-dom'; +import { useRecentBlocks } from '../../hooks/useSepolia'; +import { shortenHash, formatTimestamp, hexToNumber } from '../../utils/formatters'; +import LoadingSpinner from './LoadingSpinner'; +import ErrorMessage from './ErrorMessage'; +import type { RpcBlock } from '../../types/types'; + +export default function LatestBlocks(): JSX.Element { + const { data, loading, error } = useRecentBlocks(10); + + if (loading) return ; + if (error) return ; + + return ( +
+

Latest Blocks

+ + + {data?.map((block: RpcBlock) => ( + + + + + + + ))} + +
+ + {hexToNumber(block.number)} + + {formatTimestamp(block.timestamp)}{shortenHash(block.miner)}{(block.transactions as string[]).length} txns
+ + View All Blocks → + +
+ ); +} diff --git a/assignments/7-explorer-wallet/sepolia-explorer/src/components/ui/LatestTransactions.tsx b/assignments/7-explorer-wallet/sepolia-explorer/src/components/ui/LatestTransactions.tsx new file mode 100644 index 00000000..c20f57f8 --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/src/components/ui/LatestTransactions.tsx @@ -0,0 +1,38 @@ +import { Link } from 'react-router-dom'; +import { useRecentTransactions } from '../../hooks/useSepolia'; +import { shortenHash, weiToEth } from '../../utils/formatters'; +import LoadingSpinner from './LoadingSpinner'; +import ErrorMessage from './ErrorMessage'; +import type { RpcTransaction } from '../../types/types'; + +export default function LatestTransactions(): JSX.Element { + const { data, loading, error } = useRecentTransactions(10); + + if (loading) return ; + if (error) return ; + + return ( +
+

Latest Transactions

+ + + {data?.map((tx: RpcTransaction) => ( + + + + + + + ))} + +
+ + {shortenHash(tx.hash)} + + From {shortenHash(tx.from)}To {tx.to ? shortenHash(tx.to) : 'Contract Creation'}{weiToEth(tx.value)} ETH
+ + View All Transactions → + +
+ ); +} diff --git a/assignments/7-explorer-wallet/sepolia-explorer/src/components/ui/LoadingSpinner.tsx b/assignments/7-explorer-wallet/sepolia-explorer/src/components/ui/LoadingSpinner.tsx new file mode 100644 index 00000000..97add7cd --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/src/components/ui/LoadingSpinner.tsx @@ -0,0 +1,3 @@ +export default function LoadingSpinner(): JSX.Element { + return
Loading...
; +} diff --git a/assignments/7-explorer-wallet/sepolia-explorer/src/components/ui/TransactionRow.tsx b/assignments/7-explorer-wallet/sepolia-explorer/src/components/ui/TransactionRow.tsx new file mode 100644 index 00000000..4a8cef83 --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/src/components/ui/TransactionRow.tsx @@ -0,0 +1,10 @@ +import type { JSX } from 'react'; + +// Placeholder: For reusable tx rows in tables. +export default function TransactionRow(): JSX.Element { + return ( + + Tx Row Placeholder + + ); +} diff --git a/assignments/7-explorer-wallet/sepolia-explorer/src/hooks/useSepolia.ts b/assignments/7-explorer-wallet/sepolia-explorer/src/hooks/useSepolia.ts new file mode 100644 index 00000000..3317e43c --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/src/hooks/useSepolia.ts @@ -0,0 +1,110 @@ +import { useState, useEffect } from 'react'; +import type { RpcBlock, RpcTransaction, RpcTransactionReceipt } from '../types/types'; +import { + getRecentBlocks, + getRecentTransactions, + getBlockByNumber, + getGasPrice, + getTransactionByHash, + getTransactionReceipt, +} from '../services/rpc'; +// import type { +// RpcBlock, +// RpcTransaction, +// RpcTransactionReceipt, +// } from '../types/transaction'; // Wait, transaction.ts has RpcTransaction; block.ts has RpcBlock. Fix: import from both. +// import type { RpcBlock } from '../types/block'; +// import type { +// RpcTransaction, +// RpcTransactionReceipt, +// } from '../types/transaction'; + +export function useRecentBlocks(count: number = 10) { + const [data, setData] = useState(null); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); + + useEffect(() => { + setLoading(true); + setError(null); + getRecentBlocks(count) + .then(setData) + .catch((err: Error) => setError(err.message)) + .finally(() => setLoading(false)); + }, [count]); + + return { data, loading, error }; +} + +export function useRecentTransactions(count: number = 10) { + const [data, setData] = useState(null); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); + + useEffect(() => { + setLoading(true); + setError(null); + getRecentTransactions(count) + .then(setData) + .catch((err: Error) => setError(err.message)) + .finally(() => setLoading(false)); + }, [count]); + + return { data, loading, error }; +} + +export function useBlock(blockNumber: number) { + const [data, setData] = useState(null); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); + + useEffect(() => { + setLoading(true); + setError(null); + getBlockByNumber(blockNumber, true) + .then(setData) + .catch((err: Error) => setError(err.message)) + .finally(() => setLoading(false)); + }, [blockNumber]); + + return { data, loading, error }; +} + +export function useTransaction(txHash: string) { + const [tx, setTx] = useState(null); + const [receipt, setReceipt] = useState(null); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); + + useEffect(() => { + if (!txHash) return; + setLoading(true); + setError(null); + Promise.all([getTransactionByHash(txHash), getTransactionReceipt(txHash)]) + .then(([txData, receiptData]) => { + setTx(txData); + setReceipt(receiptData); + }) + .catch((err: Error) => setError(err.message)) + .finally(() => setLoading(false)); + }, [txHash]); + + return { tx, receipt, loading, error }; +} + +export function useGasPrice() { + const [data, setData] = useState(null); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); + + useEffect(() => { + setLoading(true); + setError(null); + getGasPrice() + .then(setData) + .catch((err: Error) => setError(err.message)) + .finally(() => setLoading(false)); + }, []); + + return { data, loading, error }; +} diff --git a/assignments/7-explorer-wallet/sepolia-explorer/src/index.css b/assignments/7-explorer-wallet/sepolia-explorer/src/index.css new file mode 100644 index 00000000..f8a79945 --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/src/index.css @@ -0,0 +1,7 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +body { + @apply bg-sepolia-darker text-gray-200; +} \ No newline at end of file diff --git a/assignments/7-explorer-wallet/sepolia-explorer/src/main.tsx b/assignments/7-explorer-wallet/sepolia-explorer/src/main.tsx new file mode 100644 index 00000000..93db3799 --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/src/main.tsx @@ -0,0 +1,10 @@ +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import App from './App.tsx'; +import './index.css'; + +ReactDOM.createRoot(document.getElementById('root')!).render( + + + +); diff --git a/assignments/7-explorer-wallet/sepolia-explorer/src/pages/BlockDetail.tsx b/assignments/7-explorer-wallet/sepolia-explorer/src/pages/BlockDetail.tsx new file mode 100644 index 00000000..d19cd4f3 --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/src/pages/BlockDetail.tsx @@ -0,0 +1,68 @@ +import { useParams } from 'react-router-dom'; +import { Link } from 'react-router-dom'; +import { useBlock } from '../hooks/useSepolia'; +import { + shortenHash, + formatTimestamp, + hexToNumber, + weiToEth, +} from '../utils/formatters'; +import LoadingSpinner from '../components/ui/LoadingSpinner'; +import ErrorMessage from '../components/ui/ErrorMessage'; +import type { RpcTransaction } from '../types/types'; +import type { JSX } from 'react'; + +export default function BlockDetail(): JSX.Element { + const { blockNumber } = useParams<{ blockNumber?: string }>(); + const num = blockNumber ? parseInt(blockNumber, 10) : 0; + const { data, loading, error } = useBlock(num); + + if (loading) return ; + if (error) return ; + if (!data) return ; + + return ( +
+

+ Block #{hexToNumber(data.number)} +

+
+

+ Hash: {data.hash} +

+

+ Parent Hash: {data.parentHash} +

+

+ Timestamp: {formatTimestamp(data.timestamp)} +

+

+ Miner: {shortenHash(data.miner)} +

+

+ Gas Used / Limit: {weiToEth(data.gasUsed)} /{' '} + {weiToEth(data.gasLimit)} +

+
+

Transactions

+ + + {(data.transactions as RpcTransaction[]).map((tx: RpcTransaction) => ( + + + + + + + ))} + +
+ + {shortenHash(tx.hash)} + + From {shortenHash(tx.from)} + To {tx.to ? shortenHash(tx.to) : 'Contract'} + {weiToEth(tx.value)} ETH
+
+ ); +} \ No newline at end of file diff --git a/assignments/7-explorer-wallet/sepolia-explorer/src/pages/Blocks.tsx b/assignments/7-explorer-wallet/sepolia-explorer/src/pages/Blocks.tsx new file mode 100644 index 00000000..a7787db1 --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/src/pages/Blocks.tsx @@ -0,0 +1,11 @@ + +const Blocks: React.FC = () => { + return ( + <> +

Blocks

+

Blocks data will be displayed here.

+ + ); +}; + +export default Blocks; diff --git a/assignments/7-explorer-wallet/sepolia-explorer/src/pages/Home.tsx b/assignments/7-explorer-wallet/sepolia-explorer/src/pages/Home.tsx new file mode 100644 index 00000000..ba7b4814 --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/src/pages/Home.tsx @@ -0,0 +1,65 @@ +import { useState, useEffect, type JSX } from 'react'; +import LatestBlocks from './LatestBlocks'; +import LatestTransactions from '../components/LatestTransaction'; +import { useGasPrice } from '../hooks/useSepolia'; +import { weiToEth } from '../utils/formatters'; +import LoadingSpinner from '../components/ui/LoadingSpinner'; +import ErrorMessage from '../components/ui/ErrorMessage'; + +interface EthPriceResponse { + ethereum: { + usd: number; + }; +} + +export default function Home(): JSX.Element { + const { + data: gasPrice, + loading: gasLoading, + error: gasError, + } = useGasPrice(); + const [price, setPrice] = useState(null); + const [priceLoading, setPriceLoading] = useState(true); + const [priceError, setPriceError] = useState(null); + + useEffect(() => { + fetch( + 'https://api.coingecko.com/api/v3/simple/price?ids=ethereum&vs_currencies=usd' + ) + .then((res: Response) => res.json() as Promise) + .then((data: EthPriceResponse) => setPrice(data.ethereum.usd)) + .catch((err: Error) => setPriceError(err.message)) + .finally(() => setPriceLoading(false)); + }, []); + + return ( +
+
+
+

ETH Price

+ {priceLoading ? ( + + ) : priceError ? ( + + ) : ( +

${price?.toFixed(2)}

+ )} +
+
+

Gas Price

+ {gasLoading ? ( + + ) : gasError ? ( + + ) : ( +

{weiToEth(gasPrice || '0')} Gwei

+ )} +
+
+
+ + +
+
+ ); +} diff --git a/assignments/7-explorer-wallet/sepolia-explorer/src/pages/LatestBlocks.tsx b/assignments/7-explorer-wallet/sepolia-explorer/src/pages/LatestBlocks.tsx new file mode 100644 index 00000000..7f0868db --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/src/pages/LatestBlocks.tsx @@ -0,0 +1,41 @@ +import { Link } from 'react-router-dom'; +import { useRecentBlocks } from '../hooks/useSepolia'; +import { shortenHash, formatTimestamp, hexToNumber } from '../utils/formatters'; +import LoadingSpinner from '../components/ui/LoadingSpinner'; +import ErrorMessage from '../components/ui/ErrorMessage'; +import type { RpcBlock } from '../types/types'; + +export default function LatestBlocks(): JSX.Element { + const { data, loading, error } = useRecentBlocks(10); + + if (loading) return ; + if (error) return ; + + return ( +
+

Latest Blocks

+ + + {data?.map((block: RpcBlock) => ( + + + + + + + ))} + +
+ + {hexToNumber(block.number)} + + {formatTimestamp(block.timestamp)}{shortenHash(block.miner)}{(block.transactions as string[]).length} txns
+ + View All Blocks → + +
+ ); +} diff --git a/assignments/7-explorer-wallet/sepolia-explorer/src/pages/Transactions.tsx b/assignments/7-explorer-wallet/sepolia-explorer/src/pages/Transactions.tsx new file mode 100644 index 00000000..79a24b08 --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/src/pages/Transactions.tsx @@ -0,0 +1,10 @@ +const Transactions: React.FC = () => { + return ( + <> +

Transactions

+

Transactions data will be displayed here.

+ + ); +}; + +export default Transactions; diff --git a/assignments/7-explorer-wallet/sepolia-explorer/src/pages/TxDetail.tsx b/assignments/7-explorer-wallet/sepolia-explorer/src/pages/TxDetail.tsx new file mode 100644 index 00000000..57a02ef7 --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/src/pages/TxDetail.tsx @@ -0,0 +1,61 @@ +import type { JSX } from 'react'; +import { useParams } from 'react-router-dom'; +import { Link } from 'react-router-dom'; +import { useTransaction } from '../hooks/useSepolia'; +import { shortenHash, weiToEth, hexToNumber } from '../utils/formatters'; +import LoadingSpinner from '../components/ui/LoadingSpinner'; +import ErrorMessage from '../components/ui/ErrorMessage'; + +export default function TxDetail(): JSX.Element { + const { txHash } = useParams<{ txHash?: string }>(); + const { tx, receipt, loading, error } = useTransaction(txHash || ''); + + if (loading) return ; + if (error) return ; + if (!tx) return ; + + const status = receipt + ? hexToNumber(receipt.status) === 1 + ? 'Success' + : 'Failed' + : 'Pending'; + + return ( +
+

+ Transaction {shortenHash(tx.hash)} +

+
+

+ Block:{' '} + + {hexToNumber(tx.blockNumber)} + +

+

+ From: {shortenHash(tx.from)} +

+

+ To:{' '} + {tx.to ? shortenHash(tx.to) : 'Contract Creation'} +

+

+ Value: {weiToEth(tx.value)} ETH +

+

+ Gas Price: {weiToEth(tx.gasPrice)} Gwei +

+

+ Input Data:{' '} + {tx.input} +

+

+ Status: {status} +

+
+
+ ); +} diff --git a/assignments/7-explorer-wallet/sepolia-explorer/src/routes/index.ts b/assignments/7-explorer-wallet/sepolia-explorer/src/routes/index.ts new file mode 100644 index 00000000..e69de29b diff --git a/assignments/7-explorer-wallet/sepolia-explorer/src/services/etherscanApi.ts b/assignments/7-explorer-wallet/sepolia-explorer/src/services/etherscanApi.ts new file mode 100644 index 00000000..e69de29b diff --git a/assignments/7-explorer-wallet/sepolia-explorer/src/services/rpc.ts b/assignments/7-explorer-wallet/sepolia-explorer/src/services/rpc.ts new file mode 100644 index 00000000..3a01ad33 --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/src/services/rpc.ts @@ -0,0 +1,105 @@ + +import type { RpcBlock, RpcTransaction, RpcTransactionReceipt } from "../types/types"; + + +const SEPOLIA_RPC = 'https://ethereum-sepolia-rpc.publicnode.com'; + +interface RpcRequest { + jsonrpc: '2.0'; + method: string; + params: unknown[]; + id: number; +} + +interface RpcResponse { + jsonrpc: '2.0'; + id: number; + result: T; + error?: { code: number; message: string }; +} + +async function rpcPost(method: string, params: unknown[] = []): Promise { + const payload: RpcRequest = { + jsonrpc: '2.0', + method, + params, + id: Date.now(), + }; + + const res = await fetch(SEPOLIA_RPC, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(payload), + }); + + if (!res.ok) throw new Error(`RPC HTTP error: ${res.status}`); + + const json = (await res.json()) as RpcResponse; + if (json.error) throw new Error(`RPC error: ${json.error.message}`); + + return json.result; +} + +// eth_blockNumber: Returns latest block number (hex). Why? To fetch recent blocks by offsetting from head. +export async function getBlockNumber(): Promise { + const hex = await rpcPost('eth_blockNumber'); + return parseInt(hex, 16); +} + +// eth_getBlockByNumber: Fetches block by number/tag. fullTx=true includes tx objects (for details); false=hashes (faster for lists). +// Why? Core for block data; params: block tag/number (hex), fullTx boolean. +export async function getBlockByNumber( + block: string | number, + fullTx: boolean = false +): Promise { + const blockParam = + typeof block === 'number' ? `0x${block.toString(16)}` : block; + return rpcPost('eth_getBlockByNumber', [blockParam, fullTx]); +} + +// eth_getTransactionByHash: Fetches tx by hash. Why? For tx details; includes value, input, etc. +export async function getTransactionByHash( + hash: string +): Promise { + return rpcPost('eth_getTransactionByHash', [hash]); +} + +// eth_getTransactionReceipt: Fetches receipt for status/gas. Why? Supplements tx; status not in eth_getTransactionByHash. +export async function getTransactionReceipt( + hash: string +): Promise { + return rpcPost('eth_getTransactionReceipt', [hash]); +} + +// eth_gasPrice: Current gas price (hex wei). Why? Shows network fee; for homepage stats. +export async function getGasPrice(): Promise { + return rpcPost('eth_gasPrice'); +} + +// Helper: Recent blocks via loop. Why? No batch RPC for this; sequential but simple. +export async function getRecentBlocks(count: number = 10): Promise { + const latest = await getBlockNumber(); + const blocks: RpcBlock[] = []; + for (let i = 0; i < count; i++) { + const block = await getBlockByNumber(latest - i, false); + blocks.push(block); + } + return blocks; +} + +// Helper: Recent txs from recent blocks. Why? Flatten tx hashes, fetch details; inefficient but RPC-pure. +export async function getRecentTransactions( + count: number = 10 +): Promise { + const recentBlocks = await getRecentBlocks(5); + const txHashes: string[] = recentBlocks.flatMap( + (b) => b.transactions as string[] + ); + const recentTxHashes = txHashes.slice(0, count); + const txs: RpcTransaction[] = []; + for (const hash of recentTxHashes) { + const tx = await getTransactionByHash(hash); + txs.push(tx); + } + return txs; +} \ No newline at end of file diff --git a/assignments/7-explorer-wallet/sepolia-explorer/src/styles/layout.css b/assignments/7-explorer-wallet/sepolia-explorer/src/styles/layout.css new file mode 100644 index 00000000..e69de29b diff --git a/assignments/7-explorer-wallet/sepolia-explorer/src/types/types.ts b/assignments/7-explorer-wallet/sepolia-explorer/src/types/types.ts new file mode 100644 index 00000000..9886c514 --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/src/types/types.ts @@ -0,0 +1,31 @@ +export interface RpcBlock { + number: string; // hex + hash: string; + parentHash: string; + timestamp: string; // hex unix seconds + miner: string; + gasUsed: string; // hex wei + gasLimit: string; // hex wei + transactions: string[] | RpcTransaction[]; // hashes or full txs +} + +export interface RpcTransaction { + hash: string; + from: string; + to: string | null; + value: string; // hex wei + gas: string; // hex + gasPrice: string; // hex wei + input: string; + blockNumber: string; // hex + transactionIndex: string; // hex +} + +export interface RpcTransactionReceipt { + status: string; // hex '0x1' or '0x0' + gasUsed: string; // hex +} + + + + diff --git a/assignments/7-explorer-wallet/sepolia-explorer/src/utils/formatters.ts b/assignments/7-explorer-wallet/sepolia-explorer/src/utils/formatters.ts new file mode 100644 index 00000000..b683bfa9 --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/src/utils/formatters.ts @@ -0,0 +1,24 @@ +import { formatDistanceToNow } from 'date-fns'; + +export function shortenHash(hash: string, chars: number = 6): string { + return `${hash.slice(0, chars + 2)}...${hash.slice(-chars)}`; +} + +export function weiToEth(wei: string): string { + const bn = BigInt(wei); + const eth = bn / 1_000_000_000_000_000_000n; + const decimals = (bn % 1_000_000_000_000_000_000n) + .toString() + .padStart(18, '0') + .slice(0, 4); + return `${eth}.${decimals}`; +} + +export function hexToNumber(hex: string): number { + return parseInt(hex, 16); +} + +export function formatTimestamp(timestamp: string): string { + const ts = hexToNumber(timestamp) * 1000; + return formatDistanceToNow(new Date(ts), { addSuffix: true }); +} diff --git a/assignments/7-explorer-wallet/sepolia-explorer/tailwind.config.js b/assignments/7-explorer-wallet/sepolia-explorer/tailwind.config.js new file mode 100644 index 00000000..b3a28416 --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/tailwind.config.js @@ -0,0 +1,15 @@ +/** @type {import('tailwindcss').Config} */ +export default { + content: ['./index.html', './src/**/*.{js,ts,jsx,tsx}'], + theme: { + extend: { + colors: { + 'sepolia-dark': '#0f172a', // similar to screenshot dark bg + 'sepolia-darker': '#020617', + 'sepolia-blue': '#3b82f6', + 'sepolia-accent': '#60a5fa', + }, + }, + }, + plugins: [], +}; diff --git a/assignments/7-explorer-wallet/sepolia-explorer/tsconfig.app.json b/assignments/7-explorer-wallet/sepolia-explorer/tsconfig.app.json new file mode 100644 index 00000000..a9b5a59c --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/tsconfig.app.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "target": "ES2022", + "useDefineForClassFields": true, + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "module": "ESNext", + "types": ["vite/client"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["src"] +} diff --git a/assignments/7-explorer-wallet/sepolia-explorer/tsconfig.json b/assignments/7-explorer-wallet/sepolia-explorer/tsconfig.json new file mode 100644 index 00000000..1ffef600 --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/tsconfig.json @@ -0,0 +1,7 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] +} diff --git a/assignments/7-explorer-wallet/sepolia-explorer/tsconfig.node.json b/assignments/7-explorer-wallet/sepolia-explorer/tsconfig.node.json new file mode 100644 index 00000000..8a67f62f --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/tsconfig.node.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "target": "ES2023", + "lib": ["ES2023"], + "module": "ESNext", + "types": ["node"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/assignments/7-explorer-wallet/sepolia-explorer/vite.config.ts b/assignments/7-explorer-wallet/sepolia-explorer/vite.config.ts new file mode 100644 index 00000000..8b0f57b9 --- /dev/null +++ b/assignments/7-explorer-wallet/sepolia-explorer/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [react()], +}) From e0add14eb9647e95205bacd687ed12a51c6dead3 Mon Sep 17 00:00:00 2001 From: ukfkumyjuf Date: Fri, 30 Jan 2026 09:50:35 +0100 Subject: [PATCH 02/25] chore: remove duplicate components --- .../sepolia-explorer/package.json | 5 + .../sepolia-explorer/src/App.tsx | 34 +++-- .../src/components/BlockCard.tsx | 5 - .../src/components/Header.tsx | 4 +- .../src/components/LatestTransaction.tsx | 38 ------ .../src/components/TransactionRow.tsx | 9 -- .../src/components/ui/LatestTransactions.tsx | 7 +- .../sepolia-explorer/src/hooks/useSepolia.ts | 124 ++++++++++++++---- .../src/pages/BlockDetail.tsx | 20 +-- .../sepolia-explorer/src/pages/Home.tsx | 31 +++-- .../src/pages/LatestBlocks.tsx | 41 ------ 11 files changed, 163 insertions(+), 155 deletions(-) delete mode 100644 assignments/7-explorer-wallet/sepolia-explorer/src/components/BlockCard.tsx delete mode 100644 assignments/7-explorer-wallet/sepolia-explorer/src/components/LatestTransaction.tsx delete mode 100644 assignments/7-explorer-wallet/sepolia-explorer/src/components/TransactionRow.tsx delete mode 100644 assignments/7-explorer-wallet/sepolia-explorer/src/pages/LatestBlocks.tsx diff --git a/assignments/7-explorer-wallet/sepolia-explorer/package.json b/assignments/7-explorer-wallet/sepolia-explorer/package.json index d4e0b173..8c18ce4d 100644 --- a/assignments/7-explorer-wallet/sepolia-explorer/package.json +++ b/assignments/7-explorer-wallet/sepolia-explorer/package.json @@ -10,6 +10,8 @@ "preview": "vite preview" }, "dependencies": { + "@tanstack/react-query": "^5.90.20", + "@tanstack/react-query-devtools": "^5.91.2", "react": "^19.2.0", "react-dom": "^19.2.0", "react-router-dom": "^7.13.0" @@ -20,10 +22,13 @@ "@types/react": "^19.2.5", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^5.1.1", + "autoprefixer": "^10.4.23", "eslint": "^9.39.1", "eslint-plugin-react-hooks": "^7.0.1", "eslint-plugin-react-refresh": "^0.4.24", "globals": "^16.5.0", + "postcss": "^8.5.6", + "tailwindcss": "^4.1.18", "typescript": "~5.9.3", "typescript-eslint": "^8.46.4", "vite": "npm:rolldown-vite@7.2.5" diff --git a/assignments/7-explorer-wallet/sepolia-explorer/src/App.tsx b/assignments/7-explorer-wallet/sepolia-explorer/src/App.tsx index bbbf9512..289bbaa4 100644 --- a/assignments/7-explorer-wallet/sepolia-explorer/src/App.tsx +++ b/assignments/7-explorer-wallet/sepolia-explorer/src/App.tsx @@ -8,18 +8,17 @@ import TxDetail from './pages/TxDetail'; export default function App(): JSX.Element { return ( -
-