[AIP-29] Finish migration of Aura pools to optimize integrations & enact AIP-26

Authors philjfry, ahtle7

Summary

In Q1 2023, Aura underwent a proactive security upgrade (AIP-20) to remove certain protected functions in the system that are not necessary and could lead to security issues in the future. This would then apply to all pools added to Aura after this time (i.e. where poolId > 48). A number of high TVL pools below pid 48 are still active, and while not at notable technical risk requires migration to ensure full functionality and longevity into the future.

It is therefore proposed that these 23 remaining pools (listed below), be migrated over 2 weeks, in 2 groups.

Background

As AIP-20 specifies, Aura underwent an upgrade in Q1 2023. This upgrade updated the implementation of the ExtraRewardStashV3 in the immutable StashFactory and locked it in place. This would then apply to all pools added to Aura after this time (i.e. where pid > 48). A number of high TVL pools below pid 48 are still active, and while not at notable technical risk requires migration to ensure full functionality into the future.

One notable example of functionality removed from old pools in AIP-20 is the addition of ExtraRewardStash contracts to old pools. This lack of functionality currently stops AIP-26, which optimizes rewards to AURA/ETH and auraBAL Stable, from being fully implemented. This proposed migration has some urgency to ensure AIP-26 can be set in motion properly.

There is no notable risk to LPs in keeping old pools active, though LPs should be migrated to ensure functionality going forward. Given that smart contract integrations should be able to rely on the longevity of the pools, this is important so we can avoid doing this in the future if these pools have high value integrations. For example, Aave governance is currently considering adding Aura BPTs as collateral to Aave; by ensuring important pools are migrated properly, we can ensure the integration goes smoothly.

Specifics

The term Migration here simply means that the existing Aura pool would be shutdown, and then the same gauge re-added (thus updating to the new stash), creating a new Aura pool.

Previously farmed BAL by the old pool would continue to emit for ~7 days, while all the new/future BAL emission would go to the new pool. This would require LPs to do a migration on the Aura UI within 7 days to continue earning rewards. Note that for projects with POL, they would not loose out on any BAL rewards in sum, although may wish to migrate in 2 batches to ensure a smooth process.

This proposal specifies migration for the following pools:

Pool Name Gauge Address Group
50WETH-50AURA 0x275dF57d2B23d53e20322b4bb71Bf1dCb21D0A00 1
Balancer auraBAL Stable Pool 0x0312AA8D0BA4a1969Fddb382235870bF55f7f242 1
50COW-50GNO BPT 0x57AB3b673878C3fEaB7f8FF434C40Ab004408c4c 1
50COW-50WETH BPT 0x7C777eEA1dC264e71E567Fcc9B6DdaA9064Eff51 1
50DFX-50WETH 0x27Fd581E9D0b2690C2f808cd40f7fe667714b575 1
USDC-PAL 0xe2b680A8d02fbf48C7D9465398C4225d7b7A7f87 1
80D2D-20USDC 0x1249c510e066731FF14422500466A7102603da9e 1
80palStkAAVE-20AAVE 0x39a9E78c3b9b5B47f1f6632BD74890E2430215Cf 1
Balancer rETH Stable Pool 0x79eF6103A513951a3b25743DB509E267685726B7 1
20WETH-80WNCG 0x47c56A900295df5224EC5e6751dC31eb900321D5 2
20WBTC-80BADGER 0x3F29e69955E5202759208DD0C5E0BA55ff934814 2
40WBTC-40DIGG-20graviAURA 0xE5f24cD43f77fadF4dB33Dab44EB25774159AC66 2
50INV-50DOLA 0x46804462f147fF96e9CAFB20cA35A3B2600656DF 2
50Silo-50WETH 0x75cAceBb5b4a73a530EdcdFdE7cFfbfea44c026E 2
Balancer stETH Stable Pool 0xcD4722B7c24C29e0413BDCd9e51404B4539D14aE 2
Balancer 80 GNO 20 WETH 0xCB664132622f29943f67FA56CCfD1e24CC8B4995 2
33auraBAL-33graviAURA-33WETH 0x2e79D6f631177F8E7f08Fbd5110e893e1b1D790A 2
33LUSD-33LQTY-33WETH 0x63E3951212cCCAFE3eDC7588FD4D20Ee5e7Ad73f 2
20WETH-80T 0x7Fc115BF013844D6eF988837F7ae6398af153532 2
Balancer 50 VITA 50 WETH 0x777C45BD0a2AF1dA5fe4a532AD6B207D3CEd8b2d 2
VitaDAO Balancer Pool 0xc2D343E2C9498E905F53C818B88eB8064B42D036 2
DOLA USDC Stable Pool 0xBC02eF87f4E15EF78A571f3B2aDcC726Fee70d8b 2
50RBN-50USDC 0x81C452E84B103555C2Dd2DEc0bFABC0c4d6B3065 2

Terms

