- We're replacing our discovery network with a new DHT that handles hole-punching, and that's going to be exposed in a user-to-user messaging called PeerSockets https://github.com/beakerbrowser/beaker-core/pull/6 This is one of Maf's top two priorities right now. His other priority is a new version of the dat data-structure that will improve performance and lay the groundwork for multiple writers in a dat.
Thank you for founding this project. I've been playing around with DAT, and using it with this the browser seems very promising. Keep up the great work.
My understanding is that Beaker initially supported both Dat and IPFS, but dropped IPFS in favor of Dat for a variety of reasons, some of which were discussed in this other HN post: https://news.ycombinator.com/item?id=16434057
From a user perspective, Dat (and ZeroNet) maps to folders and filesystems much more coherently than IPFS does. I evaluated a few systems for a single use case in this Twitter thread: https://twitter.com/vitor_io/status/1019271473771569153
> From a user perspective, Dat (and ZeroNet) maps to folders and filesystems much more coherently than IPFS does.
How so? Once you have the hash of a folder in IPFS you can access its files and subfolders using the classic slash notation.
Take for example my web page at /ipns/pablo.rauzy.name, the structure under that folder is exactly the same as it is on the classical web version of my web page, and is accessed in the same way.
Access it, yes, but you can't update it. Dat and ZeroNet both let you maintain a single hash with dynamic contents.
Your web page points to different hashes over time through IPNS, which is additional work for a user, and relies on IPNS instead of being part of IPFS directly.
Right. It's not possible to have both content based addresses (like IPFS) and identify based addresses (like ZeroNet, apparently Dat, but also Tor, I2P, and IPNS).
To me as a user, IPNS additional work isn't much more than sitePublish and then siteSign in ZeroNet. The first is equivalent to ipfs add, the second to ipfs name publish.
Beaker is a nice project for self hosting, local authoring, etc. I have it installed on a laptop. Off topic, but I saw that they use NativeScript for portable web/iOS/Android apps - very cool, not seen that before and it goes on my long list of things to try.
When the internet is being mostly used (and increasingly more so) from mobile phones, why does Beaker focus on desktop? And further, do you think the web (both old web in conventional browsers and new web in Beaker) is desktop-first?
(I've been wanting to ask this in person, but so far we haven't met, and I suppose other readers might think of this question too)
Beaker is fundamentally a builder's tool. Right now, building means programming, and programming means typing- and typing means the desktop!
I see mobile as primarily a communication platform, while desktop is for productivity. So, I think we should approach them differently. It's true that mobile growth is up, but I don't think that means that desktop is dying. Desktop still has a strong user base. At this point, I almost feel like desktop is the most neglected. We'll get to mobile when the time is right.
I like the idea of beaker but I want to store user data at a non-local user-specified endpoint. A gallery app is a perfect example. You want access to lots of data but you can't store it all locally in all locations that you want access to. Ideally the user would be able to specify their datastore rather than the app supporting specific ones. Blockstack does this but their solution is DOA for decentralization.
I don't see Beaker as running counter to that idea; we just don't have tooling for that use-case yet. We could handle this mostly in userland: write a service that exports a filesystem API that's compatible with `DatArchive`, and then swap it out according to users' choices. I can imagine storing the user's service endpoints in their private dat for people to pick from (via apps).
Blockstack engineer here. Curious what makes you say our solution is DOA? Anyone can register a username with a Bitcoin transaction or two, and anyone can run a Gaia hub of their own. Blockstack PBC provides defaults to help users get started, but we encourage power users to take things into their own hands.
AFAICT, You can't use the platform without authenticating to the centralized servers of blockstack. That runs against the whole idea of decentralized. With Beaker/IPFS/ZeroNet, you just need the software.
It's been a while but last I checked, you had to register a domain (with $$$) to blockstack in order to run an app. Has this changed? Can I download the software and make my own X-Net with Blockstack now? (Not being snarky, I'd love to.)
> AFAICT, You can't use the platform without authenticating to the centralized servers of blockstack
Nope, this is not true. You can authenticate to an application without a Blockstack Core node; the only thing the Blockstack Core node does in the authentication flow is to pull up someone else's public key and storage routes. You can choose which node to use for this; both the blockstack.js library and authenticator give you the option. I use my locally-running node, for example.
> It's been a while but last I checked, you had to register a domain (with $$$) to blockstack in order to run an app.
On-chain names are not free, but only because they require Bitcoin transaction fees (and shorter names require an additional Bitcoin "burn" to dissuade squatters). If you send two properly-formatted Bitcoin transactions, then all Blockstack Core nodes everywhere will process them once they confirm and register your name to your public key.
Off-chain names can be given out for free, and do not require the user to wait for any transaction confirmations before using them to authenticate (this is what the product offers now by default). Off-chain names are first-class names like on-chain names, and have the same safety properties (they have slightly different liveness properties though -- details here: https://docs.blockstack.org/core/naming/subdomains.html).
Today, if you register a Blockstack ID via Blockstack's authenticator product's onboarding flow, it will be an off-chain name that ends in `.id.blockstack`. Your signed state for this name, as well as other names registered at around the same time, will be hashed and anchored to an on-chain "name update" transaction for the "id.blockstack" name and replicated to all Blockstack nodes once the transaction confirms. Until it confirms, other nodes will redirect lookup requests on it to the registrar for id.blockstack (but once it confirms, any node will be able to handle lookups).
> Can I download the software and make my own X-Net with Blockstack now?
You can absolutely do this! Happy to help you out on our forum at forum.blockstack.org.
In ZeroNet you can specify optional files that will be downloaded only if needed and not by default when loading the website. Maybe Dat allows this too?
ZeroNet has supported movie-sized files and up with it's BigFiles plugin since early this year. It's effectively done torrent style, downloading chunks from multiple peers, but working over TCP, with optional Tor support built in.
> Yeah, so Mathias was working on that, while I was in the Secure Scuttlebut community… And then at one point I decided – well, Electron got to the point where I was like, you know what, _I think it’s actually possible to make a browser off of Electron_.
What a day we live in, making a browser with browser-code. Who knew?
- This week we managed to get a performance bump by moving the dat stack into its own process: https://www.youtube.com/watch?v=A1lVBr5BchE&feature=youtu.be
- We're working on identity and user-filesystem tooling, discussed here: https://twitter.com/pfrazee/status/1058830217798660096
- We're replacing our discovery network with a new DHT that handles hole-punching, and that's going to be exposed in a user-to-user messaging called PeerSockets https://github.com/beakerbrowser/beaker-core/pull/6 This is one of Maf's top two priorities right now. His other priority is a new version of the dat data-structure that will improve performance and lay the groundwork for multiple writers in a dat.
I've played with IPFS and ZeroNet (my web page is available on those networks too), but never with Dat.
From a user perspective, Dat (and ZeroNet) maps to folders and filesystems much more coherently than IPFS does. I evaluated a few systems for a single use case in this Twitter thread: https://twitter.com/vitor_io/status/1019271473771569153
How so? Once you have the hash of a folder in IPFS you can access its files and subfolders using the classic slash notation.
Take for example my web page at /ipns/pablo.rauzy.name, the structure under that folder is exactly the same as it is on the classical web version of my web page, and is accessed in the same way.
Your web page points to different hashes over time through IPNS, which is additional work for a user, and relies on IPNS instead of being part of IPFS directly.
To me as a user, IPNS additional work isn't much more than sitePublish and then siteSign in ZeroNet. The first is equivalent to ipfs add, the second to ipfs name publish.
(I've been wanting to ask this in person, but so far we haven't met, and I suppose other readers might think of this question too)
I see mobile as primarily a communication platform, while desktop is for productivity. So, I think we should approach them differently. It's true that mobile growth is up, but I don't think that means that desktop is dying. Desktop still has a strong user base. At this point, I almost feel like desktop is the most neglected. We'll get to mobile when the time is right.
AFAICT, You can't use the platform without authenticating to the centralized servers of blockstack. That runs against the whole idea of decentralized. With Beaker/IPFS/ZeroNet, you just need the software.
It's been a while but last I checked, you had to register a domain (with $$$) to blockstack in order to run an app. Has this changed? Can I download the software and make my own X-Net with Blockstack now? (Not being snarky, I'd love to.)
Nope, this is not true. You can authenticate to an application without a Blockstack Core node; the only thing the Blockstack Core node does in the authentication flow is to pull up someone else's public key and storage routes. You can choose which node to use for this; both the blockstack.js library and authenticator give you the option. I use my locally-running node, for example.
> It's been a while but last I checked, you had to register a domain (with $$$) to blockstack in order to run an app.
On-chain names are not free, but only because they require Bitcoin transaction fees (and shorter names require an additional Bitcoin "burn" to dissuade squatters). If you send two properly-formatted Bitcoin transactions, then all Blockstack Core nodes everywhere will process them once they confirm and register your name to your public key.
Off-chain names can be given out for free, and do not require the user to wait for any transaction confirmations before using them to authenticate (this is what the product offers now by default). Off-chain names are first-class names like on-chain names, and have the same safety properties (they have slightly different liveness properties though -- details here: https://docs.blockstack.org/core/naming/subdomains.html).
Today, if you register a Blockstack ID via Blockstack's authenticator product's onboarding flow, it will be an off-chain name that ends in `.id.blockstack`. Your signed state for this name, as well as other names registered at around the same time, will be hashed and anchored to an on-chain "name update" transaction for the "id.blockstack" name and replicated to all Blockstack nodes once the transaction confirms. Until it confirms, other nodes will redirect lookup requests on it to the registrar for id.blockstack (but once it confirms, any node will be able to handle lookups).
> Can I download the software and make my own X-Net with Blockstack now?
You can absolutely do this! Happy to help you out on our forum at forum.blockstack.org.
ZeroNet has supported movie-sized files and up with it's BigFiles plugin since early this year. It's effectively done torrent style, downloading chunks from multiple peers, but working over TCP, with optional Tor support built in.
> Yeah, so Mathias was working on that, while I was in the Secure Scuttlebut community… And then at one point I decided – well, Electron got to the point where I was like, you know what, _I think it’s actually possible to make a browser off of Electron_.
What a day we live in, making a browser with browser-code. Who knew?