Skip to content

ensureConcluded fails when channel has been progressed to final #147

@matthiasgeihs

Description

@matthiasgeihs

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions