Create an ERC20 token where the owner can burn or freeze tokens of specific holders?

I have been unable to find whether this is possible for an ERC20 token. I would like to create a token that has this functionality, or if the contract owner cannot, is it possible to write a contract that would be able to burn tokens in specific wallets when certain conditions were met? If this is not possible, is it possible to freeze specific wallets?

I am trying to develop a token where all of the holders will be expected to work together and maintain an equal amount between them. The supply will be divided by the number of participants and they will have one day to find balance. those who are above the average I would like to be able to burn their tokens or freeze the tokens in their wallet.

From what I have researched this may not be possible at all…

1 Like

All that you are trying to do is very much possible.

  • Freezing or pausing a contract is a concept that is already present in some tokens, specially in the case of Asset tokens also known as Security tokens, an example of this is USDC. You can see that this kind of token is centrally issued, has a concept of Freezing and the concept of blacklisting.
    Of course, in this case, the motivation for having these functionalities is a regulatory one, but I’m just giving an example of the functionality that you are looking for and how it can be implemented.

  • With regards to burning someone else’s tokens under certain conditions, what you can do is rely on Openzeppelin’s ERC20Burnable, of course you would want to call this function only under certain circumstances and not just allowing the owner or someone else to use it in an arbitrary way.

All in all, what you are trying to do is very much possible and in fact all of the behaviors you are describing are already a thing. Personally I think the hardest thing to implement will be burning tokens from all users at a certain point, mainly because of the prospect of having to go through each user checking their balance and burning if applicable and the gas cost of that + the idea of traversing an arbitrary size array.

Hope that this sheds some light on your problem.

2 Likes

Hi @Matthew_White,

Welcome to the community :wave:

Assuming that your question is answered, you can mark the awesome reply by @Madness as the solution. (Thanks @Madness for the detailed response).

1 Like