📕

BIP-32 Runbook

Proposal
December 31, 2022

Links

Safe transaction
app.safe.global link
Safe transaction hash
0x91947cd249b627dcc5449becc73f8476eae6368ce0c3ed708e3869ff3a420b6d
Safe transaction nonce
31
GitHub PR
https://github.com/BeanstalkFarms/Beanstalk/pull/175
GitHub commit hash
bac39bb8c51e8076c6fe9690ac2fd09c5bdbeeea
Snapshot proposal
https://snapshot.org/#/beanstalkdao.eth/proposal/0xa23167457ea2be6939f1a296cc14357366d9de995eb0d261bcbcdebf13bad0e8

diamondCut JSON:

bip32.json6.7KB
{
  "diamondCut": {
    "diamondCut": [
      ["0xB1238014b5Bbd945760451F8eD38401E5C3dc2F4", 1, ["0x1f931c1c"]],
      [
        "0xC8ac12FE3bA9426E35c746d3Ce95F31E38F10D5C",
        1,
        ["0x86b40a1b", "0xd8a6aafe"]
      ],
      [
        "0x77c8442Af4ff144A5570C96f39030aE2f16fc639",
        1,
        ["0x8456cb59", "0x3f4ba83a"]
      ],
      ["0x77827e4D9D483848952C96503D2f49635317eE7B", 0, ["0x6929145b"]],
      [
        "0x77827e4D9D483848952C96503D2f49635317eE7B",
        1,
        ["0x4e71e0c8", "0x8da5cb5b", "0x5f504a82", "0xf2fde38b"]
      ],
      [
        "0xf14224733b3fc90433cE7D831746f8835D664eC1",
        1,
        [
          "0x8cd31ca0",
          "0x304ec65d",
          "0xb6f42085",
          "0x1799b3b2",
          "0x1edb6be1",
          "0x9bb4e35a",
          "0x83e08888",
          "0xdc6ba285",
          "0x39448802",
          "0xc85951a1",
          "0x9c45a1d5",
          "0x34af5416",
          "0x1e223143",
          "0x29130a66",
          "0x4d622831",
          "0xf4a057e2",
          "0x6ae1c014",
          "0x0bfca7e3",
          "0xd47aee59",
          "0x4a16607c",
          "0x4f9a9678",
          "0xf9c4ebde",
          "0xa3ef48c9"
        ]
      ],
      [
        "0x2F1D8929aDe28664343bd8b99988386961731E58",
        1,
        [
          "0x4b4e8d9a",
          "0x43c5198e",
          "0xc869c1eb",
          "0xce133450",
          "0x6299a9af",
          "0x0d1a844c",
          "0x6ee66ddf"
        ]
      ]
    ],
    "initFacetAddress": "0x3B0EB84510739833896148F689eB938DaA9D0609",
    "functionCall": "0xe1c7392a"
  },
  "encoded": "0x1f931c1c00000000000000000000000000000000000000000000000000000000000000600000000000000000000000003b0eb84510739833896148f689eb938daa9d060900000000000000000000000000000000000000000000000000000000000009e0000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003a000000000000000000000000000000000000000000000000000000000000004a00000000000000000000000000000000000000000000000000000000000000800000000000000000000000000b1238014b5bbd945760451f8ed38401e5c3dc2f40000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000011f931c1c00000000000000000000000000000000000000000000000000000000000000000000000000000000c8ac12fe3ba9426e35c746d3ce95f31e38f10d5c00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000286b40a1b00000000000000000000000000000000000000000000000000000000d8a6aafe0000000000000000000000000000000000000000000000000000000000000000000000000000000077c8442af4ff144a5570c96f39030ae2f16fc6390000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000028456cb59000000000000000000000000000000000000000000000000000000003f4ba83a0000000000000000000000000000000000000000000000000000000000000000000000000000000077827e4d9d483848952c96503d2f49635317ee7b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000016929145b0000000000000000000000000000000000000000000000000000000000000000000000000000000077827e4d9d483848952c96503d2f49635317ee7b0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000044e71e0c8000000000000000000000000000000000000000000000000000000008da5cb5b000000000000000000000000000000000000000000000000000000005f504a8200000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000000000000000000000000000f14224733b3fc90433ce7d831746f8835d664ec10000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000178cd31ca000000000000000000000000000000000000000000000000000000000304ec65d00000000000000000000000000000000000000000000000000000000b6f42085000000000000000000000000000000000000000000000000000000001799b3b2000000000000000000000000000000000000000000000000000000001edb6be1000000000000000000000000000000000000000000000000000000009bb4e35a0000000000000000000000000000000000000000000000000000000083e0888800000000000000000000000000000000000000000000000000000000dc6ba285000000000000000000000000000000000000000000000000000000003944880200000000000000000000000000000000000000000000000000000000c85951a1000000000000000000000000000000000000000000000000000000009c45a1d50000000000000000000000000000000000000000000000000000000034af5416000000000000000000000000000000000000000000000000000000001e2231430000000000000000000000000000000000000000000000000000000029130a66000000000000000000000000000000000000000000000000000000004d62283100000000000000000000000000000000000000000000000000000000f4a057e2000000000000000000000000000000000000000000000000000000006ae1c014000000000000000000000000000000000000000000000000000000000bfca7e300000000000000000000000000000000000000000000000000000000d47aee59000000000000000000000000000000000000000000000000000000004a16607c000000000000000000000000000000000000000000000000000000004f9a967800000000000000000000000000000000000000000000000000000000f9c4ebde00000000000000000000000000000000000000000000000000000000a3ef48c9000000000000000000000000000000000000000000000000000000000000000000000000000000002f1d8929ade28664343bd8b99988386961731e580000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000074b4e8d9a0000000000000000000000000000000000000000000000000000000043c5198e00000000000000000000000000000000000000000000000000000000c869c1eb00000000000000000000000000000000000000000000000000000000ce133450000000000000000000000000000000000000000000000000000000006299a9af000000000000000000000000000000000000000000000000000000000d1a844c000000000000000000000000000000000000000000000000000000006ee66ddf000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004e1c7392a00000000000000000000000000000000000000000000000000000000"
}

