-
Notifications
You must be signed in to change notification settings - Fork 16
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
ICON BTP Message Fragmentaion #40
Comments
As working on BTP implementation, these are some of my thoughts about this IRC:
|
okay I checked. |
|
If this BMR decide not to send Fragmentation anymore, Will it will stop other 24 BMRs continue to Relay? |
I don't understand |
Assume, one BMR 1 needs to send 4 fragments -3, 2, 1, 0. As this continues, BMR 2 -> 25 won't be allowed to send RelayMessages anymore, as it still BMR 1 turn to RelayMessages with |
I think in that situation, BMR 1 should either 1) resume calling handleFragment() with part 1 and so on or 2) call handleRelayMessage with new RelayMessage. Anyway, BMC will still look up only BMR1, rejecting any calling from other BMRs including BMR2. But need to check if BMR1 stuck in any situation, BMC can continue to rotate to next BMR |
Doing this makes BMC become vulnerable of being controlled by BMR1. For example: If BMR1 shutdowns for 7 days, the BTP messages can't be transferred for 7 days. |
need to check if BMR1 stuck in any situation, BMC can continue to rotate to next BMR |
So, BMC will need to make a time limit like for N amount of Block Intervals, if BMR1 can't send Fragment anymore, BMC continue to next BMR? |
here is the conclusion. If RelayMessage contain BTP Message, next BMR will take turn after Delaylimit. If RelayMessage doesn't contain BTP Message and have only BlockUpdates, next BMR will take turn after rotationTerm. As a result, In the case you mentioned above, BMR2 will take turn after some time.
But as what I mentioned above, BMR would better do such recovery action to prevent unnecessary idle time. |
@dhlee-icon does it allow the next BMR can relay if BMR1 has stuck a long time? If so,i think It's pretty centralized if the system only wating for BMR1 , am i right? |
@quocle108 please refer to answer above |
I don't understand quite clearly, in this situation BMR2 will submit the Fragmentations -3, 2, 1, 0, right? |
@trmaphi As you know, BMC just take turns to next BMR. It is BMR which is in charge of sending BTP Message. As long as BMR2 send right call, BMC will accept it.Why don't you go on a test with it |
@dhlee-icon, sure, I'll make a manual test for this case. And come back with the result 👌 |
Simple Summary
If the size of the relay message containing the block proof of the SRC chain exceeds the transaction size allowed by the target chain, define and add logic to fragment the BTP message from the BMC to handle this.
Abstract
If the size of Relay Message containing Block Proof larger than Transaction size of target chain, a problem occurs. To solve this, add the logic to fragment and assemble the Relay Message.
Motivation
Block proof of the ICON chain can be verified in the BMV of the chain using only the parts related to BTP.
However, in certain chains, it is sometimes necessary to receive and verify the entire Block Proof.
At this time, the ICON Relay Sender fragments the RelayMessage and delivers it to the ICON BMC,
and it is necessary to assemble and verify it.
For this reason, there is no issue for ICON Block Proof verification on target chain,
so BTP 1.1 implements it only on the ICON BMC.
Specification
Relay
Interface
segment
relay
sendFragment
BMC
Interface
handleFragment
it is assembled and verified when the last fragmentation message arrives.
Implementation
TBD
Copyright
Copyright and related rights waived via CC0.
The text was updated successfully, but these errors were encountered: