Show HN: Privacy-Focused Alternative to Google Docs and Microsoft Word
docs.arcaneoffice.com
docs.arcaneoffice.com
If you use block-chain to empower machine learning you can enable your business to proactively think outside the box on all of your action items!
I would love it if you could link a technical deep dive into how Blockstack fundamentally works because I've gotten very few answers from both implementors and founders, and their existing documentation isn't at all helpful.
Authentication happens completely client-side. The Blockstack authenticator registers itself as a protocol handler for the "blockstack:" protocol, such that when you click a sign-in button, you will be redirected to your locally-running authenticator (or to a hosted version of the same, if you don't have the authenticator installed). The authenticator stores your master key, and will derive the ID- and application-specific key-pair for you when you select the ID to sign in as.
Once you sign in, the authenticator redirects you back to the application. The authenticator passes the app the Blockstack ID and application-specific private key via the URL string (encrypted with an ephemeral ECDSA key generated by the app on sign-in), and the blockstack.js library fetches and downloads the user's profile to learn the storage endpoint(s) as part of completing the sign-in. In so doing, the application learns the storage endpoint to which to GET and POST user data, and learns the key to use to sign/encrypt it and to authenticate to the user's preferred storage (access to which is mediated by a Gaia hub that the user selects when onboarding).
Agreed that a deep dive with protocol diagrams would be handy. We're working on it! :)
Just providing a bit of background. The private key is _not_ stored on the blockchain; only the hash of the public key is. And even then, there are a couple of layers of indirection between the Bitcoin transaction itself and the storage of your (app-specific) public key. Specifically, one Bitcoin transaction registers a batch of ~160 username/public-key-hash/profile-storage-URL bindings, and from there, the profile storage URL resolves to the user's list of application-specific public keys and application-specific storage URLs.
Pertaining to questions of scalability in other threads, 160 usernames/transaction, when operated at 8 250-byte transactions/block (about 3.4% of Bitcoin's capacity), works out to ~184,000 user registrations/day (about the same as Twitter). Moreover, usernames can be resolved to public keys and storage URLs while the underlying transaction is being confirmed, so users don't have to wait to start using applications. All other user state is stored off-chain in the user's chosen storage provider, managed by a Gaia hub (Gaia being Blockstack's storage system: https://github.com/blockstack/gaia).
EDIT: clarifications
Being someone who is working on building a text editor myself, I know how many small details make or break the user experience. While the privacy focus is nice, I won't sacrifice the user experience.
Proving that the app state is up to par would be an instant factor to make me switch.
Just encryption -- you don't need the whole blockchain.
Not sure there is a way to do that with Google Docs, though. You need a layer between them. You can use Google Drive of course, but then the client has to come up with all the clever features Docs provides.
No way to provide sign-in with e-mail & pw? :(
Can you log in if Blockstack-the-company goes down or has a technical issue?
But there's zero reason for any site not to offer the tried-and-trusted email and password, even just as as a fallback option, especially these days where trust in online stuff is seemingly at an all-time low.
Google, Facebook, et al., companies with massively larger, dedicated security departments swore up, down, and sideways that "everyone's data" is "secure" and "encrypted" ";)"
<pre> TypeError: "e is undefined" a base64url.js:17 o base64url.js:14 mounted Redirect.vue:69 VueJS 11 cd49 main.ts:9 Webpack 6 </pre>
Give users the option to hide the controls. You already let people hide the formatting, but in order for me to want to use this to write, I would need the ability to hide the top bar ie
BACK TO LIST | HOME | ... | EXPORT & SHARE
SV is stuck in its silo's, content to be spymasters of their peers for the five eyes.
There aren't as many SV people here as there used to be, but the community is still skewed that way.
SV's tech industry is far from dominated by blockchain as it may be in other places, which may make blockchain seem relatively small there. But it's a bigger and more robust scene than most other places.
https://simons.berkeley.edu/workshops/proofs2019-boot-camp (berkeley has several sites, not sure which best to link, but their speciality is in Zero Knowledge crypto applied to blockchain)
> SV's tech industry is far from dominated by blockchain as it may be in other places, which may make blockchain seem relatively small there.
That is also a great point! I didn't even think about that, thanks for the eye opener.
With that said, it does seem like this place is extremely skeptical of blockchain. I figure its the SV legacy types that probably lurk around here still.
I actually did a blockchain at Berkeley online class. It was great, I think it was through Coursera iirc.
None of these apps need a blockchain. None of these apps gain any benefit from a blockchain. Just, I dunno, don't use a giant universally observable blockchain that suffers from the majority issue in order to store private data? Seems easy enough.
Regarding financials, I invite you to read our SEC offering circular for details on the source of the money: https://www.sec.gov/Archives/edgar/data/1719379/000110465919...
> None of these apps need a blockchain. None of these apps gain any benefit from a blockchain.
The blockchain serves as a "shared source of truth" for everyone's name/public-key/storage-URL bindings. So as long as you trust that the blockchain doesn't get re-orged, you may assume that your Blockstack node will independently calculate the same such bindings as everyone else's node. All other application activity (rightfully) happens off-chain, via commodity Web infrastructure.
EDIT: typo
GDPR mandates "right to be forgotten", which afaik isn't very compatible with how blockchains work.
How do you deal with it?
How do you do this? I just went through the sign up and I did not see any such option.