Assessment reports>Filecoin Services Payments>Threat Model>settleTerminatedRailWithoutValidation

Function: settleTerminatedRailWithoutValidation(uint256 railId)

Settles payments for a terminated rail without validation. This may only be called by the payee and after the terminated rail's max settlement epoch has passed. It's an escape-hatch to unblock payments in an otherwise stuck rail (e.g., due to a buggy validator contract) and it always pays in full.

Can only be called by the rail client, i.e. rails[railId].from == msg.sender.

Inputs

  • railId

    • Control: Fully controlled by the caller.

    • Constraints: Must be a valid, active rail that is also terminated (has endEpoch > 0).

    • Impact: The ID of the rail to settle.

Branches and code coverage

Intended branches

  • Called on active, terminated rail, by its client, after the maximum settlement epoch.

Negative behavior

  • Called by a non-client.

  • Called on a non-active rail.

  • Called on a non-terminated rail.

  • Called before the maximum settlement epoch.

Function call analysis

  • Payments.settleTerminatedRailWithoutValidation->settleRailInternal

    • Same as the external function settleRail(), but with skipValidation == true.

Zellic © 2025Back to top ↑