KIPX Draft: Implement the rage quit process at Incubator DAO

KIPX Draft: Implement the rage quit process at Incubator DAO

Introduction: this KIP is a draft for the first proposal to be implemented at Incubator DAO. It is used to signal intent that the sophons and multisig candidates will commit to implementing this proposal.

In your candidacy as sophon or multisig signer, please include: “If I am elected [sophon or multisig signer], my first order of business will be to review positively and put KIPX: Implement the rage quit process at Incubator DAO to token holder vote."

Revised 04/04 to implement a new process that gives immediate access to a pro-rata share of the treasury.
Revised 04/11 to mention the DAO contributors owned token amount that won’t have a claim on the treasury and the audit cost to be reimbursed.

Proposal

Implement the rage quit process at Incubator DAO, consisting of a two-step process:

  1. ROOK holders can exchange their ROOK for pROOK and a pro-rata share of the Incubator DAO treasury
  2. Three (3) months after the start of the exchange, users can exchange their pROOK for a pro-rata share of the unclaimed Incubator DAO treasury

Upon ratification of this proposal, Incubator DAO will use the pROOK token for governance.

Background

Summary

This proposal details the implementation of a rage quit process to allow ROOK token holders to exchange their ROOK tokens for a pro-rata share of the Incubator DAO treasury.

