Skip to content

0xHustling/VoteCast-Contracts

Repository files navigation

VoteCast - ETHGlobal London 2024 Project

ETHGlobal_London_Banner

About

Enable Cross-Chain DAO Participation on the Farcaster Network

We empower Farcaster users to participate in DAO governance, irrespective of the underlying blockchain network.

Our product enables users to cast votes on proposals across different chains directly from their Safe ERC4337 wallet on the Base Network, streamlining the governance process and fostering greater community involvement.

LayerZero

Homepage | Docs | Developers

OApp Example

Quickstart | Configuration | Message Execution Options | Endpoint Addresses

Template project for getting started with LayerZero's OApp contract development.

1) Developing Contracts

Installing dependencies

We recommend using pnpm as a package manager (but you can of course use a package manager of your choice):

pnpm install

Compiling your contracts

This project supports both hardhat and forge compilation. By default, the compile command will execute both:

pnpm compile

If you prefer one over the other, you can use the tooling-specific commands:

pnpm compile:forge
pnpm compile:hardhat

Or adjust the package.json to for example remove forge build:

- "compile": "$npm_execpath run compile:forge && $npm_execpath run compile:hardhat",
- "compile:forge": "forge build",
- "compile:hardhat": "hardhat compile",
+ "compile": "hardhat compile"

Running tests

Similarly to the contract compilation, we support both hardhat and forge tests. By default, the test command will execute both:

pnpm test

If you prefer one over the other, you can use the tooling-specific commands:

pnpm test:forge
pnpm test:hardhat

Or adjust the package.json to for example remove hardhat tests:

- "test": "$npm_execpath test:forge && $npm_execpath test:hardhat",
- "test:forge": "forge test",
- "test:hardhat": "$npm_execpath hardhat test"
+ "test": "forge test"

2) Deploying Contracts

Set up deployer wallet/account:

  • Rename .env.example -> .env
  • Choose your preferred means of setting up your deployer wallet/account:
MNEMONIC="test test test test test test test test test test test junk"
or...
PRIVATE_KEY="0xabc...def"

To deploy your contracts to your desired blockchains, run the following command in your project's folder:

npx hardhat lz:deploy

More information about available CLI arguments can be found using the --help flag:

npx hardhat lz:deploy --help

By following these steps, you can focus more on creating innovative omnichain solutions and less on the complexities of cross-chain communication.



Join our community on Discord | Follow us on Twitter

About

ETHGlobal London 2024: VoteCast Smart Contracts

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published