Configuración rápida
Semaphore ofrece un CLI oficial para configurar su proyecto con Hardhat. Si su NPM es versión 5.2 or más reciente puede utilizar NPX:
npx @semaphore-protocol/cli@^3 create my-app --template monorepo-ethers
De lo contrario, instale @semaphore-protocol/cli@^3
de forma global y corra el comando init
:
npm i -g @semaphore-protocol/cli@^3
semaphore create my-app --template monorepo-ethers
Los templates soportados son: contracts-hardhat
, monorepo-ethers
, monorepo-subgraph
El CLI semaphore
también se puede utilizar para obtener información de los grupos que existen dentro de las redes soportadas por Semaphore (por ejemplo: semaphore get-groups --network goerli
).
Para comenzar a trabajar en su proyecto, instale las siguientes dependencias:
- npm
- Yarn
- pnpm
cd my-app
npm i
cd my-app
yarn
cd my-app
pnpm install
Output
El comando create
creará un directorio con el nombre my-app (o cualquier nombre que usted escoja) dentro de la carpeta actual. Ese directorio contendrá la estructura inicial del proyecto, que incluye un contrato simple (contract), una tarea (task) para desplegar lo, algunas pruebas (test) y una aplicación de Next.js (la carpeta web-app) para interactuar con el contrato.
my-app
├── .yarn
├── apps
│ └── contracts
│ │ └── contracts
| │ │ └── Feedback.sol
│ │ └── scripts
| │ │ └── download-snark-artifacts.ts
│ │ └── tasks
| │ │ └── deploy.ts
│ │ └── test
| │ │ └── Feedback.ts
│ │ └── hardhat.config.ts
│ │ └── package.json
│ │ └─ ─ tsconfig.json
│ └── web-app
├── scripts
│ └── copy-contracts-artifacts.ts
├── .editorconfig
├── .env
├── .env.example
├── .eslintignore
├── .eslintrc.json
├── .gitignore
├── .prettierignore
├── .prettierrc.json
├── .yarnrc.yml
├── package.json
├── README.md
└── tsconfig.json
El contrato Feedback.sol
crea un grupo Semaphore, permite que los usuarios se unan a ese grupo con su identidad Semaphore, y, finalmente, permite que los miembros de ese grupo envíen un feedback anónimo.
Uso
Compilar contratos
Vaya a la carpeta contracts
:
cd apps/contracts
Y compile sus contratos al correr:
- npm
- Yarn
- pnpm
npm run compile
yarn compile
pnpm compile
Pruebe los contratos
Pruebe sus contratos al correr:
- npm
- Yarn
- pnpm
npm test
yarn test
pnpm test
Genere un reporte de la prueba de cobertura:
- npm
- Yarn
- pnpm
npm run test:coverage
yarn test:coverage
pnpm test:coverage
O un reporte de la prueba de gas:
- npm
- Yarn
- pnpm
npm run test:report-gas
yarn test:report-gas
pnpm test:report-gas
Desplegar contratos
Siga las instrucciones a continuación para desplegar sus contratos:
En la carpeta raíz del proyecto:
-
Agregue sus variables de entorno en el archivo
.env
.notaDeberá por lo menos configurar un URL válido en Ethereum (ejemplo: Infura) y una llave privada con algunos ethers.
-
Vaya a la carpeta
apps/contracts
y desplegue su contrato.- npm
- Yarn
- pnpm
npm run deploy -- --semaphore <semaphore-address> --group <group-id> --network goerli
yarn deploy --semaphore <semaphore-address> --group <group-id> --network goerli
pnpm deploy --semaphore <semaphore-address> --group <group-id> --network goerli
notaRevise las direcciones de los contratos de Semaphore aquí.
precauciónEl group id (id del grupo) es un número.
Inicie la app
Inicie la aplicación:
- npm
- Yarn
- pnpm
npm run dev
yarn dev
pnpm dev