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.

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.

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.

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.



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
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
Open — reviewer assigned
Open — awaiting reviewer
Closed
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.
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.
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.
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.
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