-
Notifications
You must be signed in to change notification settings - Fork 22
[Review] MIP-69: Bridge Fees, MD-69: Bridge Fees #69
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
franck44
wants to merge
15
commits into
main
Choose a base branch
from
issue66/MDMIP-for-bridge-fees
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from 1 commit
Commits
Show all changes
15 commits
Select commit
Hold shift + click to select a range
7f61581
First-cut MD for bridge fees.
franck44 0e857a3
codeowner file
apenzk 0f3a599
change filename
apenzk e642d9f
minor changes
apenzk 423ae18
Add D5 and fix D4.
franck44 0e3b30a
Rename md file into README. see #66
franck44 452aff3
Formatting.
franck44 cefe87d
MIP bridge fees, see #66
franck44 a7c6e2e
Add strategies (first-cut). see #66
franck44 f41f3d9
Use change log instead of errata.
franck44 01ab3f9
old files were updated
apenzk 4e7e167
update file name
apenzk 320a70b
update appendix
apenzk 570aee0
Merge branch 'main' into issue66/MDMIP-for-bridge-fees
apenzk 9f9a0b6
set statuses
apenzk File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,99 @@ | ||
| # MD-\<number\>: Bridge fees | ||
| - **Description**: This MD provides some background on the bridge fees mechanism requirements. | ||
| - **Authors**: [Franck Cassez]([email protected]) | ||
|
|
||
|
|
||
| ## Overview | ||
|
|
||
| To use the Movement Network, users need to pay for _transaction fees_ in \$L2MOVE tokens. As the \$MOVE token is minted on Ethereum (\$L1MOVE), users need to transfer some \$L1MOVE tokens from the Ethereum network to the Movement Network (to get $L2MOVE), and back. | ||
| This asset transfer capability is provided by the Movement Network **native bridge**, which is a [lock/mint bridge](https://chain.link/education-hub/cross-chain-bridge#types-of-cross-chain-bridges) described in [MIP-58](tdc). | ||
|
|
||
| This bridge (transfer) operation requires several steps, two of which are transactions: | ||
| 1. initiate a transfer on one chain; | ||
| 2. finalize the transfer on the other chain. | ||
|
|
||
| Step (1) is performed by the user on the network (Ethereum or Movement), and step (2) is performed by the bridge operator via a _relayer_ (**ADD link to relayer MIP here**). | ||
| As a result, the operator has to cover the transaction fees for the _finalize_ step. | ||
| When transferring from Ethereum to Movement, the fees are expected to be very low so we can consider that the operator can cover them using a pool of transaction fees collected from the users on the Movement Network. | ||
| In the other direction, bridging from Movement to Ethereum, the Ethereum fees are expected to be higher, and the operator may not be able to cover them all. | ||
|
|
||
| > [!IMPORTANT] | ||
| > We need to define a mechanism to collect the Ethereum fees from the users. | ||
|
|
||
|
|
||
| > [!TIP] | ||
| > This MD describes the requirements for this fee collection mechanism when bridging from Movement Network to Ethereum. | ||
|
|
||
| ## Desiderata | ||
|
|
||
| ### D1: User bridges from Movement Network to Ethereum | ||
|
|
||
| **User Journey**: A user can initiate a _bridge_ transaction on the Movement Network. | ||
|
|
||
| **Description**: When a user initiates a bridge transaction from the Movement Network to Ethereum, the user pays the Movement Network transaction fees in $L2MOVE tokens. They request a transfer of $L2MOVE to $L1MOVE. | ||
|
|
||
| **Justification**: The user should be able to transfer their tokens from the Movement Network to Ethereum. | ||
|
|
||
| ### D2: Operator covers the Ethereum transaction fees | ||
|
|
||
| **User Journey**: Once initiated, the bridge transaction is completed by the operator of the Movement Network via a _relayer_. | ||
|
|
||
| **Description**: The operator must cover the Ethereum transaction fees for the completion step. | ||
|
|
||
| **Justification**: Only the operator can finalize the transfer on the Ethereum network. | ||
|
|
||
|
|
||
| ### D3: Operator collects the Ethereum transaction fees from the user | ||
|
|
||
| **User Journey**: The operator collects the Ethereum transaction fees from the user in \$MOVE. | ||
|
|
||
| **Description**: The operator collects the Ethereum transaction fees from the user in \$MOVE tokens. | ||
|
|
||
| **Justification**: We must collect the fees in \$MOVE tokens. | ||
| The fees cannot be collected in \$ETH as 1) we cannot ask the user to approve the relayer to transfer \$ETH to them; and 2) even if we could, the user may not have enough \$ETH and they initiated the transfer on the Movement Network. | ||
|
|
||
| ### D4: The operator does not run a deficit | ||
|
|
||
| **User Journey**: The operator pays the Ethereum transaction fees in \$ETH and charges the user for bridge fees in \$MOVE. The operator must not run a deficit | ||
|
|
||
| **Description**: The operator must ensure that the fees collected from the users are sufficient to cover the Ethereum transaction fees to complete transfers. This implies that 1) we accurately estimate the Ethereum fees in advance, and 2) we also estimate the ratio \$MOVE/\$ETH. | ||
|
|
||
| **Justification**: The operator must not run a deficit. We must decide how much the user is charged when they initiate a transfer at time $t$ from the Movement Network to Ethereum. | ||
| The counterpart complete transactions will be executed on the Ethereum at a later time $t' > t$. To cover the transaction fees, we have to estimate the Ethereum fees at $t'$, and 2) the ratio \$MOVE/\$ETH at $t'$. | ||
|
|
||
| <!-- | ||
| List out the specific desiderata. Each entry should consist of: | ||
|
|
||
| 1. Title: A concise name for the desideratum. | ||
| 2. User Journey: A one or two-sentence statement focusing on the "user" (could be a human, machine, software, etc.) and their interaction or experience. | ||
| 3. Description (optional): A more detailed explanation if needed. | ||
| 4. Justification: The reasoning behind the desideratum. Why is it necessary or desired? | ||
| 5. Recommendations (optional): Suggestions or guidance related to the desideratum. | ||
|
|
||
| Format as: | ||
|
|
||
| ### D<number>: Desideratum Title | ||
|
|
||
| **User Journey**: [user] can [action]. | ||
|
|
||
| **Description**: <More detailed explanation if needed (optional)> | ||
|
|
||
| **Justification**: <Why this is a significant or required desideratum> | ||
|
|
||
| **Recommendations**: <Any specific guidance or suggestions (optional)> | ||
|
|
||
| TODO: Remove this comment before finalizing. | ||
| --> | ||
|
|
||
| <!-- ## Errata --> | ||
| <!-- | ||
| Errata should be maintained after publication. | ||
|
|
||
| 1. **Transparency and Clarity**: An erratum acknowledges any corrections made post-publication, ensuring that readers are not misled and are always equipped with the most accurate information. | ||
|
|
||
| 2. **Accountability**: By noting errors openly, we maintain a high level of responsibility and ownership over our content. It’s an affirmation that we value precision and are ready to correct oversights. | ||
|
|
||
| Each erratum should briefly describe the discrepancy and the correction made, accompanied by a reference to the date and version of the desiderata in which the error was identified. | ||
|
|
||
| TODO: Maintain this comment. | ||
| --> | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.