From aa0c9ceba246747257cc09a2eb411480a222c653 Mon Sep 17 00:00:00 2001 From: cedoor Date: Mon, 25 Mar 2024 12:58:42 +0000 Subject: [PATCH] chore(cli): update template contracts re #722 Former-commit-id: 895f9e1e9ef4f39d7578e8b3c6b85a9735c07f46 --- .../contracts/Feedback.sol | 5 ++--- packages/cli-template-contracts-hardhat/tasks/deploy.ts | 9 ++------- packages/cli-template-contracts-hardhat/test/Feedback.ts | 5 ++--- packages/cli-template-monorepo-ethers/.env.example | 2 +- .../apps/contracts/contracts/Feedback.sol | 5 ++--- .../apps/contracts/hardhat.config.ts | 2 +- .../apps/contracts/tasks/deploy.ts | 9 ++------- .../apps/contracts/test/Feedback.ts | 5 ++--- .../apps/web-app/.env.development | 2 +- .../apps/web-app/next-env.d.ts | 5 +++++ .../apps/web-app/package.json | 1 + .../apps/web-app/src/app/groups/page.tsx | 2 +- .../apps/web-app/src/components/PageContainer.tsx | 4 ++-- .../apps/web-app/src/hooks/useSemaphore.ts | 4 ++-- packages/cli-template-monorepo-subgraph/.env.example | 2 +- .../apps/contracts/contracts/Feedback.sol | 5 ++--- .../apps/contracts/hardhat.config.ts | 2 +- .../apps/contracts/tasks/deploy.ts | 9 ++------- .../apps/contracts/test/Feedback.ts | 5 ++--- .../apps/web-app/.env.development | 2 +- .../apps/web-app/package.json | 1 + .../apps/web-app/src/app/groups/page.tsx | 8 ++++---- .../apps/web-app/src/components/PageContainer.tsx | 2 +- yarn.lock.REMOVED.git-id | 2 +- 24 files changed, 42 insertions(+), 56 deletions(-) create mode 100644 packages/cli-template-monorepo-ethers/apps/web-app/next-env.d.ts diff --git a/packages/cli-template-contracts-hardhat/contracts/Feedback.sol b/packages/cli-template-contracts-hardhat/contracts/Feedback.sol index 0a418c4f..09dee3ec 100644 --- a/packages/cli-template-contracts-hardhat/contracts/Feedback.sol +++ b/packages/cli-template-contracts-hardhat/contracts/Feedback.sol @@ -8,11 +8,10 @@ contract Feedback { uint256 public groupId; - constructor(address semaphoreAddress, uint256 _groupId) { + constructor(address semaphoreAddress) { semaphore = ISemaphore(semaphoreAddress); - groupId = _groupId; - semaphore.createGroup(groupId, address(this)); + groupId = semaphore.createGroup(); } function joinGroup(uint256 identityCommitment) external { diff --git a/packages/cli-template-contracts-hardhat/tasks/deploy.ts b/packages/cli-template-contracts-hardhat/tasks/deploy.ts index 0dd175e4..65a156e0 100644 --- a/packages/cli-template-contracts-hardhat/tasks/deploy.ts +++ b/packages/cli-template-contracts-hardhat/tasks/deploy.ts @@ -2,9 +2,8 @@ import { task, types } from "hardhat/config" task("deploy", "Deploy a Feedback contract") .addOptionalParam("semaphore", "Semaphore contract address", undefined, types.string) - .addOptionalParam("group", "Group id", "42", types.string) .addOptionalParam("logs", "Print the logs", true, types.boolean) - .setAction(async ({ logs, semaphore: semaphoreAddress, group: groupId }, { ethers, run }) => { + .setAction(async ({ logs, semaphore: semaphoreAddress }, { ethers, run }) => { if (!semaphoreAddress) { const { semaphore } = await run("deploy:semaphore", { logs @@ -13,13 +12,9 @@ task("deploy", "Deploy a Feedback contract") semaphoreAddress = await semaphore.getAddress() } - if (!groupId) { - groupId = process.env.GROUP_ID - } - const FeedbackFactory = await ethers.getContractFactory("Feedback") - const feedbackContract = await FeedbackFactory.deploy(semaphoreAddress, groupId) + const feedbackContract = await FeedbackFactory.deploy(semaphoreAddress) if (logs) { console.info(`Feedback contract has been deployed to: ${await feedbackContract.getAddress()}`) diff --git a/packages/cli-template-contracts-hardhat/test/Feedback.ts b/packages/cli-template-contracts-hardhat/test/Feedback.ts index 7733e3b8..6d18aabc 100644 --- a/packages/cli-template-contracts-hardhat/test/Feedback.ts +++ b/packages/cli-template-contracts-hardhat/test/Feedback.ts @@ -9,8 +9,6 @@ import { Feedback, ISemaphore } from "../typechain-types" describe("Feedback", () => { async function deployFeedbackFixture() { - const groupId = "42" - const { semaphore } = await run("deploy:semaphore", { logs: false }) @@ -19,10 +17,11 @@ describe("Feedback", () => { const feedbackContract: Feedback = await run("deploy", { logs: false, - group: groupId, semaphore: await semaphoreContract.getAddress() }) + const groupId = await feedbackContract.groupId() + return { semaphoreContract, feedbackContract, groupId } } diff --git a/packages/cli-template-monorepo-ethers/.env.example b/packages/cli-template-monorepo-ethers/.env.example index 4d1776c7..14e18ade 100644 --- a/packages/cli-template-monorepo-ethers/.env.example +++ b/packages/cli-template-monorepo-ethers/.env.example @@ -1,4 +1,4 @@ -DEFAULT_NETWORK=localhost +DEFAULT_NETWORK=hardhat ETHEREUM_PRIVATE_KEY=ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 REPORT_GAS=false COINMARKETCAP_API_KEY= diff --git a/packages/cli-template-monorepo-ethers/apps/contracts/contracts/Feedback.sol b/packages/cli-template-monorepo-ethers/apps/contracts/contracts/Feedback.sol index 0a418c4f..09dee3ec 100644 --- a/packages/cli-template-monorepo-ethers/apps/contracts/contracts/Feedback.sol +++ b/packages/cli-template-monorepo-ethers/apps/contracts/contracts/Feedback.sol @@ -8,11 +8,10 @@ contract Feedback { uint256 public groupId; - constructor(address semaphoreAddress, uint256 _groupId) { + constructor(address semaphoreAddress) { semaphore = ISemaphore(semaphoreAddress); - groupId = _groupId; - semaphore.createGroup(groupId, address(this)); + groupId = semaphore.createGroup(); } function joinGroup(uint256 identityCommitment) external { diff --git a/packages/cli-template-monorepo-ethers/apps/contracts/hardhat.config.ts b/packages/cli-template-monorepo-ethers/apps/contracts/hardhat.config.ts index ef1c30c6..7010a533 100644 --- a/packages/cli-template-monorepo-ethers/apps/contracts/hardhat.config.ts +++ b/packages/cli-template-monorepo-ethers/apps/contracts/hardhat.config.ts @@ -10,7 +10,7 @@ dotenvConfig({ path: resolve(__dirname, "../../.env") }) const config: HardhatUserConfig = { solidity: "0.8.23", - defaultNetwork: process.env.DEFAULT_NETWORK || "localhost", + defaultNetwork: process.env.DEFAULT_NETWORK || "hardhat", networks: { hardhat: { chainId: 1337 diff --git a/packages/cli-template-monorepo-ethers/apps/contracts/tasks/deploy.ts b/packages/cli-template-monorepo-ethers/apps/contracts/tasks/deploy.ts index 0dd175e4..65a156e0 100644 --- a/packages/cli-template-monorepo-ethers/apps/contracts/tasks/deploy.ts +++ b/packages/cli-template-monorepo-ethers/apps/contracts/tasks/deploy.ts @@ -2,9 +2,8 @@ import { task, types } from "hardhat/config" task("deploy", "Deploy a Feedback contract") .addOptionalParam("semaphore", "Semaphore contract address", undefined, types.string) - .addOptionalParam("group", "Group id", "42", types.string) .addOptionalParam("logs", "Print the logs", true, types.boolean) - .setAction(async ({ logs, semaphore: semaphoreAddress, group: groupId }, { ethers, run }) => { + .setAction(async ({ logs, semaphore: semaphoreAddress }, { ethers, run }) => { if (!semaphoreAddress) { const { semaphore } = await run("deploy:semaphore", { logs @@ -13,13 +12,9 @@ task("deploy", "Deploy a Feedback contract") semaphoreAddress = await semaphore.getAddress() } - if (!groupId) { - groupId = process.env.GROUP_ID - } - const FeedbackFactory = await ethers.getContractFactory("Feedback") - const feedbackContract = await FeedbackFactory.deploy(semaphoreAddress, groupId) + const feedbackContract = await FeedbackFactory.deploy(semaphoreAddress) if (logs) { console.info(`Feedback contract has been deployed to: ${await feedbackContract.getAddress()}`) diff --git a/packages/cli-template-monorepo-ethers/apps/contracts/test/Feedback.ts b/packages/cli-template-monorepo-ethers/apps/contracts/test/Feedback.ts index 7733e3b8..6d18aabc 100644 --- a/packages/cli-template-monorepo-ethers/apps/contracts/test/Feedback.ts +++ b/packages/cli-template-monorepo-ethers/apps/contracts/test/Feedback.ts @@ -9,8 +9,6 @@ import { Feedback, ISemaphore } from "../typechain-types" describe("Feedback", () => { async function deployFeedbackFixture() { - const groupId = "42" - const { semaphore } = await run("deploy:semaphore", { logs: false }) @@ -19,10 +17,11 @@ describe("Feedback", () => { const feedbackContract: Feedback = await run("deploy", { logs: false, - group: groupId, semaphore: await semaphoreContract.getAddress() }) + const groupId = await feedbackContract.groupId() + return { semaphoreContract, feedbackContract, groupId } } diff --git a/packages/cli-template-monorepo-ethers/apps/web-app/.env.development b/packages/cli-template-monorepo-ethers/apps/web-app/.env.development index afa31569..1d41062f 100644 --- a/packages/cli-template-monorepo-ethers/apps/web-app/.env.development +++ b/packages/cli-template-monorepo-ethers/apps/web-app/.env.development @@ -1,4 +1,4 @@ NEXT_PUBLIC_DEFAULT_NETWORK=localhost NEXT_PUBLIC_FEEDBACK_CONTRACT_ADDRESS=0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9 NEXT_PUBLIC_SEMAPHORE_CONTRACT_ADDRESS=0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0 -NEXT_PUBLIC_GROUP_ID=42 +NEXT_PUBLIC_GROUP_ID=0 diff --git a/packages/cli-template-monorepo-ethers/apps/web-app/next-env.d.ts b/packages/cli-template-monorepo-ethers/apps/web-app/next-env.d.ts new file mode 100644 index 00000000..4f11a03d --- /dev/null +++ b/packages/cli-template-monorepo-ethers/apps/web-app/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/packages/cli-template-monorepo-ethers/apps/web-app/package.json b/packages/cli-template-monorepo-ethers/apps/web-app/package.json index cd3e8528..0b53b0c4 100644 --- a/packages/cli-template-monorepo-ethers/apps/web-app/package.json +++ b/packages/cli-template-monorepo-ethers/apps/web-app/package.json @@ -11,6 +11,7 @@ "dependencies": { "@semaphore-protocol/core": "4.0.0-beta.4", "@semaphore-protocol/data": "4.0.0-beta.4", + "@semaphore-protocol/utils": "4.0.0-beta.4", "ethers": "^6.11.1", "next": "14.1.0", "next-pwa": "^5.6.0", diff --git a/packages/cli-template-monorepo-ethers/apps/web-app/src/app/groups/page.tsx b/packages/cli-template-monorepo-ethers/apps/web-app/src/app/groups/page.tsx index 7163f315..751d345c 100644 --- a/packages/cli-template-monorepo-ethers/apps/web-app/src/app/groups/page.tsx +++ b/packages/cli-template-monorepo-ethers/apps/web-app/src/app/groups/page.tsx @@ -74,7 +74,7 @@ export default function GroupsPage() { setLoading(false) }, [_identity]) - const userHasJoined = useCallback((identity: Identity) => _users.includes(identity.commitment), [_users]) + const userHasJoined = useCallback((identity: Identity) => _users.includes(identity.commitment.toString()), [_users]) return ( <> diff --git a/packages/cli-template-monorepo-ethers/apps/web-app/src/components/PageContainer.tsx b/packages/cli-template-monorepo-ethers/apps/web-app/src/components/PageContainer.tsx index 854dd681..63b1499e 100644 --- a/packages/cli-template-monorepo-ethers/apps/web-app/src/components/PageContainer.tsx +++ b/packages/cli-template-monorepo-ethers/apps/web-app/src/components/PageContainer.tsx @@ -4,7 +4,7 @@ import LogsContext from "@/context/LogsContext" import SemaphoreContext from "@/context/SemaphoreContext" import useSemaphore from "@/hooks/useSemaphore" import shortenString from "@/utils/shortenString" -import { SupportedNetwork } from "@semaphore-protocol/data" +import { SupportedNetwork } from "@semaphore-protocol/utils" import { usePathname } from "next/navigation" import { useEffect, useState } from "react" import Link from "next/link" @@ -52,7 +52,7 @@ export default function PageContainer({
{shortenString(process.env.NEXT_PUBLIC_FEEDBACK_CONTRACT_ADDRESS as string, [6, 4])}
diff --git a/packages/cli-template-monorepo-ethers/apps/web-app/src/hooks/useSemaphore.ts b/packages/cli-template-monorepo-ethers/apps/web-app/src/hooks/useSemaphore.ts index bc71ab43..4f5dab63 100644 --- a/packages/cli-template-monorepo-ethers/apps/web-app/src/hooks/useSemaphore.ts +++ b/packages/cli-template-monorepo-ethers/apps/web-app/src/hooks/useSemaphore.ts @@ -9,7 +9,7 @@ const ethereumNetwork = : process.env.NEXT_PUBLIC_DEFAULT_NETWORK export default function useSemaphore(): SemaphoreContextType { - const [_users, setUsers] = useState([]) + const [_users, setUsers] = useState([]) const [_feedback, setFeedback] = useState([]) const refreshUsers = useCallback(async (): Promise => { @@ -19,7 +19,7 @@ export default function useSemaphore(): SemaphoreContextType { const members = await semaphore.getGroupMembers(process.env.NEXT_PUBLIC_GROUP_ID as string) - setUsers(members.map((member) => member.toString())) + setUsers(members) }, []) const addUser = useCallback( diff --git a/packages/cli-template-monorepo-subgraph/.env.example b/packages/cli-template-monorepo-subgraph/.env.example index 4d1776c7..14e18ade 100644 --- a/packages/cli-template-monorepo-subgraph/.env.example +++ b/packages/cli-template-monorepo-subgraph/.env.example @@ -1,4 +1,4 @@ -DEFAULT_NETWORK=localhost +DEFAULT_NETWORK=hardhat ETHEREUM_PRIVATE_KEY=ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 REPORT_GAS=false COINMARKETCAP_API_KEY= diff --git a/packages/cli-template-monorepo-subgraph/apps/contracts/contracts/Feedback.sol b/packages/cli-template-monorepo-subgraph/apps/contracts/contracts/Feedback.sol index 0a418c4f..09dee3ec 100644 --- a/packages/cli-template-monorepo-subgraph/apps/contracts/contracts/Feedback.sol +++ b/packages/cli-template-monorepo-subgraph/apps/contracts/contracts/Feedback.sol @@ -8,11 +8,10 @@ contract Feedback { uint256 public groupId; - constructor(address semaphoreAddress, uint256 _groupId) { + constructor(address semaphoreAddress) { semaphore = ISemaphore(semaphoreAddress); - groupId = _groupId; - semaphore.createGroup(groupId, address(this)); + groupId = semaphore.createGroup(); } function joinGroup(uint256 identityCommitment) external { diff --git a/packages/cli-template-monorepo-subgraph/apps/contracts/hardhat.config.ts b/packages/cli-template-monorepo-subgraph/apps/contracts/hardhat.config.ts index ef1c30c6..7010a533 100644 --- a/packages/cli-template-monorepo-subgraph/apps/contracts/hardhat.config.ts +++ b/packages/cli-template-monorepo-subgraph/apps/contracts/hardhat.config.ts @@ -10,7 +10,7 @@ dotenvConfig({ path: resolve(__dirname, "../../.env") }) const config: HardhatUserConfig = { solidity: "0.8.23", - defaultNetwork: process.env.DEFAULT_NETWORK || "localhost", + defaultNetwork: process.env.DEFAULT_NETWORK || "hardhat", networks: { hardhat: { chainId: 1337 diff --git a/packages/cli-template-monorepo-subgraph/apps/contracts/tasks/deploy.ts b/packages/cli-template-monorepo-subgraph/apps/contracts/tasks/deploy.ts index 0dd175e4..65a156e0 100644 --- a/packages/cli-template-monorepo-subgraph/apps/contracts/tasks/deploy.ts +++ b/packages/cli-template-monorepo-subgraph/apps/contracts/tasks/deploy.ts @@ -2,9 +2,8 @@ import { task, types } from "hardhat/config" task("deploy", "Deploy a Feedback contract") .addOptionalParam("semaphore", "Semaphore contract address", undefined, types.string) - .addOptionalParam("group", "Group id", "42", types.string) .addOptionalParam("logs", "Print the logs", true, types.boolean) - .setAction(async ({ logs, semaphore: semaphoreAddress, group: groupId }, { ethers, run }) => { + .setAction(async ({ logs, semaphore: semaphoreAddress }, { ethers, run }) => { if (!semaphoreAddress) { const { semaphore } = await run("deploy:semaphore", { logs @@ -13,13 +12,9 @@ task("deploy", "Deploy a Feedback contract") semaphoreAddress = await semaphore.getAddress() } - if (!groupId) { - groupId = process.env.GROUP_ID - } - const FeedbackFactory = await ethers.getContractFactory("Feedback") - const feedbackContract = await FeedbackFactory.deploy(semaphoreAddress, groupId) + const feedbackContract = await FeedbackFactory.deploy(semaphoreAddress) if (logs) { console.info(`Feedback contract has been deployed to: ${await feedbackContract.getAddress()}`) diff --git a/packages/cli-template-monorepo-subgraph/apps/contracts/test/Feedback.ts b/packages/cli-template-monorepo-subgraph/apps/contracts/test/Feedback.ts index 7733e3b8..6d18aabc 100644 --- a/packages/cli-template-monorepo-subgraph/apps/contracts/test/Feedback.ts +++ b/packages/cli-template-monorepo-subgraph/apps/contracts/test/Feedback.ts @@ -9,8 +9,6 @@ import { Feedback, ISemaphore } from "../typechain-types" describe("Feedback", () => { async function deployFeedbackFixture() { - const groupId = "42" - const { semaphore } = await run("deploy:semaphore", { logs: false }) @@ -19,10 +17,11 @@ describe("Feedback", () => { const feedbackContract: Feedback = await run("deploy", { logs: false, - group: groupId, semaphore: await semaphoreContract.getAddress() }) + const groupId = await feedbackContract.groupId() + return { semaphoreContract, feedbackContract, groupId } } diff --git a/packages/cli-template-monorepo-subgraph/apps/web-app/.env.development b/packages/cli-template-monorepo-subgraph/apps/web-app/.env.development index afa31569..1d41062f 100644 --- a/packages/cli-template-monorepo-subgraph/apps/web-app/.env.development +++ b/packages/cli-template-monorepo-subgraph/apps/web-app/.env.development @@ -1,4 +1,4 @@ NEXT_PUBLIC_DEFAULT_NETWORK=localhost NEXT_PUBLIC_FEEDBACK_CONTRACT_ADDRESS=0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9 NEXT_PUBLIC_SEMAPHORE_CONTRACT_ADDRESS=0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0 -NEXT_PUBLIC_GROUP_ID=42 +NEXT_PUBLIC_GROUP_ID=0 diff --git a/packages/cli-template-monorepo-subgraph/apps/web-app/package.json b/packages/cli-template-monorepo-subgraph/apps/web-app/package.json index 65fd9dbc..1d4ba58f 100644 --- a/packages/cli-template-monorepo-subgraph/apps/web-app/package.json +++ b/packages/cli-template-monorepo-subgraph/apps/web-app/package.json @@ -11,6 +11,7 @@ "dependencies": { "@semaphore-protocol/core": "4.0.0-beta.4", "@semaphore-protocol/data": "4.0.0-beta.4", + "@semaphore-protocol/utils": "4.0.0-beta.4", "ethers": "^6.11.1", "next": "14.1.0", "next-pwa": "^5.6.0", diff --git a/packages/cli-template-monorepo-subgraph/apps/web-app/src/app/groups/page.tsx b/packages/cli-template-monorepo-subgraph/apps/web-app/src/app/groups/page.tsx index 7163f315..a4a0f229 100644 --- a/packages/cli-template-monorepo-subgraph/apps/web-app/src/app/groups/page.tsx +++ b/packages/cli-template-monorepo-subgraph/apps/web-app/src/app/groups/page.tsx @@ -1,12 +1,12 @@ "use client" +import Stepper from "@/components/Stepper" +import LogsContext from "@/context/LogsContext" +import SemaphoreContext from "@/context/SemaphoreContext" import { Identity } from "@semaphore-protocol/core" import { useRouter } from "next/navigation" import { useCallback, useContext, useEffect, useState } from "react" import Feedback from "../../../contract-artifacts/Feedback.json" -import Stepper from "@/components/Stepper" -import LogsContext from "@/context/LogsContext" -import SemaphoreContext from "@/context/SemaphoreContext" export default function GroupsPage() { const router = useRouter() @@ -74,7 +74,7 @@ export default function GroupsPage() { setLoading(false) }, [_identity]) - const userHasJoined = useCallback((identity: Identity) => _users.includes(identity.commitment), [_users]) + const userHasJoined = useCallback((identity: Identity) => _users.includes(identity.commitment.toString()), [_users]) return ( <> diff --git a/packages/cli-template-monorepo-subgraph/apps/web-app/src/components/PageContainer.tsx b/packages/cli-template-monorepo-subgraph/apps/web-app/src/components/PageContainer.tsx index 854dd681..079ec70e 100644 --- a/packages/cli-template-monorepo-subgraph/apps/web-app/src/components/PageContainer.tsx +++ b/packages/cli-template-monorepo-subgraph/apps/web-app/src/components/PageContainer.tsx @@ -52,7 +52,7 @@ export default function PageContainer({
{shortenString(process.env.NEXT_PUBLIC_FEEDBACK_CONTRACT_ADDRESS as string, [6, 4])}
diff --git a/yarn.lock.REMOVED.git-id b/yarn.lock.REMOVED.git-id index 4f732fd9..8d1fad8d 100644 --- a/yarn.lock.REMOVED.git-id +++ b/yarn.lock.REMOVED.git-id @@ -1 +1 @@ -1247bf70e3976f03369bfa231c9c09573776282c \ No newline at end of file +40c5116424f96a0551e5a2c7a9e38f4ed2092871 \ No newline at end of file