Consider a digital bank with multi-currency deposits of crypto tokens (mirroring fiat), token exchange, transactions and digital wallets. The bank should charge configurable transaction fees with the upper limit. Forking Stelar seems like a viable option for this purpose. Stellar is able to mint and burn tokens, do the token exchange and transactions.
I would like to add several questions to these questions.
As documentation states, the inflation mechanism was disabled in protocol version 12. Where do the transaction fees go now? How to set up the native token fees to be accumulated on the central bank account?
Is it possible to limit the endless XLM supply? Where in the source code is this configured?
I see it's possible to configure transaction fees size. Do I understand this right that fees can be adjusted dynamically using JS SDK while the system is running?
Is it possible to configure the transaction fee upper limit?
Currently, there is no supported mechanism for setting token fees in tokens themselves (unlike Waves, which has this feature). However, looks like there is a workaround:
Set "authorization required" for your asset but don't allowTrust to any user in general. Instead require them to sandwich every payment + payment fee operation between a allowTrust and a allowTrust(revoke) operation. This way your authorization (by co-signing every transaction with the asset issuer account) for using that asset is only granted temporarily within this atomic transaction.
Altough there is SEP-8 showing a standardized way to automate the co-signing process, afaik there is yet no wallet around that implements it. You'll have to code your own wallet and co-signing service.
I had in mind creating an automated exchange which will exchange fiat token onto native token dynamically upon creating a transaction, and enable users to pay the transaction fees after the exchange happened, under the hood. This will require oracle service with the exchange rate feeds. Which approach is better?