I am looking for some accounting system for my project. I am developing an app where people have their own accounts, just like on any centralized exchange. Users will be able to deposit some ERC20 tokens to their address (one account = one address). Users won't be able to trade because I am not building another crypto exchange, but they will be able to send their tokens to other accounts (simple transfer). Of course, these transfers will happen offchain. Thus, I need to observe real balances on my own. I mean, if user A deposited 100 USDT tokens, there are 100 USDT on his address. But, the user can transfer let's say 20 USDT to user B. The transfer happens entirely offchain, so technically from the blockchain perspective user A still has 100 USDT. The problem is I have to build an accounting system on my own and keep all balances. If the user B also received 20 USDT from users C and D and wants to withdraw his 60 USDT, I have to make a transaction when inputs (addresses) are from users A, C and D. But it would cost a lot, maybe it would be better to take one input from the other address that has more than 60 USDT? I don't want to solve these problems on my own.
Is there any open-source solution that has the following features:
- it's not a Smart Contract (I want transfers with 0 fees)
- support for Ethereum's ERC20 tokens
- one user = one account = one address (I need unique addresses to figure out who made a deposit)
- offchain transfers
- accounting system to track user balances, which are not the same as balances on their deposit address
- withdrawals (combining tokens from addresses)
It would be great to run this service in Docker and to have a REST API with methods for checking balance, transfers, withdrawals, opening an account.