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?
kill_anonymous
instead ofremove_proxy
, then the funds are unreserved for the spawner account, as expected. I believe thatremove_proxy
was not really meant to be used with pure proxies.