Giter Site home page Giter Site logo

ipfs's Introduction

IPFS powers the Distributed Web

A peer-to-peer hypermedia protocol to make the web faster, safer, and more open.

TL;DR

Full contents

Quick summary

The IPFS project seeks to evolve the infrastructure of the Internet and the Web, with many things we've learned from successful systems, like Git, BitTorrent, Kademlia, Bitcoin, and many, many more. This is the sort of thing that would have come out of ARPA/DARPA, IETF, or Bell Labs in another age. IPFS is a free, open-source project with thousands of contributors.

IPFS (the InterPlanetary File System) is a hypermedia distribution protocol addressed by content and identities. It enables the creation of completely distributed applications, and in doing so aims to make the web faster, safer, and more open.

IPFS is a distributed file system that seeks to connect all computing devices with the same system of files. In some ways, this is similar to the original aims of the Web, but IPFS is actually more similar to a single BitTorrent swarm exchanging Git objects. You can read more about its origins in the paper IPFS - Content Addressed, Versioned, P2P File System.

IPFS is becoming a new major subsystem of the internet. If built right, it could complement or replace HTTP. It could complement or replace even more. Let's go point-by-point into how.

IPFS is a protocol:

  • Defines a content-addressed file system
  • Coordinates content delivery
  • Combines Kademlia + BitTorrent + Git

IPFS is a file system:

  • Has directories and files
  • Is a mountable filesystem (via FUSE)

IPFS is a web:

  • Can be used to view documents like the conventional web
  • Files are accessible via HTTP at https://ipfs.io/<path>
  • Browsers and extensions can learn to use the ipfs:// URL or ipns:// URI schemes directly
  • Hash-addressed content guarantees authenticity

IPFS is modular:

  • Connection layer over any network protocol
  • Routing layer
  • Uses a routing layer DHT (Kademlia/Coral)
  • Uses a path-based naming service
  • Uses a BitTorrent-inspired block exchange

IPFS uses crypto:

  • Cryptographic-hash content addressing
  • Block-level deduplication
  • File integrity plus versioning
  • File-system-level encryption plus signing support

IPFS is p2p:

  • Worldwide peer-to-peer file transfers
  • Completely decentralized architecture
  • No central point of failure

IPFS is a CDN:

  • Add a file to the file system locally, and it's now available to the world
  • Caching-friendly (content-hash naming)
  • BitTorrent-based bandwidth distribution

IPFS has a name service:

  • IPNS, an SFS-inspired name system
  • Global namespace based on PKI
  • It serves to build trust chains
  • It's compatible with other NSes
  • Can map DNS, .onion, .bit, etc to IPNS

Learn how IPFS works

To learn more about how IPFS works, explore the following resources:

Current state of IPFS

IPFS is a work in progress! It is an ambitious plan to make the internet more free, open, secure, and high-performance. It builds on the good ideas of numerous battle-tested distributed systems.

Today, there are multiple implementations from various organizations supporting multiple languages.

Try it out

See https://docs.ipfs.tech/basics/

A word on security

The IPFS protocol and its implementations are still in heavy development. This means that there may be problems in our protocols, or there may be mistakes in our implementations. And — though IPFS is not production-ready yet — many people are already running nodes on their machines, so we take security vulnerabilities very seriously. If you discover a security issue, please bring it to our attention right away!

If you find a vulnerability that may affect live deployments — for example, by exposing a remote execution exploit — please send your report privately to [email protected]. Please do not file a public issue.

If the issue is a protocol weakness that cannot be immediately exploited, or something not yet deployed, just discuss it openly.

Get involved

The IPFS project is big — with thousands of contributors in our community — and you're invited to join! Check out the Community section of the IPFS Docs for all the details on how to get involved, including the official IPFS forums, our chat channels, social media, meetups and ProtoSchool workshops, and more.

If you're interested in how the project is organized at a higher level, visit the IPFS Team & Project Management repo.

There's also a weekly IPFS newsletter (subscribe here) and regularly-updated blog.

Help and documentation

If you're looking for help learning about or building with IPFS, start with these resources:

If you've found a bug or want to make a feature request regarding a specific component of IPFS, please open an issue in the appropriate repo so that it can be triaged and responded to as quickly as possible.

Links and resources

The IPFS project is big (and expanding every day!), so we've excerpted some frequently-used links and other resources below. However, we encourage you to explore both the main IPFS GitHub org (for core implementations and other mission-critical work) and the IPFS Shipyard GitHub org, home to incubated projects by the IPFS community.

Protocol implementations

These are multiple implementations from various organizations supporting multiple languages

GUIs and helper apps

  • ipfs-companion - The IPFS web browser extension.
  • ipfs-webui - The IPFS WebUI app.
  • ipfs-desktop - A menubar/tray desktop app.
  • ipfs-gui - Coordinating development, user experience, and maintenance of IPFS GUIs.
  • i18n - The IPFS Translation Project: crowdsourcing translations of IPFS GUIs and websites.

Apps and data sets on IPFS

  • Awesome IPFS - an ever-growing list of apps, data sets, and other inspirational resources built on IPFS.

Specs and papers

Installation and update tools

Additional resources

  • distributions - Source code for the IPFS distributions website, https://dist.ipfs.tech.
  • infra - Tools for maintaining infrastructure for the IPFS community.
  • testground - Tools for testing distributed software at scale.
  • ipfs-cluster - Provides data orchestration across a swarm of IPFS daemons by allocating, replicating, and tracking a global pinset distributed among multiple peers.
  • ipfs-shipyard - A wide range of incubated projects by and for the IPFS community.
  • website - Source code for the IPFS website, http://ipfs.tech.

License

MIT.

ipfs's People

Contributors

jbenet avatar richardlitt avatar daviddias avatar stebalien avatar jessicaschilling avatar momack2 avatar hsanjuan avatar monotox avatar dylanpowers avatar whyrusleeping avatar lidel avatar meiqimichelle avatar victorb avatar yaodzy avatar flyingzumwalt avatar hacdias avatar ali01 avatar swedneck avatar biglep avatar johnnymatthews avatar slothbag avatar jmithmstr avatar techmexdev avatar jennwrites avatar web-flow avatar wraithgar avatar payasr avatar piperchester avatar prayagverma avatar richardschneider avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.