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 getcommand, 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 ran
ipfs refs localI 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 to
io.Readeror something similar I find no evidence showing where the blocks are temporarily stored? Mem?
- I assume whatever is fetched via
ipfs getis 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 run
ipfs dht findprovsI can see myself (the node I SSHed on) from the output. Even weirder, if I run
ipfs repo gcand confirm that the cid I want to be removed is removed and run the
ipfs dht findprovsagain, 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!