-
Notifications
You must be signed in to change notification settings - Fork 18
Description
Location: backend/eth/conclude, contracts/Adjudicator.sol
Problem: When a channel has been force-update on-chain into a final state, the participants will not have fully signed states. Now, when calling ensureConcluded, it will call concludeFinal, which expects a fully-signed state and thus fails.
Idea: If a channel has been force-updated into final, the client should call conclude instead of concludeFinal, because conclude does not require signatures. The client must be able to detect whether a channel is in a final state on-chain. Usually, we indicate that by setting phase = CONCLUDED. Hence, I suggest that we change the contract such that if a state is force-updated to final, we automatically set phase = CONCLUDED.
Update: We can also apply a quick fix that doesn't require a change in the contracts. We can check whether the current on-chain phase is FORCE_EXECUTION. If this is the case, we know that the state resulted from force execution, which means we do not have the all signatures and need to call conclude instead of concludeFinal.