rooch-network / rooch

VApp Container with Move Language
https://rooch.network
Apache License 2.0
128 stars 54 forks source link

[Framework] multi-chain Token to Rooch Token mapping #626

Open baichuan3 opened 9 months ago

baichuan3 commented 9 months ago

part of https://github.com/rooch-network/rooch/issues/13

Question A There are two options for mapping Tokens from different chains: Option 1, direct mapping, similar to ERC20 Token, needs to deploy the contract every time; Option 2, using generic mapping, each time it need to call Token register, such as ,

Question B Another question , for asset tokens of different chains, after mapping to Rooch, there are two options: Option 1, the same assets on different chains are mapped to the same asset, such as WBTC on Ethereum, and the original asset BTC on the Bitcioin chain, after mapping to Rooch, they are all BTC Option 2, the same assets on different chains are still mapped to different assets, such as WBTC on Ethereum, and the native asset BTC on the Bitcioin chain, after being mapped to Rooch, they are WBTC and BTC respectively

illustrate: Option 1 can improve asset utilization, but assets on different chains are in the same pool. If a bridge on a certain chain has a malicious attack or vulnerability, the security risk is relatively high; option 2 is just the opposite

In particular, for multiple encapsulations of the same asset on the same chain, such as ETH and WETH on Ethereum, the mapping uses option2 by default.

baichuan3 commented 9 months ago

for question A, I prefer option 2, and for question B, I prefer option 1. What's your choice? @jolestar @templexxx @Mine77

jolestar commented 9 months ago

A: I prefer option 2, but the generic type also requires contract deployment. B: I prefer option 2; the WBTC and BTC from Bitcoin are not the same asset; they have different security and risks.

templexxx commented 9 months ago

for question A, I prefer option 2, and for question B, I prefer option 1. What's your choice? @jolestar @templexxx @Mine77

@baichuan3

For Question B, I'm inclined to choose option 2. The rationale is straightforward, as they are disparate assets.

Pertaining to Question A, I am perplexed as to why option 2 doesn't rely on contracts? Messages originating from Layer1 necessitate passage through contracts and are decoded on Layer2 by the corresponding target's contract.

baichuan3 commented 9 months ago

But there is a special case. For stablecoins, if the stablecoins of different chains are mapped into different stablecoins on Rooch, the liquidity will be greatly reduced. Maybe it is only specially treated for stablecoins and mapped into the same asset? @jolestar @templexxx @templexxx @Mine77

jolestar commented 9 months ago

We can wrap a new stablecoin that backends with multi stablecoins if we need a unified stablecoin.

templexxx commented 9 months ago

We can wrap a new stablecoin that backends with multi stablecoins if we need a unified stablecoin.

Is this a routine treatment? Any cases? @jolestar

jolestar commented 9 months ago

It is a DeFi solution, like the Curve.

baichuan3 commented 9 months ago

Conclusion: 1, Token Mapping

2, Parse Ethereum Transaction, convert Token-related operations into Rooch operations, and execute them in Rooch.

3, Gas Token: GasCoin

jolestar commented 6 months ago

Dependency

  1. 1003

  2. 1002