---
# System prepended metadata

title: MochiMol

---

# MochiMol

> MolochV2 on BentoBox

Moloch is a simple framework for club-style DAOs. Despite it's edgy name, it actually draws from a philosophical piece, Meditations on Moloch, which tries to address the "God of Coordination Failures" that plagues fruitful cooperation. 

The smart contract does a couple things very well. It filters membership by requiring potential DAO members to be sponsored by an existing member (thus, 'club-style'). The default assumption is also that everyone has 'skin in the game' by making tribute to the DAO 'guild bank' -- Molochs escrow this tribute, which is returned to the proposer in the event that their proposal fails. Further, there is strong protection of minority and exit rights, through a 'ragequit' option that allows members to burn their ownership for a fair share of the guild bank capital.

A more thorough description of MolochV2, which has been fairly well tested and is understood by many DAOists can be found [here](https://github.com/MolochVentures/moloch). 

## Moloch meets BentoBox

`MochiMol` is an extension to MolochV2 that, by default, places guild bank deposits into BentoBox, a vault that powers SushiSwap apps. 

This allows a DAO to continuously earn yield on its treasury, through BentoBox strategies (live on Polygon via Aave) and flash-lending. Similarly, tribute escrows don't sit idle, so the opportunity cost of making proposals is lessened.

`MochiMol` also includes some additional optimizations to improve DAO UX:

- Automated wrapping of ETH (or the native chain asset).
- Instant deploy of a Minion (here, called `SuChef`) on summoning, which is an external contract that hold earmarked funds and executes actions against other contracts.
- Support for multiple DAO summoners, including specific allocations of shares and loot.
- Automated approval flow via BentoBox - if a user approves the MochiMol 'Master' contract, they have similarly approved its clones, therefore simplifying tribute and other interactions with DAOs to 1 TX if making a direct transfer from their BentoBox account.
- Create2 deployment via BentoBox - if a DAO has deployment data that would match across chains, their DAO will also have an identical address, simplifying coordination in cross-chain interactions.

In terms of differences in the contract code, `MochiMol` uses an `init()` function that takes bytes data to serve the following parameters:

![](https://i.imgur.com/k3FBv5j.png)

This is done to conform to the BentoBox factory function (`deploy()`), which is the recommended way to deploy `MochiMol` DAOs.

![](https://i.imgur.com/xHEqpZN.png)

Further, the `submitProposal()` function is payable -- in the event value is attached (say, ETH or MATIC), wrapping and deposit into BentoBox will take place for tribute. An extra param is also included in this function, `wrapBento`, which signals whether the user wants to have tokens taken from their account and deposited into BentoBox, or, in the alternative (i.e., if "false"), they are making a direct transfer from their BentoBox account.

## Alpha Deployments

`MochiMol` is in alpha on Polygon to demonstrate the benefits of BentoBox to DAO treasuries. 

Master Contract: [`0xb24D70675ca178392002781D0332DF2FE0d836c2`](https://polygonscan.com/address/0xb24d70675ca178392002781d0332df2fe0d836c2#code)

Demo DAO: [`0xb4dB3D1c51B60E63A493394a5b76F5Cf7a2d50BE`](https://polygonscan.com/address/0xb4db3d1c51b60e63a493394a5b76f5cf7a2d50be#code)

SuChef Summoner: [`0x3130Bf7c433C2b25b3E30882FDd22E885CD6A56e`](https://polygonscan.com/address/0x3130bf7c433c2b25b3e30882fdd22e885cd6a56e#code)

BentoBox: [`0x0319000133d3AdA02600f0875d2cf03D442C3367`](https://polygonscan.com/address/0x0319000133d3ada02600f0875d2cf03d442c3367#code)



