Solidity Smart Contract for RYO ERC20 Token.
The main token contract. All tokens are minted during deployment and transferred to vesting contracts.
Auxiliary contract implementing TimelockController role. It owns RYO token and can control vesting contracts.
This is abstract base contract for concrete vesting implementation.
It holds RYO tokens and unlock them according to implementation schedule.
GovernanceTimeLock can call addBalance()
method to distribute tokens.
The withdraw()
function can be called later to transfer unlocked funds.
Schedule launched by calling launchSale()
method.
This is abstract base contract for vesting implementation that uses Merkle Tree algorithm to distribute tokens.
Owner of the tokens should provide MerkleProof in withdraw()
method.
Schedule launched by calling launchSale()
method.
Different vesting schedules implemented according to RYO tokenomics.
RYO uses a network of contract. The order in which they are deployed is very important. Example deployments can be found in ignition/modules/
folder.
Recommended order for deployment:
- Create multi-sig wallet
- Deploy GovernanceTimeLock with reasonable time delay and multi-sig as proposer and signers as executors
- Deploy RYO token
- Deploy vesting contracts
- Set vesting contracts' token to deployed token address
Hardhat is used for tests and deployments.
Run npm install
to install dependencies.
Use npx hardhat test
to run tests for provided smart cntracts.
You can deploy to hardhat test network via ignition:
npx hardhat ignition deploy ignition/modules/RYO.ts --network hardhat --parameters ignition/parameters.json
Verify on Etherscan on mainnet:
npx hardhat ignition verify chain-1