Overview

Facets Being Added

Facet
Address
DiamondCutFacet
0xB1238014b5Bbd945760451F8eD38401E5C3dc2F4
WhitelistFacet
0xC8ac12FE3bA9426E35c746d3Ce95F31E38F10D5C
PauseFacet
0x77c8442Af4ff144A5570C96f39030aE2f16fc639
OwnershipFacet
0x77827e4D9D483848952C96503D2f49635317eE7B
FundraiserFacet
0x2F1D8929aDe28664343bd8b99988386961731E58
FertilizerFacet
0xf14224733b3fc90433cE7D831746f8835D664eC1

Facets Being Deprecated

Facet
Address
DiamondCutFacet
0xdfeff7592915bea8d040499e961e332bd453c249
WhitelistFacet
0xaea0e6e011106968adc7943579c829e49efddad0
PauseFacet
0xeab4398f62194948cb25f45fee4c46fae2e91229
OwnershipFacet
0x5d45283ff53aabdb93693095039b489af8b18cf7
FundraiserFacet
0x538c76976ef45b8ca5c12662a86034434bfc7a8e
FertilizerFacet
0xfc7ed192a24fab3093c8747c3ddbe6cacd335b6c

Init Contract

InitVerifySeraph: 0x3B0EB84510739833896148F689eB938DaA9D0609

Verifying the Transaction

Setup

  1. Follow 🏗️How to Setup Environment, pulling and compiling the latest changes on the the seraph branch.

The Diamond Cut Transaction

Add the following bip32enc 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 correct by comparing it with the Raw data field on the Safe multisig transaction.

const { impersonateSeraph } = require("./scripts/impersonate");