Should this proposal pass, Aura DAO approves a migration by calling shutdownPool on all the PIDs relevant, and then addPool for the “gaugeAddress” of all those pools. Additionally, AURA will be re-added as a reward token on the AURA/ETH and auraBAL pools as per AIP-26 and AIP-2

To ensure a smooth transition:

  • The migration will be split into 2 groups, executed 1 week apart to ensure sufficient time to communicate between DAOs
  • The txs will be split into batches of 3 pools per tx to avoid block gas limits
  • The first group will be executed upon passing of this proposal, i.e. if this snapshot passes by Monday 5th, the first group would be shut down/re-added then, and the second group on the 12th

Shutdown Pool Payload

{
    "version": "1.0",
    "chainId": "1",
    "createdAt": 1685000249692,
    "meta": {
        "name": "Transactions Batch",
        "description": "",
        "txBuilderVersion": "1.14.1",
        "createdFromSafeAddress": "0x5feA4413E3Cc5Cf3A29a49dB41ac0c24850417a0",
        "createdFromOwnerAddress": "",
        "checksum": "0x100f76af7a4ee94f50d00c1c55b3a499de6b0a808812b7e12056e1b4190194a6"
    },
    "transactions": [
        {
            "to": "0x8Dd8cDb1f3d419CCDCbf4388bC05F4a7C8aEBD64",
            "value": "0",
            "data": null,
            "contractMethod": {
                "inputs": [
                    {
                        "internalType": "uint256",
                        "name": "_pid",
                        "type": "uint256"
                    }
                ],
                "name": "shutdownPool",
                "payable": false
            },
            "contractInputsValues": {
                "_pid": "PID_NUMBER_0"
            }
        },
        {
            "to": "0x8Dd8cDb1f3d419CCDCbf4388bC05F4a7C8aEBD64",
            "value": "0",
            "data": null,
            "contractMethod": {
                "inputs": [
                    {
                        "internalType": "uint256",
                        "name": "_pid",
                        "type": "uint256"
                    }
                ],
                "name": "shutdownPool",
                "payable": false
            },
            "contractInputsValues": {
                "_pid": "PID_NUMBER_2"
            }
        },
        {
            "to": "0x8Dd8cDb1f3d419CCDCbf4388bC05F4a7C8aEBD64",
            "value": "0",
            "data": null,
            "contractMethod": {
                "inputs": [
                    {
                        "internalType": "uint256",
                        "name": "_pid",
                        "type": "uint256"
                    }
                ],
                "name": "shutdownPool",
                "payable": false
            },
            "contractInputsValues": {
                "_pid": "PID_NUMBER_3"
            }
        }
    ]
}

addPool Payload

{
    "version": "1.0",
    "chainId": "1",
    "createdAt": 1685000249692,
    "meta": {
        "name": "Transactions Batch",
        "description": "",
        "txBuilderVersion": "1.14.1",
        "createdFromSafeAddress": "0x5feA4413E3Cc5Cf3A29a49dB41ac0c24850417a0",
        "createdFromOwnerAddress": "",
        "checksum": "0x100f76af7a4ee94f50d00c1c55b3a499de6b0a808812b7e12056e1b4190194a6"
    },
    "transactions": [
        {
            "to": "0x8Dd8cDb1f3d419CCDCbf4388bC05F4a7C8aEBD64",
            "value": "0",
            "data": null,
            "contractMethod": {
                "inputs": [
                    {
                        "internalType": "address",
                        "name": "_gauge",
                        "type": "address"
                    }
                ],
                "name": "addPool",
                "payable": false
            },
            "contractInputsValues": {
                "_gauge": "GAUGE_ADDRESS_1"
            }
        },
        {
            "to": "0x8Dd8cDb1f3d419CCDCbf4388bC05F4a7C8aEBD64",
            "value": "0",
            "data": null,
            "contractMethod": {
                "inputs": [
                    {
                        "internalType": "address",
                        "name": "_gauge",
                        "type": "address"
                    }
                ],
                "name": "addPool",
                "payable": false
            },
            "contractInputsValues": {
                "_gauge": "GAUGE_ADDRESS_2"
            }
        },
        {
            "to": "0x8Dd8cDb1f3d419CCDCbf4388bC05F4a7C8aEBD64",
            "value": "0",
            "data": null,
            "contractMethod": {
                "inputs": [
                    {
                        "internalType": "address",
                        "name": "_gauge",
                        "type": "address"
                    }
                ],
                "name": "addPool",
                "payable": false
            },
            "contractInputsValues": {
                "_gauge": "GAUGE_ADDRESS_3"
            }
        }
    ]
}

Voting

This vote will be a single-choice vote. You may vote “For” or “Against” this proposal, or choose to abstain from the vote.

By voting “For” this proposal, you are voting in favor of migrating the pools as specified above.

7 Likes

This update is important to ensure the continued security of the Aura platform. I support this proposal.

3 Likes

https://vote.aura.finance/#/proposal/0x757de5a32aa632713773260db5ecd294d1a67a0a2047ce5e39e09e351694ced5