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
A single bad deal in the parameters of a PublishStorageDeals message should not invalidate the publishing of all the valid deals in the parameters. Instead the message will succeed and publish only the valid deals
Motivation
Because to some extent deal errors are unavoidable this issue is frequently brought up by storage providers as a major issue. For example filecoin-project/specs-actors#1466. This change will make deal publishing errors less expensive for storage providers and less disruptive for clients.
Design
The simplest approach is to simply drop deals that error and publish the valid ones. The downside is that the receipt no longer contains information about the failed deal. To correct this we can add a field to the PSD return value signaling which of the input deals was successfully published. This goes from:
We use a bitfield to keep the return bytes compact. The bitfield is over parameter index. With this new field consumers of the PSDs receipt can maintain exact information on which proposals are matched to which deal ids.
If all proposals fail validation PSD will return an error.
To communicate information about how each deal errored the updated PSD implementation should include log messages communicating the reason each failed proposal is invalid.
Considerations
This should have no impact on security and no impact on incentives other than making it better to use the filecoin storage market.
Note: in the past changing the error handling or batching semantics of actor methods has not required its own fip. In this case I think this change deserves its own fip because PublishStorageDeals is not an internal state machine method but something sent by miner operators and parsed by tooling across the ecosystem.
The text was updated successfully, but these errors were encountered:
Summary
A single bad deal in the parameters of a PublishStorageDeals message should not invalidate the publishing of all the valid deals in the parameters. Instead the message will succeed and publish only the valid deals
Motivation
Because to some extent deal errors are unavoidable this issue is frequently brought up by storage providers as a major issue. For example filecoin-project/specs-actors#1466. This change will make deal publishing errors less expensive for storage providers and less disruptive for clients.
Design
The simplest approach is to simply drop deals that error and publish the valid ones. The downside is that the receipt no longer contains information about the failed deal. To correct this we can add a field to the PSD return value signaling which of the input deals was successfully published. This goes from:
to
We use a bitfield to keep the return bytes compact. The bitfield is over parameter index. With this new field consumers of the PSDs receipt can maintain exact information on which proposals are matched to which deal ids.
If all proposals fail validation PSD will return an error.
To communicate information about how each deal errored the updated PSD implementation should include log messages communicating the reason each failed proposal is invalid.
Considerations
This should have no impact on security and no impact on incentives other than making it better to use the filecoin storage market.
Note: in the past changing the error handling or batching semantics of actor methods has not required its own fip. In this case I think this change deserves its own fip because PublishStorageDeals is not an internal state machine method but something sent by miner operators and parsed by tooling across the ecosystem.
The text was updated successfully, but these errors were encountered: