# 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/)._