It's a bit confusing regarding the total token supply. If 3 billion tokens are minted on BSC and there are already 200 million on ETH, doesn't this exceed the total of 3 billion? How do we ensure that no more than the total 3 billion SPS tokens are in circulation, considering some tokens are locked but not necessarily tracked by external parties?
Think about wrapped bitcoin as an example. Users send bitcoin to a "reserve wallet" on chain and receive an equivalent token on Ethereum or other chains. If you add up all the bitcoin on the bitcoin blockchain chain and all the wrapped bitcoin you can get > 21M because any wrapped bitcoin is also still on the bitcoin blockchain. Users trust the different bitcoin wrapper projects not to print more wrapped bitcoin than they have real bitcoin held on the bitcoin blockchain.
The same thing happens here. The in-game system is the source of truth for the total amount of SPS in circulation, and any wrapped SPS on other chains is held in the reserve wallet in-game. It will be necessary to trust the DAO treasurers to only send out tokens from the reserve wallet on external chains when they receive the same amount of tokens in the reserve wallet in-game and vice versa.
Regarding Terablock - it is not possible for them to "manage their own liquidity". There is a reserve account on Hive (in-game) that holds all tokens held on external chains, and there is a reserve account on external chains that holds tokens held in-game.
This is the only place that bridge liquidity can come from. A player transfers some tokens to the reserve account in-game, and then receives tokens from the reserve account on the other chain (or vice versa).
That only works, however, when the controller of the reserve accounts is running the bridge. In this case, a third party is running the bridge. So since we do not want to give them access to the entire reserve wallets, we give them a smaller amount from the reserve wallets on all chains they are bridging.
Typically, the amount of bridging in each direction is somewhat equal, so the amounts provided to them are enough and stay balanced. Sometimes, however, if many more tokens are bridged in one direction than the other, the bridge wallet on one side gets a lot of tokens and the other side can run out.
In this case the only way to resolve the situation is that Terablock sends tokens to the reserve wallet on the side that has a lot of tokens, and they are sent more tokens from the reserve wallet on the side that is low. This is how the bridge liquidity remains balanced.
Thanks Matt for the clarification 👍