diff --git a/README.md b/README.md index b2dc58b..875504e 100644 --- a/README.md +++ b/README.md @@ -13,13 +13,21 @@ pnpm install ``` -3. Compile the smart contracts: +3. Setup environment variables + + ```sh + mkdir .secrets + cp dev.env.sample .secrets/dev.env + vi .secrets/dev.env + ``` + +4. Compile the smart contracts: ```sh pnpm hardhat compile ``` -4. Deploy the smart contracts: +5. Deploy the smart contracts: ```sh pnpm hardhat deploy --network --tags ``` @@ -47,45 +55,44 @@ This deployment will create following infrastructure: #### How to instantiate In order to instantiate the MAO distribution, you don't need to deploy a thing. You just need to call the `instantiate` function of the the [PeeramidLabsDistributor.sol](./src/distributors/PeeramidLabsDistributor.sol) contract and specify proper distribution Id and arguments. + ```ts -import { MAODistribution } from 'rankify-contracts/types'; +import { MAODistribution } from 'rankify-contracts/types'; const distributorArguments: MAODistribution.DistributorArgumentsStruct = { - DAOSEttings: { - daoURI: 'https://example.com/dao', - subdomain: 'example', - metadata: ethers.utils.hexlify(ethers.utils.toUtf8Bytes('metadata')), - tokenName: 'tokenName', - tokenSymbol: 'tokenSymbol', - }, - ACIDSettings: { - RankTokenContractURI: 'https://example.com/rank', - gamePrice: 1, - joinGamePrice: 1, - maxPlayersSize: 16, - maxTurns: 1, - metadata: ethers.utils.hexlify(ethers.utils.toUtf8Bytes('metadata')), - minPlayersSize: 4, - paymentToken: rankify.address, - rankTokenURI: 'https://example.com/rank', - timePerTurn: 1, - timeToJoin: 1, - voteCredits: 14, - }, - }; + DAOSEttings: { + daoURI: 'https://example.com/dao', + subdomain: 'example', + metadata: ethers.utils.hexlify(ethers.utils.toUtf8Bytes('metadata')), + tokenName: 'tokenName', + tokenSymbol: 'tokenSymbol', + }, + ACIDSettings: { + RankTokenContractURI: 'https://example.com/rank', + gamePrice: 1, + joinGamePrice: 1, + maxPlayersSize: 16, + maxTurns: 1, + metadata: ethers.utils.hexlify(ethers.utils.toUtf8Bytes('metadata')), + minPlayersSize: 4, + paymentToken: rankify.address, + rankTokenURI: 'https://example.com/rank', + timePerTurn: 1, + timeToJoin: 1, + voteCredits: 14, + }, +}; const data = ethers.utils.defaultAbiCoder.encode( - [ - 'tuple(tuple(string daoURI, string subdomain, bytes metadata, string tokenName, string tokenSymbol) DAOSEttings, tuple(uint256 timePerTurn, uint256 maxPlayersSize, uint256 minPlayersSize, uint256 timeToJoin, uint256 maxTurns, uint256 voteCredits, uint256 gamePrice, address paymentToken, uint256 joinGamePrice, string metadata, string rankTokenURI, string RankTokenContractURI) ACIDSettings)', - ], - [distributorArguments], - ); - const distributorsDistId = process.env.DISTRIBUTOR_DIST_ID; - const tx = await distributorContract.instantiate(distributorsDistId, data); - + [ + 'tuple(tuple(string daoURI, string subdomain, bytes metadata, string tokenName, string tokenSymbol) DAOSEttings, tuple(uint256 timePerTurn, uint256 maxPlayersSize, uint256 minPlayersSize, uint256 timeToJoin, uint256 maxTurns, uint256 voteCredits, uint256 gamePrice, address paymentToken, uint256 joinGamePrice, string metadata, string rankTokenURI, string RankTokenContractURI) ACIDSettings)', + ], + [distributorArguments], +); +const distributorsDistId = process.env.DISTRIBUTOR_DIST_ID; +const tx = await distributorContract.instantiate(distributorsDistId, data); ``` In order to get `distributorsDistId` you can call `getDistributions` at `PeeramidLabsDistributor` contract and look for. We will host a public API to get the list of distributions soon. - ### ACID distribution [ArguableVotingTournament.sol](./src/distributions/ArguableVotingTournament.sol) is used to distribute governance tokens to the participants of the MAO by conducting autonomous competence identification tournaments. @@ -100,7 +107,6 @@ This distribution deploys the Diamond Proxy that contains the following facets: To understand how it works further please refer to [docs.rankify.it](https://docs.rankify.it/governance) or ask us a question in [Discord](https://discord.gg/EddGgGUuWC) - ## Contributing We welcome contributions to improve the Rankify smart contracts. Please fork the repository and submit a pull request. diff --git a/dev.env.sample b/dev.env.sample new file mode 100644 index 0000000..270fbc6 --- /dev/null +++ b/dev.env.sample @@ -0,0 +1 @@ +export FORK_RPC_URL="" \ No newline at end of file