All Kamino-deployed markets use Squads v4 with a 12-hour timelock on SOL/BTC Market and shorter timelocks on satellite markets. Curator markets should match this posture before opening to external users.
How the transfer works
TheLendingMarket account has two owner-related fields:
The transfer runs in two steps. First, the current owner sets
lending_market_owner_cached to the multisig pubkey. The active owner doesn’t change yet; only the staging slot moves. Second, a signer at the new owner address (the multisig itself) calls update-lending-market-owner, which copies the cached value into the live lending_market_owner and finalizes the transfer.
The split exists so a typo in the cached pubkey is recoverable: the current owner can re-set the cached field as many times as needed before promotion. Only the second step is irreversible from your side.
- SDK
- API
- Kamino CLI
Transfer ownership via SDK
The SDK exposesupdatePendingLendingMarketAdminIx for step 1 and updateLendingMarketOwnerIxs for step 2.1
Initialize KaminoManager and fetch the market
2
Step 1 — cache the new owner
3
Step 2 — promote the cached owner
This step must be signed by the new owner (the multisig). For a multisig, build the transaction with
noopSigner(newOwnerAddress) and submit it as a Squads proposal.Setting up the Squads multisig
A short walkthrough; full documentation lives at Squads docs.1
Create the Squad
On squads.so, create a new Squad. Choose your signer set (hardware wallets recommended for production) and a signature threshold (e.g., 3-of-5).
2
Configure a timelock
In Squad settings, enable a transaction timelock. Kamino’s reference is 12h for SOL/BTC Market, 4h for satellite markets. Pick the value that fits your operational tempo and incident-response posture.
3
Fund the Squad
Send a small amount of SOL to the Squad’s vault address to cover transaction fees on proposals.
4
Note the Squad pubkey
Use the Squad’s vault address as the multisig pubkey passed to the SDK / CLI.
Verifying transactions before signing
A common pattern among security-conscious curators is to recompute the transaction locally and compare its hash to the proposal in Squads. Before signing a proposal:- Re-run the same SDK code (or CLI command with
--mode multisig) - Compare the printed base58 transaction to what’s surfaced in the Squads UI
- Sign only if the bytes match exactly
Rotating the multisig later
To move ownership to a new multisig after the first transfer is complete, repeat the two-step flow:- The current multisig submits a proposal that updates
lending_market_owner_cachedto the new multisig. - The new multisig submits a proposal that calls
update-lending-market-owner.
Reference
- Market settings — the broader market-level config flow
- Market config reference —
lending_market_ownerandlending_market_owner_cachedfields market-operationsCLI reference — full CLI flag detail- Squads docs