feat: api: optimize ChainGetParentReceipts
Read the receipts all at once instead of fetching them one-by-one.
This commit is contained in:
parent
1cf57ffe2d
commit
eba270d1e2
@ -193,25 +193,14 @@ func (a *ChainAPI) ChainGetParentReceipts(ctx context.Context, bcid cid.Cid) ([]
|
|||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: need to get the number of messages better than this
|
receipts, err := a.Chain.ReadReceipts(ctx, b.ParentMessageReceipts)
|
||||||
pts, err := a.Chain.LoadTipSet(ctx, types.NewTipSetKey(b.Parents...))
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
cm, err := a.Chain.MessagesForTipset(ctx, pts)
|
out := make([]*types.MessageReceipt, len(receipts))
|
||||||
if err != nil {
|
for i := range receipts {
|
||||||
return nil, err
|
out[i] = &receipts[i]
|
||||||
}
|
|
||||||
|
|
||||||
var out []*types.MessageReceipt
|
|
||||||
for i := 0; i < len(cm); i++ {
|
|
||||||
r, err := a.Chain.GetParentReceipt(ctx, b, i)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
out = append(out, r)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return out, nil
|
return out, nil
|
||||||
|
Loading…
Reference in New Issue
Block a user