Live data from Hacker News

IPFS 0.5

blog.ipfs.io

101–110 of 145 posts

Re: IPFS 0.5

#101
post #60

Earlier quoted context omitted.

I am yet to write more about this, but one thing that bothers me with Filecoin: the economics don't add up. The price per GB stored will tend to reach an equilibrium around the commodity price - i.e, costs of disks+computers+electricity+internet. Unless I am missing something, if the price gets higher, more people would buy disks and put them online, bringing the price down. If that is true, it means that a node can…

That is actually the intent of filecoin. In perfect competition, which is the ideal state for a commodity, there is no economic profit. The reason Amazon and other companies are able to make a profit selling cloud storage is because there is not yet perfect competition. Right now if I wanted to compete with Amazon, I could buy 2 or 3 petabytes of storage space and some bandwidth. But nobody would trust me not to lose…

That's the economic flaw in all of this - Amazon have economies of scale and access to cheap power and network connectivity and that means smaller competitors will be locked out of the market.

You're not going to be running a node on your spare capacity that brings in more than your costs, in fact unless you're a datacentre operator, you're going to be making a loss.

In the end it favours big centralised services, and IPFS (if it ever takes off) just becomes a rival API to S3.

Re: IPFS 0.5

#102
post #63

Earlier quoted context omitted.

I am yet to write more about this, but one thing that bothers me with Filecoin: the economics don't add up. The price per GB stored will tend to reach an equilibrium around the commodity price - i.e, costs of disks+computers+electricity+internet. Unless I am missing something, if the price gets higher, more people would buy disks and put them online, bringing the price down. If that is true, it means that a node can…

If there's enough enthusiasts using spare disks at home to offer enough disk capacity for everyone, then that means Filecoin hosting will be available cheaper than cloud hosts. If all that capacity gets used up, then supply and demand will cause the price to go up until more people add capacity. If the price hits the price of cloud hosts, then people will just run tons of Filecoin nodes on cloud hosts, so the price o…

> If there's enough enthusiasts using spare disks at home to offer enough disk capacity for everyone, then that means Filecoin hosting will be available cheaper than cloud hosts.

Only if these enthusiasts are willing to take a loss on power.

> If the price hits the price of cloud hosts, then people will just run tons of Filecoin nodes on cloud hosts

Or the cloud hosts themselves will enter the market. The upper bound on the market will be their costs, which will always be lower than the costs of enthusiasts using spare disks at home.

Re: IPFS 0.5

#103

Earlier quoted context omitted.

The release notes contain a pretty extensive list of what APIs have changed. The path to upgrade the dependencies is probably to run `go get -u ` for the direct dependencies you're including, and then fixing errors that pop up from doing so.

Depends what exactly you are importing and for what. I suggest you ask in the forums and post a link to your project. go get -u is dangerous as it updates all subdependencies used to latest. Usually take go-ipfs's go.mod as a guide on what versions to use.

>go get -u is dangerous as it updates all subdependencies used to latest

Yes, this is the problem I initially had; I would end up with a host of incompatible deps (leading me to wonder what the point of go.mod even was ... but I digress...).

Sounds like this is going to be one of those super fun dependency hack-jobs :C

Ah well, this is the price to pay for playing with beta software!

Re: IPFS 0.5

#104
post #62

Can someone provide an example of a service that ipfs enables that can’t be provided on the regular web?

I'll try.

You visit a site, get the index and it references two more files with two URLs:

"./jquery-3.5.0.min.js" "https://cdn.com/4kVideo.mkv"

Your browsers get's those files, the first from the site, the other from a CDN. Your site scales according to the band-width that "cdn.com" is able to provide to you.

In IPFS, you visit a site, get the index and it references two more files with two URLS:

"ipfs://QmWYudWcbX6skKub5wg1Ga3LFh3vbW2k7PWfdqHtDYvAdp" (for fun I used the right address here) "ipfs://QmT9qk3CRYbFDWpDFYeAv8T8H1gnongwKhh5J68NLkLir6"

Your browser gets those files, the first is found in about a billion places. A lot of sites use jQuery so almost everyone has the file's content available, and because you'd already had visited another site with that content-hash, IPFS knew it could just use that one (a perfect safe cross-domain cache-hit). The second is found in less places, but it follows the same logic as a torrent, with data coming from both a IPFS cdn the site uses, along with a few people who've also seen the video, so it loads faster from a few sources than one.

Hope this makes sense. IPFS is really just a decent way to implement websites like a torrent and enjoy the benefits that brings. It's not grand or out of this world, just decent space-saving data-management.

Re: IPFS 0.5

#105

Hold up... You can pull docker images from ipfs? How? And do IPNS entries finally last more than 30 seconds? It would be nice to not have to constantly keep a node up just to have an IPNS entry.

Self-plug and an experiment only, but here's the blog of how I wrote a Storage Driver for Docker: https://blog.bonner.is/docker-registry-for-ipfs/

Re: IPFS 0.5

#106
I think IPFS is a great technology, and the protocol appears to be fairly well designed but to be frank, I tried to use go-ipfs and it is a very junky implementation. There are numerous issues that show an overall lack of good quality standards in the codebase.

- Pin management is far to simple for any real use case.

- GC is a complete GC on an arbitrary threshold.

