Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/wormhole-foundation/example-grant-program
https://github.com/wormhole-foundation/example-grant-program
Last synced: 11 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/wormhole-foundation/example-grant-program
- Owner: wormhole-foundation
- License: other
- Created: 2024-03-13T20:53:47.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2024-07-03T22:02:30.000Z (6 months ago)
- Last Synced: 2024-11-08T20:19:46.216Z (2 months ago)
- Language: TypeScript
- Size: 16.5 MB
- Stars: 0
- Watchers: 9
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# grant-program
Launch a community grant program that allows users to claim tokens by verifying their identity across multiple ecosystems.
## Local Development
The grant program has two components:
- The `token_dispenser` solana program that verifies identities, checks claim amounts and transfers tokens.
The on-chain program uses a merkle tree to verify claim membership.
- A web frontend for verifying identities, retrieving claim proofs, and submitting claim transactions.
The frontend connects to a postgres database to retrieve merkle proofs for claims that can be verified on-chain.### Configuration
Copy `frontend/.env.sample` to `frontend/.env` and edit the configuration variables therein.
### Dependencies
First, install both the [Solana CLI tools](https://docs.solana.com/cli/install-solana-cli-tools) and [Anchor](https://www.anchor-lang.com/docs/installation). We recommend `v1.14.20` for Solana and `v0.27.0` for Anchor.
Node : We recommend using [nvm](https://github.com/nvm-sh/nvm#installing-and-updating). Node version needs to be `< v17.0.0`.
Install [Docker](https://docs.docker.com/engine/install/).
Install jq and gsed.
```bash
brew install gnu-sed
brew install jq
```### Web Frontend
The frontend depends on a postgres database for storing claims and on an instance of Solana to send on-chain transactions.
Here is how to run a local postgres database as a Docker container and a Solana test validator for development.Install dependencies for the frontend. From the `frontend/` directory, run:
```bash
npm install
```Start Docker Desktop.
From the `frontend/` directory run:
```
./scripts/setup.sh --dev
```This script starts both a postgres container and a Solana test validator. It also deploys the program and populates the database with the keys stored in `frontend/integration/keys/`.
On a different terminal tab, run :
```
npm run dev
```Navigate your browser to `http://localhost:3000` to see the frontend.
The frontend also uses vercel edge functions for its backend API.
The code for this API lives in the `frontend/pages/api` directory.
The functions in that directory are available under the URL `http://localhost:3000/api/`, e.g.,
`http://localhost:3000/api/grant/v1/amount_and_proof`.
You can import the wallets from `frontend/integration/keys/` into your browser wallets to be able to claim tokens in the test environment.## Unit tests
You can run the unit tests for the `token_dispenser` program as follows:
```bash
cd token_dispenser
cargo test-bpf
```## Integration tests
From the `frontend/` directory run :
```
./scripts/setup.sh --test
```