# 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