Migrating to an Alternative Protocol

Migrating to an Alternative Protocol

Companies operating on the Company Protocol have the option to migrate to any alternative smart contract by modifying the company's articles of organisation and operating agreement. Also, the existing Pool contract can be detached and no longer receive updates from the protocol, while maintaining control of their treasuries. This process starts with a vote by the members of a company. If the vote to separate is successful, a countdown begins. The number of blocks in this countdown is decided by the protocol committee. Once the countdown is complete, the company is successfully separated from the protocol.The process of detaching a DAO Contract from the Protocol Service depends significantly on the DAO Contract's state, particularly concerning the issuance of equity tokens. The existence or absence of issued equity tokens can affect the methods available for detachment and the complexity of the process:

  1. Without Issued Equity Tokens: When no equity tokens have been issued by the DAO Contract, the detachment process is more straightforward. The owner of the contract can directly initiate the detachment.
  2. With Issued Equity Tokens: If the DAO Contract has issued equity tokens, the detachment process becomes more intricate. In this scenario, the detachment affects all members of the DAO, and hence a consensus-driven approach is necessary. Members must create, vote on, and execute a proposal to initiate the detachment process.

Given these different scenarios, it's essential to provide distinct guides to ensure clarity and accuracy in the detachment process for all stakeholders.

Guide 1: Detaching the DAO Contract without Issued Equity Tokens (With Delay)

Prerequisite: Ensure that the DAO has not issued any equity tokens.

Step 1: Connect to the DAO Contract

  • Using your Ethereum wallet or management tool, connect to the DAO Contract's address on the Ethereum network.

Step 2: Initialize the Detachment

  • Being the owner, directly call the initializeDetachment() function to start the detachment process.
  • This action sets the current block number as the detachment initialization point.

Step 3: Wait for the Delay Period

  • Wait until the required number of blocks specified by detachmentDelay have passed since the detachment initialization.

Step 4: Execute the Detachment

  • Call the executeDetachment() function to finalize the detachment process.
  • Ensure you have enough Ether (ETH) to cover the transaction's gas fees.

Step 5: Confirmation

  • Once the Ethereum network confirms your transaction, the DAO Contract will be detached from the Protocol Service.

Guide 2: Detaching the DAO Contract with Issued Equity Tokens (With Delay)

Prerequisite: The DAO must have already issued equity tokens.

Step 1: Propose the Detachment Initialization

  • Create a proposal using the proposeCustomTx function, which, upon execution, will call the initializeDetachment() function to begin the detachment process.

Step 2: Vote on the Proposal

  • Engage members to vote on the detachment proposal. Ensure that the proposal reaches the required quorum and majority votes to pass.

Step 3: Execute the Approved Proposal

  • Once the proposal has been approved, execute it using the executeProposal(uint256 proposalId) function. Replace proposalId with the ID of your approved proposal. This action will call initializeDetachment().
  • Ensure that you have enough Ether (ETH) in your wallet to cover the transaction's gas fees.

Step 4: Wait for the Delay Period

  • After the detachment has been initialized, wait until the required number of blocks specified by detachmentDelay have passed.

Step 5: Execute the Detachment

  • Call the executeDetachment() function to complete the detachment process.

Step 6: Confirmation

  • The Ethereum network will process your transaction. Once confirmed, the DAO Contract will be successfully detached from the Protocol Service.

Caution for Both Methods:

Detaching the DAO contract will have the following consequences:

  • Halting of Contract Updates: The DAO Contract will not receive future updates or patches.
  • Loss of Specific Functionalities: Certain functionalities, especially those associated with the SERVICEMANAGER role, will be unavailable.
  • End of Support: The detached DAO Contract will no longer be supported by any frontend or backend services of the Protocol Service.

Make sure to fully comprehend the implications of detaching the DAO Contract before proceeding. Seek advice from your development team or Ethereum experts if unsure.