ipfs / go-graphsync

Initial Implementation Of GraphSync Wire Protocol
Other
100 stars 38 forks source link

fix: partial revert of 1be7c1a20; make traverser process identity CIDs #442

Closed rvagg closed 1 year ago

rvagg commented 1 year ago

It turns out that there are obscure cases where this matters, so we can't as easily just ignore identity CIDs. Specifically, classic online Filecoin deals that rely on Graphsync and require identity CIDs be stored in the CARv1 that is used to calculate CommP must see the identity CID pass through the LinkSystem.

Unfortunately, the easiest way to deal with this is to send them over the wire as if they are a normal block; which happens to be the "safe" backward compatible way too. Less easy way would be to simulate it on both ends and not send them, but we'll take the easy path for now.

Extension of tests in here to make sure that the full DAG is transferred even in this case. Blockstore must have identity CIDs in them, or be able to respond properly to them.