You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Dealbot cannot auto-terminate PDP datasets when the payer is a Safe multisig. The repair path added in #518 (data_set_creation → repairTerminatedDataSet → synapse.storage.terminateDataSet) reverts at the simulate step with CallerNotPayerOrPayee(caller=0x0).
Why
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).
synapse-sdkWarmStorageService.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.
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:
FWSS contract entry point that accepts a session-key-signed extraData for termination
synapse-sdk PR that routes terminateDataSet through sessionClient and signs with signTerminateService
Dealbot: re-mint the session key once the new permission is required
Problem
Dealbot cannot auto-terminate PDP datasets when the payer is a Safe multisig. The repair path added in #518 (
data_set_creation→repairTerminatedDataSet→synapse.storage.terminateDataSet) reverts at the simulate step withCallerNotPayerOrPayee(caller=0x0).Why
apps/backend/src/common/synapse-factory.tsinstalls asafeReadTransport(PR fix: work around Lotus eth_call rejection for multisig accounts #419) that stripsfromfrom everyeth_call/eth_estimateGas. Reason: Lotus rejectseth_callwithfrom = contract(lotus#13470 still open).synapse-sdkWarmStorageService.terminateDataSetcallsterminateService(this._client, ...)and synapse-core doessimulateContractthenwriteContracton the same client. Simulation runs through the strip-from read client, contract seesmsg.sender = 0x0, reverts.terminateServiceis gated bymsg.sender ∈ {payer, payee}and was not inDefaultFwssPermissions, so a session-key signed write reverts at execution.FilOzone/synapse-sdk#796 renames the permission to
TerminateServicePermissionand addssignTerminateService. 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:
extraDatafor terminationterminateDataSetthroughsessionClientand signs withsignTerminateServicemsg.sender = 0x0is acceptable during simulate), or relaxsafeReadTransportfor that method, or wait for fix(eth): allow eth_call and eth_estimateGas from contract and non-existent addresses filecoin-project/lotus#13470 to landRefs
data_set_creationrepair handlersafeReadTransportworkaround