Skip to content

Vault launch: portfolio dashboard down, transaction errors, and deposits blocked for 4+ hours #3283

@amathxbt

Description

@amathxbt

I wanted to bring a few issues to your attention that I experienced during last week VAULT I launch, and I am sharing this here given my ongoing contributions to the codebase over the past 2 to 3 months.

About my contributions

Over the past several months I have been identifying and documenting bugs in the Citrea codebase through Notion, and I have been systematically opening PRs to address them. You can see the full list below. This has not been a quick effort it has been months of careful reading, testing, and writing detailed fix descriptions.

Beyond GitHub, I have also been actively supporting the project through content on X, sharing information about the Vault launch and other updates to help spread awareness. I was able to deposit into the vault by interacting with the contract directly before the dashboard even went live, and the vault filled within seconds of opening.

I am bringing all of this up because I genuinely want to be a recognized part of the contributor community. Since there's contributor roles available, whether through Discord or any other way or even tell to Rollie CM to recognize these 2 roles to me sir , I would really appreciate being considered for it. It would give me even more conviction to keep contributing at this level.


My pull requests on chainwayxyz/citrea

Merged

PR Title
#3227 fix(bitcoin-da): correct doc comment on INITIAL_TESTNET4_STATE

Open — reviewer assigned

PR Title Reviewers
#3282 fix(bitcoin-da): replace output[0] direct index with .first().ok_or() in validate_txs_fee_rate @jfldde
#3281 fix(bitcoin-da): replace output[0] direct index with .first().ok_or() in bump_fee_cpfp @ercecan
#3271 fix(monitoring): release chain_state write lock before RPC loop in check_chain_state @jfldde
#3263 fix(bitcoin-da): propagate get_block_info error in determine_tx_status instead of .unwrap_or(0) @eyusufatik @ercecan @jfldde
#3257 fix(bitcoin-da): avoid monitored_txs write lock across RPC calls in handle_reorg @ercecan
#3255 fix(bitcoin-da): avoid monitored_txs write lock across RPC calls in check_transactions @ercecan
#3253 fix(bitcoin-da): avoid monitored_txs write lock across RPC in monitor_transaction @jfldde
#3233 fix(bitcoin-da): report computed witness commitment hash as actual value in WrongTxCommitment error @jfldde
#3228 fix(batch-prover): guard against empty commitments slice in PartitionState::new @ercecan @jfldde
#3226 fix(bitcoin-da): return MempoolSpaceRequestError on HTTP failure in get_fee_rate_from_mempool_space @jfldde

Open — awaiting reviewer

PR Title
#3276 fix(bitcoin-da): bounds-check vout before indexing transaction outputs in tx_signer
#3275 fix(bitcoin-da): handle empty txs list in DA queue instead of panicking with unwrap
#3249 fix(bitcoin-da): replace .transaction().unwrap() with ? in restore_from_utxos
#3247 fix(bitcoin-da): correct "Expected exactly 2 transactions" error message in backup.rs
#3234 fix(bitcoin-da): avoid holding write lock across async RPC calls in handle_evicted

Closed

PR Title
#3277 fix(ethereum-rpc): propagate error instead of panicking with unwrap in suggest_tip_cap
#3274 fix(bitcoin-da): use checked_sub in validate_txs_fee_rate to prevent underflow panic
#3273 fix(backup): hold L1/L2 processing locks until all backup tasks fully complete
#3270 fix(bitcoin-da): change BitcoinMerkleTree::new to return Result instead of panicking
#3269 fix(verifier): replace coinbase_tx.input[0] direct index with .first().ok_or()
#3265 fix(bitcoin-da): use checked_sub in validate_txs_fee_rate to prevent Amount underflow
#3261 fix(bitcoin-da): use saturating_sub(1) to prevent underflow in regtest height fallback
#3259 fix(bitcoin-da): replace available_utxos[0] with .first().ok_or() in service.rs
#3251 fix(bitcoin-da): widen mine_reveal_prefix iterations counter from u32 to u64
#3245 fix(bitcoin-da): replace unwrap() with ok_or on empty coinbase witness in short_proof verify
#3232 fix(bitcoin-da): replace zip_eq with explicit length check to prevent panic on mismatched completeness_proof
#3231 fix(bitcoin-da): guard against empty tx.input in get_script to prevent index panic
#3230 fix(bitcoin-da): replace zip_eq with explicit length check in verify_transactions
#3229 fix(bitcoin-da): replace debug_assert with anyhow::ensure for sequencer commitment body size limit
#3225 fix(bitcoin-da): use fee_rate in validate_txs_fee_rate comparisons

Issues from last week VAULT launch

1. VAULT bug already reported to Upshift team via Discord ticket — resolved

Before opening this issue I reported the vault bug directly to the Upshift team through a Discord support ticket and they resolved it quickly. I am raising it here as well so the Citrea team has full visibility into what happened on launch day from a user and contributor perspective.

Discord support ticket

2. Portfolio dashboard was completely inaccessible

The portfolio page failed to load for an extended period and showed the following error every time:

"We are currently having trouble fetching your portfolio data. Please refresh or try again shortly."

No amount of refreshing resolved it. The page remained broken for hours after the vault went live.

Portfolio error screen

3. Error executing transaction through the vault UI

When I tried to deposit through the vault dashboard, I received an "Error Executing Transaction" message with no further explanation. The transaction did not go through via the UI.

Transaction execution error

4. Vault stopped accepting deposits well before capacity was confirmed

The vault has not allowed new deposits for over four hours. The total net value shown is $17,996,341 and the contract holds approximately 12,778,441 USDC. From what I can see on chain, 322 deposit transactions went through to the contract, but new users have been blocked from depositing even though the stated capacity limit was not clearly communicated as fully reached.

Vault exposure showing total net value

USDC token holdings in the vault contract

On-chain deposit transaction history

I understand launch days come with unexpected pressure and I genuinely appreciate everything the team is building with Citrea. A transparent update on what happened and a clear path forward for users who could not deposit through the dashboard would go a long way. And if there is any way to recognize long-term contributors through Discord or the broader community, I would love to be part of that conversation.

Thank you for your time.

cc @eyusufatik @jfldde

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions