Description
packages/contracts/vault/src/lib.rs has had migrate_adapter since #464/#507 merged into main. The live testnet vault at CONTRACT_ADDRESSES.testnet.vault (CBQYEHWIRJWIPWCJFQZAOP3VAZHRWFGAUS5GZHWFDDYKMFHJ5S3YS2Q5) was never redeployed since, and does not have it.
Verified directly against the live contract:
stellar contract invoke --network testnet --source <admin> --id CBQYEHWIRJWIPWCJFQZAOP3VAZHRWFGAUS5GZHWFDDYKMFHJ5S3YS2Q5 -- --help
lists deposit, withdraw, get_admin, is_paused, set_admin, initialize, set_paused, get_adapter, set_adapter, get_position, get_principal, get_entry_time, get_total_assets, get_total_shares. No migrate_adapter.
.github/workflows/verify-contract-addresses.yml's "Verify On-Chain Bytecode" job (required, blocking) confirms this with a hash mismatch, but only runs when packages/shared/src/constants.ts or packages/stellar-sdk-helpers/src/known-pools.ts change, so this has been silently true since #464/#507 merged without ever surfacing until an unrelated PR happened to touch constants.ts.
Steps to Reproduce
stellar contract invoke --network testnet --source <any> --id CBQYEHWIRJWIPWCJFQZAOP3VAZHRWFGAUS5GZHWFDDYKMFHJ5S3YS2Q5 -- --help
- Compare against
packages/contracts/vault/src/lib.rs's current public functions
Expected Behavior
The live testnet vault's callable methods match what packages/contracts/vault/src/lib.rs currently exports, including migrate_adapter.
Actual Behavior
The live vault is missing migrate_adapter (and possibly other changes made to the vault contract since its last deployment). pnpm verify:contracts confirms a bytecode hash mismatch between the deployed contract and a fresh build from current source.
Environment
| Field |
Value |
| Network |
testnet |
| Wallet |
N/A |
| Protocol affected |
Meridian coordinator vault |
Possible Cause / Fix
Run scripts/deploy-testnet.sh for a fresh vault (+ Blend adapter) deployment, then update CONTRACT_ADDRESSES.testnet.vault and KNOWN_POOLS.testnet["meridian-usdc"].contractId to the new address. This is a breaking cutover, not an in-place patch (no upgrade path exists on any of these contracts), so it needs the same care as previous vault migrations: announce it, and update every hardcoded reference (frontend, docs, any other tooling) together in one pass. Any existing testnet positions on the old vault are stranded once the pointer moves; users would need to withdraw from the old vault before the cutover if that matters for testnet usability.
Blocks #469 (the migrate_adapter keeper) from ever functioning against the live vault, independent of the still-open rate-source (#511) and DeFindex-adapter-activation gaps.
Description
packages/contracts/vault/src/lib.rshas hadmigrate_adaptersince #464/#507 merged intomain. The live testnet vault atCONTRACT_ADDRESSES.testnet.vault(CBQYEHWIRJWIPWCJFQZAOP3VAZHRWFGAUS5GZHWFDDYKMFHJ5S3YS2Q5) was never redeployed since, and does not have it.Verified directly against the live contract:
lists
deposit,withdraw,get_admin,is_paused,set_admin,initialize,set_paused,get_adapter,set_adapter,get_position,get_principal,get_entry_time,get_total_assets,get_total_shares. Nomigrate_adapter..github/workflows/verify-contract-addresses.yml's "Verify On-Chain Bytecode" job (required, blocking) confirms this with a hash mismatch, but only runs whenpackages/shared/src/constants.tsorpackages/stellar-sdk-helpers/src/known-pools.tschange, so this has been silently true since #464/#507 merged without ever surfacing until an unrelated PR happened to touchconstants.ts.Steps to Reproduce
stellar contract invoke --network testnet --source <any> --id CBQYEHWIRJWIPWCJFQZAOP3VAZHRWFGAUS5GZHWFDDYKMFHJ5S3YS2Q5 -- --helppackages/contracts/vault/src/lib.rs's current public functionsExpected Behavior
The live testnet vault's callable methods match what
packages/contracts/vault/src/lib.rscurrently exports, includingmigrate_adapter.Actual Behavior
The live vault is missing
migrate_adapter(and possibly other changes made to the vault contract since its last deployment).pnpm verify:contractsconfirms a bytecode hash mismatch between the deployed contract and a fresh build from current source.Environment
Possible Cause / Fix
Run
scripts/deploy-testnet.shfor a fresh vault (+ Blend adapter) deployment, then updateCONTRACT_ADDRESSES.testnet.vaultandKNOWN_POOLS.testnet["meridian-usdc"].contractIdto the new address. This is a breaking cutover, not an in-place patch (no upgrade path exists on any of these contracts), so it needs the same care as previous vault migrations: announce it, and update every hardcoded reference (frontend, docs, any other tooling) together in one pass. Any existing testnet positions on the old vault are stranded once the pointer moves; users would need to withdraw from the old vault before the cutover if that matters for testnet usability.Blocks #469 (the migrate_adapter keeper) from ever functioning against the live vault, independent of the still-open rate-source (#511) and DeFindex-adapter-activation gaps.