Week 5

This week was about DAOs or Decentralised Autonomous Organisations, the Web3 version of organisational hierarchy. As compared to the other weeks this wasn't as task intensive and was mostly about exploring the sector and a simple task, nothing too involved, since finally someone told aniket we're not able to focus on the capstone project due to the onslaught of weekly tasks.

I went through some of the material given by the fellowship and watched a few videos from Bankless's podcast with Kain Warwick on how DAOs will change everything. Going through this content made me aware of several usecases of DAOs, especially in institutions that handle huge sums of crypto via their smart contracts, Uniswap for example. It only makes sense that a massive Defi app like Uniswap will be run by it's stakeholders, the people that hold the UNI token. This makes the entire process extremely trustless and lets people outside the org get insights into the internal workings of the DAO letting people evaluate the organisation a lot better.

Aside from the Fellowship material we also had a session with Marco about DAOs and Polygon.

Polygon and DAOs with Marco

Marco started off the conversation by talking about DAOs on polygon and spoke about key DAO tools.

  • Some of the problems with DAOs that he mentioned were the lack of tooling/ very early stages of existing tools, Plutocracy, member onboarding and a bunch more.

  • He also spoke about Polygon's role in improving DAO tools by introducing products like Polygon ID, based off of Zero knowledge proofs

  • Marco also mentioned about Polygon's DAO on mainnet called Polygon Village that helps developers build and grow on Polygon.

Task 1

This involved us going through the material and joining a DAO and listing out our experience regarding the same. You can find a detailed review of the DAOs i joined in the link below.

Ze DAO Experience

Task 2

We had to learn about making our ERC20 token from scratch without using Openzeppelin's contracts. I had fun exploring this using tutorials from Patrick Collin's massive 32 hour video. After deploying the token we had to make a liquidity pool on uniswap and find it's contract address.

This part was especially tricky since Uniswap doesn't show the address of liquidity pools on testnets (yes i'm too broke to pay for gas fees).

Inorder to circumvent this i used their SDK to return the liquidity pools' address. You can find a code snippet to do the same:

const { ethers } = require("ethers");
const {
  abi: UniswapV3Factory,
} = require("@uniswap/v3-core/artifacts/contracts/UniswapV3Factory.sol/UniswapV3Factory.json");
require("dotenv").config();
// const GOERLI_URI = process.env.GOERLI_URI;
const GOERLI_URI =
  "https://eth-goerli.g.alchemy.com/v2/";

// DAI on goerli
const address0 = "0xdc31Ee1784292379Fbb2964b3B9C4124D8F89C60";
// SB on goerli
const address1 = "0xD83f39EC5c915A01735C6Ab6CFf190723D1a0633";
// Uniswap V3 positions NFT-v1
const factoryAddress = "0xC36442b4a4522E871399CD717aBDD847Ab11FE88";
console.log(GOERLI_URI);

async function main() {
  const provider = new ethers.providers.JsonRpcProvider(GOERLI_URI as string);

  const factoryContract = new ethers.Contract(
    factoryAddress,
    UniswapV3Factory,
    provider
  );

  const poolAddress = await factoryContract.getPool(address0, address1, 500);
  console.log("poolAddress", poolAddress);
}

main();

All in all had fun this week, aside from the fact that i had covid (yeah that sucked ).