Skip to content

Dealbot can't auto-terminate datasets when payer is a Safe multisig #546

@SgtPooki

Description

@SgtPooki

Problem

Dealbot cannot auto-terminate PDP datasets when the payer is a Safe multisig. The repair path added in #518 (data_set_creationrepairTerminatedDataSetsynapse.storage.terminateDataSet) reverts at the simulate step with CallerNotPayerOrPayee(caller=0x0).

Why

  1. We run in session-key mode with a Safe multisig owner. apps/backend/src/common/synapse-factory.ts installs a safeReadTransport (PR fix: work around Lotus eth_call rejection for multisig accounts #419) that strips from from every eth_call/eth_estimateGas. Reason: Lotus rejects eth_call with from = contract (lotus#13470 still open).
  2. synapse-sdk WarmStorageService.terminateDataSet calls terminateService(this._client, ...) and synapse-core does simulateContract then writeContract on the same client. Simulation runs through the strip-from read client, contract sees msg.sender = 0x0, reverts.
  3. Bypassing simulation does not help today: terminateService is gated by msg.sender ∈ {payer, payee} and was not in DefaultFwssPermissions, so a session-key signed write reverts at execution.

FilOzone/synapse-sdk#796 renames the permission to TerminateServicePermission and adds signTerminateService. It does not yet wire the signed extraData into the contract call, and it does not address the strip-from interaction.

Impact

Terminated datasets at any SP we use have to be cleaned up by hand via Safe Transaction Builder, as in #545 (197 datasets, 9 multisig batches). USDFC lockup keeps accruing until we do.

Next step

Track until the auto path works end to end. We need:

Refs

Metadata

Metadata

Assignees

No one assigned

    Labels

    blockedbugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Status

    🐱 Todo

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions