In reference to: https://dydx.forum/t/drc-bridging-the-community-and-rewards-treasuries/1258
A possible next step for the community is to decide whether and how to bridge the community and rewards treasuries from Ethereum to dYdX Chain. Doing so will enable governance on the dYdX Chain to fund a Launch incentive program, seed the dYdX Chain insurance fund, distribute trading rewards, and fund other initiatives for the dYdX DAO, among other things.
In this proposal, we discuss how we believe the dYdX community could migrate the community and rewards treasuries in a 4-step process. Following a successful snapshot vote, steps 1,2, and 4 would require an on-chain vote to be executed under the Short TimeLock executor.
*The exact DYDX to be claimed by the community from the rewards treasury will depend on if and when this proposal is passed by governance.
Note: this proposal does not involve any governance action on dYdX Chain. Actions on dYdX Chain, such as funding v4 vesting accounts, should go through the v4 governance process after the potential mainnet launch of the chain.
The purpose of this proposal is to ensure that activities on dYdX Chain can be funded by dYdX Chain governance promptly. This includes:
We describe the steps we must take to bridge vested and unvested ethDYDX from Ethereum to dYdX Chain below.
As part of the migration from dYdX v3 to v4, it is our belief that the Trading and LP rewards on v3 should be wound down. We propose a gradual approach that linearly reduces v3 rewards over the course of 2 months. This approach requires 2,157,536 ethDYDX to remain on Ethereum to fund the final epochs for v3 rewards. Total ewards for epochs 29-32+ are displayed below:
The migration from dYdX v3 to dYdX v4 also involves migrating Rewards programs. Since the DYDX supply is limited, we argue it is best spent growing the v4 ecosystem. It follows that the rewards programs on v3, Trading Rewards, and LP Rewards should be shut down.
Our primary reason for taking a gradual approach is to preserve the dYdX user experience and smoothen the transition to v4. Both Trading and LP Rewards are meaningful parts of the user experience for takers and makers on dYdX v3. Many of these users must migrate their operations to dYdX Chain, which involves varying degrees of complexity: bridging, rewriting necessary code, learning about the new API for dYdX v4, etc… This approach gives users a buffer period within which they can gradually shift their operations from v3 to v4.
A full implementation will be released if this proposal passes a Snapshot vote.
Unvested tokens in dYdX’s vester contracts are locked and, therefore, cannot be transferred. This means that these tokens cannot be directly bridged to dYdX Chain via the wethDYDX smart contract. Instead, dYdX governance may choose to change the vesting recipient of both vester contracts to a burner address. This effectively burns all unvested tokens in the vester contracts since they cannot be retrieved from the burner address, even once vested. Given that the setRecipient function can only be called by the current recipient, which the burner won’t be able to do, this change is irreversible.
With these unvested tokens effectively burnt, dYdX Chain governance may then choose to credit the corresponding balances into the respective accounts on dYdX Chain.
The goal of this step is to bridge the unvested ethDYDX from the community and rewards treasuries into dYdX Chain. Since it is not possible to transact unvested tokens, we instead permanently lock all unvested ethDYDX on Ethereum and issue the corresponding amount into vester contracts on dYdX Chain.
Upgrade the community treasury and rewards treasury smart contracts to TreasuryBridge smart contracts.
A proposal on dYdX Chain may then be submitted to credit the appropriate vester accounts.
This step is a recommendation that dYdX Chain validators should credit the community treasury vester and rewards treasury vester accounts on dYdX Chain with DYDX tokens equivalent to the amount that their counterparts on Ethereum burned following step (2). This may be done through a snapshot vote.
Signal to dYdX Chain governance and dYdX Chain validators that burnt ethDYDX on the Ethereum vester contracts should be credited as DYDX to the corresponding vester contracts on dYdX chain.
This may be done through a snapshot vote.
Once the treasury contracts have been upgraded, the community may choose to bridge the vested ethDYDX from the Community and Rewards treasuries into dYdX Chain using the bridgeTreasury function by specifying the destination account on dYdX Chain. In this step, we propose that the community bridges over all the ethDYDX from the Community Treasury into the Community Treasury account on dYdX Chain.
The Rewards Treasury also contains ethDYDX belonging to the Community Treasury following several proposals to reduce rewards emissions. We also propose bridging this ethDYDX into the Community Treasury account on dYdX Chain.
However, once the treasury contracts have been upgraded they will no longer receive newly vested ethDYDX. This is a problem if we want to continue funding 2 more epochs of rewards. One way around this is to leave behind 2.16M ethDYDX in the Rewards Treasury when bridging the ethDYDX owed to the community (in addition to the unclaimed rewards which will also remain in the Rewards Treasury).
A governance vote on v4 may then choose to credit the v4 community treasury account with this 2.16M DYDX, and subtract it from the amount credited to the v4 rewards vesting contract. This ensures that the funds for epochs 30 and 31 rewards are coming from the rewards treasury, and not out of the community treasury. Notice this does not double-spend any DYDX.
Note: unclaimed rewards will not be bridged out of the rewards treasury, only the ethDYDX belonging to the Community Treasury.
By bridging the vested ethDYDX balances to dYdX Chain, the community may then fund incentives and operations via v4 governance. This also claims the ethDYDX owed to the Community Treasury and ensures rewards for epochs 30 and 31 are serviced.
Call the approve method on the wethDYDX contract to approve the bridging transactions from the Treasuries for the specified amounts. Call the bridgeTreasury function on the newly upgraded treasury contracts to bridge over the Treasuries to the Community Treasury account on dYdX Chain.