This commit is contained in:
Jay Graber 2020-06-12 21:19:04 -07:00
parent 48a81d7023
commit 2e81f063a3
1 changed files with 19 additions and 16 deletions

View File

@ -6,33 +6,31 @@ Dat was created in 2013 as a protocol designed to help data analysts collaborate
Hypercore has moved away from a distributed file system architecture. It focuses on the p2p distribution of an append-only log, and its main purpose is to be a building block for other applications. The switch to hypercore was motivated by performance and scaling improvements, and the addition of [mounts](https://blog.hypercore-protocol.org/posts/announcing-hyperdrive-10/) for nested hyperdrives. In addition, a DHT was added for peer lookup.
A cryptographic keypair is used to sign the root of the Merkle tree as data is appended to it. Hyperdrive is the filesystem implemented on hypercore.
Hypercore focuses on mutable data by organizing content under keys. Files stored under a requested key can easily change at any time. To track changes, Hypercore keeps a version log of the dataset over time.
### Identity
### Networking
Hypercore uses the [Hyperswarm](https://hypercore-protocol.org/#hyperswarm) networking module. Hyperswarm combines a Kademlia-based DHT for global discovery with MDNS to discover peers on local networks. Users [join the swarm](https://pfrazee.hashbase.io/blog/hyperswarm) for a “topic” and query periodically for other peers who are in the topic. When ready to connect, Hyperswarm helps create a socket between them using either UTP or TCP. A set of bootstrap servers is used to help connect a new node to the network.
### Data
Hypercore optionally uses DNS to give short-names to keys, so that users can have a "foo.com" address.
Hypercore's primary data structure is a signed append-only log. Hypercore focuses on mutable data by organizing content under keys. A cryptographic keypair is used to sign the root of the Merkle tree (tree log?) as data is appended to it. Files stored under a key can easily change at any time. To track changes, Hypercore keeps a version log of the dataset over time. Only the original creator of a Hypercore can append new data, making it a [single-writer data structure](https://mafinto.sh/blog/introducing-hypercore-8.html). Multi-writer data structures can be built by using multiple hypercores that reference each other's elements.
The primary data structure used is a tried-based tree structure, Hyperdrive, that behaves like a folder of files.
Hyperdrive is the filesystem implemented on hypercore. It is an append-only hash trie, which functions like a folder of files. An improvement added to Hypercore that was not present in Dat is the ability to mount hypercores like a folder of files, giving others access to subsets of data.
Hyperdrive is built from "hypercores", append-only logs where data is arranged in Merkle trees.
A node must be actively sharing a topic for it to be available. To ensure persistence, nodes can [pin their own data](https://docs.dat.foundation/docs/dat-server) on a server that stays online, or can pay a pinning service to host it.
### Moderation & Reputation
Hypercore's distributed networking stack, "hyperswarm", combins a Kademlia-based DHT for global discovery with MDNS to discover peers on local networks.
By default, Hyperswarm connections are unencrypted.
### Social & Discovery
Nodes create keys for topics. Data they want to associate with that topic can be added to the signed log.
Hypercore optionally uses DNS to give short-names to keys, so that users can have a "foo.com" address.
### Privacy & Access Control
### User experience (if applies)
By default, Hyperswarm connections are unencrypted. Hyperswarm does not hide user IPs or mask metadata. However, once Hyperswarm has established a connection, Hypercore wraps it in a [Noise protocol](https://noiseprotocol.org/) stream to add end-to-end encryption.
### Interoperability
@ -46,12 +44,17 @@ Study on scalability of Dat vs HTTP for video streaming: http://www.diva-portal.
The Hypercore protocol's development is coordinated through the Dat Foundation nonprofit, and led by two companies, Blue Link Labs (which develops Beaker browser), and Hyperdivision consulting.
Hypercore is fully open source and free to use. Each individual in the network is responsible for persisting the data they care about by either adding their own resources (running a node) or incentivizing another group to persist their data (paying a pinning service). Therefore, the network grows in capacity as new users join. Services that rely on Hypercore are incentivized to participate in the public DHT as servers to improve performance and availability of their data - and all participating nodes help with peer-to-peer data transfer and routing.
### Implementations & Applications
The [Beaker browser](https://beakerbrowser.com/) is a decentralized web browser for Dat & Hypercore sites.
The [Beaker browser](https://beakerbrowser.com/) is a p2p web browser for Hypercore sites.
Applications using Hypercore include:
- [Mapeo](https://www.digital-democracy.org/mapeo/), an offline-friendly mapping software to support indigenous land rights
- [Cabal](https://cabal.chat/), a p2p chat platform
- [Peer-to](https://peer-to.peer-to-peer-web.com/), an online art exhibition only available on the through the Beaker browser
### Links
https://hypercore-protocol.org/
[Hypercore Protocol](https://hypercore-protocol.org/)
[Comparing IPFS and Dat](https://medium.com/decentralized-web/comparing-ipfs-and-dat-8f3891d3a603)