Skip to content

Repository files navigation

Tokenized Ballot

Learning to use ERC20 EIP standard and Open Zeppelin contracts implementing a tokenized ballot.

Setup


Put your .env file at root. It should contain:

ERC20_TOKEN_DEPLOYER_PRIVATE_KEY=VOTER1_PRIVATE_KEY=VOTER2_PRIVATE_KEY=VOTER1_PUBLIC_KEY=VOTER2_PUBLIC_KEY=ERC20_TOKEN_CONTRACT_ADDRESS=TOKENIZED_BALLOT_CONTRACT_ADDRESS=INFURA_API_KEY=INFURA_API_SECRET=ALCHEMY_API_KEY=ETHERSCAN_API_KEY=

Install dependencies

yarn install

Compile contracts

yarn hardhat compile

Test


yarn hardhat test

Run no-interaction mode inside hre

Single execution of all the workflow inside hre with hardcoded values.

yarn run ts-node --files ./scripts/hre/Main.ts

Deployment Scripts


Deploying to Goerli Testnet

In order to properly deploy to Goerli, you need to have a funded account. You can get some Goerli ETH a Goerli Faucet. Once an account is funded with Goerli ETH, you can deploy the contracts to Goerli by running the following commands in this order:

Deploy VotingERC20Token as deployer/minter - needed for users to get voting tokens and voting power

yarn run ts-node --files ./scripts/goerli/DeployVotingToken.ts

Mint desired amount of tokens for Voter1 and Voter2.

yarn run ts-node --files ./scripts/goerli/MintVotingToken.ts "amount"

Voter 1 delegates voting power to Voter 2. Also Voter 2 self-delegates to activate vote power.

yarn run ts-node --files ./scripts/goerli/DelegateVotingToken.ts "Voter2 address"

Deploy Tokenized Ballot as deployer. Will set BlockId as latest. Pass desired proposals as arguments.

yarn run ts-node --files ./scripts/goerli/DeployTokenizedBallot.ts "Proposal 1""Proposal 2""Proposal 3"

Voter 2 votes certain amount to desired proposal number.

yarn run ts-node --files ./scripts/goerli/Vote.ts "proposal""amount"

Voter 2 certain amount to desired proposal number.

yarn run ts-node --files ./scripts/goerli/Vote.ts "proposal""amount"

Check who's winning on current block.

yarn run ts-node --files ./scripts/goerli/WinnerName.ts

About

Week3 Projet

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages