Summoning a Yeeter

The Yeeter is a fully decentralized crowdfunding tool that gives you a DAO from day 1.

What follows are the manual steps using Etherscan to summon a Yeeter DAO. There are 4 main steps and 3 videos (around 5 mins each) in this walk-through. This is an alpha version of our summoning UI, 😂 very alpha and completely manual. But if you just can't wait for the UI just Y33t it! We want your feedback.

Things to Have Ready

Before you dive into the contracts there are a few blanks you need fill in. Review the Yeeter Configuration Questions and make sure your team is aligned on the answers. Most of this information is required in the configuration steps below. It may be helpful to make a copy of the Yeeter Configuration Template to keep up with your data.

You will need to do a few transactions from a block explorer like Etherscan (Mainnet/Rinkeby) or Blockscout (Gnosis Chain)

The contract addresses you will need are available in the Moloch V2.5 README.md

Four steps:

  1. Summon DAO
  2. Summon Yeeter Shaman
  3. Setup DAO
  4. Register DAO

At the end your Yeet should show on the Yeeter UI and you will have a DAO configured on the DAOhaus platform.

1) Summon DAO with DaoSafeMinionSummoner Contract

Tutorial Video 1

Get DAO 2.5 factory address from the Moloch V2.5 README.md and search for that contract in the block explorer for the chain you are summoning on.

Use summonDaoMinionAndSafe Function

  • _saltNonce: 0x followed by any random hex number
    • Ex (Mainnet): 0xe2dd0d5ead0d481a10be6059d76100ee
    • Generate Random Hex
    • Ex (Gnosis Chain): 674280132
    • On Gnosis Chain this is a large random integer not a 0x and hex. The only requirement is that the number has not been used in a previous campaign. Use 1000000000 as the Max and generate a random number.
  • _periodDuration: Length of period (velocity) in seconds.
    • Ex: 3600 (1 hour in seconds)
  • _votingPeriodLength: Length of time for voting on DAO proposals measured in _periodDuration
    • Ex: 48 (2 days)
  • _gracePeriodLength: Length of time DAO members are allowed to ragequit before proposals are passed measured in _periodDuration
    • Ex: 48 (2 days)
  • _approvedTokens: Wrapped native token of the network you are deploying the Yeeter on. wETH for Mainnet and Rinkeby. wxDai for Gnosis Chain. Formatted as a string in an array.
    * Mainnet: ["0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"] 
    * Rinkeby: ["0xc778417E063141139Fce010982780140Aa0cD5Ab"]
    * Gnosis Chain: ["0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d"]
  • details Name of the minion safe
    • Ex: Our DAO Safe

Click Write

Click Approve in MetaMask

Go to Read Contract button on block explorer and input number into daos function. Sequentially Query numbers until the daos(uint256) method Response results are empty:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Then Query the previous number to return the last addresses which will be the DAO you summoned.

Take note of the id and moloch address as you will need them in the following steps.

2) Summon Yeeter Shaman with YeetSummoner Contract

Tutorial Video 2

Get Yeeter factory address from the Moloch V2.5 README.md

Use summonYeet Function

  • _moloch: Address from the Read Contract daos function of the DaoSafeMinionSummoner Contract
    • Ex: 0xa57368072F96a5b6daBD9b5C70C08e0f0c7281bb
  • _wrapper: Wrapped native token of the network you are deploying the Yeeter on. wETH for Mainnet and Rinkeby. wxDai for Gnosis Chain. Not formatted as an array.
    * Mainnet: 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
    * Rinkeby: 0xc778417E063141139Fce010982780140Aa0cD5Ab
    * Gnosis Chain: 0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d
  • _maxTarget: Maximum capitalization of the campaign measured in Wei.
  • _raiseEndTime: When the campaign ends in UNIX epoch time.
  • _raiseStartTime: When the campaign starts in UNIX epoch time.
  • _maxUnits: The maximum units per address. Used to caluculate maximum an individual can contribute (_maxUnits * _pricePerUnit).
  • _pricePerUnit: Each unit has a price measured in Wei and contributors get 100 loot per unit (this is the minimum an address can contribute).
  • details Name of the Yeeter campaign
    • Ex: My Yeeter Project

More on Units: Think of units as NFTs, a address can only mint up to the max and they get 100 loot in the DAO for each unit. So if the max per person is 1 xdai and each unit costs .1 xdai you would set _priceper unit to .1xdai (1000000000000000000 wei) and _maxUnits to 10. 10 * .1 = 1

Click Write

Click Approve in MetaMask

Go to Read Contract button on block explorer and expand the yeetIdx function. Ex: 20

Input the yeetIdx and Query the yeeters function. Very this is the correct address by sequentially quering the next number until the yeeters(uint256) method Response results are empty:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Then Query your yeetIdx to return the last addresses which will be the Yeeter you summoned.

Take note of the address as you will need it in the next step.

3) Setup DAO with DaoSafeMinionSummoner Contract

Tutorial Video 3

Use setUpDaoMinionAndSafe Function

  • id: id of DAO you summoned in step 1.
  • _summoners: Addresses of your core team who are founding members of your DAO. These members will hold shares and have voting rights. Add your address first (will automatically get 1 share) and format as an array of strings.
    • Ex: ["0x123…","0x456…","0x789…"]
  • _summonerShares: Amount of shares for founding members of your DAO. Take into account the first address already has 1 share. Format as an array.
    • Ex: [9,10,10]
  • _summonerLoot: Amount of loot for founding members of your DAO. Should probably be zero.
    • Ex. [0,0,0]
  • _shamans: Address of the Yeeter Shaman you summonded in Step 2 formated as a string in an array.
    • Ex: ["0x45Ea2b12F401f728ff3FD91472c3cE8D91227263"]

Click Write

Click Approve in MetaMask

4) Register DAO

  • Go to DAOhaus App
  • Add /register/[Chain ID]/[moloch address] to the end of the URL.
    • Ex: https://app.daohaus.club/register/0x4/0xa57368072F96a5b6daBD9b5C70C08e0f0c7281bb
    * Mainnet: 0x1
    * Rinkeby: 0x4
    * Gnosis Chain: 0x64
  • Connect your wallet to register your DAO.
  • Fill out the form to add the metadata of your DAO.
  • Set at least NAME and DESCRIPTION and click Save.
  • LONG DESCRIPTION accepts Markdown and will display when the 'Show More' button in the Yeeter interface is clicked.
  • If you want to display a Soft Cap in the Yeeter UI use the TAGS field.
    • Ex: sc:20 (20% of the Maximum capitalization of the campaign)

Click Save

Click Sign in MetaMask

Y33t!

Settings in the Register DAO steps are updatable using the DAOhaus App.