# Summoning a Yeeter The [Yeeter](https://yeet.daohaus.club/) 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](https://hackmd.io/i65pv46VT7aq4ranT2oxjA?view) 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](https://hackmd.io/HcHeWn3XR_uZnNGLTFp54w?view) to keep up with your data. You will need to do a few transactions from a block explorer like [Etherscan](https://etherscan.io/) (Mainnet/Rinkeby) or [Blockscout](https://blockscout.com/xdai/mainnet/) (Gnosis Chain) The contract addresses you will need are available in the Moloch V2.5 [README.md](https://github.com/HausDAO/Moloch2.5) **Four steps**: 1. [Summon DAO](https://hackmd.io/wheZyz1HQIq6B9dCs4A6JA?view#1-Summon-DAO-with-DaoSafeMinionSummoner-Contract) 2. [Summon Yeeter Shaman](https://hackmd.io/wheZyz1HQIq6B9dCs4A6JA?view#2-Summon-Yeeter-Shaman-with-YeetSummoner-Contract) 3. [Setup DAO](https://hackmd.io/wheZyz1HQIq6B9dCs4A6JA?view#3-Setup-DAO-with-DaoSafeMinionSummoner-Contract) 4. [Register DAO](https://hackmd.io/wheZyz1HQIq6B9dCs4A6JA?view#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](https://www.loom.com/share/83d3ab1deac44d2da7b0e7c44a806927) Get [DAO 2.5 factory](https://github.com/HausDAO/Moloch2.5#dao-25-factory) address from the Moloch V2.5 [README.md](https://github.com/HausDAO/Moloch2.5) and search for that contract in the block explorer for the chain you are summoning on. - [Rinkeby](https://rinkeby.etherscan.io/) - [Mainnet](https://etherscan.io/) - [Gnosis Chain](https://blockscout.com/xdai/mainnet/) ### Use `summonDaoMinionAndSafe` Function * `_saltNonce`: `0x` followed by any random hex number * Ex (Mainnet): `0xe2dd0d5ead0d481a10be6059d76100ee` * [Generate Random Hex](https://www.browserling.com/tools/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](https://www.random.org/). * `_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: ![empty-results](https://i.imgur.com/4Crm0u5.png) 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](https://www.loom.com/share/955b235977e0424699cd112579e16817) Get [Yeeter factory](https://github.com/HausDAO/Moloch2.5#yeeter-factory) address from the Moloch V2.5 [README.md](https://github.com/HausDAO/Moloch2.5) ### 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`. * Ex: `69000000000000000000` (69 ETH) * [Ethereum Unit Converter](https://eth-converter.com/) * [Wei](https://www.investopedia.com/terms/w/wei.asp) * `_raiseEndTime`: When the campaign ends in UNIX epoch time. * Ex. `1648830000` (Friday, April 1, 2022 4:20:00 PM) * [Epoch & Unix Timestamp Conversion Tools](https://www.epochconverter.com/) * `_raiseStartTime`: When the campaign starts in UNIX epoch time. * Ex. `1647011460` (Friday, March 11, 2022 3:11:00 PM) * [Epoch & Unix Timestamp Conversion Tools](https://www.epochconverter.com/) * `_maxUnits`: The maximum units per address. Used to caluculate maximum an individual can contribute (`_maxUnits` * `_pricePerUnit`). * Ex. `3` * [Ethereum Unit Converter](https://eth-converter.com/) * `_pricePerUnit`: Each unit has a price measured in `Wei` and contributors get 100 loot per unit (this is the minimum an address can contribute). * Ex. `1000000000000000000` (1 ETH) * [Ethereum Unit Converter](https://eth-converter.com/) * `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: ![empty-yeet-results](https://i.imgur.com/9abEkJD.png) 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](https://www.loom.com/share/d8eb98fdb8d94afcad7693e45cd893eb) ### 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](https://app.daohaus.club/) * 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. * Ex: [Example Long Description](https://hackmd.io/@Dekan/r1tZBBIZq) * 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](https://app.daohaus.club/)._