### Inspect Ledger state & recover plans
- Controller: `15bt67qghz8hJxCUPgAXmzVxUBHLpPN41RVm2nwMFyLWByVE`
- Stash: `14kwUJW6rtjTVW3RusMecvTfDqjEMAt8W159jAGBJqPrwwvC`
**Timeline**
1. Stash `14kw` was bonded with controller `15bt`
- `Bonded(14kw) = 15bt`
- `Ledger(15bt) = ledger { stash = 14kw }`
2. at block #19824629, the ledger became "double-bonded" due to `15bt` calling bond (https://polkadot.subscan.io/extrinsic/19824629-2)
- `Bonded(14kw) = 15bt`
- `Bonded(15bt) = 15bt`
- `Ledger(15bt) = ledger { stash = 15bt }` ❌ overwrote ledger from `14kw`
3. controller `15bt` registered for `fast_unstake`
4. at block #19915659, `fast_unstake` took place, `kill_ledger` was successful.
- `Bonded(14kw) = 15bt`
- `Ledger(14kw) = None` (this should not have happened, but did due to double-bonding of `15bt`)
- `Bonded(15bt) = None` (expected due to kill)
- `Ledger(15bt) = None` (expected due to kill)
```
// Polkadot state @ #19968049 (19 March)
// controller is expected
Bonded(stash) = 15bt67qghz8hJxCUPgAXmzVxUBHLpPN41RVm2nwMFyLWByVE
// controller is not a stash
Bonded(controller) = None
// None ledger
Ledger(controller) = None
// no ledger associated with stash
Ledger(stash) = None
// stash with staking lock
balances.locks(stash)
[
{
id: staking
amount: 42,606,076,773,049
reasons: All
}
]
// controller without
balances.locks(controller)
[]
```
**What did the stash and controller do recently?**
- **Stash**:
- last activity: `bond_extra` ~870 days ago.
- **Controller**:
- `nominate`, `bond_extra`, `nominate`, calls, successful
- ❓❓❓ trying to call a few times `unbond` which failed
- `fast_unstake` registered successfully at block `#19915630`
- fast unstake for `15bt67qghz8hJxCUPgAXmzVxUBHLpPN41RVm2nwMFyLWByVE` was successful at block #19915659 https://polkadot.subscan.io/block/19915659?tab=event&event=19915659-55
```
Option 1:
- enforce controller deprecation (simplest)
Option 2:
- enforce controller deprecations IFF is necessary
if B is not bonded
- set controller as B
- otherwise set controller as stash
Option 3:
- don't enforce by moving locked funds to old ledger
(B, B) ❌
- Remove the nomiantions/payee etc (only reset the ledger stuff)
---
(A, B) // good/old state forever
(B, B)
nominate(B) -> Ledger(Bb)
// stash
bond_extra()
(A, B) A.amount/lock = 10
(B, B) B.amount/lock = 11
bond_extra(A, 15)
Bb.stash --> lock and amount updated (B)
(A, B) A.amount/lock = 10
(B, B) B.amount/lock = 26
maybe_total ();
// ignore
bond()
payout_staker()
set_controller()
```