This process consists of two steps:

  1. Phase 1: ROOK holders can exchange their ROOK for pROOK at a 1:1 exchange rate and a pro-rata share of the Incubator DAO treasury (exchange rate defined by Incubator DAO total treasury ÷ (ROOK total supply [1,268,253.79] - DAO owned ROOK [ 162,809.03] - Strategic Reserve owned ROOK [452,137.53] - DAO contributors owned ROOK [35,175.14])
  2. Phase 2: Three (3) months after the opening of the exchange, the exchange window is closed and ROOK holders can’t exchange their ROOK anymore. pROOK holders can now exchange their pROOK for a pro-rata share of the unclaimed Incubator DAO treasury (exchange rate defined by remaining Incubator DAO total treasury ÷ pROOK total supply)

Analysis and Rationale

  • This proposal intends to clarify the mission of Incubator DAO and provide a clear and actionable process to allow ROOK token holders to access the value collectively owned by the DAO.

Rage Quit Only

  • Between the reception of ROOK DAO treasury assets and the opening of the exchange window, there will be no expenditure or use of the treasury by Incubator DAO (except audit costs for security reasons).

  • In summary, the Incubator DAO treasury’s unique use will be to fund the smart contracts that allows ROOK holders to exchange their ROOK for a pro-rata share of the treasury, and pROOK holders to exchange pROOK for a pro-rata share of the treasury.

Double DAO Exclusion Rule

The following ROOK tokens are not eligible to participate in the rage quit process (migration and exchange):

  • ROOK tokens owned by the Incubator DAO treasury (directly or indirectly)
  • ROOK tokens owned by the ROOK Deployer (directly or indirectly)
  • ROOK tokens owned by the ROOK Strategic Reserve (directly or indirectly)
  • ROOK tokens owned by the ROOK DAO (directly or indirectly)
  • ROOK tokens received by ROOK DAO contributors & members from the ROOK DAO treasury

Implementation

There will be 3 smart contracts created to be used in the rage quit process:

  • A new ERC20 token, pROOK
  • A smart contract to allow ROOK holders to exchange their ROOK for pROOK at a 1:1 exchange rate and a pro-rata share of the Incubator DAO treasury, at an exchange rate defined by Incubator DAO total treasury ÷ (ROOK total supply [1,268,253.79] - DAO owned ROOK [162,807.40] - Strategic Reserve owned ROOK [452,137.53] - DAO contributors owned ROOK [35,175.14])
  • A smart contract to allow pROOK holders to exchange their pROOK for a pro-rata share of the unclaimed treasury, at an exchange rate defined by remaining Incubator DAO total treasury ÷ pROOK total supply

Audit Cost Reimbursement

Wismerhill (0xb85c8c3fb16fc1938ea8c668fb92f3ffe7116622) will receive 6,000 USDC for the reimbursement of the audit costs paid to yAudit here: Ethereum Transaction Hash (Txhash) Details | Etherscan.

Please find below a draft of the specifications for the 3 smart contracts:

Token ERC20 - pROOK

pROOK smart contract is an ERC20 token using OpenZeppelin libraries.

New ERC20 token, pROOK, with the following features:

  • As an owner, I can transfer the ownership of the smart contract
  • As an owner, I can mint pROOK
  • As a user, I can burn the pROOK token
  • As a user, I can approve the pROOK token
  • As a user, I can transfer the pROOK token

Smart Contract - ROOK Exchange

ROOK Exchange, a smart contract to allow users to exchange ROOK for pROOK at 1:1 exchange rate and a pro-rata share of the Incubator DAO treasury, with the following features:

  • As an owner, I can transfer the ownership of the smart contract
  • As an owner, I can define the exchange rate of USDC for each ROOK
  • As an owner, I can claw back assets to receive the USDC, ROOK, and pROOK owned by the smart contract
  • As an owner, I can pause (and unpause) the possibility to exchange ROOK for pROOK and the amount of USDC based on the exchange rate
  • As a user, I can exchange in the same transaction my ROOK for pROOK and the amount of USDC based on the exchange rate

Smart Contract - pROOK Exchange

pROOK Exchange, a smart contract to allow users to swap pROOK for their pro-rata share of the Incubator DAO treasury:

  • As an owner, I can transfer the ownership of the smart contract
  • As an owner, I can define the exchange rate of USDC for each pROOK
  • As an owner, I can claw back assets to receive the USDC and pROOK owned by the smart contract
  • As an owner, I can pause (and unpause) the possibility to exchange pROOK for the amount of USDC based on the exchange rate
  • As a user, I can swap my pROOK for the amount of USDC based on the exchange rate

Execution

The following steps will be executed:

  1. The pROOK token smart contract will be deployed
    A. Ownership transfer of the smart contract to the Incubator DAO multisig
    B. Minting of 618,132.09 pROOK (ROOK max supply - Incubator DAO owned ROOK - Rook Labs Strategic Reserve owned ROOK)

  2. The ROOK Exchange smart contract will be deployed
    A. Ownership transfer of the smart contract to the Incubator DAO multisig
    B. Transfer of 618,132.09 pROOK and Incubator DAO treasury USDC to the ROOK Exchange smart contract
    C. Calculation of the exchange rate: (total treasury USDC ÷ (ROOK total supply - DAO owned ROOK - Strategic Reserve owned ROOK)), and set exchange rate
    D. Unpause the possibility to exchange ROOK for pROOK and USDC based on the exchange rate
    E. After 3 months (90 days): Pause the possibility to exchange ROOK for pROOK and USDC based on the exchange rate

  3. The pROOK Exchange smart contract will be deployed
    A. Ownership transfer of the smart contract to the Incubator DAO multisig
    B. Withdraw of remaining pROOK and USDC on the ROOK Exchange smart contract
    C. Burn of the remaining (unexchanged) pROOK received from the ROOK Exchange smart contract
    D. Transfer of the remaining (unexchanged) USDC received from the ROOK Exchange smart contract to the pROOK Exchange smart contract
    E. Calculation of the exchange rate: (total treasury USDC ÷ by number of pROOK total supply), and set exchange rate

Next Steps / Comments

Within the next 14 days, I will update this proposal to include the 3 smart contracts code for further review.

Smart Contracts

pROOK

pROOK smart contract is a standard ERC20 token using OpenZeppelin libraries.

ROOK Exchange

ROOK Exchange and pROOK Exchange smart contracts are a fork of the Radiant Migrate smart contract, with small modifications. Radiant Migrate smart contract has been audited by PeckShield and Zokyo.

pROOK Exchange

How do you intend to implement the double DAO exclusion rule?

For example, person A holds 300 ROOK. 100 ROOK was purchased as a community member in 2021, 100 ROOK was earned through contributing to the project in 2022, and another 100 ROOK was bought after having stopped contributing to the project in 2023.

I think any non-earned ROOK for both ex- and current contributors should be redeemable (which I think you’ve included) but any earned ROOK for ex-contributors should be too, as they won’t receive any equity in any eventual new private company.

I would suggest implementing the Double DAO Exclusion Rule the following way:

  • ROOK tokens currently owned by the DAO in the Strategic Reserve and everywhere else, directly or indirectly via the various liquidity pools, should be moved to a time-locked smart contract for a duration of 6 to 9 months.

Concerning tokens owned by team members or ex-contributors, I admit that enforcing the exclusion rule could be cumbersome. Solutions such as address whitelisting and/or amount whitelisting could add some complexity and undesirable effects.

Overall, if team members were to participate in the rage quit process, this would question why the full dissolution of the DAO isn’t considered. Remember that the rationale behind this rage quit process is the fact that there is a profound and irreconcilable misalignment between the DAO contributors and the ROOK governance token holders. If the team members were to support the rage quit process and participate in the rage quit process, I would suggest that the full dissolution of the DAO and a similar process should be implemented.

Two solutions could be explored to address the enforcement of the double DAO exclusion rule for tokens received as salary by contributors and ex-contributors from the DAO treasury:

  1. Tokens received by contributors and ex-contributors as salaries from the DAO treasury will need to be moved to a timelocked smart contract for the duration of the migration window
  2. No enforcement, meaning these tokens can’t participate in the rage quit process but are free to be sold in the liquidity pools that are likely to be arbitraged during the migration window process, as we get closer to knowing the pROOK total supply

Alternatively, team members / DAO treasury can be asked to burn their tokens in exchange for a new token (i.e. tROOK). I am not sure how the team wants to proceed token-wise (do they even need a token), but if they want to proceed, this would keep them from having to deal with any time-lock issues while keeping the same “token balance.”

Regarding Double DAO exclusion for team members, it shouldn’t be too difficult to pull all addresses who’ve received tokens from the treasury addresses, and ask them to deposit / burn the lesser of their current ROOK position and the amount of ROOK they have received from treasury.

I also think a 3 month window is too long - though I understand the reasoning for giving less active holders ample time to claim their funds.

Maybe it makes more sense, after the contributor tokens and DAO-owned tokens are burned or moved to a time-locked contract, for the new token supply to be calculated, and for exchange to be immediately possible under the assumption that all tokens under the new supply are redeemed. Users could redeem their ROOK for the pro rata share of treasury, and receive a pROOK token as well. After 1 year, any unclaimed treasury can be split amongst all pROOK holders.

1 Like

This would be great and increase safety regarding the enforcement of the Double DAO exclusion, but would require the collaboration of the current ROOK DAO. I think this would call for the comment of ROOK DAO contributors.

Thank you, this is a great suggestion and an alternative process that makes more sense than the one originally proposed. I have revised my proposal to include this 2 phase process.

If you find 3 months too long, why would you want to wait a year to distribute the unclaimed treasury? I think the original plan and 3 months is fair and traders will do their job and push the rook price up to whatever the pro-rata value of pROOK is going to be. Nice and simple and done in a few months. If 100k rook is converted to pROOK and $25M USDC is transferred over, we will see 1 ROOK = $250.

I was more responding to the original plan of requiring all token holders to wait 3 months before being able to claim anything. The amended proposal now allows all token holders to claim immediately, and still gives 3 months for less active holders to claim, which I think is fair.

I updated the smart contracts Github links to reflect the revised process. For lazy people, here are the links:

Test smart contracts have been deployed on Sepolia testnet:

  • ROOK: 0x5BBB4b1F1B8eb6E27039241364F8f71272825c09
  • pROOK: 0xFA9c323E44013bc470b217b8f57ABBF1E48F5c45
  • ROOK Exchange: 0x45AC619c2c476e6b80AC5FFbE40648D4585a766F
  • pROOK Exchange: 0x7359AbF8e3a2c0c78508B16B56c48fD9c0d07872

If you want to test it, feel free to DM me on Discord with your address and I will send you ETH and ROOK.

I guess for the phase 2 exchange rate it would actually be based upon pROOK in circulation (since pROOK total supply is fixed at token creation and then distributed via exchanges).

(exchange rate defined by remaining Incubator DAO total treasury ÷ (pROOK total supply - pROOK remaining in ExchangeROOK contract)

Burn of the remaining (unexchanged) pROOK received from the ROOK Exchange smart contract

This step is completed before calculating the exchange rate for pROOK, so the pROOK total supply will be only pROOKs received by redeeming ROOK.

ACK. I missed the burn stage when reading the exchange rate line.

1 Like

Quick update: all contracts are currently being audited by yAudit. Even if these contracts are fairly simple and have been peer-reviewed, this will give the necessary confidence required in such a large process.

1 Like

UPDATE: following the unanimous approval and adoption of KIP-44: Create Incubator DAO, we are moving forward with this process.

KIPX: Implement the rage quit process at Incubator DAO has now passed through Sophon Review, with the Sophons unanimous in a recommendation of “No objection.”

Voting for this proposal will be live on Snapshot shortly on the following schedule:

  • Voting begins: 4PM EST today
  • Voting ends: 4PM EST on Thursday, April 13.

Snapshot for voting on this KIP is here: Snapshot

yAudit completed audit of the rage quit contracts & process is available here: audit link.

There were no critical findings or vulnerabilities identified. All minor suggestions from auditors regarding gas optimization findings and informational findings have been implemented.
I want to thank the auditors for the quality of their work and engagement during this audit.

Please note that yAudit identified one high finding:

On-chain contracts assume off-chain trust

The governance proposal outlining the logic that Incubator DAO will follow indicates several parties that are excluded from redeeming ROOK in the Incubator DAO contracts. There is no on-chain logic preventing these parties from interacting with the Incubator DAO contracts, so the Incubator DAO contract design is assuming a level of off-chain trust between the involved parties.

An additional protective measure has been provided by Rook Labs team regarding the tokens received by contributors. Therefore we believe that there is a sufficient level of trust and good faith from both parties to mitigate this risk.

UPDATE: Voting has now closed for this KIP. With 71k tokens voted No objection (and 2.9 objected), the measure is adopted.

We are now proceeding with the execution of the listed steps.

UPDATE2: We are live.

You can exchange your ROOK for pROOK and a pro-rata share of the Incubator DAO treasury here: Incubator DAO (desktop only, mobile not supported, make sure you are connected to Ethereum network).

You can exchange your ROOK until July 12, 2023. Please be aware that Rook DAO has lost its link to the ROOK token since the ratification of the Incubator DAO creation.

For more information, please refer to the following documentation: Rage Quit Process - Incubator DAO