📕

BIP-48 Runbook

Proposal
July 19, 2024

Links

Safe transaction
app.safe.global link
Safe transaction hash
0x5765a2aaf25f2a2d41abdc8602e41b5746684e9e82df02cca85d97a6286fc5be
Safe transaction nonce
77
GitHub PR
https://github.com/BeanstalkFarms/Beanstalk/pull/758
GitHub commit hash
https://github.com/BeanstalkFarms/Beanstalk/pull/758/commits/45afeaf1f9c57bcdf506336aff63fa8805a1081f
Snapshot proposal
https://snapshot.org/#/beanstalkdao.eth/proposal/0x7a9167d3e201225a3352b4643c9aeaac8916b8cb018796bd72b95adf6f0c5bbd

diamondCut JSON:

bip-48.json17.5KB

Overview

Init Contract

InitMigrateUnripeBeanEthToBeanSteth: 0x15A2053B3d559d19FeD2D7FC429304e837cEFa00

Facets Being Removed

Facet
Address
BDVFacet
0xB752bfD626AD8715DE26D9bf3b3512F13632CCa1
ConvertFacet
0x1C55d002bf78Ced8cb4ebd8F4Cf39Ff93835C934
ConvertGettersFacet
0x0a4121F3c4ACd9825Ed5499ACAD9fEA7a8a4eeED
EnrootFacet
0x3780b8268F19118E7e44B9FEF6CA090bC5E077e6
FertilizerFacet
0x3FA7ECcfbFDF4407932D2318401d20464189C5F1
MetadataFacet
0x9F5ec59d13AfDb581A383D6215b717312e875Fd2
SeasonFacet
0xB5818dE8b02394b4300F15F61083dc3ff976EAA1
SeasonGettersFacet
0x46d11a5076EAAD1ffA24b0C2DDF38d4Aeaa19920
UnripeFacet
0xeBD6Fc0c2d4dc3Ea131d7F14aA2f617d63Dc0F1a
WhitelistFacet
0x47DA294946D41E90486ca8BB2adA493A6b974A2a

Facets Being Added

Facet
Address
BDVFacet
0xaef84C2B863aB845F59f672d958B175262dcfc89
ConvertFacet
0xEb1b833D3E81cb3d390514cabB9b809E6170626C
ConvertGettersFacet
0x8ABa09526dc6EB6Ea44eE3f8745dD8bc9EF744E2
EnrootFacet
0x179Bb2636F0066d837f1a446083A0FBA131c1A46
FertilizerFacet
0x729672c68134E2DF0CdD36D3296841A2993534c7
MetadataFacet
0x0d8f6F09a2B806d406d511C113f2Fc3F4D608Fc1
SeasonFacet
0x92458b7ade7798c45E5ff583c353F70F950d66Cf
SeasonGettersFacet
0x5A1675f3156c9e73D7eA20eb58470A0002865E85
UnripeFacet
0xD64BB5c2dBf12fEBeFc6397926A3c0aA6f8b6535
WhitelistFacet
0xDE3a2284b50E345cB7985EE677595cC720fbBB02

Verifying the Transaction

Setup

  1. Follow 🏗️How to Setup Environment, pulling and compiling the latest changes on the add-steth-oracle branch.

The Diamond Cut Transaction

Add the following bip48enc task to hardhat.config.js per How to Verify Facet Changes.

You can verify that the following data value in the final line of code is the one that corresponds to the BIP transaction by comparing it with the Raw data field on the Safe multisig transaction.

Verifying the Diamond Cut

  1. Follow How to Verify Facet Changes.
  2. Verify there are no remaining function selectors from the Facets Being Deprecated section above.
  3. Verify that all function selectors from the Facets Being Added section above are present.

Verifying the Deployed Code

  1. Add the following tasks to hardhat.config.js :
  2. Verify that each facet has the correct deployed code by:
  3. Runing an anvil node forked from mainnet:

    anvil --fork-url https://eth.llamarpc.com --chain-id 1337 

    Runing the script in a separate window in the protocol/ directory:

    npx hardhat clean && npx hardhat compile && npx hardhat verifybip-48 --network localhost

    Validate that facet bytecode are correct.

Submitting Message Signature

Once Signers have verified the transaction, they shall submit and sign a verified message on Etherscan with their BCM address (guide).

Template message: Confirming that I have reviewed BIP-48 with BCM transaction nonce 77, Safe transaction hash 0x5765a2aaf25f2a2d41abdc8602e41b5746684e9e82df02cca85d97a6286fc5be, commit hash 45afeaf1f9c57bcdf506336aff63fa8805a1081f and Snapshot proposal https://snapshot.org/#/beanstalkdao.eth/proposal/0x7a9167d3e201225a3352b4643c9aeaac8916b8cb018796bd72b95adf6f0c5bbd.