filecoin-project / go-fil-markets

Shared Implementation of Storage and Retrieval Markets for Filecoin Node Implementations
Other
78 stars 59 forks source link

Demonstration: Issue with Graphsync 0.13.1 & Data Transfer 1.15.1 updates in test #706

Closed hannahhoward closed 2 years ago

hannahhoward commented 2 years ago

What

We didn't do a direct dependency update for graphsync 0.13.1 & data transfer 1.15.1 when we propogated them to Lotus. But we seem to have some kind of serialization issue with payment vouchers. These tests fail for opaque reasons, but when you dig into it, the root cause can be found here:

2022-04-25T06:21:38.139+0200 WARN dt-impl impl/receiver.go:28 error processing request from 1WRsHVY5WXbYNt: unmarshaling t.PaymentVoucher pointer: wrong type for uint64 field

Essentially, the issue we are dealing with is some kind of CBOR issue relating to this struct, specifically the *paych.SignedVoucher:

// DealPayment is a payment for an in progress retrieval deal
type DealPayment struct {
    ID             DealID
    PaymentChannel address.Address
    PaymentVoucher *paych.SignedVoucher
}

I fear that there is some subtle incompatibility in our current strategy of simple go struct -> CBOR via cbor-gen endcode -> DagCBOR.decode -> ipld.Node -> DagCBOR.encode -> CBOR -> go struct via cbor-gen decode