Skip to content

Remove boost assumptions that pieces are CARs #1878

Open
@Gozala

Description

@Gozala

Checklist

  • This is not a question or a support request. If you have any boost related questions, please ask in the discussion forum.
  • This is not a new feature request. If it is, please file a feature request instead.
  • This is not an enhancement request. If it is, please file a improvement suggestion instead.
  • I have searched on the issue tracker and the discussion forum, and there is no existing related issue or discussion.
  • I am running the Latest release, or the most recent RC(release canadiate) for the upcoming release or the dev branch(master), or have an issue updating to any of these.
  • I did not make any code changes to boost.

Boost component

  • boost daemon - storage providers
  • boost client
  • boost UI
  • boost data-transfer
  • boost index-provider
  • Other

Boost Version

n/a

Describe the Bug

At the moment boost assumes that first piece in the aggregate is CAR

// (willscott - oct 2023 - remove once raw byte supported): confirm file is a car file
if _, err := carv2.ReadVersion(rd); err != nil {
return nil, &dealMakingError{
retry: types.DealRetryFatal,
error: fmt.Errorf("failed to read car header: %w", err),
}
}

This is problematic for aggregators like web3.storage as doing this verification has non-negligible cost, please see storacha/w3up#1304.

Please note that wrapping a single block raw files in a CAR is impractical, it introduces (negligible) size overhead, but lot more complex processing pipeline for the aggregators and incur added operational costs.

Also please note that aggregate piece specification FRC-0058 does not require pieces to be CARs. In fact it breaks down assumption that filecoin piece is the CAR, because it's built up from segments which are in most cases CARs. Having to unpack and concatenate those CARs would defeat the purpose of aggregates.

Logging Information

n/a

Repo Steps

n/a

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions