chore: *.ipfs.io → *.ipfs.tech

This commit is contained in:
Marcin Rataj
2022-08-16 00:28:05 +02:00
parent e6772574e6
commit 3964201acc
315 changed files with 1052 additions and 1052 deletions
+3 -3
View File
@@ -23,11 +23,11 @@ This post kicks off the official IPFS (InterPlanetary File System) Blog. This is
You can't _yet_ "follow" the blog with ipfs, but we're working on it and expect to have it working soon. For now, you can follow one of these ways:
- HTTP: https://blog.ipfs.io
- HTTP: https://blog.ipfs.tech
- Git: `git clone https://github.com/ipfs/blog`
- GitHub: click watch at https://github.com/ipfs/blog
- RSS: [follow RSS Feed](https://blog.ipfs.io/index.xml)
- IPFS: https://gateway.ipfs.io/ipns/blog.ipfs.io
- RSS: [follow RSS Feed](https://blog.ipfs.tech/index.xml)
- IPFS: https://gateway.ipfs.io/ipns/blog.ipfs.tech
Don't miss any InterPlanetary updates!
+2 -2
View File
@@ -62,8 +62,8 @@ After the release, you can:
Please note that installation with `go get` does not work at this time.
We are experimenting with [gx, the new IPFS-based package manager][gx].
[ipfs-update]: http://dist.ipfs.io/#ipfs-update
[ipfs-binary]: http://dist.ipfs.io/#go-ipfs
[ipfs-update]: http://dist.ipfs.tech/#ipfs-update
[ipfs-binary]: http://dist.ipfs.tech/#go-ipfs
[ipfs-github]: https://github.com/ipfs/go-ipfs
[ipfs-source]: https://github.com/ipfs/go-ipfs#build-from-source
[gx]: https://github.com/whyrusleeping/gx
+2 -2
View File
@@ -11,7 +11,7 @@ tags:
- go-ipfs
---
[go-ipfs 0.4.0](http://dist.ipfs.io/#go-ipfs) has been released! Among the many changes are a revamped implementation of the IPFS communication protocols, increased performance, improvements to IPNS (the Interplanetary Naming System), many bugfixes, and lots of new features to make IPFS even more powerful.
[go-ipfs 0.4.0](http://dist.ipfs.tech/#go-ipfs) has been released! Among the many changes are a revamped implementation of the IPFS communication protocols, increased performance, improvements to IPNS (the Interplanetary Naming System), many bugfixes, and lots of new features to make IPFS even more powerful.
![0.4.0](../assets/005-ipfs-0-4-0-released-fireworks.jpg)
@@ -92,7 +92,7 @@ This release also includes performance and usability improvements to IPNS, which
## How to upgrade
Depending on how you initially installed IPFS, there are several ways to upgrade. If you installed IPFS with a pre-built binary, you can either head over to [dist.ipfs.io](http://dist.ipfs.io/#go-ipfs) and grab the latest version from there. Or alternatively, from the same page you can grab the `ipfs-update` binary, and use it to perform the upgrade for you. If you installed from source, you can simply update your git repo to the `v0.4.0` tag, run `make toolkit_upgrade && make install`.
Depending on how you initially installed IPFS, there are several ways to upgrade. If you installed IPFS with a pre-built binary, you can either head over to [dist.ipfs.tech](http://dist.ipfs.tech/#go-ipfs) and grab the latest version from there. Or alternatively, from the same page you can grab the `ipfs-update` binary, and use it to perform the upgrade for you. If you installed from source, you can simply update your git repo to the `v0.4.0` tag, run `make toolkit_upgrade && make install`.
Please upgrade your IPFS nodes as soon as you can, so you can take advantage of the improvements!
+6 -6
View File
@@ -6,17 +6,17 @@ description:
author: Richard Littauer
---
[![](../assets/006-distributions-screenshot.png)](https://dist.ipfs.io/)
[![](../assets/006-distributions-screenshot.png)](https://dist.ipfs.tech/)
[dist.ipfs.io](https://dist.ipfs.io/) is the new distributions page for IPFS. This is the new one-stop-shop for finding and downloading all official binaries that the IPFS Team produces.
[dist.ipfs.tech](https://dist.ipfs.tech/) is the new distributions page for IPFS. This is the new one-stop-shop for finding and downloading all official binaries that the IPFS Team produces.
## The IPFS Distributions Website
The distributions website itself is served by, hosted, and distributed through IPFS. The website assets and all of the binaries form one large IPFS content graph. This means that you can view and use this website through any IPFS node, even your own local ipfs node. All you need to do is to run an IPFS daemon and direct your browser to http://localhost:8080/ipns/dist.ipfs.io. Of course, you'll need to be online and connected to the internet, so you can find other ipfs nodes that have this website.
The distributions website itself is served by, hosted, and distributed through IPFS. The website assets and all of the binaries form one large IPFS content graph. This means that you can view and use this website through any IPFS node, even your own local ipfs node. All you need to do is to run an IPFS daemon and direct your browser to http://localhost:8080/ipns/dist.ipfs.tech. Of course, you'll need to be online and connected to the internet, so you can find other ipfs nodes that have this website.
### Download Deduplication
If you download files from dist.ipfs.io using your local IPFS node, future downloads **may be** much faster. When you click to download a file, your browser will ask to download it from your local IPFS node. In turn, your IPFS node will fetch the relevant content from other nodes in the network, and return it to your browser. Your browser will place the file in your Downloads folder, or wherever you directed it to.
If you download files from dist.ipfs.tech using your local IPFS node, future downloads **may be** much faster. When you click to download a file, your browser will ask to download it from your local IPFS node. In turn, your IPFS node will fetch the relevant content from other nodes in the network, and return it to your browser. Your browser will place the file in your Downloads folder, or wherever you directed it to.
However, once your local IPFS node has fetched the content, it will cache it locally for some time. This makes subsequent downloads of the exact same content instantaneous! Your browser asks the IPFS node for the content; the node already has it and simply returns it, without ever having to connect to other nodes. This also means that if other IPFS nodes in your local area network try to download the file, they may be able to fetch it from your node. Once you have the content locally, this can even work while disconnected from the internet!
@@ -34,9 +34,9 @@ Every distribution has a section, which includes:
- A `Changelog`, a link to a summary of all version changes;
- An `All Versions`, a link to view and download previous versions.
The `All Versions` link on each distribution shows directory listings for all the available versions, and a `versions` file ([example](https://dist.ipfs.io/go-ipfs/versions)). This file can be used by tools, such as [ipfs-update](https://dist.ipfs.io/#ipfs-update), to find all the available versions and download the latest.
The `All Versions` link on each distribution shows directory listings for all the available versions, and a `versions` file ([example](https://dist.ipfs.tech/go-ipfs/versions)). This file can be used by tools, such as [ipfs-update](https://dist.ipfs.tech/#ipfs-update), to find all the available versions and download the latest.
The directory listing of each version ([example](https://dist.ipfs.io/go-ipfs/v0.3.11)) has all the platform archives (`.zip` or `.tar.gz`), a `README.md` and a `dist.json` which describe the release for humans and machines. It is meant to be easily consumed and used by tools.
The directory listing of each version ([example](https://dist.ipfs.tech/go-ipfs/v0.3.11)) has all the platform archives (`.zip` or `.tar.gz`), a `README.md` and a `dist.json` which describe the release for humans and machines. It is meant to be easily consumed and used by tools.
The site is also used directly by [`ipfs-update`](https://github.com/ipfs/ipfs-update) to update IPFS.
+4 -4
View File
@@ -21,9 +21,9 @@ We'll be **shutting down** the v03x bootstrappers and gateways on **Thursday, Ju
- The bootstrap nodes configured by default will no longer allow you to connect.
- The public HTTP-to-IPFS gateway at [ipfs.io][gw] will no longer be able to access data from v03x networks.
We ask you to update to the latest 0.4.x version, available through [dist.ipfs.io][dist]. If you can't update just yet, you can still connect your v03x nodes to each other by using the `ipfs bootstrap` or `ipfs swarm connect` commands.
We ask you to update to the latest 0.4.x version, available through [dist.ipfs.tech][dist]. If you can't update just yet, you can still connect your v03x nodes to each other by using the `ipfs bootstrap` or `ipfs swarm connect` commands.
[migration]: https://ipfs.io/blog/9-v04x-migration/
[v04x]: https://ipfs.io/blog/14-ipfs-0-4-0-released/
[dist]: https://dist.ipfs.io
[migration]: https://blog.ipfs.tech/9-v04x-migration/
[v04x]: https://blog.ipfs.tech/14-ipfs-0-4-0-released/
[dist]: https://dist.ipfs.tech
[gw]: https://ipfs.io
+2 -2
View File
@@ -8,7 +8,7 @@ tags:
- go-ipfs
---
[go-ipfs 0.4.3](https://dist.ipfs.io/#go-ipfs) has been released today,
[go-ipfs 0.4.3](https://dist.ipfs.tech/#go-ipfs) has been released today,
and we're incredibly proud as it's the fastest and most stable IPFS ever.
Give it a try as soon as you can, we're sure you'll like it as much as we do.
@@ -36,7 +36,7 @@ And plenty of bug fixes as well as improvements to documentation and test covera
Depending on how you initially installed IPFS, there are several ways to
upgrade. If you installed IPFS with a pre-built binary, you can either head over
to [dist.ipfs.io](https://dist.ipfs.io/#go-ipfs) and grab the latest version
to [dist.ipfs.tech](https://dist.ipfs.tech/#go-ipfs) and grab the latest version
from there. Or alternatively, from the same page you can grab the `ipfs-update`
binary, and use it to perform the upgrade for you. If you installed from
source, you can simply run `git checkout v0.4.3`, then run `make install`.
+3 -3
View File
@@ -9,7 +9,7 @@ tags:
- 'go-ipfs'
---
[go-ipfs 0.4.4](https://dist.ipfs.io/#go-ipfs) has been released today, including an important hotfix for a bug we discovered in how _pinning_ works. If you had a large number of pins, new pins would overwrite existing pins. Apart from the hotfix, this release is equal to the previous release 0.4.3.
[go-ipfs 0.4.4](https://dist.ipfs.tech/#go-ipfs) has been released today, including an important hotfix for a bug we discovered in how _pinning_ works. If you had a large number of pins, new pins would overwrite existing pins. Apart from the hotfix, this release is equal to the previous release 0.4.3.
- [How pinning works](#how-pinning-works)
- [The bug](#the-bug)
@@ -44,8 +44,8 @@ For now, don't run `ipfs repo gc` on sensitive data that is not otherwise backed
## Find out if you're affected
If you think you have experienced this issue and have _not_ run a garbage collection, you can still find the 'lost' pins. We have written a new tool called 'ipfs-see-all' that allows you to try and recover any old pins that are still in your local repo. The tool is available on [our distributions page](https://dist.ipfs.io), or, if you prefer building from source, head over to [the GitHub repo](https://github.com/whyrusleeping/ipfs-see-all). Once you have the tool, invoke it as `ipfs-see-all lost-pins` and it will scan for and print out every pin object that is not actually pinned in your pinset. Note that this may contain anything you have manually unpinned.
If you think you have experienced this issue and have _not_ run a garbage collection, you can still find the 'lost' pins. We have written a new tool called 'ipfs-see-all' that allows you to try and recover any old pins that are still in your local repo. The tool is available on [our distributions page](https://dist.ipfs.tech), or, if you prefer building from source, head over to [the GitHub repo](https://github.com/whyrusleeping/ipfs-see-all). Once you have the tool, invoke it as `ipfs-see-all lost-pins` and it will scan for and print out every pin object that is not actually pinned in your pinset. Note that this may contain anything you have manually unpinned.
## How to upgrade
Depending on how you initially installed IPFS, there are several ways to upgrade. If you installed IPFS with a pre-built binary, you can head over to [dist.ipfs.io](https://dist.ipfs.io/#go-ipfs) and grab the latest version from there. Or alternatively, from the same page you can grab the `ipfs-update` binary, and use it to perform the upgrade for you. If you installed from source, you can simply run `git checkout v0.4.4`, then run `make install`.
Depending on how you initially installed IPFS, there are several ways to upgrade. If you installed IPFS with a pre-built binary, you can head over to [dist.ipfs.tech](https://dist.ipfs.tech/#go-ipfs) and grab the latest version from there. Or alternatively, from the same page you can grab the `ipfs-update` binary, and use it to perform the upgrade for you. If you installed from source, you can simply run `git checkout v0.4.4`, then run `make install`.
+1 -1
View File
@@ -24,7 +24,7 @@ First, let's get the packages we'll need to install IPFS:
Now you can download the latest build of IPFS from the [install page](https://ipfs.io/docs/install/). We'll be using Linux x86_64:
```sh
> wget https://dist.ipfs.io/go-ipfs/v0.4.14/go-ipfs_v0.4.14_linux-amd64.tar.gz
> wget https://dist.ipfs.tech/go-ipfs/v0.4.14/go-ipfs_v0.4.14_linux-amd64.tar.gz
> tar xfv go-ipfs_v0.4.14_linux-amd64.tar.gz
# Move it into your bin. This requires root permissions.
> sudo cp go-ipfs/ipfs /usr/local/bin/
+1 -1
View File
@@ -52,7 +52,7 @@ This took us more time than what we had initially expected, however, now it is a
If you would like to know more about the issue we faced, you can find more info here: ["Stream Muxing issues between go-ipfs and js-ipfs are a thing of the past"](https://github.com/ipfs/js-ipfs/issues/721)
**Note:** Interop is only fully available with go-ipfs 0.4.7 and onwards, if you haven't updated yet, please do so by visiting http://dist.ipfs.io/.
**Note:** Interop is only fully available with go-ipfs 0.4.7 and onwards, if you haven't updated yet, please do so by visiting http://dist.ipfs.tech/.
### 🌍 js-ipfs will now also bootstrap with bootstrap nodes as well
+3 -3
View File
@@ -101,7 +101,7 @@ This link points to a specific snapshot. It will always point to that specific d
For your convenience we have set up a domain name and DNS entry at [tr.wikipedia-on-ipfs.org](http://tr.wikipedia-on-ipfs.org) that will resolve to the current IPFS snapshot.
If you are not able to access `ipfs.io`, or `wikipedia-on-ipfs.org`, you can use this [dnslink](https://docs.ipfs.io/concepts/dnslink/) URL to access the content -- simply replace `ipfs.io` with the address of any [IPFS gateway](https://ipfs.github.io/public-gateway-checker/):
If you are not able to access `ipfs.io`, or `wikipedia-on-ipfs.org`, you can use this [dnslink](https://docs.ipfs.tech/concepts/dnslink/) URL to access the content -- simply replace `ipfs.io` with the address of any [IPFS gateway](https://ipfs.github.io/public-gateway-checker/):
* Turkish Wikipedia: [https://ipfs.io/ipns/tr.wikipedia-on-ipfs.org/](https://ipfs.io/ipns/tr.wikipedia-on-ipfs.org/wiki/)
@@ -119,7 +119,7 @@ Your main options for accessing the snapshot of Wikipedia are: _(depending on yo
* **Option**: Use any gateway to access the latest DNSLink version: https://ipfs.io/ipns/tr.wikipedia-on-ipfs.org/wiki/
* **Option**: Connect to gateway over Tor (this is experimental). Read [this tutorial on Tor gateways](https://dweb-primer.ipfs.io/avenues-for-access/lessons/tor-gateways.html).
* **Option**: Install an IPFS node on your computer and access Wikipedia through that node (requires [using the command line](http://lifehacker.com/5633909/who-needs-a-mouse-learn-to-use-the-command-line-for-almost-anything). _This is the most reliable method because it retrieves the content directly from the IPFS peer-to-peer network)_
1. Install IPFS [following these instructions](https://docs.ipfs.io/install/command-line/). Use the most recent verison of IPFS: 0.4.9-rc2 or higher if possible.
1. Install IPFS [following these instructions](https://docs.ipfs.tech/install/command-line/). Use the most recent verison of IPFS: 0.4.9-rc2 or higher if possible.
2. Start your IPFS node by running `ipfs daemon` so it can connect to the network.
3. Read the content through your IPFS node's local HTTP gateway by visiting:
* 30 April 2017 snapshot: http://localhost:8080/ipfs/QmT5NvUtoM5nWFfrQdVrFtvGfKFmG7AHE8P34isapyhCxX/wiki/
@@ -144,7 +144,7 @@ If you don't have enough storage space to hold full copies of the snapshot(s), y
**Steps**:
1. Install IPFS [following these instructions](https://docs.ipfs.io/install/command-line/). Use the most recent verison of IPFS -- 0.4.9-rc2 or higher if possible.
1. Install IPFS [following these instructions](https://docs.ipfs.tech/install/command-line/). Use the most recent verison of IPFS -- 0.4.9-rc2 or higher if possible.
2. Start your IPFS node by running `ipfs daemon` so it can connect to the network.
3. Pin the snapshot(s) onto your machine
* Pin Turkish Wikipedia: `ipfs pin add QmT5NvUtoM5nWFfrQdVrFtvGfKFmG7AHE8P34isapyhCxX`
+1 -1
View File
@@ -76,4 +76,4 @@ Please note that this is a simple first-blush implementation of the technology.
## Enjoy!
All that said, we hope you give `ipfs pubsub` a try. You can head over to the [Discussion Forum](https://discuss.ipfs.io/categories) to ask questions, get help, or simply let us know how it goes.
All that said, we hope you give `ipfs pubsub` a try. You can head over to the [Discussion Forum](https://discuss.ipfs.tech/categories) to ask questions, get help, or simply let us know how it goes.
+1 -1
View File
@@ -55,4 +55,4 @@ A few other subcommands and flags were added around the API, as well as many oth
- Expose port 8081 in docker container for /ws listener ([ipfs/go-ipfs#3954](https://github.com/ipfs/go-ipfs/pull/3954))
If you have questions or run into any issues, please post in the IPFS Discussion and Support Forum's [go-ipfs 0.4.10 release thread](https://discuss.ipfs.io/t/ipfs-0-4-10-release/687). For bugs, please open an issue in [ipfs/go-ipfs/issues](https://github.com/ipfs/go-ipfs/issues).
If you have questions or run into any issues, please post in the IPFS Discussion and Support Forum's [go-ipfs 0.4.10 release thread](https://discuss.ipfs.tech/t/ipfs-0-4-10-release/687). For bugs, please open an issue in [ipfs/go-ipfs/issues](https://github.com/ipfs/go-ipfs/issues).
+1 -1
View File
@@ -9,7 +9,7 @@ tags:
- 'tutorial'
---
IPFS pubsub was first introduced in September 2016 behind an experimental flag. This initial implementation allowed [orbit](https://orbit.chat/), a chat application built on top of IPFS, to become fully distributed. [@haadcode](https://github.com/haadcode) presented that work at [DEVCON2](https://www.youtube.com/watch?v=vQrbxyDPSXg). Later, [the IPFS team announced that pubsub ](https://ipfs.io/blog/25-pubsub) was ready for the whole community to use.
IPFS pubsub was first introduced in September 2016 behind an experimental flag. This initial implementation allowed [orbit](https://orbit.chat/), a chat application built on top of IPFS, to become fully distributed. [@haadcode](https://github.com/haadcode) presented that work at [DEVCON2](https://www.youtube.com/watch?v=vQrbxyDPSXg). Later, [the IPFS team announced that pubsub ](https://blog.ipfs.tech/25-pubsub) was ready for the whole community to use.
In this post I'll show you how to use pubsub with the [JavaScript implementation of IPFS](https://github.com/ipfs/js-ipfs). I start by using the pubsub primitives available in `js-ipfs` and end with a new module [plus video tutorial](https://youtu.be/Nv_Teb--1zg) of how to use it. Make sure to read to the end!
+1 -1
View File
@@ -9,7 +9,7 @@ tags:
- 'CRDTs'
---
With the introduction of [IPFS PubSub](https://ipfs.io/blog/25-pubsub/), it became possible for IPFS nodes to declare shared _pubsub_ topics, broadcasting updates in real-time to other nodes in the network that have subscribed to the topic. The pubsub pattern is a powerful construct but it does not guarantee delivery of messages and does not guarantee message order. Enter [CRDTs, Conflict-Free Replicated Data Types](https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type), a higher level data structure that allows us to overcome these shortcomings.
With the introduction of [IPFS PubSub](https://blog.ipfs.tech/25-pubsub/), it became possible for IPFS nodes to declare shared _pubsub_ topics, broadcasting updates in real-time to other nodes in the network that have subscribed to the topic. The pubsub pattern is a powerful construct but it does not guarantee delivery of messages and does not guarantee message order. Enter [CRDTs, Conflict-Free Replicated Data Types](https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type), a higher level data structure that allows us to overcome these shortcomings.
## Enter CRDTs, Conflict-Free Replicated Data Types
+1 -1
View File
@@ -60,7 +60,7 @@ There is an [open issue on the Node.js project to expose the RSA key generation
### PubSub tutorial published
@pgte published an amazing tutorial on how to use PubSub with js-ipfs and in the browser! Read it on the [IPFS Blog https://ipfs.io/blog/29-js-ipfs-pubsub/](https://ipfs.io/blog/29-js-ipfs-pubsub/).
@pgte published an amazing tutorial on how to use PubSub with js-ipfs and in the browser! Read it on the [IPFS Blog https://blog.ipfs.tech/29-js-ipfs-pubsub/](https://blog.ipfs.tech/29-js-ipfs-pubsub/).
# 🌱 Future
+2 -2
View File
@@ -80,10 +80,10 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label at the Ready column in our waffle board - https://waffle.io/ipfs/js-ipfs?label=help%20wanted
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/pm/#all-hands-call
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the #ipfs channel on Freenode.
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the #ipfs channel on Freenode.
That is all for this post. Thank you for being part of the community. I bid you a good day!
+2 -2
View File
@@ -73,11 +73,11 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label at the Ready column in our waffle board - https://waffle.io/ipfs/js-ipfs?label=help%20wanted
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/pm/#all-hands-call
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- **NEW** Join the [ⒿⓈ⚡️ js-ipfs Dev Team Weekly Sync 🙌🏽](https://github.com/ipfs/js-ipfs/issues/1179) and be part of the Sprint action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the #ipfs channel on Freenode.
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the #ipfs channel on Freenode.
That is all for this post. Thank you for being part of the community. I bid you a good day!
+1 -1
View File
@@ -8,7 +8,7 @@ tags:
- 'go-ipfs'
---
[go-ipfs 0.4.14](https://dist.ipfs.io/#go-ipfs) has been released today. Not only have we improved memory and CPU usage but we also managed to fix a lot of bugs, ship a major improvement to IPNS performance and lots of refactoring! \o/
[go-ipfs 0.4.14](https://dist.ipfs.tech/#go-ipfs) has been released today. Not only have we improved memory and CPU usage but we also managed to fix a lot of bugs, ship a major improvement to IPNS performance and lots of refactoring! \o/
- [Refactoring](#refactoring)
- [IPNS Improvements](#ipns-improvements)
+1 -1
View File
@@ -75,7 +75,7 @@ Would you like to contribute to the IPFS browser extension and don't know how? W
# Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can
do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also
do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also
available at the `#ipfs` channel on Freenode.
That is all for this post. Thank you for being part of the community. Have a great day!
+2 -2
View File
@@ -84,8 +84,8 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label at the Ready column in our waffle board - <https://waffle.io/ipfs/go-ipfs?label=help%20wanted>
- Join an IPFS All Hands call, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/pm/#all-hands-call
- The All Hands call is also the perfect venue for demos, join in and show us what you built!
- Join the discussion at <http://discuss.ipfs.io/>
- Join the discussion at <http://discuss.ipfs.tech/>
# Do you have questions?
The best place to ask your questions about IPFS, how it works, and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the [#ipfs](irc://freenode.net/ipfs) channel on Freenode.
The best place to ask your questions about IPFS, how it works, and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the [#ipfs](irc://freenode.net/ipfs) channel on Freenode.
+2 -2
View File
@@ -82,11 +82,11 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label at the Ready column in our waffle board - https://waffle.io/ipfs/js-ipfs?label=help%20wanted
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/pm/#all-hands-call
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- Join the [ⒿⓈ⚡️ js-ipfs Dev Team Weekly Sync 🙌🏽](https://github.com/ipfs/js-ipfs/issues/1179) and be part of the Sprint action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the #ipfs channel on Freenode.
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the #ipfs channel on Freenode.
That is all for this post. Thank you for being part of the community. I bid you a good day!
+2 -2
View File
@@ -61,11 +61,11 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label at the Ready column in our waffle board - https://waffle.io/ipfs/js-ipfs?label=help%20wanted
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/pm/#all-hands-call
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- Join the [⚡️ⒿⓈ Core Dev Team Weekly Sync 🙌🏽](https://github.com/ipfs/pm/issues/650) and be part of the Sprint action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the #ipfs channel on Freenode.
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the #ipfs channel on Freenode.
That is all for this post. Thank you for being part of the community. I bid you a good day!
+2 -2
View File
@@ -64,12 +64,12 @@ Would you like to contribute to the libp2p project and don't know how? Well, the
- Check the issues with the `help wanted` label at the Ready column in our waffle board - https://waffle.io/libp2p/js-libp2p?label=help%20wanted
- Join an IPFS/libp2p All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/pm/#all-hands-call
- Hack with libp2p and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- Join the [⚡️ⒿⓈ Core Dev Team Weekly Sync 🙌🏽 ](https://github.com/ipfs/pm/issues/650) and be part of the Sprint action!
# ⁉️ Do you have questions?
The best place to ask your questions about libp2p, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the #libp2p channel on Freenode.
The best place to ask your questions about libp2p, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the #libp2p channel on Freenode.
That is all for this post. Thank you for being part of the community.
+2 -2
View File
@@ -49,9 +49,9 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label at the Ready column in our waffle board - https://waffle.io/ipfs/js-ipfs?label=help%20wanted
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/pm/#all-hands-call
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- Join the [⚡️ⒿⓈ Core Dev Team Weekly Sync 🙌🏽](https://github.com/ipfs/pm/issues/650) and be part of the Sprint action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the #ipfs channel on Freenode.
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the #ipfs channel on Freenode.
+2 -2
View File
@@ -51,9 +51,9 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label at the Ready column in our waffle board - https://waffle.io/ipfs/js-ipfs?label=help%20wanted
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/pm/#all-hands-call
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- Join the [⚡️ⒿⓈ Core Dev Team Weekly Sync 🙌🏽](https://github.com/ipfs/pm/issues/650) and be part of the Sprint action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the #ipfs channel on Freenode.
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the #ipfs channel on Freenode.
+2 -2
View File
@@ -56,9 +56,9 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label at the Ready column in our waffle board - https://waffle.io/ipfs/js-ipfs?label=help%20wanted
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/pm/#all-hands-call
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- Join the [⚡️ⒿⓈ Core Dev Team Weekly Sync 🙌🏽](https://github.com/ipfs/pm/issues/650) and be part of the Sprint action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the #ipfs channel on Freenode.
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the #ipfs channel on Freenode.
+2 -2
View File
@@ -58,9 +58,9 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label at the Ready column in our waffle board - https://waffle.io/ipfs/js-ipfs?label=help%20wanted
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/pm/#all-hands-call
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- Join the [⚡️ⒿⓈ Core Dev Team Weekly Sync 🙌🏽](https://github.com/ipfs/pm/issues/650) and be part of the Sprint action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the #ipfs channel on Freenode.
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the #ipfs channel on Freenode.
+3 -3
View File
@@ -12,7 +12,7 @@ tags:
- IPFS Web UI
---
[go-ipfs 0.4.18](https://dist.ipfs.io/#go-ipfs) has been released! This is one of largest go-ipfs releases to date; 3 months in the making. _Thanks to all our contributors for your awesome work!_
[go-ipfs 0.4.18](https://dist.ipfs.tech/#go-ipfs) has been released! This is one of largest go-ipfs releases to date; 3 months in the making. _Thanks to all our contributors for your awesome work!_
## ✨ Highlights
@@ -207,11 +207,11 @@ Would you like to help contribute to the go-ipfs project?
* Join us on Github at https://github.com/ipfs/go-ipfs where you can find out more about the project.
* Check the issues with the help wanted label at the Ready column in our waffle board - https://waffle.io/ipfs/go-ipfs?label=help%20wanted
* Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute or any cool demos of what you've built - https://github.com/ipfs/pm/#all-hands-call
* Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
* Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
* Join the [Go Core Dev Team Weekly Sync](https://github.com/ipfs/pm/issues/674) 🙌🏽 and be part of the Sprint action!
## ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it, is at [discuss.ipfs.io](https://discuss.ipfs.io). We are also available at the #ipfs channel on Freenode.
The best place to ask your questions about IPFS, how it works and what you can do with it, is at [discuss.ipfs.tech](https://discuss.ipfs.tech). We are also available at the #ipfs channel on Freenode.
Thanks!
+2 -2
View File
@@ -38,11 +38,11 @@ Would you like to contribute to the libp2p project and don't know how? Well, the
- Check the issues with the `help wanted` label at the Ready column in our waffle board - https://waffle.io/libp2p/js-libp2p?label=help%20wanted
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/team-mgmt#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- Join the [⚡️ⒿⓈ Core Dev Team Weekly Sync 🙌🏽 ](https://github.com/ipfs/team-mgmt/issues/650) and be part of the Sprint action!
# ⁉️ Do you have questions?
The best place to ask your questions about libp2p, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the #libp2p channel on Freenode.
The best place to ask your questions about libp2p, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the #libp2p channel on Freenode.
That's all for now!
+7 -7
View File
@@ -18,7 +18,7 @@ tags:
## 🏎 Reading Protobuf DAG nodes is super fast
Reading Protobuf DAG nodes just got a serious speed boost as well as a memory reduction. Previously Protobuf DAG nodes (dag-pb nodes for short) carried a multihash property (a [CIDv0](https://docs.ipfs.io/guides/concepts/cid/#version-0)) with them. This used up loads of CPU time calculating the hash for a given node as it was retrieved from storage and with the advent of [CIDv1](https://docs.ipfs.io/guides/concepts/cid/#version-1) there was no guarantee the hashing algorithm and length were correct.
Reading Protobuf DAG nodes just got a serious speed boost as well as a memory reduction. Previously Protobuf DAG nodes (dag-pb nodes for short) carried a multihash property (a [CIDv0](https://docs.ipfs.tech/guides/concepts/cid/#version-0)) with them. This used up loads of CPU time calculating the hash for a given node as it was retrieved from storage and with the advent of [CIDv1](https://docs.ipfs.tech/guides/concepts/cid/#version-1) there was no guarantee the hashing algorithm and length were correct.
So, we removed it! 🦖 ...but that had the unfortunate consequence of making the object API a whole lot less useful when writing data - the DAG nodes you got back were basically the data you put in. Hence the object API was refactored to return CIDs instead of DAG nodes for write operations...and we all lived happily ever after.
@@ -30,13 +30,13 @@ Read all about it in [the pull request notes](https://github.com/ipfs/js-ipfs-un
## 🎄 HAMT support added to MFS
We're putting the whole of npm on IPFS! These days npm is like 5.3 terabytes of data and it's all going in [MFS](https://docs.ipfs.io/guides/concepts/mfs/). This is super rad, but we needed a good sharding strategy because 5TB is a lorra lorra files.
We're putting the whole of npm on IPFS! These days npm is like 5.3 terabytes of data and it's all going in [MFS](https://docs.ipfs.tech/guides/concepts/mfs/). This is super rad, but we needed a good sharding strategy because 5TB is a lorra lorra files.
If you're curious about npm on IPFS, check out the [project here](https://github.com/ipfs-shipyard/npm-on-ipfs).
## 📣 IPNS over pubsub and DHT
Get informed of [IPNS](https://docs.ipfs.io/guides/concepts/ipns/) record updates and read and publish your IPNS records to the DHT. It's all there and it's all awesome. For those of you new to IPNS, let me give you the lowdown - IPNS puts the mutable in immutable 🤣 It's an age old problem, content addressing is rad and all that, but if I change something the hash changes - 👎 boo...but wait, IPNS solves this, you get a permenant address for changeable content - hooray \o/.
Get informed of [IPNS](https://docs.ipfs.tech/guides/concepts/ipns/) record updates and read and publish your IPNS records to the DHT. It's all there and it's all awesome. For those of you new to IPNS, let me give you the lowdown - IPNS puts the mutable in immutable 🤣 It's an age old problem, content addressing is rad and all that, but if I change something the hash changes - 👎 boo...but wait, IPNS solves this, you get a permenant address for changeable content - hooray \o/.
IPNS over pubsub gets the word out quicker to peers that are interested when an IPNS record changes. IPNS over DHT allows peers to find and resolve your IPNS address to some content in the first place! In the next JS IPFS release (0.35) the DHT will be enabled by default and it's going to be epic.
@@ -55,7 +55,7 @@ QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
uAXASIEbUSBS5xa8UHDqqt8BdxehE6tX5HxKFiwIeukV2i0wO
```
This is all work to smooth out the eventual transition to base32 CIDv1 by default - a move to allow CIDs to be used as valid URL origins. Have a [read of this for more](https://blog.ipfs.io/53-go-ipfs-0-4-18/#cidv1-base32-migration).
This is all work to smooth out the eventual transition to base32 CIDv1 by default - a move to allow CIDs to be used as valid URL origins. Have a [read of this for more](https://blog.ipfs.tech/53-go-ipfs-0-4-18/#cidv1-base32-migration).
To help you craft your artisanal CIDs we've introduced a `--cid-base` option to a bunch of CLI commands (and `?cid-base` option to a bunch of HTTP API endpoints). Check it out:
@@ -66,7 +66,7 @@ added bafybeibns4lrebrxaymvyshgmki5biwh6cd53idxfpen6ysomzrywtsm44 file.txt
## 💪 Deps got upgrades!
We got you covered with [WebUI 2.3](https://github.com/ipfs-shipyard/ipfs-webui/releases/tag/v2.2.0) (quic support, responsive navbar, and a language selector), [libp2p 0.24](https://blog.ipfs.io/55-js-libp2p-0-24/) and many other upgrades giving you a faster and smaller JS IPFS.
We got you covered with [WebUI 2.3](https://github.com/ipfs-shipyard/ipfs-webui/releases/tag/v2.2.0) (quic support, responsive navbar, and a language selector), [libp2p 0.24](https://blog.ipfs.tech/55-js-libp2p-0-24/) and many other upgrades giving you a faster and smaller JS IPFS.
# 🏗 API Changes
@@ -306,9 +306,9 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label at the Ready column in our waffle board - https://waffle.io/ipfs/js-ipfs?label=help%20wanted
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- Join the [⚡️ⒿⓈ Core Dev Team Weekly Sync 🙌🏽](https://github.com/ipfs/team-mgmt/issues/650) and be part of the Sprint action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the `#ipfs` channel on Freenode.
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the `#ipfs` channel on Freenode.
+1 -1
View File
@@ -15,7 +15,7 @@ In the week of May 21, 2018, we hosted one more Hack Week in the sunny city of L
The week was great for core developers, contributors and researchers to spend quality time together and work in a fast paced synchronous format towards solving concrete problems. It was incredible to see ideas and solutions flourishing for open problems we've been thinking for a while. The hacker spirit was strong throughout the entire week, culminating in a "Show Me What You Got" presentation to report back on decisions and demos.
The majority of discussions and collaborations were around IPFS, libp2p and applications built on top of them, but we also hosted a [CRDT Research meetup](https://blog.ipfs.io/67-crdt-research-meetup) on the second day - check out the video playlist [here](https://www.youtube.com/playlist?list=PLuhRWgmPaHtTVkko1ZTn-qcGb-n6EqHff).
The majority of discussions and collaborations were around IPFS, libp2p and applications built on top of them, but we also hosted a [CRDT Research meetup](https://blog.ipfs.tech/67-crdt-research-meetup) on the second day - check out the video playlist [here](https://www.youtube.com/playlist?list=PLuhRWgmPaHtTVkko1ZTn-qcGb-n6EqHff).
Didn't have a chance to attend? No worries, we got your back. Many of the report-back presentations were recorded so that you can learn about what got developed, designed and decided. We have compiled them into a [YouTube playlist](https://www.youtube.com/playlist?list=PLuhRWgmPaHtR1hDEAKYXtUguNBkg2qceQ) for your viewing pleasure. You can see them all here:
+2 -2
View File
@@ -246,9 +246,9 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label at the Ready column in our waffle board - https://waffle.io/ipfs/js-ipfs?label=help%20wanted
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- Join the [⚡️ⒿⓈ Core Dev Team Weekly Sync 🙌🏽](https://github.com/ipfs/team-mgmt/issues/650) and be part of the Sprint action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the #ipfs channel on Freenode.
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the #ipfs channel on Freenode.
+1 -1
View File
@@ -120,7 +120,7 @@ Would you like to contribute to the libp2p project and don't know how? Well, the
- Check the issues with the `help wanted` label in the [libp2p repo](https://github.com/libp2p/js-libp2p/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/team-mgmt#all-hands-call
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- Join the [⚡️ⒿⓈ Core Dev Team Weekly Sync 🙌🏽 ](https://github.com/ipfs/team-mgmt/issues/650) and be part of the Sprint action!
# ⁉️ Do you have questions?
+4 -4
View File
@@ -91,8 +91,8 @@ PR: https://github.com/libp2p/js-libp2p/pull/362
- See CHANGELOGs for each IPLD format for it's respective changes, you can read more about the [`dag-pb` changes in the CHANGELOG](https://github.com/ipld/js-ipld-dag-pb/blob/master/CHANGELOG.md#0160-2019-05-08)
1. Commands `refs` and `refs local` have been added to core, the CLI and the HTTP API
- [Core API docs](https://github.com/ipfs/interface-js-ipfs-core/blob/master/SPEC/REFS.md)
- [HTTP API docs](https://docs.ipfs.io/reference/api/http/#api-v0-refs)
- [CLI API docs](https://docs.ipfs.io/reference/api/cli/#ipfs-refs)
- [HTTP API docs](https://docs.ipfs.tech/reference/api/http/#api-v0-refs)
- [CLI API docs](https://docs.ipfs.tech/reference/api/cli/#ipfs-refs)
1. Support for DOM [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects has been added to [`ipfs.add`](https://github.com/ipfs/interface-js-ipfs-core/blob/master/SPEC/FILES.md#add)
# ❤️ Huge thank you to everyone that made this release possible
@@ -175,9 +175,9 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label in the [js-ipfs repo](https://github.com/ipfs/js-ipfs/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- Join the [⚡️ⒿⓈ Core Dev Team Weekly Sync 🙌🏽](https://github.com/ipfs/team-mgmt/issues/650) and be part of the Sprint action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the `#ipfs` channel on Freenode.
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the `#ipfs` channel on Freenode.
+2 -2
View File
@@ -348,9 +348,9 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label in the [go-ipfs repo](https://github.com/ipfs/go-ipfs/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- Join the [Go Core Dev Team Weekly Sync 🙌🏽](https://github.com/ipfs/team-mgmt/issues/674) and be part of the action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the `#ipfs` channel on Freenode.
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the `#ipfs` channel on Freenode.
@@ -81,7 +81,7 @@ For this batch we have:
If you are interested in receiving an update when the next calls are out, you can do this in one of the following ways:
- Watch and Star the [ipfs/camp repo](https://github.com/ipfs/camp/blob/master/README.md), where all the content will live ad-eternum.
- Subscribe to the [RSS feed of this blog](https://blog.ipfs.io/index.xml).
- Subscribe to the [RSS feed of this blog](https://blog.ipfs.tech/index.xml).
- Subscribe to the [IPFS Weekly Newsletter](https://tinyletter.com/ipfsnewsletter) if you are interested in general IPFS updates.
- Subscribe to the [IPFS Events Newsletter](https://protocol.us20.list-manage.com/subscribe?u=62e1eb7f68461b5a2ab5c52e6&id=f3fed9af1d) if you are interested in IPFS events.
+1 -1
View File
@@ -36,7 +36,7 @@ Your feedback is a large part of identifying these challenges, evaluating how we
These new working groups meet regularly, and you can join them to help us achieve these goals! Check the [IPFS community calendar](https://github.com/ipfs/community/blob/master/README.md#calendar) for times and connection information, or watch the meetings at your leisure on the [IPFS Youtube channel](https://www.youtube.com/channel/UCdjsUXJ3QawK4O5L1kqqsew).
The work these teams are doing will require a number of different skillsets, and could use your help! If you're interested and have bandwidth to help out - jump on a community call or Github issue and share your time and expertise! Looking for fulltime roles to help out on these and other IPFS challenges? Check the IPFS Weekly Newsletter for [IPFS-focused job opportunities](https://blog.ipfs.io/weekly-51/#open-positions-working-on-ipfs)!
The work these teams are doing will require a number of different skillsets, and could use your help! If you're interested and have bandwidth to help out - jump on a community call or Github issue and share your time and expertise! Looking for fulltime roles to help out on these and other IPFS challenges? Check the IPFS Weekly Newsletter for [IPFS-focused job opportunities](https://blog.ipfs.tech/weekly-51/#open-positions-working-on-ipfs)!
## How does this work affect you?
+2 -2
View File
@@ -215,9 +215,9 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label in the [js-ipfs repo](https://github.com/ipfs/js-ipfs/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- Join the [🚀 IPFS Core Implementations Weekly Sync 🛰](https://github.com/ipfs/team-mgmt/issues/992) and be part of the action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the `#ipfs` channel on Freenode.
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the `#ipfs` channel on Freenode.
+2 -2
View File
@@ -40,9 +40,9 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label in the [go-ipfs repo](https://github.com/ipfs/go-ipfs/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at [discuss.ipfs.io](https://discuss.ipfs.io/) and help users finding their answers.
- Join the discussion at [discuss.ipfs.tech](https://discuss.ipfs.tech/) and help users finding their answers.
- Join the [🚀 IPFS Core Implementations Weekly Sync 🛰](https://github.com/ipfs/team-mgmt/issues/992) and be part of the action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the `#ipfs` channel on Freenode, which is also [accessible through our Matrix bridge](https://riot.im/app/#/room/#freenode_#ipfs:matrix.org).
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the `#ipfs` channel on Freenode, which is also [accessible through our Matrix bridge](https://riot.im/app/#/room/#freenode_#ipfs:matrix.org).
@@ -70,6 +70,6 @@ More content from IPFS Camp is being salvaged and transcoded.
If you are interested in receiving an update when the next batch of videos are available, you can do this in one of the following ways:
- Watch and Star the [ipfs/camp repo](https://github.com/ipfs/camp/blob/master/README.md), where all the content will live, in addition to other other locations (IPFS 😄) shielded from the Global Electromagnetic Fire Disaster of 2027
- Subscribe to the [RSS feed of this blog](https://blog.ipfs.io/index.xml).
- Subscribe to the [RSS feed of this blog](https://blog.ipfs.tech/index.xml).
- Subscribe to the [IPFS Weekly Newsletter](https://tinyletter.com/ipfsnewsletter) if you are interested in general IPFS updates.
- Subscribe to the [IPFS Events Newsletter](https://protocol.us20.list-manage.com/subscribe?u=62e1eb7f68461b5a2ab5c52e6&id=f3fed9af1d) if you are interested in IPFS events.
+1 -1
View File
@@ -11,7 +11,7 @@ tags:
> EXCELLENT NEWS! You can now pubsub with the JS IPFS HTTP API client in the BROWSER!
Due to [boring technical reasons](https://github.com/ipfs/js-ipfs-http-client/issues/518) its previously not been possible to support [pubsub](https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern) over the [HTTP API](https://docs.ipfs.io/reference/api/http/) in the browser. Now that the [fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) supports cancelation, and has done so for a while, pubsub support has arrived! Hooray \o/
Due to [boring technical reasons](https://github.com/ipfs/js-ipfs-http-client/issues/518) its previously not been possible to support [pubsub](https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern) over the [HTTP API](https://docs.ipfs.tech/reference/api/http/) in the browser. Now that the [fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) supports cancelation, and has done so for a while, pubsub support has arrived! Hooray \o/
Theres also a brand new example application that you can play with showing how to use pubsub in the browser:
+2 -2
View File
@@ -26,7 +26,7 @@ This core course covers the basics of how IPFS deals with files, including key c
This workshop introduced a few awesome visualization and learning tools that you can try out at home:
- Explore the [**ProtoSchool tutorial on the Mutable File System (MFS)**](https://proto.school/#/mutable-file-system) for coding challenges designed to familiarize you with its API
- Paste a Content Identifier (CID) into the [**CID Inspector**](https://cid.ipfs.io/) to break down its anatomy
- Paste a Content Identifier (CID) into the [**CID Inspector**](https://cid.ipfs.tech/) to break down its anatomy
- Drag a file into the [**DAG Builder**](https://dag.ipfs.io/) and adjust chunk size, DAG layouts, etc. to see how it affects the Merkle DAG
Watch the recording below or check out the [slides](https://github.com/ipfs/camp/blob/master/CORE_AND_ELECTIVE_COURSES/CORE_COURSE_A/IPFS_Camp_Core_Course_A_Slides.pdf)!
@@ -79,6 +79,6 @@ The ProtoSchool curriculum is growing, and we're excited to explore all of the f
There's even more great content from IPFS Camp content coming your way, including recordings of keynotes and interviews. If you're interested in receiving an update when the next batch of videos are available, try out one of these strategies:
- Watch and star the [ipfs/camp repo](https://github.com/ipfs/camp/blob/master/README.md), where all the content will live.
- Subscribe to the [RSS feed of this blog](https://blog.ipfs.io/index.xml).
- Subscribe to the [RSS feed of this blog](https://blog.ipfs.tech/index.xml).
- Subscribe to the [IPFS Weekly Newsletter](https://tinyletter.com/ipfsnewsletter) if you're interested in general IPFS updates.
- Subscribe to the [IPFS Events Newsletter](https://protocol.us20.list-manage.com/subscribe?u=62e1eb7f68461b5a2ab5c52e6&id=f3fed9af1d) if you're interested in IPFS events.
+1 -1
View File
@@ -24,7 +24,7 @@ The newest version of IPFS Desktop, 0.9.2 - yes, we already released two patch v
### Browse the wild...
With the [recent update to the Web UI](https://github.com/ipfs-shipyard/ipfs-webui/releases/tag/v2.5.0), we are now capable of navigating through the whole IPFS system. Previously, you could only access your 'Files' (the contents of the [Mutable File System](https://proto.school/#/mutable-file-system)). Now, you can navigate not only to any `/ipfs/` or `/ipns/` path, but also any content [pinned](https://docs.ipfs.io/guides/concepts/pinning/) to your IPFS node!
With the [recent update to the Web UI](https://github.com/ipfs-shipyard/ipfs-webui/releases/tag/v2.5.0), we are now capable of navigating through the whole IPFS system. Previously, you could only access your 'Files' (the contents of the [Mutable File System](https://proto.school/#/mutable-file-system)). Now, you can navigate not only to any `/ipfs/` or `/ipns/` path, but also any content [pinned](https://docs.ipfs.tech/guides/concepts/pinning/) to your IPFS node!
![Browsing /ipns/ipns.io](../assets/058-ipfs-desktop-0-9-browse-wild.jpg)
@@ -85,6 +85,6 @@ Huge thanks to our SciFi Fair participants for making IPFS Camp so out-of-this-w
There's still more great content from IPFS Camp content coming your way, including recordings of keynotes and interviews. If you're interested in receiving an update when the next batch of videos are available, try out one of these routes:
- Watch and star the [ipfs/camp repo](https://github.com/ipfs/camp/blob/master/README.md), where all the content will live.
- Subscribe to the [RSS feed of this blog](https://blog.ipfs.io/index.xml).
- Subscribe to the [RSS feed of this blog](https://blog.ipfs.tech/index.xml).
- Subscribe to the [IPFS Weekly Newsletter](https://tinyletter.com/ipfsnewsletter) if you're interested in general IPFS updates.
- Subscribe to the [IPFS Events Newsletter](https://protocol.us20.list-manage.com/subscribe?u=62e1eb7f68461b5a2ab5c52e6&id=f3fed9af1d) if you're interested in IPFS events.
@@ -38,7 +38,7 @@ To close, Juan set us back out through the airlock back toward Earth with his [I
[![Screen Shot 2019-10-02 at 7 44 37 PM](../assets/ipfs-camp-2019-recap.png)](https://youtu.be/cQJXnJDbXv4)
Curious how everything fit together, or want to understand how the pieces of IPFS Camp became a greater whole? Check out [this overview from Molly](https://youtu.be/cQJXnJDbXv4) on how different components like the Poster Sessions & Deep Dives, SciFi Fair, Lightning Talks, and the Core & Elective Courses, wove together into a great community event. Many connections between different attendees and projects emerged from IPFS Camp too - spurring new collaborations and integrations. These great recaps from [Textile](https://medium.com/textileio/ipfs-camp-2019-the-highlights-and-takeaways-2b3cb4f42513), [Berty](https://berty.tech/blog/ipfs-camp/), and of course [the IPFS blog](https://blog.ipfs.io/2019-07-08-ipfs-camp-recap/) highlight a few!
Curious how everything fit together, or want to understand how the pieces of IPFS Camp became a greater whole? Check out [this overview from Molly](https://youtu.be/cQJXnJDbXv4) on how different components like the Poster Sessions & Deep Dives, SciFi Fair, Lightning Talks, and the Core & Elective Courses, wove together into a great community event. Many connections between different attendees and projects emerged from IPFS Camp too - spurring new collaborations and integrations. These great recaps from [Textile](https://medium.com/textileio/ipfs-camp-2019-the-highlights-and-takeaways-2b3cb4f42513), [Berty](https://berty.tech/blog/ipfs-camp/), and of course [the IPFS blog](https://blog.ipfs.tech/2019-07-08-ipfs-camp-recap/) highlight a few!
## Community Interviews
@@ -75,6 +75,6 @@ And on top of all that, Steven joined us from Shanghai City to discuss his work
This concludes our series of updates from IPFS Camp recap-ing the amazing presentations, demos, courses, and learnings we had together. We're so grateful to everyone for making this event so vibrant and creative - and are already looking forward to the **next** IPFS Camp. If you want more IPFS updates in the meantime, try these channels:
- Watch and star the [ipfs/camp repo](https://github.com/ipfs/camp/blob/master/README.md), where all the content (and follow-ups) live.
- Subscribe to the [RSS feed of this blog](https://blog.ipfs.io/index.xml).
- Subscribe to the [RSS feed of this blog](https://blog.ipfs.tech/index.xml).
- Subscribe to the [IPFS Weekly Newsletter](https://tinyletter.com/ipfsnewsletter) if you're interested in general IPFS updates.
- Subscribe to the [IPFS Events Newsletter](https://protocol.us20.list-manage.com/subscribe?u=62e1eb7f68461b5a2ab5c52e6&id=f3fed9af1d) if you're interested in IPFS events.
+3 -3
View File
@@ -50,7 +50,7 @@ Read more about the design at [`libp2p/specs/pubsub/gossipsub`](https://github.c
## 📛 IPNS support for `ipfs resolve`
You can now resolve [IPNS](https://docs.ipfs.io/guides/concepts/ipns/) names via `ipfs resolve`, what's more the recursive option is now on by default.
You can now resolve [IPNS](https://docs.ipfs.tech/guides/concepts/ipns/) names via `ipfs resolve`, what's more the recursive option is now on by default.
```bash
$ jsipfs resolve /ipns/Qmqux
@@ -125,9 +125,9 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label in the [js-ipfs repo](https://github.com/ipfs/js-ipfs/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- Join the [🚀 IPFS Core Implementations Weekly Sync 🛰](https://github.com/ipfs/team-mgmt/issues/992) and be part of the action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the `#ipfs` channel on Freenode.
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the `#ipfs` channel on Freenode.
+2 -2
View File
@@ -132,9 +132,9 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label in the [js-ipfs repo](https://github.com/ipfs/js-ipfs/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- Join the [🚀 IPFS Core Implementations Weekly Sync 🛰](https://github.com/ipfs/team-mgmt/issues/992) and be part of the action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](https://discuss.ipfs.io). We are also available at the `#ipfs` channel on Freenode and [Matrix](https://matrix.to/#/#ipfs:matrix.org)
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](https://discuss.ipfs.tech). We are also available at the `#ipfs` channel on Freenode and [Matrix](https://matrix.to/#/#ipfs:matrix.org)
+1 -1
View File
@@ -14,7 +14,7 @@ The title says it all. Learn how to use [go-ipfs as a library with the new tutor
![](../assets/go-ipfs-as-a-library.gif)
Let us know what you think by opening a topic with your questions and feedback at https://discuss.ipfs.io.
Let us know what you think by opening a topic with your questions and feedback at https://discuss.ipfs.tech.
Invite your friends to share it and help us broadcast it to reach a wider audience of DWeb developers
@@ -54,5 +54,5 @@ _Video: [Understanding How IPFS Deals with Files](https://youtu.be/Z5zNPwMDYGg)_
This course also introduces new visualization tools that you can use to see how IPFS addresses and manipulates files:
- Paste a Content Identifier (CID) into the [**CID Inspector**](https://cid.ipfs.io/) to break down its anatomy
- Paste a Content Identifier (CID) into the [**CID Inspector**](https://cid.ipfs.tech/) to break down its anatomy
- Drag a file into the [**DAG Builder**](https://dag.ipfs.io/) and adjust chunk size, DAG layouts, etc. to see how it affects the Merkle DAG
+3 -3
View File
@@ -40,7 +40,7 @@ So, bad times.
...but wait, [Peer IDs _ARE_ CIDs](https://github.com/libp2p/specs/blob/master/RFC/0001-text-peerid-cid.md)! I know, weird, but also rad because in theory we should be able to re-encode them as `base32`. Right now though, everything expects a `base58` encoded string (a v0 CID) because they're actually just a multihash.
In this js-ipfs release we've made a small change to allow you to take your Peer ID (a v0 CID), convert it to a base32 encoded v1 CID and use it in an IPNS path like `/ipns/bafybeidta3hkxk3ihxfsk765oswgsjhmvcnkeestyuov6r2t5tyts4xuoe`. You can take advantage of [cid.ipfs.io](https://cid.ipfs.io) (base32 version is provided for your convenience at the very bottom of the page) or do the conversion with the command line tools:
In this js-ipfs release we've made a small change to allow you to take your Peer ID (a v0 CID), convert it to a base32 encoded v1 CID and use it in an IPNS path like `/ipns/bafybeidta3hkxk3ihxfsk765oswgsjhmvcnkeestyuov6r2t5tyts4xuoe`. You can take advantage of [cid.ipfs.tech](https://cid.ipfs.tech) (base32 version is provided for your convenience at the very bottom of the page) or do the conversion with the command line tools:
```sh
jsipfs id | json id | jsipfs cid base32
@@ -223,9 +223,9 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label in the [js-ipfs repo](https://github.com/ipfs/js-ipfs/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at https://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at https://discuss.ipfs.tech/ and help users finding their answers.
- Join the [🚀 IPFS Core Implementations Weekly Sync 🛰](https://github.com/ipfs/team-mgmt/issues/992) and be part of the action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](https://discuss.ipfs.io). We are also available at the `#ipfs` channel on Freenode.
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](https://discuss.ipfs.tech). We are also available at the `#ipfs` channel on Freenode.
+2 -2
View File
@@ -10,9 +10,9 @@ tags:
- 'community'
---
**Were excited to announce [the new IPFS documentation site is live in beta](https://docs.ipfs.io/)!** The doors are open, and just like any housewarming, youre cordially invited to stop by, have a look around, and let us know what you think.
**Were excited to announce [the new IPFS documentation site is live in beta](https://docs.ipfs.tech/)!** The doors are open, and just like any housewarming, youre cordially invited to stop by, have a look around, and let us know what you think.
<a href="https://docs.ipfs.io/" target="_blank"><img src="../assets/076-ipfs-docs-beta-screenshot.png" alt="Screenshot of docs beta"></a>
<a href="https://docs.ipfs.tech/" target="_blank"><img src="../assets/076-ipfs-docs-beta-screenshot.png" alt="Screenshot of docs beta"></a>
<br/>
_New year, new look._
+2 -2
View File
@@ -96,9 +96,9 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label in the [go-ipfs repo](https://github.com/ipfs/go-ipfs/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at [discuss.ipfs.io](https://discuss.ipfs.io/) and help users finding their answers.
- Join the discussion at [discuss.ipfs.tech](https://discuss.ipfs.tech/) and help users finding their answers.
- Join the [🚀 IPFS Core Implementations Weekly Sync 🛰](https://github.com/ipfs/team-mgmt/issues/992) and be part of the action!
## ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the `#ipfs` channel on Freenode, which is also [accessible through our Matrix bridge](https://riot.im/app/#/room/#freenode_#ipfs:matrix.org).
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the `#ipfs` channel on Freenode, which is also [accessible through our Matrix bridge](https://riot.im/app/#/room/#freenode_#ipfs:matrix.org).
+7 -7
View File
@@ -27,19 +27,19 @@ Its a new year, and with it time to update the [IPFS Project Roadmap](https:/
![IPFS Ecosystem Diagram](../assets/ipfs-ecosystem-diagram.png)
See our [Ecosystem Update from IPFS Camp](https://www.youtube.com/watch?v=jpQnQbfhuBc&feature=youtu.be) to learn more about 2019 adoption!
This growth caused us to shift some of our attention midyear to support new usage and demand - re-focusing some of our working groups on improving documentation, gateway performance, and testing tools to validate large-scale network upgrades (see our [Operation Task-Force blog post](https://blog.ipfs.io/2019-07-31-operation-task-force/) for details). We still made progress on our Package Managers goal, but less than we hoped given **also** investing heavily in other critical areas to support the ecosystem. 🤞
This growth caused us to shift some of our attention midyear to support new usage and demand - re-focusing some of our working groups on improving documentation, gateway performance, and testing tools to validate large-scale network upgrades (see our [Operation Task-Force blog post](https://blog.ipfs.tech/2019-07-31-operation-task-force/) for details). We still made progress on our Package Managers goal, but less than we hoped given **also** investing heavily in other critical areas to support the ecosystem. 🤞
### 5 Notable Wins
1. We held the first [IPFS Camp](https://www.youtube.com/watch?v=cQJXnJDbXv4&feature=youtu.be), a gathering for developers and builders in the wider InterPlanetary community to [learn](https://blog.ipfs.io/2019-09-18-ipfs-camp-course-videos/), [share](https://www.youtube.com/playlist?list=PLuhRWgmPaHtQVNQcBaCKg5kKhfOBv45Jb), and [demo](https://blog.ipfs.io/2019-10-03-ipfs-camp-sci-fi-fair-videos/) their work (see [this recap](https://blog.ipfs.io/2019-07-08-ipfs-camp-recap/) for more)! 🏕
2. We made significant progress on our Package Managers goal (read on for awesome new features like [collaborative clusters](https://blog.ipfs.io/2020-01-09-collaborative-clusters/)!) 🎯
1. We held the first [IPFS Camp](https://www.youtube.com/watch?v=cQJXnJDbXv4&feature=youtu.be), a gathering for developers and builders in the wider InterPlanetary community to [learn](https://blog.ipfs.tech/2019-09-18-ipfs-camp-course-videos/), [share](https://www.youtube.com/playlist?list=PLuhRWgmPaHtQVNQcBaCKg5kKhfOBv45Jb), and [demo](https://blog.ipfs.tech/2019-10-03-ipfs-camp-sci-fi-fair-videos/) their work (see [this recap](https://blog.ipfs.tech/2019-07-08-ipfs-camp-recap/) for more)! 🏕
2. We made significant progress on our Package Managers goal (read on for awesome new features like [collaborative clusters](https://blog.ipfs.tech/2020-01-09-collaborative-clusters/)!) 🎯
3. We developed and launched [TestGround v0.1](https://github.com/ipfs/testground/releases/tag/v0.1.0) in collaboration with the libp2p team, a platform for testing distributed systems and networks at various scales ⚖️
4. We launched [ProtoSchool](https://proto.school/#/), a new portal for interactive tutorials to learn about decentralized web concepts, protocols, and tools, with 23 chapters across 4 continents! 🌏
5. We built a [new IPFS docs site](https://blog.ipfs.io/2020-01-07-ipfs-docs-beta/) with improved search, information architecture, and explainers on InterPlanetary concepts 📖
5. We built a [new IPFS docs site](https://blog.ipfs.tech/2020-01-07-ipfs-docs-beta/) with improved search, information architecture, and explainers on InterPlanetary concepts 📖
## Our 2019 Roadmap
To chart our path for the year, we did a large 2019 Roadmapping effort to write down our [mission](https://github.com/ipfs/roadmap#ipfs-mission-statement), define some of the many [long-term goals for the IPFS Project](https://github.com/ipfs/roadmap#future-goals), and [prioritize](https://github.com/ipfs/roadmap#sorting-function) where to focus our energy first. We had a lot of “planning” debt, so going from 0 to 1 on a project roadmap was a large endeavor. Our process involved each working group generating a roadmap around a shared goal, and then merging important work streams into “epics” for the whole project that highlighted our major objectives. You can see how we did against these objectives in our [2019 Project Roadmap](https://github.com/ipfs/roadmap/blob/master/2019-IPFS-Project-Roadmap.md), or dive more into how we chose those goals in our [2019 Roadmap blog post](https://blog.ipfs.io/78-ipfs-2019-roadmap).
To chart our path for the year, we did a large 2019 Roadmapping effort to write down our [mission](https://github.com/ipfs/roadmap#ipfs-mission-statement), define some of the many [long-term goals for the IPFS Project](https://github.com/ipfs/roadmap#future-goals), and [prioritize](https://github.com/ipfs/roadmap#sorting-function) where to focus our energy first. We had a lot of “planning” debt, so going from 0 to 1 on a project roadmap was a large endeavor. Our process involved each working group generating a roadmap around a shared goal, and then merging important work streams into “epics” for the whole project that highlighted our major objectives. You can see how we did against these objectives in our [2019 Project Roadmap](https://github.com/ipfs/roadmap/blob/master/2019-IPFS-Project-Roadmap.md), or dive more into how we chose those goals in our [2019 Roadmap blog post](https://blog.ipfs.tech/78-ipfs-2019-roadmap).
### Our Focus on Package Managers
@@ -54,7 +54,7 @@ We also formed collaborations with IPFS users to partner on improving IPFS for p
![5ms-1024mb](../assets/5ms-1024MB.png =400x)
![5ms-40mb](../assets/5ms-40MB.png =400x)
IPFS Cluster also released _[collaborative clusters](https://blog.ipfs.io/2020-01-09-collaborative-clusters/)_, a new feature to enable package manager maintainers and mirrors to add and replicate repositories across a community of IPFS nodes. With collaborative clusters, any maintainer can push new updates to the pinset of data to mirror, which is then sharded and syncd across all mirroring nodes. Weve already seen package managers like Pac-Man added to collaborative clusters along with many “data package managers” like Wikipedia and Project Gutenberg, [follow these instructions to add your own!](https://collab.ipfscluster.io/)
IPFS Cluster also released _[collaborative clusters](https://blog.ipfs.tech/2020-01-09-collaborative-clusters/)_, a new feature to enable package manager maintainers and mirrors to add and replicate repositories across a community of IPFS nodes. With collaborative clusters, any maintainer can push new updates to the pinset of data to mirror, which is then sharded and syncd across all mirroring nodes. Weve already seen package managers like Pac-Man added to collaborative clusters along with many “data package managers” like Wikipedia and Project Gutenberg, [follow these instructions to add your own!](https://collab.ipfscluster.io/)
### How We Did Against Our Package Managers Goal
@@ -80,7 +80,7 @@ During our IPFS Planning “Spike”, we took stock of our wider ecosystem and p
> Based on our decision-making criteria, we chose **improving the performance and reliability of Content Routing in the IPFS network** as our main priority for the next 6 months (through mid-year 2020).
Content routing is the process of finding a node hosting the content youre looking for, such that you can fetch the desired data and quickly load your website, dapp, video, or data. As the IPFS public network scaled this past year (over 30x!), it ran into new problems in our distributed routing algorithms: struggling to find content spread across many unreliable nodes. This was especially painful for [IPNS](https://docs.ipfs.io/guides/concepts/ipns/), which relied on _multiple_ of these slow/unreliable queries to find the latest version of a file. These performance gaps caused IPFS to lag and stall while searching for the needed content, hurting the end user experience and making IPFS feel broken. Searching the network to find desired content (a.k.a., using IPFS as a decentralized CDN) is one of the most common actions for new IPFS users and is required by most ipfs-powered dapp use cases—therefore, its the **number 1 pain point** we need to mitigate in order to unlock increased adoption and scalability of the network! Our goal for midyear: **95th percentile content routing speed is less than 5 seconds.**
Content routing is the process of finding a node hosting the content youre looking for, such that you can fetch the desired data and quickly load your website, dapp, video, or data. As the IPFS public network scaled this past year (over 30x!), it ran into new problems in our distributed routing algorithms: struggling to find content spread across many unreliable nodes. This was especially painful for [IPNS](https://docs.ipfs.tech/guides/concepts/ipns/), which relied on _multiple_ of these slow/unreliable queries to find the latest version of a file. These performance gaps caused IPFS to lag and stall while searching for the needed content, hurting the end user experience and making IPFS feel broken. Searching the network to find desired content (a.k.a., using IPFS as a decentralized CDN) is one of the most common actions for new IPFS users and is required by most ipfs-powered dapp use cases—therefore, its the **number 1 pain point** we need to mitigate in order to unlock increased adoption and scalability of the network! Our goal for midyear: **95th percentile content routing speed is less than 5 seconds.**
To achieve this goal, weve formed a Content Routing team (and spun down our Package Managers working group) to focus our main engineering effort on this problem for the next 6 months. Improving content routing performance requires making improvements and bugfixes to the go-libp2p DHT _at scale_, and changing how we form, query, and resolve content in the IPFS network to be faster and more resilient. This involves a combination of research, design, implementation, and testing. Making changes to the _configuration of the entire network_ is non-trivial, which is why weve been investing in the [InterPlanetary Testground](https://github.com/ipfs/testground/), a new set of tools for testing next generation P2P applications, to help us diagnose issues and evaluate improvements prior to rolling out upgrades to the entire public network. You can follow along with the team's work in the [Content Routing ZenHub Roadmap](https://app.zenhub.com/workspaces/content-routing-2020-5e29be25ab9d8da0b032cfcc/roadmap):
@@ -27,7 +27,7 @@ To speed this up even more, we added some useful new capabilities to the Bitswap
IPFS breaks up files into chunks called Blocks, identified by a Content IDentifier ([CID](https://github.com/multiformats/cid)). When nodes running the [Bitswap](https://github.com/ipfs/go-bitswap) protocol want to fetch a file, they send out "want lists" to other peers. A "want list" is a list of CIDs for blocks a peer wants to receive. Each node remembers which blocks its peers want, and each time the node receives a block it checks if any of its peers want the block and sends it to them.
To find out which peers have the blocks that make up a file, a Bitswap node first sends a want for the root block CID to all the peers it is connected to. If the peers dont have the block, the node queries the Distributed Hash Table ([DHT](https://docs.ipfs.io/guides/concepts/dht/)) to ask who has the root block. Any peers that respond with the root block are added to a session. From now on Bitswap only sends wants to peers in the session, so as not to flood the network with requests.
To find out which peers have the blocks that make up a file, a Bitswap node first sends a want for the root block CID to all the peers it is connected to. If the peers dont have the block, the node queries the Distributed Hash Table ([DHT](https://docs.ipfs.tech/guides/concepts/dht/)) to ask who has the root block. Any peers that respond with the root block are added to a session. From now on Bitswap only sends wants to peers in the session, so as not to flood the network with requests.
The node sends out a want for each CID to several peers in the session in parallel, because not all peers will have all blocks. If the node starts receiving a lot of duplicate blocks, it sends a want for each CID to fewer peers. If the node gets timeouts waiting for blocks, it sends a want for each CID to more peers. In this way the node tries to maintain a high download speed without too many duplicate blocks.
+4 -4
View File
@@ -35,7 +35,7 @@ It's been a long and emotional voyage but this refactor brings a plethora of inc
Using `async`/`await` in JavaScript is gaining a _lot_ of traction in the ecosystem and is rapidly becoming the de facto way of writing idiomatic JS. We want js-ipfs to **move with the times and continue to be attractive to contributors** by using modern JS features, techniques and practices. The big idea with these changes is for the code to be easier to contribute to, easier to understand, easier to maintain, and be faster and smaller than ever.
This change is so big, and so significant, we wrote a whole [blog post](https://blog.ipfs.io/2020-02-01-async-await-refactor/) about it to explain the motivations behind the changes...in ~~excruciating~~ delightful depth 🤣!
This change is so big, and so significant, we wrote a whole [blog post](https://blog.ipfs.tech/2020-02-01-async-await-refactor/) about it to explain the motivations behind the changes...in ~~excruciating~~ delightful depth 🤣!
We've also compiled some stats on this refactor for your viewing pleasure:
@@ -199,7 +199,7 @@ There are significant and breaking core API changes in this release. Please see
## Other changes
- libp2p has been upgraded to 0.27, which also includes breaking changes to it's core API. Please see the release announcement post for more info:
- https://blog.ipfs.io/2020-02-07-js-libp2p-0-27/
- https://blog.ipfs.tech/2020-02-07-js-libp2p-0-27/
- The protocol _name_ for peer IDs in multiaddrs has changed from 'ipfs' to 'p2p'. There's no changes to data on the wire but this change is seen when multiaddrs are converted to strings.
# ❤️ Huge thank you to everyone that made this release possible
@@ -317,9 +317,9 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label in the [js-ipfs repo](https://github.com/ipfs/js-ipfs/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at https://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at https://discuss.ipfs.tech/ and help users finding their answers.
- Join the [🚀 IPFS Core Implementations Weekly Sync 🛰](https://github.com/ipfs/team-mgmt/issues/992) and be part of the action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](https://discuss.ipfs.io). We are also available at the `#ipfs` channel on Freenode.
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](https://discuss.ipfs.tech). We are also available at the `#ipfs` channel on Freenode.
@@ -24,7 +24,7 @@ We also take a look at the evolution of the [CID specification](https://github.c
### CID Inspector
Did you know you can paste any IPFS CID into the [**CID Inspector**](https://cid.ipfs.io/) for a human-friendly breakdown of its multihash format and length, multicodec, multibase, and version? It can even convert CIDv0 to CIDv1! The awesome [Oli Evans](https://github.com/olizilla) built this super-useful visualization tool that we explore in this new tutorial and which you can now access from our coding challenges.
Did you know you can paste any IPFS CID into the [**CID Inspector**](https://cid.ipfs.tech/) for a human-friendly breakdown of its multihash format and length, multicodec, multibase, and version? It can even convert CIDv0 to CIDv1! The awesome [Oli Evans](https://github.com/olizilla) built this super-useful visualization tool that we explore in this new tutorial and which you can now access from our coding challenges.
![CID Inspector](../assets/084-explore-the-anatomy-of-a-cid-on-protoschool-cid-inspector.png)
+3 -3
View File
@@ -13,7 +13,7 @@ tags:
---
![IPFS built-in to Opera for Android](../assets/086-ipfs-in-opera-for-android-banner.png)
As we hinted in our previous post about [IPFS in web browsers](https://blog.ipfs.io/2019-10-08-ipfs-browsers-update/), IPFS support in the Opera web browser has been in development for some time.
As we hinted in our previous post about [IPFS in web browsers](https://blog.ipfs.tech/2019-10-08-ipfs-browsers-update/), IPFS support in the Opera web browser has been in development for some time.
Today, **Opera for Android 57** is live in the Google Play Store with default support for IPFS with a native handler for `ipfs://` addresses that redirects to the HTTP gateway of your choosing! [Install Opera Android with IPFS now](https://play.google.com/store/apps/details?id=com.opera.browser).
@@ -55,7 +55,7 @@ Theres a lot more work to do in maturing [naming in IPFS and distributed web
You can register _decentralized domain names_ that map to IPFS addresses using services like [Unstoppable Domains](https://unstoppabledomains.com/) or the [Ethereum Name System (ENS)](https://medium.com/the-ethereum-name-service/ethdns-9d56298fa38a?source=rss----63df5ce4636f---4).
You can also register and use any _DNS_ domain name, and map it to IPFS addresses using services like [Terminal.co](https://terminal.co) or tools like [DNSLink](https://docs.ipfs.io/guides/concepts/dnslink/).
You can also register and use any _DNS_ domain name, and map it to IPFS addresses using services like [Terminal.co](https://terminal.co) or tools like [DNSLink](https://docs.ipfs.tech/guides/concepts/dnslink/).
## Implementation
@@ -65,7 +65,7 @@ IPFS features in this implementation:
* Implements the [IPFS Web Browser Addressing specification](https://github.com/ipfs/in-web-browsers/blob/master/ADDRESSING.md), both `ipfs://` and `ipns://`
* Configurable HTTP gateway, with options to use gateways like `dweb.link`, Infura, or a local node
* Supports [subdomain gateways](https://docs.ipfs.io/how-to/address-ipfs-on-web/#subdomain-gateway) for secure web apps
* Supports [subdomain gateways](https://docs.ipfs.tech/how-to/address-ipfs-on-web/#subdomain-gateway) for secure web apps
* Supports mixed protocol use, such as loading images over IPFS in an HTTP web page
Read on to learn more about these features.
+5 -5
View File
@@ -191,13 +191,13 @@ Would you like to contribute to the IPFS project and dont know how? Well, the
- Check the issues with the `help wanted` label in the [js-ipfs repo](https://github.com/ipfs/js-ipfs/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute: https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at https://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at https://discuss.ipfs.tech/ and help users finding their answers.
- Join the [🚀 IPFS Core Implementations Weekly Sync 🛰](https://github.com/ipfs/team-mgmt/issues/992) and be part of the action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works, and what you can do with it is at [discuss.ipfs.io](https://discuss.ipfs.io). We are also available at the `#ipfs` channel on Freenode.
The best place to ask your questions about IPFS, how it works, and what you can do with it is at [discuss.ipfs.tech](https://discuss.ipfs.tech). We are also available at the `#ipfs` channel on Freenode.
[unixfs]: https://docs.ipfs.io/guides/concepts/unixfs/
[cid]: https://docs.ipfs.io/guides/concepts/cid/
[mfs]: https://docs.ipfs.io/guides/concepts/mfs/
[unixfs]: https://docs.ipfs.tech/guides/concepts/unixfs/
[cid]: https://docs.ipfs.tech/guides/concepts/cid/
[mfs]: https://docs.ipfs.tech/guides/concepts/mfs/
+2 -2
View File
@@ -14,7 +14,7 @@ If youve spent time in the Web3 ecosystem, youve probably come across work
### Motivation
As with every growing ecosystem, theres a lot to be done to make IPFS successful. Last June, we gathered with the rest of the community at [IPFS Camp](https://blog.ipfs.io/2019-07-08-ipfs-camp-recap/), where the variety and vitality of the projects building in this space was exemplified in the SciFi fair, showcasing projects from Brave, Metamask, Textile, Berty, and more. Spending time with this thriving ecosystem (while immensely inspiring), also clarified the demand for more IPFS tooling: the functionality, features, and integrations outside the core IPFS protocol to help accelerate development by many projects across the community.
As with every growing ecosystem, theres a lot to be done to make IPFS successful. Last June, we gathered with the rest of the community at [IPFS Camp](https://blog.ipfs.tech/2019-07-08-ipfs-camp-recap/), where the variety and vitality of the projects building in this space was exemplified in the SciFi fair, showcasing projects from Brave, Metamask, Textile, Berty, and more. Spending time with this thriving ecosystem (while immensely inspiring), also clarified the demand for more IPFS tooling: the functionality, features, and integrations outside the core IPFS protocol to help accelerate development by many projects across the community.
The newly updated IPFS Grant Platform aims to support exactly this need—helping the community coordinate and fund production of high-leverage tooling to grow IPFS adoption and usability. We call it the IPFS Grant _Platform_, because its intended to bring together community members at every stage of the grant-making and grant-writing process. Anyone can propose new RFPs or bounties for features and enhancements theyd like to see, and the process of refining and selecting grant recipients happens transparently in the open. Multiple organizations can even fund grants together!
@@ -24,7 +24,7 @@ We soft launched this updated Grants Platform in Q1, with a [quarterly focus](ht
### Launch and Q2 Focus
This batch has already borne fruit, including [half a dozen completed bounties](https://github.com/ipfs/devgrants/projects/1), the beginnings of a [Rust IPFS implementation](https://github.com/ipfs-rust/rust-ipfs), [new user research into IPFS on mobile](https://blog.ipfs.io/2020-04-10-ipfs-mobile-design-research/), and more! Therefore, were excited to **officially launch the IPFS Grants Platform!** Hop over to the [repo](https://github.com/ipfs/devgrants) to learn more. Well be following up soon with an IPFS Grants Guide here on the blog, including a deep dive into the different grant types and how to participate.
This batch has already borne fruit, including [half a dozen completed bounties](https://github.com/ipfs/devgrants/projects/1), the beginnings of a [Rust IPFS implementation](https://github.com/ipfs-rust/rust-ipfs), [new user research into IPFS on mobile](https://blog.ipfs.tech/2020-04-10-ipfs-mobile-design-research/), and more! Therefore, were excited to **officially launch the IPFS Grants Platform!** Hop over to the [repo](https://github.com/ipfs/devgrants) to learn more. Well be following up soon with an IPFS Grants Guide here on the blog, including a deep dive into the different grant types and how to participate.
Unfortunately, spinning up this Grants Platform also happened to coincide with the spread of the worst pandemic this century. Therefore, were making the Q2 [Quarterly Focus](https://github.com/ipfs/devgrants/blob/master/FOCUS.md) **COVID-19 relief** to help the many projects and tools working to contain the spread and impact of this disease. This means proposals like making COVID-19 related datasets [more durable and available](https://github.com/ipfs/ipfs-cluster/issues/1021), enabling local community support networks, empowering remote work during quarantine, and so on, will be given first consideration.
@@ -10,7 +10,7 @@ tags:
- 'project planning'
---
For IPFS to succeed, it needs to be where people will use it, and for the vast majority around the world that is on their smartphones. In the [introductory post](https://blog.ipfs.io/2020-04-10-ipfs-mobile-design-research/), we laid out the intent of this project - to provide a foundation for successful IPFS apps on mobile by understanding how people are building, using and thinking about P2P and IPFS on mobile today, and then publishing tools to guide the next wave of application builders.
For IPFS to succeed, it needs to be where people will use it, and for the vast majority around the world that is on their smartphones. In the [introductory post](https://blog.ipfs.tech/2020-04-10-ipfs-mobile-design-research/), we laid out the intent of this project - to provide a foundation for successful IPFS apps on mobile by understanding how people are building, using and thinking about P2P and IPFS on mobile today, and then publishing tools to guide the next wave of application builders.
In this first phase of the work, we carried out primary research and analysis consisting of qualitative interviews, and surveys of technology and interaction methods. Were now ready to publish the results of that research!
+7 -7
View File
@@ -27,9 +27,9 @@ The distributed web is changing that. IPFS rearchitects the web to work peer to
The IPFS Public Network has experienced substantial growth (scaling 30x in 2019!), bringing new opportunities for IPFS users and the wider InterPlanetary ecosystem. Major deployments and applications that require fast and reliable connectivity have started building on and supporting IPFS:
- **Opera & Brave:** [Opera](https://blog.ipfs.io/2020-03-30-ipfs-in-opera-for-android/) became the first major web browser to offer default IPFS support on Android, shortly after [Brave](https://blog.ipfs.io/2019-10-08-ipfs-browsers-update/) started directly embedding the IPFS Companion extension (complete with a built-in js-ipfs node). This means millions of people around the world now have access to the decentralized web built directly into their browsers.
- **Opera & Brave:** [Opera](https://blog.ipfs.tech/2020-03-30-ipfs-in-opera-for-android/) became the first major web browser to offer default IPFS support on Android, shortly after [Brave](https://blog.ipfs.tech/2019-10-08-ipfs-browsers-update/) started directly embedding the IPFS Companion extension (complete with a built-in js-ipfs node). This means millions of people around the world now have access to the decentralized web built directly into their browsers.
- **Microsoft ION:** [Microsoft has turned to IPFS](https://techcommunity.microsoft.com/t5/azure-active-directory-identity/toward-scalable-decentralized-identifier-systems/ba-p/560168) as the content addressed storage layer to power its take on a decentralized identity system.
- **Netflix:** [We began collaborating](https://blog.ipfs.io/2020-02-14-improved-bitswap-for-container-distribution/) on ways to incorporate peer-to-peer services into Netflixs developer tooling to speed up container image distribution in their build pipeline.
- **Netflix:** [We began collaborating](https://blog.ipfs.tech/2020-02-14-improved-bitswap-for-container-distribution/) on ways to incorporate peer-to-peer services into Netflixs developer tooling to speed up container image distribution in their build pipeline.
- **Cloudflare:** Cloudflare runs a [distributed web gateway](https://www.cloudflare.com/distributed-web-gateway/) to serve content hosted on IPFS easily, quickly, and securely.
We worked with these organizations, as well as many active IPFS users and our broader community, to source feedback and identify priorities for this release and the remainder of 2020. With their help, we zeroed in on two major pain points: performance and reliability.
@@ -42,10 +42,10 @@ Here are a few of the improvements made in IPFS 0.5.0:
![Improvements to go-ipfs 0.5.0](../assets/090-go-ipfs-0-5-0-Infographic.png)
- **Faster content discovery:** IPFS 0.5.0 makes finding and sharing data in the network much faster, thanks to large improvements to our [DHT logic](https://docs.ipfs.io/concepts/dht/). More efficient routing and providing—already 2-3x faster—lowers bandwidth usage and background traffic. Weve also updated our experimental QUIC transport to reduce connection latency and round-trips—with the aim to make this the default next release!
- **Speedy files transfers:** We sped up our file transfer mechanism, [Bitswap](https://docs.ipfs.io/concepts/bitswap/), to make sharing data between many nodes much faster. [Read more](https://blog.ipfs.io/2020-02-14-improved-bitswap-for-container-distribution/) about how we worked with Netflix to benchmark and stress-test these improvements!
- **Faster content discovery:** IPFS 0.5.0 makes finding and sharing data in the network much faster, thanks to large improvements to our [DHT logic](https://docs.ipfs.tech/concepts/dht/). More efficient routing and providing—already 2-3x faster—lowers bandwidth usage and background traffic. Weve also updated our experimental QUIC transport to reduce connection latency and round-trips—with the aim to make this the default next release!
- **Speedy files transfers:** We sped up our file transfer mechanism, [Bitswap](https://docs.ipfs.tech/concepts/bitswap/), to make sharing data between many nodes much faster. [Read more](https://blog.ipfs.tech/2020-02-14-improved-bitswap-for-container-distribution/) about how we worked with Netflix to benchmark and stress-test these improvements!
- **Faster file adding:** Its now up to 2x faster to add files to the IPFS network using the Badger datastore on Linux and MacOS. Huzzah for async writes! Weve also configured Badger to use less memory.
- **Faster and more reliable mutable links:** The Inter-Planetary Name System ([IPNS](https://docs.ipfs.io/concepts/ipns/)), our system for creating mutable links for content addresses, now provides faster naming lookups and has a new experimental pubsub transport to speed up record distribution. Providing an IPNS record is now _30-40x_ faster in 1K node network simulations!
- **Faster and more reliable mutable links:** The Inter-Planetary Name System ([IPNS](https://docs.ipfs.tech/concepts/ipns/)), our system for creating mutable links for content addresses, now provides faster naming lookups and has a new experimental pubsub transport to speed up record distribution. Providing an IPNS record is now _30-40x_ faster in 1K node network simulations!
To ensure the reliability of all these large-scale improvements, we created [Testground](http://testground.ipfs.team/), a new testing tool for peer-to-peer networks at scale. This allowed us to validate and benchmark each enhancement across many network configurations with 1K+ node simulations—increasing development velocity and rigor.
@@ -75,7 +75,7 @@ With our new testing and release process, IPFS 0.5.0 has already been put to use
**_Brendan OBrien, Qri:_** “Our engineering time is one of our most valuable resources. Were now seeing a much more mature version of IPFS, which means we're able to spend more time on our own code vs our dependencies. It took less than a day to upgrade to IPFS 0.5.0, allowing us to commit more of our engineering time to building and fixing our own things.”
If youre running IPFS, we highly encourage you to upgrade ASAP to take advantage of all these improvements! Check out our [release notes](https://docs.ipfs.io/recent-releases/go-ipfs-0-5/) and [upgrade how-to](https://docs.ipfs.io/recent-releases/go-ipfs-0-5/update-procedure) to get started today!
If youre running IPFS, we highly encourage you to upgrade ASAP to take advantage of all these improvements! Check out our [release notes](https://docs.ipfs.tech/recent-releases/go-ipfs-0-5/) and [upgrade how-to](https://docs.ipfs.tech/recent-releases/go-ipfs-0-5/update-procedure) to get started today!
## Thank you, thank you, and thank you.
@@ -100,7 +100,7 @@ Also, a huge thank you to [everyone who contributed](https://github.com/ipfs/go-
Wed like to know what you think and help answer any questions you may have. [Please join us for a virtual meetup](https://www.meetup.com/San-Francisco-IPFS/events/270212268/) on **Friday, May 1st**, to deep-dive on the improvements in this release and field questions and feedback.
[![IPFS 0.5 Launch Meetup](../assets/090-go-ipfs-0-5-0-launch-meetup.png)](https://www.meetup.com/San-Francisco-IPFS/events/270212268/)
In the meantime, get started by [installing go-ipfs](https://dist.ipfs.io/#go-ipfs) or [upgrading to go-ipfs 0.5](https://docs.ipfs.io/recent-releases/go-ipfs-0-5/update-procedure) to see the improvements yourself!
In the meantime, get started by [installing go-ipfs](https://dist.ipfs.tech/#go-ipfs) or [upgrading to go-ipfs 0.5](https://docs.ipfs.tech/recent-releases/go-ipfs-0-5/update-procedure) to see the improvements yourself!
And, of course, there are many other ways to get involved with IPFS based on your skill set, interest, and availability. Please check out [our contribution page](https://github.com/ipfs/community/blob/master/CONTRIBUTING.md) on GitHub for guidance and next steps.
+6 -6
View File
@@ -9,11 +9,11 @@ tags:
- 'community'
---
Since its founding in 2014, the IPFS project has been stewarded by the [core IPFS working groups](https://github.com/ipfs/team-mgmt/blob/master/TEAMS_ROLES_STRUCTURES.md#active-teams), including developers, designers, researchers and project managers that work very hard towards its [success](https://blog.ipfs.io/weekly-84/).
Since its founding in 2014, the IPFS project has been stewarded by the [core IPFS working groups](https://github.com/ipfs/team-mgmt/blob/master/TEAMS_ROLES_STRUCTURES.md#active-teams), including developers, designers, researchers and project managers that work very hard towards its [success](https://blog.ipfs.tech/weekly-84/).
However, this success would be impossible without the participation of the open source community that has grown around IPFS - with participants from individuals, to nascent community-owned tools, to large organizations. We are lucky to have this thriving and influential community participating in our journey towards decentralization during these years. With their help, weve grown IPFS to empower [hundreds of tools, applications and projects](https://awesome.ipfs.io/).
A thriving, growing, and participatory open source community is key to the success of the IPFS project, and continues to be a focus for the core IPFS working groups. We want every user and developer interested in building IPFS applications — or willing to join forces to fix and improve the codebase — to feel welcomed, informed, and empowered by the community. Therefore, as part of our [secondary 2020 focus on contributor velocity and support](https://blog.ipfs.io/2020-02-10-our-focus-for-2020/#increasing-contributor-velocity-supporting-adoption) we will:
A thriving, growing, and participatory open source community is key to the success of the IPFS project, and continues to be a focus for the core IPFS working groups. We want every user and developer interested in building IPFS applications — or willing to join forces to fix and improve the codebase — to feel welcomed, informed, and empowered by the community. Therefore, as part of our [secondary 2020 focus on contributor velocity and support](https://blog.ipfs.tech/2020-02-10-our-focus-for-2020/#increasing-contributor-velocity-supporting-adoption) we will:
- Improve how users and developers get help, reducing response times and improving access to existing information and documentation.
- Reduce the number of pull requests and issue reports that stay in limbo by giving consistent feedback on status, prioritization and team capacity.
@@ -22,11 +22,11 @@ A thriving, growing, and participatory open source community is key to the succe
After discussion with active IPFS contributors and research into other OSS community best practices, weve identified a few changes to help improve the IPFS contributor experience:
- Contributors need a clear and explicit contribution process to the more than 100 active repositories in the IPFS organization. Any new contribution should have clarity on who is going to review the submission, what priority it has, and what the next steps are. To meet this need, well be drafting a new process in the [official IPFS forums](http://discuss.ipfs.io/) so that it can be iterated on by the community.
- Contributors need a clear and explicit contribution process to the more than 100 active repositories in the IPFS organization. Any new contribution should have clarity on who is going to review the submission, what priority it has, and what the next steps are. To meet this need, well be drafting a new process in the [official IPFS forums](http://discuss.ipfs.tech/) so that it can be iterated on by the community.
- The new IPFS Github organization [labelling taxonomy](https://github.com/ipfs/community/blob/master/ISSUE_LABELS.md) (recently rolled out to all repositories) aims to improve triaging of discussions and requests to clearly reflect status and priority. This comes with an additional effort to consolidate and clean up outdated issues and inactive repositories. As a result, many inactive repos have been moved to the [ipfs-inactive Github organization](https://github.com/ipfs-inactive) to clearly differentiate code that is actively maintained from code that is dormant or deprecated.
- To help funnel users and devs where the community can better support them, our [IPFS discussion forums](https://discuss.ipfs.io/) will be more prominently displayed (in docs, READMEs and issue templates) as the default venue for support (along with pointers to [ipfs.io/help](https://ipfs.io/help)). Some discussion-only and meta-topic repositories are also in the process of migrating their conversations to the forums, where they can reach a wider audience and be more easily searchable and discoverable by other users.
- To help funnel users and devs where the community can better support them, our [IPFS discussion forums](https://discuss.ipfs.tech/) will be more prominently displayed (in docs, READMEs and issue templates) as the default venue for support (along with pointers to [ipfs.io/help](https://ipfs.io/help)). Some discussion-only and meta-topic repositories are also in the process of migrating their conversations to the forums, where they can reach a wider audience and be more easily searchable and discoverable by other users.
- New contributors to repositories will now receive automated responses on their first submission, giving context on the process outlined above and reminders for needed information. This will help reduce the number of round trips for contributors and reviewers/maintainers.
- A [major review of the documentation](https://docs.ipfs.io/) site is already underway to provide better developer documentation for our major implementations and products. [Watch this space!](https://github.com/ipfs/docs/milestones)
- A [major review of the documentation](https://docs.ipfs.tech/) site is already underway to provide better developer documentation for our major implementations and products. [Watch this space!](https://github.com/ipfs/docs/milestones)
![IPFS Autoresponder and labels](../assets/091-dev-exp-labels-autoresponder.png)
@@ -35,7 +35,7 @@ At the same time, there are some things that are NOT changing:
- Old issues will not be closed or locked because they are old, or stale, or very low priority. Some parts of the IPFS project have a large backlog and it is important that the information is not lost or dismissed, but can be found by others interested in the topic.
- The core working groups will still dedicate a large portion of time to help users, answer questions, and review and merge contributions. However, there will be an extra focus on keeping discussions on point and limiting information explosion.
We want to empower the developer community to build amazing things with IPFS, and these contributor experience changes aim to make it faster and easier to start participating in the IPFS Community (whether filing issues or making PRs). However, improving that experience requires feedback and iteration as we refine our next steps as a community. For this, [a new discussion thread](https://discuss.ipfs.io/t/ideas-to-improve-the-ipfs-developer-experience/7750) is available in the forum, where anyone can post new proposals or give suggestions/feedback on recent changes.
We want to empower the developer community to build amazing things with IPFS, and these contributor experience changes aim to make it faster and easier to start participating in the IPFS Community (whether filing issues or making PRs). However, improving that experience requires feedback and iteration as we refine our next steps as a community. For this, [a new discussion thread](https://discuss.ipfs.tech/t/ideas-to-improve-the-ipfs-developer-experience/7750) is available in the forum, where anyone can post new proposals or give suggestions/feedback on recent changes.
We hope these measures help everyone build a happy and growing IPFS developer community!
+1 -1
View File
@@ -13,7 +13,7 @@ tags:
Testing peer-to-peer (p2p) systems is hard. Doing so reliably and reproducibly is even harder. Today, **were releasing [Testground v0.5](https://github.com/testground/testground/releases/tag/v0.5.0) to the world**. This is a huge milestone for us, and for the wider p2p ecosystem. In this post, well walk you through what Testground is, how to get started, whats coming next, and the backstory behind Testground itself.
If you followed the [IPFS v0.5.0 release announcements](https://blog.ipfs.io/2020-04-28-go-ipfs-0-5-0/), you will have heard about **Testground**. It was a vital piece of our engineering endeavour and unlocked major improvements in quality, velocity, and reliability. Without [Testground](https://docs.testground.ai/), we wouldve been unable to measure, iterate on, and validate the massive DHT and Bitswap improvements in v0.5.0 at scale.
If you followed the [IPFS v0.5.0 release announcements](https://blog.ipfs.tech/2020-04-28-go-ipfs-0-5-0/), you will have heard about **Testground**. It was a vital piece of our engineering endeavour and unlocked major improvements in quality, velocity, and reliability. Without [Testground](https://docs.testground.ai/), we wouldve been unable to measure, iterate on, and validate the massive DHT and Bitswap improvements in v0.5.0 at scale.
Testground was also indispensable in evaluating our latest [libp2p gossipsub 1.1 security extensions](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.1.md). It allowed us to simulate a range of attacks, over 10k instance clusters, packed with sybils and honest nodes, hammering the network with pubsub messages, recording every single event for later analysis and comparison (expect a report soon).
+1 -1
View File
@@ -16,7 +16,7 @@ tags:
![](../assets/093-ipfs-pinning-summit-recap-header-image.png)
The first-ever [IPFS Pinning Summit](https://ipfspinningsummit.com/) brought together [IPFS pinning services](https://docs.ipfs.io/guides/concepts/pinning/), infra providers, and users for 2 days of presentations & meetings to discuss the current state of IPFS infrastructure, services, and tools - and the future opportunities in this space.
The first-ever [IPFS Pinning Summit](https://ipfspinningsummit.com/) brought together [IPFS pinning services](https://docs.ipfs.tech/guides/concepts/pinning/), infra providers, and users for 2 days of presentations & meetings to discuss the current state of IPFS infrastructure, services, and tools - and the future opportunities in this space.
Day 1 focused on the accelerating growth of the IPFS ecosystem - especially the adoption and improvement of IPFS tooling and support for verticals like Web3 applications, DevOps pipelines, and Large Data on IPFS. The day also included presentations from major IPFS pinning services like [Infura](https://infura.io/) and [Pinata](https://pinata.cloud/), tools smoothing the IPFS upgrade UX like [Fleek](https://fleek.co/) and [UnstoppableDomains](https://unstoppabledomains.com/), and applications building on top of IPFS with strong use cases for IPFS infrastructure and tooling like [Ceramic](https://www.ceramic.network/), [Ucam](https://ucam.iotex.io/), and [Filecoin](https://filecoin.io/).
+11 -11
View File
@@ -13,18 +13,18 @@ tags:
![](../assets/095-road-to-dht-header-image.png =1000x)
At the end of April, we released our largest update to go-ipfs to date: [IPFS 0.5.0](https://blog.ipfs.io/2020-04-28-go-ipfs-0-5-0/). This upgrade brings major performance and reliability improvements to IPFS — especially on the content discovery and routing front. These gains are brought to you largely by our rework of the Distributed Hash Table (DHT) which powers most peer and content discovery in the IPFS Public Network.
At the end of April, we released our largest update to go-ipfs to date: [IPFS 0.5.0](https://blog.ipfs.tech/2020-04-28-go-ipfs-0-5-0/). This upgrade brings major performance and reliability improvements to IPFS — especially on the content discovery and routing front. These gains are brought to you largely by our rework of the Distributed Hash Table (DHT) which powers most peer and content discovery in the IPFS Public Network.
Wed like to take you through our journey to _re-write_ the DHT - from identifying the underlying issues, to how we approached designing a solution, to ensuring it would **work** in practice. Our work led to major performance gains, as well as a new development process and [Testground](https://github.com/testground/testground), a whole new tool for large-scale network testing [(read more)](https://blog.ipfs.io/2020-05-06-launching-testground/).
Wed like to take you through our journey to _re-write_ the DHT - from identifying the underlying issues, to how we approached designing a solution, to ensuring it would **work** in practice. Our work led to major performance gains, as well as a new development process and [Testground](https://github.com/testground/testground), a whole new tool for large-scale network testing [(read more)](https://blog.ipfs.tech/2020-05-06-launching-testground/).
**If you want to make use of these new improvements, please [upgrade IPFS now](https://docs.ipfs.io/recent-releases/go-ipfs-0-5/update-procedure/#use-ipfs-update)!**
**If you want to make use of these new improvements, please [upgrade IPFS now](https://docs.ipfs.tech/recent-releases/go-ipfs-0-5/update-procedure/#use-ipfs-update)!**
<br />
![](../assets/095-road-to-dht-brendan-quote.png =1000x)
## First a refresher: Whats the DHT?
The [DHT, or distributed hash table](https://docs.ipfs.io/guides/concepts/dht/), acts like both a catalog and navigation system for IPFS, helping the network keep track of and find data. A regular hash table is a key-value store where the keys are hashed and stored in one place. In the case of IPFS, the keys are the Content Identifiers (CIDs) of a block of data, and the values are the set of peers who have each block.
The [DHT, or distributed hash table](https://docs.ipfs.tech/guides/concepts/dht/), acts like both a catalog and navigation system for IPFS, helping the network keep track of and find data. A regular hash table is a key-value store where the keys are hashed and stored in one place. In the case of IPFS, the keys are the Content Identifiers (CIDs) of a block of data, and the values are the set of peers who have each block.
The DHT distributes and stores these pairs of keys and values in small tables across many nodes or peers throughout the network. Peers, in turn, store information about where to physically locate specific content. Kademlia, our DHT implementation, helps keep track of which nodes are _providing_ what data to others in the network.
@@ -63,11 +63,11 @@ This meant some hard calls on prioritization: focusing our working groups on a t
Wed learned from our early patches that a network of our size **needs** to be able to test changes in a close to real-world setting to be able to make improvements quickly and reliably. We had the means to do unit tests and small simulations that could prove out basic tweaks, but no way to replicate thousands of nodes or typical network configurations in order to benchmark major changes. This left us without real data on the true impact of changes until they had gone live.
We had to change this quickly to be successful in righting the DHT. We formed a working group to remedy this gap; [Testground](https://blog.ipfs.io/2020-05-06-launching-testground/) was born. Testground is a platform for testing, benchmarking, and simulating distributed and peer-to-peer systems at scale, allowing us to validate the needed fixes and pressure test the broad DHT changes before IPFS 0.5.0 went live.
We had to change this quickly to be successful in righting the DHT. We formed a working group to remedy this gap; [Testground](https://blog.ipfs.tech/2020-05-06-launching-testground/) was born. Testground is a platform for testing, benchmarking, and simulating distributed and peer-to-peer systems at scale, allowing us to validate the needed fixes and pressure test the broad DHT changes before IPFS 0.5.0 went live.
Testground gave us the tools to do _data-driven development_ in our DHT rewrite. It also helped us in other parts of the IPFS 0.5.0 release: like prototyping new potential solutions, comparing potential fixes against each other, and stress-testing the edge cases and upgrade process. The repeatability and introspection Testground gave us was _critical_ to accelerating our development velocity to reliably improve IPFS.
With the [launch of Testground v0.5](https://blog.ipfs.io/2020-05-06-launching-testground/), were excited to share this tool with others as well to benchmark and evaluate their p2p networks. **[Start using Testground today!](https://docs.testground.ai/)**
With the [launch of Testground v0.5](https://blog.ipfs.tech/2020-05-06-launching-testground/), were excited to share this tool with others as well to benchmark and evaluate their p2p networks. **[Start using Testground today!](https://docs.testground.ai/)**
## Now for the “fix”
@@ -80,14 +80,14 @@ With Testground, we were able to benchmark and quantify our DHT issues around pe
Testground allowed us to tweak these parameters to measure which changes would have the most impact on network performance. As we gathered for a Research Summit in January to compare potential mitigations to the ongoing network challenges, we were now empowered with a **quantitative** understanding of the network structure and the tools to immediately prototype and test out the resulting hypotheses from our discussions.
What followed was a whirlwind of test-plan writing to measure each change to the DHT logic in a real-world network setting. We tested our new systems for diagnosing undialable peers and removing them from our routing tables, measured success rates for ending our queries earlier, and even re-benchmarked our [improvements to Bitswap](https://blog.ipfs.io/2020-02-14-improved-bitswap-for-container-distribution/) to find additional improvements. Throughout these refactors, we were able to continually validate the performance of these changes with our Testground simulations, as well as a few well-placed canary nodes to run benchmarks against the full public network.
What followed was a whirlwind of test-plan writing to measure each change to the DHT logic in a real-world network setting. We tested our new systems for diagnosing undialable peers and removing them from our routing tables, measured success rates for ending our queries earlier, and even re-benchmarked our [improvements to Bitswap](https://blog.ipfs.tech/2020-02-14-improved-bitswap-for-container-distribution/) to find additional improvements. Throughout these refactors, we were able to continually validate the performance of these changes with our Testground simulations, as well as a few well-placed canary nodes to run benchmarks against the full public network.
With these tools in hand, we sprinted 🏃‍♂️💨 from the summit to our release to make it all happen. From identifying the problem with the community, to scoping potential solutions, building testing tools, learning from past research, and executing on the needed technical fixes - this marathon of a release certainly put us through our paces - resulting in an [epic list of new and improved features](https://docs.ipfs.io/recent-releases/go-ipfs-0-5/features/).
With these tools in hand, we sprinted 🏃‍♂️💨 from the summit to our release to make it all happen. From identifying the problem with the community, to scoping potential solutions, building testing tools, learning from past research, and executing on the needed technical fixes - this marathon of a release certainly put us through our paces - resulting in an [epic list of new and improved features](https://docs.ipfs.tech/recent-releases/go-ipfs-0-5/features/).
Up next, in **Part 2 of this DHT Deep Dive**, we'll walk you through exactly whats new with the DHT and go even deeper on the improvements we saw. In the meantime, if you havent upgraded yet, **[please do](https://docs.ipfs.io/recent-releases/go-ipfs-0-5/update-procedure/#use-ipfs-update)**. Well all reap the benefits of a more performant DHT as more and more nodes update!
Up next, in **Part 2 of this DHT Deep Dive**, we'll walk you through exactly whats new with the DHT and go even deeper on the improvements we saw. In the meantime, if you havent upgraded yet, **[please do](https://docs.ipfs.tech/recent-releases/go-ipfs-0-5/update-procedure/#use-ipfs-update)**. Well all reap the benefits of a more performant DHT as more and more nodes update!
### Learn more
- IPFS 0.5.0 Announcement: https://blog.ipfs.io/2020-04-28-go-ipfs-0-5-0/
- IPFS 0.5.0 Announcement: https://blog.ipfs.tech/2020-04-28-go-ipfs-0-5-0/
- Release Highlights: https://www.youtube.com/watch?v=G8FvB_0HlCE
- TestGround: https://blog.ipfs.io/2020-05-06-launching-testground/
- TestGround: https://blog.ipfs.tech/2020-05-06-launching-testground/
+5 -5
View File
@@ -166,15 +166,15 @@ Would you like to contribute to the IPFS project and dont know how? Well, the
- Check the issues with the `help wanted` label in the [js-ipfs repo](https://github.com/ipfs/js-ipfs/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute: https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at https://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at https://discuss.ipfs.tech/ and help users finding their answers.
- Join the [🚀 IPFS Core Implementations Weekly Sync 🛰](https://github.com/ipfs/team-mgmt/issues/992) and be part of the action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works, and what you can do with it is at [discuss.ipfs.io](https://discuss.ipfs.io). We are also available at the `#ipfs` channel on Freenode.
The best place to ask your questions about IPFS, how it works, and what you can do with it is at [discuss.ipfs.tech](https://discuss.ipfs.tech). We are also available at the `#ipfs` channel on Freenode.
[unixfs]: https://docs.ipfs.io/guides/concepts/unixfs/
[cid]: https://docs.ipfs.io/guides/concepts/cid/
[mfs]: https://docs.ipfs.io/guides/concepts/mfs/
[unixfs]: https://docs.ipfs.tech/guides/concepts/unixfs/
[cid]: https://docs.ipfs.tech/guides/concepts/cid/
[mfs]: https://docs.ipfs.tech/guides/concepts/mfs/
[libp2p]: https://github.com/libp2p/js-libp2p
[ipld]: https://github.com/ipld/js-ipld
+7 -7
View File
@@ -35,9 +35,9 @@ See [ipfs/js-ipfs-bitswap#224](https://github.com/ipfs/js-ipfs-bitswap/pull/224)
## 🤝 go-IPFS v0.5.x compatibility
The new version of go-IPFS brought a whole slew of changes with it—check out our [blog post](https://blog.ipfs.io/2020-04-28-go-ipfs-0-5-0/) for more details.
The new version of go-IPFS brought a whole slew of changes with it—check out our [blog post](https://blog.ipfs.tech/2020-04-28-go-ipfs-0-5-0/) for more details.
The good news is js-IPFS has taken on a whole heap of these features and the `ipfs-http-client` is now 100% compatible with `go-ipfs@0.5.x`. Your `js-IPFS` nodes will now happily chat away to `go-IPFS` nodes over the network via Bitswap and [gossipsub](https://blog.ipfs.io/2020-05-20-gossipsub-v1.1/) too.
The good news is js-IPFS has taken on a whole heap of these features and the `ipfs-http-client` is now 100% compatible with `go-ipfs@0.5.x`. Your `js-IPFS` nodes will now happily chat away to `go-IPFS` nodes over the network via Bitswap and [gossipsub](https://blog.ipfs.tech/2020-05-20-gossipsub-v1.1/) too.
See [ipfs/js-ipfs#3013](https://github.com/ipfs/js-ipfs/pull/3013) for the full rundown.
@@ -149,16 +149,16 @@ Would you like to contribute to the IPFS project and dont know how? Well, the
- Check the issues with the `help wanted` label in the [js-IPFS repo](https://github.com/ipfs/js-ipfs/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute: https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at https://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at https://discuss.ipfs.tech/ and help users finding their answers.
- Join the [🚀 IPFS Core Implementations Weekly Sync 🛰](https://github.com/ipfs/team-mgmt/issues/992) and be part of the action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works, and what you can do with it is at [discuss.ipfs.io](https://discuss.ipfs.io). We are also available at the `#ipfs` channel on Freenode.
The best place to ask your questions about IPFS, how it works, and what you can do with it is at [discuss.ipfs.tech](https://discuss.ipfs.tech). We are also available at the `#ipfs` channel on Freenode.
[unixfs]: https://docs.ipfs.io/guides/concepts/unixfs/
[cid]: https://docs.ipfs.io/guides/concepts/cid/
[mfs]: https://docs.ipfs.io/guides/concepts/mfs/
[unixfs]: https://docs.ipfs.tech/guides/concepts/unixfs/
[cid]: https://docs.ipfs.tech/guides/concepts/cid/
[mfs]: https://docs.ipfs.tech/guides/concepts/mfs/
[libp2p]: https://github.com/libp2p/js-libp2p
[ipld]: https://github.com/ipld/js-ipld
[abortsignal]: https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal
+8 -8
View File
@@ -42,7 +42,7 @@ In addition to Filecoin and Ethereum 2, there are now **more than two dozen** pr
These newcomers to the libp2p ecosystem are a **big deal** - but they actually still make up less than half of all active libp2p nodes! The vast majority of libp2p end users come from dapps, tools, and projects using libp2p through **IPFS**, the InterPlanetary File System!
**Millions of end users** and over **100,000 libp2p nodes** participate in the IPFS network every week. Organizations like [Opera](https://blog.ipfs.io/2020-03-30-ipfs-in-opera-for-android/), [Ethereum](https://medium.com/the-ethereum-name-service/all-the-ways-you-can-surf-the-decentralized-web-today-bf8e7a42fa27), [Brave](https://u.today/brave-browser-in-2020-new-ad-blocks-filters-sdk-and-ipfs), [Netflix](https://blog.ipfs.io/2020-02-14-improved-bitswap-for-container-distribution/), [Microsoft](https://techcommunity.microsoft.com/t5/azure-active-directory-identity/toward-scalable-decentralized-identifier-systems/ba-p/560168), and [Cloudflare](https://www.cloudflare.com/distributed-web-gateway/) have joined the IPFS ecosystem, and hundreds of nascent community-owned projects like [Audius](https://audius.co/), [Fleek](https://fleek.co/), [Textile](http://textile.io/), [Qri](http://qri.io/), [Pinata](http://pinata.cloud), [OpenBazaar](https://openbazaar.org/), [Berty](http://berty.tech/), [Infura](http://infura.io) and [3Box](http://3box.io) are building their businesses with IPFS.
**Millions of end users** and over **100,000 libp2p nodes** participate in the IPFS network every week. Organizations like [Opera](https://blog.ipfs.tech/2020-03-30-ipfs-in-opera-for-android/), [Ethereum](https://medium.com/the-ethereum-name-service/all-the-ways-you-can-surf-the-decentralized-web-today-bf8e7a42fa27), [Brave](https://u.today/brave-browser-in-2020-new-ad-blocks-filters-sdk-and-ipfs), [Netflix](https://blog.ipfs.tech/2020-02-14-improved-bitswap-for-container-distribution/), [Microsoft](https://techcommunity.microsoft.com/t5/azure-active-directory-identity/toward-scalable-decentralized-identifier-systems/ba-p/560168), and [Cloudflare](https://www.cloudflare.com/distributed-web-gateway/) have joined the IPFS ecosystem, and hundreds of nascent community-owned projects like [Audius](https://audius.co/), [Fleek](https://fleek.co/), [Textile](http://textile.io/), [Qri](http://qri.io/), [Pinata](http://pinata.cloud), [OpenBazaar](https://openbazaar.org/), [Berty](http://berty.tech/), [Infura](http://infura.io) and [3Box](http://3box.io) are building their businesses with IPFS.
## 2019 and early 2020 features
@@ -50,12 +50,12 @@ The focus for the year was hardening and evolving the stack - and we blew that o
- In 2019, we added AutoRelay, a feature that ensures any user can launch a libp2p node easily without having to open ports on their router or do anything technically complicated. Relay nodes will handle the relaying of traffic. Coming soon is an automatic upgrade to direct connections from relayed connections.
- We added better connection management, with decaying tags and connection gating.
- We built and released Gossipsub, wrote a [new explainer](https://github.com/libp2p/specs/tree/master/pubsub/gossipsub), and later [enhanced with security extensions](https://blog.ipfs.io/2020-05-20-gossipsub-v1.1/) including peer scoring, opportunistic grafting, peer exchange, and other features.
- We built and released Gossipsub, wrote a [new explainer](https://github.com/libp2p/specs/tree/master/pubsub/gossipsub), and later [enhanced with security extensions](https://blog.ipfs.tech/2020-05-20-gossipsub-v1.1/) including peer scoring, opportunistic grafting, peer exchange, and other features.
- Specs improvement in 2019 has made a night-and-day difference for cross language compatibility and the ease of implementing libp2p in new languages.
- We simplified the go-libp2p codebase by centralizing abstractions and interfaces under the [go-libp2p-core module](https://blog.ipfs.io/2020-05-20-gossipsub-v1.1/), decommissioning 12+ repos along the way. Further codebase simplification is on the roadmap for 2020.
- We simplified the go-libp2p codebase by centralizing abstractions and interfaces under the [go-libp2p-core module](https://blog.ipfs.tech/2020-05-20-gossipsub-v1.1/), decommissioning 12+ repos along the way. Further codebase simplification is on the roadmap for 2020.
- A huge focus for the year was the Async Await refactor in js-libp2p - enabling the use of streaming iterables instead of pullstreams, along with some [interface refactors](https://github.com/libp2p/js-interfaces/tree/master/src/connection#interface-connection).
- The libp2p core team has launched a massive documentation overhaul. Check out [docs site](https://docs.libp2p.io/) and the new [Getting Started guide](https://github.com/libp2p/js-libp2p/blob/master/doc/GETTING_STARTED.md).
- Weve completed a major DHT improvement project. Queries to the DHT are much faster, thus better supporting DHT-intensive applications like [IPFSs name resolver](https://docs.ipfs.io/concepts/ipns/).
- Weve completed a major DHT improvement project. Queries to the DHT are much faster, thus better supporting DHT-intensive applications like [IPFSs name resolver](https://docs.ipfs.tech/concepts/ipns/).
- Support for Noise handshakes has been speced, and is now available in all 7 implementations of libp2p.
- Weve continued to update our QUIC implementation to keep pace with new releases of the QUIC standard. Weve also made progress on implementing QUIC in js.
- We introduced certified peer records to enhance foundational protocol security. Theyre used by gossipsub and the DHT, and are available to application protocols too.
@@ -82,19 +82,19 @@ Throughout the first half of the year, our top focus was supporting the needs of
### Content routing and connectivity
To support IPFS and all our other dapp users out there, weve improved libp2ps content routing and connectivity to make finding and sharing content in distributed networks fast and reliable. This meant we needed to dive deep into major systems like the libp2p DHT, providing subsystem, NAT traversal, and more to optimize and refactor for performance. Weve been collaborating closely with Protocol Labs IPFS and Testground teams to make this a reality. Read more about our progress in the [IPFS 0.5 launch](https://blog.ipfs.io/2020-04-28-go-ipfs-0-5-0/) post, and our path to get there in the [Road to the New DHT](https://blog.ipfs.io/2020-05-19-road-to-dht/) post!
To support IPFS and all our other dapp users out there, weve improved libp2ps content routing and connectivity to make finding and sharing content in distributed networks fast and reliable. This meant we needed to dive deep into major systems like the libp2p DHT, providing subsystem, NAT traversal, and more to optimize and refactor for performance. Weve been collaborating closely with Protocol Labs IPFS and Testground teams to make this a reality. Read more about our progress in the [IPFS 0.5 launch](https://blog.ipfs.tech/2020-04-28-go-ipfs-0-5-0/) post, and our path to get there in the [Road to the New DHT](https://blog.ipfs.tech/2020-05-19-road-to-dht/) post!
![Content Routing Speed](../assets/098-libp2p-in-2020-find-perf.png)
### Launching Testground to the world
What is [Testground](https://blog.ipfs.io/2020-05-06-launching-testground/) you ask? Only the coolest new testing tool for large-scale p2p networks! When starting our network upgrade plans, it was clear that the scope and complexity of changes wed need to make to core IPFS network functions would be impossible to optimize without powerful testing tools to simulate each change to network performance at scale. We couldnt find a tool with the scale and configurability we needed, so we built the testing tool we needed, and made it modular and system agnostic just like libp2p so other p2p networks can take advantage of this new OSS infrastructure too!
What is [Testground](https://blog.ipfs.tech/2020-05-06-launching-testground/) you ask? Only the coolest new testing tool for large-scale p2p networks! When starting our network upgrade plans, it was clear that the scope and complexity of changes wed need to make to core IPFS network functions would be impossible to optimize without powerful testing tools to simulate each change to network performance at scale. We couldnt find a tool with the scale and configurability we needed, so we built the testing tool we needed, and made it modular and system agnostic just like libp2p so other p2p networks can take advantage of this new OSS infrastructure too!
![Launching Testground](../assets/092-launching-testground-header-image.png)
### Gossipsub security enhancements
For our large blockchain users, the focus of Q1 was stability, scalability, and security hardening. We designed and implemented [a new version for the Gossipsub protocol, v1.1](https://blog.ipfs.io/2020-05-20-gossipsub-v1.1/). This new P2P PubSub router includes several security extensions that add a protection to Sybil, eclipse, and spam attacks.
For our large blockchain users, the focus of Q1 was stability, scalability, and security hardening. We designed and implemented [a new version for the Gossipsub protocol, v1.1](https://blog.ipfs.tech/2020-05-20-gossipsub-v1.1/). This new P2P PubSub router includes several security extensions that add a protection to Sybil, eclipse, and spam attacks.
This work is of extreme importance as our adopters (e.g., Filecoin and Ethereum 2.0) require a secure messaging layer to distribute their time sensitive and valuable data, without being vulnerable to malicious actors.
@@ -128,5 +128,5 @@ References:
- [https://filecoin.io/blog/update-2018-q3-q4/#8-libp2p-update-for-filecoin](https://filecoin.io/blog/update-2018-q3-q4/#8-libp2p-update-for-filecoin)
- [https://filecoin.io/blog/update-2019-q2-q3/#9-libp2p-update-for-filecoin](https://filecoin.io/blog/update-2019-q2-q3/#9-libp2p-update-for-filecoin)
- [https://blog.ipfs.io/2020-02-10-our-focus-for-2020/](https://blog.ipfs.io/2020-02-10-our-focus-for-2020/)
- [https://blog.ipfs.tech/2020-02-10-our-focus-for-2020/](https://blog.ipfs.tech/2020-02-10-our-focus-for-2020/)
- [https://medium.com/polkadot-network/polkadot-2019-year-in-review-8c852ef42668](https://medium.com/polkadot-network/polkadot-2019-year-in-review-8c852ef42668)
+1 -1
View File
@@ -39,7 +39,7 @@ Like HTTP, IPFS does not have user identity built into the protocol. However, IP
The ION implementation is in JavaScript (specifically, TypeScript) so it made sense for them to use js-ipfs as a Node.js service. ION rolls up batches of identity transactions, publishes it through their IPFS node, and then writes the address (CID) of that batch to the Bitcoin blockchain.
In order to meet Microsofts needs for using js-ipfs as a long-running process we added cancelable requests to all APIs, ensuring that as requests were being made and handled, the underlying objects, memory, file handles, and other resources created up and down the stack are cleaned up properly. Huge thanks goes to [Alex Potsides (@achingbrain)](https://github.com/achingbrain) for implementing this long-needed feature, which shipped in [js-ipfs 0.44.0](https://blog.ipfs.io/2020-05-21-js-ipfs-0-44/).
In order to meet Microsofts needs for using js-ipfs as a long-running process we added cancelable requests to all APIs, ensuring that as requests were being made and handled, the underlying objects, memory, file handles, and other resources created up and down the stack are cleaned up properly. Huge thanks goes to [Alex Potsides (@achingbrain)](https://github.com/achingbrain) for implementing this long-needed feature, which shipped in [js-ipfs 0.44.0](https://blog.ipfs.tech/2020-05-21-js-ipfs-0-44/).
What this looks like for developers is the ability to set timeouts on requests:
@@ -42,7 +42,7 @@ We identified core areas that current mobile P2P apps all share:
- Confirmations of completed actions and transfers
- User education
A summary of our research findings is available in [this earlier post](https://blog.ipfs.io/2020-04-24-ipfs-mobile-design-research-findings/).
A summary of our research findings is available in [this earlier post](https://blog.ipfs.tech/2020-04-24-ipfs-mobile-design-research-findings/).
## Design
+2 -2
View File
@@ -13,8 +13,8 @@ tags:
<br>
<br>
The IPFS community gathered for [a virtual meetup last week](https://www.youtube.com/playlist?list=PLuhRWgmPaHtToVYaDkd6ZTwB2Lo30s1vB) to celebrate the progress made since the major [go-ipfs 0.5 launch](https://blog.ipfs.io/2020-04-28-go-ipfs-0-5-0/) and take a look at where the ecosystem is headed for the duration of 2020.
The IPFS community gathered for [a virtual meetup last week](https://www.youtube.com/playlist?list=PLuhRWgmPaHtToVYaDkd6ZTwB2Lo30s1vB) to celebrate the progress made since the major [go-ipfs 0.5 launch](https://blog.ipfs.tech/2020-04-28-go-ipfs-0-5-0/) and take a look at where the ecosystem is headed for the duration of 2020.
If you missed it, you can catch up on all of the presentations, from Alex Potsides walk through whats new in [js-ipfs](https://blog.ipfs.io/2020-06-08-js-ipfs-0-46/) to special guest Daniel Buchners explainer on [Microsofts ION](https://blog.ipfs.io/2020-06-11-identity-ipfs-ion/). You also wont want to miss the lightning talks from folks at Textile, AvionDB, Filecoin, IPLD, and more!
If you missed it, you can catch up on all of the presentations, from Alex Potsides walk through whats new in [js-ipfs](https://blog.ipfs.tech/2020-06-08-js-ipfs-0-46/) to special guest Daniel Buchners explainer on [Microsofts ION](https://blog.ipfs.tech/2020-06-11-identity-ipfs-ion/). You also wont want to miss the lightning talks from folks at Textile, AvionDB, Filecoin, IPLD, and more!
To view this exclusive content, head over to the [IPFS YouTube page](https://www.youtube.com/channel/UCdjsUXJ3QawK4O5L1kqqsew), click the subscribe button, and enjoy! To find out about future community events and project news, [subscribe to the IPFS Weekly newsletter](https://ipfs.us4.list-manage.com/subscribe?u=25473244c7d18b897f5a1ff6b&id=cad54b2230), in your inbox every Tuesday.
+2 -2
View File
@@ -57,7 +57,7 @@ $ ipfs cid format -v 1 --codec libp2p-key -b base36 bafzaajaiaejca4syrpdu6gdx4ws
## 🕸️ Gossipsub upgraded to v1.1
This release brings a new Gossipsub protocol version: 1.1. You can read about it in the [blog post](https://blog.ipfs.io/2020-05-20-gossipsub-v1.1/).
This release brings a new Gossipsub protocol version: 1.1. You can read about it in the [blog post](https://blog.ipfs.tech/2020-05-20-gossipsub-v1.1/).
## 🤝 Peering
@@ -69,7 +69,7 @@ A huge thank you to [everyone who contributed](https://github.com/ipfs/go-ipfs/b
## Install, upgrade, and join us!
You can get started by [installing go-ipfs](https://dist.ipfs.io/#go-ipfs) or [upgrading to go-ipfs 0.6](https://docs.ipfs.io/recent-releases/go-ipfs-0-6/update-procedure).
You can get started by [installing go-ipfs](https://dist.ipfs.tech/#go-ipfs) or [upgrading to go-ipfs 0.6](https://docs.ipfs.tech/recent-releases/go-ipfs-0-6/update-procedure).
There are many ways to get involved with IPFS based on your skill set, interest, and availability. Please check out [our contribution page](https://github.com/ipfs/community/blob/master/CONTRIBUTING.md) on GitHub for guidance and next steps.
+2 -2
View File
@@ -21,11 +21,11 @@ We've heard requests from avid docs readers and IPFS newcomers alike for more hi
We're pleased to kick off our IPFS Case Study Series with a profile of our friends at [Audius](http://audius.co/), the decentralized music and audio sharing platform designed to give artists and creators a direct link with their listeners. To create their censorship-resistant, privacy-friendly platform, it was key to have a distributed cloud storage network as the basis for the system. Audius uses IPFS as the core decentralized storage component in their mission to give everyone the freedom to share, monetize, and listen to any audio.
[Head over to the IPFS Docs to read the full case study](https://docs.ipfs.io/concepts/case-study-audius/), but here's a quick quote to whet your whistle:
[Head over to the IPFS Docs to read the full case study](https://docs.ipfs.tech/concepts/case-study-audius/), but here's a quick quote to whet your whistle:
> In 2018, when Audius was looking into decentralized storage, they needed a system that would enable routing and addressing of large amounts of content in a decentralized way for their content streaming network. At the time, IPFS had the only system that fit their needs for decentralization ... Now, after two years on the network, Audius has found that IPFS has consistently performed and provided the flexibility and resilience needed for their network. "The lack of surprises is an advantage," says Hareesh Nagaraj, senior engineer at Audius. Its been reliable the whole time."
Have a look at the [full case study](https://docs.ipfs.io/concepts/case-study-audius/) now to learn why IPFS was the best fit for Audius' needs, where IPFS fits into the Audius tech stack, and the concrete gains IPFS has helped the Audius team achieve. We hope you'll be inspired!
Have a look at the [full case study](https://docs.ipfs.tech/concepts/case-study-audius/) now to learn why IPFS was the best fit for Audius' needs, where IPFS fits into the Audius tech stack, and the concrete gains IPFS has helped the Audius team achieve. We hope you'll be inspired!
## Up next ...
+1 -1
View File
@@ -13,7 +13,7 @@ tags:
![Gossipsub logo](../assets/Gossipsub_fullcolor.png =400x)
We are back with a direct follow up on the [Gossipsub v1.1 release from May](https://blog.ipfs.io/2020-05-20-gossipsub-v1.1) with the much awaited Evaluation Report and three other presents we have for you.
We are back with a direct follow up on the [Gossipsub v1.1 release from May](https://blog.ipfs.tech/2020-05-20-gossipsub-v1.1) with the much awaited Evaluation Report and three other presents we have for you.
## ✨ The Logo
+4 -4
View File
@@ -14,7 +14,7 @@ tags:
![](../assets/104-dht-deep-dive-header-image.png =1000x)
At the end of April, we released our largest update to go-ipfs to date: [IPFS 0.5](https://blog.ipfs.io/2020-04-28-go-ipfs-0-5-0/). While there have been many improvements, the changes to IPFSs Distributed Hash Table (DHT) were especially critical to improving the performance and stability of finding data in IPFS. For some background on how we arrived at the most recent set of DHT changes, take a look at [The Road to the New DHT](https://blog.ipfs.io/2020-05-19-road-to-dht/), or try them out yourself in the [latest version of go-ipfs](https://dist.ipfs.io/#go-ipfs).
At the end of April, we released our largest update to go-ipfs to date: [IPFS 0.5](https://blog.ipfs.tech/2020-04-28-go-ipfs-0-5-0/). While there have been many improvements, the changes to IPFSs Distributed Hash Table (DHT) were especially critical to improving the performance and stability of finding data in IPFS. For some background on how we arrived at the most recent set of DHT changes, take a look at [The Road to the New DHT](https://blog.ipfs.tech/2020-05-19-road-to-dht/), or try them out yourself in the [latest version of go-ipfs](https://dist.ipfs.tech/#go-ipfs).
In this post wed like to take you through the details of what the DHT looks like in v0.5.0, so get ready for a _monster post_ that truly **dives deep** into the ins and outs of the IPFS DHT implementation. If you want to learn a thing or two about how DHTs work, and how we made the implementation used by IPFS faster and more resilient, read on!
@@ -131,7 +131,7 @@ While the lookup algorithm is what allows us to put and get records into the DHT
## Testing and Results
There have been a lot of changes to the DHT as part of the go-ipfs v0.5.0 release. While many of the changes were intuitively going to be quite useful, we needed harder evidence that the full set of changes would result in a stable and performant network. To that end, we utilized Testground, which is a new distributed testing infrastructure (check out their launch notes at [Testground blog post](https://blog.ipfs.io/2020-05-06-launching-testground/)).
There have been a lot of changes to the DHT as part of the go-ipfs v0.5.0 release. While many of the changes were intuitively going to be quite useful, we needed harder evidence that the full set of changes would result in a stable and performant network. To that end, we utilized Testground, which is a new distributed testing infrastructure (check out their launch notes at [Testground blog post](https://blog.ipfs.tech/2020-05-06-launching-testground/)).
Throughout the development process we ran many Testground tests to get an understanding of how our changes have improved the network. Below is a comparison of the performance of a 1000 peer network where all peers have around 100-120ms latencies from each other, that is running the DHT from go-ipfs v0.4.23 and the DHT from go-ipfs v0.5.0. Note: The v0.4.23 DHT had small modifications to make testing easier like removing hard coded lookup timeouts, so we can see just how long the queries should really be running for.
@@ -150,6 +150,6 @@ There are many more exciting improvements to come - so if you are interested in
### Learn more
- IPFS 0.5.0 Announcement: https://blog.ipfs.io/2020-04-28-go-ipfs-0-5-0/
- IPFS 0.5.0 Announcement: https://blog.ipfs.tech/2020-04-28-go-ipfs-0-5-0/
- Release Highlights: https://www.youtube.com/watch?v=G8FvB_0HlCE
- Testground: https://blog.ipfs.io/2020-05-06-launching-testground/
- Testground: https://blog.ipfs.tech/2020-05-06-launching-testground/
+11 -11
View File
@@ -20,7 +20,7 @@ tags:
JS IPFS has traditionally primarily targeted the browser, and the browser is a bad place to be if you want to be on the [DHT][]. You typically aren't on a page long enough to make or respond to [DHT][] queries, nor are you diallable, so even if you were able to advertise yourself as a provider for a given block, the chances are no-one can connect to you to retrieve that block which results in a degraded service for everyone. Worse, the way you find more peers and content is via the [DHT][] so you're kind of stuck.
There are several ways to give in-browser IPFS nodes a better experience on the network, one of those is [Delegate Nodes](https://blog.ipfs.io/2019-08-06-js-ipfs-0-37/#delegated-peer-and-content-routing). A Delegate Node is a network peer that performs certain actions on behalf of other nodes on the network. In this case it will make [DHT][] queries on our behalf so we can find more peers and more content than ever before.
There are several ways to give in-browser IPFS nodes a better experience on the network, one of those is [Delegate Nodes](https://blog.ipfs.tech/2019-08-06-js-ipfs-0-37/#delegated-peer-and-content-routing). A Delegate Node is a network peer that performs certain actions on behalf of other nodes on the network. In this case it will make [DHT][] queries on our behalf so we can find more peers and more content than ever before.
`js-IPFS@0.48.0` enables delegate nodes in the configuration by default, which means you should see far more peers than you have previously and be able to find content faster and more reliably.
@@ -28,7 +28,7 @@ By default it uses [public delegate nodes](https://github.com/ipfs/js-ipfs/blob/
## 🏓 DHT configuration
The full [DHT][] implementation for JS IPFS with all the [changes made in Go IPFS 0.5](https://blog.ipfs.io/2020-05-19-road-to-dht/) will not arrive until later this year, but for the time being you can run the experimental [DHT][] implementation. This implementation is incomplete so some features may not work as intended but you should be able to use it to resolve content and find peers though there may be some performance degredation on your node over time.
The full [DHT][] implementation for JS IPFS with all the [changes made in Go IPFS 0.5](https://blog.ipfs.tech/2020-05-19-road-to-dht/) will not arrive until later this year, but for the time being you can run the experimental [DHT][] implementation. This implementation is incomplete so some features may not work as intended but you should be able to use it to resolve content and find peers though there may be some performance degredation on your node over time.
You can enable the [DHT][] for JS IPFS daemons via the command line. To put your node into client mode run:
@@ -61,7 +61,7 @@ Go IPFS nodes use the [libp2p-autonat](https://github.com/libp2p/go-libp2p-auton
## 🧱 Smaller, faster blockstore
In the early days of IPFS, all [CID][]s were v0. That meant they were a bare [multihash][] - a byte array prefixed with some prefixed bytes that told you what sort of hash the rest of the bytes represented (`sha2-256`, `blake2s-128` etc) and how many of those bytes were present. The [multihash][] was created by hashing the data in a [block](https://docs.ipfs.io/how-to/work-with-blocks/) which was then stored in the block store contained within the [IPFS repo](https://github.com/ipfs/js-ipfs-repo).
In the early days of IPFS, all [CID][]s were v0. That meant they were a bare [multihash][] - a byte array prefixed with some prefixed bytes that told you what sort of hash the rest of the bytes represented (`sha2-256`, `blake2s-128` etc) and how many of those bytes were present. The [multihash][] was created by hashing the data in a [block](https://docs.ipfs.tech/how-to/work-with-blocks/) which was then stored in the block store contained within the [IPFS repo](https://github.com/ipfs/js-ipfs-repo).
Later v1 [CID][]s arrived and they added a version number and a codec to the byte array, but the [CID][] still contained the [multihash][] - a block can correspond to multiple [CID][]s, as long as they contain the same [multihash][].
@@ -103,7 +103,7 @@ When used as a [module](https://github.com/ipfs/js-ipfs/blob/1760b8928dac14b3abc
As the IPFS ecosystem grows more and more developers become interested in the project and start using our APIs. A lot of them have grown organically over time and not all of them have had equal amounts of time invested in them.
The following changes only affect the [core](https://github.com/ipfs/js-ipfs/tree/master/packages/ipfs) API and [ipfs-http-client](https://github.com/ipfs/js-ipfs/tree/master/packages/ipfs-http-client). The actual [HTTP API](https://docs.ipfs.io/reference/http/api/) and [CLI](https://docs.ipfs.io/reference/cli/) remain unchanged.
The following changes only affect the [core](https://github.com/ipfs/js-ipfs/tree/master/packages/ipfs) API and [ipfs-http-client](https://github.com/ipfs/js-ipfs/tree/master/packages/ipfs-http-client). The actual [HTTP API](https://docs.ipfs.tech/reference/http/api/) and [CLI](https://docs.ipfs.tech/reference/cli/) remain unchanged.
### ipfs.add()
@@ -147,7 +147,7 @@ for await (const file of ipfs.addAll(files)) {
### APIs with optional arguments
Recently we [released a change](https://blog.ipfs.io/2020-05-21-js-ipfs-0-44/#cancellable-requests) that allowed passing [AbortSignal][]s to all API methods. This necessitated adding an `options` object to every API call that didn't have one already. This left us in the weird situation where some arguments were optional, but were not in the options argument. Worse, the actions of some API calls changed dramatically depending on whether you passed an option or not. For example `ipfs.bootstrap.rm([multiaddr])` would completely empty the bootstrap list if you didn't pass a [Multiaddr][].
Recently we [released a change](https://blog.ipfs.tech/2020-05-21-js-ipfs-0-44/#cancellable-requests) that allowed passing [AbortSignal][]s to all API methods. This necessitated adding an `options` object to every API call that didn't have one already. This left us in the weird situation where some arguments were optional, but were not in the options argument. Worse, the actions of some API calls changed dramatically depending on whether you passed an option or not. For example `ipfs.bootstrap.rm([multiaddr])` would completely empty the bootstrap list if you didn't pass a [Multiaddr][].
All this leads to weird behaviour and subtle bugs when you pass things like `undefined` in for an optional arg position and don't pass an options argument, as well as knotty, error-prone internal code that tries to guess what you passed based on type or properties of the objects where their types are the same.
@@ -338,19 +338,19 @@ Would you like to contribute to the IPFS project and dont know how? Well, the
- Check the issues with the `help wanted` label in the [js-IPFS repo](https://github.com/ipfs/js-ipfs/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute: https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at https://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at https://discuss.ipfs.tech/ and help users finding their answers.
- Join the [🚀 IPFS Core Implementations Weekly Sync 🛰](https://github.com/ipfs/team-mgmt/issues/992) and be part of the action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works, and what you can do with it is at [discuss.ipfs.io](https://discuss.ipfs.io). We are also available at the `#ipfs` channel on Freenode.
The best place to ask your questions about IPFS, how it works, and what you can do with it is at [discuss.ipfs.tech](https://discuss.ipfs.tech). We are also available at the `#ipfs` channel on Freenode.
[unixfs]: https://docs.ipfs.io/guides/concepts/unixfs/
[cid]: https://docs.ipfs.io/guides/concepts/cid/
[mfs]: https://docs.ipfs.io/guides/concepts/mfs/
[unixfs]: https://docs.ipfs.tech/guides/concepts/unixfs/
[cid]: https://docs.ipfs.tech/guides/concepts/cid/
[mfs]: https://docs.ipfs.tech/guides/concepts/mfs/
[libp2p]: https://github.com/libp2p/js-libp2p
[ipld]: https://github.com/ipld/js-ipld
[abortsignal]: https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal
[multihash]: https://multiformats.io/multihash
[dht]: https://docs.ipfs.io/concepts/dht/
[dht]: https://docs.ipfs.tech/concepts/dht/
[multiaddr]: https://multiformats.io/multiaddr/
+2 -2
View File
@@ -53,11 +53,11 @@ If you are running IPFS older than 0.4.21, you are going to start failing to con
<sup>\*</sup>We are looking at backporting Noise to js-ipfs 0.46.x.
Noise was added to js-ipfs 0.47, however it is compatible with js-ipfs 0.41.0+ ([the async/await refactor](https://blog.ipfs.io/2020-02-01-async-await-refactor/)) but it needs to be manually configured.
Noise was added to js-ipfs 0.47, however it is compatible with js-ipfs 0.41.0+ ([the async/await refactor](https://blog.ipfs.tech/2020-02-01-async-await-refactor/)) but it needs to be manually configured.
If you are running js-ipfs older than 0.41, you won't be able to connect to nodes who don't support SECIO. You will still be able to leverage the websocket-star server for the time being.
## Updating IPFS
- Download the latest go-ipfs from the [IPFS distributions page](https://dist.ipfs.io/#go-ipfs).
- Download the latest go-ipfs from the [IPFS distributions page](https://dist.ipfs.tech/#go-ipfs).
- Install the latest js-ipfs for Node.js or the browser, https://github.com/ipfs/js-ipfs/tree/master/packages/ipfs#install.
+8 -8
View File
@@ -23,7 +23,7 @@ Read on for the full details!
## 🤝 Share a node between browser tabs
An IPFS node makes lots of connections to other nodes on the network, and more so since [delegate nodes were turned on by default](https://blog.ipfs.io/2020-07-20-js-ipfs-0-48/). This is to ensure you have the greatest chance of finding content on the network, and so other people have the greatest chance of finding your content on the network.
An IPFS node makes lots of connections to other nodes on the network, and more so since [delegate nodes were turned on by default](https://blog.ipfs.tech/2020-07-20-js-ipfs-0-48/). This is to ensure you have the greatest chance of finding content on the network, and so other people have the greatest chance of finding your content on the network.
This does not come without a price though, maintaining multiple connections can be resource-intensive and in some cases the browser will limit the number of concurrent connections you can have have.
@@ -186,21 +186,21 @@ Would you like to contribute to the IPFS project and dont know how? Well, the
- Check the issues with the `help wanted` label in the [js-IPFS repo](https://github.com/ipfs/js-ipfs/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute: https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at https://discuss.ipfs.io/ and help users finding their answers.
- Join the discussion at https://discuss.ipfs.tech/ and help users finding their answers.
- Join the [🚀 IPFS Core Implementations Weekly Sync 🛰](https://github.com/ipfs/team-mgmt/issues/992) and be part of the action!
# ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works, and what you can do with it is at [discuss.ipfs.io](https://discuss.ipfs.io). We are also available at the `#ipfs` channel on Freenode.
The best place to ask your questions about IPFS, how it works, and what you can do with it is at [discuss.ipfs.tech](https://discuss.ipfs.tech). We are also available at the `#ipfs` channel on Freenode.
[unixfs]: https://docs.ipfs.io/guides/concepts/unixfs/
[cid]: https://docs.ipfs.io/guides/concepts/cid/
[mfs]: https://docs.ipfs.io/guides/concepts/mfs/
[unixfs]: https://docs.ipfs.tech/guides/concepts/unixfs/
[cid]: https://docs.ipfs.tech/guides/concepts/cid/
[mfs]: https://docs.ipfs.tech/guides/concepts/mfs/
[libp2p]: https://github.com/libp2p/js-libp2p
[ipld]: https://github.com/ipld/js-ipld
[abortsignal]: https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal
[multihash]: https://multiformats.io/multihash
[dht]: https://docs.ipfs.io/concepts/dht/
[dht]: https://docs.ipfs.tech/concepts/dht/
[multiaddr]: https://multiformats.io/multiaddr/
[dag]: https://docs.ipfs.io/concepts/merkle-dag/
[dag]: https://docs.ipfs.tech/concepts/merkle-dag/
[core-api]: https://github.com/ipfs/js-ipfs/tree/master/docs/core-api
+5 -5
View File
@@ -11,7 +11,7 @@ tags:
- 'SECIO'
---
In August we announced the [deprecation of the SECIO security transport](https://blog.ipfs.io/2020-08-07-deprecating-secio/). In this release we have disabled SECIO by default, which will have an impact on older nodes on the network. The best way to mitigate the impact of this change is to [upgrade your IPFS nodes](https://docs.ipfs.io/recent-releases/go-ipfs-0-7/update-procedure) as soon as possible! Not only will upgrading ensure you're using the latest security transports, you'll get access to all of the [performance improvements](https://blog.ipfs.io/2020-07-20-dht-deep-dive/) we've made this year to content routing.
In August we announced the [deprecation of the SECIO security transport](https://blog.ipfs.tech/2020-08-07-deprecating-secio/). In this release we have disabled SECIO by default, which will have an impact on older nodes on the network. The best way to mitigate the impact of this change is to [upgrade your IPFS nodes](https://docs.ipfs.tech/recent-releases/go-ipfs-0-7/update-procedure) as soon as possible! Not only will upgrading ensure you're using the latest security transports, you'll get access to all of the [performance improvements](https://blog.ipfs.tech/2020-07-20-dht-deep-dive/) we've made this year to content routing.
With this release you will also start seeing more Peer IDs and IPNS Keys on the network that start with `1` instead of the typical `Qm`. This is due to a switch to ed25519 keys being used by default over RSA keys, which you can read more about in the highlights below.
@@ -21,7 +21,7 @@ With this release you will also start seeing more Peer IDs and IPNS Keys on the
## 🔒 SECIO is now disabled by default
As part of deprecating and removing support for the SECIO security transport, we have disabled it by default. TLS1.3 will remain the default security transport with fallback to Noise. You can read more about the deprecation in the blog post, https://blog.ipfs.io/2020-08-07-deprecating-secio/. If you're running Go IPFS older than 0.5 or JS IPFS older than 0.47, this may start to impact your performance on the public network, so we strongly encourage you to upgrade today!
As part of deprecating and removing support for the SECIO security transport, we have disabled it by default. TLS1.3 will remain the default security transport with fallback to Noise. You can read more about the deprecation in the blog post, https://blog.ipfs.tech/2020-08-07-deprecating-secio/. If you're running Go IPFS older than 0.5 or JS IPFS older than 0.47, this may start to impact your performance on the public network, so we strongly encourage you to upgrade today!
## 🗝️ Ed25519 keys are now used by default
@@ -80,9 +80,9 @@ Size: 30362191, NumBlocks: 346
## 🚨 Plugin build changes 🚨
We have changed the build flags used by the official binary distributions on [dist.ipfs.io](https://dist.ipfs.io) (or `/ipns/dist.ipfs.io`) to use the simpler and more reliable `-trimpath` flag instead of the more complicated and brittle `-asmflags=all=-trimpath="$(GOPATH)" -gcflags=all=-trimpath="$(GOPATH)"` flags, however the build flags used by default in go-ipfs remain the same.
We have changed the build flags used by the official binary distributions on [dist.ipfs.tech](https://dist.ipfs.tech) (or `/ipns/dist.ipfs.tech`) to use the simpler and more reliable `-trimpath` flag instead of the more complicated and brittle `-asmflags=all=-trimpath="$(GOPATH)" -gcflags=all=-trimpath="$(GOPATH)"` flags, however the build flags used by default in go-ipfs remain the same.
The scripts in [go-ipfs-example-plugin](https://github.com/ipfs/go-ipfs-example-plugin) have been updated to reflect this change. This is a **breaking change** to how people have been building plugins against the dist.ipfs.io binary of go-ipfs and plugins should update their build processes accordingly. See [go-ipfs-example-plugin/pull/9](https://github.com/ipfs/go-ipfs-example-plugin/pull/9) for details.
The scripts in [go-ipfs-example-plugin](https://github.com/ipfs/go-ipfs-example-plugin) have been updated to reflect this change. This is a **breaking change** to how people have been building plugins against the dist.ipfs.tech binary of go-ipfs and plugins should update their build processes accordingly. See [go-ipfs-example-plugin/pull/9](https://github.com/ipfs/go-ipfs-example-plugin/pull/9) for details.
## The Changelog
@@ -94,7 +94,7 @@ A huge thank you to [everyone who contributed](https://github.com/ipfs/go-ipfs/b
## Install, upgrade, and join us!
You can get started by [installing go-ipfs](https://dist.ipfs.io/#go-ipfs) or [upgrading to go-ipfs 0.7](https://docs.ipfs.io/recent-releases/go-ipfs-0-7/update-procedure).
You can get started by [installing go-ipfs](https://dist.ipfs.tech/#go-ipfs) or [upgrading to go-ipfs 0.7](https://docs.ipfs.tech/recent-releases/go-ipfs-0-7/update-procedure).
There are many ways to get involved with IPFS based on your skill set, interest, and availability. Please check out [our contribution page](https://github.com/ipfs/community/blob/master/CONTRIBUTING.md) on GitHub for guidance and next steps.
@@ -13,19 +13,19 @@ tags:
---
* [Distributed Wikipedia Mirror](https://github.com/ipfs/distributed-wikipedia-mirror#readme) and [Kiwix](https://kiwix.org/) projects are happy to the announce **general availability** of **updated** [English](https://en.wikipedia-on-ipfs.org/) and [Turkish](https://tr.wikipedia-on-ipfs.org) mirrors, along with **new languages**: [Myanmar](https://my.wikipedia-on-ipfs.org/), [Arabic](https://ar.wikipedia-on-ipfs.org), [Chinese](https://zh.wikipedia-on-ipfs.org) and [Russian](https://ru.wikipedia-on-ipfs.org).
* A handy, up-to-date list can be found at [ipfs.kiwix.org](https://ipfs.kiwix.org), and in the [`snapshot-hashes.yml`](https://github.com/ipfs/distributed-wikipedia-mirror/blob/main/snapshot-hashes.yml "snapshot-hashes.yml") manifest.
* The idea of a distributed Wikipedia mirror goes back to 2017, when the IPFS Project created a snapshot of English and Turkish languages and put it on IPFS. To learn why we did it, please read the original [Uncensorable Wikipedia on IPFS](https://blog.ipfs.io/24-uncensorable-wikipedia/) post.
* The idea of a distributed Wikipedia mirror goes back to 2017, when the IPFS Project created a snapshot of English and Turkish languages and put it on IPFS. To learn why we did it, please read the original [Uncensorable Wikipedia on IPFS](https://blog.ipfs.tech/24-uncensorable-wikipedia/) post.
* Below is a short status update with improved usage instructions, current build process, open problems, and future work that could be contributed to the project.
## Improved access to Wikipedia mirrors
### User-friendly `ipns://{dnslink}` and public gateways
Browsers with built-in support for IPFS addresses ([Brave](https://brave.com/brave-integrates-ipfs/), [Opera](https://blog.ipfs.io/2020-03-30-ipfs-in-opera-for-android/), or a regular [Firefox](https://www.mozilla.org/en-US/firefox/new/), [Chromium](https://en.wikipedia.org/wiki/Chromium_(web_browser)) with [IPFS Companion](https://github.com/ipfs/ipfs-companion#readme)) can now load the latest snapshot using [DNSLink](https://docs.ipfs.io/concepts/dnslink/):
Browsers with built-in support for IPFS addresses ([Brave](https://brave.com/brave-integrates-ipfs/), [Opera](https://blog.ipfs.tech/2020-03-30-ipfs-in-opera-for-android/), or a regular [Firefox](https://www.mozilla.org/en-US/firefox/new/), [Chromium](https://en.wikipedia.org/wiki/Chromium_(web_browser)) with [IPFS Companion](https://github.com/ipfs/ipfs-companion#readme)) can now load the latest snapshot using [DNSLink](https://docs.ipfs.tech/concepts/dnslink/):
* `ipns://{dnslink}`
* `ipns://en.wikipedia-on-ipfs.org`
To ensure true P2P transport, offline storage and content integrity, you can run your own IPFS node ([command-line](https://docs.ipfs.io/install/command-line/) or [IPFS Desktop](https://docs.ipfs.io/install/ipfs-desktop/) app) combined with the [IPFS Companion](https://docs.ipfs.io/install/ipfs-companion/) browser extension. You can also use the [Brave browser, which has built-in support for IPFS](https://brave.com/brave-integrates-ipfs/):
To ensure true P2P transport, offline storage and content integrity, you can run your own IPFS node ([command-line](https://docs.ipfs.tech/install/command-line/) or [IPFS Desktop](https://docs.ipfs.tech/install/ipfs-desktop/) app) combined with the [IPFS Companion](https://docs.ipfs.tech/install/ipfs-companion/) browser extension. You can also use the [Brave browser, which has built-in support for IPFS](https://brave.com/brave-integrates-ipfs/):
@[youtube](jTDkTQiKzJA)
@@ -36,7 +36,7 @@ When it is not possible to run your own IPFS node, one of the [many public gatew
### Robust and immutable `ipfs://{cid}`
If DNS resolution is blocked, or a public gateway can't be trusted, accessing the immutable snapshot using underlying cryptographic content identifier ([CID](https://docs.ipfs.io/concepts/content-addressing/)) is advised:
If DNS resolution is blocked, or a public gateway can't be trusted, accessing the immutable snapshot using underlying cryptographic content identifier ([CID](https://docs.ipfs.tech/concepts/content-addressing/)) is advised:
* `ipfs://{cid}`
@@ -62,7 +62,7 @@ It is possible to keep a lazy-loaded copy. which does not fetch the entire Wiki
$ ipfs files cp /ipfs/{cid} /my-wikipedia-snapshot
One can convert a lazy copy to full one by recursively pinning the [DAG](https://docs.ipfs.io/concepts/glossary/#dag) behind a CID:
One can convert a lazy copy to full one by recursively pinning the [DAG](https://docs.ipfs.tech/concepts/glossary/#dag) behind a CID:
$ ipfs pin add --progress {cid}
@@ -82,7 +82,7 @@ See _Instructions_ at [collab.ipfscluster.io](https://collab.ipfscluster.io#inst
### Donate remote pins
When co-hosting with your own IPFS node is not possible, one can still help by pinning snapshot CIDs to a remote pinning service.
[Learn how to _work with remote pinning services_](https://docs.ipfs.io/how-to/work-with-pinning-services/).
[Learn how to _work with remote pinning services_](https://docs.ipfs.tech/how-to/work-with-pinning-services/).
## How is a mirror built?
+8 -8
View File
@@ -19,7 +19,7 @@ tags:
### ↔️ gRPC over websockets
In the beginning, `go-IPFS` shipped with an [HTTP API](https://docs.ipfs.io/reference/http/api/), which `js-IPFS` [also implemented](https://www.npmjs.com/package/ipfs-http-server) with the aim of being cross-compatible.
In the beginning, `go-IPFS` shipped with an [HTTP API](https://docs.ipfs.tech/reference/http/api/), which `js-IPFS` [also implemented](https://www.npmjs.com/package/ipfs-http-server) with the aim of being cross-compatible.
This HTTP API allows you to orchestrate a locally running node from a language or environment that may not be able to run a fully-fledged IPFS node, or it may be preferable to have a single system-wide node shared between multiple applications.
@@ -195,23 +195,23 @@ Only large features are called out in the roadmap, expect lots of small bugfix r
Would you like to contribute to the IPFS project and dont know how? Well, there are a few places you can get started:
- Check the issues with the `help wanted` label in the [js-IPFS repo](https://github.com/ipfs/js-ipfs/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
- Join the discussion at https://discuss.ipfs.io/ and help users find their answers.
- Join the discussion at https://discuss.ipfs.tech/ and help users find their answers.
- Join the [🚀 IPFS Core Implementations Weekly Sync 🛰](https://github.com/ipfs/team-mgmt/issues/992) and be part of the action!
## ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works, and what you can do with it is at [discuss.ipfs.io](https://discuss.ipfs.io). We are also available at the `#ipfs` channel on Freenode.
The best place to ask your questions about IPFS, how it works, and what you can do with it is at [discuss.ipfs.tech](https://discuss.ipfs.tech). We are also available at the `#ipfs` channel on Freenode.
[unixfs]: https://docs.ipfs.io/guides/concepts/unixfs/
[cid]: https://docs.ipfs.io/guides/concepts/cid/
[mfs]: https://docs.ipfs.io/guides/concepts/mfs/
[unixfs]: https://docs.ipfs.tech/guides/concepts/unixfs/
[cid]: https://docs.ipfs.tech/guides/concepts/cid/
[mfs]: https://docs.ipfs.tech/guides/concepts/mfs/
[libp2p]: https://github.com/libp2p/js-libp2p
[ipld]: https://github.com/ipld/js-ipld
[abortsignal]: https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal
[multihash]: https://multiformats.io/multihash
[dht]: https://docs.ipfs.io/concepts/dht/
[dht]: https://docs.ipfs.tech/concepts/dht/
[multiaddr]: https://multiformats.io/multiaddr/
[dag]: https://docs.ipfs.io/concepts/merkle-dag/
[dag]: https://docs.ipfs.tech/concepts/merkle-dag/
[core-api]: https://github.com/ipfs/js-ipfs/tree/master/docs/core-api
[grpc]: https://en.wikipedia.org/wiki/GRPC
[grpc-web]: https://github.com/grpc/grpc-web
@@ -22,6 +22,6 @@ Though the advent of music streaming has been innovative for listeners, it has a
Audius has been using IPFS since 2018. At the time, IPFS had the only system that fit their decentralization needs, with no immediate lock-in or payment up front. Over time, IPFS has proven to consistently perform and provide the flexibility and resilience needed for their network. All files and metadata on Audius are shared using IPFS by creator node services, registered on Audius smart contracts, indexed by discovery services, and served through the client to end users. Audius runs nodes internally to test new changes, and there are a dozen public hosts running nodes for specific services and geographies.
In a [case study report with IPFS](https://docs.ipfs.io/concepts/case-study-audius/#overview), Audius senior engineer Hareesh Nagaraj said, “Choosing a dependency on such a novel tech isnt necessarily the standard way of doing things, but Im really glad we did. The extensibility that it gives us is huge. Overall, its been a game changer for us."
In a [case study report with IPFS](https://docs.ipfs.tech/concepts/case-study-audius/#overview), Audius senior engineer Hareesh Nagaraj said, “Choosing a dependency on such a novel tech isnt necessarily the standard way of doing things, but Im really glad we did. The extensibility that it gives us is huge. Overall, its been a game changer for us."
Read Audius full [case study with IPFS](https://docs.ipfs.io/concepts/case-study-audius/#overview) and learn more about Audius at [https://audius.org/](https://audius.org/ "https://audius.org/").
Read Audius full [case study with IPFS](https://docs.ipfs.tech/concepts/case-study-audius/#overview) and learn more about Audius at [https://audius.org/](https://audius.org/ "https://audius.org/").
@@ -15,12 +15,12 @@ tags:
On 2021-08-20 at 15:54 UTC, visitors started to get 404s across all HTTPS content served from the[ ipfs.io](http://ipfs.io/) domain. 404s were returned for both:
1. Web properties under the [ipfs.io](http://ipfs.io/) domain, including: the ipfs website ([ipfs.io](https://ipfs.io "https://ipfs.io")), ipfs docs ([docs.ipfs.io](https://docs.ipfs.io "https://docs.ipfs.io")), ipfs dist ([dist.ipfs.io](https://dist.ipfs.io "https://dist.ipfs.io")), ipfs blog ([blog.ipfs.io](https://blog.ipfs.io "https://blog.ipfs.io")), etc. AND
1. Web properties under the [ipfs.io](http://ipfs.io/) domain, including: the ipfs website ([ipfs.io](https://ipfs.io "https://ipfs.io")), ipfs docs ([docs.ipfs.tech](https://docs.ipfs.tech "https://docs.ipfs.tech")), ipfs dist ([dist.ipfs.tech](https://dist.ipfs.tech "https://dist.ipfs.tech")), ipfs blog ([blog.ipfs.tech](https://blog.ipfs.tech "https://blog.ipfs.tech")), etc. AND
2. Content served over the IPFS over HTTP gateway at `https://ipfs.io/ipfs/<cid>`
Users across the internet fetch content from the IPFS network using the ipfs.io gateway over 300 **million** times per week, and were thus impacted until our mitigation was applied at 19:35 UTC. You can see the full incident report and history [on the status page](https://ipfsgateway.statuspage.io/).
However, you can instead fetch content directly from the IPFS network without hitting any of these gateways by using your own IPFS node with [IPFS Desktop](https://docs.ipfs.io/install/ipfs-desktop/), [IPFS CLI](https://docs.ipfs.io/how-to/command-line-quick-start), [IPFS Companion](https://docs.ipfs.io/install/ipfs-companion/) in your browser, and/or an [IPFS-enabled browser like Brave](https://brave.com/ipfs-support/). **If you were using IPFS directly, you probably never even noticed this outage! 💪**
However, you can instead fetch content directly from the IPFS network without hitting any of these gateways by using your own IPFS node with [IPFS Desktop](https://docs.ipfs.tech/install/ipfs-desktop/), [IPFS CLI](https://docs.ipfs.tech/how-to/command-line-quick-start), [IPFS Companion](https://docs.ipfs.tech/install/ipfs-companion/) in your browser, and/or an [IPFS-enabled browser like Brave](https://brave.com/ipfs-support/). **If you were using IPFS directly, you probably never even noticed this outage! 💪**
# Background
@@ -53,7 +53,7 @@ Protocol Labs is taking many steps in response to this event to prevent it from
1. Reduce the blast radius by separating the IPFS website from the ipfs.io gateway onto different domains.
2. Reduce the time to respond by paging engineers on sustained gateway inaccessibility.
3. Reduce time to mitigation by establishing and documenting direct human lines of communication for the registrars of domains of gateways operated by Protocol Labs.
4. Reduce the likelihood of a complete domain takedown by making it even easier for a concerned party to contact us directly about objectionable content (beyond our pre-existing abuse takedown email and resources on the [Gateway FAQ](https://docs.ipfs.io/concepts/ipfs-gateway/#frequently-asked-questions-faqs) and [ipfs.io/legal](https://ipfs.io/legal)).
4. Reduce the likelihood of a complete domain takedown by making it even easier for a concerned party to contact us directly about objectionable content (beyond our pre-existing abuse takedown email and resources on the [Gateway FAQ](https://docs.ipfs.tech/concepts/ipfs-gateway/#frequently-asked-questions-faqs) and [ipfs.io/legal](https://ipfs.io/legal)).
5. Reduce recovery time by simplifying and better documenting the custom DNS resolution on our gateways.
You can follow along with the status of these corrective actions [here](https://github.com/ipfs/ipfs/issues/469).
@@ -54,4 +54,4 @@ This redirect ensures that the metadata remains available through IPFS, and remo
**Learn more about IPFS WebGL Gaming:** [Devpost](https://devpost.com/software/ipfs-webgl-gaming-platform) | [Test it Out](https://gpudemo.github.io/ipfs-webgl/)
Browsers 3000 saw many other innovative and ambitious submissions of applications, websites, browser extensions, libraries, and other projects, all based on IPFS and Filecoin concepts. The future looks bright for web3 and it's an exciting time to be involved in these communities. Stay tuned to the [IPFS Blog](https://blog.ipfs.io), [Filecoin Blog](https://filecoin.io/blog), and [Twitter](https://twitter.com/ipfs) for announcements about more hackathons and events happening soon!
Browsers 3000 saw many other innovative and ambitious submissions of applications, websites, browser extensions, libraries, and other projects, all based on IPFS and Filecoin concepts. The future looks bright for web3 and it's an exciting time to be involved in these communities. Stay tuned to the [IPFS Blog](https://blog.ipfs.tech), [Filecoin Blog](https://filecoin.io/blog), and [Twitter](https://twitter.com/ipfs) for announcements about more hackathons and events happening soon!
@@ -19,7 +19,7 @@ As immersive games cross over the Web3 frontier, developers in the space will ne
To build this, the platform has leveraged the technology of its Web3 peers. Its mission of empowering gamers through ownership can only be so effective if it relies on centralized Web 2.0 infrastructure.
Gala Games makes use of IPFS and Filecoins flexibility as [decentralized storage solutions](https://docs.ipfs.io/concepts/how-ipfs-works) to back up and curate data across its platform. Together, IPFS and Filecoin have established an ecosystem that requires no trust in a major corporation or data storage system to ensure that data is stored in a decentralized manner and permanently preserved. By using these services, Gala keeps even archive data entirely decentralized.
Gala Games makes use of IPFS and Filecoins flexibility as [decentralized storage solutions](https://docs.ipfs.tech/concepts/how-ipfs-works) to back up and curate data across its platform. Together, IPFS and Filecoin have established an ecosystem that requires no trust in a major corporation or data storage system to ensure that data is stored in a decentralized manner and permanently preserved. By using these services, Gala keeps even archive data entirely decentralized.
IPFS and Filecoin serve as the appropriate solutions for Galas large amounts of backup data. Beyond the normal needs of hosting and distributing multiple titles, games on the platform are facilitated by its [ecosystem](https://app.gala.games/nodes/ecosystem/) of over 40,000 player-owned nodes. These nodes produce massive amounts of data that need to be securely and permanently curated. Filecoin has enabled Gala Games to create backups that are [pinned](https://filecoin.io/blog/posts/using-filecoin-with-ipfs/) to IPFS and replicate throughout the Filecoin ecosystem.
@@ -119,7 +119,7 @@ A huge thank you to [everyone who contributed](https://github.com/ipfs/go-ipfs/r
### Install, upgrade, and join us!
You can get started by [installing go-ipfs](https://dist.ipfs.io/#go-ipfs) or upgrading to [go-ipfs 0.8](https://github.com/ipfs/go-ipfs/releases/tag/v0.8.0).
You can get started by [installing go-ipfs](https://dist.ipfs.tech/#go-ipfs) or upgrading to [go-ipfs 0.8](https://github.com/ipfs/go-ipfs/releases/tag/v0.8.0).
There are many ways to get involved with IPFS based on your skill set, interest, and availability. Please check out our [contribution page](https://github.com/ipfs/community/blob/master/CONTRIBUTING.md) on GitHub for guidance and next steps.
@@ -85,7 +85,7 @@ This means faster download times for upgrades, a much easier time building migra
#### **Configurable migration downloads enable downloading over IPFS**
Previously the migration downloader built into go-ipfs downloaded the migrations from [dist.ipfs.io](https://dist.ipfs.io/). While users could use tools like [ipfs-update](https://github.com/ipfs/ipfs-update) to download the migrations over IPFS or manually download the migrations (over IPFS or otherwise) themselves, this is now automated and configurable. Users can choose to download the migrations over IPFS or from any specified IPFS Gateway.
Previously the migration downloader built into go-ipfs downloaded the migrations from [dist.ipfs.tech](https://dist.ipfs.tech/). While users could use tools like [ipfs-update](https://github.com/ipfs/ipfs-update) to download the migrations over IPFS or manually download the migrations (over IPFS or otherwise) themselves, this is now automated and configurable. Users can choose to download the migrations over IPFS or from any specified IPFS Gateway.
The configurable migration options are described in the config file [documentation](https://github.com/ipfs/go-ipfs/blob/master/docs/config.md#migration), although most users should not need to change the default settings.
@@ -107,7 +107,7 @@ While the Object API and commands are still usable they are now marked as deprec
#### `X-Ipfs-Gateway-Prefix` **is now deprecated**
IPFS community moved towards dedicated Origins (DNSLink and [subdomain gateways](https://docs.ipfs.io/how-to/address-ipfs-on-web/#subdomain-gateway)) which are much easier to isolate and reason about.
IPFS community moved towards dedicated Origins (DNSLink and [subdomain gateways](https://docs.ipfs.tech/how-to/address-ipfs-on-web/#subdomain-gateway)) which are much easier to isolate and reason about.
Setting up `Gateway.PathPrefixes` and `X-Ipfs-Gateway-Prefix` is no longer necessary and support [will be removed in near future](https://github.com/ipfs/go-ipfs/issues/7702).
@@ -129,7 +129,7 @@ A huge thank you to [**everyone who contributed**](https://github.com/ipfs/go-ip
### **Install, upgrade, and join us!**
You can get started by [**installing go-ipfs**](https://dist.ipfs.io/#go-ipfs) or upgrading to [**go-ipfs 0.9**](https://github.com/ipfs/go-ipfs/releases/tag/v0.9.0).
You can get started by [**installing go-ipfs**](https://dist.ipfs.tech/#go-ipfs) or upgrading to [**go-ipfs 0.9**](https://github.com/ipfs/go-ipfs/releases/tag/v0.9.0).
There are many ways to get involved with IPFS based on your skill set, interest, and availability. Please check out our [**contribution page**](https://github.com/ipfs/community/blob/master/CONTRIBUTING.md) on GitHub for guidance and next steps.
@@ -12,7 +12,7 @@ tags:
- security
---
A major focus of IPFS for 2020 has been improving Content Routing as the network has continued to scale. While we've made [significant improvements](https://blog.ipfs.io/2020-07-20-dht-deep-dive/) to the speed of requests on the DHT, another crucial focus for us has been on the security of the network. During our work leading up to the release of go-ipfs 0.5, we were contacted by Bernd Prünster and Alexander Marsalek at [A-SIT](https://www.a-sit.at) and the [Graz University of Technology](https://tugraz.at) to advise us of an attack they had discovered during their research targeting go-ipfs 0.4.23 that would allow an attacker with minimal resources to eclipse any node on the public DHT. Over the past 3 minor releases of go-ipfs (0.5, 0.6 and 0.7), we've been collaborating closely with Bernd and Alexander, which has enabled us to release incremental improvements that have mitigated their original attack and increased the cost and difficulty of such attacks by several orders of magnitude. Today we'll dive into the attack and the various mitigations we've released. If you would like to read the full paper, "Total Eclipse of the Heart Disrupting the InterPlanetary File System", you can find it at the [TU Graz Research Portal](https://graz.pure.elsevier.com/en/publications/total-eclipse-of-the-heart-disrupting-the-interplanetary-file-sys).
A major focus of IPFS for 2020 has been improving Content Routing as the network has continued to scale. While we've made [significant improvements](https://blog.ipfs.tech/2020-07-20-dht-deep-dive/) to the speed of requests on the DHT, another crucial focus for us has been on the security of the network. During our work leading up to the release of go-ipfs 0.5, we were contacted by Bernd Prünster and Alexander Marsalek at [A-SIT](https://www.a-sit.at) and the [Graz University of Technology](https://tugraz.at) to advise us of an attack they had discovered during their research targeting go-ipfs 0.4.23 that would allow an attacker with minimal resources to eclipse any node on the public DHT. Over the past 3 minor releases of go-ipfs (0.5, 0.6 and 0.7), we've been collaborating closely with Bernd and Alexander, which has enabled us to release incremental improvements that have mitigated their original attack and increased the cost and difficulty of such attacks by several orders of magnitude. Today we'll dive into the attack and the various mitigations we've released. If you would like to read the full paper, "Total Eclipse of the Heart Disrupting the InterPlanetary File System", you can find it at the [TU Graz Research Portal](https://graz.pure.elsevier.com/en/publications/total-eclipse-of-the-heart-disrupting-the-interplanetary-file-sys).
## Mitigating the attack
@@ -20,7 +20,7 @@ An eclipse attack refers to the ability of an attacker to isolate a peer from th
If you are not familiar with [Sybil attacks](https://en.wikipedia.org/wiki/Sybil_attack), the idea is that you can use a single peer with a large number of pseudonymous IDs to subvert reputation systems in order to increase influence on the network. In the context of this attack, the false IDs end up taking the place of honest peers in the routing table of the affected peer.
In order for this attack to be successful, a few vulnerabilities in libp2p were exposed, which ultimately resulted in this attack being very effective in go-ipfs [0.4.23](https://blog.ipfs.io/2020-01-30-go-ipfs-0-4-23/). One of the major problems libp2p had at the time this attack was discovered is that the DHT did not favor long lived peers, and it didn't protect peers in its lower buckets (peers on the other half of the network). This issue allowed an attacker to quickly evict honest peers from the routing table of the target in favor of its dishonest peers. As part of the work to overhaul the DHT in go-ipfs 0.5, we changed how entries in the routing table are managed. One of the major changes that affects this is that we will no longer evict a peer from the routing table that is still available. This coupled with the rest of the improvements we made to the DHT in go-ipfs 0.5 made the attack several orders of magnitude more difficult to execute. You can read about the detailed changes to the DHT in the [IPFS 0.5 Content Routing Deep Dive](https://blog.ipfs.io/2020-07-20-dht-deep-dive/).
In order for this attack to be successful, a few vulnerabilities in libp2p were exposed, which ultimately resulted in this attack being very effective in go-ipfs [0.4.23](https://blog.ipfs.tech/2020-01-30-go-ipfs-0-4-23/). One of the major problems libp2p had at the time this attack was discovered is that the DHT did not favor long lived peers, and it didn't protect peers in its lower buckets (peers on the other half of the network). This issue allowed an attacker to quickly evict honest peers from the routing table of the target in favor of its dishonest peers. As part of the work to overhaul the DHT in go-ipfs 0.5, we changed how entries in the routing table are managed. One of the major changes that affects this is that we will no longer evict a peer from the routing table that is still available. This coupled with the rest of the improvements we made to the DHT in go-ipfs 0.5 made the attack several orders of magnitude more difficult to execute. You can read about the detailed changes to the DHT in the [IPFS 0.5 Content Routing Deep Dive](https://blog.ipfs.tech/2020-07-20-dht-deep-dive/).
In addition to the changes in go-ipfs 0.5, we also fixed a couple of issues that further increased the difficulty and cost of this attack. Part of the attack's success was due to the ability of a Sybil node to game the reputation system of valued connections by abusing a flaw in how scoring was done for peers acting as relays. The flaw could allow a Sybil node to act as a relay to subsequent Sybil peers, which would continue to boost the score of the relay. This could be done for a single peer using nested Sybils to quickly gain a lot of unwarranted reputation. To resolve this we applied a constant score to relays, which allows us to still value them, but avoids them being able to inflate their reputation. By improving the integrity of internal reputation systems, we've reduced the efficacy of Sybil attacks.
@@ -32,10 +32,10 @@ As part of this collaboration with Bernd and Alexander, we wanted to ensure that
**Live testing**. With our permission, they performed a controlled attack on one of our hosted bootstrap nodes on the public network. This enabled us to gather live metrics and logs to observe the effectiveness of the attack from both our visibility and their external observations. The controlled attack was performed on each version of IPFS prior to its release starting with go-ipfs 0.5, which enabled us to validate our fixes in a production environment.
**Replication on Testground**. Thanks to the development and [release of Testground](https://blog.ipfs.io/2020-05-06-launching-testground/), and Bernd and Alexander sharing their attack code, we were able to create test plans to replicate various parts of the attack. This enabled us to do large scale testing of the changes in a controlled test environment to both verify the attack was possible, and to verify our mitigations. The benefit of having these test plans is that we can continue to run them on releases of IPFS and libp2p to ensure we don't introduce regressions. Additionally this ensures we can run the attacks for longer periods of time in a controlled environment to do further analysis on the efficacy and cost of the attacks.
**Replication on Testground**. Thanks to the development and [release of Testground](https://blog.ipfs.tech/2020-05-06-launching-testground/), and Bernd and Alexander sharing their attack code, we were able to create test plans to replicate various parts of the attack. This enabled us to do large scale testing of the changes in a controlled test environment to both verify the attack was possible, and to verify our mitigations. The benefit of having these test plans is that we can continue to run them on releases of IPFS and libp2p to ensure we don't introduce regressions. Additionally this ensures we can run the attacks for longer periods of time in a controlled environment to do further analysis on the efficacy and cost of the attacks.
## Where we are today
Over the course of this year we have made significant improvements to both the performance and security of IPFS and libp2p, and collaboration has been a huge part of making this work successful. The research Bernd and Alexander have done, and their willingness to collaborate with us so closely has been invaluable in helping us improve the stability of the network. We're grateful for having had the opportunity to work together. With the release of [go-ipfs 0.7](https://blog.ipfs.io/2020-09-24-go-ipfs-0-7-0/) in September, we have increased the difficulty and cost of executing eclipse and Sybil attacks on IPFS and libp2p by several orders of magnitude from its 0.4.23 predecessor.
Over the course of this year we have made significant improvements to both the performance and security of IPFS and libp2p, and collaboration has been a huge part of making this work successful. The research Bernd and Alexander have done, and their willingness to collaborate with us so closely has been invaluable in helping us improve the stability of the network. We're grateful for having had the opportunity to work together. With the release of [go-ipfs 0.7](https://blog.ipfs.tech/2020-09-24-go-ipfs-0-7-0/) in September, we have increased the difficulty and cost of executing eclipse and Sybil attacks on IPFS and libp2p by several orders of magnitude from its 0.4.23 predecessor.
If you haven't already updated to go-ipfs 0.7, we recommend updating as soon as possible to take advantage of the full scope of these improvements. Check out the [go-ipfs 0.7 update guide](https://docs.ipfs.io/recent-releases/go-ipfs-0-7/update-procedure/#use-ipfs-update) for details on how to update!
If you haven't already updated to go-ipfs 0.7, we recommend updating as soon as possible to take advantage of the full scope of these improvements. Check out the [go-ipfs 0.7 update guide](https://docs.ipfs.tech/recent-releases/go-ipfs-0-7/update-procedure/#use-ipfs-update) for details on how to update!
@@ -14,16 +14,16 @@ tags:
author: Jenn Turner
---
[ETHDenver 2021](https://www.ethdenver.com/) is in full swing, and as we mentioned in our [last post](https://blog.ipfs.io/2020-02-07-ethdenver-2020/) the IPFS community is very stoked to get to be a part of this unique and awesome event! To encourage folks to try IPFS for the first time, or the second time, or the forty-second time, weve put together the following bounties to inspire your creativity and challenge your #BUILDathon skills.
[ETHDenver 2021](https://www.ethdenver.com/) is in full swing, and as we mentioned in our [last post](https://blog.ipfs.tech/2020-02-07-ethdenver-2020/) the IPFS community is very stoked to get to be a part of this unique and awesome event! To encourage folks to try IPFS for the first time, or the second time, or the forty-second time, weve put together the following bounties to inspire your creativity and challenge your #BUILDathon skills.
## IPFS Bounties for ETHDenver 2021
- 🦁 **Get Brave with IPFS**, \$50: Using and demoing IPFS in your project with Brave desktop browser, Resources: https://brave.com/ipfs-support/.
- ⭕️ **Go browsing with Opera + IPFS**, \$50: Using and demoing IPFS in your project with Opera Android or Opera Touch on iOS, Resources: https://blog.ipfs.io/2020-03-30-ipfs-in-opera-for-android/
- ⭕️ **Go browsing with Opera + IPFS**, \$50: Using and demoing IPFS in your project with Opera Android or Opera Touch on iOS, Resources: https://blog.ipfs.tech/2020-03-30-ipfs-in-opera-for-android/
- 📌 **IPFS Pinning Services API**, \$500: Show us your best use of the new IPFS Pinning Services API, Resources: https://ipfs.github.io/pinning-services-api-spec/
- 👻 **Hack Phantom Drift**, \$500: Build libp2p node visualizers on the DHT, Resources: https://github.com/libp2p/go-libp2p/issues/947
### Best use of IPFS for X, \$500 each, [resources here](https://docs.ipfs.io/concepts/usage-ideas-examples/)
### Best use of IPFS for X, \$500 each, [resources here](https://docs.ipfs.tech/concepts/usage-ideas-examples/)
- 🤝 **Collaboration**: Let IPFS coordinate the flow of data between you and your colleagues, even when working offline or on a local network.
- 📦 **Asset storage**: By storing small scripts or big databases of your project on IPFS, and depending on your architecture, you can yield several benefits.
@@ -34,7 +34,7 @@ So, how does a person who owns an NFT ensure its safety and accessibility throug
## IPFS and Metadata Storage
What if there was a way to store data in perpetuity? When developers first came up with the idea of the cloud, they [aimed to create data persistence](https://blog.ipfs.io/2021-06-03-ipfs-filecoin-content-persistence/ "IPFS, Filecoin, and Content Persistence"). While it did succeed in this endeavor partially, it created a situation where the owner of the cloud servers had complete control over the data. To rectify this potential problem (and many others), the idea for a decentralized internet was born.
What if there was a way to store data in perpetuity? When developers first came up with the idea of the cloud, they [aimed to create data persistence](https://blog.ipfs.tech/2021-06-03-ipfs-filecoin-content-persistence/ "IPFS, Filecoin, and Content Persistence"). While it did succeed in this endeavor partially, it created a situation where the owner of the cloud servers had complete control over the data. To rectify this potential problem (and many others), the idea for a decentralized internet was born.
When it came to storing accessible data in perpetuity, the approach had to be markedly different. How would a decentralized system provide servers owned by individuals that could offer storage to millions of users worldwide? This approach would create a new paradigm where instead of companies owning user data, individuals would maintain ownership of their data. The solution came with developing the Interplanetary File System (IPFS) and the decentralized network that interacts with it, Filecoin.
+6 -6
View File
@@ -13,11 +13,11 @@ description:
author: Mitch Wagner
---
You may have heard the news: as of [release 1.19.86](https://github.com/brave/brave-browser/releases/tag/v1.19.86), the Brave browser has officially added [InterPlanetary File System (IPFS)](https://blog.ipfs.io/2021-01-19-ipfs-in-brave/) support! This work is the result of a multi-year effort to bring the two projects together. In this post, we discuss the process in bringing this collaboration to fruition, and take a look under the hood to see how we accomplished this integration!
You may have heard the news: as of [release 1.19.86](https://github.com/brave/brave-browser/releases/tag/v1.19.86), the Brave browser has officially added [InterPlanetary File System (IPFS)](https://blog.ipfs.tech/2021-01-19-ipfs-in-brave/) support! This work is the result of a multi-year effort to bring the two projects together. In this post, we discuss the process in bringing this collaboration to fruition, and take a look under the hood to see how we accomplished this integration!
## Collaboration
Both Brave and IPFS have a long history of successful partnerships with other projects and vendors. Brave now ships with built-in wallets for cryptocurrencies, private windows that leverage Tor, and a highly integrated VPN option. IPFS, meanwhile, has collaborated with such names as Microsoft (developing a [decentralized identity stack](https://blog.ipfs.io/2020-06-11-identity-ipfs-ion/)), Netflix (experimenting [fetching Docker images via IPFS](https://blog.ipfs.io/2020-02-14-improved-bitswap-for-container-distribution/)), and NixOS (decentralizing [source code and build products](https://blog.ipfs.io/2020-09-08-nix-ipfs-milestone-1/)).
Both Brave and IPFS have a long history of successful partnerships with other projects and vendors. Brave now ships with built-in wallets for cryptocurrencies, private windows that leverage Tor, and a highly integrated VPN option. IPFS, meanwhile, has collaborated with such names as Microsoft (developing a [decentralized identity stack](https://blog.ipfs.tech/2020-06-11-identity-ipfs-ion/)), Netflix (experimenting [fetching Docker images via IPFS](https://blog.ipfs.tech/2020-02-14-improved-bitswap-for-container-distribution/)), and NixOS (decentralizing [source code and build products](https://blog.ipfs.tech/2020-09-08-nix-ipfs-milestone-1/)).
_![Early experiment showcasing IPFS URI resolution in Brave](../assets/2021-01-21-ipfs-early.png)
Early experiment showcasing IPFS URI resolution in Brave_
@@ -38,7 +38,7 @@ Eventually, a confluence of factors, including the [deprecation of the Chrome so
## Architecture
A key goal of this integration was to make the use of IPFS as seamless as possible for users, while also respecting and preserving their control over the browser. When users enter an <code>ipfs://</code> or <code>ipns://</code> URI into their address bar for the first time, Brave will issue a prompt, asking whether or not they would prefer to resolve the link using a [public IPFS gateway](https://docs.ipfs.io/concepts/ipfs-gateway/) (by default, Brave uses `https://dweb.link`, though users can configure this) or via their own local IPFS node, managed by Brave. Initiating a Brave-managed local node is also possible through the interface of the IPFS Companion extension.
A key goal of this integration was to make the use of IPFS as seamless as possible for users, while also respecting and preserving their control over the browser. When users enter an <code>ipfs://</code> or <code>ipns://</code> URI into their address bar for the first time, Brave will issue a prompt, asking whether or not they would prefer to resolve the link using a [public IPFS gateway](https://docs.ipfs.tech/concepts/ipfs-gateway/) (by default, Brave uses `https://dweb.link`, though users can configure this) or via their own local IPFS node, managed by Brave. Initiating a Brave-managed local node is also possible through the interface of the IPFS Companion extension.
By supporting multiple configurations and requiring user consent before the deployment of a local node, Brave ensures it is acting in accordance with the original philosophy and vision of browsers as _user_ agents, existing to serve the user, rather than vice versa. The choices of who to trust and whether to run peer-to-peer software on their computer remain entirely in user hands. Run your own node, or delegate integrity validation to a gateway you trust.
@@ -48,7 +48,7 @@ If a user wants Brave to run a local node on their behalf, all they need to do i
Brave and go-ipfs fit together perfectly: go-ipfs provides HTTP interoperability for IPFS, while Brave itself is an HTTP portal. This creates a natural interface between the two, bridging the gap between their feature sets and greatly simplifying integration. Both projects are available for the major desktop environments (Windows, macOS, Linux) as well, so having Brave act as a wrapper for go-ipfs is a solution that works well regardless of platform.
Behind the scenes, Brave stores all IPFS data, including the file repository, inside of a users Brave profile. It will fetch updates to go-ipfs when they become available, and will migrate the underlying IPFS repository when necessary. Clearing the browser cache also initiates IPFS garbage collection, clearing any resource not [pinned](https://docs.ipfs.io/how-to/pin-files/#three-kinds-of-pins) or kept in [MFS](https://docs.ipfs.io/concepts/file-systems/#mutable-file-system-mfs).
Behind the scenes, Brave stores all IPFS data, including the file repository, inside of a users Brave profile. It will fetch updates to go-ipfs when they become available, and will migrate the underlying IPFS repository when necessary. Clearing the browser cache also initiates IPFS garbage collection, clearing any resource not [pinned](https://docs.ipfs.tech/how-to/pin-files/#three-kinds-of-pins) or kept in [MFS](https://docs.ipfs.tech/concepts/file-systems/#mutable-file-system-mfs).
Taken together, this means that there is little to no compromise in running a node inside of Brave instead of running a node manually: users get the best implementation of IPFS currently available, along with automatic updates. Nevertheless, the steps taken to isolate Brave-run nodes ensure that users that also wish to run nodes manually will be able to do so without any collision.
@@ -58,8 +58,8 @@ This integration marks a major milestone for IPFS, and lays the groundwork for f
In particular, having native URI resolution in the browsers address bar opens up a number of different research questions. How should new concepts, like the integrity guarantees IPFS affords, be communicated to users? How do we explain the principles of peer-to-peer networking to a large user base? And perhaps most importantly, how do we bring awareness of non-traditional URIs to users, and help them acclimate to a world where links are preceded by letters other than “http”?
Indeed, such research is [already underway](https://github.com/ipfs/browser-design-guidelines), particularly in the [mobile space](https://blog.ipfs.io/2020-04-24-ipfs-mobile-design-research-findings/), thanks to the introduction of IPFS in the [Opera for Android browser](https://blog.ipfs.io/2020-03-30-ipfs-in-opera-for-android/) last year. Nevertheless, there remains a tremendous amount of work to do. By integrating with Brave, the IPFS network extends its reach to millions of potential participants - people from every background imaginable. New interfaces and metaphors are needed to make interaction simple, intuitive, and accessible for all of these users.
Indeed, such research is [already underway](https://github.com/ipfs/browser-design-guidelines), particularly in the [mobile space](https://blog.ipfs.tech/2020-04-24-ipfs-mobile-design-research-findings/), thanks to the introduction of IPFS in the [Opera for Android browser](https://blog.ipfs.tech/2020-03-30-ipfs-in-opera-for-android/) last year. Nevertheless, there remains a tremendous amount of work to do. By integrating with Brave, the IPFS network extends its reach to millions of potential participants - people from every background imaginable. New interfaces and metaphors are needed to make interaction simple, intuitive, and accessible for all of these users.
IPFSs collaboration with Brave also provides further momentum for changes taking place with browser ecosystems. This includes increasing the URIs and network protocols browsers are capable of recognizing - the IANA standards body recently approved a number of URI schemes, including [ipfs and ipns](https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml) - as well as pushing to introduce native handling of these protocols in the browser itself, rather than delegating that functionality to separate applications or third-party gateways.
In short, this integration opens a whole new chapter for IPFS, and represents a significant step toward mainstream embrace of a [content-addressed](https://docs.ipfs.io/concepts/content-addressing/) web. Through collaborations and research, IPFS is becoming increasingly accessible and easy to use, extending the reach of the distributed web further than ever before.
In short, this integration opens a whole new chapter for IPFS, and represents a significant step toward mainstream embrace of a [content-addressed](https://docs.ipfs.tech/concepts/content-addressing/) web. Through collaborations and research, IPFS is becoming increasingly accessible and easy to use, extending the reach of the distributed web further than ever before.
@@ -35,7 +35,7 @@ The nft.storage demo in this talk walks you through:
* Data retrieval via IPFS gateways
* Querying for information about stored data: file size, IPFS pinning status and Filecoin deal status
Along with nft.storage and Minty, IPFS and Filecoin have comprehensive [documentation on CIDs](https://docs.ipfs.io/concepts/content-addressing/#identifier-formats), an article detailing the differences between [content addressing and content integrity](https://blog.ipfs.io/2021-04-05-storing-nfts-on-ipfs/), a best practices guide to [long term NFT storage](https://docs.ipfs.io/how-to/best-practices-for-nft-data/), and how to mint NFTs on IPFS [with Minty](https://docs.ipfs.io/how-to/mint-nfts-with-ipfs/#how-minty-works). Also, check out [NFT School](https://nftschool.dev/ "NFT School") for a collection of tutorials, how-tos, and concept guides on NFT best practices and NFTs in general.
Along with nft.storage and Minty, IPFS and Filecoin have comprehensive [documentation on CIDs](https://docs.ipfs.tech/concepts/content-addressing/#identifier-formats), an article detailing the differences between [content addressing and content integrity](https://blog.ipfs.tech/2021-04-05-storing-nfts-on-ipfs/), a best practices guide to [long term NFT storage](https://docs.ipfs.tech/how-to/best-practices-for-nft-data/), and how to mint NFTs on IPFS [with Minty](https://docs.ipfs.tech/how-to/mint-nfts-with-ipfs/#how-minty-works). Also, check out [NFT School](https://nftschool.dev/ "NFT School") for a collection of tutorials, how-tos, and concept guides on NFT best practices and NFTs in general.
Keep up with the latest by giving [Filecoin](https://twitter.com/filecoin?lang=en) and [IPFS](https://twitter.com/IPFS) a follow on Twitter.
+7 -7
View File
@@ -136,23 +136,23 @@ Only large features are called out in the roadmap, expect lots of small bugfix r
Would you like to contribute to the IPFS project and dont know how? Well, there are a few places you can get started:
- Check the issues with the `help wanted` label in the [js-IPFS repo](https://github.com/ipfs/js-ipfs/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
- Join the discussion at https://discuss.ipfs.io/ and help users find their answers.
- Join the discussion at https://discuss.ipfs.tech/ and help users find their answers.
- Join the [🚀 IPFS Core Implementations Weekly Sync 🛰](https://github.com/ipfs/team-mgmt/issues/992) and be part of the action!
## ⁉️ Do you have questions?
The best place to ask your questions about IPFS, how it works, and what you can do with it is at [discuss.ipfs.io](https://discuss.ipfs.io). We are also available at the `#ipfs` channel on Freenode.
The best place to ask your questions about IPFS, how it works, and what you can do with it is at [discuss.ipfs.tech](https://discuss.ipfs.tech). We are also available at the `#ipfs` channel on Freenode.
[unixfs]: https://docs.ipfs.io/guides/concepts/unixfs/
[cid]: https://docs.ipfs.io/guides/concepts/cid/
[mfs]: https://docs.ipfs.io/guides/concepts/mfs/
[unixfs]: https://docs.ipfs.tech/guides/concepts/unixfs/
[cid]: https://docs.ipfs.tech/guides/concepts/cid/
[mfs]: https://docs.ipfs.tech/guides/concepts/mfs/
[libp2p]: https://github.com/libp2p/js-libp2p
[ipld]: https://github.com/ipld/js-ipld
[abortsignal]: https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal
[multihash]: https://multiformats.io/multihash
[dht]: https://docs.ipfs.io/concepts/dht/
[dht]: https://docs.ipfs.tech/concepts/dht/
[multiaddr]: https://multiformats.io/multiaddr/
[dag]: https://docs.ipfs.io/concepts/merkle-dag/
[dag]: https://docs.ipfs.tech/concepts/merkle-dag/
[core-api]: https://github.com/ipfs/js-ipfs/tree/master/docs/core-api
[grpc]: https://en.wikipedia.org/wiki/GRPC
[grpc-web]: https://github.com/grpc/grpc-web
@@ -19,14 +19,14 @@ tags:
- IPFS and [Igalia](https://www.igalia.com/) started a collaboration that will continue during 2021.
- [Distributed web schemes have been safelisted in Chrome 86](https://www.chromestatus.com/feature/4776602869170176)s implementation of [custom handlers](https://html.spec.whatwg.org/multipage/system-state.html#custom-handlers) and [registered at IANA](https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml).
- Chrome 89 will allow browser extensions to register cross-origin handlers or handlers for schemes with prefix `ext+`. Refinement is pending for the [permission UI](https://bugs.chromium.org/p/chromium/issues/detail?id=1079333).
- Firefox 84 marks `http://*.localhost/` URLs as [secure context](https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts), which means websites loaded from local [subdomain gateway](https://docs.ipfs.io/how-to/address-ipfs-on-web/#subdomain-gateway) will have access to the same Web APIs as HTTPS version.
- Firefox 84 marks `http://*.localhost/` URLs as [secure context](https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts), which means websites loaded from local [subdomain gateway](https://docs.ipfs.tech/how-to/address-ipfs-on-web/#subdomain-gateway) will have access to the same Web APIs as HTTPS version.
- Firefox 84 has improved support for [loading locally delivered mixed-resources](https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content#Loading_locally_delivered_mixed-resources). Patches have also been submitted to WebKit but are pending on reviews and discussions.
- Work is in progress to improve Chromiums consistency and specification compliance regarding the notion of [secure contexts](https://w3c.github.io/webappsec-secure-contexts/), including removing non-standard [localhost](https://chromestatus.com/feature/5698580851458048) [names](https://chromestatus.com/feature/5668106045227008).
- Miscellaneous other fixes have landed for the Firefox and Chromiums implementations of custom handlers.
## Background
Nowadays, the majority of pages on the Web are coming from central servers controlled by their owners. The [IPFS protocol](https://ipfs.io/) envisions a future Web in which content can be delivered peer-to-peer, meaning directly between individuals or within groups. There have been web platform and browser efforts to reach the [goal of a distributed Web](https://arewedistributedyet.com/).
Nowadays, the majority of pages on the Web are coming from central servers controlled by their owners. The [IPFS protocol](https://ipfs.tech/) envisions a future Web in which content can be delivered peer-to-peer, meaning directly between individuals or within groups. There have been web platform and browser efforts to reach the [goal of a distributed Web](https://arewedistributedyet.com/).
Nevertheless, having corresponding protocols natively supported in browsers and taken into account in web standards will require coordination with various actors of the Web, including standardization groups (W3C, WHATWG, ...) and browser implementers.
@@ -87,7 +87,7 @@ With that goal in mind, Protocol Labs started a collaboration with [Igalia](http
</svg>
</div>
An existing approach to use IPFS in browsers that dont natively support this protocol is to rely on an [HTTP gateway](https://docs.ipfs.io/concepts/ipfs-gateway/). Additionally, the redirection of IPFS links can be automatically performed using [HTML custom handlers](https://html.spec.whatwg.org/multipage/system-state.html#custom-handlers). However, this approach has several limitations:
An existing approach to use IPFS in browsers that dont natively support this protocol is to rely on an [HTTP gateway](https://docs.ipfs.tech/concepts/ipfs-gateway/). Additionally, the redirection of IPFS links can be automatically performed using [HTML custom handlers](https://html.spec.whatwg.org/multipage/system-state.html#custom-handlers). However, this approach has several limitations:
1. Custom handlers are only implemented in Mozilla and Chromium browsers, not the ones based on WebKit.
2. Custom handlers only accept schemes with prefix `web+` or belonging to a predetermined [safe list](https://html.spec.whatwg.org/multipage/system-state.html#safelisted-scheme).
@@ -76,7 +76,7 @@ to:
* The <span style="color:red">red</span> color is the auto-detected gateway to use.
* The <span style="color:darkorange">orange</span> color is the protocol to use (can be either _ipfs_ or _ipns_).
* The <span style="color:green">green</span> color is the [CID](https://docs.ipfs.io/concepts/content-addressing/) to use.
* The <span style="color:green">green</span> color is the [CID](https://docs.ipfs.tech/concepts/content-addressing/) to use.
FFmpeg tries to detect the gateway according to this [IPFS Integration](https://github.com/ipfs/specs/pull/280) specification proposal. If you dont have a gateway running, the current logic will fall back to calling `dweb.link` behind the scenes. It will therefore give the end user an experience of IPFS just working.
@@ -13,7 +13,7 @@ tags:
---
_From HackFS: Ryan Baumann from IPFS walks through the basics of browser integration using IPFS. This talk was delivered at HackFS, a three-week virtual hackathon dedicated to building a censorship-free decentralized internet. The complete discussion is_ [_available here_](https://www.youtube.com/watch?v=xZiN9dLvMoU&list=PLXzKMXK2aHh5iq_crvYF76EmPsZgcgLki&index=3)_._
The future of the internet is the decentralized web, but getting there requires infrastructure. At the heart of this infrastructure is IPFS, the InterPlanetary File System. Together with its name resolution system INFS (Interplanetary Name System), it presents a new way to hold and distribute content to browsers known as [content addressing](https://blog.ipfs.io/2021-06-03-ipfs-filecoin-content-persistence/).
The future of the internet is the decentralized web, but getting there requires infrastructure. At the heart of this infrastructure is IPFS, the InterPlanetary File System. Together with its name resolution system INFS (Interplanetary Name System), it presents a new way to hold and distribute content to browsers known as [content addressing](https://blog.ipfs.tech/2021-06-03-ipfs-filecoin-content-persistence/).
Under this paradigm, data can be retrieved from wherever it is stored across the IPFS network based on its unique content ID (CID). This improves over the current location-based infrastructure where data is retrieved from specific servers and can be vulnerable to all kinds of security risks.
@@ -21,7 +21,7 @@ What this means for the average app developer is that instead of hosting an app
<center><b>Watch on YouTube</b> <a href="https://www.youtube.com/watch?v=xZiN9dLvMoU&list=PLXzKMXK2aHh5iq_crvYF76EmPsZgcgLki&index=3">IPFS: Browser Connectivity Walkthrough</a></center>
The best way to stay up to date with this browser connectivity guide for a simple chat interface is in the IPFS [documentation](https://docs.ipfs.io/how-to/create-simple-chat-app/).
The best way to stay up to date with this browser connectivity guide for a simple chat interface is in the IPFS [documentation](https://docs.ipfs.tech/how-to/create-simple-chat-app/).
## Getting Started
@@ -16,7 +16,7 @@ tags:
- IPFS Cluster
---
Today marks the 6th anniversary of [IPFS Cluster](https://ipfscluster.io/), an application to coordinate how data is stored (or, in ipfs-slang, "pinned") across a set of IPFS daemons. IPFS cluster-peers run as sidecars to go-ipfs nodes, deciding which nodes pin what, managing pinning queues and making sure data is correctly written and replicated in multiple locations. The IPFS daemons will in turn store the blocks that form the [IPFS DAGs](https://docs.ipfs.io/concepts/merkle-dag/) and provide them to other nodes in the IPFS network or make the content available over HTTP through IPFS gateways.
Today marks the 6th anniversary of [IPFS Cluster](https://ipfscluster.io/), an application to coordinate how data is stored (or, in ipfs-slang, "pinned") across a set of IPFS daemons. IPFS cluster-peers run as sidecars to go-ipfs nodes, deciding which nodes pin what, managing pinning queues and making sure data is correctly written and replicated in multiple locations. The IPFS daemons will in turn store the blocks that form the [IPFS DAGs](https://docs.ipfs.tech/concepts/merkle-dag/) and provide them to other nodes in the IPFS network or make the content available over HTTP through IPFS gateways.
IPFS Cluster solves many of the problems that operators face when storing IPFS data at scale. For example, IPFS Cluster can orchestrate several nodes to pin and replicate a CID. In order to select those nodes from those in the cluster, a Cluster-peer can automatically select IPFS nodes on different regions that are not too busy pinning other content and that report the most free space. Downloads that fail to reach a fully pinned state are regularly retried, but also deprioritized once they fail repeatedly. Every cluster-peer keeps a copy of the full cluster pinset and can be used to pin, unpin or add content directly, making the setup resilient to common failures. Every pin in the pinset can be configured individually (i.e. replication factor) and store additional metadata (names, user tags etc.). New peers can be added at any time to increase the cluster's capacity.
@@ -24,4 +24,4 @@ The largest known IPFS Cluster (powering NFT.storage) has 24 peers and stores 80
Internally, Cluster peers form their own libp2p private network, which they use to coordinate, share metrics and broadcast updates to the cluster-pinset. This cluster-pinset which every node can modify is powered by a CRDT datastore, which ensures no conflicts ever happen and provides scalability features such as batched updates and gossip broadcasting. These not only allow the cluster to grow with many peers, but also augment the capacity to ingest large amounts of new pins and to automatically recover and catch up after downtimes.
IPFS Cluster version 1.0 was released in April 2022 and represented a milestone in maturity of the project, which is deemed fully ready for production workloads. Since then, IPFS Cluster keeps evolving to respond to scalability demands and provide additional tooling for large-scale IPFS storage. The roadmap for the next few months includes options to let Cluster-peers embed the IPFS daemon directly and providing a canonical and officially supported way to run elastic IPFS and IPFS Cluster deployments on Kubernetes. If you are interested in trying out IPFS Cluster, the best place to start is the [documentation](https://cluster.ipfs.io/documentation/). For any questions or issues, we are ready to help on our forums at [https://discuss.ipfs.io/.](https://discuss.ipfs.io/. "https://discuss.ipfs.io/.")
IPFS Cluster version 1.0 was released in April 2022 and represented a milestone in maturity of the project, which is deemed fully ready for production workloads. Since then, IPFS Cluster keeps evolving to respond to scalability demands and provide additional tooling for large-scale IPFS storage. The roadmap for the next few months includes options to let Cluster-peers embed the IPFS daemon directly and providing a canonical and officially supported way to run elastic IPFS and IPFS Cluster deployments on Kubernetes. If you are interested in trying out IPFS Cluster, the best place to start is the [documentation](https://cluster.ipfs.io/documentation/). For any questions or issues, we are ready to help on our forums at [https://discuss.ipfs.tech/.](https://discuss.ipfs.tech/. "https://discuss.ipfs.tech/.")
@@ -28,7 +28,7 @@ The solution is a decentralized storage stack that addresses the issues of addre
Broadly speaking, todays web browsing operates through what is known as _location addressing._ Location addressing retrieves online information from specific locations on the web ─ i.e. from behind URLs. However, this has its obvious downsides. Location addressing is centralized; whoever controls that location controls the content. And anything behind a location-addressed URL can be changed. The language of an article, the colors of a digital artwork, or the properties of a recorded identity. Location-addressed URLs are exploitable.
The solution is _content addressing._ Content-based addressing allows you to access data based on a unique fingerprint of that piece of data; no matter _where_ it is stored, if you have that unique fingerprint of the data, you should be able to retrieve the content. In content-based addressing (within the context of IPFS), content is no longer retrieved from single locations on the web. Rather, content is retrieved from any participating nodes on the IPFS network that have the content youre requesting. Pieces of content are shared by many parties, and content can always be retrieved either entirely from one node (such as a [pinning service node](https://docs.ipfs.io/concepts/persistence/#persistence-versus-permanence)) or collected in bits and pieces from multiple nodes.
The solution is _content addressing._ Content-based addressing allows you to access data based on a unique fingerprint of that piece of data; no matter _where_ it is stored, if you have that unique fingerprint of the data, you should be able to retrieve the content. In content-based addressing (within the context of IPFS), content is no longer retrieved from single locations on the web. Rather, content is retrieved from any participating nodes on the IPFS network that have the content youre requesting. Pieces of content are shared by many parties, and content can always be retrieved either entirely from one node (such as a [pinning service node](https://docs.ipfs.tech/concepts/persistence/#persistence-versus-permanence)) or collected in bits and pieces from multiple nodes.
For an overall look at the value of content addressing and how you can use IPFS content identifiers/fingerprints (CIDs) to properly address NFTs, [see here.](/2021-04-05-storing-nfts-on-ipfs/)
@@ -86,5 +86,5 @@ Learn more at:
- [nft.storage](http://nft.storage/)
- [NFT School](https://nftschool.dev/)
- [IPFS Documentation - content addressing](https://docs.ipfs.io/concepts/content-addressing/)
- [IPFS Documentation - minting an NFT with IPFS](https://docs.ipfs.io/how-to/mint-nfts-with-ipfs/#a-short-introduction-to-nfts)
- [IPFS Documentation - content addressing](https://docs.ipfs.tech/concepts/content-addressing/)
- [IPFS Documentation - minting an NFT with IPFS](https://docs.ipfs.tech/how-to/mint-nfts-with-ipfs/#a-short-introduction-to-nfts)
@@ -25,7 +25,7 @@ Having IPFS and tools like [NFT.Storage](https://nft.storage/), [Web3.Storage](h
### **Opensea integrated NFT.Storage for secure, platform-wide NFT persistence**
OpenSea is one of the largest marketplaces for NFTs on the decentralized web. It [partnered](https://blog.ipfs.io/2021-06-17-opensea-ipfs-filecoin/) with IPFS and FIlecoin to integrate NFT.Storage and allow users to "freeze" their NFT metadata. This process permitted creators to truly decentralize their NFTs, giving power back to the creators and not the hosters.
OpenSea is one of the largest marketplaces for NFTs on the decentralized web. It [partnered](https://blog.ipfs.tech/2021-06-17-opensea-ipfs-filecoin/) with IPFS and FIlecoin to integrate NFT.Storage and allow users to "freeze" their NFT metadata. This process permitted creators to truly decentralize their NFTs, giving power back to the creators and not the hosters.
Today, OpenSea users can create immutable NFT data to be stored persistently on Filecoin's blockchain, with addressing for retrieving that data done through IPFS Content IDs. IPFS content-addressing provides the perfect solution for NFT hosting by eliminating the chance of a “rug pull” or a misplacement of the NFT's metadata.
@@ -33,15 +33,15 @@ Today, OpenSea users can create immutable NFT data to be stored persistently on
After the inclusion of its own cryptocurrency wallet, [Brave](https://www.zdnet.com/article/brave-becomes-first-browser-to-add-native-support-for-the-ipfs-protocol/) continued to add Web3 capabilities to its desktop web browser with its integration of IPFS. Users are now allowed to access content stored on the protocol by resolving IPFS addresses natively.
The integration was the result of a multi-year [collaboration](https://blog.ipfs.io/2021-01-21-how-we-put-ipfs-in-brave/) between both teams with the goal of making IPFS as accessible as possible to end users. It is a massive step towards turning IPFS into an accepted internet standard that all browsers may eventually support.
The integration was the result of a multi-year [collaboration](https://blog.ipfs.tech/2021-01-21-how-we-put-ipfs-in-brave/) between both teams with the goal of making IPFS as accessible as possible to end users. It is a massive step towards turning IPFS into an accepted internet standard that all browsers may eventually support.
### **Opera extends its support of IPFS protocol addressing**
Opera first added support for IPFS to its Android browser in 2020. This year, it extended the same capabilities to its [Opera Touch ](https://blog.ipfs.io/2021-02-08-opera-ios-and-ipfs/)browser for iOS users, allowing them to navigate to ipfs:// and ipns:// addresses.
Opera first added support for IPFS to its Android browser in 2020. This year, it extended the same capabilities to its [Opera Touch ](https://blog.ipfs.tech/2021-02-08-opera-ios-and-ipfs/)browser for iOS users, allowing them to navigate to ipfs:// and ipns:// addresses.
### **Pinata made it easy for anybody to leverage IPFS**
This pinning and file management service allows users to store content that is often referenced by blockchains in an easy and seamless manner. [Pinata](https://blog.ipfs.io/2021-07-15-building-web-3-pinata/) makes the most of the [IPFS Pinning Service API](https://ipfs.github.io/pinning-services-api-spec/) to publish content to the IPFS network, allowing for decentralized storage and efficient retrieval based on CIDs.
This pinning and file management service allows users to store content that is often referenced by blockchains in an easy and seamless manner. [Pinata](https://blog.ipfs.tech/2021-07-15-building-web-3-pinata/) makes the most of the [IPFS Pinning Service API](https://ipfs.github.io/pinning-services-api-spec/) to publish content to the IPFS network, allowing for decentralized storage and efficient retrieval based on CIDs.
### **ScalaShare brought secure file sharing to Web3 with IPFS**
@@ -49,7 +49,7 @@ File sharing between users on the internet began with P2P sharing but[ ScalaShar
### **Audius relied on CIDs to stream music on demand**
Audius takes music streaming services on Web3 in a new direction. Using IPFS integrations to store and retrieve data,[ Audius](https://blog.ipfs.io/2021-05-05-audius-uses-ipfs-web3-video/) can ensure that there are no broken links to tracks and that all music is delivered to the user without reliance on centralized servers. IPFS's CIDs are the key to ensuring that this music streaming service works properly and continues to [use](https://www.youtube.com/watch?v=E3A0UJRVKnk&list=PL_0VrY55uV1_HE_bE-frkYUPGybjYHbNz&index=49) Web3 infrastructure on popular Web 2.0 applications like TikTok.
Audius takes music streaming services on Web3 in a new direction. Using IPFS integrations to store and retrieve data,[ Audius](https://blog.ipfs.tech/2021-05-05-audius-uses-ipfs-web3-video/) can ensure that there are no broken links to tracks and that all music is delivered to the user without reliance on centralized servers. IPFS's CIDs are the key to ensuring that this music streaming service works properly and continues to [use](https://www.youtube.com/watch?v=E3A0UJRVKnk&list=PL_0VrY55uV1_HE_bE-frkYUPGybjYHbNz&index=49) Web3 infrastructure on popular Web 2.0 applications like TikTok.
### **Palm uses IPFS for storage on its sustainable NFT platform**
@@ -57,7 +57,7 @@ This relatively new NFT studio recently partnered with IPFS.[ Palm](https://cons
### **Valist trusts IPFS for secure Web3 software distribution**
Releasing software through a website or app store can sometimes introduce security concerns as those made evident by the 2020 SolarWinds attack. [Valist](https://blog.ipfs.io/2021-12-07-building-web3-valist/) tackles the issue by allowing development teams to distribute software in a Web3-native way. IPFS acts as a primary storage layer for Valist by providing a lot of security guarantees out of the box.
Releasing software through a website or app store can sometimes introduce security concerns as those made evident by the 2020 SolarWinds attack. [Valist](https://blog.ipfs.tech/2021-12-07-building-web3-valist/) tackles the issue by allowing development teams to distribute software in a Web3-native way. IPFS acts as a primary storage layer for Valist by providing a lot of security guarantees out of the box.
### **Snapshot ensured that DAO voting processes are decentralized with IPFS**
@@ -38,11 +38,11 @@ The web today doesnt allow this type of architecture, and its very slow to
Changing the web is hard, and takes a long time. The goal of making IPFS easily available as a native web protocol is ambitious, but weve been making progress. This launch by Brave is the culmination of years of effort to understand how IPFS might work in browsers, what the security model needs to be, experiments with different approaches for embedding, and working with browser vendors to make it possible.
Early work to understand use-cases and challenges started in the [AreWeDistributedYet](https://arewedistributedyet.com/) project, where a number of distributed and decentralized web projects contribute and track browser support for these alternative protocols. The [IPFS In Web Browsers](https://github.com/ipfs/in-web-browsers) repo is where we track our efforts for IPFS. In 2019, we [summed up the momentum building](https://blog.ipfs.io/2019-10-08-ipfs-browsers-update/) as Brave added IPFS Companion support, Opera announced plans for IPFS support, and shared other experiments and interested browsers.
Early work to understand use-cases and challenges started in the [AreWeDistributedYet](https://arewedistributedyet.com/) project, where a number of distributed and decentralized web projects contribute and track browser support for these alternative protocols. The [IPFS In Web Browsers](https://github.com/ipfs/in-web-browsers) repo is where we track our efforts for IPFS. In 2019, we [summed up the momentum building](https://blog.ipfs.tech/2019-10-08-ipfs-browsers-update/) as Brave added IPFS Companion support, Opera announced plans for IPFS support, and shared other experiments and interested browsers.
In March of 2020, [Opera released IPFS native addressing in their Android browser](https://blog.ipfs.io/2020-03-30-ipfs-in-opera-for-android/), a first for the protocol. It was a big step, but still used HTTP to connect to the IPFS network, so it didnt provide all the benefits IPFS can bring when used natively.
In March of 2020, [Opera released IPFS native addressing in their Android browser](https://blog.ipfs.tech/2020-03-30-ipfs-in-opera-for-android/), a first for the protocol. It was a big step, but still used HTTP to connect to the IPFS network, so it didnt provide all the benefits IPFS can bring when used natively.
In 2020, [we started working with Igalia](https://blog.ipfs.io/2021-01-15-ipfs-and-igalia-collaborate-on-dweb-in-browsers/) to fix problems in the browsers themselves - identifying the compatibility issues, interoperability gaps, security model ambiguities, and missing APIs that prevented progress on a distributed web. Their expertise enabled a huge number of fixes to Chromium, Webkit, and Gecko open source projects which not only help IPFS and dweb projects, but make the web better for all developers. Read about this initiative and see all browser fixes landed [in this post by Frédéric Wang of Igalia on our blog](https://blog.ipfs.io/2021-01-15-ipfs-and-igalia-collaborate-on-dweb-in-browsers/).
In 2020, [we started working with Igalia](https://blog.ipfs.tech/2021-01-15-ipfs-and-igalia-collaborate-on-dweb-in-browsers/) to fix problems in the browsers themselves - identifying the compatibility issues, interoperability gaps, security model ambiguities, and missing APIs that prevented progress on a distributed web. Their expertise enabled a huge number of fixes to Chromium, Webkit, and Gecko open source projects which not only help IPFS and dweb projects, but make the web better for all developers. Read about this initiative and see all browser fixes landed [in this post by Frédéric Wang of Igalia on our blog](https://blog.ipfs.tech/2021-01-15-ipfs-and-igalia-collaborate-on-dweb-in-browsers/).
## Whats Next
@@ -56,4 +56,4 @@ This initial release of native support for IPFS in Brave provides basic node fun
- Develop the security and privacy user interface and visual language for IPFS in the browser address bar
- Add IPFS support to Braves Android browser
[Install Brave now!](https://brave.com/) Try the IPFS features and let us know how it went. You can report issues in [Braves GitHub repo](https://github.com/brave/brave-browser), in the [IPFS In Web Browsers](https://github.com/ipfs/in-web-browsers) repo, or join us in discussion on the [IPFS forums](https://discuss.ipfs.io/).
[Install Brave now!](https://brave.com/) Try the IPFS features and let us know how it went. You can report issues in [Braves GitHub repo](https://github.com/brave/brave-browser), in the [IPFS In Web Browsers](https://github.com/ipfs/in-web-browsers) repo, or join us in discussion on the [IPFS forums](https://discuss.ipfs.tech/).

Some files were not shown because too many files have changed in this diff Show More