Blockstack for Mac Alpha

Greetings Blockstackers! Up until now, running the Blockstack Browser has required coding skills and a nodejs development environment to get up and running. We’re building the new decentralized internet for everyone, not just for people who clean up their workspace by running make clean.

To that end, I’m happy to announce that we’re making it easy to get the Blockstack Browser running on your favorite device, starting first with the Mac.

We now have a native macOS application that lets you connect to the decentralized internet with one click.

A sneak peak

Click the Blockstack icon to connect to the decentralized internet.

It automatically opens the Blockstack Browser where you can create an account, manage your identities or find apps.

To disconnect from the decentralized internet, click the Blockstack logo on your menubar.

How it works

The Blockstack for Mac app bundles the latest Blockstack Browser code, which is a single page application, and runs a proxy to serve the Blockstack Browser on localhost. It also runs a CORS proxy that allows us to perform validations of proofs located on third party sites.

The road forward

In the future, we’ll want to distribute a Blockstack Core node with the app and interface with macOS’s DNS subsystem to enable Blockstack name look up throughout the operating system instead of only in the Blockstack Browser.

Other devices

Both the Blockstack Browser proxy and the CORS proxy are written in javascript and compiled to native executables with nexe. We should be able to reuse this technique on both Linux and Windows platforms.

Try it out!

If you’re a Mac Developer, grab a copy of the code and try to build the app. Let me know if you run into problems.

If you’d like to try a pre-built version of the app, stay tuned! We’ll have one for you very soon.

4 Likes

This is awesome!!! @larry :boom::boom::boom::boom::boom::boom::boom::boom::boom::boom::boom:

1 Like

Hi All! Just sharing my experience with the Mac browser installation … in case it can help others get it going …

After downloading the alpha version for Mac (thank you @larry!) I tried two ways to open the downloaded “Blockstack 2017-01-11 01-47-54” folder:
(1) Right clicking on the browser icon in the folder to open it in Safari; and
(2) Opening the URL http://localhost:8888 in Chrome.

Both took me to this page:

I tried creating an Account in both. For some reason, in Safari it seemed to get stuck while registering the account info I entered. In Chrome, it worked pretty quickly … and I ended up at this starting page:

With one click on Home in top right nav bar, you land here:

Now my question to more knowledgable colleagues … I already have a .id name so …

How can I create a bio “page” and show up in search results?

Great! Glad it worked! Thanks so much for sharing your feedback! :grinning:

We originally wrote the browser to be an electron app - this means it was running in a version of chromium (the open source version of chrome). Some features that we used that worked in chrome aren’t yet supported in other browsers. In this case, the new fetch API which we use to process the registration doesn’t exist in the current (10.0.2) version of safari, so registration fails. Fetch is available in the safari technology preview which means it should ship in the next major Safari update. If our release schedule is faster than that update ships, we can add a polyfill version of fetch so that it works in safari and other older browsers.

1 Like

Yeah it’s unfortunate that Safari took so long to add Fetch, whereas other browsers already support it.

Good to know it’ll be in the next version.

@larry how hard would it be to add a polyfill in the meantime?

Also, @larry I mentioned this in the Slack channel but amazing work on this. I’m loving the new Mac app. Such a big difference.

1 Like

Shouldn’t be hard at all. Will do it in a bit. https://github.com/blockstack/blockstack-browser/issues/150

Done https://github.com/blockstack/blockstack-browser/issues/150

isomorphic-fetch polyfills using whatwg-fetch in browserify and node-fetch in node.

1 Like