How to do the xDAI migration

There is rough consensus among RG members that we should migrate the DAO from mainnet to xDAI. The obvious benefit is massively cheaper transaction fees, which expands the types of things we can do on-chain as a guild: more proposals, better voting participation, more complex minion proposals, more operations/process automation, etc.

To get those benefits, we have to execute the migration. Here are a few things we need to solve for:

  1. Moving the DAO itself to xDAI
  2. Getting existing members their appropriate shares in the new DAO on xDAI, including the process of new shares in preparation for the cutover to a DAI share price
  3. How to bridge the current DAO funds over to the new DAO
  4. How to handle the consultation fee
  5. How to handle the escrow

Proposed Solutions

And my thoughts on how we can solve for each:

1 and 2) DAO and share migration

Summon a new DAO on xDAI with the moloch v2.1 multisummoner, with existing members assigned to the number of shares as calculated in the share price cutover spreadsheet

3) Bridging DAO funds

I think this can actually be pretty simple. Once the new DAO on xDAI has been summoned, for each token in our bank we create a minion proposal on mainnet that sends that token across the bridge to our new DAO address. For all non-DAI tokens, we send them to the new DAO address directly. For DAI, however, we’ll need to send it to a minion on xDAI that can then wrap it in wxDAI (can be the same one referenced in the next section).

4) Consultation Fees

We should provide two options on the hire us page:

  • A button to send 300 wxDAI directly to the DAO bank, on the xDAI network (potentially with the wrapper integrated so clients can use xDAI directly). This works for clients who have already bridged over funds to the xDAI network. We can highlight the super cheap gas costs.
  • A button that initiates a tx to send DAI over the bridge from mainnet to xDAI, with the destination address a minion that can be later poked to wrap the xDAI into wxDAI and send it to the DAO bank. This works for clients who don’t yet have any funds on xDAI.

5) Raid Guild Escrow

Given the multiple interactions a client will need to be able to make with the escrow contract – deposit, release, and (hopefully not) lock – supporting a cross-network functionality here will be difficult. In the future this may be come more feasible (e.g. via xDAI’s arbitrary message bridge or Connext’s Vector protocol), but for now my recommendation is to simply deploy our escrow contract on xDAI. LexDAO already has an arbitration address set up on xDAI, so this should be pretty simple.

An alternative option is to take the opportunity to make some improvements to how the escrow works. For example:

  • support non-uniform milestones so that raids don’t need to break payments into equal parts.
  • allow clients to deposit as milestones progress so that they don’t have to front the entire raid payment
  • convert to single-contract-per-escrow architecture, which would avoid the creation of a honey pot and avoid the possibility of funds getting accidentally stuck in the contract if not sent correctly.

A number of these features have already been implemented in our Smart Invoice contract system, so the bulk of the effort would be in adding the spoils splitting into that. This could even be done as a separate helper contract, enabling the RG escrow to use the same core escrow infrastructure as Smart Invoice.

1 Like

Here’s the xDAI migration process as discussed in Jan 28 Roundtable:

Now / ASAP
  1. Create a 3/4 multisig on mainnet and xDAI
  2. For each token in our bank, create a proposal to send those funds to the mainnet multisig from (0)
During the Roundtable on Feb 4 (fallback: happy hour the next day)
  1. Set cutover ETH price (ETH price at start of the meeting) and calculate xDAI shares
  2. Summon new xDAI DAO with shares from (2)
  3. Process the proposals from (1) to send the funds to the mainnet multisig from (0)
  4. Mainnet multisig bridges all funds to the xDAI multisig
  5. xDAI multisig wraps xDAI to wxDAI
  6. xDAI multisig sends all funds to the xDAO from (3)


1 Like

here is a working doc to keep notes on our game plan