diff --git a/blocks/blockstore/blockstore.go b/blocks/blockstore/blockstore.go index 274c1ee7b4f..004a5bf1f7f 100644 --- a/blocks/blockstore/blockstore.go +++ b/blocks/blockstore/blockstore.go @@ -196,7 +196,7 @@ func (bs *blockstore) AllKeysChan(ctx context.Context) (<-chan *cid.Cid, error) } // need to convert to key.Key using key.KeyFromDsKey. - c, err := dshelp.DsKeyToCid(ds.NewKey(e.Key)) // TODO: calling NewKey isnt free + c, err := dshelp.DsKeyStringToCid(e.Key) if err != nil { log.Warningf("error parsing key from DsKey: ", err) return nil, true diff --git a/thirdparty/ds-help/key.go b/thirdparty/ds-help/key.go index 20308d7045d..1f2248a2238 100644 --- a/thirdparty/ds-help/key.go +++ b/thirdparty/ds-help/key.go @@ -26,3 +26,11 @@ func DsKeyToCid(dsKey ds.Key) (*cid.Cid, error) { } return cid.Cast(kb) } + +func DsKeyStringToCid(dsKey string) (*cid.Cid, error) { + kb, err := base32.RawStdEncoding.DecodeString(dsKey[1:]) + if err != nil { + return nil, err + } + return cid.Cast(kb) +}