Using pallet-proxy, you can execute the following sequence of calls:

  • Create a new pure proxy account using anonymous. Let's say this reserves 10 DEV on your main account.
  • (Optional) Call some function which reserves 15 DEV on the newly created anonymous account.
  • Call remove_proxy from the anonymous account.

The result is: You lose control over the anonymous account (obviously), but the funds that you reserved for creating the account remain reserved because instead of being unreserved on your account, they are unreserved on the anonymous account, leaving the anonymous account with 10 free and 5 reserved DEV, which might confuse whoever reserved those 15 DEV in step 2.

Judging by this comment, this is (sort-of) intended behavior. Why?

Sure, you can probably burn money in more creative ways, but why doesn't pallet-proxy manage anonymous accounts and conventional proxies separately to prevent this strange interaction?

  • If you remove the pure proxy by calling kill_anonymous instead of remove_proxy, then the funds are unreserved for the spawner account, as expected. I believe that remove_proxy was not really meant to be used with pure proxies. Commented Nov 7, 2022 at 8:56
  • That was my impression, as well, hence this question. I would have already raised an issue if it wasn't for the comment linked in the question above that shows that the developers were aware of this interaction and apparently decided to leave it in.
    – mkl
    Commented Nov 7, 2022 at 14:33


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.