-
Notifications
You must be signed in to change notification settings - Fork 49
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
Quick draft of router pallet using moonbeam ethereum_xcm.transact and LCMP ethereum.message_transact #1090
Comments
The route_id for transaction support, should be chain + origin_contract_address + message/route_nonce_in_contract. If the route delivered/failed/success to forward, it should be recorded, then transactional roll back in application level may work. If the message on target chain delivered, it should be recorded, if it successfully get dispatch, it can be recored. If the route failed or the message_on_target_chain failed(how to know this in target chain?*), the message can roll back. Q: How to know a message failed on target chain? A: The message is delivered but not recorded. |
Moonbeam has forked polkadot and modified the config of xcm executor, CallDispatcher trait commit |
If the xcm messages are ordered inside the queue, then a lost message can be proven lost by subsequent unlost messages. |
The xcm messages are sent and processed in order. @xiaoch05
|
encoded call:
|
We can use the above XCM
|
So we also need a sovereign account on crab smart chain to receive the fee token CRAB, and pay the xcm fee from this account to the moonbase's sovereign account on parachain. |
When we receive the XCM message from moonriver, the first instruction is |
Store routing failure messages and process them |
A.
LCMP(crab_contract_origin, crab_parachain_router_pallet.route(moonbase_chain, ethereum_xcm.transact(,...) ))
crab_parachain_router_pallet
route(origin, chain, call)
{
forward & send xcm message to chain using XCM_Instruction(origin, ?, call)
}
B.
XCM(Instruction::Transact(moonbase_contract_origin, ?, crab_parachain_router_pallet.route(crab_chain, ethereum.message_transact(....)) ))
crab_parachain_router_pallet
route(origin, chain, call)
{
forward & send LCMP message to crab chain using LCMP call ethereum.message_transact(....)
}
forwarded origin should be compatible/derived or the same?
The text was updated successfully, but these errors were encountered: