Hi fam,
I’ve been extensively testing ipfs and thoroughly reading the ipfs code and I’m seeing the following issues and wondering why:
- upon running an
ipfs get
command, theoretically, when there’s no blocks stored locally related to the CID the bitswap protocol should be used so should be the datastore service (or something similar) that would cache the result; i.e., putting the fetched blocks to the local datastore. However, there’s nowhere I could locate the code where the datastore service is used. Wierdly, if I ranipfs refs local
I could actually grep the cid which I assumed came from the datastore. Clearly my assumption doesn’t stand but what is really going on after you get the blocks resolved from the cid you provide? Other than seeing the blocks are copied toio.Reader
or something similar I find no evidence showing where the blocks are temporarily stored? Mem? - I assume whatever is fetched via
ipfs get
is not pinned by default; meanwhile, I don’t find any evidence showing the cid is provided (which I believe is a process that writes the peerID-CID pair to the dht). However, if I runipfs dht findprovs
I can see myself (the node I SSHed on) from the output. Even weirder, if I runipfs repo gc
and confirm that the cid I want to be removed is removed and run theipfs dht findprovs
again, I can still see myself providing the cid that just got removed!!! Is this a bug? Or where should I look up the code and find the implementation?
My current IPFS version is 0.7.0 and my ipfs codebase (at least the go-ipfs
repo) is up to date. Essentially, I don’t believe there has been tons of new changes added since the 0.7.0 release.
Please help me out, any advice and answer is appreciated!