BCM Verification
πŸ”

BCM Verification

The Beanstalk Community Multisig (BCM) custodies ownership of the Beanstalk contract. The BCM has the exclusive ability upgrade Beanstalk. In the future, it is expected that BIPs will reimplement permissionless governance and revoke these abilities from the BCM.

Per the Verifying and Signing Transactions section of the BCM Process, all BCM Signers are expected to know how to verify diamondCut data and confirm they have verified transactions by uploading signed messages to Arweave.

See BCM Process and BCM Dashboard for more information.

Table of Contents

Docs

πŸ“œ
Verification Guides

πŸ—οΈ
How to Setup Environment
πŸ”
How to Interpret Diamond Cut Data
How to Submit Safe Txns
πŸ’΅
How to Verify Mint Txns
πŸ§‘β€πŸ’»
How to Verify Deployed Code
β›³
How to Verify Facet Changes

πŸ“–
BIP Runbooks

BIPProposal
December 31, 2022
December 31, 2022
January 31, 2023
April 26, 2023
April 26, 2023
July 3, 2023
August 23, 2023
October 13, 2023
January 31, 2024
February 18, 2024
February 18, 2024

Getting Started

If you aren’t familiar with EIP-2535 Diamonds and the corresponding data structures for the inputs to a diamondCut call (facet cuts, the init address, etc.) that upgrades an Ethereum Diamond, check out these resources before continuing:

In order to set your environment up in preparation for following the Runbook to test a BIP, follow this guide:

Docs:

How To Verify a BIP

Using the information in the

, verifying a BIP transaction should involve at least steps 1-7:

  1. Execute the diamondCut and verify that the correct facets and selectors have been added, changed or removed.
  2. Verify that each facet that is added/changed has the same source code as the pull request.
  3. Verify that each facet that is added/changed has verified code on Etherscan.
  4. You should find this under the Contract tab on the Etherscan link for the deployed contract.
    You should find this under the Contract tab on the Etherscan link for the deployed contract.
  5. Confirm that the facet addresses in the diamondCut match the addresses listed in the Contract Changes section of the written Snapshot proposal.
  6. Verify that the _init address has verified code on Etherscan.
  7. If the _init address is the InitMint address, verify that the correct number of Beans are minted to the correct address based on the Beans Minted section of the written Snapshot proposal.
  8. If the _init address is neither the InitMint address nor the null address, verify that the contract has the same source code as the pull request.
  9. Review the pull request code changes.
  10. Review any audit reports.