task('bip32enc', async function () {
  const bcm = await impersonateBeanstalkOwner()
	await impersonateSeraph()
  await mintEth(bcm.address)
  await bcm.sendTransaction({to: BEANSTALK, value: 0, data: '0x1f931c1c00000000000000000000000000000000000000000000000000000000000000600000000000000000000000003b0eb84510739833896148f689eb938daa9d060900000000000000000000000000000000000000000000000000000000000009e0000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003a000000000000000000000000000000000000000000000000000000000000004a00000000000000000000000000000000000000000000000000000000000000800000000000000000000000000b1238014b5bbd945760451f8ed38401e5c3dc2f40000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000011f931c1c00000000000000000000000000000000000000000000000000000000000000000000000000000000c8ac12fe3ba9426e35c746d3ce95f31e38f10d5c00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000286b40a1b00000000000000000000000000000000000000000000000000000000d8a6aafe0000000000000000000000000000000000000000000000000000000000000000000000000000000077c8442af4ff144a5570c96f39030ae2f16fc6390000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000028456cb59000000000000000000000000000000000000000000000000000000003f4ba83a0000000000000000000000000000000000000000000000000000000000000000000000000000000077827e4d9d483848952c96503d2f49635317ee7b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000016929145b0000000000000000000000000000000000000000000000000000000000000000000000000000000077827e4d9d483848952c96503d2f49635317ee7b0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000044e71e0c8000000000000000000000000000000000000000000000000000000008da5cb5b000000000000000000000000000000000000000000000000000000005f504a8200000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000000000000000000000000000f14224733b3fc90433ce7d831746f8835d664ec10000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000178cd31ca000000000000000000000000000000000000000000000000000000000304ec65d00000000000000000000000000000000000000000000000000000000b6f42085000000000000000000000000000000000000000000000000000000001799b3b2000000000000000000000000000000000000000000000000000000001edb6be1000000000000000000000000000000000000000000000000000000009bb4e35a0000000000000000000000000000000000000000000000000000000083e0888800000000000000000000000000000000000000000000000000000000dc6ba285000000000000000000000000000000000000000000000000000000003944880200000000000000000000000000000000000000000000000000000000c85951a1000000000000000000000000000000000000000000000000000000009c45a1d50000000000000000000000000000000000000000000000000000000034af5416000000000000000000000000000000000000000000000000000000001e2231430000000000000000000000000000000000000000000000000000000029130a66000000000000000000000000000000000000000000000000000000004d62283100000000000000000000000000000000000000000000000000000000f4a057e2000000000000000000000000000000000000000000000000000000006ae1c014000000000000000000000000000000000000000000000000000000000bfca7e300000000000000000000000000000000000000000000000000000000d47aee59000000000000000000000000000000000000000000000000000000004a16607c000000000000000000000000000000000000000000000000000000004f9a967800000000000000000000000000000000000000000000000000000000f9c4ebde00000000000000000000000000000000000000000000000000000000a3ef48c9000000000000000000000000000000000000000000000000000000000000000000000000000000002f1d8929ade28664343bd8b99988386961731e580000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000074b4e8d9a0000000000000000000000000000000000000000000000000000000043c5198e00000000000000000000000000000000000000000000000000000000c869c1eb00000000000000000000000000000000000000000000000000000000ce133450000000000000000000000000000000000000000000000000000000006299a9af000000000000000000000000000000000000000000000000000000000d1a844c000000000000000000000000000000000000000000000000000000006ee66ddf000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004e1c7392a00000000000000000000000000000000000000000000000000000000'})
})

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. Follow 🧑‍💻[OLD] How to Verify Deployed Code.
  2. Verify that each facet has verified code on Etherscan.

Submitting Message Signature

Once Signers have verified the transaction, they shall submit and sign a verified message signature on Arweave.

Template message: Confirming that I have reviewed BIP-[X] with BCM transaction nonce [Y], Safe transaction hash [tx hash], commit hash [hash], GitHub PR [URL] and Snapshot proposal [URL].