Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can't reap unbonded validator control account, can't find what extrinsic is holding it up... #975

Closed
polkadotbabe opened this issue Mar 21, 2021 · 15 comments

Comments

@polkadotbabe
Copy link

Similar to this issue (closed in substrate as not a substrate issue): paritytech/subport#96

After unbonding a validator control/stash pair, waiting the 28 days, "unlocking" in polkadot-JS, the control account for a (former) validator can't reap: "There is an existing reference count on the sender account. As such the account cannot be reaped from the state."

I can re-assign it as a controller to another validator account, and the stash account is able to reap. Purged the keys, called force withdraw... Obviously the calls are on chain, and there's an entire discord log of trouble-shooting steps that didn't work. I'm not concerned about the address being public, not sure if the etiquette here allows posting it directly?

It seems the JS GUI isn't reading all extrinsics or outright missing one that's preventing the account from reaping...

@gui1117
Copy link
Contributor

gui1117 commented Mar 22, 2021

so you called purge_keys with the controller and it was successful.
Then you called unbond(all_stash_active_balance) with the controller and it was successful.
Then after 28 days you called withdraw_unbonded with the controller and it was failing ?

Can you say which extrinsic was failing ?

If you don't mind sharing the account address, I think you can post it to ease understanding the issue.

@polkadotbabe
Copy link
Author

polkadotbabe commented Mar 22, 2021

Calling withdrawUnbonded returns the "staking not controller" error:

https://polkadot.subscan.io/account/1Kbabe7YGBxMYsbMTuW7ga5ctSsh6kcirkvVSTLE1eVAsYB

So, obviously, the address is 1Kbabe7YGBxMYsbMTuW7ga5ctSsh6kcirkvVSTLE1eVAsYB

If it were a controller I wouldn't be able to use the JS wallet to assign it to control another stash...

@gui1117
Copy link
Contributor

gui1117 commented Mar 22, 2021

The call to purge_keys has failed, thus there is still associated to the old stash account. And this is preventing the validator account to be killed.

You need:

  • call bond with the old stash, to the controller
  • call purge_keys with the controller
  • call unbond with the controller
  • wait 28 days
  • call withdraw_unbonded with the controller

@polkadotbabe
Copy link
Author

I'll doublecheck (and edit this accordingly) but I already did all that, although I unbonded then purged the keys, the 28 days lapsed, can't withdraw_unbonded....

Were it still bonded to a stash I wouldn't have been able to assign it as controller of another validator's stash?

@gui1117
Copy link
Contributor

gui1117 commented Mar 22, 2021

I can't see the successful purge_keys in the UI, you did use the same stash and controller isn't it?

You need to use the same stash and controller as when you set the keys.

EDIT: maybe the UI doesn't show very old transactions, and that is why I can't see the successful purge_keys.

@polkadotbabe
Copy link
Author

polkadotbabe commented Mar 22, 2021

It was separate stash/controller, digging back through to try and figure out which one... although I did reset and remove it as controller for various accounts....

Update -- you are correct, no successful purge_keys, and the unbond I called was from the controller->stash, which didn't work, so it appears even though I was able to "reap" the stash, the error is I need to unbond from the stash account? The purge keys from the controller?

To clarify, I unbonded the pair (waited 28 days), odd that that wasn't correct.

@gui1117
Copy link
Contributor

gui1117 commented Mar 23, 2021

It was separate stash/controller,

Yes I meant the controller account and the stash account that was in used when you called set_keys, should be the same when you call purge_keys.

If purge_keys failed you need to bond you stash to your controller and call purge_keys.
You can do the step as described in #975

@gui1117
Copy link
Contributor

gui1117 commented Mar 23, 2021

Update -- you are correct, no successful purge_keys, and the unbond I called was from the controller->stash, which didn't work, so it appears even though I was able to "reap" the stash, the error is I need to unbond from the stash account? The purge keys from the controller?

In order to be able to reap the controller account you need to have a successful purge_keys.
In order to have a successfull purge_keys you need to have the stash bonded (the same stash that was bonded when you called set_keys)
unbond is called from the controller.
purge_keys is called from the controller (but the stash needs to be bond in order to have a successful result).
you can reap the stash while having still some keys associated to the controller. If this happens it result in your situation: the controller can't be reap and can't call purge_keys without rebonding the stash again.

@polkadotbabe
Copy link
Author

I still can't reap this -- despite the js ui showing that the coins are "available", I can't transfer them out.

I'm not sure if I was clear above, I simply unbonded them per the instructions. It worked on one bond, not on this one. I've called purge_keys, tried to force the withdraw, nothing in any extrinsic works.

As a separate issue with two separate accounts, my nomination stash can't unbond, I'll post screenshots -- when I click on the unlock icon it says -- despite 1 DOT being free in the account -- there's not enough funds to unbond.

These ongoing errors in published code are intensely frustrating, given I've had a decent chuck on money sitting there locked via errors, I'd really appreciate DOT assigning someone to solve this.

Thanks in advance, and have a great day!

--Anna

@polkadotbabe
Copy link
Author

DOT_cantsent2
DOT_cantsent1

In these, you can see the above account link, it says available but it's not. Somehow while waiting it cleared 0.98 or so, there used to be 1 DOT stuck. If you review the TXes I've called all the required extrinsics with no success.

@polkadotbabe
Copy link
Author

Dot3

In this I'm not sure what it's saying -- my addresses are all vanity beginning with 1babe or 12babe and aren't on the list as I didn't nominate them -- but it seems Allnodes paritytech/polkadot#1 complained about W3F which I did nominate, and now DOT wants me to pay 1.0394 for an anonymous validators' slashing? Which might be why the following can't unbond:

