Consider a digital bank with deposits of different assets and transactions between digital wallets. All transactions have mandatory transaction fees, collected by the bank. An interesting approach to the implementation of this concept was proposed:
During the user onboarding process you can add an additional signer to
the account. This allows you to control all operations of this
account. A user can’t transfer or exchange any assets without your
explicit permission – a signature on the transaction is required. At
the same time, you can’t do anything either with this account without
user’s confirmation. Such a scheme allows you to enforce general
policies (like KYC & AML) and build complex individual validation
rules for your users.
I’d like to confirm if I got the idea. The bank and the user have their private keys. An additional signer (the bank) is being added to the user account with Set options upon creation. This way, there are no users in the system who can perform any operation without the bank permission. In order for the system to work fast, the auto-sign automated service is needed. To transfer the asset, user wallet software creates the transaction with 2 operations: transfer per se and bank fee. This transaction is being sent to the auto-sign service, which validates the fee size (off-chain) and broadcasts the transaction to the network. In the case of a malicious/invalid transaction attempt, for instance, a transaction without the bank fee, this transaction is being declined by the auto-sign service and it’s not valid. This way, every transaction in the network is controlled by the bank and contains its network fees.
Is this correct?