Closing a YieldVault can leave a stale scheduled AutoBalancer tx that later fails with Invalid transaction handler
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 55/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 静か
- 技術スタック
- blockchain
- 領域
- blockchain
調査の方向性
Start at FlowYieldVaultsStrategiesV2.burnCallback() and FlowYieldVaultsAutoBalancers._cleanupAutoBalancer(), then trace DeFiActions.AutoBalancer.cancelScheduledTransaction and the FlowYieldVaultsSchedulerRegistry.unregister() path. Done means pending AutoBalancer schedules are canceled before the handler and capabilities are removed, so the stale transaction from the reported sequence cannot later fail in FlowTransactionScheduler.
索引モデルが issue の本文から書いたものです。
説明
Summary
Closing a YieldVault can leave behind an already-scheduled DeFiActions.AutoBalancer transaction. When that stale scheduled tx later executes, FlowTransactionScheduler fails with:
Invalid transaction handler: Could not borrow a reference to the transaction handler
This happened on mainnet for YieldVault 338.
On-chain sequence
-
2026-03-26 15:59:29 UTC
Txcebd06599a069af88b3ceb909b4fdadaa32d366cd4c7b72c48c9aca841ecb8b3- FYVEVM worker created YieldVault
338 - same tx emitted
DeFiActions.CreatedAutoBalancerwithuuid = 13194142095838,uniqueID = 338 - same tx emitted
FlowTransactionScheduler.Scheduledwith:id = 156720transactionHandlerTypeIdentifier = A.6d888f175c158410.DeFiActions.AutoBalancertransactionHandlerUUID = 13194142095838timestamp = 2026-03-26 16:09:29 UTC
- FYVEVM worker created YieldVault
-
2026-03-26 16:02:28 UTC
Txccd2722170525c1bd7ece82dc50b71f899ea7e85324e8d2e78c482c64ab35087- FYVEVM scheduler picked up close request
97for YieldVault338 - scheduled worker tx
156723
- FYVEVM scheduler picked up close request
-
2026-03-26 16:02:29 UTC
Tx53d2d8169a77851b1a729e19cd2e39642e1ed20519cd14c07ac4eff307f24b71- FYVEVM worker closed YieldVault
338successfully
- FYVEVM worker closed YieldVault
-
2026-03-26 16:09:29 UTC
Tx2a6a879ca2049edca43dc7392fbe5f3420550366452117a41e90686335eece3e- generic scheduler wrapper attempted to execute scheduled tx
156720 - failed with
Invalid transaction handler: Could not borrow a reference to the transaction handler
- generic scheduler wrapper attempted to execute scheduled tx
Why this looks like a FlowYieldVaults cleanup bug
The scheduled tx 156720 is clearly the AutoBalancer tx created for YieldVault 338. But vault 338 was already closed about 7 minutes earlier, so when 156720 fired, its handler no longer existed.
From the deployed mainnet contracts:
FlowYieldVaultsStrategiesV2.burnCallback()callsFlowYieldVaultsAutoBalancers._cleanupAutoBalancer(id: self.id()!)_cleanupAutoBalancer()unregisters the vault, deletes capability controllers, and burns the AutoBalancerFlowYieldVaultsSchedulerRegistry.unregister()removes registry/capability mappings but does not cancel already-scheduled transactionsDeFiActions.AutoBalancerdoes havecancelScheduledTransaction, butAutoBalancer.burnCallback()does not cancel outstanding scheduled txs
So the close path appears to remove the AutoBalancer handler without first canceling its already-scheduled rebalance txs.
Expected behavior
When a YieldVault is closed, any pending AutoBalancer scheduled transactions for that vault should be canceled before the AutoBalancer handler/capabilities are removed.
Actual behavior
The AutoBalancer handler is cleaned up, but the already-scheduled transaction remains in FlowTransactionScheduler and later fails at execution time.
Additional note
The docs currently state that closing a YieldVault cancels pending schedules, but the observed mainnet behavior above shows that at least this path still leaves a stale scheduled tx behind.
- 主要言語
- Cadence
- スター
- 41
- フォーク
- 0
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
onflow/FlowYieldVaults のほかの issue
-
難易度 4/5 3〜5日 初心者へのやさしさ 25/100
onflow/FlowYieldVaults#274 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
onflow/FlowYieldVaults#273 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
onflow/FlowYieldVaults#272 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 35/100
onflow/FlowYieldVaults#271 ·
-
Move all test files into `./cadence/tests`再び着手できるかも このイシューのプルリクエストはマージされずにクローズされました。 オープン
難易度 3/5 1〜2日 初心者へのやさしさ 35/100
onflow/FlowYieldVaults#270 ·
onflow/FlowYieldVaults の issue をすべて見る
似ている issue
-
難易度 1/5 1時間未満 初心者へのやさしさ 74/100
メンテナーはふだん 2 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
メンテナーはふだん 1 日以内に返信
-
[BUG]: fabricx finality queue pending_events gauge is never updated when workers drain the queue対応中かも @sublimemonk が 1 日前に担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 80/100
LFDT-Panurus/panurus#2609 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 82/100
velocity-exchange/velocity-v1#572 ·
メンテナーはふだん 1 日以内に返信
-
`debug_resyncWorldState` returns `true`, and `miner_getExtraData` drops leading zero bytes対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
メンテナーはふだん 2 日以内に返信