Request form
Cyfrin F23 / foundry-dao-f23
    Docs
    Source
    ChefGPT

    A simple DAO project using a timelock from Cyfrins Foundry-23 course

    Base.sol
    StdAssertions.sol
    StdChains.sol
    StdCheats.sol
    StdError.sol
    StdInvariant.sol
    StdJson.sol
    StdMath.sol
    StdStorage.sol
    StdStyle.sol
    StdToml.sol
    StdUtils.sol
    Test.sol
    Vm.sol
    console.sol
    console2.sol
    IERC165.sol
    IERC20.sol
    IERC721.sol
    IMulticall3.sol
    MockERC20.sol
    MockERC721.sol
    safeconsole.sol
    AccessControl.sol
    IAccessControl.sol
    Ownable.sol
    Governor.sol
    IGovernor.sol
    TimelockController.sol
    GovernorCountingSimple.sol
    GovernorSettings.sol
    GovernorTimelockControl.sol
    GovernorVotes.sol
    GovernorVotesQuorumFraction.sol
    IGovernorTimelock.sol
    IVotes.sol
    IERC1155Receiver.sol
    ERC20.sol
    IERC20.sol
    ERC20Votes.sol
    IERC20Metadata.sol
    draft-ERC20Permit.sol
    draft-IERC20Permit.sol
    IERC721Receiver.sol
    Address.sol
    Checkpoints.sol
    Context.sol
    Counters.sol
    Strings.sol
    Timers.sol
    ECDSA.sol
    EIP712.sol
    ERC165.sol
    IERC165.sol
    Math.sol
    SafeCast.sol
    DoubleEndedQueue.sol
    Box.sol
    GovToken.sol
    MyGovernor.sol
    TimeLock.sol
    MyGovernorTest.t.sol

    5 downloads

    Chains

    Authors

    Cyfrin F23 / foundry-dao-f23
      Info
      Source
      ChefGPT
      Expand
      Share

      Get Cookin'

      5 downloads

      Authors

      Foundry DAO Governance

      This is a section of the Cyfrin Foundry Solidity Course.

      ⭐️ (6:05:45) | Lesson 14 | DAOs & Governance

      Please note: ERC20 based voting is not always recommended, and I encourage you to explore other forms of governance like reputation based or "skin-in-the-game" based.

      One of my favorite articles on money-based voting being bad

      Note: If you install the most recent version of openzeppelin contracts, this codebase won't work! Be sure to install v4.8.3 of openzeppelin. See the Makefile for more information.

      Getting Started

      Requirements

      • git
        • You'll know you did it right if you can run git --version and you see a response like git version x.x.x
      • foundry
        • You'll know you did it right if you can run forge --version and you see a response like forge 0.2.0 (816e00b 2023-03-16T00:05:26.396218Z)

      Quickstart

      git clone https://github.com/Cyfrin/foundry-dao-f23
      cd foundry-dao-f23
      forge install openzeppelin/openzeppelin-contracts@v4.8.3 --no-commit
      forge build
      

      Optional Gitpod

      If you can't or don't want to run and install locally, you can work with this repo in Gitpod. If you do this, you can skip the clone this repo part.

      Open in Gitpod

      Usage

      Test

      forge test
      

      Deploy

      I did not write deploy scripts for this project, you can if you'd like!

      Estimate gas

      You can estimate how much gas things cost by running:

      forge snapshot
      

      And you'll see and output file called .gas-snapshot

      Formatting

      To run code formatting:

      forge fmt
      

      Thank you!

      If you appreciated this, feel free to follow me or donate!

      ETH/Arbitrum/Optimism/Polygon/etc Address: 0x9680201d9c93d65a3603d2088d125e955c73BD65

      Patrick Collins Twitter Patrick Collins YouTube Patrick Collins Linkedin Patrick Collins Medium

      A simple DAO project using a timelock from Cyfrins Foundry-23 course
      Base.sol
      StdAssertions.sol
      StdChains.sol
      StdCheats.sol
      StdError.sol
      StdInvariant.sol
      StdJson.sol
      StdMath.sol
      StdStorage.sol
      StdStyle.sol
      StdToml.sol
      StdUtils.sol
      Test.sol
      Vm.sol
      console.sol
      console2.sol
      IERC165.sol
      IERC20.sol
      IERC721.sol
      IMulticall3.sol
      MockERC20.sol
      MockERC721.sol
      safeconsole.sol
      AccessControl.sol
      IAccessControl.sol
      Ownable.sol
      Governor.sol
      IGovernor.sol
      TimelockController.sol
      GovernorCountingSimple.sol
      GovernorSettings.sol
      GovernorTimelockControl.sol
      GovernorVotes.sol
      GovernorVotesQuorumFraction.sol
      IGovernorTimelock.sol
      IVotes.sol
      IERC1155Receiver.sol
      ERC20.sol
      IERC20.sol
      ERC20Votes.sol
      IERC20Metadata.sol
      draft-ERC20Permit.sol
      draft-IERC20Permit.sol
      IERC721Receiver.sol
      Address.sol
      Checkpoints.sol
      Context.sol
      Counters.sol
      Strings.sol
      Timers.sol
      ECDSA.sol
      EIP712.sol
      ERC165.sol
      IERC165.sol
      Math.sol
      SafeCast.sol
      DoubleEndedQueue.sol
      Box.sol
      GovToken.sol
      MyGovernor.sol
      TimeLock.sol
      MyGovernorTest.t.sol