- API is based on the CLI and really weird (ex GET /api/v0/cp?arg={src}&arg={dest}, why don't the parameters have names? Why is it GET?)

- They don't prove a way to upload a directory with references to existing IPFS objects, so you need to manually encode the data.

- The manual encoding uses go-style names, they seem to have let their language choice leak into the protocol.

- Lots of minor issues, such as the API implementing block size limits by simply cutting off the input data at the size limit, this is even before encoding it into the format where the size limit should be calculated and cause data corruption in some cases.

- Their one abstract API for creating directories (MFS) has a number of issues.

  - It is incredibly slow for some reason.

  - It kindof but not really automatically pins all content recursively references.
There are other weird choicess such as their directory sharding using hashing. It isn't clear to me which use case this improves over a btree but someone probably thought it sounded cooler. Additionally the sharding appears to be a single layer of sharding which means that it still has a size limit (just larger).

I ended up sinking a ton of time into https://gitlab.com/kevincox/archlinux-ipfs-mirror/ and in the end the number of small quirks were incredibly frustrating. I might go back and implement their hash-sharding logic to get the mirror working again but at this point I don't really want to interact with go-ipfs again.

I thought it would be an interesting project to get involved in, and I have a lot of expertise that would be valuable however it appears that it is all a bit of a mess which is a real shame.

Maybe with more success it can be re-written in cleaner fashion, as I said most of the issues are with the implementation not the protocol so there is definitely hope. I do honestly wish all of the success to the project.

Re: IPFS 0.5

#107

Good progress. I looked at IPFS a few months ago from the point of view of fitting a decentralized file store. The decentralized requirement came primarily from the point of view wanting to fit this in a broader product that is all about decentralized for various reasons. Key problems in this space: - decentralized is something techies obsess about but that has as of yet no business value whatsoever. Customers don't…

> decentralized is something techies obsess about but that has as of yet no business value whatsoever.

I don't really understand that point. If it works, then it has the business value of saving you all running server and maintenance costs. For most larger businesses these costs may be insignificant and easily recovered, but for small businesses with a lot of customers they can make a huge difference. For example, I'm looking into P2P options for implementing a decentralized message forum in a game-like emulator and it would make no sense to even implement this feature with constant running costs for server space.

Now getting the decentralized data management to work reliably out-of-the-box from behind various firewalls and different platforms, that's the big problem. So far, none of the libraries I've seen are very easy to use, some require a difficult installation and configuration or you need to your own STUN server or gateway, which kind of defeats the purpose.

Re: IPFS 0.5

#108

Earlier quoted context omitted.

Just a minor example. https://github.com/awslabs/aws-lambda-rust-runtime/blob/mast... Could you explain to a junior what Box does and how should a person who is starting to learn Rust come up with something like this? Second minor example. I have a configuration string like let's say timeout for a certain type of connection. What is the recommended way to have that as a string that is accessible to all functions with…

I get what you're trying to say, but disagree with the examples. If you want to prototype and start a project, you don't care what exactly that box type means. You can use it and things will not break. It's part of that particular boilerplate. It's like people using `std::string` and not necessarily caring for years what `template , class Allocator = std::allocator > class basic_string;` means or does. For the second…

>> If you want to prototype and start a project, you don't care what exactly that box type means.

I disagree. The whole point is to get to know a language. What do you how many things can you have in your code that you do not understand? Now you put it in production and it breaks. Who is going to fix it? I do not have a particulary positive experience with Rust on Stackoverflow. As a tech decision maker I put Rust in the risky category because it is hard to understand and many of the language features are implemented in a way that it is not easy to work with. Don't get me wrong, I like what Rust could bring to the table but with this upfront complexity it is not worth it. I know many companies who will be ok to take on Rust and they are ok with the way things are.

Your answer is funny to the second one. From SO:

Non-answer answer

Avoid global state in general. Instead, construct the object somewhere early (perhaps in main), then pass mutable references to that object into the places that need it. This will usually make your code easier to reason about and doesn't require as much bending over backwards.

Why would I pass in a mutable reference when all I need is a global static immutable value? You see this get ugly very quickly. We went with the lazy_static! way, but still. I would rather avoid these things entirely.

Re: IPFS 0.5

#109
post #46

IPFS is really just a mix of a torrent tracker with a torrent client, but once IPFS VMs start paying for themselves, people will sign-up in masses. I guess that's what Filecoin is about. Edit: The way I see filecoin working is anyone can post a reward for a file and once the file is provided, the reward is paid. In other words, it's bit like a brokerage that connects downloaders with uploaders. The difficultly is tha…

>> but once IPFS VMs start paying for themselves How does that work in real life?

This looks a lot like the common fallacy (in blockchain circles) that anything that is _possible_ is also _inevitable_. There is no reason at all why IPFS VMs would be profitable in the long term, especially since VM hosters are not stupid and would just dedicate their capacity to IPFS themselves, cutting out the middle man.

Of course, in the shorter term there are many different scenarios where the market is slower to adjust. The STORJ network has been subsidizing their node operators with VC money for example, leading to some excellent unit economics for the early adopters.

Re: IPFS 0.5

#110

I wish they hadn't picked go. Go isn't a bad language really, but it's a huge pain to integrate a go library into an app written in another language.

Go can handle 100k goroutines (green threads) without a sweat. This is useful for p2p systems in which you are connected to thousands of peers multiplexing several p2p protocols with each concurrently. You want to be able to switch threads as fast as possible. The concurrency model is a bit easier to reason about too. It would be good to see how Rust and others do. Other languages excel at other things (i.e. embedded…

I'm not sure if that applies here, but Discord switched a portion of their backend from Go to Rust because of some performance issues.

https://blog.discord.com/why-discord-is-switching-from-go-to...

Post reply on HN