Ether is not ERC20 compliant, and so it does not support functions such as ERC20 which are applied on ERC20 standard token.
Let's say that there is a contract that provides a periodic service to subscribed accounts. To subscribe for this service, the contract accepts a certain amount of a specific ERC20 token as a subscription fee. To do this, the contract must have a publicorexternalfunction that calls the token.transferFrom()function and charges the caller in an ERC20 token. This way, a user can pay for the service using the ERC20 token. Note that you should not transfer the ERC20 token directly to the service contract, as you might lose your tokens.
Yes, there are some other token standards that have been proposed, such ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month, and much more.