Web3 is an umbrella term for a new wave of applications that rely on decentralized technologies and the Blockchain.
Since the inception of Ethereum, which brought the idea of executing code in the Blockchain, many new projects have emerged in this space to help developers implement decentralized applications.
The image above shows some of the most notable projects that you can start using today.
Let's give a short overview of the purpose for each one.
"Interplanetary file system" (or IPFS) is a protocol and peer-to-peer network for storing and sharing files. As with any peer-to-peer network, there is no central server, and different nodes in the network replicate copies of the files.
It would be equivalent to Bittorrent but with a different feature set, and it's what most developers in the Web3 space use today for hosting DApps, written as Single Page Applications, or store and share files.
IPFS is also used to store assets related to the NFTs.
Once you publish content in one of the IPFS nodes, it gets associated with an identifier that could use to locate it.
Another critical aspect of IPFS if you are planning to host your DApp on it is content pinning. To ensure your files are retained in the network, you need to rely on a pinning service. Infura, for example, offers a free plan for a limited space.
The Graph project implements a protocol for indexing and querying data available in the Eth Transaction Log and IPFS.
It supports the idea of subgraphs, which allow developers to tailor the data to be indexed based on their needs.
Those subgraphs are published through nodes in the network, and they can be queried from DApps.
If your DApp has immediate needs to query data available in the transaction log (e.g., transactions or events), or data pushed in IPFS, you should start by looking into this project first.
Chainlink is a project whose aim is to provide all the infrastructure and plumbing for running a network of Oracles (DONs) that integrate with existing Blockchain networks (Ethereum and others). It's not a Blockchain, but it offers the infrastructure to run heterogeneous networks with oracle nodes that act as intermediaries between Smart Contracts and applications running outside.
The value proposition or business value in Chainlink is to offer a mechanism to sell data to apps running in the Blockchain. If you have an API that provides data that might be useful in the Blockchain, you can publish it through a Chainlink's adapter in one or more nodes and get paid for every request made to it. The unit of payments is a LINK token, which is a standard ERC-677 token.
You can run one or more nodes or ask any existing node operators (service providers that run nodes in their infrastructure) to run the adapter for you.
In that sense, Chainlink represents a collection of decentralized oracle networks (DONs) with nodes hosting different adapters or connections with external applications.
One of the critical aspects of implementing autonomous apps that run in a Blockchain is that they can not rely on a single data source to make decisions. If the data source becomes unavailable or starts providing inaccurate information, it suddenly becomes a big mess.
Chainlink tries to address that issue by aggregating data from multiple sources and making it available through various nodes (horizontal scaling). If one node becomes unresponsive, the other nodes can take that work. The same thing with the data sources is that if one starts providing invalid data, they can still correct it by using other sources.
If you are building Smart Contracts that require interaction with the external world, this is the project to look into.
Ceramic and IDX are two relatively new projects from the same company, which address different scenarios.
Ceramic provides a mechanism for supporting data streams on top of IPFS. This project might be a good fit if you need to support scenarios like messaging in your DApp.
On the other hand, IDX is about user identity and authentication. It tries to provide an identity layer that any DApp could use to uniquely identify users in a decentralized manner. If you want your DApp users to be authenticated with ETH private keys and have a decentralized profile for them, this is the project.
Polkadot is a project that provides interoperability between ETH and other Blockchains. The idea behind Polkadot is that many of the different available Blockchain today have different purposes, there is any Blockchain that could do everything, and they need to interoperate somehow. The connection between those Blockchain networks is made through bridges, which this project is going to provide.
A bridge is an intermediary for moving assets or data from one Blockchain to another. As the Blockchains use different protocols, rules, and governance models, the bridge provides various interoperable mechanisms on both sides.
Polygon is a layer 2 project for Ethereum. It's well known that Ethereum suffers from scalability issues. It can only process 17 transactions per second, and the gas fees can be very high sometimes.
Polygon runs on top of the Ethereum network and provides better transaction throughput and lower gas fees. It works as a secondary network with a bridge that allows moving assets (tokens) from one network and another. You could leverage Polygon to move load from the main Ethereum network into this L2 Blockchain and provide better response times and cheap gas fees to your users.