| No | Prev State | Counterparty | Action | Post State | Notes |
|---|---|---|---|---|---|
| 1 | OPEN | OPEN | INIT | OPEN(INIT) | N/A |
| 2 | OPEN | OPEN(INIT) | INIT | OPEN(INIT) | N/A |
| 3 | OPEN(INIT) | OPEN | INIT | OPEN(INIT) | update upgrade state and increment upgrade sequence |
| 4 | OPEN(INIT) | OPEN(INIT) | INIT | OPEN(INIT) | update upgrade state and increment upgrade sequence |
| 5 | OPEN | OPEN(INIT) | TRY | FLUSHING | N/A |
| 6 | OPEN(INIT) | OPEN(INIT) | TRY | FLUSHING | N/A |
| 7 | OPEN(INIT) | FLUSHING | ACK | FLUSHING | inflight packets exist in src |
| 8 | OPEN(INIT) | FLUSHING | ACK | OPEN(ERR) | our proposal is incompatible with theirs OR timeout of counterparty proposal is reached |
| 9 | FLUSHING | FLUSHING | ACK | FLUSHING | inflight packets exist in src (No Transition) |
| 10 | FLUSHING | FLUSHING | ACK | COMPLETE | no inflight packets in src |
| 11 | FLUSHING | FLUSHING | ACK | OPEN(ERR) | our proposal is incompatible with theirs OR timeout of counterparty proposal is reached |
| 12 | FLUSHING | FLUSHING | CONFIRM | FLUSHING | inflight packets exist in src (No Transition) |
| 13 | FLUSHING | FLUSHING | CONFIRM | COMPLETE | no inflight packets in src |
| 14 | FLUSHING | FLUSHING | CONFIRM | OPEN(ERR) | timeout of counterparty proposal is reached |
| 15 | FLUSHING | COMPLETE | CONFIRM | FLUSHING | inflight packets exist in src |
| 16 | FLUSHING | COMPLETE | CONFIRM | OPEN | no inflight packets in src |
| 17 | FLUSHING | COMPLETE | CONFIRM | OPEN(ERR) | timeout of counterparty proposal is reached |
| 18 | COMPLETE | COMPLETE | OPEN | OPEN | counterparty sequence == current sequence |
| 19 | COMPLETE | OPEN | OPEN | OPEN | counterparty sequence >= current sequence |
| 20 | OPEN(INIT) | * | CANCEL | OPEN(ERR) | caller has authority |
| 21 | OPEN(INIT) | * | CANCEL | OPEN(ERR) | caller doesn't have authority && error receipt corresponding to current or future secuence exists on counterparty, and update the current |
| 22 | FLUSHING | * | CANCEL | OPEN(ERR) | caller has authority |
| 23 | FLUSHING | * | CANCEL | OPEN(ERR) | caller doesn't have authority && error receipt corresponding to current or future secuence exists on counterparty, and update the current |
| 24 | COMPLETE | * | CANCEL | OPEN(ERR) | error receipt corresponding to current secuence exists on counterparty |
| 25 | FLUSHING | OPEN | TIMEOUT | OPEN(ERR) | counterparty sequence >= current sequence && counterparty is failed to upgrade with the current proposed upgrade |
| 26 | FLUSHING | FLUSHING | TIMEOUT | OPEN(ERR) | counterparty sequence >= current sequence |
| 27 | COMPLETE | OPEN | TIMEOUT | OPEN(ERR) | counterparty sequence >= current sequence && counterparty is failed to upgrade with the current proposed upgrade |
| 28 | COMPLETE | FLUSHING | TIMEOUT | OPEN(ERR) | counterparty sequence >= current sequence |
Last active
June 17, 2024 00:23
-
-
Save bluele/08f0543cc43f6204df652d2fa9b473fd to your computer and use it in GitHub Desktop.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment