diff --git a/package.json b/package.json index a19e1b4..e69e36a 100644 --- a/package.json +++ b/package.json @@ -59,6 +59,7 @@ "dependencies": { "@apollo/client": "^3.12.2", "@apollo/experimental-nextjs-app-support": "^0.11.7", + "@ethereum-attestation-service/eas-sdk": "^2.7.0", "@graphprotocol/graph-cli": "^0.91.1", "ethereum-blockies": "^0.1.1", "framer-motion": "^11.13.1", diff --git a/packages/nextjs/app/testing/page.tsx b/packages/nextjs/app/testing/page.tsx new file mode 100644 index 0000000..933654f --- /dev/null +++ b/packages/nextjs/app/testing/page.tsx @@ -0,0 +1,84 @@ +"use client" +import React, { useState } from "react"; +import { attestFitnessChallenge } from "../../helpers/Attest"; + +const FitnessChallenge = () => { + const [userAddress, setUserAddress] = useState(""); + const [success, setSuccess] = useState(false); + const [response, setResponse] = useState(null); + const [error, setError] = useState(null); + const [loading, setLoading] = useState(false); + + const handleAttest = async () => { + setLoading(true); + setResponse(null); + setError(null); + + const PRIVATE_KEY = process.env.NEXT_PUBLIC_PRIVATE_KEY; + if (!PRIVATE_KEY) { + setError("Private key is not configured. Please check your .env file."); + setLoading(false); + return; + } + + try { + const attestationId = await attestFitnessChallenge(userAddress, success, PRIVATE_KEY); + setResponse(`Attestation successful! Attestation ID: ${attestationId}`); + } catch (err: any) { + setError(err.message || "An error occurred during attestation."); + } finally { + setLoading(false); + } + }; + + return ( +
+

Fitness Challenge Attestation

+ +
+ +
+ +
+ +
+ + + + {response &&

{response}

} + {error &&

{error}

} +
+ ); +}; + +export default FitnessChallenge; diff --git a/packages/nextjs/helpers/Attest.tsx b/packages/nextjs/helpers/Attest.tsx new file mode 100644 index 0000000..3fd72ac --- /dev/null +++ b/packages/nextjs/helpers/Attest.tsx @@ -0,0 +1,68 @@ +import { NO_EXPIRATION } from "@ethereum-attestation-service/eas-sdk"; +import eas, { schemaIds, encoders } from "./EAS"; +import { ethers } from "ethers"; +import { injected } from "wagmi/connectors"; +import { baseSepolia } from "viem/chains"; + +// Generalized attestation function +export async function attestToSchema( + schemaKey: keyof typeof schemaIds, + attestationData: any, + // privateKey: string +) { + try { + const schemaId = schemaIds[schemaKey]; + const encoder = encoders[schemaKey]; + + if (!schemaId || !encoder) { + throw new Error(`Schema ${schemaKey} not defined`); + } + + // Encode attestation data + const encodedData = encoder.encodeData(attestationData); + + // Initialize signer (replace with your wallet setup) + const wallet = new ethers.Wallet(privateKey, ethers.getDefaultProvider("base-sepolia")); + + // Connect wallet to EAS + eas.connect(wallet); + + // Create attestation + const tx = await eas.attest({ + schema: schemaId, + data: { + recipient: attestationData[0].value, // Assume recipient is the first field + expirationTime: NO_EXPIRATION, // Never expires + revocable: false, // Cannot be revoked + data: encodedData, + }, + }); + + console.log(`Transaction hash for ${schemaKey}:`, tx.hash); + + // Wait for confirmation + const receipt = await tx.wait(); + console.log(`${schemaKey} attestation created successfully:`, receipt); + + // Extract attestation ID from logs + const attestationId = receipt.logs[0].topics[1]; + console.log(`${schemaKey} Attestation ID:`, attestationId); + return attestationId; + } catch (error) { + console.error(`Error attesting to ${schemaKey}:`, error); + throw error; + } +} + +// Example usage for fitness challenge attestation +export async function attestFitnessChallenge( + userAddress: string, + success: boolean, + // privateKey: string +) { + return attestToSchema("fitnessChallenge", [ + { name: "user", value: userAddress, type: "address" }, + { name: "timestamp", value: Math.floor(Date.now() / 1000), type: "uint256" }, + { name: "success", value: success, type: "bool" }, + ]); +} diff --git a/packages/nextjs/helpers/EAS.tsx b/packages/nextjs/helpers/EAS.tsx new file mode 100644 index 0000000..28153f7 --- /dev/null +++ b/packages/nextjs/helpers/EAS.tsx @@ -0,0 +1,39 @@ +import { + EAS, + SchemaEncoder, +} from "@ethereum-attestation-service/eas-sdk"; +import { ethers } from "ethers"; + +// EAS Contract Address for Base Sepolia +export const EASContractAddress = "0x4200000000000000000000000000000000000021"; + +// Initialize EAS SDK +const eas = new EAS(EASContractAddress); + +// Default provider for Base Sepolia +const provider = ethers.getDefaultProvider("sepolia"); + +// Connect provider to EAS +eas.connect(provider); + +// Schema IDs (replace with actual deployed schema IDs) +export const schemaIds = { + fitnessChallenge: "0x51a8a63da0f823d83d6355aee1e1643f58247253874fa36a70059b841287960e", + stakingGoal: "0x51a8a63da0f823d83d6355aee1e1643f58247253874fa36a70059b841287960e", + rewardDistribution: "0x51a8a63da0f823d83d6355aee1e1643f58247253874fa36a70059b841287960e", +}; + +// Schema Encoders for each schema +export const encoders = { + fitnessChallenge: new SchemaEncoder( + "address user, uint256 timestamp, bool success" + ), + stakingGoal: new SchemaEncoder( + "address user, uint256 timestamp, bool success" + ), + rewardDistribution: new SchemaEncoder( + "address user, uint256 timestamp, bool success" + ), +}; + +export default eas; diff --git a/packages/nextjs/helpers/Verify.tsx b/packages/nextjs/helpers/Verify.tsx new file mode 100644 index 0000000..8d4c305 --- /dev/null +++ b/packages/nextjs/helpers/Verify.tsx @@ -0,0 +1,31 @@ +import eas from "./EAS"; + +// Function to verify attestation +export async function verifyAttestation(attestationId: string) { + try { + // Fetch attestation details + const attestation = await eas.getAttestation(attestationId); + + if (!attestation) { + throw new Error("Attestation not found"); + } + + console.log("Attestation details:", attestation); + + // Example: Check if the attestation is valid + if (attestation.revoked) { + throw new Error("Attestation has been revoked"); + } + + return { + isValid: true, + attestation, + }; + } catch (error) { + console.error("Error verifying attestation:", error); + return { + isValid: false, + error: error.message, + }; + } +} diff --git a/yarn.lock b/yarn.lock index 402de52..1e0db38 100644 --- a/yarn.lock +++ b/yarn.lock @@ -959,6 +959,32 @@ __metadata: languageName: node linkType: hard +"@ethereum-attestation-service/eas-contracts@npm:1.7.1": + version: 1.7.1 + resolution: "@ethereum-attestation-service/eas-contracts@npm:1.7.1" + dependencies: + hardhat: 2.22.4 + checksum: 2d9e948261359892b4e8bf416c1a43c9606c93edec35539d941e43f668e692002948f67a127b9cf6995d7c602ad70f7879c39e344682b12e8dee81b208c14620 + languageName: node + linkType: hard + +"@ethereum-attestation-service/eas-sdk@npm:^2.7.0": + version: 2.7.0 + resolution: "@ethereum-attestation-service/eas-sdk@npm:2.7.0" + dependencies: + "@ethereum-attestation-service/eas-contracts": 1.7.1 + "@openzeppelin/merkle-tree": ^1.0.7 + ethers: ^6.13.2 + js-base64: ^3.7.7 + lodash: ^4.17.21 + multiformats: 9.9.0 + pako: ^2.1.0 + semver: ^7.6.3 + viem: ^2.19.2 + checksum: dc557fd96981f49f90156b0e7e60a39e227acacaa05da1ea6e634bbdc2478773e708def4ae639846998c40f5bc68a9bb11654a9f4def4b7d86ff16a063203a63 + languageName: node + linkType: hard + "@ethereumjs/common@npm:^3.2.0": version: 3.2.0 resolution: "@ethereumjs/common@npm:3.2.0" @@ -3378,6 +3404,13 @@ __metadata: languageName: node linkType: hard +"@nomicfoundation/edr-darwin-arm64@npm:0.3.8": + version: 0.3.8 + resolution: "@nomicfoundation/edr-darwin-arm64@npm:0.3.8" + checksum: 20166c1cd0413fb3078c8240ad3604fb6ff6076b8142dfff14e51715ed313c73ec90486fe0a3b5a48ca3031e98e92339cd2bf825f6f199bfdf9b41bec906ebb8 + languageName: node + linkType: hard + "@nomicfoundation/edr-darwin-arm64@npm:0.6.5": version: 0.6.5 resolution: "@nomicfoundation/edr-darwin-arm64@npm:0.6.5" @@ -3385,6 +3418,13 @@ __metadata: languageName: node linkType: hard +"@nomicfoundation/edr-darwin-x64@npm:0.3.8": + version: 0.3.8 + resolution: "@nomicfoundation/edr-darwin-x64@npm:0.3.8" + checksum: c9ba1c9eeda71876f6c69550b20f7b0d865f6249cb88c0a3dc853d7ca32061d9a71f40f14cc628fa7f286786fc2cd48c5a2a9527a6d0f55939f2a9565809b561 + languageName: node + linkType: hard + "@nomicfoundation/edr-darwin-x64@npm:0.6.5": version: 0.6.5 resolution: "@nomicfoundation/edr-darwin-x64@npm:0.6.5" @@ -3392,6 +3432,13 @@ __metadata: languageName: node linkType: hard +"@nomicfoundation/edr-linux-arm64-gnu@npm:0.3.8": + version: 0.3.8 + resolution: "@nomicfoundation/edr-linux-arm64-gnu@npm:0.3.8" + checksum: bebb780f8c22ca13af9b336873a6d00091139f88669ba4c569d03efd7a6671f10b4c6afd7ee9444d9b18364d05eedf46f4dd82d1e7329de32267175127a6989b + languageName: node + linkType: hard + "@nomicfoundation/edr-linux-arm64-gnu@npm:0.6.5": version: 0.6.5 resolution: "@nomicfoundation/edr-linux-arm64-gnu@npm:0.6.5" @@ -3399,6 +3446,13 @@ __metadata: languageName: node linkType: hard +"@nomicfoundation/edr-linux-arm64-musl@npm:0.3.8": + version: 0.3.8 + resolution: "@nomicfoundation/edr-linux-arm64-musl@npm:0.3.8" + checksum: 6cf009e4686780c41c6af271e67d1414b5e5096e5422f64980b8c3a4ddd6273b3289a5d228d976b217d6c1d8da52af912f599d923a098225b9dd906f03b889c8 + languageName: node + linkType: hard + "@nomicfoundation/edr-linux-arm64-musl@npm:0.6.5": version: 0.6.5 resolution: "@nomicfoundation/edr-linux-arm64-musl@npm:0.6.5" @@ -3406,6 +3460,13 @@ __metadata: languageName: node linkType: hard +"@nomicfoundation/edr-linux-x64-gnu@npm:0.3.8": + version: 0.3.8 + resolution: "@nomicfoundation/edr-linux-x64-gnu@npm:0.3.8" + checksum: 6afb66601880bee40a254272ecb88d3c00b1acd97bde503127b2d900d15aa2707926b56e652abdfb0c0e75dde53e201aaef40ae0fd3bd7c6e48163eaa6ed3a17 + languageName: node + linkType: hard + "@nomicfoundation/edr-linux-x64-gnu@npm:0.6.5": version: 0.6.5 resolution: "@nomicfoundation/edr-linux-x64-gnu@npm:0.6.5" @@ -3413,6 +3474,13 @@ __metadata: languageName: node linkType: hard +"@nomicfoundation/edr-linux-x64-musl@npm:0.3.8": + version: 0.3.8 + resolution: "@nomicfoundation/edr-linux-x64-musl@npm:0.3.8" + checksum: 72cd4be88ea30fd47fa1f984f446d80bf6d33e928e35df02ae4b842701b459dd92d7ba4071e388c95739a9688d6247100cb7155f3e67a5e624f54b2b42098dfd + languageName: node + linkType: hard + "@nomicfoundation/edr-linux-x64-musl@npm:0.6.5": version: 0.6.5 resolution: "@nomicfoundation/edr-linux-x64-musl@npm:0.6.5" @@ -3420,6 +3488,13 @@ __metadata: languageName: node linkType: hard +"@nomicfoundation/edr-win32-x64-msvc@npm:0.3.8": + version: 0.3.8 + resolution: "@nomicfoundation/edr-win32-x64-msvc@npm:0.3.8" + checksum: d7b5bbe71f2347075a9e4d88d22609ec9b8058734ee048ff94300fecb51afad96d0d596686ad9cf6cf8ee74d1c117bf53ce5d77bf077cb472977d4a9bd88eb43 + languageName: node + linkType: hard + "@nomicfoundation/edr-win32-x64-msvc@npm:0.6.5": version: 0.6.5 resolution: "@nomicfoundation/edr-win32-x64-msvc@npm:0.6.5" @@ -3427,6 +3502,21 @@ __metadata: languageName: node linkType: hard +"@nomicfoundation/edr@npm:^0.3.7": + version: 0.3.8 + resolution: "@nomicfoundation/edr@npm:0.3.8" + dependencies: + "@nomicfoundation/edr-darwin-arm64": 0.3.8 + "@nomicfoundation/edr-darwin-x64": 0.3.8 + "@nomicfoundation/edr-linux-arm64-gnu": 0.3.8 + "@nomicfoundation/edr-linux-arm64-musl": 0.3.8 + "@nomicfoundation/edr-linux-x64-gnu": 0.3.8 + "@nomicfoundation/edr-linux-x64-musl": 0.3.8 + "@nomicfoundation/edr-win32-x64-msvc": 0.3.8 + checksum: 31047fdde18034e2c6bd65dfbe3192c149b2af7f06a108e8c7b829c45bc5071c9d536c68d2d3b988bc67c7f7d331f0a88eee49ce3c882b3bcd5e20bc301d32a8 + languageName: node + linkType: hard + "@nomicfoundation/edr@npm:^0.6.5": version: 0.6.5 resolution: "@nomicfoundation/edr@npm:0.6.5" @@ -3817,6 +3907,18 @@ __metadata: languageName: node linkType: hard +"@openzeppelin/merkle-tree@npm:^1.0.7": + version: 1.0.7 + resolution: "@openzeppelin/merkle-tree@npm:1.0.7" + dependencies: + "@ethersproject/abi": ^5.7.0 + "@ethersproject/bytes": ^5.7.0 + "@ethersproject/constants": ^5.7.0 + "@ethersproject/keccak256": ^5.7.0 + checksum: 75ca8ecddcff36964a74222a40abec7def1a873f47b1e15fb905c7daa516c495d2b05bbc8601ea465c7e13baa72546958049c158e94103f3eac7b611882988e8 + languageName: node + linkType: hard + "@parcel/watcher-android-arm64@npm:2.5.0": version: 2.5.0 resolution: "@parcel/watcher-android-arm64@npm:2.5.0" @@ -7963,7 +8065,7 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:^3.5.2, chokidar@npm:^3.5.3, chokidar@npm:^3.6.0": +"chokidar@npm:^3.4.0, chokidar@npm:^3.5.2, chokidar@npm:^3.5.3, chokidar@npm:^3.6.0": version: 3.6.0 resolution: "chokidar@npm:3.6.0" dependencies: @@ -8321,6 +8423,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:3.0.2": + version: 3.0.2 + resolution: "commander@npm:3.0.2" + checksum: 6d14ad030d1904428139487ed31febcb04c1604db2b8d9fae711f60ee6718828dc0e11602249e91c8a97b0e721e9c6d53edbc166bad3cde1596851d59a8f824d + languageName: node + linkType: hard + "commander@npm:^10.0.0": version: 10.0.1 resolution: "commander@npm:10.0.1" @@ -10379,7 +10488,7 @@ __metadata: languageName: node linkType: hard -"ethers@npm:~6.13.2": +"ethers@npm:^6.13.2, ethers@npm:~6.13.2": version: 6.13.4 resolution: "ethers@npm:6.13.4" dependencies: @@ -10810,6 +10919,15 @@ __metadata: languageName: node linkType: hard +"find-up@npm:^2.1.0": + version: 2.1.0 + resolution: "find-up@npm:2.1.0" + dependencies: + locate-path: ^2.0.0 + checksum: 43284fe4da09f89011f08e3c32cd38401e786b19226ea440b75386c1b12a4cb738c94969808d53a84f564ede22f732c8409e3cfc3f7fb5b5c32378ad0bbf28bd + languageName: node + linkType: hard + "find-up@npm:^4.1.0": version: 4.1.0 resolution: "find-up@npm:4.1.0" @@ -11009,6 +11127,19 @@ __metadata: languageName: node linkType: hard +"fs-extra@npm:^0.30.0": + version: 0.30.0 + resolution: "fs-extra@npm:0.30.0" + dependencies: + graceful-fs: ^4.1.2 + jsonfile: ^2.1.0 + klaw: ^1.0.0 + path-is-absolute: ^1.0.0 + rimraf: ^2.2.8 + checksum: 6edfd65fc813baa27f1603778c0f5ec11f8c5006a20b920437813ee2023eba18aeec8bef1c89b2e6c84f9fc90fdc7c916f4a700466c8c69d22a35d018f2570f0 + languageName: node + linkType: hard + "fs-extra@npm:^10.0.0": version: 10.1.0 resolution: "fs-extra@npm:10.1.0" @@ -11359,6 +11490,20 @@ __metadata: languageName: node linkType: hard +"glob@npm:7.2.0": + version: 7.2.0 + resolution: "glob@npm:7.2.0" + dependencies: + fs.realpath: ^1.0.0 + inflight: ^1.0.4 + inherits: 2 + minimatch: ^3.0.4 + once: ^1.3.0 + path-is-absolute: ^1.0.0 + checksum: 78a8ea942331f08ed2e055cb5b9e40fe6f46f579d7fd3d694f3412fe5db23223d29b7fee1575440202e9a7ff9a72ab106a39fee39934c7bedafe5e5f8ae20134 + languageName: node + linkType: hard + "glob@npm:9.3.5": version: 9.3.5 resolution: "glob@npm:9.3.5" @@ -11582,7 +11727,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": +"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.1.9, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 @@ -11787,6 +11932,67 @@ __metadata: languageName: node linkType: hard +"hardhat@npm:2.22.4": + version: 2.22.4 + resolution: "hardhat@npm:2.22.4" + dependencies: + "@ethersproject/abi": ^5.1.2 + "@metamask/eth-sig-util": ^4.0.0 + "@nomicfoundation/edr": ^0.3.7 + "@nomicfoundation/ethereumjs-common": 4.0.4 + "@nomicfoundation/ethereumjs-tx": 5.0.4 + "@nomicfoundation/ethereumjs-util": 9.0.4 + "@nomicfoundation/solidity-analyzer": ^0.1.0 + "@sentry/node": ^5.18.1 + "@types/bn.js": ^5.1.0 + "@types/lru-cache": ^5.1.0 + adm-zip: ^0.4.16 + aggregate-error: ^3.0.0 + ansi-escapes: ^4.3.0 + boxen: ^5.1.2 + chalk: ^2.4.2 + chokidar: ^3.4.0 + ci-info: ^2.0.0 + debug: ^4.1.1 + enquirer: ^2.3.0 + env-paths: ^2.2.0 + ethereum-cryptography: ^1.0.3 + ethereumjs-abi: ^0.6.8 + find-up: ^2.1.0 + fp-ts: 1.19.3 + fs-extra: ^7.0.1 + glob: 7.2.0 + immutable: ^4.0.0-rc.12 + io-ts: 1.10.4 + keccak: ^3.0.2 + lodash: ^4.17.11 + mnemonist: ^0.38.0 + mocha: ^10.0.0 + p-map: ^4.0.0 + raw-body: ^2.4.1 + resolve: 1.17.0 + semver: ^6.3.0 + solc: 0.7.3 + source-map-support: ^0.5.13 + stacktrace-parser: ^0.1.10 + tsort: 0.0.1 + undici: ^5.14.0 + uuid: ^8.3.2 + ws: ^7.4.6 + peerDependencies: + ts-node: "*" + typescript: "*" + peerDependenciesMeta: + ts-node: + optional: true + typescript: + optional: true + bin: + hardhat: internal/cli/bootstrap.js + checksum: c10deb21dac800fe4356f7325646ffef6542704894bd5712fe91246ba307d1f9b02a26998cf2e2adddf299c82e2f19afce33dadbc1afcd7de1692296157fdefc + languageName: node + linkType: hard + "hardhat@npm:~2.22.10": version: 2.22.17 resolution: "hardhat@npm:2.22.17" @@ -13212,6 +13418,13 @@ __metadata: languageName: node linkType: hard +"js-base64@npm:^3.7.7": + version: 3.7.7 + resolution: "js-base64@npm:3.7.7" + checksum: d1b02971db9dc0fd35baecfaf6ba499731fb44fe3373e7e1d6681fbd3ba665f29e8d9d17910254ef8104e2cb8b44117fe4202d3dc54c7cafe9ba300fe5433358 + languageName: node + linkType: hard + "js-sha3@npm:0.8.0, js-sha3@npm:^0.8.0": version: 0.8.0 resolution: "js-sha3@npm:0.8.0" @@ -13409,6 +13622,18 @@ __metadata: languageName: node linkType: hard +"jsonfile@npm:^2.1.0": + version: 2.4.0 + resolution: "jsonfile@npm:2.4.0" + dependencies: + graceful-fs: ^4.1.6 + dependenciesMeta: + graceful-fs: + optional: true + checksum: f5064aabbc9e35530dc471d8b203ae1f40dbe949ddde4391c6f6a6d310619a15f0efdae5587df594d1d70c555193aaeee9d2ed4aec9ffd5767bd5e4e62d49c3d + languageName: node + linkType: hard + "jsonfile@npm:^4.0.0": version: 4.0.0 resolution: "jsonfile@npm:4.0.0" @@ -13495,6 +13720,18 @@ __metadata: languageName: node linkType: hard +"klaw@npm:^1.0.0": + version: 1.3.1 + resolution: "klaw@npm:1.3.1" + dependencies: + graceful-fs: ^4.1.9 + dependenciesMeta: + graceful-fs: + optional: true + checksum: 8f69e4797c26e7c3f2426bfa85f38a3da3c2cb1b4c6bd850d2377aed440d41ce9d806f2885c2e2e224372c56af4b1d43b8a499adecf9a05e7373dc6b8b7c52e4 + languageName: node + linkType: hard + "language-subtag-registry@npm:^0.3.20": version: 0.3.23 resolution: "language-subtag-registry@npm:0.3.23" @@ -13674,6 +13911,16 @@ __metadata: languageName: node linkType: hard +"locate-path@npm:^2.0.0": + version: 2.0.0 + resolution: "locate-path@npm:2.0.0" + dependencies: + p-locate: ^2.0.0 + path-exists: ^3.0.0 + checksum: 02d581edbbbb0fa292e28d96b7de36b5b62c2fa8b5a7e82638ebb33afa74284acf022d3b1e9ae10e3ffb7658fbc49163fcd5e76e7d1baaa7801c3e05a81da755 + languageName: node + linkType: hard + "locate-path@npm:^5.0.0": version: 5.0.0 resolution: "locate-path@npm:5.0.0" @@ -14603,7 +14850,7 @@ __metadata: languageName: node linkType: hard -"multiformats@npm:^9.4.13, multiformats@npm:^9.4.2, multiformats@npm:^9.4.5, multiformats@npm:^9.5.4": +"multiformats@npm:9.9.0, multiformats@npm:^9.4.13, multiformats@npm:^9.4.2, multiformats@npm:^9.4.5, multiformats@npm:^9.5.4": version: 9.9.0 resolution: "multiformats@npm:9.9.0" checksum: d3e8c1be400c09a014f557ea02251a2710dbc9fca5aa32cc702ff29f636c5471e17979f30bdcb0a9cbb556f162a8591dc2e1219c24fc21394a56115b820bb84e @@ -15444,6 +15691,15 @@ __metadata: languageName: node linkType: hard +"p-limit@npm:^1.1.0": + version: 1.3.0 + resolution: "p-limit@npm:1.3.0" + dependencies: + p-try: ^1.0.0 + checksum: 281c1c0b8c82e1ac9f81acd72a2e35d402bf572e09721ce5520164e9de07d8274451378a3470707179ad13240535558f4b277f02405ad752e08c7d5b0d54fbfd + languageName: node + linkType: hard + "p-limit@npm:^2.2.0": version: 2.3.0 resolution: "p-limit@npm:2.3.0" @@ -15453,6 +15709,15 @@ __metadata: languageName: node linkType: hard +"p-locate@npm:^2.0.0": + version: 2.0.0 + resolution: "p-locate@npm:2.0.0" + dependencies: + p-limit: ^1.1.0 + checksum: e2dceb9b49b96d5513d90f715780f6f4972f46987dc32a0e18bc6c3fc74a1a5d73ec5f81b1398af5e58b99ea1ad03fd41e9181c01fa81b4af2833958696e3081 + languageName: node + linkType: hard + "p-locate@npm:^4.1.0": version: 4.1.0 resolution: "p-locate@npm:4.1.0" @@ -15487,6 +15752,13 @@ __metadata: languageName: node linkType: hard +"p-try@npm:^1.0.0": + version: 1.0.0 + resolution: "p-try@npm:1.0.0" + checksum: 3b5303f77eb7722144154288bfd96f799f8ff3e2b2b39330efe38db5dd359e4fb27012464cd85cb0a76e9b7edd1b443568cb3192c22e7cffc34989df0bafd605 + languageName: node + linkType: hard + "p-try@npm:^2.0.0": version: 2.2.0 resolution: "p-try@npm:2.2.0" @@ -15501,6 +15773,13 @@ __metadata: languageName: node linkType: hard +"pako@npm:^2.1.0": + version: 2.1.0 + resolution: "pako@npm:2.1.0" + checksum: 71666548644c9a4d056bcaba849ca6fd7242c6cf1af0646d3346f3079a1c7f4a66ffec6f7369ee0dc88f61926c10d6ab05da3e1fca44b83551839e89edd75a3e + languageName: node + linkType: hard + "param-case@npm:^3.0.4": version: 3.0.4 resolution: "param-case@npm:3.0.4" @@ -15611,6 +15890,13 @@ __metadata: languageName: node linkType: hard +"path-exists@npm:^3.0.0": + version: 3.0.0 + resolution: "path-exists@npm:3.0.0" + checksum: 96e92643aa34b4b28d0de1cd2eba52a1c5313a90c6542d03f62750d82480e20bfa62bc865d5cfc6165f5fcd5aeb0851043c40a39be5989646f223300021bae0a + languageName: node + linkType: hard + "path-exists@npm:^4.0.0": version: 4.0.0 resolution: "path-exists@npm:4.0.0" @@ -16789,7 +17075,7 @@ __metadata: languageName: node linkType: hard -"require-from-string@npm:^2.0.2": +"require-from-string@npm:^2.0.0, require-from-string@npm:^2.0.2": version: 2.0.2 resolution: "require-from-string@npm:2.0.2" checksum: a03ef6895445f33a4015300c426699bc66b2b044ba7b670aa238610381b56d3f07c686251740d575e22f4c87531ba662d06937508f0f3c0f1ddc04db3130560b @@ -16964,7 +17250,7 @@ __metadata: languageName: node linkType: hard -"rimraf@npm:^2.6.3": +"rimraf@npm:^2.2.8, rimraf@npm:^2.6.3": version: 2.7.1 resolution: "rimraf@npm:2.7.1" dependencies: @@ -17145,6 +17431,7 @@ __metadata: dependencies: "@apollo/client": ^3.12.2 "@apollo/experimental-nextjs-app-support": ^0.11.7 + "@ethereum-attestation-service/eas-sdk": ^2.7.0 "@graphprotocol/graph-cli": ^0.91.1 "@types/ethereum-blockies": ^0 ethereum-blockies: ^0.1.1 @@ -17480,6 +17767,25 @@ __metadata: languageName: node linkType: hard +"solc@npm:0.7.3": + version: 0.7.3 + resolution: "solc@npm:0.7.3" + dependencies: + command-exists: ^1.2.8 + commander: 3.0.2 + follow-redirects: ^1.12.1 + fs-extra: ^0.30.0 + js-sha3: 0.8.0 + memorystream: ^0.3.1 + require-from-string: ^2.0.0 + semver: ^5.5.0 + tmp: 0.0.33 + bin: + solcjs: solcjs + checksum: 2d8eb16c6d8f648213c94dc8d977cffe5099cba7d41c82d92d769ef71ae8320a985065ce3d6c306440a85f8e8d2b27fb30bdd3ac38f69e5c1fa0ab8a3fb2f217 + languageName: node + linkType: hard + "solc@npm:0.8.26": version: 0.8.26 resolution: "solc@npm:0.8.26" @@ -19470,7 +19776,7 @@ __metadata: languageName: node linkType: hard -"viem@npm:^2.1.1": +"viem@npm:^2.1.1, viem@npm:^2.19.2": version: 2.21.54 resolution: "viem@npm:2.21.54" dependencies: