Addressing Unnecessary Fees in Delegation After Adding New Dots

I’ve encountered an issue with DOT delegation that needs to be addressed.

When I buy more DOT, I have to undelegate all my tokens from every track and then re-delegate everything, including the new tokens.

This results in unnecessary fees, which, while not breaking the bank, do add up over time. Polkadot Support has confirmed this issue, and I believe it needs to be changed.

We need a more efficient way to update delegations without incurring these extra costs.

How can I bring this to the developers’ attention?

Thanks!

2 Likes

Additional x reply from Flez

Similar issue nominating validators, getting hit with the same fees to change just one validator in the set as I do changing ten at a time !

1 Like

(Assuming you’re referring to governance delegation)
I’ve asked people about delegation fees before, and my understanding is that they’re quite high because the action is costly on-chain; that is, many extrinsics are required to perform delegation/undelegation tasks.

1 Like

It should be possible to update an existing delegation without needing to undelegate first; which wallet are you using?

1 Like

As for this, while it is a reasonable concern, I would guess that the fee difference between updating one validator and 16 is such a small fraction that it will not be noticed. Moreover, once the staking system moves to AH as a part of RFC32, the fees will be even lower.

At the moment, we only have:

  • fn nomiate(nominees: Vec<AccountId>)

And we can have:

  • fn nomiate(nominees: Vec<AccountId>)
  • fn add_nominations(added: Vec<AccountId>)
  • fn remove_nominations(removed: Vec<AccountId>)

Although, I would first like to see someone explore the difference in the Weight of these calls and demonstrate that the amount saved in weight/fee is actually worthy anyone’s while.

2 Likes

Even if a wallet created a single batch call for user convenience, wouldn’t it still group the undelegation and delegation calls for the new amount on every track? Wouldn’t the fees be similar in a single batch call compared to multiple independent calls?

1 Like

My point is that the transaction delegate can be used to update the existing delegation as well, not just to set new ones.

2 Likes

If you try to delegate on a track where you already have an active delegation, the delegate extrinsic will return an alreadyDelegating error, even if you’re trying to delegate a new amount to the same account.

Test on Westend:

3 Likes

I use Ledger with Talisman or Polkadot JS Wallet. I cannot update an existing delegation.

1 Like

Wouldn’t the fees be similar in a single batch call compared to multiple independent calls?

Indeed, the fees for batch should be the same as the fee for a call that combines the two operations.

A UI can easily already implement a update_delegation, should they wish, by batching an undelegate and delegate and in effect it should have a very very small extra fee on it.

You would perhaps save a truthfully negligible amount by constructing a smaller transaction by not repeating the tracks, otherwise the batch should have near-zero overhead.

2 Likes