Symbiosis Mint-Burn Process
Symbiosis core smart contracts: Portal/Synthesis contracts and mint/burn processes.
The Symbiosis protocol mints and burns sTokens during cross-chain operations performed via the Symbiosis protocol. The Portal and Synthesis contracts are the main smart contracts of the mint-burnt process:
- Whenever Portal locks tokens, Synthesis mints the same amount of sTokens (Scheme 1),
- Whenever Synthesis burns sTokens, Portal on the corresponding blockchain releases the same amount of tokens (Scheme 2) on the corresponding blockchain.
The Symbiosis protocol works with a chosen stablecoin* on every supported blockchain; for example, it's USDC on Ethereum and BUSD on the BNB chain. The sToken for USDC is sUSDC, and the sToken for BUSD is sBUSD. The Symbiosis protocol also works with WETH for some blockchains.
Schemes 1 and 2 show minting and burning routines.
Scheme 1. The minting routine of the Symbiosis protocol.
Scheme 2. The burning routine of the Symbiosis protocol.
Steps 1-7 shown in Schemes 1 and 2 are a part of each cross-chain operation. Please refer to Symbiosis Routing Contracts to see how the core smart contracts interact with each other during cross-chain operations performed via the Symbiosis protocol.
About relayers. The Symbiosis relayers network is a P2P network with built-in crypto-economic incentivization mechanisms. The relayers network is an off-chain part of the Symbiosis protocol. The main purpose of the network is a fast, accurate, and secure transfer of information about cross-chain operations performed via the Symbiosis protocol. Please refer to Relayers network for more information.
SIS is the token of the Symbiosis protocol. Token holders can bridge their SIS tokens from Ethereum to the BNB chain via the Symbiosis protocol: Schemes 3, 4 below.
Scheme 3. Bridging SIS tokens to the BNB chain.
Scheme 4. Burning SIS BNB tokens to get SIS tokens on Ethereum.
Any cross-chain operation in Symbiosis protocol V2 consists of two or three transactions.
If S-chain isn't the source or destination blockchain of a cross-chain operation, we will have three transactions:
- 1.The first transaction (signed and sent by a user) is on the source blockchain,
- 2.The second transaction (signed and sent by relayers) is on S-chain, and
- 3.The third transaction (signed and sent by relayers) is on the destination blockchain.
If S-chain is the source or destination blockchain of a cross-chain operation, we will have two transactions:
- 1.The first transaction (signed and sent by a user) is on the source blockchain, and
- 2.The second transaction (signed and sent by relayers) is on S-chain.
- 1.The first transaction (signed and sent by a user) is on S-chain, and
- 2.The second transaction (signed and sent by relayers) is on the destination blockchain.
Each cross-chain operation has its unique ID that is calculated using the calldata of the cross-chain operation. The Portal and Synthesis contracts check the ID of each processing cross-chain operation and keep records of executed ones.
Let's consider an sToken minting operation as an example. Synthesis mints tokens and records the operation within the same transaction. If the transaction is completed and the tokens get minted, then there is a record of the operation, and the contract will not issue tokens a second time for the transaction with the same ID. If the transaction gets failed, no sTokens will be minted, and no information about the operation will be recorded.
Since every cross-chain operation is a sequence of transactions that should be executed one by one on different blockchains, there is always a chance that something may go wrong. For instance, the time set for a cross-chain operation is over or exchanging rates in one of DEXes changes, and the transaction cannot be executed due to non-acceptable slippage change.
An emergency means that the transaction on the source blockchain has been processed, but there is no transaction on the destination blockchain, or that transaction is failed. If an emergency occurs, the entire cross-chain operation gets stuck.