BUG: withdrawUserStakes() selector not registered on MOR Diamond (Base) — ~49.77 MOR locked
Wallet: 0x845103754c0ff91fdfbef2b8d59b54185dc79499
Diamond (Base): 0x6aBE1d282f72B474E54527D93b979A4f64d3030a
Problem
Approximately 49.77 MOR is locked as "stakes on hold" on the Diamond contract. The withdrawUserStakes() function needed to reclaim these funds is not registered on the diamond — confirmed by on-chain calls reverting with:
Diamond: selector is not registered
Root Cause
When the user (consumer node operator) signs a session closeout message instead of receiving one (i.e., the counterparty never sent a closeout), the MOR stays locked as "stakes on hold" with no on-chain path to recovery. The withdrawUserStakes() function selector is not registered in the Diamond's facet registry.
Expected Behavior
Users should be able to call withdrawUserStakes() on the Diamond (directly or via the function selector 0x...) to recover their locked MOR after a session is closed.
Evidence
// Calling withdrawUserStakes directly on the diamond:
Diamond(0x6aBE1d282f72B474E54527D93b979A4f64d3030a).withdrawUserStakes(...)
// → reverts with "Diamond: selector is not registered"
Questions
- Is
withdrawUserStakes supposed to be registered on the Diamond? If so, which facet should provide it?
- Is there an existing workaround to recover locked stakes without the registered function?
- Should this be handled by a separate escape-hatch mechanism (e.g., admin function, multisig)?
Impact
Any consumer node operator whose session counterparty fails to send a closeout message will have their MOR stakes permanently locked with no recoverable path on-chain.
Priority: High — funds are locked and inaccessible.
Chain: Base
BUG:
withdrawUserStakes()selector not registered on MOR Diamond (Base) — ~49.77 MOR lockedWallet:
0x845103754c0ff91fdfbef2b8d59b54185dc79499Diamond (Base):
0x6aBE1d282f72B474E54527D93b979A4f64d3030aProblem
Approximately 49.77 MOR is locked as "stakes on hold" on the Diamond contract. The
withdrawUserStakes()function needed to reclaim these funds is not registered on the diamond — confirmed by on-chain calls reverting with:Root Cause
When the user (consumer node operator) signs a session closeout message instead of receiving one (i.e., the counterparty never sent a closeout), the MOR stays locked as "stakes on hold" with no on-chain path to recovery. The
withdrawUserStakes()function selector is not registered in the Diamond's facet registry.Expected Behavior
Users should be able to call
withdrawUserStakes()on the Diamond (directly or via the function selector0x...) to recover their locked MOR after a session is closed.Evidence
Questions
withdrawUserStakessupposed to be registered on the Diamond? If so, which facet should provide it?Impact
Any consumer node operator whose session counterparty fails to send a closeout message will have their MOR stakes permanently locked with no recoverable path on-chain.
Priority: High — funds are locked and inaccessible.
Chain: Base