# Add M0 Labs Engineering Reserved 'SolanaEarnerBeta' Address as a Solana Earner
M0 Labs Engineering Team would like to add the M Vault PDA calculated for the pre-determined program address listed below to the Solana Earners list. This address will be used in the future for deployment of high priority Solana Earner Extension that requires yield accrual and distribution.
Solana differs from Ethereum in that individual user balances are not stored on the Token ‘Mint’, but in individual Token Accounts. The owner of a Token Account controls the balance and must sign any transaction that moves those tokens. For a Program to sign transactions and control tokens, it must use a Program Derived Account (PDA), which is a sub-address of the Program derived from the hash of the Program address and a seed value. As a result PDA values are deterministic from the Program address (aka ID or PubKey) and the seed. For our purposes, the Extension Program custodies M tokens in a Token Account owned by its M Vault PDA. For the M held in the Program under this PDA to earn yield, it must be added as an Earner.
Similar to Ethereum M earners, Solana M earners must be added to a list on the TTGRegistrar contract by Governance. This list is compiled into a Merkle tree by the new MerkleTreeBuilder contract. The root of this Merkle tree is sent to Solana via the M Portal Bridge. Since Solana addresses are longer (32 bytes) than EVM addresses (20 bytes), we must use the more generic setKey(bytes32 key, bytes32 value) function on the TTGRegistrar. The key is calculated as keccak256(abi.encodePacked(bytes32('solana-earners'),bytes32(<M_VAULT_HEX>))) where <M_VAULT_HEX> is the derived PDA pubkey expressed as a hexadecimal value. The value is just a boolean flag, so we set it to 1 (meaning the address is a member of the list).
The pre-determined program address corresponds to a Solana keypair mined and custodied by the M0 Labs Engineering team for this purpose. No program is currently deployed at the address. The Vault PDA address can be verified using the Solana CLI command solana find-program-derived-address <PROGRAM_ID> string:m_vault where the actual base58 program ID is substituted for <PROGRAM_ID>.
| Account Name | Address (base58) | Address (hex) |
|---|---|---|
| Beta Extension Program | extMahs9bUFMYcviKCvnSRaXgs5PcqmMzcnHRtTqE85 | 0x09b9ae06ca554ba46207aef493bb536096e0ca35b982a7995d86b403918b336e |
| Beta Extension M Vault | 4QqDEKoXeD5esxx1UCDXiKyMsmQyhxN3zsaHSxUJZWmR | 0x32adee7be5378da8850f3187a2b11172420a45f13b9921ea7f6bcb50d2a38a54 |
| Voter | Cast Power | Vote & Rationale |
|---|---|---|
0x76Df...9D7695 | 333,584 | YES |
0x2dE6...ae0624 | 327,261 | YES |
0x26AE...19b387 | 327,261 | YES |
0x3A65...234F84 | 283,845 | YES |
0xAb36...Ee7772 | 193,032 | NO |
VOTE POWER
Proposal Status
- Fri May 09 2025, 01:00 pmVoting Period Starts
- Sat May 24 2025, 01:00 pmEnd Voting Period
- Queue Proposal
- Tue May 27 2025, 07:10 pmExecute Proposal
Current Results
1-YES
2.315M
2-NO
269,645