@polkadotbabe
Copy link
Author

Dot2_a
Dot2
DOT_Cant_Unlock

In these, you can see trying to unlock returns an error of lacking funds, even though there's 0.9877 free in the stash account and 0.418 in the controller accounts.

Further, I can't "Stop" the bond as pulling down the three-dot menu to choose unbond funds results in no action.

Thanks again for helping DOT/Parity!

@polkadotbabe
Copy link
Author

oh, nominator control:
1babenhvYgxX7x875dXfQMRbmxEqXTW6kcSAsyN3CkU8cNw

Nominator stash: 1babeEzMQKnbcpTi3iqfLXQCkTKJV5ufuAqp7zAtCmRYCcB

@bkchr
Copy link
Member

bkchr commented Sep 25, 2021

CC @rrtti

@rrtti
Copy link

rrtti commented Sep 27, 2021

@michalisFr is looking into this.

@Sophia-Gold Sophia-Gold transferred this issue from paritytech/polkadot Aug 24, 2023
@bkchr bkchr closed this as completed Aug 24, 2023
claravanstaden pushed a commit to Snowfork/polkadot-sdk that referenced this issue Dec 8, 2023
* Submit outbound message without MessageQueue

* Priority control

* Update priority

* Update cumulus

* Reserve space for high priority messages

* Fix compile error & More refactor

* Improve processing high priority messages

* Some polish

* Add priority back

* Improve comments

* Rename priority to normal

* Refactor submit logic

* Refactor process message

* Add type HighPriorityCommands

* Fix clippy

* Rename priority with BridgeHub

* Update parachain/primitives/core/src/outbound.rs

Co-authored-by: Vincent Geddes <vincent@snowfork.com>

* Update parachain/pallets/outbound-queue/src/lib.rs

Co-authored-by: Vincent Geddes <vincent@snowfork.com>

* Update parachain/pallets/outbound-queue/src/lib.rs

Co-authored-by: Vincent Geddes <vincent@snowfork.com>

* Revamp with ExportOrigin

* Fix format

* Some polish

* Check weight before processing message (paritytech#974)

* update cumulus submodule

* Include base_fee

* Redeem vouchers for delivery fee

* Estimate fee upon commit_one_message

* Balance type as u128

* Improve comments

* Runtime api for estimate_fee

* Remove all voucher&redeem stuff

* Fix for clippy

* Benchmark for do_submit_message

* Add delivery_fee

* Improve fee test

* Remove benchmark for submit

* Add comments

* Rename to calculate_fee

* Comments

* Add method for total fee

* Short name

* Rename to commit_messages

* Use Balance generic for the api

* Update parachain/pallets/outbound-queue/runtime-api/src/lib.rs

Co-authored-by: Vincent Geddes <vincent@snowfork.com>

* Rename generic Runtime to T

* Remove fee from OutboundQueueTicket

* Rename to fees

---------

Co-authored-by: Vincent Geddes <vincent.geddes@hey.com>
Co-authored-by: Vincent Geddes <vincent@snowfork.com>
helin6 pushed a commit to boolnetwork/polkadot-sdk that referenced this issue Feb 5, 2024
Bumps [got](https://github.com/sindresorhus/got), [@truffle/config](https://github.com/trufflesuite/truffle/tree/HEAD/packages/config) and [@truffle/debugger](https://github.com/trufflesuite/truffle/tree/HEAD/packages/debugger). These dependencies needed to be updated together.

Updates `got` from 9.6.0 to 12.1.0
- [Release notes](https://github.com/sindresorhus/got/releases)
- [Commits](sindresorhus/got@v9.6.0...v12.1.0)

Updates `@truffle/config` from 1.3.45 to 1.3.48
- [Release notes](https://github.com/trufflesuite/truffle/releases)
- [Commits](https://github.com/trufflesuite/truffle/commits/@truffle/config@1.3.48/packages/config)

Updates `@truffle/debugger` from 11.0.18 to 11.0.22
- [Release notes](https://github.com/trufflesuite/truffle/releases)
- [Commits](https://github.com/trufflesuite/truffle/commits/@truffle/debugger@11.0.22/packages/debugger)

---
updated-dependencies:
- dependency-name: got
  dependency-type: indirect
- dependency-name: "@truffle/config"
  dependency-type: indirect
- dependency-name: "@truffle/debugger"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Mar 26, 2024
* always run on-demand headers relay in complex relay

* fix compilation
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Mar 27, 2024
* always run on-demand headers relay in complex relay

* fix compilation
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 8, 2024
* always run on-demand headers relay in complex relay

* fix compilation
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 8, 2024
* always run on-demand headers relay in complex relay

* fix compilation
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 8, 2024
* always run on-demand headers relay in complex relay

* fix compilation
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 8, 2024
* always run on-demand headers relay in complex relay

* fix compilation
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 8, 2024
* always run on-demand headers relay in complex relay

* fix compilation
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 9, 2024
* always run on-demand headers relay in complex relay

* fix compilation
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 9, 2024
* always run on-demand headers relay in complex relay

* fix compilation
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 9, 2024
* always run on-demand headers relay in complex relay

* fix compilation
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 9, 2024
* always run on-demand headers relay in complex relay

* fix compilation
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 9, 2024
* always run on-demand headers relay in complex relay

* fix compilation
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 9, 2024
* always run on-demand headers relay in complex relay

* fix compilation
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 10, 2024
* always run on-demand headers relay in complex relay

* fix compilation
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 10, 2024
* always run on-demand headers relay in complex relay

* fix compilation
bkchr pushed a commit that referenced this issue Apr 10, 2024
* always run on-demand headers relay in complex relay

* fix compilation
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants