yAgnostic Weekly Updates — March 11th

We are excited to bring to our dear community the yAgnostic development progress report for this week. Based on our roadmap for Q1 to Q2 2021, the team is currently working on a blockchain-agnostic solution for secure Vaults for DeFi strategies implementation.

To better understand the flow and the process of delivering the product, we’ve created roadmaps for both contracts and front-end implementation.

*Stages already passed and implemented are marked with (!)

*Stages already passed and implemented exactly this week with (!!)

DAO roadmap:

● Token staking in exchange for voting power (!)

● Proposals creation and voting (!)

● Multisig wallet for proposals execution (in progress)

● DAO rewards system

● yAgnostic token receiving in the protocol scheme

Front-end roadmap:

● Init react app (!)

● Create a home page component (!)

● Create layout component with header (!)

● Create a dashboard component (!)

● Connect App to wallet (MetaMask) (!)

● Connect App to contracts (!)

● Create vaults component (!)

● Create stats component (!)

● Create admin component (!)

● Connect our contracts to vaults:

○ Get user and vault balances (!!)

○ Deposit

○ Deposit all

○ Withdraw

○ Withdraw all

● Create a staking component (dao) (!)

● Create a voting component (dao) (!!)

Substrate Node setup roadmap:

● Initial Substrate node structure (!)

● ORML package added (!!)

● Token wrappers pallet (!!)

● Test version of the tokens implementations, e.g. Eth emulation and stablecoins emulation (in progress)

● Vault Deposit/Withdraw pallet initial functionality (in progress)

● Vaults pallets and modules for the Substrate node

● Native token (implemented as pallet) for the governance

● Correct RPCs for the frontend

● Update node structure with consensus rules, transaction weights and off chain workers

● Local dev network deployment with several validators

● Interfaces for additional protocols and tokens integration

Scope delivered

Below you can find the details on work done from contracts and the front-end side.

Contracts scope delivered:

● Finished staking/voting power and proposals/voting tests for DAO

● Created architectural scheme for the platform:

○ Created platform architecture diagram

○ Created doc with the diagram and platform description

● Created gas estimation scripts and docs for DAO functionality

● Made several Governance contract improvements and tests for them:

○ Changed DAO funds locking logic, funds will be locked to the end of the proposal

○ Created getter for a bunch of proposals using one request

○ Add revoke proposal function for the proposal’s author, so he can cancel the proposal after creation

● Made DAO migrations improvements.

● Developed IPFS connection scheme to the DAO proposals:

○ Investigated on the IPFS CID storing on the contracts and tested several solutions

○ Implemented CID storing on the proposals

○ Created tests and scripts for uploading/downloading proposal text using IPFS and storing its CID on the Governance contract

○ Created doc with instructions to the IPFS connection

● Created docs for the staking functionality

● Created docs for the proposals and voting functionality

● Investigated on the Multisig wallet solutions

● Corrected tests in accordance with the new version

● Added yWETH wallet Added oneSplit stub

Front-end scope delivered:

● Connected deposit functionality to our contracts

● Connected withdraw functionality to our contracts

● Implemented display of vault admin panel for governance + in admin panel there was implemented functionality for setting controller address, governance address, and change of Min param on the vault.

● Implemented Vote for DAO:

○ Proposal creation

○ Getting list of proposals

○ Voting for and against the proposal

○ Revoke of the proposal

● Voting functionality connected to our contracts

● Polishing of DAO connection on front end

List of commits to /front-end repository:

○ Implement getting whole balance of the vault

○ Change getVaultBalance method to getting balance of vault by account

○ Change getAccountBalance method to getting balance of user’s token

○ Update disabling rules of deposit and withdrawal

○ Move checkApproval to external thunk

○ Fix issues of deposit associated with amount format and async actions of redux; Handle errors of deposit thunk

○ Refactor depositAllVault thunk

○ Remove unused proxy withdraw from withdrawVault and withdrawAllVault thunks

○ Rebuild withdrawVault to use BN into amount

○ Remove withdrawAllETH method from withdrawAllVault thunk

○ Remove unused depositETH method from depositVault thunk

○ Fix min and max values of vaults

○ Fix small issues on dashboard

○ Implement getGovernance method into getVaultBalances thunk

○ Move strategy of vault to external component

○ Remove unused VaultContent component

○ Show VaultAdmin component only user are governance

○ Implement setGovernance setController and setMin for a vault

○ Implement base of Pause/Unpause a vault

○ Style VaultAdmin/VaultForm component

○ Rebase template of VoteContent component

○ Implement voteFor thunk using voteFor method from the reference web app

○ Implement voteAgainst thunk using voteAgainst method from the

reference web app

○ Connect VoteContent component to the dapp store

○ Connect getCurrentBlock / getVoteStatus / registerVote / getGasPrices / voteFor / voteAgainst thunk to VoteContent component

○ Style VoteContent component

○ Implement modal with form for generate proposals

○ Implement createPropose thunk using _callPropose from the reference web app; Connect createPropose to the current DAPP

○ Fix visible of admin panel

○ Add margin after percentage buttons

○ Remove unused vault form styles

○ Add spaces to Yearly Growth in the vault header

○ Fix validation issue with percentage buttons

○ Fix space between input number and token symbol

○ Connect actual contracts to the DAPP

○ Update stake callbacks for actual contracts

○ Update vote requirements to actual contracts

○ Style content component of stake pool

○ Update unstake to actual contracts

○ Write test function for creating IPFS hash for proposal text

○ Remove register / getting vote logic from vote module

○ Implement getCreateProposeRequirements thunk and connect it to the vote page

○ Update creating / getting a proposal for actual contracts

○ Update voteFor and voteAgainst for actual contracts

○ Implement revoking a proposal

○ Update contracts for DAO

Substrate node scope delivered:

● Substrate node implementation:

○ Setup basic working node

○ Added orml submodule for future pallets implementation

○ Added pallet for wrapped tokens

○ Deposit/Withdraw initial functionality