# L1 -> L2 Migration Notes ### How to find a DAOs L2 address - add proposal execution to subgraph - we need to store transaction hashes of L1 -> L2 messenger calls - query transaction hash for executed transactions from a dao where target_includes: L1 -> messenger - use op viem method `getL2HashesForDepositTx` to generate the L2 hash from the L1 transaction - https://github.com/base-org/op-viem/blob/aea8c7673c52e09389d2d5cccef4c47a160b1415/src/actions/public/L1/getL2HashesForDepositTx.ts#L11-L31 - get transaction receipt from L2 tx and parse logs to find L2 token address ### Generating merkle roots / proofs for L1 DAO memebers - use lanyard to generate the actual merkle root / proofs - https://www.npmjs.com/package/lanyard - need to use `abi.enode(USER_ADDRESS, TOKEN_ID)` for each token a user owns as the merkle tree leaves. - for claiming user will select which tokens they want to claim for then we generate a proof for each token ### Founder steps - two dao initilization steps can only be preformed by the inital founder of the DAO - Setting metadata - Unpausing auctions - there should be a final step that helps the DAO founders set the metadata before any users are shown the claiming page