diff --git a/README.md b/README.md
index 55b4b296..fc8589f1 100644
--- a/README.md
+++ b/README.md
@@ -20,16 +20,16 @@ Blockstack is a ecosystem build around a platform. There are several types of us
Users who make use of applications built on the Blockstack platform. These users have a Blockstack identity and typically use the Blockstack Browser at some point.
-
Dapp developers or DApp miners
-
Users who develop applications on the Blockstack platform. These users may be application miners but are not always. Special content exists for developers that are also miners.
+
Dapp developers
+
Users who develop applications on the Blockstack platform.
Hub Providers
-
Users who sell or maintain a Gai services are hub providers. They may also be application miners but need not be. These users may be more devops user types as opposed to developers.
+
Users who sell or maintain a Gai services are hub providers. These users may be more devops user types as opposed to developers.
Core service programmers
-
These are users that provide Blockstack CORE servers or who write Clarity contracts. These are also users who build wallets or explorers into the Blockstack platform.
+
These are users that run Stacks node or who write Clarity contracts. These are also users who build wallets or explorers into the Blockstack platform.
@@ -77,7 +77,7 @@ Directories that contain information used to build content.
_develop
-
Information for application miners covers using the Javascript library, our mobile SDKs, and the concepts hat support them. Navigation controlled by developer menu
+
Information for application developers covers using the Javascript library, our mobile SDKs, and the concepts hat support them. Navigation controlled by developer menu
@@ -260,13 +260,13 @@ As of 8/12/19 Clarity is in the [develop](https://github.com/blockstack/blocksta
You can view [the source code](https://github.com/blockstack/blockstack-core/blob/develop/src/clarity.rs).
-1. Pull the Blockstack core clarity-developer-preview image from Docker Hub.
+1. Pull the Stacks Node clarity-developer-preview image from Docker Hub.
```bash
$ docker pull blockstack/blockstack-core:clarity-developer-preview
```
-2. Start the Blockstack Core test environment with a Bash shell.
+2. Start the Stacks Node test environment with a Bash shell.
```bash
$ docker run -it -v $HOME/blockstack-dev-data:/data/ blockstack/blockstack-core:clarity-developer-preview bash
@@ -295,12 +295,11 @@ You can view [the source code](https://github.com/blockstack/blockstack-core/blo
## Understand how the shared FAQs work
-The FAQ system servers single-sourced content that support the FAQs that appear in blockstack.org, app.co, and stacks.com site. We have FAQs that fall into these categories:
+The FAQ system servers single-sourced content that support the FAQs that appear in blockstack.org, and stackstoken.com site. We have FAQs that fall into these categories:
* general
* appusers
* dappdevs
-* appminers
* coredevs
* opensource
* miscquest
@@ -331,12 +330,7 @@ FAQs are usually written internally by a team that are unfamiliar with markdown
_faqs/allfaqs.json
Liquid to generate JSON from theFAQS.json
-
Serves up the FAQs that are consumed by the blockstack.org and stacks.com sites.
-
-
-
_develop/faq-data.json
-
Liquid to generate JSON from appFAQ.json.
-
Serves up the FAQs that are consumed by the app.co site.
NOTE: App.co was never changed to pull from the same file as blockstack.org.
+
Serves up the FAQs that are consumed by the blockstack.org and stackstoken.com sites.
_faqs/allFAQs.md
@@ -348,16 +342,6 @@ FAQs are usually written internally by a team that are unfamiliar with markdown
JSON for the FAQS.
Source file for all the FAQs.
-
-
_data/appFAQ.json
-
JSON for the app mining FAQs.
-
Source file for the application mining FAQs.
-
-
-
_develop/appMiningFAQ.md
-
Liquid to extract the app mining FAQs from the allFAQs.json file.
-
Display just the app mining FAQs in the docs.
-
diff --git a/_android/tutorial.md b/_android/tutorial.md
index 376c5eef..1cc57501 100644
--- a/_android/tutorial.md
+++ b/_android/tutorial.md
@@ -3,7 +3,7 @@ layout: learn
description: Learn about the Android SDK
permalink: /:collection/:path.html
---
-# Android SDK Tutorial (Pre-release)
+# Android DApps
{:.no_toc}
This tutorial is written for readers who are new to either or both Blockstack
@@ -701,9 +701,6 @@ Now that you have created your initial project and verified it running in an emu
## Where to go next
-Congratulations, you've completed your Android app using the new, pre-release
-Blockstack Android SDK. Thank you for trying this pre-release. Please let us
-know about your experience by tweeting to
-[@blockstack](https://twitter.com/blockstack).
+Congratulations, you've completed your Android app using the Blockstack Android SDK.
Learn more about Blockstack by [trying another tutorial](https://blockstack.org/tutorials).
diff --git a/_browser/.svn/entries b/_browser/.svn/entries
deleted file mode 100644
index 48082f72..00000000
--- a/_browser/.svn/entries
+++ /dev/null
@@ -1 +0,0 @@
-12
diff --git a/_browser/.svn/format b/_browser/.svn/format
deleted file mode 100644
index 48082f72..00000000
--- a/_browser/.svn/format
+++ /dev/null
@@ -1 +0,0 @@
-12
diff --git a/_browser/.svn/pristine/04/04f3a32b0bc311047a20e12c72428e50812cdbd9.svn-base b/_browser/.svn/pristine/04/04f3a32b0bc311047a20e12c72428e50812cdbd9.svn-base
deleted file mode 100644
index 829f7c1f..00000000
Binary files a/_browser/.svn/pristine/04/04f3a32b0bc311047a20e12c72428e50812cdbd9.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/07/0760488b80dc376bd96b4dd0ec94f4e79292cf9b.svn-base b/_browser/.svn/pristine/07/0760488b80dc376bd96b4dd0ec94f4e79292cf9b.svn-base
deleted file mode 100644
index 36684bff..00000000
--- a/_browser/.svn/pristine/07/0760488b80dc376bd96b4dd0ec94f4e79292cf9b.svn-base
+++ /dev/null
@@ -1,330 +0,0 @@
----
-layout: learn
-permalink: /:collection/:path.html
----
-# Hello, Blockstack Tutorial
-
-In this tutorial, you generate a simple application on Blockstack. The application
-is a single-page application (SPA) that runs completely client-side. The
-application has no backend API to talk to, other than the identity and storage
-API that the user provides. In this sense, the application is a completely
-decentralized, server-less application. You work through the following sections:
-
-* TOC
-{:toc}
-
-## About this tutorial and the prerequisites you need
-
-For this tutorial, we will use the following tools:
-
-- `npm` to manage dependencies and scripts
-- `browserify` to compile node code into browser-ready code
-- `blockstack.js` to authenticate the user and work with the user's identity/profile information
-
-At minimum, Blockstack requires macOS High Sierra. This tutorial was written for
-a user running macOS High Sierra 10.13.4. The application you build is a
-React.js application that is completely decentralized and server-less. While
-not strictly required to follow along, basic familiarity with React.js is
-helpful.
-
-When complete, the app is capable of the following:
-
-- authenticating users using Blockstack
-- posting new statuses
-- displaying statuses in the user profile
-- looking up the profiles and statuses of other users
-
-The basic identity and storage services are provided by `blockstack.js`. To test
-the application, you need to have already registered a Blockstack ID.
-
-The tutorial relies on the `npm` dependency manager. Before you begin, verify
-you have installed `npm` using the `which` command to verify.
-
-```bash
-$ which npm
-/usr/local/bin/npm
-```
-
-If you don't find `npm` in your system, [install
-it](https://www.npmjs.com/get-npm).
-
-Finally, make sure you have [created at least one Blockstack ID]({{ site.baseurl }}/browser/ids-introduction.html#create-an-initial-blockstack-id). You'll use this ID to interat with the application.
-
-## Use npm to install Yeoman and the Blockstack App Generator
-
-You use `npm` to install Yeoman. Yeoman is a generic scaffolding system that
-helps users rapidly start new projects and streamline the maintenance of
-existing projects.
-
-
-1. Install Yeoman.
-
- ```bash
- npm install -g yo
- ```
-2. Install the Blockstack application generator.
-
- ```bash
- npm install -g generator-blockstack
- ```
-
-## Generate an initial Blockstack application
-
-In this section, you build an initial React.js application called `hello-world-tutorial`.
-
-1. Create the `hello-world-tutorial` directory.
-
- ```bash
- mkdir hello-world-tutorial
- ```
-
-2. Change into your new directory.
-
- ```bash
- cd hello-world-tutorial
- ```
-
-3. Use Yeoman and the Blockstack application generator to create your initial `hello-world-tutorial` application.
-
- ```bash
- yo blockstack
- ```
-
- You should see several interactive prompts.
-
- ```bash
- $ yo blockstack
-
- _-----_ ╭──────────────────────────╮
- | | │ Welcome to the │
- |--(o)--| │ Blockstack app │
- `---------´ │ generator! │
- ( _´U`_ ) ╰──────────────────────────╯
- /___A___\ /
- | ~ |
- __'.___.'__
- ´ ` |° ´ Y `
-
- ? Are you ready to build a Blockstack app in React? (Y/n)
- ```
-
-4. Respond to the prompts to populate the initial app.
-
- After the process completes successfully, you see a prompt similar to the following:
-
- ```bash
- ...
- create public/icon-192x192.png
- create public/index.html
- create public/robots.txt
- create public/manifest.json
-
-
- I'm all done. Running npm install for you to install the required dependencies. If this fails, try running the command yourself.
- ```
-
-Depending on your environment you may have some problems with the `npm` packages. Go ahead and fix these before continuing to the next section.
-
-## Review the basic application structure
-
-The initial application you create is a generic Javascript application you run
-with a local express node. Before you continue, take a moment to examine the
-structure of this generic application structure:
-
-| File | Description |
-|------------------|-----------------------------------|
-| .editorconfig | Sets universal values for editor. |
-| .gitignore | Git configuration file. |
-| firebase.json | Configuragion for mobile application.|
-| package.json | Specifies required packages. |
-| requires.js | A Javascript module loader. |
-| server.js | Simple static server configuration.|
-
-In the `public` folder you find these files:
-
-| File | Description |
-|------------------|-----------------------------------|
-| app.css | Contains application styles. |
-| app.js | Main application file. |
-| boostrap.min.css | Minifield css for production. |
-| icon-192x192.png | Application icon |
-| index.html | Single page. |
-| manifest.json | Tells the browser about the application and how it should behave.|
-| robots.txt | Configures crawling and indexing. |
-
-The simple static file server in the `server.js`file serves all of the files in
-the `/public` directory, including `index.html`, `app.js`, `bootstrap.min.css`
-and `app.css`. The main file of the application is in the `app.js`. It contains
-the majority of the application logic.
-
-## Start the server and view the application
-
-When you start the server, it will create a Node.js server, start it locally,
-and open your browser 'http://localhost:5000'. From the root of your new application directory:
-
-1. Start the application server.
-
- ```bash
- npm start
- ```
-
- The first time you run it, your system prompts you to accept incoming connections.
-
- ![Network Connection](images/network-connections.gif)
-
-2. Choose **Allow**.
-
-3. Open your browser to `http://localhost:8080`.
-
- You should see a simple application:
-
- ![](images/initial-app.gif)
-
-4. Choose **Sign In with Blockstack**.
-
- The application detects whether the user has the Blockstack client edition installed or
- not. This is done automatically by the Blockstack API, more about this later.
- What the browser displays depends on the users' current state.
-
- | Using web app | Has client edition installed |
- |------------------|-----------------------------------|
- | ![](images/login-choice.png) | ![](images/login.gif) |
-
- If the user logged into the Blockstack Browser but not reset it, the user can
- simply use the exiting identity.
-
- ![](images/login-no-auth.png)
-
- If the user chooses **Deny**, the Blockstack Browser displays its
- **Home** page but the user is not logged into the sample application.
-
-5. Leave your new application running and move onto the next section.
-
-## Understand the generated application code
-
-In this section, you look at the basic application generated with the `yo
-blockstack` command. The generated code contains simple authentication methods
-that allow a user to log into the browser. The main application code is located
-in the `public/app.css` file. Open this file now.
-
-All of the code in the file is wrapped in an event
-listener.
-
-```js
-document.addEventListener("DOMContentLoaded", function(event) {
-})
-```
-
-This listener that waits until the DOM content is loaded. Then, it creates an auth request and redirects the user to sign in:
-
-```js
-document.getElementById('signin-button').addEventListener('click', function() {
- blockstack.redirectUserToSignIn()
-})
-```
-
-You can find the `redirectUserToSignIn()` function is part of the [Blockstack Javascript documentation](https://blockstack.github.io/blockstack.js/). There is also a sign out button handler. This handler deletes the local user data and signs the user out:
-
-```js
-document.getElementById('signout-button').addEventListener('click', function() {
- blockstack.signUserOut(window.location.origin)
-})
-```
-
-The handlers are followed by a `showProfile()` function for showing the user's profile:
-
-```js
-function showProfile(profile) {
- var person = new blockstack.Person(profile)
- document.getElementById('heading-name').innerHTML = person.name() ? person.name() : "Nameless Person"
- if(person.avatarUrl()) {
- document.getElementById('avatar-image').setAttribute('src', person.avatarUrl())
- }
- document.getElementById('section-1').style.display = 'none'
- document.getElementById('section-2').style.display = 'block'
-}
-```
-
-Each `getElementById()` function refers to elemments in the `index.html` file.
-
-Once a user is successfully signed in, there is logic for loading the user
-profile and displaying the application. As illustrated earlier, there are
-several states the user can be in:
-
-- The user is already signed in
-- The user has a pending sign in request
-- The user is signed out
-
-The application handles these situtations as followed:
-
-```js
-if (blockstack.isUserSignedIn()) {
- var profile = blockstack.loadUserData().profile
- showProfile(profile)
-} else if (blockstack.isSignInPending()) {
- blockstack.handlePendingSignIn().then(function(userData) {
- window.location = window.location.origin
- })
-}
-```
-
-When the user is signed in, Blockstack loads the user data from local storage
-and displays the profile with the `showProfile()` function. When the user has a
-pending sign in request, the appplication signs the user in and redirects the
-user back to the home page.
-
-### Application manifest
-
-The application's `/public/manifest.json` file configures your app. The
-configurations dictate how the application is displayed in auth views and on
-user home screens. The contents are very simple:
-
-```json
-{
- "name": "Hello, Blockstack",
- "start_url": "localhost:5000",
- "description": "A simple demo of Blockstack Auth",
- "icons": [{
- "src": "https://helloblockstack.com/icon-192x192.png",
- "sizes": "192x192",
- "type": "image/png"
- }]
-}
-```
-
-Keep it as is or fill it in with new information that describes your app.
-
-### Save your application code
-
-Complete the tutorial by storing your app code on GitHub. Before you begin, make sure you have a GitHub account and have configured your environment to use it.
-
-1. Initialize the application code as a Git repo.
-
- ```bash
- git init
- ```
-
-2. Add and commit all of the files:
-
- ```bash
- git add . && git commit -m "first commit"
- ```
-
-3. In GitHub, create a `hello-blockstack` repository.
-
-4. Back in your termininal window, add a remote for GitHub.
-
- Make sure to fill in your username:
-
- ```bash
- git remote add origin git@github.com:YOUR_USERNAME_HERE/hello-blockstack.git
- ```
-
-5. Push your new code to the master branch of the remote repo:
-
- ```
- git push origin master
- ```
-
-You're done! You just built your first Blockstack app and shipped the code.
-You're well on your way to becoming a Blockstack app legend.
diff --git a/_browser/.svn/pristine/08/085c1a3260d4d04fcd82252787ba093d06446210.svn-base b/_browser/.svn/pristine/08/085c1a3260d4d04fcd82252787ba093d06446210.svn-base
deleted file mode 100644
index bf6c096a..00000000
Binary files a/_browser/.svn/pristine/08/085c1a3260d4d04fcd82252787ba093d06446210.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/12/1284f902d27c0fdb01787c315fa61ee525538d65.svn-base b/_browser/.svn/pristine/12/1284f902d27c0fdb01787c315fa61ee525538d65.svn-base
deleted file mode 100644
index 5352b913..00000000
Binary files a/_browser/.svn/pristine/12/1284f902d27c0fdb01787c315fa61ee525538d65.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/28/28885ce546124804666f1c735f1fb916582a1a98.svn-base b/_browser/.svn/pristine/28/28885ce546124804666f1c735f1fb916582a1a98.svn-base
deleted file mode 100644
index 9fef9de2..00000000
Binary files a/_browser/.svn/pristine/28/28885ce546124804666f1c735f1fb916582a1a98.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/2c/2cb66479d94646ba1c3c651f26dbd9683e929114.svn-base b/_browser/.svn/pristine/2c/2cb66479d94646ba1c3c651f26dbd9683e929114.svn-base
deleted file mode 100644
index 006eeca5..00000000
Binary files a/_browser/.svn/pristine/2c/2cb66479d94646ba1c3c651f26dbd9683e929114.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/2e/2e837afccc4a402a90dc0b7e580109e49e3252e2.svn-base b/_browser/.svn/pristine/2e/2e837afccc4a402a90dc0b7e580109e49e3252e2.svn-base
deleted file mode 100644
index a5f0c27f..00000000
Binary files a/_browser/.svn/pristine/2e/2e837afccc4a402a90dc0b7e580109e49e3252e2.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/2f/2f00af279deecacd5b47bdc32a0106e23b2a2f64.svn-base b/_browser/.svn/pristine/2f/2f00af279deecacd5b47bdc32a0106e23b2a2f64.svn-base
deleted file mode 100644
index 019c67db..00000000
Binary files a/_browser/.svn/pristine/2f/2f00af279deecacd5b47bdc32a0106e23b2a2f64.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/30/30473db14d0ed5ac772c32ab2e89375faa2b0133.svn-base b/_browser/.svn/pristine/30/30473db14d0ed5ac772c32ab2e89375faa2b0133.svn-base
deleted file mode 100644
index c2626b50..00000000
Binary files a/_browser/.svn/pristine/30/30473db14d0ed5ac772c32ab2e89375faa2b0133.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/30/30e89a5d274e5137e687939f31ca471aea7462a3.svn-base b/_browser/.svn/pristine/30/30e89a5d274e5137e687939f31ca471aea7462a3.svn-base
deleted file mode 100644
index 787392e1..00000000
--- a/_browser/.svn/pristine/30/30e89a5d274e5137e687939f31ca471aea7462a3.svn-base
+++ /dev/null
@@ -1,27 +0,0 @@
-# Tutorials
-
-**Note: This data is being digested by blockstack.org. Do not change the formatting of this list unless you first make an adjustment to the code on blockstack.org.**
-
-### Multi-player Storage
-
-- urlSlug: multi-player-storage
-- image: /images/tutorials/multi-player-storage.png
-- description: Build a decentralized micro-blogging app using multi-player Gaia storage.
-
-### Managing Data with Gaia
-
-- urlSlug: managing-data-with-gaia
-- image: /images/tutorials/managing-data-with-gaia.png
-- description: This series will focus on teaching you to think like a Blockstack developer working with Gaia.
-
-### Blockstack Todo
-
-- urlSlug: todo-list
-- image: /images/tutorials/todo-list.png
-- description: Walk through creating a basic Todo application with Blockstack. Learn about Sign In flow and Gaia storage.
-
-### Hello Blockstack
-
-- urlSlug: hello-blockstack
-- image: /images/tutorials/hello-blockstack.jpg
-- description: Build a simple single-page JavaScript application that runs completely client-side without any servers.
diff --git a/_browser/.svn/pristine/33/33f4fbc3c99fe5df9c5eb23cc4aaf25165722419.svn-base b/_browser/.svn/pristine/33/33f4fbc3c99fe5df9c5eb23cc4aaf25165722419.svn-base
deleted file mode 100644
index 433ef3d5..00000000
Binary files a/_browser/.svn/pristine/33/33f4fbc3c99fe5df9c5eb23cc4aaf25165722419.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/37/373b7d67a3d5c2de4723fcd45470854cf0c5ca6e.svn-base b/_browser/.svn/pristine/37/373b7d67a3d5c2de4723fcd45470854cf0c5ca6e.svn-base
deleted file mode 100644
index 26d88672..00000000
Binary files a/_browser/.svn/pristine/37/373b7d67a3d5c2de4723fcd45470854cf0c5ca6e.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/3f/3f89163556affc6e77a6630136bf6897bc9ae8f6.svn-base b/_browser/.svn/pristine/3f/3f89163556affc6e77a6630136bf6897bc9ae8f6.svn-base
deleted file mode 100644
index 1d95fee1..00000000
Binary files a/_browser/.svn/pristine/3f/3f89163556affc6e77a6630136bf6897bc9ae8f6.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/42/423c91a747d0f3570fb0d63199c9adcbe6baef1d.svn-base b/_browser/.svn/pristine/42/423c91a747d0f3570fb0d63199c9adcbe6baef1d.svn-base
deleted file mode 100644
index d2c2dda2..00000000
Binary files a/_browser/.svn/pristine/42/423c91a747d0f3570fb0d63199c9adcbe6baef1d.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/49/49a137f4f026b72e9ba4af3fd546fe8baff34c09.svn-base b/_browser/.svn/pristine/49/49a137f4f026b72e9ba4af3fd546fe8baff34c09.svn-base
deleted file mode 100644
index 75c17f14..00000000
--- a/_browser/.svn/pristine/49/49a137f4f026b72e9ba4af3fd546fe8baff34c09.svn-base
+++ /dev/null
@@ -1,328 +0,0 @@
----
-title: Tour of a Blockstack application
-description: Walk through creating a basic Todo application with Blockstack. Learn about Sign In flow and Gaia storage.
-image: /images/article-photos/chalkboard.jpg
-youtube: https://www.youtube.com/embed/oyvg-h0obFw
----
-
-In this tutorial, you build the code for and run a single-page application (SPA)
-with Blockstack and Vue.js. Once the application is running, you take a tour
-through the applications' Blockstack functionality. You'll learn how it manages
-authentiation using a Blockstack ID and how it stores information associated
-with that ID using Blockstack Storage (Gaia).
-
-## Prerequisites
-
-Make sure you have [created at least one Blockstack ID](ids-introduction#create-an-initial-blockstack-id). You'll use this ID to Finteract with the Todo application.
-
-The applicaton code relies on both the `npm` and the `yarn` package managers.
-Before you begin, verify you have these tools `npm` using the `which` command to
-verify.
-
-```bash
-$ which npm
-/usr/local/bin/npm
-$ which yarn
-/usr/local/bin/yarn
-```
-
-[Install npm](https://www.npmjs.com/get-npm), [install
-yarn](https://yarnpkg.com/lang/en/docs/install/#mac-stable), or both as needed. You
-
-While it stands alone, this tour does on the information from the [Hello
-Blockstack tutorial](hello-blockstack). If you haven't worked through that
-tutorial, you may want to do that before continuing.
-
-
-## Install the applicaton code and retrieve the dependencies
-
-You can clone the source code with `git` or [download and unzip the code from
-the
-repository](https://github.com/blockstack/blockstack-todos/archive/master.zip).
-These instructions assume you are cloning.
-
-
-1. Install the code by cloning it.
-
- ```
- $ git clone git@github.com:blockstack/blockstack-todos.git
- ```
-
-2. Change to directory to the root of the code.
-
- ```
- $ cd blockstack-todos
- ```
-
-2. Use yarn to install the dependencies.
-
-
- ```
- $ yarn install
- yarn install v1.9.2
- info No lockfile found.
- ...
- [4/5] 🔗 Linking dependencies...
- [5/5] 📃 Building fresh packages...
- success Saved lockfile.
- ✨ Done in 19.90s.
- ```
-
-## Understand the important application files
-
-The Todo application has a basic Vue.js structure. There are several configuration files but the central programming files are in the `src` directory:
-
-| File | Description |
-|-----------------|-------------|
-| `main.js` | Application initialization. |
-| `App.vue ` | Code for handling the `authResponse`. |
-| `Landing.vue ` | Code for the initial sign on page. |
-| `Dashboard.vue` | Application data storage and user sign out. |
-
-The example application runs in a node server on your local host. In the next section, you start the application and interact with it.
-
-1. Start the application.
-
- ```
- $ npm run start
- ```
-
- You should see a simple application:
-
- ![](images/todo-sign-in.png)
-
- 2. Choose **Sign In with Blockstack**.
-
-
-## Understand the sign in process
-
-At startup, the Todo application detects whether the user has the Blockstack client edition
-installed or not. This is done automatically by the Blockstack API, more
-about this later. What the authenticator displays depends on which whether the user has installed the Blockstack Authenticator client edition or not.
-
-| Client edition installed | Not installed |
-|------------------|-----------------------------------|
-| ![](images/login.gif) | ![](images/login-choice.png)|
-
-If the user was logged into the Blockstack authenticator (web or client) but
-did not reset it, the web application to use the current identity:
-
-![](images/login-no-auth.png)
-
-If the user chooses **Deny**, the Blockstack authenticator opens but the user
-is not logged into the sample application.
-
-![](images/windows-browser.png)
-
-If the login to the application is successful, the user is presented with the application:
-
-![](images/todo-app.png)
-
-Clicking the **Sign In With Blockstack** button brings up a modal that prompts
-you to use an existing ID's session, create a new ID, or reset the browser with
-another ID. When Blockstack is provided an ID, it generates an _ephemeral key_
-within the application. An ephemeral key is generated for each execution of a
-key establishment process. This key is just used for the particular instance of
-the application, in this case to sign a **Sign In** request.
-
-Blockstack also generates a public key token which is sent to the authenticator
-as an `authRequest` from the authenticator to your local blockstack-core node.
-The signed authentication request is sent to Blockstack through a JSON Web
-Token. The JWT is passed in via a URL query string in the `authRequest`
-parameter:
-`https://browser.blockstack.org/auth?authRequest=j902120cn829n1jnvoa...`. To
-decode the token and see what information it holds:
-
-1. Copy the `authRequest` string from the URL.
-2. Navigate to [jwt.io](http://jwt.io/).
-3. Paste the full token there.
-
- The output should look similar to below:
-
- ```json
- {
- "jti": "3i96e3ad-0626-4e32-a316-b243154212e2",
- "iat": 1533136622,
- "exp": 1533140228,
- "iss": "did:btc-addr:1Nh8oQTunbEQWjrL666HBx2qMc81puLmMt",
- "public_keys": [
- "0362173da080c6e1dec0653fa9a3eff5f5660546e387ce6c24u04a90c2fe1fdu73"
- ],
- "domain_name": "http://localhost:8080",
- "manifest_uri": "http://localhost:8080/manifest.json",
- "redirect_uri": "http://localhost:8080/",
- "version": "1.2.0",
- "do_not_include_profile": true,
- "supports_hub_url": true,
- "scopes": [
- "store_write"
- ]
- }
- ```
-
->**Note**:
-> 1. The `iss` property is a decentralized identifier or `did`. This identifies you and your name to the application. The specific `did` is a `btc-addr`.
-> 2. The Blockstack JWT implementation is different from other implementations because of the underlying cryptography we employ. There are libraries in [Javascript](https://github.com/blockstack/jsontokens-js) and [Ruby](https://github.com/blockstack/ruby-jwt-blockstack) available on the Blockstack Github to allow you to work with these tokens.
-
-When the blockstack-core receives the `authRequest`, it generates a session token and
-returns an authentication response to the application. This response is similar
-to the `authRequest` above in that the `authResponse` includes a private key
-intended only for the application. This allows the application to encrypt data
-on your personal Blockstack storage.
-
-You are now logged into the Todo application!
-
-## Undder the covers in the sign in code
-
-Now, go to the underlying `blockstack-todo` code you cloned or downloaded. Sign
-in and sign out is handled in each of these files:
-
-| File | Description |
-|-----------------|-------------|
-| `App.vue ` | Handles the `authResponse`. |
-| `Landing.vue ` | Generates the `authRequest`. |
-| `Dashboard.vue` | Handles sign out. |
-
-The `src/components/Landing.vue` code calls a [`redirectToSignIn()`](https://blockstack.github.io/blockstack.js#redirectToSignIn) function which generates the `authRequest` and redirects the user to the Blockstack authenticator:
-
-```js
-signIn () {
- const blockstack = this.blockstack
- blockstack.redirectToSignIn()
-}
-```
-
-Once the user authenticates, the application handles the `authResponse` in the `src/App.vue` file. :
-
-```js
-if (blockstack.isUserSignedIn()) {
- this.user = blockstack.loadUserData().profile
-} else if (blockstack.isSignInPending()) {
- blockstack.handlePendingSignIn()
- .then((userData) => {
- window.location = window.location.origin
- })
-}
-```
-
-If [`blockstack.isUserSignedIn()`](https://blockstack.github.io/blockstack.js/#isusersignedin) is true, the user was previously signed in so Blockstack pulls the data from the browser and uses it in our application. If the check on [`blockstack.isSignInPending()`](https://blockstack.github.io/blockstack.js/#issigninpending) is true, a previous `authResponse` was sent to the application but hasn't been processed yet. The `handlePendingSignIn()` function processes any pending sign in.
-
-Signout is handled in `src/components/Dashboard.vue`.
-```js
-signOut () {
- this.blockstack.signUserOut(window.location.href)
-}
-```
-
-The method allows the application creator to decide where to redirect the user upon Sign Out:
-
-
-## Working with the application
-
-Now trying adding a few todos using the application. For example, try making a list of applications you want to see built on top of Blockstack:
-
-![](images/make-a-list.png)
-
-Each list is immediately stored in the Gaia Hub linked to your Blockstack ID.
-For more information about the Gaia hub, see the [hub
-repository](https://github.com/blockstack/gaia). You can fetch the `todos.json`
-file you just added by opening the Javascript console and running the following
-command:
-
-```Javascript
-blockstack.getFile("todos.json", { decrypt: true }).then((file) => {console.log(file)})
-```
-
-You should see a JSON with the todos you just added:
-
-```json
-[
- {
- "id":2,
- "text":"Software package manager secured by the blockchain",
- "completed":false
- },
- {
- "id":1,
- "text":"Mutable torrents with human readable names",
- "completed":false
- },
- {
- "id":0,
- "text":"Decentralized twitter",
- "completed":false
- }
-]
-```
-
-
-Now, add another todo and check it off. When you fetch the newly generated file
-using the Javascript console it will reflect the change look for `"completed":true`:
-
-```json
-[
- {
- "id":3,
- "text":"Blockstack Todo",
- "completed":true
- },
- {
- "id":2,
- "text":"Software package manager secured by the blockchain",
- "completed":false
- },
- ...
-]
-```
-
-Now that you have seen the application in action, dig into how it works.
-
-
-## Implementing storage
-
-Now, go to the underlying `blockstack-todo` code you cloned or downloaded. The
-application interactions with your Gaia Hub originate in the
-`src/components/Dashboard.vue` file. First lets see where the changes to the
-Todos are processed:
-
-```js
-todos: {
- handler: function (todos) {
- const blockstack = this.blockstack
-
- // encryption is now enabled by default
- return blockstack.putFile(STORAGE_FILE, JSON.stringify(todos))
- },
- deep: true
-}
-```
-
-Tje `todos` JSON object is passed in and the [`blockstack.putFile()`](https://blockstack.github.io/blockstack.js/#putfile) method to store it in our Gaia Hub.
-
-The code needs to read the Todo items from the storage with the [`blockstack.getFile()`](https://blockstack.github.io/blockstack.js/#getfile) method which returns a promise:
-
-```js
-fetchData () {
- const blockstack = this.blockstack
- blockstack.getFile(STORAGE_FILE) // decryption is enabled by default
- .then((todosText) => {
- var todos = JSON.parse(todosText || '[]')
- todos.forEach(function (todo, index) {
- todo.id = index
- })
- this.uidCount = todos.length
- this.todos = todos
- })
-},
-```
-
-The `todos` data is retrieved from the promise.
-
-
-## Summary
-
-You now have everything you need to construct complex applications complete with authentication and storage on the Decentralized Internet. Why not try coding [a sample application that accesses multiple profiles](multi-player-storage.md).
-
-If you would like to explore the Blockstack APIs, you can visit the [Blockstack Core API](https://core.blockstack.org/) documentation or the [Blockstack JS API](https://blockstack.github.io/blockstack.js).
-
- Go forth and build!
diff --git a/_browser/.svn/pristine/55/5500a797259a620714f1c576c579f117982590db.svn-base b/_browser/.svn/pristine/55/5500a797259a620714f1c576c579f117982590db.svn-base
deleted file mode 100644
index aa136ba1..00000000
Binary files a/_browser/.svn/pristine/55/5500a797259a620714f1c576c579f117982590db.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/63/630ab4b5cbd3ff99dde5761ac5f475eb39dc3c9b.svn-base b/_browser/.svn/pristine/63/630ab4b5cbd3ff99dde5761ac5f475eb39dc3c9b.svn-base
deleted file mode 100644
index 738bb384..00000000
--- a/_browser/.svn/pristine/63/630ab4b5cbd3ff99dde5761ac5f475eb39dc3c9b.svn-base
+++ /dev/null
@@ -1,288 +0,0 @@
----
-layout: usenew
-permalink: /:collection/:path.html
----
-# Use the Blockstack Browser
-{:.no_toc}
-
-The Blockstack Browser gives users the ability to explore and use the
-decentralized applications (dapps). The decentralized applications are a new way
-to interact with the internet. Dapps give users control of their data. Data
-about them personally, name, birthdate, phone number and data about what they do
-such as visiting a website or buying an item.
-
-* TOC
-{:toc}
-
-## Understand the Blockstack Browser
-
-Through the Blockstack browser application you can create an identity. An identity
-represents you as you interact with others through Dapps. The Blockstack
-Browser is itself, a simple Dapp. It allows you to:
-
-* create one or more identities
-* send and receive bitcoin
-* manage the storage of your profile and application data
-* find and launch Dapps
-
-There are editorions of the Blockstack Browser, the web edition is an
-application you access through your web browser by simply [visit the
-applications' address](https://browser.blockstack.org/) in your computer's
-browser. You can also install the browser as a client application on your
-computer.
-
-If all you want to do is create, manage, and fund an identity and then interact
-with Dapps, you can simply use the web edition. If you have concerns about net
-censorship, hightened security concerns, or develop a Dapp yourself, you may
-want to download and install the browser's client edition.
-
-## Using the Browser on public computers
-
-Before you use the web application, it is important to note that once you log
-into the application with the brower, your session does not expire until you
-choose **Settings > RESET BROWSER**. For this reason, you should be careful
-when using the browser on public computers.
-
-If you are in a library, for example, and log into the browser, simply
-closing the tab or even rebooting the computer does not log you out. Instead,
-you should be sure to choose **Settings > RESET BROWSER** before leaving the web
-application.
-
-For more informatin about your identity and the browser, see [Get and use a Blockstack IDs](ids-introduction).
-
-## Install the client edition
-
-Remember, for most users the Blockstack Browser web application should
-suffice. You only need to install the client if you have additional, advanced
-concerns about Internet or identity. Though not required, some Dapp developrs
-may find it useful to install the client edition.
-
-The Blockstack Browser installer is a _multiple-context_ installer. If you
-run it as a user, the installation is avalable only for that user. If you
-install as administrator, the installation installs for all users. To find an
-installer for your operating system, visit [the Blockstack install
-page](https://blockstack.org/install).
-
-### On Mac
-
-Installation requires that you have macOS High Sierra 10.12 or higher. Do the following to install:
-
-1. Download the OSX installer from [the browser installation page](https://blockstack.org/install).
-2. Double-click the downloaded DMG file to launch the installer.
-
- ![](images/ubuntu-browser.png)
-
-3. Drag the Blockstack.app to the `Applications` folder.
-4. Double-click the Blockstack.app to launch it.
-
- The system displays a notice about opening the file:
-
- ![](images/dmg-notice.png)
-
-5. Choose **Open**.
-
- The system opens your default browser with the Blockstack Browser
- application, running from your machine (localhost). You'll also see the
- Blockstack icon in your machine's
-
- ![](images/browser-on-mac.png)
-
- If you have loaded an identity already via the Blockstack web application,
- you are already logged into the local application:
-
- ![](images/browser-on-mac-1.png)
-
-
-### On Windows
-
-Installation requires that you have Windows 10 or higher. Do the following to
-install:
-
-1. Download the Windows installer from from [the browser installation page](https://blockstack.org/install).
-2. Double-click the installer package to launch it.
-
- ![](images/windows-installer.png)
-
-3. Open the Wiindows **Start** menu and click on the recently added **Blockstack Browser**.
-
- ![](images/windows-start.png)
-
- The system displays a Windows Security Alert.
-
- ![](images/windows-security.png)
-
-4. Choose to **Allow access**.
-
- The system opens in the Blockstack Browser application.
-
- ![](images/windows-browser.png)
-
-
-### On Linux
-
-The Blockstack installation on Linux requires Docker. Before installing
-Blockstack, [install the version of Docker appropriate for your operating system](https://docs.docker.com/install/).
-
->**Note**: The Blockstack script used in this procedure runs `docker` commands. Depending on how you installed and configure Dockered on your system, it may or may not be necessary to have `root` or `sudo` privileges. For this reason, the commands below show the use of `sudo` when interacting with the script or the `docker` executable. If your installation allows running Docker with lower privileges, you can omit it.
-
-
-1. Download the Linux installer from from [the browser installation page](https://blockstack.org/install).
-
- This downloads a `Blockstack-for-Linux-v0.30.0.sh` script to your local drive.
-
-2. Open a terminal and navigate to the directory containing the downloaded script.
-
- When the script downloads, it is not executable.
-
-3. Set the executable bit on the file.
-
- ```bash
- $ chmod u+x Blockstack-for-Linux-v0.309.0.0.sh
- ```
-
-4. Enter the command without any arguments to see the available subcommands.
-
- ```bash
- $ sudo ./Blockstack-for-Linux-v0.309.0.0.sh
- blockstack docker launcher commands:
- Install-protocol-handler -> install a protocol handler for blockstack:// links
- ...
- ```
-
-5. Use the script to `pull` the Blockstack Docker images you need.
-
-
- ```bash
- $ sudo ./Blockstack-for-Linux-v0.309.0.0.sh pull
- ```
-
- Depending on your network speed, this can take some time.
-
-7. Use the `docker image ls` command to confirm you have the image.
-
- ```bash
- $ sudo docker image Is
- REPOSITORY TAG IMAGE ID CREATED
- quay.io/blockstack/blockstack-browser v0.30.0 ad05fd844f59 2 days ago
- ```
-
-8. Install the protocol handler
-
- ```bash
- $ sudo ./Blockstack-for-Linux-vO.30.0.sh install-protocol-handler
- Registering protocol handler
- ```
-
-9. Start the Blockstack containers.
-
- ```bash
- $ sudo ./Blockstack-for-Linux-vO.30.0.sh start
- c3092592e59abe3559fdb49d070a7aa5e99165c7d9f2flla20ecaf4e0dfc2f46
- cd92f61ae473d54398da987f5023f5462b29c03f08584ebb3c9fIbb4cd790c69
- Registering protocol handler
- ```
-
- The system launches the Blockstack Browser application for you.
-
- ![](images/ubuntu-browser.png)
-
-Until you stop the Blockstack containers, the application will continue to run
-on your system. To display the status of the Blockstack containers, you can use
-the `docker container ls` command.
-
-{% raw %}
-```bash
-$ sudo docker container ls --format '{{.ID}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}\t{{.Names}}'
-```
-{% endraw %}
-
-Use `./Blockstack-for-Linux-vO.30.0.sh stop` to stop the Blockstack Browser and its containers.
-
-
-## Uninstall the browser
-
-If you installed the browser using an installer, follow the instructions for
-your operating system.
-
-### On Mac
-
-1. Quit the Blockstack application if it is running.
-
- ![](images/quit-blockstack.png)
-
-2. Check if you have a Blockstack device and eject it if you do.
-
- ![](images/eject-blockstack.png)
-
-3. Use the Finder to open the **Applications** folder.
-4. Locate the Blockstack application.
-5. Open your `Applications` folder and locate the **Blockstack.app**.
-6. Drag the appliation to the trash.
-7. Delete the `/Users/USERNAME/Library/Application Support/Blockstack` folder.
-
- From the command line:
-
- ```bash
- $ rm -r /Users/moxiegirl/Library/Application\ Support/Blockstack
- ```
-
-### On Windows
-
-1. Open the **Start** menu.
-2. Click **Settings > System**.
-3. Open for the **Apps & features** item.
-
- ![](images/eject-blockstack.png)
-
-4. Locate the **Blockstack Browser** and choose **Uninstall**.
-
- ![](images/browser-uninstall.png)
-
-
-### On Linux
-
-Your Blockstack instalaltion relies on Docker containers and their associated
-images. It also includes a supporting protocol handler you must remove. If you
-installed Docker so that you can run Blockstack, you can uninstall Docker as well,
-but that is not explained here.
-
-Do the following to uninstall Blockstack:
-
-1. Stop and remove the Docker containers if they are running.
-
- ```bash
- $ sudo ./Blockstack-for-Linux-vO.30.0.sh stop
- stopping the running blockstack-browser containers
- 69a686799d4f
- 56fc6189ff97
- 69a686799d4f
- 56fc6189ff97
- ```
-
-2. Remove the associated Blockstack images.
-
- ```bash
- $ sudo docker image ls
- REPOSITORY TAG IMAGE ID CREATED
- quay.io/blockstack/blockstack-browser v0.30.0 ad05fd844f59 3 days ago
- $ sudo docker image rm ad05fd844f59
- Untagged : quay.io/blockstack/blockstack- browser :vO.30.0
- Untagged: quay.io/blockstack/blockstack-browser@sha256:b20c9514c56b99398fd4946af39e7537b807e85694943ac3b8807dlb3625833b
- Deleted: Sha256:ad05fd844f5948blee06a0a09228df946478393c0a7588cbc65dlb8817f5b34e
- Deleted: Sha256:7c3d0043f2ba01cf285f3fe09701b086c349b6380c2e42f25b31ac65c6626ec8
- Deleted: sha256:54ea2aa7d7d000e7483f299eeca9e5466fa86231f4cd4cld3c3096d97e61c5df
- Deleted: sha256:38e61054355adefc3c2de031462114a9946cfc0e44444a38a27d0f115aba0da2
- ....
- ```
-
-3. Use the script to remove the protocol handler
-
- ```bash
- $ sudo ./Blockstack-for-Linux-vO.30.0.sh remove-protocol-handler
- ```
-
-4. Delete the script.
-
- ```bash
- $ rm Blockstack-for-Linux-vO.30.0.sh
- ```
diff --git a/_browser/.svn/pristine/63/6326880dd17c45162090e3bb4902adefbccfcb15.svn-base b/_browser/.svn/pristine/63/6326880dd17c45162090e3bb4902adefbccfcb15.svn-base
deleted file mode 100644
index cd6b3b6a..00000000
Binary files a/_browser/.svn/pristine/63/6326880dd17c45162090e3bb4902adefbccfcb15.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/64/6462fdc5109daa02e29fbf38f8602f7425387275.svn-base b/_browser/.svn/pristine/64/6462fdc5109daa02e29fbf38f8602f7425387275.svn-base
deleted file mode 100644
index 8fa411cb..00000000
--- a/_browser/.svn/pristine/64/6462fdc5109daa02e29fbf38f8602f7425387275.svn-base
+++ /dev/null
@@ -1,812 +0,0 @@
----
-layout: learn
-permalink: /:collection/:path.html
----
-# Blockstack Storage Tutorial
-{:.no_toc}
-
-In this tutorial, you build a micro-blogging application using multi-player Gaia
-storage. Gaia is Blockstack's [decentralized high-performance storage
-system](https://github.com/blockstack/gaia). The tutorial contains the following
-topics:
-
-* TOC
-{:toc}
-
-This tutorial does not teach you about authentication. That is covered in depth [in the hello-blockstack tutorial](hello-blockstack).
-
-
-
-
-## About this tutorial and the prerequisites you need
-
-At minimum, Blockstack requires macOS High Sierra. This tutorial was written for
-a user running macOS High Sierra 10.13.4. The application you build is a
-React.js application that is completely decentralized and server-less. While
-not strictly required to follow along, basic familiarity with React.js is
-helpful.
-
-When complete, the app is capable of the following:
-
-- authenticating users using Blockstack
-- posting new statuses
-- displaying statuses in the user profile
-- looking up the profiles and statuses of other users
-
-The basic identity and storage services are provided by `blockstack.js`. To test
-the application, you need to have already [registered a Blockstack ID](ids-introduction).
-
-The tutorial relies on the `npm` dependency manager. Before you begin, verify
-you have installed `npm` using the `which` command.
-
-```bash
-$ which npm
-/usr/local/bin/npm
-```
-
-If you don't find `npm` in your system, [install
-it](https://www.npmjs.com/get-npm). Finally, if you get stuck at any point
-while working on the tutorial, the completed [source code is available for
-you](https://github.com/larrysalibra/publik) to check your work against.
-
-## Use npm to install Yeoman and the Blockstack App Generator
-
-You use `npm` to install Yeoman. Yeoman is a generic scaffolding system that
-helps users rapidly start new projects and streamline the maintenance of
-existing projects.
-
-
-1. Install Yeoman.
-
- ```bash
- npm install -g yo
- ```
-2. Install the Blockstack application generator.
-
- ```bash
- npm install -g generator-blockstack
- ```
-
-
-
-## Generate and launch the public application
-
-In this section, you build an initial React.js application called Publik.
-
-1. Create a the `publik` directory.
-
- ```bash
- mkdir publik
- ```
-
-2. Change into your new directory.
-
- ```bash
- cd publik
- ```
-
-3. Use Yeoman and the Blockstack application generator to create your initial `publik` application.
-
- ```bash
- yo blockstack:react
- ```
-
- You should see several interactive prompts.
-
- ```bash
- $ yo blockstack:react
- ? ==========================================================================
- We're constantly looking for ways to make yo better!
- May we anonymously report usage statistics to improve the tool over time?
- More info: https://github.com/yeoman/insight & http://yeoman.io
- ========================================================================== No
-
- _-----_ ╭──────────────────────────╮
- | | │ Welcome to the │
- |--(o)--| │ Blockstack app │
- `---------´ │ generator! │
- ( _´U`_ ) ╰──────────────────────────╯
- /___A___\ /
- | ~ |
- __'.___.'__
- ´ ` |° ´ Y `
-
- ? Are you ready to build a Blockstack app in React? (Y/n)
- ```
-
-4. Respond to the prompts to populate the initial app.
-
- After the process completes successfully, you see a prompt similar to the following:
-
- ```bash
- [fsevents] Success:
- "/Users/theuser/repos/publik/node_modules/fsevents/lib/binding/Release/node-v59-darwin-x64/fse.node"
- is installed via remote npm notice created a lockfile as package-lock.json.
- You should commit this file. added 1060 packages in 26.901s
- ```
-
-5. Run the initial application.
-
- ```bash
- npm start
- ```
-
- The system prompts you to accept incoming connections.
-
- ![Network Connection](./images/network-connections.gif)
-
-6. Choose **Allow**.
-
-7. Open your browser to `http://localhost:8080`.
-
- You should see a simple React app.
-
- ![](images/initial-app.gif)
-
-8. Choose **Sign In with Blockstack**.
-
- The application tells you it will **Read your basic info**.
-
- ![](images/login.png)
-
-Leave your new application running and move onto the next section.
-
-## Add the `publish_data` scope to sign in requests
-
-Every app that uses Gaia storage must add itself to the user's `profile.json`
-file. The Blockstack browser does this automatically when the `publish_data`
-scope is requested during authentication. For this application, the user files
-stored on Gaia are made visible to others via the `apps` property in the user's
-`profile.json` file.
-
-Modify your authentication request to include the `publish_data` scope.
-
-1. Open `src/components/App.jsx` file.
-
-2. Locate the `handleSignIn` handler method.
-
- ```javascript
- handleSignIn(e) {
- e.preventDefault();
- redirectToSignIn();
- }
- ```
-
-2. Modify the method to this:
-
- ```javascript
- handleSignIn(e) {
- e.preventDefault();
- const origin = window.location.origin
- redirectToSignIn(origin, origin + '/manifest.json', ['store_write', 'publish_data'])
- }
- ```
-
- By default, authentication requests include the `store_write` scope which
- enables storage. This is what allows you to store information to Gaia.
-
-3. Save your changes.
-4. Go back to your app at `http://localhost:8080/`.
-5. Log out and sign in again.
-
- The authentication request now prompts the user for permission to **Publish
- data stored for the app**.
-
- ![](images/publish-data-perm.png)
-
-## Understand Gaia storage methods
-
-Once you authenticate a user with `store_write` and `publish_data`, you can
-begin to manage data for your users. Blockstack JS provides two methods
-`getFile()` and `putFile()` for interacting with Gaia storage. The storage
-methods support all file types. This means you can store SQL, Markdown, JSON, or
-even a custom format.
-
-You can create a meaningful and complex data layer using these two methods.
-Before creating an application, consider fundamental data architecture and make
-some decisions about how you’re modeling data. For example, consider building a
-simple grocery list app. A user should be able to create, read, update, and
-delete grocery lists.
-
-A single file collection stores items as an array nested inside each grocery
-list:
-
-```js
-// grocerylists.json
-{
- "3255": {
- "items": [
- "1 Head of Lettuce",
- "Haralson apples"
- ]
- },
- // ...more lists with items
-}
-```
-
-This is conceptually the simplest way to manage grocery lists. When you read a
-`/grocerylists.json` file with `getFile()`, you get back one or more grocery
-lists and their items. When you write a single list, the `putFile()` method
-overwrites the entire list. So, a write operation for a new or updated grocery
-list must submit all existings lists as well.
-
-Further, because this runs on the client where anything can go wrong. If the
-client-side code encounters a parsing error with a user-input value and you
-could overwrite the entire file with:
-
-`line 6: Parsing Error: Unexpected token.`
-
-Further, a single file makes pagination impossible and if your app stores a
-single file for all list you have less control over file permissions. To avoid
-these issues, you can create an index file that stores an array of IDs. These
-IDs point to a name of another file in a `grocerylists` folder.
-
-![](images/multiple-lists.png)
-
-This design allows you to get only the files you need and avoid accidentally
-overwriting all lists. Further, you’re only updating the index file when you add
-or remove a grocery list; updating a list has no impact.
-
-
-## Add support for user status submission and lookup
-
-In this step, you add three `blockstack.js` methods that support posting of "statuses". These are the `putFile()`, `getFile()`, and `lookupProfile()` methods.
-
-1. Open the `src/components/Profile.jsx` file.
-
-2. Expand the `import from blockstack` statement with data methods.
-
- The `Person` object holds a Blockstack profile. Add `putFile`, `getFile`,
- and `lookupProfile` after `Person`.
-
- When you are done, the import statement should look like the following:
-
- ```javascript
- import {
- isSignInPending,
- loadUserData,
- Person,
- getFile,
- putFile,
- lookupProfile
- } from 'blockstack';
- ```
-
-3. Replace the `constructor()` initial state so that it holds the key properties required by the app.
-
- This code constructs a Blockstack `Person` object to hold the profile. Your constructor should look like this:
-
- ```javascript
- constructor(props) {
- super(props);
-
- this.state = {
- person: {
- name() {
- return 'Anonymous';
- },
- avatarUrl() {
- return avatarFallbackImage;
- },
- },
- username: "",
- newStatus: "",
- statuses: [],
- statusIndex: 0,
- isLoading: false
- };
- }
- ```
-
-
-4. Locate the `render()` method.
-5. Modify the `render()` method to add a text input and submit button to the application.
-
- The following code echos the `person.name` and `person.avatarURL`
- properties from the profile on the display:
-
- ```javascript
- render() {
- const { handleSignOut } = this.props;
- const { person } = this.state;
- const { username } = this.state;
-
- return (
- !isSignInPending() && person ?
-
: null
- );
- }
- ```
-
- This code allows the application to post statuses. It also displays the
- user's Blockstack ID. To display this, your app must extract the ID from the
- user profile data.
-
-6. Locate the `componentWillMount()` method.
-7. Add the `username` property below the `person` property.
-
- You'll use the Blockstack `loadUserData()` method to access the `username`.
-
-
- ```javascript
- componentWillMount() {
- this.setState({
- person: new Person(loadUserData().profile),
- username: loadUserData().username
- });
- }
- ```
-
-7. Add two methods to handle the status input events:
-
- ```javascript
- handleNewStatusChange(event) {
- this.setState({newStatus: event.target.value})
- }
-
- handleNewStatusSubmit(event) {
- this.saveNewStatus(this.state.newStatus)
- this.setState({
- newStatus: ""
- })
- }
- ```
-
-8. Add a `saveNewStatus()` method to save the new statuses.
-
- ```javascript
- saveNewStatus(statusText) {
- let statuses = this.state.statuses
-
- let status = {
- id: this.state.statusIndex++,
- text: statusText.trim(),
- created_at: Date.now()
- }
-
- statuses.unshift(status)
- const options = { encrypt: false }
- putFile('statuses.json', JSON.stringify(statuses), options)
- .then(() => {
- this.setState({
- statuses: statuses
- })
- })
- }
- ```
-
-9. Save the `Profile.jsk` file.
-
- After the application compiles successfully, your application should appears as follows:
-
- ![](images/display-complete.png)
-
-10. Enter your status in the text box and press the **Submit** button.
-
- At this point, nothing is blogged. In the next section you add code to display
- the statuses back to the user as a blog entry.
-
-## Fetch and display statuses
-
-Update `Profile.jsx` again.
-
-1. Go back to the `render()` method.
-2. Locate the `
` containing the text input and **Submit** button.
-3. Right after this opening `div` element, add this block.
-
- ```javascript
-
- ```
- This loads existing state. Your code needs to fetch statuses on page load.
-
-4. Add a new method called `fetchData()` after the `statuses.unshift(status)` section.
-
- ```javascript
-
- fetchData() {
- this.setState({ isLoading: true })
- const options = { decrypt: false }
- getFile('statuses.json', options)
- .then((file) => {
- var statuses = JSON.parse(file || '[]')
- this.setState({
- person: new Person(loadUserData().profile),
- username: loadUserData().username,
- statusIndex: statuses.length,
- statuses: statuses,
- })
- })
- .finally(() => {
- this.setState({ isLoading: false })
- })
- }
- ```
-
-5. Call `fetchData()` from the `componentDidMount()` method
-
- ```javascript
-
- componentDidMount() {
- this.fetchData()
- }
- ```
-
-6. Save the file.
-
- After the application compiles successfully, users are able to **Submit**
- multiple statuses and review them in the app.
-
- ![](images/saving-status.png)
-
-## Change the style
-
-1. Edit the `src/styles/style.css` file.
-2. Replace the content with the following:
-
-
- ```css
- /* Globals */
- a,a:focus,a:hover{color:#fff;}
- html,body{height:100%;text-align:center;background-color:#191b22;}
- body{color:#fff}
- .hide{display:none;}
- .landing-heading{font-family:'Lato',Sans-Serif;font-weight:400;}
-
- /* Buttons */
- .btn{font-family:'Lato',Sans-Serif;padding:0.5625rem 2.5rem;font-size:0.8125rem;font-weight:400;line-height:1.75rem;border-radius:0!important;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-ms-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}
- .btn-lg{font-size:1.5rem;padding:0.6875rem 3.4375rem;line-height:2.5rem;}
- .btn:focus,.btn:active:focus,.btn.active:focus{outline:none;}
- .btn-primary{color:#fff;border:1px solid #2C96FF;background-color:#2C96FF;}
- .btn-primary:hover,.btn-primary:focus,.btn-primary:active{color:#fff;border:1px solid #1a6ec0;background-color:#1a6ec0;}
-
- /* Avatar */
- .avatar{width:100px;height:100px;}
- .avatar-section{margin-bottom:25px;display:flex;text-align:left;}
- .username{margin-left:20px;}
-
- /* Scaffolding */
- .site-wrapper{display:table;width:100%;height:100vh;min-height:100%;}
- .site-wrapper-inner{display:flex;flex-direction:column;justify-content:center;margin-right:auto;margin-left:auto;width:100%;height:100vh;}
- .panel-authed{padding:0 0 0 0;}
-
- /* Home button */
- .btn-home-hello{position:absolute;font-family:'Source Code Pro',monospace;font-size:11px;font-weight:400;color:rgba(255,255,255,0.85);top:15px;left:15px;padding:3px 20px;background-color:rgba(255,255,255,0.15);border-radius:6px;-webkit-box-shadow:0px 0px 20px 0px rgba(0,0,0,0.15);-moz-box-shadow:0px 0px 20px 0px rgba(0,0,0,0.15);box-shadow:0px 0px 20px 0px rgba(0,0,0,0.15);}
-
- /* Input */
- input, textarea{color:#000;padding:10px;}
- .input-status{width:100%;height:70px;border-radius:6px;}
- .new-status{text-align:right;}
-
- /* Statuses */
- .statuses{padding-top:30px;}
- .status{margin:15px 0px;padding:20px;background-color:#2e2e2e;border-radius:6px}
- ```
-
-3. Save and close the `src/styles/style.css` file.
-
- After the application compiles, you should see the following:
-
- ![Multi-reader storage authentication](images/multi-player-storage-status.png)
-
-
-At this point, you have a basic micro-blogging app that users can use to post and
-view statuses. However, there's no way to view other users' statuses. You'll add
-that in the next section.
-
-## Lookup user profiles
-
-Let's now modify the `Profile.jsx` file to display profiles of other users. You'll
-be using the `lookupProfile()` method that you added to the `import` statement
-earlier. `lookupProfile()` takes a single parameter that is the Blockstack ID of
-the profile and returns a profile object.
-
-### Add a new route
-
-Make some changes to the routing structure of your app so that users can view
-other users' profiles by visiting `http://localhost:8080/other_user.id`
-
-
-1. Make sure you are in the root of your `publik` project.
-2. Install `react-router`:
-
- ```bash
- npm install --save react-router-dom
- ```
-
-3. Edit `src/index.js` file.
-4. Add an `import` to the file at the top:
-
- ```javascript
- import { BrowserRouter } from 'react-router-dom'
- ```
-
-5. Change the `ReactDOM.render()` method in `src/index.js` to:
-
- ```javascript
- ReactDOM.render((
-
-
-
- ), document.getElementById('root'));
- ```
-6. Save and close the `src/index.js` file.
-7. Edit the `src/components/App.jsx` file.
-8. Add the new route by importing the `Switch` and `Route` components from `react-router-dom`:
-
- ```javascript
- import { Switch, Route } from 'react-router-dom'
- ```
-9. Locate this line below in the `render()` method:
-
- ```javascript
- :
- ```
-
-10. Replace it with the following:
-
- ```javascript
- :
-
-
- }
- />
-
- ```
-
- This sets up a route and captures the route parameter the app will use as the profile lookup username.
-
-11. Save and close the the `src/components/App.jsx` file.
-
-
-### Add a rule to process URL paths with . (dot)
-
-You also need to add a rule to your webpack config so that you can properly
-process URL paths that contain the `.` (dot) character for example,
-`http://localhost:8080/other_user.id`
-
-**NOTE**: In a production app, you must ensure the web server is configured to handle this.
-
-
-1. Open `webpack.config.js` in the root project directory and locate the following line:
-
- ```javascript
- historyApiFallback: true,
- ```
-
-2. Replace it with this:
-
- ```javascript
- historyApiFallback: {
- disableDotRule: true
- },
- ```
-
- You will need to run `npm start` again for this change to take effect. Don't
- worry, there is a later step for that to remind you.
-
-3. Save and close the `webpack.config.js` file.
-
-4. Edit the `src/components/Profile.jsx` file.
-5. Add a single method that determines if the app is viewing the local user's profile or another user's profile.
-
- ```javascript
- isLocal() {
- return this.props.match.params.username ? false : true
- }
- ```
-
- You use `isLocal()` to check if the user is viewing the local user profile or another user's profile. If it's the local user profile, the app runs the `getFile()` function you added in an earlier step. Otherwise, the app looks up the profile belonging to the `username` using the `lookupProfile()` method.
-
-6. Modify the `fetchData()` method like so:
-
- ```javascript
- fetchData() {
- this.setState({ isLoading: true })
- if (this.isLocal()) {
- const options = { decrypt: false }
- getFile('statuses.json', options)
- .then((file) => {
- var statuses = JSON.parse(file || '[]')
- this.setState({
- person: new Person(loadUserData().profile),
- username: loadUserData().username,
- statusIndex: statuses.length,
- statuses: statuses,
- })
- })
- .finally(() => {
- this.setState({ isLoading: false })
- })
- } else {
- const username = this.props.match.params.username
-
- lookupProfile(username)
- .then((profile) => {
- this.setState({
- person: new Person(profile),
- username: username
- })
- })
- .catch((error) => {
- console.log('could not resolve profile')
- })
- }
- }
- ```
-
- **NOTE**: For `https` deployments, the default Blockstack Core API endpoint for name
- lookups should be changed to point to a core API served over `https`.
- Otherwise, name lookups fail due to browsers blocking mixed content.
- Refer to the [Blockstack.js
- documentation](http://blockstack.github.io/blockstack.js/#getfile) for
- details.
-
-7. Add the following block to `fetchData()` right after the call to `lookupProfile(username)... catch((error)=>{..}` block:
-
- ```javascript
- const options = { username: username, decrypt: false }
- getFile('statuses.json', options)
- .then((file) => {
- var statuses = JSON.parse(file || '[]')
- this.setState({
- statusIndex: statuses.length,
- statuses: statuses
- })
- })
- .catch((error) => {
- console.log('could not fetch statuses')
- })
- .finally(() => {
- this.setState({ isLoading: false })
- })
- ```
-
- This fetches the user statuses.
-
- Finally, you must conditionally render the logout button, status input textbox, and submit button so they don't show up when viewing another user's profile.
-
-8. Replace the `render()` method with the following:
-
- ```javascript
- render() {
- const { handleSignOut } = this.props;
- const { person } = this.state;
- const { username } = this.state;
-
- return (
- !isSignInPending() && person ?
-
: null
- );
- }
- ```
-
- ### This checks to ensure that users are viewing their own profile, by wrapping the **Logout** button and inputs with the `{isLocal() && ...}` condition.
-
-### Put it all together
-
-1. Stop the running application by sending a CTL-C.
-2. Restart the application so that the disabling of the `.` (dot) rule takes effect.
-
- ```bash
- npm start
- ```
-
-3. Point your browser to `http://localhost:8080/your_blockstack.id` to see the final application.
-
-
-
-## Wrapping up
-
-Congratulations, you are all done! We hope you've enjoyed learning a bit more
-about Blockstack. To use a working version of the app go
-[here](http://publik.ykliao.com).
diff --git a/_browser/.svn/pristine/65/65ae54036b4f6a2a5c29057ecf62cd91b4b3f506.svn-base b/_browser/.svn/pristine/65/65ae54036b4f6a2a5c29057ecf62cd91b4b3f506.svn-base
deleted file mode 100644
index 4cbade8a..00000000
--- a/_browser/.svn/pristine/65/65ae54036b4f6a2a5c29057ecf62cd91b4b3f506.svn-base
+++ /dev/null
@@ -1,812 +0,0 @@
----
-layout: learn
-permalink: /:collection/:path.html
----
-# Manage Data with Gaia
-{:.no_toc}
-
-In this tutorial, you build a micro-blogging application using multi-player Gaia
-storage. Gaia is Blockstack's [decentralized high-performance storage
-system](https://github.com/blockstack/gaia). The tutorial contains the following
-topics:
-
-* TOC
-{:toc}
-
-This tutorial does not teach you about authentication. That is covered in depth [in the hello-blockstack tutorial](hello-blockstack.md).
-
-
-
-
-## About this tutorial and the prerequisites you need
-
-At minimum, Blockstack requires macOS High Sierra. This tutorial was written for
-a user running macOS High Sierra 10.13.4. The application you build is a
-React.js application that is completely decentralized and server-less. While
-not strictly required to follow along, basic familiarity with React.js is
-helpful.
-
-When complete, the app is capable of the following:
-
-- authenticating users using Blockstack
-- posting new statuses
-- displaying statuses in the user profile
-- looking up the profiles and statuses of other users
-
-The basic identity and storage services are provided by `blockstack.js`. To test
-the application, you need to have already [registered a Blockstack ID](ids-introduction.md).
-
-The tutorial relies on the `npm` dependency manager. Before you begin, verify
-you have installed `npm` using the `which` command.
-
-```bash
-$ which npm
-/usr/local/bin/npm
-```
-
-If you don't find `npm` in your system, [install
-it](https://www.npmjs.com/get-npm). Finally, if you get stuck at any point
-while working on the tutorial, the completed [source code is available for
-you](https://github.com/larrysalibra/publik) to check your work against.
-
-## Use npm to install Yeoman and the Blockstack App Generator
-
-You use `npm` to install Yeoman. Yeoman is a generic scaffolding system that
-helps users rapidly start new projects and streamline the maintenance of
-existing projects.
-
-
-1. Install Yeoman.
-
- ```bash
- npm install -g yo
- ```
-2. Install the Blockstack application generator.
-
- ```bash
- npm install -g generator-blockstack
- ```
-
-
-
-## Generate and launch the public application
-
-In this section, you build an initial React.js application called Publik.
-
-1. Create a the `publik` directory.
-
- ```bash
- mkdir publik
- ```
-
-2. Change into your new directory.
-
- ```bash
- cd publik
- ```
-
-3. Use Yeoman and the Blockstack application generator to create your initial `publik` application.
-
- ```bash
- yo blockstack:react
- ```
-
- You should see several interactive prompts.
-
- ```bash
- $ yo blockstack:react
- ? ==========================================================================
- We're constantly looking for ways to make yo better!
- May we anonymously report usage statistics to improve the tool over time?
- More info: https://github.com/yeoman/insight & http://yeoman.io
- ========================================================================== No
-
- _-----_ ╭──────────────────────────╮
- | | │ Welcome to the │
- |--(o)--| │ Blockstack app │
- `---------´ │ generator! │
- ( _´U`_ ) ╰──────────────────────────╯
- /___A___\ /
- | ~ |
- __'.___.'__
- ´ ` |° ´ Y `
-
- ? Are you ready to build a Blockstack app in React? (Y/n)
- ```
-
-4. Respond to the prompts to populate the initial app.
-
- After the process completes successfully, you see a prompt similar to the following:
-
- ```bash
- [fsevents] Success:
- "/Users/theuser/repos/publik/node_modules/fsevents/lib/binding/Release/node-v59-darwin-x64/fse.node"
- is installed via remote npm notice created a lockfile as package-lock.json.
- You should commit this file. added 1060 packages in 26.901s
- ```
-
-5. Run the initial application.
-
- ```bash
- npm start
- ```
-
- The system prompts you to accept incoming connections.
-
- ![Network Connection](./images/network-connections.gif)
-
-6. Choose **Allow**.
-
-7. Open your browser to `http://localhost:8080`.
-
- You should see a simple React app.
-
- ![](images/initial-app.gif)
-
-8. Choose **Sign In with Blockstack**.
-
- The application tells you it will **Read your basic info**.
-
- ![](images/login.png)
-
-Leave your new application running and move onto the next section.
-
-## Add the `publish_data` scope to sign in requests
-
-Every app that uses Gaia storage must add itself to the user's `profile.json`
-file. The Blockstack browser does this automatically when the `publish_data`
-scope is requested during authentication. For this application, the user files
-stored on Gaia are made visible to others via the `apps` property in the user's
-`profile.json` file.
-
-Modify your authentication request to include the `publish_data` scope.
-
-1. Open `src/components/App.jsx` file.
-
-2. Locate the `handleSignIn` handler method.
-
- ```javascript
- handleSignIn(e) {
- e.preventDefault();
- redirectToSignIn();
- }
- ```
-
-2. Modify the method to this:
-
- ```javascript
- handleSignIn(e) {
- e.preventDefault();
- const origin = window.location.origin
- redirectToSignIn(origin, origin + '/manifest.json', ['store_write', 'publish_data'])
- }
- ```
-
- By default, authentication requests include the `store_write` scope which
- enables storage. This is what allows you to store information to Gaia.
-
-3. Save your changes.
-4. Go back to your app at `http://localhost:8080/`.
-5. Log out and sign in again.
-
- The authentication request now prompts the user for permission to **Publish
- data stored for the app**.
-
- ![](images/publish-data-perm.png)
-
-## Understand Gaia storage methods
-
-Once you authenticate a user with `store_write` and `publish_data`, you can
-begin to manage data for your users. Blockstack JS provides two methods
-`getFile()` and `putFile()` for interacting with Gaia storage. The storage
-methods support all file types. This means you can store SQL, Markdown, JSON, or
-even a custom format.
-
-You can create a meaningful and complex data layer using these two methods.
-Before creating an application, consider fundamental data architecture and make
-some decisions about how you’re modeling data. For example, consider building a
-simple grocery list app. A user should be able to create, read, update, and
-delete grocery lists.
-
-A single file collection stores items as an array nested inside each grocery
-list:
-
-```js
-// grocerylists.json
-{
- "3255": {
- "items": [
- "1 Head of Lettuce",
- "Haralson apples"
- ]
- },
- // ...more lists with items
-}
-```
-
-This is conceptually the simplest way to manage grocery lists. When you read a
-`/grocerylists.json` file with `getFile()`, you get back one or more grocery
-lists and their items. When you write a single list, the `putFile()` method
-overwrites the entire list. So, a write operation for a new or updated grocery
-list must submit all existings lists as well.
-
-Further, because this runs on the client where anything can go wrong. If the
-client-side code encounters a parsing error with a user-input value and you
-could overwrite the entire file with:
-
-`line 6: Parsing Error: Unexpected token.`
-
-Further, a single file makes pagination impossible and if your app stores a
-single file for all list you have less control over file permissions. To avoid
-these issues, you can create an index file that stores an array of IDs. These
-IDs point to a name of another file in a `grocerylists` folder.
-
-![](images/multiple-lists.png)
-
-This design allows you to get only the files you need and avoid accidentally
-overwriting all lists. Further, you’re only updating the index file when you add
-or remove a grocery list; updating a list has no impact.
-
-
-## Add support for user status submission and lookup
-
-In this step, you add three `blockstack.js` methods that support posting of "statuses". These are the `putFile()`, `getFile()`, and `lookupProfile()` methods.
-
-1. Open the `src/components/Profile.jsx` file.
-
-2. Expand the `import from blockstack` statement with data methods.
-
- The `Person` object holds a Blockstack profile. Add `putFile`, `getFile`,
- and `lookupProfile` after `Person`.
-
- When you are done, the import statement should look like the following:
-
- ```javascript
- import {
- isSignInPending,
- loadUserData,
- Person,
- getFile,
- putFile,
- lookupProfile
- } from 'blockstack';
- ```
-
-3. Replace the `constructor()` initial state so that it holds the key properties required by the app.
-
- This code constructs a Blockstack `Person` object to hold the profile. Your constructor should look like this:
-
- ```javascript
- constructor(props) {
- super(props);
-
- this.state = {
- person: {
- name() {
- return 'Anonymous';
- },
- avatarUrl() {
- return avatarFallbackImage;
- },
- },
- username: "",
- newStatus: "",
- statuses: [],
- statusIndex: 0,
- isLoading: false
- };
- }
- ```
-
-
-4. Locate the `render()` method.
-5. Modify the `render()` method to add a text input and submit button to the application.
-
- The following code echos the `person.name` and `person.avatarURL`
- properties from the profile on the display:
-
- ```javascript
- render() {
- const { handleSignOut } = this.props;
- const { person } = this.state;
- const { username } = this.state;
-
- return (
- !isSignInPending() && person ?
-
: null
- );
- }
- ```
-
- This code allows the application to post statuses. It also displays the
- user's Blockstack ID. To display this, your app must extract the ID from the
- user profile data.
-
-6. Locate the `componentWillMount()` method.
-7. Add the `username` property below the `person` property.
-
- You'll use the Blockstack `loadUserData()` method to access the `username`.
-
-
- ```javascript
- componentWillMount() {
- this.setState({
- person: new Person(loadUserData().profile),
- username: loadUserData().username
- });
- }
- ```
-
-7. Add two methods to handle the status input events:
-
- ```javascript
- handleNewStatusChange(event) {
- this.setState({newStatus: event.target.value})
- }
-
- handleNewStatusSubmit(event) {
- this.saveNewStatus(this.state.newStatus)
- this.setState({
- newStatus: ""
- })
- }
- ```
-
-8. Add a `saveNewStatus()` method to save the new statuses.
-
- ```javascript
- saveNewStatus(statusText) {
- let statuses = this.state.statuses
-
- let status = {
- id: this.state.statusIndex++,
- text: statusText.trim(),
- created_at: Date.now()
- }
-
- statuses.unshift(status)
- const options = { encrypt: false }
- putFile('statuses.json', JSON.stringify(statuses), options)
- .then(() => {
- this.setState({
- statuses: statuses
- })
- })
- }
- ```
-
-9. Save the `Profile.jsk` file.
-
- After the application compiles successfully, your application should appears as follows:
-
- ![](images/display-complete.png)
-
-10. Enter your status in the text box and press the **Submit** button.
-
- At this point, nothing is blogged. In the next section you add code to display
- the statuses back to the user as a blog entry.
-
-## Fetch and display statuses
-
-Update `Profile.jsx` again.
-
-1. Go back to the `render()` method.
-2. Locate the `
` containing the text input and **Submit** button.
-3. Right after this opening `div` element, add this block.
-
- ```javascript
-
- ```
- This loads existing state. Your code needs to fetch statuses on page load.
-
-4. Add a new method called `fetchData()` after the `statuses.unshift(status)` section.
-
- ```javascript
-
- fetchData() {
- this.setState({ isLoading: true })
- const options = { decrypt: false }
- getFile('statuses.json', options)
- .then((file) => {
- var statuses = JSON.parse(file || '[]')
- this.setState({
- person: new Person(loadUserData().profile),
- username: loadUserData().username,
- statusIndex: statuses.length,
- statuses: statuses,
- })
- })
- .finally(() => {
- this.setState({ isLoading: false })
- })
- }
- ```
-
-5. Call `fetchData()` from the `componentDidMount()` method
-
- ```javascript
-
- componentDidMount() {
- this.fetchData()
- }
- ```
-
-6. Save the file.
-
- After the application compiles successfully, users are able to **Submit**
- multiple statuses and review them in the app.
-
- ![](images/saving-status.png)
-
-## Change the style
-
-1. Edit the `src/styles/style.css` file.
-2. Replace the content with the following:
-
-
- ```css
- /* Globals */
- a,a:focus,a:hover{color:#fff;}
- html,body{height:100%;text-align:center;background-color:#191b22;}
- body{color:#fff}
- .hide{display:none;}
- .landing-heading{font-family:'Lato',Sans-Serif;font-weight:400;}
-
- /* Buttons */
- .btn{font-family:'Lato',Sans-Serif;padding:0.5625rem 2.5rem;font-size:0.8125rem;font-weight:400;line-height:1.75rem;border-radius:0!important;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-ms-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}
- .btn-lg{font-size:1.5rem;padding:0.6875rem 3.4375rem;line-height:2.5rem;}
- .btn:focus,.btn:active:focus,.btn.active:focus{outline:none;}
- .btn-primary{color:#fff;border:1px solid #2C96FF;background-color:#2C96FF;}
- .btn-primary:hover,.btn-primary:focus,.btn-primary:active{color:#fff;border:1px solid #1a6ec0;background-color:#1a6ec0;}
-
- /* Avatar */
- .avatar{width:100px;height:100px;}
- .avatar-section{margin-bottom:25px;display:flex;text-align:left;}
- .username{margin-left:20px;}
-
- /* Scaffolding */
- .site-wrapper{display:table;width:100%;height:100vh;min-height:100%;}
- .site-wrapper-inner{display:flex;flex-direction:column;justify-content:center;margin-right:auto;margin-left:auto;width:100%;height:100vh;}
- .panel-authed{padding:0 0 0 0;}
-
- /* Home button */
- .btn-home-hello{position:absolute;font-family:'Source Code Pro',monospace;font-size:11px;font-weight:400;color:rgba(255,255,255,0.85);top:15px;left:15px;padding:3px 20px;background-color:rgba(255,255,255,0.15);border-radius:6px;-webkit-box-shadow:0px 0px 20px 0px rgba(0,0,0,0.15);-moz-box-shadow:0px 0px 20px 0px rgba(0,0,0,0.15);box-shadow:0px 0px 20px 0px rgba(0,0,0,0.15);}
-
- /* Input */
- input, textarea{color:#000;padding:10px;}
- .input-status{width:100%;height:70px;border-radius:6px;}
- .new-status{text-align:right;}
-
- /* Statuses */
- .statuses{padding-top:30px;}
- .status{margin:15px 0px;padding:20px;background-color:#2e2e2e;border-radius:6px}
- ```
-
-3. Save and close the `src/styles/style.css` file.
-
- After the application compiles, you should see the following:
-
- ![Multi-reader storage authentication](images/multi-player-storage-status.png)
-
-
-At this point, you have a basic micro-blogging app that users can use to post and
-view statuses. However, there's no way to view other users' statuses. You'll add
-that in the next section.
-
-## Lookup user profiles
-
-Let's now modify the `Profile.jsx` file to display profiles of other users. You'll
-be using the `lookupProfile()` method that you added to the `import` statement
-earlier. `lookupProfile()` takes a single parameter that is the Blockstack ID of
-the profile and returns a profile object.
-
-### Add a new route
-
-Make some changes to the routing structure of your app so that users can view
-other users' profiles by visiting `http://localhost:8080/other_user.id`
-
-
-1. Make sure you are in the root of your `publik` project.
-2. Install `react-router`:
-
- ```bash
- npm install --save react-router-dom
- ```
-
-3. Edit `src/index.js` file.
-4. Add an `import` to the file at the top:
-
- ```javascript
- import { BrowserRouter } from 'react-router-dom'
- ```
-
-5. Change the `ReactDOM.render()` method in `src/index.js` to:
-
- ```javascript
- ReactDOM.render((
-
-
-
- ), document.getElementById('root'));
- ```
-6. Save and close the `src/index.js` file.
-7. Edit the `src/components/App.jsx` file.
-8. Add the new route by importing the `Switch` and `Route` components from `react-router-dom`:
-
- ```javascript
- import { Switch, Route } from 'react-router-dom'
- ```
-9. Locate this line below in the `render()` method:
-
- ```javascript
- :
- ```
-
-10. Replace it with the following:
-
- ```javascript
- :
-
-
- }
- />
-
- ```
-
- This sets up a route and captures the route parameter the app will use as the profile lookup username.
-
-11. Save and close the the `src/components/App.jsx` file.
-
-
-### Add a rule to process URL paths with . (dot)
-
-You also need to add a rule to your webpack config so that you can properly
-process URL paths that contain the `.` (dot) character for example,
-`http://localhost:8080/other_user.id`
-
-**NOTE**: In a production app, you must ensure the web server is configured to handle this.
-
-
-1. Open `webpack.config.js` in the root project directory and locate the following line:
-
- ```javascript
- historyApiFallback: true,
- ```
-
-2. Replace it with this:
-
- ```javascript
- historyApiFallback: {
- disableDotRule: true
- },
- ```
-
- You will need to run `npm start` again for this change to take effect. Don't
- worry, there is a later step for that to remind you.
-
-3. Save and close the `webpack.config.js` file.
-
-4. Edit the `src/components/Profile.jsx` file.
-5. Add a single method that determines if the app is viewing the local user's profile or another user's profile.
-
- ```javascript
- isLocal() {
- return this.props.match.params.username ? false : true
- }
- ```
-
- You use `isLocal()` to check if the user is viewing the local user profile or another user's profile. If it's the local user profile, the app runs the `getFile()` function you added in an earlier step. Otherwise, the app looks up the profile belonging to the `username` using the `lookupProfile()` method.
-
-6. Modify the `fetchData()` method like so:
-
- ```javascript
- fetchData() {
- this.setState({ isLoading: true })
- if (this.isLocal()) {
- const options = { decrypt: false }
- getFile('statuses.json', options)
- .then((file) => {
- var statuses = JSON.parse(file || '[]')
- this.setState({
- person: new Person(loadUserData().profile),
- username: loadUserData().username,
- statusIndex: statuses.length,
- statuses: statuses,
- })
- })
- .finally(() => {
- this.setState({ isLoading: false })
- })
- } else {
- const username = this.props.match.params.username
-
- lookupProfile(username)
- .then((profile) => {
- this.setState({
- person: new Person(profile),
- username: username
- })
- })
- .catch((error) => {
- console.log('could not resolve profile')
- })
- }
- }
- ```
-
- **NOTE**: For `https` deployments, the default Blockstack Core API endpoint for name
- lookups should be changed to point to a core API served over `https`.
- Otherwise, name lookups fail due to browsers blocking mixed content.
- Refer to the [Blockstack.js
- documentation](http://blockstack.github.io/blockstack.js/#getfile) for
- details.
-
-7. Add the following block to `fetchData()` right after the call to `lookupProfile(username)... catch((error)=>{..}` block:
-
- ```javascript
- const options = { username: username, decrypt: false }
- getFile('statuses.json', options)
- .then((file) => {
- var statuses = JSON.parse(file || '[]')
- this.setState({
- statusIndex: statuses.length,
- statuses: statuses
- })
- })
- .catch((error) => {
- console.log('could not fetch statuses')
- })
- .finally(() => {
- this.setState({ isLoading: false })
- })
- ```
-
- This fetches the user statuses.
-
- Finally, you must conditionally render the logout button, status input textbox, and submit button so they don't show up when viewing another user's profile.
-
-8. Replace the `render()` method with the following:
-
- ```javascript
- render() {
- const { handleSignOut } = this.props;
- const { person } = this.state;
- const { username } = this.state;
-
- return (
- !isSignInPending() && person ?
-
: null
- );
- }
- ```
-
- ### This checks to ensure that users are viewing their own profile, by wrapping the **Logout** button and inputs with the `{isLocal() && ...}` condition.
-
-### Put it all together
-
-1. Stop the running application by sending a CTL-C.
-2. Restart the application so that the disabling of the `.` (dot) rule takes effect.
-
- ```bash
- npm start
- ```
-
-3. Point your browser to `http://localhost:8080/your_blockstack.id` to see the final application.
-
-
-
-## Wrapping up
-
-Congratulations, you are all done! We hope you've enjoyed learning a bit more
-about Blockstack. To use a working version of the app go
-[here](http://publik.ykliao.com).
diff --git a/_browser/.svn/pristine/66/6621d9feb3a2a15035193f6c0c393c822241ec8f.svn-base b/_browser/.svn/pristine/66/6621d9feb3a2a15035193f6c0c393c822241ec8f.svn-base
deleted file mode 100644
index 33ea78a6..00000000
--- a/_browser/.svn/pristine/66/6621d9feb3a2a15035193f6c0c393c822241ec8f.svn-base
+++ /dev/null
@@ -1,210 +0,0 @@
----
-layout: usenew
-permalink: /:collection/:path.html
----
-# Get and use a Blockstack ID
-{:.no_toc}
-
-Through the Blockstack browser you can create an identity. Your identity is a
-point of contact as you interact with others through Dapps. Others may be
-individual users or companies or software. Unless you allow it, none of these
-others have access to anything other than your identity label, for example
-`moxiegirl.id.blockstack`. To learn more about you, others must ask and you can
-choose to share -- or not.
-
-This document explains one type of identity, the Blockstack ID. You learn how to
-create them, as well as when and how to restore them. It contains the following sections:
-
-* TOC
-{:toc}
-
-
-## Understand Blockstack IDs
-
-Interacting within the decentralized internet requires that you have at least
-one identity, though you can create several. Your identity is created through a
-registrar. Blockstack maintains a registrar for creating identities that you
-can use to interact with distributed applications (Dapps).
-
-To use the Blockstack Browser or to develop a decentralized application you
-require a Blockstack ID, for example `moxiegirl.id.blockstack`. A Blockstack ID
-is a digital identity that is registered With Blockstack. Your personal data and
-storage are built around this ID. Decentralized applications that want to access
-your data need your identity and your permission.
-
-When you first sign up through the Blockstack browser, you create an initial
-human-readable identity in the `id.blockstack` domain. This initial identity has
-the format:
-
-_`USERNAME`_`.id.blockstack`
-
-The _`USERNAME`_ portion must be unique. You enter an email and password to
-create the initial identity. Blockstack uses the password to:
-
- * seed a _recovery code_ an encrypted string, for example `36mWivFdy0YPH2z31EflpQz/Y0UMrOrJ++lH=0EI7c3mop2JuRBm5W1P0BwXxSTazJsUjOAmC55rFUWINqDqGccLio0iwzGclAhaHGZQ5M52`
- * seed a _recovery key_ which is a squence of words `applied binge crisp pictorial fiery dancing agreeable frogs light finish ping apple`
-
-The email is provided to allow either Blockstack or a decentralized application
-to communicate information to you. In Blockstacks' case, the email is used to
-send you reovery information.
-
-While Blockstack registers your human readable ID and the recovery key. _You_ must
-record the:
-
-* recovery key
-* recovery code (in the order the words apepar)
-* initial password
-
-Blockstack does not store them, so it can't give them to you later if they are
-lost.
-
-Your initial ID is created in the `id.blockstack` domain. The initial identity
-remains primary, and you need this primary ID and its associated information
-(recovery code, recovery key, and password) to use the browser again.
-
-Finally, the `id.blockstack` domain is sponsored by the Blockstack registrar and
-identities on it are free. Once you are using the Blockstack Browser, you can
-create additional identities outside of this domain and controlled by other
-registrars. Coin is required to purchase identities on other domains.
-
-## Create an initial Blockstack ID
-
-To create an inititial Blockstack ID, do the following:
-
-1. Open the [Blockstack web application in your browser](https://browser.blockstack.org/sign-up?redirect=%2F).
-
- The application prompts you for an email address.
-
- ![](images/create-id-0.png)
-
- Blockstack uses this email address to send you recovery information.
-
-2. Enter an email address and press **Next**.
-
- The application prompts you to enter a password. Blockstack users this
- password to encrypt your recovery code. You must record and save this
- initial password.
-
- **NOTE**:The Blockstack team cannot restore your password for you.
-
-3. Enter a password, confirm it, and press **Next**.
-
- ![](images/create-id-1.png)
-
- The browser prompts you to register a unique username in the `id.blockstack`
- domain. This is your identity in the decentralized internet. The format of the id
- is:
-
- _`username`_`.id.blockstack`
-
- You'll use this initial ID to access the Blockstack Browser.
-
-3. Enter a unique username and press **Check Availability**.
-
- ![](images/create-id-2.png)
-
- When you choose an ID that is available, the system responds with the following:
-
- ![](images/create-id-3.png)
-
-4. Press **Continue**.
-
- The system prompts you to save your **recovery code**. A recovery code is a
- sequence of words. These words allow you to recover an `id.blockstack`
- that you've created. You should store the words along with their order, for
- example, `#1 applied` and so forth.
-
-5. Click **I have written down all the words** when you are done.
-
- The system places you in the Blockstack browser. You can begin exploring and
- using Dapps.
-
-## Restore a Blockstack ID
-
-When you return to the Blockstack Browser, the browser prompts you to create a
-new Blockstack ID or restore an existing Blockstack ID. If you have a
-Blockstack identity, you can open the browser by restoring the identity. To
-restore an identity, there are two available methods.
-
-Method 1: Supply the identity recovery code (`36mWivFdy0YPH2z31E...`) and the
-password you provided when you _initially_ created your identity. Method 2:
-Supply the recovery key which is a sequence of words (`applied binge ...`)
-
-If you loose either the recovery code or the password you provided when you
-_initially_ created your identity, you can no longer use method 1 to restore
-your identity. If you lose the recovery key, you can no longer use method 2.
-Once you no longer have access to either method, your identity is estranged and
-not accessible by anyone.
-
-### Restore with a recovery key
-
-1. Open the [Blockstack web application in your browser](https://browser.blockstack.org/sign-up?redirect=%2F).
-2. Choose **Restore a Blockstack ID**.
-
- The system displays a dialog where you can enter your recovery code or a
- recovery key.
-
-3. Enter the recovery key.
-
- The recovery key is a squence of words.
-
- ![](images/recovery-code.png)
-
-4. Press **Next**.
-
- The system prompts you for an email address. This email can be one you
- entered previously or an entirely new one. Blockstack doesn't store this
- address; it is used during your current Blockstack browser interaction to communicate
- important information with you.
-
-5. Enter an email and press **Next**.
-
- The system prompts you for an password and its confirmation. This password
- can be one you entered previously or an entirely new one. Write this password
- down. You can use the password during your current Blockstack browser
- interaction to reveal your keychain or change your password. Blockstack does
- not store this information past the session.
-
-6. Enter a password and press **Next**.
-
- The system welcomes you back.
-
- ![](images/welcome-back.png)
-
- At this point, you can go onto work with Dapps or you can review your recovery key.
-
-### Restore with a recovery code and original password
-
-1. Open the [Blockstack web application in your browser](https://browser.blockstack.org/sign-up?redirect=%2F).
-2. Choose **Restore a Blockstack ID**.
-
- The system displays a dialog where you can enter your recovery code or a
- recovery key.
-
-3. Enter your recovery code.
-
- The recovery code is an encrypted string.
-
- ![](images/recovery-code.png)
-
-4. Press **Next**.
-
- The system prompts you for an email address. This email can be one you
- entered previously or an entirely new one. Blockstack doesn't store this
- address; it is used during your current Blockstack browser interaction to
- communicate important information with you.
-
-5. Enter an email and press **Next**.
-
- The system prompts you for an password. This must be the password entered
- when you first created your identity. If you have forgetten this passowrd,
- Blockstack cannot provide it to you. Instead, you must switch to using your
- recovery key rather than your code to restore your identity.
-
-6. Enter your origin password and press **Next**.
-
- The system welcomes you back.
-
- ![](images/welcome-back.png)
-
- At this point, you can go work with Dapps or you can review your recovery key.
diff --git a/_browser/.svn/pristine/6c/6cf236705739b3dc1eaa714fab9bace84b283e8b.svn-base b/_browser/.svn/pristine/6c/6cf236705739b3dc1eaa714fab9bace84b283e8b.svn-base
deleted file mode 100644
index d080b559..00000000
Binary files a/_browser/.svn/pristine/6c/6cf236705739b3dc1eaa714fab9bace84b283e8b.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/7d/7d026a516855c1ccedf5ee6a2fe63126d09c8e26.svn-base b/_browser/.svn/pristine/7d/7d026a516855c1ccedf5ee6a2fe63126d09c8e26.svn-base
deleted file mode 100644
index e653b034..00000000
Binary files a/_browser/.svn/pristine/7d/7d026a516855c1ccedf5ee6a2fe63126d09c8e26.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/7e/7e40e7b1ee5b4f12d441e53a6ab89e94ad1fca90.svn-base b/_browser/.svn/pristine/7e/7e40e7b1ee5b4f12d441e53a6ab89e94ad1fca90.svn-base
deleted file mode 100644
index 097ae3b0..00000000
Binary files a/_browser/.svn/pristine/7e/7e40e7b1ee5b4f12d441e53a6ab89e94ad1fca90.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/85/85996c7ad7783aa09fc9583b4befe746d24be5e5.svn-base b/_browser/.svn/pristine/85/85996c7ad7783aa09fc9583b4befe746d24be5e5.svn-base
deleted file mode 100644
index 416d4bd8..00000000
Binary files a/_browser/.svn/pristine/85/85996c7ad7783aa09fc9583b4befe746d24be5e5.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/88/880a628c402d072057a35178bbbc13b8437c46bb.svn-base b/_browser/.svn/pristine/88/880a628c402d072057a35178bbbc13b8437c46bb.svn-base
deleted file mode 100644
index dd51ac7c..00000000
Binary files a/_browser/.svn/pristine/88/880a628c402d072057a35178bbbc13b8437c46bb.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/89/8917230875187dc926ba9f5a9a86e781975585ad.svn-base b/_browser/.svn/pristine/89/8917230875187dc926ba9f5a9a86e781975585ad.svn-base
deleted file mode 100644
index 9a521f11..00000000
Binary files a/_browser/.svn/pristine/89/8917230875187dc926ba9f5a9a86e781975585ad.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/8e/8e3163bec841bf2fb8cc6ecbbf49f02e64b1e2d8.svn-base b/_browser/.svn/pristine/8e/8e3163bec841bf2fb8cc6ecbbf49f02e64b1e2d8.svn-base
deleted file mode 100644
index 76f1331c..00000000
Binary files a/_browser/.svn/pristine/8e/8e3163bec841bf2fb8cc6ecbbf49f02e64b1e2d8.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/94/9400d6428e2bb287e9c7385bedb6ee563f5829d0.svn-base b/_browser/.svn/pristine/94/9400d6428e2bb287e9c7385bedb6ee563f5829d0.svn-base
deleted file mode 100644
index 9c932f51..00000000
Binary files a/_browser/.svn/pristine/94/9400d6428e2bb287e9c7385bedb6ee563f5829d0.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/a3/a388e8949737a271d80b69b8dfcf48d77dddb890.svn-base b/_browser/.svn/pristine/a3/a388e8949737a271d80b69b8dfcf48d77dddb890.svn-base
deleted file mode 100644
index f0eb285c..00000000
Binary files a/_browser/.svn/pristine/a3/a388e8949737a271d80b69b8dfcf48d77dddb890.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/a8/a8348770072ebc93d3d6669efb8fb2225bbb39de.svn-base b/_browser/.svn/pristine/a8/a8348770072ebc93d3d6669efb8fb2225bbb39de.svn-base
deleted file mode 100644
index 1e7a2fb2..00000000
Binary files a/_browser/.svn/pristine/a8/a8348770072ebc93d3d6669efb8fb2225bbb39de.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/b0/b0150507ba3e8a583e83ad2c29256231c8b58373.svn-base b/_browser/.svn/pristine/b0/b0150507ba3e8a583e83ad2c29256231c8b58373.svn-base
deleted file mode 100644
index fd962ff9..00000000
Binary files a/_browser/.svn/pristine/b0/b0150507ba3e8a583e83ad2c29256231c8b58373.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/b7/b719720c84e885f3d96f0c0b14534214d6683f18.svn-base b/_browser/.svn/pristine/b7/b719720c84e885f3d96f0c0b14534214d6683f18.svn-base
deleted file mode 100644
index 6ff75ed5..00000000
Binary files a/_browser/.svn/pristine/b7/b719720c84e885f3d96f0c0b14534214d6683f18.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/b9/b974564d6e487b3c718c87a3c3fa821b4ac3d833.svn-base b/_browser/.svn/pristine/b9/b974564d6e487b3c718c87a3c3fa821b4ac3d833.svn-base
deleted file mode 100644
index ab31536d..00000000
Binary files a/_browser/.svn/pristine/b9/b974564d6e487b3c718c87a3c3fa821b4ac3d833.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/bf/bfa77ea6b63530fb7273cc51c462f37d9479a75b.svn-base b/_browser/.svn/pristine/bf/bfa77ea6b63530fb7273cc51c462f37d9479a75b.svn-base
deleted file mode 100644
index 4dca5dd1..00000000
Binary files a/_browser/.svn/pristine/bf/bfa77ea6b63530fb7273cc51c462f37d9479a75b.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/ca/ca6de58cdaf847ead67cc9893c73b040cdd6fb08.svn-base b/_browser/.svn/pristine/ca/ca6de58cdaf847ead67cc9893c73b040cdd6fb08.svn-base
deleted file mode 100644
index 38054d90..00000000
Binary files a/_browser/.svn/pristine/ca/ca6de58cdaf847ead67cc9893c73b040cdd6fb08.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/cf/cfe2a40e44a14cf0e7be26fed8c2430dc0d259e2.svn-base b/_browser/.svn/pristine/cf/cfe2a40e44a14cf0e7be26fed8c2430dc0d259e2.svn-base
deleted file mode 100644
index a1e0f568..00000000
--- a/_browser/.svn/pristine/cf/cfe2a40e44a14cf0e7be26fed8c2430dc0d259e2.svn-base
+++ /dev/null
@@ -1,81 +0,0 @@
----
-layout: usenew
-description: Use a Blockstack ID with a DApp
-permalink: /:collection/:path.html
----
-# Users Frequently Asked Questions (FAQ)
-{:.no_toc}
-
-This is a general FAQ intended for users of decentralized applications. If you are a developer, refer to the [technical FAQ].
-
-* TOC
-{:toc}
-
-
-## What is the decentralized internet?
-
-The Blockstack ecosystem enables the new decentralized internet. Decentralization means authority moving from central authority to local authority. Simply put, in a decentralized interent, you your data, not the applications or services you use.
-
-Blockstack envisions a world where users control their own data, and power flows back to the users. For example, when you buy something from an online company, that company collects and stores data about you:
-
-* your name
-* the information about the product you bought
-* the number on your credit card
-
-In the decentralied internet, that information stays with you and it isn't
-collected or stored by anyone. Applications that operate in the decentralized
-internet are called _decentralized applications_ or Dapps for short.
-
-## What is Blockstack?
-
-Blockstack is an ecosystem to support both Dapp users and Dapp developers. For
-users, Blockstack makes software to create Blockstack identities and find Dapps.
-For developers, Blockstack develops an ecosystem of software and services that developrs can use to build Dapps.
-
-Blockstack through its
-
-## How do Dapps differ applications I typically use?
-
-Dapps differ from Web applications in two ways:
-
-* **Users have identities not accounts**. The user brings their identity to the
- applications; applications do not require the user to create accounts and
-passwords.
-* **Users own their data**. Users control access to their data. Users decide where to store their data and which applications can read or write to your. Companies and their decentralized applications don't keep or save your data.
-
-
-## Where is my identity kept?
-
-Your identity is a unique string you and other people can read such as `moxiegirl.id`. A private key is a string of letters only you know. When you create an identity, a **hash** is made of your id and your private key registered with Blockstack.
-
-Your personal data storage is built around this ID. Apps that want to access your data use your permission and identity to find it.
-
-You have to remember and keep your private key in a safe place like a password manager. If you lose a private key, _no one else, no person, no software, can help you get your identity back_.
-
-## Can Blockstack control my data or ID when I use it?
-
-No. When you're using a Blockstack client you control your data and ID with a
-private key. As long as no one gets access to your private key, no one can
-control your data or ID. When you use Blockstack, by design, your private keys
-are never sent to any remote servers.
-
-## Do Dapps uwork with a regular browser?
-
-Yes! Dapps run in the web browsers (Chrome, Safari, Internet Explorer, etc.) you know and love.
-
-## What is the Blockstack Browser?
-
-The Blockstack Browser is the Dapp users use to create and manage their identities and configure their data storage. The browser is also where users can go to discover and use apps using Blockstack.
-
-The Blockstack Browser also handles login requests from Dapps that allow their users to log in with Blockstack. When a user clicks a **Log In with Blockstack** button, they are redirected to the Blockstack Browser to approve the request before being logged into the app.
-
-
-## Are Blockstack applications usable today?
-
-Yes! Blockstack applications are as easy to use as normal Web applications, if
-not easier. Moreover, they are just as performant if not more so.
-
-If you install the [Blockstack
-Browser](https://github.com/blockstack/blockstack-browser), or use our
-[Web-hosted Blockstack Browser](https://browser.blockstack.org), you can get
-started with them right away.
diff --git a/_browser/.svn/pristine/d0/d085d6df138e87cfea31a57a1e732327fbe01244.svn-base b/_browser/.svn/pristine/d0/d085d6df138e87cfea31a57a1e732327fbe01244.svn-base
deleted file mode 100644
index 8d42ed23..00000000
Binary files a/_browser/.svn/pristine/d0/d085d6df138e87cfea31a57a1e732327fbe01244.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/d6/d6e6a8f19612c2353e5ff02ac49dc06762f7127c.svn-base b/_browser/.svn/pristine/d6/d6e6a8f19612c2353e5ff02ac49dc06762f7127c.svn-base
deleted file mode 100644
index 80ccff9a..00000000
Binary files a/_browser/.svn/pristine/d6/d6e6a8f19612c2353e5ff02ac49dc06762f7127c.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/db/db11f02ca2f4fd6473c082112db7fd86c19d2039.svn-base b/_browser/.svn/pristine/db/db11f02ca2f4fd6473c082112db7fd86c19d2039.svn-base
deleted file mode 100644
index 4db7a650..00000000
Binary files a/_browser/.svn/pristine/db/db11f02ca2f4fd6473c082112db7fd86c19d2039.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/eb/ebb5e5f52918709d42ea6cbba0df6b008039e281.svn-base b/_browser/.svn/pristine/eb/ebb5e5f52918709d42ea6cbba0df6b008039e281.svn-base
deleted file mode 100644
index d708342e..00000000
Binary files a/_browser/.svn/pristine/eb/ebb5e5f52918709d42ea6cbba0df6b008039e281.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/ec/ec3db3fa698c68b7eb55535729ca0bf5306d33ba.svn-base b/_browser/.svn/pristine/ec/ec3db3fa698c68b7eb55535729ca0bf5306d33ba.svn-base
deleted file mode 100644
index 8bada23b..00000000
Binary files a/_browser/.svn/pristine/ec/ec3db3fa698c68b7eb55535729ca0bf5306d33ba.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/f1/f110c7b263eda5b8f71f1426dd9829625a5b1b31.svn-base b/_browser/.svn/pristine/f1/f110c7b263eda5b8f71f1426dd9829625a5b1b31.svn-base
deleted file mode 100644
index 4b3d4a5f..00000000
Binary files a/_browser/.svn/pristine/f1/f110c7b263eda5b8f71f1426dd9829625a5b1b31.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/f2/f2da2a06b1ae6cece6cb9389f80dd5bb11cd7a98.svn-base b/_browser/.svn/pristine/f2/f2da2a06b1ae6cece6cb9389f80dd5bb11cd7a98.svn-base
deleted file mode 100644
index 5aa06112..00000000
Binary files a/_browser/.svn/pristine/f2/f2da2a06b1ae6cece6cb9389f80dd5bb11cd7a98.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/f7/f7d8196207101d3fd6bf9efa91cb074dcbea011d.svn-base b/_browser/.svn/pristine/f7/f7d8196207101d3fd6bf9efa91cb074dcbea011d.svn-base
deleted file mode 100644
index ddd6367f..00000000
Binary files a/_browser/.svn/pristine/f7/f7d8196207101d3fd6bf9efa91cb074dcbea011d.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/fe/feb47456df368ff71ac8c50b94702abec6bf2619.svn-base b/_browser/.svn/pristine/fe/feb47456df368ff71ac8c50b94702abec6bf2619.svn-base
deleted file mode 100644
index a3228716..00000000
Binary files a/_browser/.svn/pristine/fe/feb47456df368ff71ac8c50b94702abec6bf2619.svn-base and /dev/null differ
diff --git a/_browser/.svn/pristine/ff/ff4ec7f9dcc8b70af2d527b508b30c47a5386514.svn-base b/_browser/.svn/pristine/ff/ff4ec7f9dcc8b70af2d527b508b30c47a5386514.svn-base
deleted file mode 100644
index 992ef584..00000000
Binary files a/_browser/.svn/pristine/ff/ff4ec7f9dcc8b70af2d527b508b30c47a5386514.svn-base and /dev/null differ
diff --git a/_browser/.svn/wc.db b/_browser/.svn/wc.db
deleted file mode 100644
index 2e1f7fed..00000000
Binary files a/_browser/.svn/wc.db and /dev/null differ
diff --git a/_browser/.svn/wc.db-journal b/_browser/.svn/wc.db-journal
deleted file mode 100644
index e69de29b..00000000
diff --git a/_browser/README.md b/_browser/README.md
deleted file mode 100644
index 787392e1..00000000
--- a/_browser/README.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# Tutorials
-
-**Note: This data is being digested by blockstack.org. Do not change the formatting of this list unless you first make an adjustment to the code on blockstack.org.**
-
-### Multi-player Storage
-
-- urlSlug: multi-player-storage
-- image: /images/tutorials/multi-player-storage.png
-- description: Build a decentralized micro-blogging app using multi-player Gaia storage.
-
-### Managing Data with Gaia
-
-- urlSlug: managing-data-with-gaia
-- image: /images/tutorials/managing-data-with-gaia.png
-- description: This series will focus on teaching you to think like a Blockstack developer working with Gaia.
-
-### Blockstack Todo
-
-- urlSlug: todo-list
-- image: /images/tutorials/todo-list.png
-- description: Walk through creating a basic Todo application with Blockstack. Learn about Sign In flow and Gaia storage.
-
-### Hello Blockstack
-
-- urlSlug: hello-blockstack
-- image: /images/tutorials/hello-blockstack.jpg
-- description: Build a simple single-page JavaScript application that runs completely client-side without any servers.
diff --git a/_browser/blockstack_storage.md b/_browser/blockstack_storage.md
index f6163661..b4dd68cd 100644
--- a/_browser/blockstack_storage.md
+++ b/_browser/blockstack_storage.md
@@ -3,7 +3,7 @@ layout: learn
description: Learn how to implement Gaia in a DApp
permalink: /:collection/:path.html
---
-# Blockstack Storage Tutorial
+# Storage
{:.no_toc}
In this tutorial, you build a micro-blogging application using multi-player Gaia
@@ -623,7 +623,7 @@ process URL paths that contain the `.` (dot) character for example,
}
```
- **NOTE**: For `https` deployments, the default Blockstack Core API endpoint for name
+ **NOTE**: For `https` deployments, the default Stacks Node API endpoint for name
lookups should be changed to point to a core API served over `https`.
Otherwise, name lookups fail due to browsers blocking mixed content.
Refer to the [Blockstack.js
@@ -746,4 +746,4 @@ about Blockstack.
[Complete source code](https://github.com/yknl/publik)
-[Live demo](https://publik.test-blockstack.com)
+[Live demo](https://publik.test-blockstack.com)
\ No newline at end of file
diff --git a/_browser/browser-introduction.md b/_browser/browser-introduction.md
deleted file mode 100644
index e7783541..00000000
--- a/_browser/browser-introduction.md
+++ /dev/null
@@ -1,86 +0,0 @@
----
-layout: usenew
-description: Use a Blockstack ID with a DApp
-permalink: /:collection/:path.html
----
-# Introduction to the Blockstack Browser
-{:.no_toc}
-
-The Blockstack Browser gives users the ability to explore and use the
-decentralized applications (DApps). DApps are a new way to interact with the
-internet. DApps give users control of their data. Data about them personally,
-name, birthdate, phone number and data about what they do such as visiting a
-website or buying an item.
-
-* TOC
-{:toc}
-
-
-## Understand the Blockstack Browser
-
-Through the Blockstack Browser application you can create an identity. An identity
-represents you as you interact with others through DApps. The Blockstack
-Browser is itself, a simple DApp. It allows you to:
-
-* create one or more identities
-* send and receive bitcoin
-* manage the storage of your profile and application data
-* find and launch DApps
-
-There are two editions of the Blockstack Browser, the web edition is an
-application you access through your web browser by simply visiting the application's
-address in your computer's browser. You can also install the browser as a
-client application on your computer.
-
-If all you want to do is create, manage, and fund an identity and then interact
-with DApps, you can simply use the web edition. If you have concerns about net
-censorship, heightened security concerns, or want to develop a DApp yourself, you may
-want to download and install the browser's client edition.
-
-To use the web application to create an identity,
-
-## Using the Browser on public computers
-
-Before you use the web application, it is important to note that once you log
-into the application with the brower, your session does not expire until you
-choose **Settings > RESET BROWSER**. For this reason, you should be careful
-when using the browser on public computers.
-
-If you are in a library, for example, and log into the browser, simply
-closing the tab or even rebooting the computer does not log you out. Instead,
-you should be sure to choose **Settings > RESET BROWSER** before leaving the web
-application.
-
-For more informatin about your identity and the browser, see [Get and use a Blockstack ID](ids-introduction).
-
-## Overview of the browser functions
-
-The Blockstack Browser allows you to use the new internet. Toward this end, the Browser navigation has the following areas:
-
-![](images/navigation-top.png)
-
-
-
-
Item
-
Purpose
-
-
-
-
Home
-
Takes you to the initial page. This page contains a list of the available applications. You can also find available applications at the App.co site.
-
-
-
IDs
-
Allows you to establish the identity of your primary ID. You also go here to create additional, sub identities.
-
-
-
Wallet
-
Allows you to send and receive Bitcoin.
-
-
-
Settings
-
Configure settings for storage, change session password, reset the Browser, and more.
-
-
-
diff --git a/_browser/browser-nav.md b/_browser/browser-nav.md
deleted file mode 100644
index 8f08904e..00000000
--- a/_browser/browser-nav.md
+++ /dev/null
@@ -1,18 +0,0 @@
----
-layout: usenew
-description: Use a Blockstack ID with a DApp
-permalink: /:collection/:path.html
----
-
-
-On this page, you learn more about working with **IDs**, the **Wallet**, and **Settings**.
-
-## Working with IDS
-
-Blockstack allows you to create one free identity in the Blockstack
-_namespace_. A namespace a top-level category in the Blockstack Ecosystem. A
-namespace is similar to the domains you are familiar with from using the web,
-`google.com` is domain and so is the `gouvernement.fr` domain. An identity in
-the `.blockstack` namespace has the _`username`_`.id.blockstack` format.
-
-You can also purchase your own identity (`.id`) using bitcoin (BTC). A name's price depends on its length in characters and the current Bitcoin fees. For example, ranges such as .00831 and .001943 BTC 20-80 US dollars is not unusual.
diff --git a/_browser/faq_general.md b/_browser/faq_general.md
deleted file mode 100644
index fec9c436..00000000
--- a/_browser/faq_general.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-layout: usenew
-description: Use a Blockstack ID with a DApp
-permalink: /:collection/:path.html
----
-# Users Frequently Asked Questions (FAQ)
-{:.no_toc}
-
-This is a FAQ intended for users of decentralized applications. A comprehensive list of FAQs that touch on general, technical, and App Mining questions is [also available]({{site.baseurl}}/faqs/allFAQS.html).
-
-* TOC
-{:toc}
-
-{% for faq in site.data.theFAQs.faqs %}
- {% if faq.category == 'appusers' %}
-### {{ faq.question }}
-{{ faq.answer }}
- {% endif %}
-{% endfor %}
diff --git a/_browser/hello-blockstack.md b/_browser/hello-blockstack.md
index 5cea1e12..39517f2a 100644
--- a/_browser/hello-blockstack.md
+++ b/_browser/hello-blockstack.md
@@ -3,7 +3,7 @@ layout: learn
description: Simple Blockstack web App
permalink: /:collection/:path.html
---
-# Hello, Blockstack Tutorial
+# Hello, Blockstack
In this tutorial, you generate a simple application on Blockstack. The application
is a single-page application (SPA) that runs completely client-side. The
@@ -99,24 +99,24 @@ The initial application you create is a generic Javascript application you run
with a local express node. Before you continue, take a moment to examine the
scaffolding of this generic application structure. In the `/` (root) of the generated sample you have the following files:
-| File/folder | Description |
-|------------------|-----------------------------------|
-| `.gitignore` | Git configuration file. |
-| `package.json` | Specifies required packages. |
-| `cors` | Configuration for cross-domain origin support.|
-| `node_modules` | Package files installed by `npm`.|
-| `src` | Application source code.|
-| `public` | Starter web app code.|
+| File/folder | Description |
+| -------------- | ---------------------------------------------- |
+| `.gitignore` | Git configuration file. |
+| `package.json` | Specifies required packages. |
+| `cors` | Configuration for cross-domain origin support. |
+| `node_modules` | Package files installed by `npm`. |
+| `src` | Application source code. |
+| `public` | Starter web app code. |
In the `public` folder you find these files:
-| File | Description |
-|------------------|-----------------------------------|
-| `favicon.ico` | Web app site icon. |
-| `index.html` | Single page. |
-| `manifest.json` | Tells the browser about the application and how it should behave.|
-| `white-logo.svg` | Configures crawling and indexing. |
+| File | Description |
+| ---------------- | ----------------------------------------------------------------- |
+| `favicon.ico` | Web app site icon. |
+| `index.html` | Single page. |
+| `manifest.json` | Tells the browser about the application and how it should behave. |
+| `white-logo.svg` | Configures crawling and indexing. |
## Start the server and view the application
@@ -132,8 +132,6 @@ and open your browser 'http://localhost:5000'. From the root of your new applic
The first time you run it, your system may prompt you to accept incoming connections.
- ![Network Connection](images/network-connections.gif)
-
2. Choose **Allow**.
The system opens your browser to `http://127.0.0.1:3000`.
@@ -142,15 +140,15 @@ and open your browser 'http://localhost:5000'. From the root of your new applic
![](images/initial-app.png)
-4. Choose **Sign In with Blockstack**.
+3. Choose **Sign In with Blockstack**.
The application detects whether the user has the Blockstack client edition installed or
not. This is done automatically by the Blockstack API, more about this later.
What the browser displays depends on the users' current state.
- | Using web app | Has client edition installed |
- |------------------|-----------------------------------|
- | ![](images/login-choice.png) | ![](images/login.gif) |
+ | Using web app | Has client edition installed |
+ | ---------------------------- | ---------------------------- |
+ | ![](images/login-choice.png) | ![](images/login.gif) |
If the user logged into the Blockstack Browser but not reset it, the user can
simply use the exiting identity.
@@ -160,7 +158,7 @@ and open your browser 'http://localhost:5000'. From the root of your new applic
If the user chooses **Deny**, the Blockstack Browser displays its
**Home** page but the user is not logged into the sample application.
-5. Leave your new application running and move onto the next section.
+4. Leave your new application running and move onto the next section.
## Understand the generated application code
@@ -293,4 +291,4 @@ Keep it as is or fill it in with new information that describes your app.
### Congratulations you are all done!
-You're done! You just built your first Blockstack app and shipped the code. You're well on your way to becoming a Blockstack app legend. If you want to save your code, you can upload it to GitHub or similar code repository.
+You're done! You just built your first Blockstack app and shipped the code. You're well on your way to becoming a Blockstack app legend. If you want to save your code, you can upload it to GitHub or similar code repository.
\ No newline at end of file
diff --git a/_browser/ids-introduction.md b/_browser/ids-introduction.md
deleted file mode 100644
index d08aa12d..00000000
--- a/_browser/ids-introduction.md
+++ /dev/null
@@ -1,220 +0,0 @@
----
-layout: usenew
-description: Use a Blockstack ID with a DApp
-permalink: /:collection/:path.html
----
-# Get and use a Blockstack ID
-{:.no_toc}
-
-Through the Blockstack Browser you can create an identity. You use this single identity to log into applications that allow you to **Login with Blockstack**. Your identity is also your
-point of contact as you interact with others through DApps. Others may be
-individual users or companies or software. Unless you allow it, none of these
-others have access to anything other than your identity, for example
-`meepers.id.blockstack`. Typically, others must ask to learn more about you,
-and you can choose to share – or not.
-
-This document explains the free Blockstack ID, though there are others you can get for fee. You learn how to
-create a Blockstack ID, how to sign in with an ID, and how to delete data associated with an ID. This page contains the following sections:
-
-* TOC
-{:toc}
-
-## Understand how identities function in the Blockstack Ecosystem
-
-In this section, you learn about identity so you can use it securely.
-
-### Why is an identity not an account
-
-In today's Internet, an account you create to use an applications stays with the company providing that app. This company keeps data you enter about yourself and collects data about how you use their application. This data is valuable and companies use your data to attract advertises. If you stop using that application and close your account, the company retains your data because even old data has value.
-
-Companies combine data from different applications you visit to build a profile of you. This profile lets them target you for particular information and craft your experience of it. For example, an advertiser can determine if you might be interested in a product and _how much they can charge you for it_. In return for allowing this subtle messaging to you and lack of privacy, you receive a free application or service.
-
-A decentralized identity is a new way to use applications without surrendering your data. A, _decentralized identity_ is a combination of username and key. The data associated with that identity stays with it, this means big companies, their applications or central authorities cannot build data profiles about you. You remain private.
-
-A Blockstack ID is a decentralized identity. You use this single identity to log into decentralized applications (DApps) that present the **Login with Blockstack** button. A single identity gives you access to 100s of applications. When you log into a DApp, you create data but that data is encrypted and stored with your identity. When you log out of an application, the application no longer can read that data so it can't make use of it to build up a profile of you or sell your data to other companies. Your privacy is preserved.
-
-### How do you get a Blockstack identity
-
-Think of the ID as a form of identification, like a drivers license. Like drivers' licenses, each identity is unique, but this license identifies you on the virtual internet highway. An identity is created through a registrar of which there are many. When you create a Blockstack ID, your registrar records the identity creation on the Stacks blockchain.
-
-The Blockstack Browser allows new users to create free IDs. These free IDs have included the word `blockstack` in the ID, like this `meepers.id.blockstack`. The additional `blockstack` portion of the name is called a _namespace_. It just means all the names belong to a particular entity. You don't have to use a free `id.blockstack` identity.
-
-This first Blockstack ID you create is a _primary ID_. Once you create a primary identity, you can add other, sub-identities to it. Sub-identities can have the `id.blockstack` or the `.id` format. You might created sub-identities for the same reason you have a work and home email.
-
-If you want a primary identity without the `blockstack` namespace in it, you can buy one. An example of purchased ID is the `larry.id` ID. The `.id` designation is required, the `larry` portion is a unique string.
-
-### What is a key?
-
-Blockstack IDs have keys. These key unlock your identity like opening the door to a private
-home. You should keep your ID secret and in a safe place. Blocktack creates your identity key for you. There are two pieces of important information associated with your key:
-
-* The key itself also called the _magic recovery key_ which is a sequence of words `applied binge crisp pictorial fiery dancing agreeable frogs light finish ping apple`
-* The _secret recovery code_ an encrypted string, for example, `36mWivFdy0YPH2z31EflpQz/Y0UMrOrJ++lH=0EI7c3mop2JuRBm5W1P0BwXxSTazJsUjOAmC55rFUWINqDqGccLio0iwzGclAhaHGZQ5M52`
-
-When you create Blockstack ID, Blockstack sends you an email with a recovery code you can use to view your key. You receive the recovery code only once. When you get this email, You should
-**View Secret Recovery Key** immediately and save to a secure location such as a
-password manager.
-
-
-
-
When Blockstack registers your human-readable ID and the recovery key. _You_ must
-record the:
-
-
-
secret recovery key
-
magic recovery code (in the order the words appear)
-
initial password (the password lasts until you RESET the browser)
-
-
Blockstack does not store the key or recover code, so it can't give them to you later if you lose them.
-
-
-### Where can you use a Blockstack ID
-
-You can use your Blockstack ID with every DApp in the Blockstack Ecosystem. To
-create an ID, you use a DApp called the Blockstack Browser. Any DApp data you
-create is linked to this ID.
-
-For example, if you add a picture to a DApp, the picture appears in the DApp, but
-the picture's bits and bytes are stored in your personal storage. When you log
-into another DApp with your ID, that application can ask for access to your
-storage.
-
-Visit the App.co, the Universal DApp Store to find apps you can use with your Blockstack ID.
-
-## Create an initial Blockstack ID
-
-{% include create_id.md %}
-
-## Sign in with an existing a Blockstack ID
-
-When you return to the Blockstack Browser, the browser prompts you to create a
-new Blockstack ID or signing in with an existing Blockstack ID. When you do this the system provides you with this prompt:
-
-![](images/existing-id.png)
-
-From this dialog you can choose between these two methods:
-
-* Method 1: Supply the secret recovery key which is a sequence of words (`applied binge ...`)
-* Method 2: Supply the magic recovery code (`36mWivFdy0YPH2z31E...`) and the password you used when you created the identity
-
-If you loose either the magic recovery code or the password you provided when you
-_initially_ created your identity, you can no longer use method 1 to sign into
-your identity. If you lose the secret recovery key, you can no longer use method 2.
-Once you no longer have access to either method, your identity is estranged and
-not accessible by anyone, not even Blockstack.
-
-### Sign in with a secret recovery key
-
-1. Open the [Blockstack web application in your browser](https://browser.blockstack.org/sign-up?redirect=%2F).
-2. Choose **Sign in with an existing ID**.
-
- The system displays a dialog where you can enter your recovery code or a
- recovery key.
-
-3. Enter the recovery key.
-
- The recovery key is a sequence of words.
-
- ![](images/recovery-key.png)
-
-4. Press **Next**.
-
- The system prompts you for an email address. This email can be one you
- entered previously or an entirely new one. Blockstack doesn't store this
- address; it is used during your current Blockstack Browser interaction to communicate
- important information with you.
-
-5. Enter an email and press **Next**.
-
- The system prompts you for a password and its confirmation. This password
- can be one you entered previously or an entirely new one. Write this password
- down. You can use the password during your current Blockstack Browser
- interaction to reveal your keychain or change your password. Blockstack does
- not store this information past the session.
-
-6. Enter a password and press **Next**.
-
- The system welcomes you back.
-
- ![](images/welcome-back.png)
-
- At this point, you can go onto work with DApps or you can review your recovery key.
-
-### Sign in with a magic recovery code and original password
-
-1. Open the [Blockstack web application in your browser](https://browser.blockstack.org/sign-up?redirect=%2F).
-2. Choose **Sign in with an existing ID**.
-
- The system displays a dialog where you can enter your recovery code or a
- recovery key.
-
-3. Enter your magic recovery code.
-
- The recovery code is an encrypted string.
-
- ![](images/recovery-code.png)
-
-4. Press **Next**.
-
- The system prompts you for an email address. This email can be one you
- entered previously or an entirely new one. Blockstack doesn't store this
- address; it is used during your current Blockstack Browser interaction to
- communicate important information with you.
-
-5. Enter an email and press **Next**.
-
- The system prompts you for a password. **This must be the password entered
- when you first created your identity.** If you have forgotten this password,
- Blockstack cannot provide it to you. Instead, you must switch to using your
- recovery key rather than your code to sign into your identity.
-
-6. Enter your origin password and press **Next**.
-
- The system welcomes you back.
-
- ![](images/welcome-back.png)
-
- At this point, you can go work with DApps or you can review your recovery key.
-
-## Can you delete a Blockstack ID?
-
-An ID is recorded on the Blockstack's blockchain; For this reason, once you create an identity, you can’t delete it. You can abandon or simply stop using your ID. Estranged identities like this can’t be used by another person or organization because only you have access to the ID's 12 word recovery phrase.
-
-However, you **can delete** the data associated with your ID. Storage deletion is *only possible* if you used that ID with the default Blockstack Gaia storage hub. If your ID used your own or another Gaia storage hub, Blockstack cannot delete the data, instead, you should contact your storage hub provider for that service.
-
-Do the following to delete the default storage provided with your ID.
-
-1. Log into the Blockstack Browser.
-2. Choose Identity > More page.
-
- This page lists your **Default ID** and any other IDs associated with it. Each ID has a Gaia storage location associated with it. You may just have one ID, that is typical.
-
-3. Make sure you are using the default storage hub.
-
- If you are using the default hub, the page looks like this:
-
- ![](images/defaultstorage.png)
-
-4. Visit the Identity page on your browser.
-5. Enter `Delete Me` and the date you made the request for the **Full Name** and the **Short Bio**.
-
- ![](images/deleteme.png)
-
-6. Press **Save**.
-7. Email the list of IDs to support@blockstack.com, the content of your email should contain details similar to the following:
-
- ```txt
- Please delete the Gaia storage associated with the following ids:
- - user1.id.blockstack
- - user2.id
- - user3.id.blockstack
- All of these IDs used the Gaia default storage.
- ```
-
- The support team will respond with an email confirming your data was deleted.
-
-8. To confirm your data was deleted, navigate to the Blockstack Explorer and enter your ID into the search bar.
-
- You should see something similar to the following:
-
- ![](images/deletedprofile.png)
\ No newline at end of file
diff --git a/_browser/images/blockstack-bar.png b/_browser/images/blockstack-bar.png
deleted file mode 100644
index 1d95fee1..00000000
Binary files a/_browser/images/blockstack-bar.png and /dev/null differ
diff --git a/_browser/images/browser-on-mac-1.png b/_browser/images/browser-on-mac-1.png
deleted file mode 100644
index 6ff75ed5..00000000
Binary files a/_browser/images/browser-on-mac-1.png and /dev/null differ
diff --git a/_browser/images/browser-on-mac.png b/_browser/images/browser-on-mac.png
deleted file mode 100644
index 5aa06112..00000000
Binary files a/_browser/images/browser-on-mac.png and /dev/null differ
diff --git a/_browser/images/browser-uninstall.png b/_browser/images/browser-uninstall.png
deleted file mode 100644
index 4b3d4a5f..00000000
Binary files a/_browser/images/browser-uninstall.png and /dev/null differ
diff --git a/_browser/images/create-id-0.png b/_browser/images/create-id-0.png
deleted file mode 100644
index 5fe2c070..00000000
Binary files a/_browser/images/create-id-0.png and /dev/null differ
diff --git a/_browser/images/create-id-1.png b/_browser/images/create-id-1.png
deleted file mode 100644
index 1c02a64c..00000000
Binary files a/_browser/images/create-id-1.png and /dev/null differ
diff --git a/_browser/images/create-id-2.png b/_browser/images/create-id-2.png
deleted file mode 100644
index cae3aa3e..00000000
Binary files a/_browser/images/create-id-2.png and /dev/null differ
diff --git a/_browser/images/create-id-3.png b/_browser/images/create-id-3.png
deleted file mode 100644
index de061055..00000000
Binary files a/_browser/images/create-id-3.png and /dev/null differ
diff --git a/_browser/images/create-id-4.png b/_browser/images/create-id-4.png
deleted file mode 100644
index 5a855ed4..00000000
Binary files a/_browser/images/create-id-4.png and /dev/null differ
diff --git a/_browser/images/create-id-5.png b/_browser/images/create-id-5.png
deleted file mode 100644
index bf5f198c..00000000
Binary files a/_browser/images/create-id-5.png and /dev/null differ
diff --git a/_browser/images/defaultstorage.png b/_browser/images/defaultstorage.png
deleted file mode 100644
index c7633cfd..00000000
Binary files a/_browser/images/defaultstorage.png and /dev/null differ
diff --git a/_browser/images/deletedprofile.png b/_browser/images/deletedprofile.png
deleted file mode 100644
index b1069f73..00000000
Binary files a/_browser/images/deletedprofile.png and /dev/null differ
diff --git a/_browser/images/deleteme.png b/_browser/images/deleteme.png
deleted file mode 100644
index 7eefc4c9..00000000
Binary files a/_browser/images/deleteme.png and /dev/null differ
diff --git a/_browser/images/display-complete.png b/_browser/images/display-complete.png
deleted file mode 100644
index 097ae3b0..00000000
Binary files a/_browser/images/display-complete.png and /dev/null differ
diff --git a/_browser/images/dmg-notice.png b/_browser/images/dmg-notice.png
deleted file mode 100644
index f0eb285c..00000000
Binary files a/_browser/images/dmg-notice.png and /dev/null differ
diff --git a/_browser/images/eject-blockstack.png b/_browser/images/eject-blockstack.png
deleted file mode 100644
index 4db7a650..00000000
Binary files a/_browser/images/eject-blockstack.png and /dev/null differ
diff --git a/_browser/images/existing-id.png b/_browser/images/existing-id.png
deleted file mode 100644
index b111aae1..00000000
Binary files a/_browser/images/existing-id.png and /dev/null differ
diff --git a/_browser/images/hello-authd.png b/_browser/images/hello-authd.png
deleted file mode 100644
index e0f65d1b..00000000
Binary files a/_browser/images/hello-authd.png and /dev/null differ
diff --git a/_browser/images/hw-loggedin.png b/_browser/images/hw-loggedin.png
deleted file mode 100644
index 829f7c1f..00000000
Binary files a/_browser/images/hw-loggedin.png and /dev/null differ
diff --git a/_browser/images/initial-app.png b/_browser/images/initial-app.png
deleted file mode 100644
index f2c689fe..00000000
Binary files a/_browser/images/initial-app.png and /dev/null differ
diff --git a/_browser/images/login-choice.png b/_browser/images/login-choice.png
deleted file mode 100644
index 00bc6af3..00000000
Binary files a/_browser/images/login-choice.png and /dev/null differ
diff --git a/_browser/images/login-no-auth.png b/_browser/images/login-no-auth.png
deleted file mode 100644
index 8bada23b..00000000
Binary files a/_browser/images/login-no-auth.png and /dev/null differ
diff --git a/_browser/images/login.gif b/_browser/images/login.gif
deleted file mode 100644
index 9aea9ad7..00000000
Binary files a/_browser/images/login.gif and /dev/null differ
diff --git a/_browser/images/login.png b/_browser/images/login.png
deleted file mode 100644
index 80ccff9a..00000000
Binary files a/_browser/images/login.png and /dev/null differ
diff --git a/_browser/images/make-a-list.png b/_browser/images/make-a-list.png
deleted file mode 100644
index 8d42ed23..00000000
Binary files a/_browser/images/make-a-list.png and /dev/null differ
diff --git a/_browser/images/multi-player-storage-status.png b/_browser/images/multi-player-storage-status.png
deleted file mode 100644
index fd962ff9..00000000
Binary files a/_browser/images/multi-player-storage-status.png and /dev/null differ
diff --git a/_browser/images/multiple-lists.png b/_browser/images/multiple-lists.png
deleted file mode 100644
index a3228716..00000000
Binary files a/_browser/images/multiple-lists.png and /dev/null differ
diff --git a/_browser/images/navigation-top.png b/_browser/images/navigation-top.png
deleted file mode 100644
index ed16ac0c..00000000
Binary files a/_browser/images/navigation-top.png and /dev/null differ
diff --git a/_browser/images/network-connections.gif b/_browser/images/network-connections.gif
deleted file mode 100644
index 1e7a2fb2..00000000
Binary files a/_browser/images/network-connections.gif and /dev/null differ
diff --git a/_browser/images/new-prompt.gif b/_browser/images/new-prompt.gif
deleted file mode 100644
index aa136ba1..00000000
Binary files a/_browser/images/new-prompt.gif and /dev/null differ
diff --git a/_browser/images/on-your-mind.gif b/_browser/images/on-your-mind.gif
deleted file mode 100644
index d080b559..00000000
Binary files a/_browser/images/on-your-mind.gif and /dev/null differ
diff --git a/_browser/images/osx-dmg.png b/_browser/images/osx-dmg.png
deleted file mode 100644
index 019c67db..00000000
Binary files a/_browser/images/osx-dmg.png and /dev/null differ
diff --git a/_browser/images/publish-data-perm.png b/_browser/images/publish-data-perm.png
deleted file mode 100644
index cd6b3b6a..00000000
Binary files a/_browser/images/publish-data-perm.png and /dev/null differ
diff --git a/_browser/images/quit-blockstack.png b/_browser/images/quit-blockstack.png
deleted file mode 100644
index 5352b913..00000000
Binary files a/_browser/images/quit-blockstack.png and /dev/null differ
diff --git a/_browser/images/recovery-code.png b/_browser/images/recovery-code.png
deleted file mode 100644
index 33cba462..00000000
Binary files a/_browser/images/recovery-code.png and /dev/null differ
diff --git a/_browser/images/recovery-key.png b/_browser/images/recovery-key.png
deleted file mode 100644
index 6e949204..00000000
Binary files a/_browser/images/recovery-key.png and /dev/null differ
diff --git a/_browser/images/sample-code.png b/_browser/images/sample-code.png
deleted file mode 100644
index 9fef9de2..00000000
Binary files a/_browser/images/sample-code.png and /dev/null differ
diff --git a/_browser/images/saving-status.png b/_browser/images/saving-status.png
deleted file mode 100644
index ddd6367f..00000000
Binary files a/_browser/images/saving-status.png and /dev/null differ
diff --git a/_browser/images/secret-key-recovery.png b/_browser/images/secret-key-recovery.png
deleted file mode 100644
index 1a9d771e..00000000
Binary files a/_browser/images/secret-key-recovery.png and /dev/null differ
diff --git a/_browser/images/status-in.gif b/_browser/images/status-in.gif
deleted file mode 100644
index ab31536d..00000000
Binary files a/_browser/images/status-in.gif and /dev/null differ
diff --git a/_browser/images/todo-app.png b/_browser/images/todo-app.png
deleted file mode 100644
index f8a97516..00000000
Binary files a/_browser/images/todo-app.png and /dev/null differ
diff --git a/_browser/images/todo-sign-in.png b/_browser/images/todo-sign-in.png
deleted file mode 100644
index 1eba83bf..00000000
Binary files a/_browser/images/todo-sign-in.png and /dev/null differ
diff --git a/_browser/images/ubuntu-browser.png b/_browser/images/ubuntu-browser.png
deleted file mode 100644
index 992ef584..00000000
Binary files a/_browser/images/ubuntu-browser.png and /dev/null differ
diff --git a/_browser/images/welcome-back.png b/_browser/images/welcome-back.png
deleted file mode 100644
index 38054d90..00000000
Binary files a/_browser/images/welcome-back.png and /dev/null differ
diff --git a/_browser/images/windows-apps-features.png b/_browser/images/windows-apps-features.png
deleted file mode 100644
index d708342e..00000000
Binary files a/_browser/images/windows-apps-features.png and /dev/null differ
diff --git a/_browser/images/windows-browser.png b/_browser/images/windows-browser.png
deleted file mode 100644
index d2c2dda2..00000000
Binary files a/_browser/images/windows-browser.png and /dev/null differ
diff --git a/_browser/images/windows-installer.png b/_browser/images/windows-installer.png
deleted file mode 100644
index 4dca5dd1..00000000
Binary files a/_browser/images/windows-installer.png and /dev/null differ
diff --git a/_browser/images/windows-security.png b/_browser/images/windows-security.png
deleted file mode 100644
index e653b034..00000000
Binary files a/_browser/images/windows-security.png and /dev/null differ
diff --git a/_browser/images/windows-start.png b/_browser/images/windows-start.png
deleted file mode 100644
index a5f0c27f..00000000
Binary files a/_browser/images/windows-start.png and /dev/null differ
diff --git a/_browser/local_browser.md b/_browser/local_browser.md
deleted file mode 100644
index 687ac3a2..00000000
--- a/_browser/local_browser.md
+++ /dev/null
@@ -1,253 +0,0 @@
----
-layout: usenew
-description: Use a Blockstack ID with a DApp
-permalink: /:collection/:path.html
----
-# Install or uninstall the local browser
-{:.no_toc}
-
-If all you want to do is create, manage, and fund an identity and then interact
-with DApps, you should [use the web edition](browser-introduction.html). If you
-have concerns about net censorship, heightened security concerns, or want to
-develop a DApp yourself, you may want to download and install the browser's
-client edition; though it is not required. This page explains how to install or
-uninstall the browser client on a workstation.
-
-* TOC
-{:toc}
-
-## About the client install
-
-Remember, for most users the Blockstack Browser web application should
-suffice. You only need to install the client if you have additional, advanced
-concerns about Internet or identity. Though not required, some DApp developrs
-may find it useful to install the client edition.
-
-The Blockstack Browser installer is a _multiple-context_ installer. If you
-run it as a user, the installation is avalable only for that user. If you
-install as administrator, the installation installs for all users. To find an
-installer for your operating system, visit the browser installation page.
-
-### On Mac
-
-Installation requires that you have macOS High Sierra 10.12 or higher. Do the following to install:
-
-1. Download the OSX installer from the browser installation page.
-2. Double-click the downloaded DMG file to launch the installer.
-
- ![](images/ubuntu-browser.png)
-
-3. Drag the Blockstack.app to the `Applications` folder.
-4. Double-click the Blockstack.app to launch it.
-
- The system displays a notice about opening the file:
-
- ![](images/dmg-notice.png)
-
-5. Choose **Open**.
-
- The system opens your default browser with the Blockstack Browser
- application, running from your machine (localhost). You'll also see the
- Blockstack icon in your machine's
-
- ![](images/browser-on-mac.png)
-
- If you have loaded an identity already via the Blockstack web application,
- you are already logged into the local application:
-
- ![](images/browser-on-mac-1.png)
-
-
-### On Windows
-
-Installation requires that you have Windows 10 or higher. Do the following to
-install:
-
-1. Download the Windows installer from from the browser installation page.
-2. Double-click the installer package to launch it.
-
- ![](images/windows-installer.png)
-
-3. Open the Wiindows **Start** menu and click on the recently added **Blockstack Browser**.
-
- ![](images/windows-start.png)
-
- The system displays a Windows Security Alert.
-
- ![](images/windows-security.png)
-
-4. Choose to **Allow access**.
-
- The system opens in the Blockstack Browser application.
-
- ![](images/windows-browser.png)
-
-
-### On Linux
-
-The Blockstack installation on Linux requires Docker. Before installing
-Blockstack, install the version of Docker appropriate for your operating system.
-
->**Note**: The Blockstack script used in this procedure runs `docker` commands. Depending on how you installed and configure Dockered on your system, it may or may not be necessary to have `root` or `sudo` privileges. For this reason, the commands below show the use of `sudo` when interacting with the script or the `docker` executable. If your installation allows running Docker with lower privileges, you can omit it.
-
-
-1. Download the Linux installer from from the browser installation page.
-
- This downloads a `Blockstack-for-Linux-v0.30.0.sh` script to your local drive.
-
-2. Open a terminal and navigate to the directory containing the downloaded script.
-
- When the script downloads, it is not executable.
-
-3. Set the executable bit on the file.
-
- ```bash
- $ chmod u+x Blockstack-for-Linux-v0.309.0.0.sh
- ```
-
-4. Enter the command without any arguments to see the available subcommands.
-
- ```bash
- $ sudo ./Blockstack-for-Linux-v0.309.0.0.sh
- blockstack docker launcher commands:
- Install-protocol-handler -> install a protocol handler for blockstack:// links
- ...
- ```
-
-5. Use the script to `pull` the Blockstack Docker images you need.
-
-
- ```bash
- $ sudo ./Blockstack-for-Linux-v0.309.0.0.sh pull
- ```
-
- Depending on your network speed, this can take some time.
-
-7. Use the `docker image ls` command to confirm you have the image.
-
- ```bash
- $ sudo docker image Is
- REPOSITORY TAG IMAGE ID CREATED
- quay.io/blockstack/blockstack-browser v0.30.0 ad05fd844f59 2 days ago
- ```
-
-8. Install the protocol handler
-
- ```bash
- $ sudo ./Blockstack-for-Linux-vO.30.0.sh install-protocol-handler
- Registering protocol handler
- ```
-
-9. Start the Blockstack containers.
-
- ```bash
- $ sudo ./Blockstack-for-Linux-vO.30.0.sh start
- c3092592e59abe3559fdb49d070a7aa5e99165c7d9f2flla20ecaf4e0dfc2f46
- cd92f61ae473d54398da987f5023f5462b29c03f08584ebb3c9fIbb4cd790c69
- Registering protocol handler
- ```
-
- The system launches the Blockstack Browser application for you.
-
- ![](images/ubuntu-browser.png)
-
-Until you stop the Blockstack containers, the application will continue to run
-on your system. To display the status of the Blockstack containers, you can use
-the `docker container ls` command.
-
-{% raw %}
-```bash
-$ sudo docker container ls --format '{{.ID}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}\t{{.Names}}'
-```
-{% endraw %}
-
-Use `./Blockstack-for-Linux-vO.30.0.sh stop` to stop the Blockstack Browser and its containers.
-
-
-## Uninstall the browser
-
-If you installed the browser using an installer, follow the instructions for
-your operating system.
-
-### On Mac
-
-1. Quit the Blockstack application if it is running.
-
- ![](images/quit-blockstack.png)
-
-2. Check if you have a Blockstack device and eject it if you do.
-
- ![](images/eject-blockstack.png)
-
-3. Use the Finder to open the **Applications** folder.
-4. Locate the Blockstack application.
-5. Open your `Applications` folder and locate the **Blockstack.app**.
-6. Drag the appliation to the trash.
-7. Delete the `/Users/USERNAME/Library/Application Support/Blockstack` folder.
-
- From the command line:
-
- ```bash
- $ rm -r /Users/meepers/Library/Application\ Support/Blockstack
- ```
-
-### On Windows
-
-1. Open the **Start** menu.
-2. Click **Settings > System**.
-3. Open for the **Apps & features** item.
-
- ![](images/eject-blockstack.png)
-
-4. Locate the **Blockstack Browser** and choose **Uninstall**.
-
- ![](images/browser-uninstall.png)
-
-
-### On Linux
-
-Your Blockstack instalaltion relies on Docker containers and their associated
-images. It also includes a supporting protocol handler you must remove. If you
-installed Docker so that you can run Blockstack, you can uninstall Docker as well,
-but that is not explained here.
-
-Do the following to uninstall Blockstack:
-
-1. Stop and remove the Docker containers if they are running.
-
- ```bash
- $ sudo ./Blockstack-for-Linux-vO.30.0.sh stop
- stopping the running blockstack-browser containers
- 69a686799d4f
- 56fc6189ff97
- 69a686799d4f
- 56fc6189ff97
- ```
-
-2. Remove the associated Blockstack images.
-
- ```bash
- $ sudo docker image ls
- REPOSITORY TAG IMAGE ID CREATED
- quay.io/blockstack/blockstack-browser v0.30.0 ad05fd844f59 3 days ago
- $ sudo docker image rm ad05fd844f59
- Untagged : quay.io/blockstack/blockstack- browser :vO.30.0
- Untagged: quay.io/blockstack/blockstack-browser@sha256:b20c9514c56b99398fd4946af39e7537b807e85694943ac3b8807dlb3625833b
- Deleted: Sha256:ad05fd844f5948blee06a0a09228df946478393c0a7588cbc65dlb8817f5b34e
- Deleted: Sha256:7c3d0043f2ba01cf285f3fe09701b086c349b6380c2e42f25b31ac65c6626ec8
- Deleted: sha256:54ea2aa7d7d000e7483f299eeca9e5466fa86231f4cd4cld3c3096d97e61c5df
- Deleted: sha256:38e61054355adefc3c2de031462114a9946cfc0e44444a38a27d0f115aba0da2
- ....
- ```
-
-3. Use the script to remove the protocol handler
-
- ```bash
- $ sudo ./Blockstack-for-Linux-vO.30.0.sh remove-protocol-handler
- ```
-
-4. Delete the script.
-
- ```bash
- $ rm Blockstack-for-Linux-vO.30.0.sh
- ```
diff --git a/_browser/purchase-id.md b/_browser/purchase-id.md
deleted file mode 100644
index 671c0064..00000000
--- a/_browser/purchase-id.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-layout: usenew
-description: Use a Blockstack ID with a DApp
-permalink: /:collection/:path.html
----
-# Purchase your own domain ID
-
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas faucibus
-cursus purus, fermentum consequat nisl consequat vel.In non posuere velit.
-Pellentesque rutrum molestie arcu ac rhoncus. Ut id pretium ligula. Mauris vel
-quam ac nisl fringilla tincidunt.
-
-
-Suspendisse cursus venenatis ligula a porta. Vestibulum
-ultricies elit eget leo dapibus, nec pulvinar risus porttitor. Integer vitae
-lectus at tellus consectetur sollicitudin. Ut cursus finibus feugiat. Sed purus
-ipsum, viverra congue velit vel, finibus vestibulum orci. Aliquam vitae vehicula
-nisl. Phasellus semper aliquet imperdiet. Vivamus feugiat leo quis metus
-facilisis congue. Nullam vel lectus sit amet enim aliquet sagittis vitae euismod
-risus.
-
-Suspendisse ipsum turpis, malesuada sit amet varius eget, auctor vitae lectus.
-Maecenas sit amet tellus metus. Sed in condimentum mi. Nulla ac tincidunt leo.
-Suspendisse lectus elit, facilisis non mollis eu, rhoncus vel augue. Ut tempus
-vel felis sit amet viverra. Aenean eu congue orci. Morbi massa mauris,
-
-ullamcorper ac odio nec, mattis auctor turpis. Sed rhoncus viverra elit. In hac
-habitasse platea dictumst. Vivamus eget mauris nec odio fringilla facilisis.
-Cras id ligula at eros cursus varius. Quisque semper nulla ut lobortis
-consequat. Aliquam hendrerit a neque id tempor. Sed porta id ligula in iaculis.
diff --git a/_browser/secureref.md b/_browser/secureref.md
deleted file mode 100644
index 50bea1e2..00000000
--- a/_browser/secureref.md
+++ /dev/null
@@ -1,8 +0,0 @@
----
-layout: usenew
-description: Use a Blockstack ID with a DApp
-permalink: /:collection/:path.html
----
-# Phrase and Key Security
-
-{% include keyphrase.md %}
diff --git a/_browser/storage-provider.md b/_browser/storage-provider.md
deleted file mode 100644
index 600a685f..00000000
--- a/_browser/storage-provider.md
+++ /dev/null
@@ -1,52 +0,0 @@
----
-layout: usenew
-description: Use a Blockstack ID with a DApp
-permalink: /:collection/:path.html
----
-# How you control your data
-
-When you use a Blockstack decentralized application (DApp), the data that you
-enter into that application, photos, documents, and more is something you own
-and control. Traditional applications such as Instagram or PayPal store your
-data _on their corporate servers_.
-
-Blockstack DApps do not allow applications to store your data on the
-application's corporate servers. Instead, you store your data with a _storage
-provider_ you choose. A Gaia hub provider gives you personal storage for your
-application data.
-
-If you want to walk away from a particular DApp, there’s no need even to export
-your data. You simply stop using the DApp and it no longer can read or modify
-your data. And if you want to start using a different DApp with the same data,
-you can.
-
-## Understand Gaia hub providers
-
-The Blockstack Ecosystem provides a technology for data storage called, Gaia.
-Gaia is _storage hub_ technology for storing application data. A storage
-provider is simply an organization that implemented Gaia and is providing
-storage hubs for users. Any organization or person can create a Gaia storage
-system and become a Gaia hub provider.
-
-These providers host data in one or more existing storage systems of their
-choice. These storage systems are typically cloud storage systems such as
-Amazon, Dropbox, iCloud or Azure to name a few.
-
-Users that create an identity in the Blockstack Browser are given a choice of
-which Gaia hub provider to use. Blockstack itself runs a Gaia hub and acts
-as a hub provider. The default choice is the Blockstack-run Gaia hub.
-
-Every provider will store your data at a particular address or URL. These
-addresses look similar to any address you put in your web browser. When you log
-into a DApp, you are giving that the application the ability to save
-data to the URL on your behalf.
-
-## Current limitations of data storage
-
-The following are limitations of the current system.
-
-* You cannot move your storage from one provider to another.
-* You cannot store your data on your own computer.
-
-Blockstack is always seeking to expand Gaia's capabilities. These limitations
-will disappear as they are overcome by new Gaia features.
diff --git a/_browser/terms.md b/_browser/terms.md
deleted file mode 100644
index cd6facf0..00000000
--- a/_browser/terms.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-layout: usenew
-description: Use a Blockstack ID with a DApp
-permalink: /:collection/:path.html
----
-# Glossary
-
-
-{% for member in site.data.glossary %}
-
-
{{ member.Term }}
-
{{ member.Definition }}
-
-{% endfor %}
-
diff --git a/_browser/todo-list.md b/_browser/todo-list.md
index c4d9d370..94cd7f32 100644
--- a/_browser/todo-list.md
+++ b/_browser/todo-list.md
@@ -3,7 +3,7 @@ layout: learn
description: Single-page application with Blockstack
permalink: /:collection/:path.html
---
-# Todo List Application Tutorial
+# Todo List
{:.no_toc}
In this tutorial, you build the code for and run a single-page application (SPA)
@@ -81,12 +81,12 @@ You can clone the source code with `git` or [download and unzip the code from t
The Todo application has a basic React structure. There are several configuration files but the central programming files are in the `src/components` directory:
-| File | Description |
-|-----------------|-------------|
-| `index.js` | Application initialization. |
-| `components/App.js ` | Code for handling the `authResponse`. |
-| `components/Signin.js ` | Code for the initial sign on page. |
-| `components/Profile.js` | Application data storage and user sign out. |
+| File | Description |
+| ----------------------- | ------------------------------------------- |
+| `index.js` | Application initialization. |
+| `components/App.js ` | Code for handling the `authResponse`. |
+| `components/Signin.js ` | Code for the initial sign on page. |
+| `components/Profile.js` | Application data storage and user sign out. |
## Task 2: Sign into the application
@@ -183,11 +183,11 @@ To decode the token and see what information it holds:
Now, go to the underlying `blockstack-todo` code you cloned or downloaded. Sign
in and sign out is handled in each of these files:
-| File | Description |
-|-----------------|-------------|
-| `components/App.js ` | Code for handling the `authResponse`. |
-| `components/Signin.js ` | Code for the initial sign on page. |
-| `components/Profile.js` | Application data storage and user sign out. |
+| File | Description |
+| ----------------------- | ------------------------------------------- |
+| `components/App.js ` | Code for handling the `authResponse`. |
+| `components/Signin.js ` | Code for the initial sign on page. |
+| `components/Profile.js` | Application data storage and user sign out. |
The `src/components/App.js` code configures an `AppConfig` object and then uses this to create a `UserSession`. Then, the application calls a [`redirectToSignIn()`](https://blockstack.github.io/blockstack.js#redirectToSignIn) function which generates the `authRequest` and redirects the user to the Blockstack authenticator:
@@ -280,6 +280,6 @@ saveTasks(tasks) {
You now have everything you need to construct complex applications complete with authentication and storage on the Decentralized Internet. Why not try coding [a sample application that accesses multiple profiles](blockstack_storage.html).
-If you would like to explore the Blockstack APIs, you can visit the [Blockstack Core API](https://core.blockstack.org/) documentation or the [Blockstack JS API](https://blockstack.github.io/blockstack.js).
+If you would like to explore the Blockstack APIs, you can visit the [Stacks Node API](https://core.blockstack.org/) documentation or the [Blockstack JS API](https://blockstack.github.io/blockstack.js).
-Go forth and build!
+Go forth and build!
\ No newline at end of file
diff --git a/_common/core_ref.md b/_common/core_ref.md
index a5a72c01..79249daf 100644
--- a/_common/core_ref.md
+++ b/_common/core_ref.md
@@ -1,5 +1,5 @@
---
layout: externalurl
redirect_url: https://core.blockstack.org/
-title: "Blockstack CORE API"
+title: "Stacks Node API"
---
diff --git a/_community/app-miners-guide.md b/_community/app-miners-guide.md
deleted file mode 100644
index 98a6b671..00000000
--- a/_community/app-miners-guide.md
+++ /dev/null
@@ -1,322 +0,0 @@
----
-layout: community
-description: Marketing insights for Blockstack App miners
-permalink: /:collection/:path.html
-toc: true
----
-
A guide featuring insights from App Reviewers and the Blockstack PBC team
-
-**This is outdated documentation for the App Mining program. App Mining Has Been Paused.
-Thank you to the hundreds of you that participated and congratulations to our winners.**
-[More info](https://blog.blockstack.org/the-next-phase-of-app-mining/) & [all apps →](https://app.co/blockstack)
-
-
-
-
-
-
Disclaimer: App Mining is currently being piloted by Blockstack PBC with the intent of refining it to the point it can be implemented at the protocol level on the Stacks Blockchain. The program is constantly improving thanks to feedback collected via the forum, Github, and ongoing App Mining calls with miners.
-
-
-## Introduction
-{:.no_toc}
-
-App Mining is built (and constantly refined) in a way that should help bootstrap quality applications that people want to use. As an app improves relative to others in the App Mining pool, so too should its rank and therefore the associated payout. Different independent App Reviewers focus on different aspects of what makes an app high-quality or successful, the aspect they focus on being a function of their expertise. In this guide we'll feature advice from each of these App Reviewers so you can best understand how to score well with each, thus improving your overall score.
-
-
It's worth noting that if at any point as an App Miner, you feel compelled to do something to improve your score that you don't feel is also improving your app or helping you acquire users, it's a potential area for feedback that could improve App Mining, so please don't hesitate to use the forum or regular call to do so.
-
-
-## Before you begin
-
-
-
-
-
-
-
-
Zero-to-Dapp Tutorial
-
If you've found this guide and have not yet built an app, please start with the Zero to Dapp Tutorial. It's the easiest way for anyone to start building on Blockstack. The tutorial will not only help you start building, but will guide you through the App Mining submission process as well!
-
-
-
-
-
-
How App Mining Rankings Work
-
If you haven't yet, check out these two resources on how the ranking works. It's not required know how everything is calculated, but it's openly shared and calculated in the interest of transparency. This post covers the full process including a video explainer and the white paper.
-Recommendations from Blockstack PBC
-
-
-
-
-
-## Recommendations from Blockstack PBC
-
-### Marketing and Growth
-
-Don't make Marketing and Growth an afterthought. Content and social media interaction attracts new users. Apps with more users get more feedback. More feedback means better apps. Sooner than later, you'll need to be growing your user base so don't neglect these activities early on as they'll support you in building and maintaining a viable project in the long-term.
-
-
-
-#### Don't lead with 'decentralized'
-{:.no_toc}
-
-Most people don't care how your app works behind the scenes. The decentralized nature of Blockstack and your app is a means to an end. Focus on the value your app provides to your users instead of how it provides it. Show that your app is more secure or private, that users own their data at all times, that their data is not sold, etc. Decentralization will likely come up in describing your app, but don't make the mistake of thinking many will jump at the app simply because it's decentralized.
-
-#### Do things that don't scale
-{:.no_toc}
-
-Get your hands dirty, do things that don't scale. Paul Graham of Y Combinator recommends this method and it's one that will help you find product market fit faster and more cheaply. Here are a handful of ways to find users that aren't that scalable, but will work. Here's another list of 17 ways to find your first 100 customers. You get the idea, there are more of these out there if you look and it's that kind of hustle that will get your user acquisition kick-started. Beyond that, you'll be learning along the way how to talk about your app the right way—take notes on what works so you can weave those learnings into scalable efforts down the road.
-
-
-#### Publish content and interact
-{:.no_toc}
-
-While there isn't currently a direct measure for number of users, having real users is critical to your success. Not only do they provide the opportunity for you to build a sustainable business, they also provide feedback. Do everything you can to reach new users. In the earliest days, a mix of less scalable activities like those above and the longer-term investment in content is important. Creating content has SEO benefits (people need to find you) in addition to establishing your brand as trustworthy. Create content regularly and distribute it via social networks, groups you're a part of, your personal network, to relevant bloggers and media, investors if you have them, your customers, and other influencers willing to listen. Start with Moz's Beginner's Guide to Content Marketing.
-
-#### Hone your message
-{:.no_toc}
-
-Chances are the first way you describe your app and its value proposition won't be the most effective ones. Find ways to test what sticks with people and converts new users. A small spend on social or search ads will let you quickly learn what works. You should also experiment with landing pages for specific audiences. There are countless tools to make this easy, you can also pull down free templates for whatever CMS you may be working on. Check out this Beginner's Guide to Landing Pages from Neil Patel and work on the story of your brand/app/project.
-
-### Design and Interaction
-
-With TryMyUI officially onboard, UI is not just important, but a critical piece of the score you receive.
-
-#### Get more feedback
-{:.no_toc}
-
-In addition to the feedback you'll get each month from TryMyUI, you should gather your own information too. This guide from Help Scout has some great tips for ways you can gather feedback of all kinds from customers. Real people using your app will provide you invaluable feedback.
-
-#### Keep a close eye on visitor behavior
-{:.no_toc}
-
-Going hand in hand with gathering feedback from users, you should find ways to ethically track website visitors so you can make strategic decisions about where they are falling off in your funnels. Analytics tools such as Fathom, Fullstory, and many more will give you insights, but be sure to take advantage of the options they provide to obfuscate personally identifiable information. Everything from the color of a button, to the image you chose, to the copy you wrote can have an effect on potential new users dropping off. An experienced designer should be able to quickly help you fix problem areas with better design and get more people all the way from your site to into your app.
-
-#### Invest in graphic design work (even if lightly)
-{:.no_toc}
-
-First impressions of your app (even just the logo appearing on a blog) can be the difference between someone taking your app seriously or just scrolling right past. Quality design work can be found in many places, here's a quick list of resources you can try:
-
-* Upwork
-* Fiverr
-* Toptal
-* Canva (DIY)
-* Graphic River
-
-## Recommendations from TryMyUI
-
-### The TryMyUI Score
-
-TryMyUI's panelists will score using a special survey they developed expressly for the App Mining program: the ALF Questionnaire (Adoption Likelihood Factors). Answers to this questionnaire will be used to calculate an overall score reflecting the following 4 factors:
-
-
-
-
-
-
Usability: Is the app intuitive and easy to interact with? Can users perform the central functions without difficulty?
-
Usefulness: Does the app meet a real need? Does it provide a valuable solution to a problem that users face?
-
Credibility: Does the app inspire trust in users? Do they feel that it is safe to use? Does the information on the app feel authoritative and believable?
-
Desirability: Do users enjoy being on the app? Does it make them want to return for future use? Are they excited about the app and what it allows them to do?
-
-
-
-
-
-
-Each factor corresponds to 4 questionnaire items, for a total 16 items that comprise the ALFQ. Users mark their answers on a 5-point Likert scale, with 5 meaning "Strongly agree" and 1 meaning "Strongly disagree." The final result is a score for each of the 4 factors, and a composite ALF score.
-
-### How to use your TryMyUI videos & data
-
-Every month after the scores are released, you will be given access to 8 user videos from your app, with the accompanying ALF scores and written survey responses. This data will contain deep insights into the User Experience of your app – what you're doing well, and where you can improve.
-All of this will be really helpful over the next few weeks as you work to improve your app design for the next month's round of testing. Here's our tips for diving into your TryMyUI test data:
-
-
-
-
-
Tip
-
Description
-
-
-
-
-
Check your ALF scores first.
-
You'll be able to see each individual tester's score. Check who had the best and worst experiences. This will be helpful to know before you start watching the videos.
-
-
-
Scan your written survey responses.
-
Look for themes that appear across multiple testers' answers. Keep an eye out for any glaring issues that may have specially impacted users' experiences.
-
-
-
Formulate an attack plan.
-
Now that you've reviewed the ALF scores and written responses, start watching your videos. You already have an idea of the kinds of issues you'll find, and which users experienced those issues, so start there. This will allow you to quickly identify your main areas for improvement, and to understand why users are having trouble in those spots.
-
-
-
Take notes.
-
As you watch your videos, take notes on what you see. Users will give verbal feedback as they go, explaining their thoughts, reactions, and impressions of your app. Look in particular for gaps between what they expected and the actual experience your app delivered.
-
-
-
Read between the lines.
-
Observe what users do as well as what they say. The verbal feedback is important, but sometimes users won't comment on every issue, or even realize that something has gone wrong! Pay close attention to behaviors that are different from what you anticipated, or things that are hindering users' progress towards your desired outcomes.
-
-
-
Interpret your findings.
-
Figure out what users' feedback means for your roadmap by identifying the problem at the root of their complaints. For example, a user might wish for a video tutorial, but that doesn't necessarily mean you should add a video tutorial. Instead, think about what's missing from the information you currently provide that caused the user to feel so disoriented.
-
-
-
Look for positives too!
-
Your TryMyUI data won't just show you where things aren't working smoothly, it will also show you what you're doing right. It's important to take note of these insights, so you can emphasize those elements and avoid eliminating features that people like.
-
-
-
-
-
-### UI/UX Recommendations
-
-Here are some quick tips from the TryMyUI team on improving your app's design and providing better experiences for your users:
-
-* First impressions matter! Clearly communicate your main value proposition up front. If visitors don't understand what you can do for them, they won't even bother moving on to the next step.
-
-* Pretty isn't everything, but a visually attractive design increases your credibility and makes users feel more comfortable using your app. A good-looking homepage will start you off on the right foot with users.
-
-* Show, don't tell. People never read as much as you think. Wherever possible, try to explain your app's benefits and functionalities with a combination of text, illustration, and interaction.
-
-* Define user personas and stories, and design your app based on these. If you can step into the shoes of your users, you'll be better able to create something they'll want to use.
-
-* Simplify. Trim the fat in your designs. Simple is better – focus on the main actions, and minimize distractions.
-
-### Analyzing and improving your UX
-
-
-
-## Recommendations from Awario
-
-Generally speaking, Awario is an App Reviewer that ranks apps based on *awareness*. The underlying goal of App Mining is to accelerate growth of the decentralized app ecosystem, a key part of which is attracting users. Attracting users depends on creating marketplace awareness of an app through effective marketing.
-
-Awario assesses the **reach** of your marketing efforts and looks at your monthly marketing activity to determine how your overall awareness ranks relative to other apps in the program*.* Each month, Awario also provides you with valuable data the informs you about your apps online mention, influencer, and online sentiment. This is the data behind your rank. You can use this data to further enhance your marketing efforts and increase your app’s score.
-
-{% include note.html content="Awareness level is only one part of your score. To read more about the components of a score, see this How apps are reviewed and scored here. Also, watch the changelog and attend App Mining meetings to stay aware of scoring changes for Awario or other App Reviewers." %}
-
-### Anatomy of Awario’s awareness level
-
-Awario uses mentions and reach to determine your apps awareness level.
-
-
-
-
mentions
-
A public instance of your App’s name being found online (social networks, media, blogs, websites, etc.). Each mention must use the exact app name, no typos or misspellings. Images do not count as mentions.
-
-
-
-
reach
-
An estimation of how many people are involved in and exposed to the conversation around your app.
-
-
-
-For each of the mentions found, Awario assigns a reach number. A more popular blog will have higher reach number than a less popular one. Awario scans the web for Mentions of your app across 3 main areas:
-
-
-
-
social
-
Facebook, Twitter, Instagram, Reddit, and YouTube. For Instagram and YouTube, use the caption area to mention your app name. For Instagram, your account needs to be set to Business.
-
-
-
news/blog
-
The Wall Street Journal, Wired, The Verge, etc. as well as smaller blogs that have a history of reporting news or media style content. What constitutes a News/Blog mention is determined by Awario’s algorithms.
-
-
-
web
-
Mentions on a website not considered a News or Blog site. These mentions are not factored into your App Mining rank
-
-
-
-Finally, you should understand that your awareness rank drives your growth score. To receive a Growth score, your app must achieve reach rank of at least 1,000 in the month. Scores are run on GMT, not your own local timezone. Therefore any mention needs to occur within the past calendar month according to GMT.
-
-
-### Tips for maximizing your Awario score
-
-Get at least one public post on each social network mentioning your App’s name. This is a simple as an update on Facebook, a Tweet, a Reddit post, etc.
-
-Mentions must:
-
-- Use the exact app name in the body of the text or update. Misspellings or typos or if the mention appears in a sidebar such as related articles are not recorded in your rank.
-- images that contain your app name only count when the app name also appears in a images `alt` caption, for example: ``
-* Posts must be publicly viewable.
-* You can have friends, your personal accounts, or other brands mention you on social networks (this is actually ideal for your app in the long-term), it’s not restricted to what you post as the app brand itself.
-* For Instagram and YouTube, use the caption area to mention your app name.
-* For Instagram, your account needs to be [set to Business](https://help.instagram.com/502981923235522?helpref=faq_content).
-
-Get placements in News/Blog sites:
-
-- Reach out to the ***writers*** for sites like TechCrunch, The Verge, WSJ, and so forth ([tips for locating the writers](http://www.onstartups.com/tabid/3339/bid/80121/How-To-Get-Media-Coverage-For-Your-Startup-A-Complete-Guide.aspx)). Pitch them on why they should cover what you’re building. With these folks, the broader implications of privacy and security tend to go farther than specifics about your app. Human interest is another good angle, i.e. talk about who your app serves and why it’s important users have it.
-- Make yourself and your team available for interviews.
-- Work with a PR firm.
-- Hire a freelance writer to help tell your story (or a PR freelancer), these people can help pull out what the media will care most about and get something placed.
-- Jump on existing news and join the conversation ([newsjacking](https://contentmarketinginstitute.com/2014/01/brand-marketing-newsjacking-next-level/)).
-- Focus on the WHY and the WHO, when it comes to all your marketing efforts, not the HOW. What is the value your app provides?
-
-Be steady with your efforts. Just like in the real-world, marketing is a constant and long-term investment. If you drop off for a month or two, that will reverberate negatively in your real-world awareness and in your score. Some further reading on earning press:
-
-- [The 12-Step Insider's Guide To Getting Press Coverage](https://www.forbes.com/sites/brettnelson/2012/08/27/the-12-step-insiders-guide-to-getting-press-coverage/#3359dbae1765)
-- [How much more traffic should](https://neilpatel.com/blog/getting-media-coverage/) [](https://neilpatel.com/blog/getting-media-coverage/)[you actually be getting](https://neilpatel.com/blog/getting-media-coverage/)
-- [How To Get Media Coverage For Your Startup: A Complete Guide](http://www.onstartups.com/tabid/3339/bid/80121/How-To-Get-Media-Coverage-For-Your-Startup-A-Complete-Guide.aspx)
-
-
-### Recap of important guidelines
-
-- Each mention must use the exact app name, no typos or misspellings.
-- Images do not count as mentions unless the app name also appears in a text caption.
-- To receive a Growth score, you need to hit a reach rank of at least 1,000 in the month.
-- For Instagram, your account needs to be [set to Business](https://help.instagram.com/502981923235522?helpref=faq_content).
-- Mentions in websites other than blog or news, are not counted.
-
-## Thank you!
-{:.no_toc}
-
-
-We hope you enjoyed this guide and are enjoying your App Mining experience. Please contact mining@app.co at any time with suggestions or questions.
diff --git a/_core/aglio_templates/public.jade b/_core/aglio_templates/public.jade
index b5ae6b15..7901256f 100644
--- a/_core/aglio_templates/public.jade
+++ b/_core/aglio_templates/public.jade
@@ -6,7 +6,7 @@ include mixins.jade
html
head
meta(charset="utf-8")
- title= 'Blockstack Core'
+ title= 'Stacks Node'
link(rel="stylesheet", href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css")
style!= self.css
body.preload
@@ -21,7 +21,7 @@ html
.middle
header
h1#top!= 'Getting Started'
- p!= 'Welcome to this deployment of Blockstack Core v{{server_info.server_version}}. You can read the documentation and make RESTful calls to this node.'
+ p!= 'Welcome to this deployment of Stacks Node v{{server_info.server_version}}. You can read the documentation and make RESTful calls to this node.'
p
table
tr
@@ -34,7 +34,7 @@ html
tr
td!= 'Last block processed'
td!= '{{server_info.last_block_processed}}'
- p!= 'Blockstack Core is open-source software released under a GPLv3 license. The code for this API is available on Github and you can deploy your own nodes by following these instructions.'
+ p!= 'Stacks Node is open-source software released under a GPLv3 license. The code for this API is available on Github and you can deploy your own nodes by following these instructions.'
block content
+ContentTriple(true)
diff --git a/_core/api-specs.md b/_core/api-specs.md
index 12f03464..cec61226 100644
--- a/_core/api-specs.md
+++ b/_core/api-specs.md
@@ -1,6 +1,6 @@
# Group Core Node Administration
-Blockstack Core's API module provides a set of API calls for interacting with
+Stacks Node API module provides a set of API calls for interacting with
the node's configuration. Most configuration state is in the [Blockstack
Browser](https://github.com/blockstack/blockstack-browser). Client-side state
is managed by [blockstack.js](https://github.com/blockstack/blockstack.js).
@@ -1748,7 +1748,7 @@ parsing them.
The last transaction's ID (`txid`) and transaction offset (`vtxindex`) are given.
If `vtxindex` is 0, then the transaction ID corresponds to a "sentinal" transaction
-in Blockstack Core that indicates tokens getting generated or unlocked. These
+in Stacks Blockchain that indicates tokens getting generated or unlocked. These
transaction IDs will not appear in any block explorer, since they do not correspond
to "real" transactions.
diff --git a/_core/atlas/howtouse.md b/_core/atlas/howtouse.md
index b82c0a1e..a0a54456 100644
--- a/_core/atlas/howtouse.md
+++ b/_core/atlas/howtouse.md
@@ -24,7 +24,7 @@ to zone files and zone file hashes. This is intentional.
The [public BNS API endpoint](https://core.blockstack.org) does not support
resolving Atlas chunks that do not encode Gaia routing information or subdomain
information. To directly interact with Atlas, developers will need to install
-[Blockstack Core](https://github.com/blockstack/blockstack-core) and use its
+[Stacks Node](https://github.com/blockstack/blockstack-core) and use its
Python client libraries for these examples.
## Looking up Chunks
diff --git a/_core/attic/gaia.md b/_core/attic/gaia.md
index 086a86a5..e8090263 100644
--- a/_core/attic/gaia.md
+++ b/_core/attic/gaia.md
@@ -21,10 +21,10 @@ devices. Gaia has "drivers" for each storage system that allow it to load,
store, and delete chunks of data via a uniform interface, and it gives
applications a familiar API for organizing their data.
-Applications interface with Gaia via the [Blockstack Core
+Applications interface with Gaia via the [Stacks Node
API](https://github.com/blockstack/blockstack-core/tree/master/api). Javascript
applications connect to Gaia using [Blockstack Portal](https://github.com/blockstack/blockstack-portal),
-which helps them bootstrap a secure connection to Blockstack Core.
+which helps them bootstrap a secure connection to Stacks Blockchain.
# Datastores
@@ -44,7 +44,7 @@ All data in a datastore is signed by a datastore-specific key on write, in order
to guarantee that readers only consume authentic data.
The application client handles all of the encryption and signing. The other
-participants---Blockstack Portal, Blockstack Core, and the storage
+participants---Blockstack Portal, Stacks Node, and the storage
systems---only ferry data back and forth between application clients.
## Data Organization
@@ -129,7 +129,7 @@ the following protocol is executed:
list of names to use. The user selects which name to sign in as.
4. Now that Portal knows which name to use, and which application is signing in,
- it loads the datastore private key and requests a Blockstack Core session
+ it loads the datastore private key and requests a Stacks Blockchain session
token. This token will be used by the application to access Gaia.
5. Portal creates an authentication response with `makeAuthResponse()`, which it
@@ -211,7 +211,7 @@ node if it wants to authenticate the data itself.
### Path Resolution
Applications do not need to do path resolution themselves; they simply ask the
-Blockstack Core node to do so on their behalf. Fetching the root directory
+Stacks Node to do so on their behalf. Fetching the root directory
works as follows:
1. Get the root inode ID from the datastore record.
@@ -316,9 +316,9 @@ or `deleteFile()` (to remove a file). In either case, the protocol executed is
2. If an inode by the given name does not exist, then the method fails.
3. The client removes the inode's name and ID from the directory listing, signs
- the new directory, and replicates it to the Blockstack Core node.
+ the new directory, and replicates it to the Stacks Node.
-4. The client tells the Blockstack Core node to delete the inode's header and
+4. The client tells the Stacks Node to delete the inode's header and
payload from all storage systems.
@@ -424,10 +424,10 @@ which we address in the next topic.
## A `.storage` Namespace
-Blockstack Core nodes can already serve as storage "gateways". That is, one
+Stacks Nodes can already serve as storage "gateways". That is, one
node can ask another node to store its data and serve it back to any reader.
-For example, Alice can make her Blockstack Core node public and program it to
+For example, Alice can make her Stacks Node public and program it to
store data to her Amazon S3 bucket and her Dropbox account. Bob can then post data to Alice's
node, causing her node to replicate data to both providers. Later, Charlie can
read Bob's data from Alice's node, causing Alice's node to fetch and serve back
diff --git a/_core/blockstack-did-spec.md b/_core/blockstack-did-spec.md
index 6545bc1d..4ae83ebc 100644
--- a/_core/blockstack-did-spec.md
+++ b/_core/blockstack-did-spec.md
@@ -326,7 +326,7 @@ Thus to generate this TXT record for their DID, the user would do the following:
4. Sign the resulting string with the DID's current private key.
5. Generate and append the `sig=${base64_signature}` field to the TXT record.
-Sample code to generate these TXT records can be found in the [Blockstack Core
+Sample code to generate these TXT records can be found in the [Stacks Node
reference implementation](https://github.com/blockstack/blockstack-core), under
the `blockstack.lib.subdomains` package. For example, the Python 2 program here
generates such a TXT record:
diff --git a/_core/faq_developer.md b/_core/faq_developer.md
index 3887027a..9f2f0a8a 100644
--- a/_core/faq_developer.md
+++ b/_core/faq_developer.md
@@ -8,7 +8,7 @@ permalink: /:collection/:path.html
This document lists frequently-asked questions developers about Blockstack application development. If you are new to Blockstack, you should read the [general questions]({{site.baseurl}}/faqs/allFAQs.html) first.
-For more technical FAQs about Blockstack Core nodes, the Stacks blockchain, and other architectural elements, see the [entire set of technical FAQs]({{site.baseurl}}/core/faq_technical.html).
+For more technical FAQs about Stacks nodes, the Stacks blockchain, and other architectural elements, see the [entire set of technical FAQs]({{site.baseurl}}/core/faq_technical.html).
If you have a technical question that gets frequently asked on the
[forum](https://forum.blockstack.org) or [Slack](https://blockstack.slack.com),
diff --git a/_core/install-api.md b/_core/install-api.md
index 8bbb0c2d..eed68fc1 100644
--- a/_core/install-api.md
+++ b/_core/install-api.md
@@ -11,7 +11,7 @@ permalink: /:collection/:path.html
Step-by-step instructions for deploying a Blockstack API node on Debian or
Ubuntu are below.
-- **Step 1:** Make sure you have Blockstack Core running locally (see [instructions](https://github.com/blockstack/blockstack-core/blob/master/README.md#quick-start)).
+- **Step 1:** Make sure you have a Stacks Node running locally (see [instructions](https://github.com/blockstack/blockstack-core/blob/master/README.md#quick-start)).
- **Step 2:** Make sure you have [virtualenv installed](http://docs.python-guide.org/en/latest/dev/virtualenvs/).
Then, setup the API:
diff --git a/_core/naming/architecture.md b/_core/naming/architecture.md
index cbc91854..1d6c3e34 100644
--- a/_core/naming/architecture.md
+++ b/_core/naming/architecture.md
@@ -46,7 +46,7 @@ The BNS indexer and BNS API comprise the **BNS node**. An architectural schemat
The above diagram depicts the BNS architecture. Clients talk to the BNS API module to resolve names, and generate and send blockchain transactions to register and modify names. The API module talks to the indexer module and gives clients a stable, Web-accessible interface for resolving names. The indexer module reads the blockchain via a blockchain peer, over the blockchain's peer network.
-Blockstack Core currently implements the API module and indexer module as separate
+Stacks Blockchain currently implements the API module and indexer module as separate
daemons (`blockstack api` and `blockstack-core`, respectively). However, this
is an implementation detail, and may change in the future.
diff --git a/_core/naming/comparison.md b/_core/naming/comparison.md
index e7c2ce57..67a29c50 100644
--- a/_core/naming/comparison.md
+++ b/_core/naming/comparison.md
@@ -80,7 +80,7 @@ BNS has a fundamentally different relationship with blockchains than ENS.
Whereas ENS tries to use on-chain logic as much as possible, BNS
tries to use the blockchain as little as possible. BNS only uses it to store a
database log for name operations (which are interpreted with an off-chain BNS
-node like Blockstack Core). BNS name state and BNS subdomains reside entirely
+node like Stacks Blockchain). BNS name state and BNS subdomains reside entirely
off-chain in the Atlas network. This has allowed BNS to migrate from blockchain
to blockchain in order to survive individual blockchain failures, and this has
allowed BNS developers to upgrade its consensus rules without having to get the
@@ -114,7 +114,7 @@ The following feature table provides a quick summary how BNS differs from other
[1] Requires support in higher-level applications. These systems are not aware
of the existence of namespaces/TLDs at the protocol level.
-[2] Blockstack Core destroys the underlying blockchain token to pay for
+[2] Stacks Blockchain destroys the underlying blockchain token to pay for
registration fees when there is no pay-to-namespace-creator address set in the
name's namespace. This has the effect of making the blockchain miners' holdings
slightly more valuable.
diff --git a/_core/naming/creationhowto.md b/_core/naming/creationhowto.md
index 36697580..0fec4bfa 100644
--- a/_core/naming/creationhowto.md
+++ b/_core/naming/creationhowto.md
@@ -52,9 +52,9 @@ Pairing the `NAMESPACE_PREORDER` and `NAMESPACE_REVEAL` steps is designed to pre
If you would like to navigate a namespace history, you can. To do this, do the following:
-1. Query a Blockstack Core server for a particular name.
+1. Query a Stacks Blockchain server for a particular name.
- The format to query the Blockstack core server is:
+ The format to query the Stacks Blockchain server is:
`https://core.blockstack.org/v1/namespaces/NAMESPACE`
diff --git a/_core/naming/did.md b/_core/naming/did.md
index 2e86e6d8..419d21d4 100644
--- a/_core/naming/did.md
+++ b/_core/naming/did.md
@@ -31,7 +31,7 @@ name in history prior to this one (which happens to be `abcdefgh123456.id`).
The purpose of a DID is to provide an eternal identifier for a public key.
The public key may change, but the DID will not.
-Blockstack Core implements a DID method of its own
+Stacks Blockchain implements a DID method of its own
in order to be compatible with other systems that use DIDs for public key resolution.
In order for a DID to be resolvable, all of the following must be true for a
name:
diff --git a/_core/naming/forks.md b/_core/naming/forks.md
index ed43198c..0ed317c7 100644
--- a/_core/naming/forks.md
+++ b/_core/naming/forks.md
@@ -72,7 +72,7 @@ the [transaction wire format]({{ site.baseurl }}/core/wire-format.html) document
The blockchain linearizes the history of transactions, which means that
in general, there exists a fork-set for each distinct set of BNS
-consensus rules. For example, the Blockstack Core [2016 hard fork](https://github.com/blockstack/blockstack-core/blob/master/release_notes/changelog-0.14.md)
+consensus rules. For example, the Stacks Blockchain [2016 hard fork](https://github.com/blockstack/blockstack-core/blob/master/release_notes/changelog-0.14.md)
and [2017 hard fork](https://github.com/blockstack/blockstack-core/blob/master/release_notes/changelog-0.17.md) both introduced new consensus
rules, which means at the time of this writing there are three possible fork-sets:
the pre-2016 fork-set, the 2016-2017 fork-set, and the post-2017 fork-set.
diff --git a/_core/naming/introduction.md b/_core/naming/introduction.md
index eeb90220..7e263110 100644
--- a/_core/naming/introduction.md
+++ b/_core/naming/introduction.md
@@ -12,7 +12,7 @@ section introduces you to BNS and explains the following concepts:
* TOC
{:toc}
-The ([Blockstack Core](https://github.com/blockstack/blockstack-core))
+The ([Stacks Node](https://github.com/blockstack/blockstack-core))
repository is the reference implementation of the Blockstack Naming Service.
diff --git a/_core/naming/search.md b/_core/naming/search.md
index 79b46776..24f24db3 100644
--- a/_core/naming/search.md
+++ b/_core/naming/search.md
@@ -5,7 +5,7 @@ permalink: /:collection/:path.html
---
# How to build a Profile Search Index
-The search subsystem for Blockstack Core creates an index for data associated
+The search subsystem for Stacks Blockchain creates an index for data associated
with registered names in namespaces and makes that data searchable.
The search subsystem is currently meant to index the .id namespace but can
@@ -41,9 +41,9 @@ $ sudo pip install -r api/requirements.txt
$ sudo mkdir /var/blockstack-search && sudo chown $USER:$USER /var/blockstack-search
```
-- **Step 2:** Make sure you have Blockstack Core running locally (see [instructions](https://github.com/blockstack/blockstack-core/blob/master/README.md#quick-start)). We highly
+- **Step 2:** Make sure you have a Stacks Node running locally (see [instructions](https://github.com/blockstack/blockstack-core/blob/master/README.md#quick-start)). We highly
recommend using a local node because the search subsystem issues thousands of calls to
-Blockstack Core for re-indexing and remote nodes can slow down performance.
+a Stacks Node for re-indexing and remote nodes can slow down performance.
- **Step 3:** Fetch the data for the .id namespace and respective profiles. Note, you may want to redirect stderr to a file, as there is a lot of debug output.
diff --git a/_core/smart/clarityCLI.md b/_core/smart/clarityCLI.md
index e667706c..8b2e8be6 100644
--- a/_core/smart/clarityCLI.md
+++ b/_core/smart/clarityCLI.md
@@ -1,5 +1,5 @@
---
-layout: core
+layout: smart
description: "Blockstack smart contracting language"
permalink: /:collection/:path.html
---
diff --git a/_core/smart/clarityRef.md b/_core/smart/clarityRef.md
index cee2e05c..4cdd8f5a 100644
--- a/_core/smart/clarityRef.md
+++ b/_core/smart/clarityRef.md
@@ -1,5 +1,5 @@
---
-layout: core
+layout: smart
description: "Blockstack smart contracting language"
permalink: /:collection/:path.html
---
@@ -59,8 +59,8 @@ Smart contracts may also be principals (represented by the smart contract's iden
To support the use of named fields in keys and values, Clarity allows the construction of named tuples using a function `(tuple ...)`, for example
```cl
-(define imaginary-number-a (tuple (real 1) (i 2)))
-(define imaginary-number-b (tuple (real 2) (i 3)))
+(define-constant imaginary-number-a (tuple (real 1) (i 2)))
+(define-constant imaginary-number-b (tuple (real 2) (i 3)))
```
This allows for creating named tuples on the fly, which is useful for data maps where the keys and values are themselves named tuples. Values in a given mapping are set or fetched using:
diff --git a/_core/smart/functions.md b/_core/smart/functions.md
index b8afda2b..f05efee2 100644
--- a/_core/smart/functions.md
+++ b/_core/smart/functions.md
@@ -1,5 +1,5 @@
---
-layout: core
+layout: smart
description: "Blockstack smart contracting language"
permalink: /:collection/:path.html
---
diff --git a/_core/smart/install-source.md b/_core/smart/install-source.md
index ee82af06..33799e87 100644
--- a/_core/smart/install-source.md
+++ b/_core/smart/install-source.md
@@ -1,5 +1,5 @@
---
-layout: core
+layout: smart
description: "Blockstack smart contracting language"
permalink: /:collection/:path.html
---
diff --git a/_core/smart/overview.md b/_core/smart/overview.md
index 7ad250fe..7e8bf237 100644
--- a/_core/smart/overview.md
+++ b/_core/smart/overview.md
@@ -1,5 +1,5 @@
---
-layout: core
+layout: smart
description: "Blockstack Clarity: Introduction"
permalink: /:collection/:path.html
---
diff --git a/_core/smart/principals.md b/_core/smart/principals.md
index 1b2f7e74..5b5e0823 100644
--- a/_core/smart/principals.md
+++ b/_core/smart/principals.md
@@ -1,5 +1,5 @@
---
-layout: core
+layout: smart
description: "Blockstack smart contracting language"
permalink: /:collection/:path.html
---
diff --git a/_core/smart/sdk-quickstart.md b/_core/smart/sdk-quickstart.md
index cf92f505..24030cbf 100644
--- a/_core/smart/sdk-quickstart.md
+++ b/_core/smart/sdk-quickstart.md
@@ -1,5 +1,5 @@
---
-layout: core
+layout: smart
description: "Blockstack smart contracting language"
permalink: /:collection/:path.html
---
diff --git a/_core/smart/tutorial-counter.md b/_core/smart/tutorial-counter.md
index 00812abb..ee673a42 100644
--- a/_core/smart/tutorial-counter.md
+++ b/_core/smart/tutorial-counter.md
@@ -1,9 +1,9 @@
---
-layout: core
+layout: smart
description: "Blockstack Clarity: Counter Tutorial"
permalink: /:collection/:path.html
---
-# Tutorial: Counter
+# Counter
| Experience | | **Intermediate** |
| Duration | | **30 minutes** |
@@ -161,6 +161,12 @@ Let's get familiar with the tests to understand what the new smart contract shou
(ok (var-get counter)))
```
+With the completion of this tutorial, you ...
+
+* Experienced test-driven development with Clarity
+* Understood more Clarity language design principles
+* Developed a working Clarity counter smart contract
+
## Where to go next
{:.no_toc}
diff --git a/_core/smart/tutorial.md b/_core/smart/tutorial.md
index 9be5142e..4c63102c 100644
--- a/_core/smart/tutorial.md
+++ b/_core/smart/tutorial.md
@@ -1,9 +1,9 @@
---
-layout: core
+layout: smart
description: "Blockstack Clarity: Hello World Tutorial"
permalink: /:collection/:path.html
---
-# Tutorial: Hello World
+# Hello World
| Experience | | **Beginner** |
| Duration | | **15 minutes** |
@@ -196,7 +196,14 @@ As you see, smart contract calls are realized through query definitions. The `cr
Now, review the last test `should echo number` on your own and try to understand how arguments are passed to the `echo-number` smart contract.
-With that, you have completed the first Clarity tutorial! Congratulations!
+With that, you have completed the first Clarity tutorial! In just a few minutes you ...
+
+* Created a working Clarity starter project
+* Understood basic Clarity language design principles
+* Understood how to interact with smart contracts
+* Understood how to test smart contracts
+
+Congratulations!
## Where to go next
diff --git a/_data/appFAQ.json b/_data/appFAQ.json
index 871dbfbc..4d829b58 100644
--- a/_data/appFAQ.json
+++ b/_data/appFAQ.json
@@ -1,91 +1,11 @@
-{ "faqs": [
- {
- "question":"What is App Mining?",
- "answer":"
Traditionally the term mining in cryptocurrency refers to the process of contributing compute resources to the network and earning a reward. In the Blockstack Ecosystem, instead of just mining through computation, developers mine by building apps and the Blockstack community funds them simply for being pioneers in the emerging Blockchain software market.
We believe app mining represents a revolution in app funding, allowing small teams to bootstrap without advertising or venture capital. Each month, qualifying apps compete for funding. Qualified apps are evaluated and ranked by expert app reviewers. The better your app, the higher payout you earn.
The pilot run began on December 1st 2018, with 34 Blockstack Apps enrolled. A previous alpha run in Oct 2018 included 17 Blockstack apps. App mining is a new mining model that we expect will evolve and improve over time. We look forward to feedback from our community regarding the App Mining process and program.
"
+{
+ "faqs": [{
+ "question": "What is the Stacks token?",
+ "answer": "
Stacks (STX) token is the native utility token of the Blockstack network and the only token currently available as part of an SEC-qualified sale. Stacks tokens are consumed as "fuel" when users register digital assets, like usernames, or when they register/execute smart contracts. Using Stacks, developers can build and distribute apps that let users maintain ownership of their data and protect their digital rights.
Yes, App Mining is internationally available. The reviewers today cater to an English-speaking audience. The long term vision for app mining entails developing a plan to make it more internationally accessible. We will continue to update the guidelines and FAQ as the program evolves.
"
- },
- {
- "question": "What is the App Mining timeline?",
- "answer":"
On the first of every month (or as listed on the calendar):
Registration is closed for that months ranking.
Blockstack team sends the complete list of apps to our app reviewer partners. App miners do not need to reach out to Awario, TryMyUI, or the digital rights reviewer.
Over the next two weeks:
TryMyUI Tests are happening. Please don’t perform upgrades that might break the app.
The digital rights reviewer examines apps based on the degree to which the apps respect and protect users` fundamental digital rights.
On the last day of ranking at 11:59pm ET: App mining results are sent to Blockstack by app reviewer partners.
On the 15th (or as listed on the calendar): Blockstack team performs App Mining algorithm as referenced here.
On the following weekday:
App miners are emailed login info to access their TryMyUI tests.
App founders are sent an audit version of the results.
A week later:
Payouts are completed.
Full App Mining results are published.
"
- },
- {
- "question": "Where can I find a calendar of App Mining events?",
- "answer": "
The following calendar shows events each month related to App Mining:
"
- },
- {
- "question": "How much can I earn and how are rewards distributed? ",
- "answer":"
App Mining pays out $400k per month in combined STX and BTC January 2020. In February 2020, the payout pool will ramp up to $500k total in STX. In March and April 2020, the monthly payout pool will be $700k. In May 2020 we plan for the monthly payout to be $1M worth of Stacks tokens. For more detailed information, see How payouts are administered in the Blockstack documentation.
"
- },
- {
- "question":"What is the Stacks token?",
- "answer":"
Stacks (STX) token is the native utility token of the Blockstack network and the only token currently available as part of an SEC-qualified sale. Stacks tokens are consumed as "fuel" when users register digital assets, like usernames, or when they register/execute smart contracts. Using Stacks, developers can build and distribute apps that let users maintain ownership of their data and protect their digital rights.
"
- },
- {
- "question": "How is App Mining different from cryptocurrency mining?",
- "answer": "
Traditionally the term mining in cryptocurrency refers to the process of contributing compute resources to the network and earning a distributed of new tokens as a reward. On the Stacks blockchain, developers can mine by contributing apps to the ecosystem and making applications the community wants.
"
- },
- {
- "question": "What qualifies my app to compete in App Mining?",
- "answer": "
Your app should integrate Blockstack authentication for logging into your app. Your finished app should be available to the public for use. The application must use a registered domain name and the app should be hosted at a URL belonging to the domain. The app website must use a secured (https) connection. In the future, App Mining may reward apps that have taken steps to further decentralize, such as utilizing Gaia storage or the publishing your app to the Blockstack Naming System. Test flight apps, hello-world apps and apps created through blockstack tutorials (e.g., animal kingdom apps) do not qualify.
"
- },
- {
- "question": "Does my app have to be listed on App.co to enter App Mining?",
- "answer": "
Yes, it does.
"
- },
- {
- "question": "How do I submit my application for App Mining?",
- "answer": "
Complete the submission form on App.co. Blockstack suggests registering several days before the ranking deadline — our team needs to verify your details to ensure your app qualifies. Full enrollment details can be found here. When you have met all the requirements, you should see your app listed on this page.
"
- },
- {
- "question": "When are my submission materials due?",
- "answer": "
Your submission materials are due before the end of the month. Please see the app mining calendar for the exact dates. Keep in mind that registering is a multi-step process.
"
- },
- {
- "question": "How often can I submit my application for App Mining?",
- "answer": "
You need only to submit your application once. Each month after your submission, your app is competing in App Mining.
"
- },
- {
- "question": "Does my code repository need to be public?",
- "answer": "
If you’re already building your app with JavaScript, adding Blockstack authentication is easy! We have docs, tutorials, and thorough API references for you to learn from. Visit the Zero-to-Dapp tutorial for end-to-end training. Or use this short example.
If you’re developing a traditional server-side application, you can still take advantage of Blockstack authentication. For an example, check out our Ruby on Rails gem.
"
- },
- {
- "question": "Who are the app reviewers?",
- "answer":"
App reviewers are currently selected by Blockstack PBC. Reviewers are entities that have a proprietary methodology that helps them make objective judgements for why a certain app might be better than others. We strive to engage a diverse coalition of app reviewers with the goal of making application ranking objective and resilient to abuse.
The app reviewers are TryMyUI, Awario, and the New Internet Labs. See here for more details about each reviewer. Future reviewers could expand to community election. Please see our GitHub repository to raise issues or make suggestions for App Mining.
App reviewers have a proprietary methodology that helps them make objective judgments for why one app might be better than another. Each app reviewers determines the data, formula, and personnel they wish to utilize. Reviewers must publish their methodology periodically to ensure transparency.
"
- },
- {
- "question": "When are the winning payments made?",
- "answer": "
Payouts are made mid-month.
"
- },
- {
- "question": "What are examples of any quantitative metrics that may be shared with app reviewers?",
- "answer": "
Qualitative metrics are metrics that evaluate elements such as engagement, DAU/MAU ratios, etc. from the reviewed apps. Blockstack plans to incorporate metrics based ranking. However, before we do, any mechanism must thoughtfully incorporate the digital privacy rights of Blockstack users, and provide information in a way that cannot be gamed.
Given the pioneering nature of the program, we are being careful and starting in a somewhat centralized fashion that allows for necessary diligence in the early stages, for example, the current pilot phase. We don’t want to bake in assumptions that have not been validated. The downside of this protection is some level of centralization, which we are taking steps to reduce over time. The pilot is the just the first step in creating a fair system that can be relied upon by founders and contribute to the growth of the Blockstack ecosystem.
Blockstack plans to move along a path to decentralization and App Mining will too. It is important to highlight that initially, App Mining will purposely have a few points of centralization highlighted below, which can become decentralized over time (all plans are subject to change, legal approval, and applicable law).
Electing app reviewers:
Currently, Blockstack PBC elects app reviewers. In the future, we anticipate gradually transitioning to community elections of App Reviewers.
Registering apps:
Currently, registering apps is regulated by Blockstack PBC through app.co/mining. In the future, we anticipate transitioning to publishing on designated Blockstack namespaces via our public blockchain.
Collecting votes:
Currently, votes are aggregated by Blockstack PBC and administered via App.co. In the future, we expect that votes will be collected through the protocol itself.
Issuing money:
Currently, payouts are issued by Blockstack PBC. In the future, we expect that payouts will over time be generated and deployed on an automated basis.
"
- },
- {
- "question": "How is App Mining protected against bribery, collusion, or gaming?",
- "answer": "
We are taking potential threats very seriously and hope to create a fair system that continuously reinforces trust within our community for the long term.
We are currently consulting with a team of 3 Ph.D. Game Theorist professors from Princeton University and New York University to determine thoughtful methods to protect App Mining from being attacked and/or abused. Our goal is to be as transparent as possible, but App Reviewers may reserve the right to keep some secrets in their formula to avoid bribes and gaming, and the algorithm that combines all of these score may be tuned in the future to account for new learnings.
The Game Theorists are working with us to create a technical paper and broader documents like blogs explaining the overall mechanism.
"
- },
- {
- "question": "How do I propose and follow changes to App Mining?",
- "answer": "
The App Mining GitHub repo is the best place to propose changes to App Mining.
The App Mining FAQs contain forward-looking statements, including statements regarding Blockstack PBC’s plans for its App Mining program. Forward-looking statements are subject to risks and uncertainties that could cause actual results to differ materially, and reported results should not be considered as an indication of future performance. Potential risks and uncertainties that could change our actual results include, but are not limited to, risks associated with: the failure of App Mining Program to successfully incentivize the development of applications for the Blockstack network; risks associated with attacks designed to influence the App Reviewers or game their methodologies; technical difficulties in the transition from a centralized to a decentralized administration of the program. These forward-looking statements speak only as of the date hereof. Blockstack PBC disclaims any obligation to update these forward-looking statements.
Any decisions that may be made through the App Mining Program regarding rewards provided to app developers are not recommendations as to the quality of any investments that individuals may make in a company that receives rewards. If you are considering an investment in any of these companies, you should make your own decision regarding that investment and not rely in any way on the results of the App Mining program.
If you’re already building your app with JavaScript, adding Blockstack authentication is easy! We have docs, tutorials, and thorough API references for you to learn from. Visit the Zero-to-Dapp tutorial for end-to-end training. Or use this short example.
If you’re developing a traditional server-side application, you can still take advantage of Blockstack authentication. For an example, check out our Ruby on Rails gem.
"
+ }
+ ]
}
\ No newline at end of file
diff --git a/_data/clarityRef.json b/_data/clarityRef.json
index c35d22ea..796032d8 100644
--- a/_data/clarityRef.json
+++ b/_data/clarityRef.json
@@ -333,7 +333,7 @@
"input_type": "A",
"output_type": "A",
"signature": "(print expr)",
- "description": "The `print` function evaluates and returns its input expression. On Blockstack Core\nnodes configured for development (as opposed to production mining nodes), this function prints the resulting value to `STDOUT` (standard output).",
+ "description": "The `print` function evaluates and returns its input expression. On Stacks Blockchain\nnodes configured for development (as opposed to production mining nodes), this function prints the resulting value to `STDOUT` (standard output).",
"example": "(print (+ 1 2 3)) ;; Returns 6"
},
{
@@ -587,4 +587,4 @@
"example": "\n(define (only-if-positive (a int))\n (if (> a 0)\n (some a)\n none))\n(only-if-positive 4) ;; Returns (some 4)\n(only-if-positive (- 3)) ;; Returns none\n"
}
]
-}
+}
diff --git a/_data/glossary.csv b/_data/glossary.csv
index 9921de62..01945807 100644
--- a/_data/glossary.csv
+++ b/_data/glossary.csv
@@ -1,5 +1,4 @@
Term,Definition
-App Mining,A system where the Blockstack community funds decentralized app teams.
App Review,An incentive mechanism for application developers in the early stage (first four years) of the ecosystem and helps with bootstrapping the two-sided market.
Atlas,A peer network provide a global index for discovery
Bitcoin (BTC) address,
A string of letters and numbers.
3E53XjqK4Cxt71BGeP2VhpcotM8LZ853C8
Sharing this address allows anyone to send Bitcoin to the address.
@@ -8,14 +7,14 @@ use of headers that contain a digital fingerprint of the records each block cont
blockchain,A database created and shared by the members of a peer-to-peer computer network which each member of that network can independently trust due to the rules governing the database’s creation. A blockchain can therefore be used to replace centralized databases.
Blockchain Name System (BNS),Replacement for DNS.
blockstack browser,An application for accessing identity and storage.
-Blockstack Core,"A complete version of our open-source software available on Github at https://github.com/blockstack/blockstack-core/ that governs the creation of the blockchain, the smart contracts that may be written to our blockchain, and other systems that make up the Blockstack network, when run on the systems and devices of our users and developers."
+Stacks Node,"A complete version of our open-source software available on Github at https://github.com/blockstack/blockstack-core/ that governs the creation of the blockchain, the smart contracts that may be written to our blockchain, and other systems that make up the Blockstack network, when run on the systems and devices of our users and developers."
blockstack id,See id.blockstack
Blockstack Owner Address,
Looks like a bitcoin address but starts with ID for example:
ID-1J3PUxY5uDShUnHRrMyU6yKtoHEUPhKULs
Burning,Burning a token means that the token is transferred to an address that is a black hole—one that is not owned by any entity and for which guessing the applicable private key is effectively impossible based on known mathematical principles. This effectively destroys the token by making it unavailable for future use and decreases the total number of tokens available from that point forward.
consensus hash,"A consensus hash is a cryptographic hash that each node calculates at each block. It is derived from the accepted state transitions in the last-processed block, and a geometric series of prior-calculated consensus hashes."
Consensus rules,"The rules governing the creation of new valid records in a blockchain database, and the mining algorithms used for this purpose."
control plane,The part of a network that carries signaling traffic and is responsible for routing. Control packets originate from or are destined for a router. Functions of the control plane include system configuration and management.
-core node,A server that runs Blockstack Core services.
+core node,A server that runs Stacks Blockchain services.
crypto-asset,"A digital asset which utilises cryptography, peer-to-peer networking, and a public ledger to regulate the creation of new units, verify transactions, and secure the transactions without the intervention of any middleman."
cryptography,The practise and study of encryption and decryption - encoding data so that it can only be decoded by specific individuals. A system for encrypting and decrypting data is a cryptosystem.
decentralized application (DApp),"A DApp is a service that enables direct interaction between end users and providers (e.g. connecting buyers and sellers in some marketplace, owners and stores in file storage). A term coined by Ethereum. See their glossary: http://ethdocs.org/en/latest/glossary.html"
@@ -39,7 +38,7 @@ mining,Mining generally refers to the process of performing certain functions fo
mining power,"A miner’s (or group of miners’) mining power is equal to the probability it will be selected to write a new block to the blockchain. Depending on the mechanism for mining, this is usually related to the overall share of computing power or cryptoassets the miner or miners possess relative to all miners for that blockchain."
mining rewards,Mining rewards are newly issued tokens received by miners in exchange for adding new records to the blockchain or other activities beneficial to the network.
name,"An identifier or name. Names are a type of digital asset in the Blockstack network. If you have signed into the Blockstack Browser, you created a name. If an application developer registered an application within Blockstack, then they registered a name."
-network operation,"A network operation is any change to the information about a digital asset (or smart contract) stored on a blockchain, including, for example, a change in the digital asset’s owner, or a change in the location at which it is stored on the network. How and when these network operations are performed for each digital asset is governed, on the Blockstack network, either by the Blockstack Core software or a smart contract."
+network operation,"A network operation is any change to the information about a digital asset (or smart contract) stored on a blockchain, including, for example, a change in the digital asset’s owner, or a change in the location at which it is stored on the network. How and when these network operations are performed for each digital asset is governed, on the Blockstack network, either by the Stacks Node software or a smart contract."
private key,"
Private keys matches a corresponding public key. A public key also looks like a string of letters and numbers:
The exact format of the public and private key depend on the software you use to create them.
"
proof-of-burn mining,"The consensus algorithm used in the Stacks blockchain where miners destroy a proof-of-work-based cryptocurrency (currently Bitcoin) to get tokens; this enables the functionality where nodes can select between conflicting blockchain forks, as the blockchain fork with the most amount of cryptocurrency burned is considered to be the correct fork."
proof-of-work,"A proof-of-work system or proof-of-work mining is a mining mechanism where miners must expend computing power to solve complicated cryptographic puzzles, and prove that they have done so by writing the solution to the blockchain, in order to be allowed to add blocks to a blockchain. This is the mining system used, for example, by Bitcoin."
diff --git a/_data/navigation_core.yml b/_data/navigation_core.yml
index 070aecbf..a7427fa8 100644
--- a/_data/navigation_core.yml
+++ b/_data/navigation_core.yml
@@ -1,22 +1,11 @@
-- title: Smart Contracts
- docs:
- - core/smart/overview
- - core/smart/tutorial
- - core/smart/tutorial-counter
- - core/smart/principals
- - core/smart/functions
- - core/smart/clarityRef
- - core/smart/clarityCLI
- - core/smart/sdk-quickstart
-
-- title: Naming Services
+- title: Naming Services Guides
docs:
- core/naming/introduction
- core/naming/architecture
- core/naming/namespaces
- core/naming/comparison
-- title: Tutorials & Cookbooks
+- title: Naming Service Tutorials
docs:
- core/naming/tutorial_subdomains
- core/naming/search
diff --git a/_data/navigation_home.yml b/_data/navigation_home.yml
index cfe8fb82..a7c17939 100644
--- a/_data/navigation_home.yml
+++ b/_data/navigation_home.yml
@@ -1,31 +1,31 @@
# Categories home page navigation
- title: Build Decentralized Apps
- desc: Learn how to build a blockchain application with Blockstack. Work through web and mobile tutorials.
+ desc: Learn how to build decentralized applications using Blockstack's storage and authentication tools.
icon: code
- doc: develop/zero_to_dapp_1
+ doc: develop/overview_auth
- title: Build Smart Contracts
- desc: Work with our Core node, smart contracts, namespaces, zone files, and other advanced topics.
- icon: cog
+ desc: Learn how to develop smart contracts using Blockstack's smart contracting language.
+ icon: file-edit
doc: core/smart/overview
-- title: Use Blockchain Apps
- desc: Learn about the New Internet and blockchain applications. Create an identity and learn how to use it.
- icon: settings
- doc: browser/browser-introduction
+- title: Work with Stacks Blockchain
+ desc: Learn how to work with nodes, namespaces, zone files, and other advanced topics.
+ icon: cog
+ doc: core/naming/introduction
+
+- title: Work with Blockstack Gaia
+ desc: Learn about storage, interactions between developer APIs, and the Gaia service.
+ icon: database
+ doc: storage/overview
- title: Evaluate the Blockstack Ecosystem
desc: Learn the components that make up the Blockstack Ecosystem. Understand the value a blockchain offers.
icon: info
doc: org/overview
-- title: Implement Storage with Gaia
- desc: Backend storage drivers and interactions between developer APIs and the Gaia service.
- icon: database
- doc: storage/overview
-
- title: Blockstack Community
- desc: view upcoming events, become a contributor or evangelist.
+ desc: View upcoming events and become a contributor or evangelist.
icon: user
doc: common/community_ref
diff --git a/_data/navigation_learn.yml b/_data/navigation_learn.yml
index c92e71bb..52666bfa 100644
--- a/_data/navigation_learn.yml
+++ b/_data/navigation_learn.yml
@@ -1,23 +1,19 @@
-- title: Introduction
- docs:
- - develop/dapp_principles
- - core/faq_developer
-
-- title: Coding basics
+- title: Guides
docs:
- develop/overview_auth
- - develop/add_auth
- develop/storage
- develop/profiles
- - develop/deploy-tips
- - develop/betatesting
-
-- title: Data Portability (Preview)
+
+- title: Tutorials
docs:
- - develop/collections
- - develop/collection-type
+ - browser/hello-blockstack
+ - browser/todo-list
+ - browser/blockstack_storage
+ - develop/deploy-tips
+ - android/tutorial
+ - ios/tutorial
-- title: Radiks data
+- title: Data sharing & collaboration
docs:
- develop/radiks-intro
- develop/radiks-setup
@@ -25,38 +21,20 @@
- develop/radiks-collaborate
- develop/radiks-server-extras
-- title: Try it! Zero to DApp
+- title: Data portability (Preview)
docs:
- - develop/zero_to_dapp_1
- - develop/zero_to_dapp_2
- - develop/zero_to_dapp_3
- - develop/zero_to_dapp_4
-
-- title: Try a tutorial
- docs:
- - browser/hello-blockstack
- - browser/todo-list
- - browser/blockstack_storage
- - android/tutorial
- - ios/tutorial
- - develop/auth_provider
- - develop/communityResources
-
-- title: App Mining
- docs:
- - develop/mining_intro
- - develop/app-reviewers
- - develop/app-rankings
- - develop/mining_enroll
- - develop/mining-rewards
- - community/app-miners-guide
- - develop/appMiningFAQ
-
+ - develop/collections
+ - develop/collection-type
-- title: Reference
+- title: References
docs:
- common/javascript_ref
- common/android_ref
- common/ios_ref
- develop/cliDocs
- common/core_ref
+
+- title: Misc
+ docs:
+ - core/faq_developer
+ - develop/communityResources
\ No newline at end of file
diff --git a/_data/navigation_org.yml b/_data/navigation_org.yml
index 2001607b..99016f80 100644
--- a/_data/navigation_org.yml
+++ b/_data/navigation_org.yml
@@ -3,7 +3,6 @@
- org/overview
- faqs/allFAQS
- org/token
- - org/explore
- org/whitepaper-blockchain
- title: Manage Stacks
docs:
diff --git a/_data/navigation_smart.yml b/_data/navigation_smart.yml
new file mode 100644
index 00000000..b93357d7
--- /dev/null
+++ b/_data/navigation_smart.yml
@@ -0,0 +1,19 @@
+- title: Getting started
+ docs:
+ - core/smart/overview
+
+- title: Tutorials
+ docs:
+ - core/smart/tutorial
+ - core/smart/tutorial-counter
+
+- title: Guides
+ docs:
+ - core/smart/principals
+ - core/smart/functions
+
+- title: References
+ docs:
+ - core/smart/clarityRef
+ - core/smart/clarityCLI
+ - core/smart/sdk-quickstart
diff --git a/_data/theFAQs.json b/_data/theFAQs.json
index 8017b82a..2d9441c2 100644
--- a/_data/theFAQs.json
+++ b/_data/theFAQs.json
@@ -1,7 +1,6 @@
{
"last_updated": "Fri Nov 1 09:07:59 PST 2019",
- "faqs": [
- {
+ "faqs": [{
"category": "general",
"question": "What is Blockstack?",
"answer": "
Blockstack is a full-stack decentralized computing network that enables a new generation of applications where developers and users can interact fairly and securely. Blockstack uses blockchain technology to build protocols and developer tools designed to enable a fair and open Internet that returns digital rights to developers and consumers. Led by some of the world’s foremost experts on distributed systems, Blockstack allows users to own their own data that they can take with them from app to app in the ecosystem, along with their Blockstack ID that eliminates the need for password-based logins. The end result is privacy, security, and freedom.
"
@@ -214,7 +213,7 @@
{
"category": "dappdevs",
"question": "How can I look up names and profiles?",
- "answer": "
"
},
{
"category": "dappdevs",
@@ -239,7 +238,7 @@
{
"category": "dappdevs",
"question": "What programming language can I use to build these apps?",
- "answer": "
To make apps that run in the web browser using Blockstack, you can use JavaScript and any of the same web frameworks or libraries you use today such as React, AngularJs, Vue.js or jQuery. Blockstack Core is implemented in Python (the next major release will be in Rust), but you can use any language you like for native apps as long as it can consume a JSON REST API.
"
+ "answer": "
To make apps that run in the web browser using Blockstack, you can use JavaScript and any of the same web frameworks or libraries you use today such as React, AngularJs, Vue.js or jQuery. Stacks Node is implemented in Python (the next major release will be in Rust), but you can use any language you like for native apps as long as it can consume a JSON REST API.
Yes! Since Blockstack applications are built like web applications, all you need to do is include the relevant Javascript library into your application.
Traditionally the term mining in cryptocurrency refers to the process of contributing compute resources to the network and earning a reward. In the Blockstack Ecosystem, instead of just mining through computation, developers mine by building apps, and the Blockstack community funds them simply for being pioneers in the emerging Blockchain software market.
We believe app mining represents a revolution in app funding, allowing small teams to bootstrap without advertising or venture capital. Each month, qualifying apps compete for funding. Qualified apps are evaluated and ranked by expert app reviewers. The better your app, the higher payout you earn.
App mining is a new mining model that is continuously evolving and improving based on community feedback.
Yes, App Mining is internationally available. The reviewers today cater to an English-speaking audience. The long term vision for app mining entails developing a plan to make it more internationally accessible. We will continue to update the guidelines and FAQ as the program evolves.
"
- },
- {
- "category": "appminers",
- "question": "What is the App Mining timeline?",
- "answer":"
On the first of every month (or as listed on the calendar):
Registration is closed for that months ranking.
Blockstack team sends the complete list of apps to our app reviewer partners. App miners do not need to reach out to Awario, TryMyUI, or the digital rights reviewer.
Over the next two weeks:
TryMyUI Tests are happening. Please don’t perform upgrades that might break the app.
The digital rights reviewer examines apps based on the degree to which the apps respect and protect users` fundamental digital rights.
On the last day of ranking at 11:59pm ET: App mining results are sent to Blockstack by app reviewer partners.
On the 15th (or as listed on the calendar): Blockstack team performs App Mining algorithm as referenced here.
On the following weekday:
App miners are emailed login info to access their TryMyUI tests.
App founders are sent an audit version of the results.
A week later:
Payouts are completed.
Full App Mining results are published.
"
- },
- {
- "category": "appminers",
- "question": "Where can I find a calendar of App Mining events?",
- "answer": "
The following calendar shows events each month related to App Mining:
"
- },
- {
- "category": "appminers",
- "question": "How much can I earn and how are rewards distributed? ",
- "answer":"
App Mining pays out $400k per month in combined STX and BTC January 2020. In February 2020, the payout pool will ramp up to $500k total in STX. In March and April 2020, the monthly payout pool will be $700k. In May 2020 we plan for the monthly payout to be $1M worth of Stacks tokens. For more detailed information, see How payouts are administered in the Blockstack documentation.
"
- },
- {
- "category": "appminers",
- "question":"What is the Stacks token?",
- "answer":"
Stacks (STX) token is the native utility token of the Blockstack network and the only token currently available as part of an SEC-qualified sale. Stacks tokens are consumed as "fuel" when users register digital assets, like usernames, or when they register/execute smart contracts. Using Stacks, developers can build and distribute apps that let users maintain ownership of their data and protect their digital rights.
"
- },
- {
- "category": "appminers",
- "question": "How is App Mining different from cryptocurrency mining?",
- "answer": "
Traditionally the term mining in cryptocurrency refers to the process of contributing compute resources to the network and earning a distributed of new tokens as a reward. On the Stacks blockchain, developers can mine by contributing apps to the ecosystem and making applications the community wants.
"
- },
- {
- "category": "appminers",
- "question": "What qualifies my app to compete in App Mining?",
- "answer": "
Your app should integrate Blockstack authentication for logging into your app. Your finished app should be available to the public for use. The application must use a registered domain name and the app should be hosted at a URL belonging to the domain. The app website must use a secured (https) connection. In the future, App Mining may reward apps that have taken steps to further decentralize, such as utilizing Gaia storage or the publishing your app to the Blockstack Naming System. Test flight apps, hello-world apps and apps created through blockstack tutorials (e.g., animal kingdom apps) do not qualify.
"
- },
- {
- "category": "appminers",
- "question": "Does my app have to be listed on App.co to enter App Mining?",
- "answer": "
Yes, it does.
"
- },
- {
- "category": "appminers",
- "question": "How do I submit my application for App Mining?",
- "answer": "
Complete the submission form on App.co. Blockstack suggests registering several days before the ranking deadline — our team needs to verify your details to ensure your app qualifies. Full enrollment details can be found here. When you have met all the requirements, you should see your app listed on this page.
"
- },
- {
- "category": "appminers",
- "question": "When are my submission materials due?",
- "answer": "
Your submission materials are due before the end of the month. Please see the app mining calendar for the exact dates. Keep in mind that registering is a multi-step process.
"
- },
- {
- "category": "appminers",
- "question": "How often can I submit my application for App Mining?",
- "answer": "
You need only to submit your application once. Each month after your submission, your app is competing in App Mining.
"
- },
- {
- "category": "appminers",
- "question": "Does my code repository need to be public?",
- "answer": "
If you’re already building your app with JavaScript, adding Blockstack authentication is easy! We have docs, tutorials, and thorough API references for you to learn from. Visit the Zero-to-Dapp tutorial for end-to-end training. Or use this short example.
If you’re developing a traditional server-side application, you can still take advantage of Blockstack authentication. For an example, check out our Ruby on Rails gem.
"
- },
- {
- "category": "appminers",
- "question": "Who are the app reviewers?",
- "answer":"
App reviewers are currently selected by Blockstack PBC. Reviewers are entities that have a proprietary methodology that helps them make objective judgements for why a certain app might be better than others. We strive to engage a diverse coalition of app reviewers with the goal of making application ranking objective and resilient to abuse.
The app reviewers are TryMyUI, Awario, and the New Internet Labs. See here for more details about each reviewer. Future reviewers could expand to community election. Please see our GitHub repository to raise issues or make suggestions for App Mining.
App reviewers have a proprietary methodology that helps them make objective judgments for why one app might be better than another. Each app reviewers determines the data, formula, and personnel they wish to utilize. Reviewers must publish their methodology periodically to ensure transparency.
"
- },
- {
- "category": "appminers",
- "question": "When are the winning payments made?",
- "answer": "
Payouts are made mid-month.
"
- },
- {
- "category": "appminers",
- "question": "What are examples of any quantitative metrics that may be shared with app reviewers?",
- "answer": "
Qualitative metrics are metrics that evaluate elements such as engagement, DAU/MAU ratios, etc. from the reviewed apps. Blockstack plans to incorporate metrics based ranking. However, before we do, any mechanism must thoughtfully incorporate the digital privacy rights of Blockstack users, and provide information in a way that cannot be gamed.
Given the pioneering nature of the program, we are being careful and starting in a somewhat centralized fashion that allows for necessary diligence in the early stages, for example, the current pilot phase. We don’t want to bake in assumptions that have not been validated. The downside of this protection is some level of centralization, which we are taking steps to reduce over time. The pilot is the just the first step in creating a fair system that can be relied upon by founders and contribute to the growth of the Blockstack ecosystem.
Blockstack plans to move along a path to decentralization and App Mining will too. It is important to highlight that initially, App Mining will purposely have a few points of centralization highlighted below, which can become decentralized over time (all plans are subject to change, legal approval, and applicable law).
Electing app reviewers:
Currently, Blockstack PBC elects app reviewers. In the future, we anticipate gradually transitioning to community elections of App Reviewers.
Registering apps:
Currently, registering apps is regulated by Blockstack PBC through app.co/mining. In the future, we anticipate transitioning to publishing on designated Blockstack namespaces via our public blockchain.
Collecting votes:
Currently, votes are aggregated by Blockstack PBC and administered via App.co. In the future, we expect that votes will be collected through the protocol itself.
Issuing money:
Currently, payouts are issued by Blockstack PBC. In the future, we expect that payouts will over time be generated and deployed on an automated basis.
"
- },
- {
- "category": "appminers",
- "question": "How is App Mining protected against bribery, collusion, or gaming?",
- "answer": "
We are taking potential threats very seriously and hope to create a fair system that continuously reinforces trust within our community for the long term.
We are currently consulting with a team of 3 Ph.D. Game Theorist professors from Princeton University and New York University to determine thoughtful methods to protect App Mining from being attacked and/or abused. Our goal is to be as transparent as possible, but App Reviewers may reserve the right to keep some secrets in their formula to avoid bribes and gaming, and the algorithm that combines all of these score may be tuned in the future to account for new learnings.
The Game Theorists are working with us to create a technical paper and broader documents like blogs explaining the overall mechanism.
"
- },
- {
- "category": "appminers",
- "question": "How do I propose and follow changes to App Mining?",
- "answer": "
The App Mining GitHub repo is the best place to propose changes to App Mining.
The App Mining FAQs contain forward-looking statements, including statements regarding Blockstack PBC’s plans for its App Mining program. Forward-looking statements are subject to risks and uncertainties that could cause actual results to differ materially, and reported results should not be considered as an indication of future performance. Potential risks and uncertainties that could change our actual results include, but are not limited to, risks associated with: the failure of App Mining Program to successfully incentivize the development of applications for the Blockstack network; risks associated with attacks designed to influence the App Reviewers or game their methodologies; technical difficulties in the transition from a centralized to a decentralized administration of the program. These forward-looking statements speak only as of the date hereof. Blockstack PBC disclaims any obligation to update these forward-looking statements.
Any decisions that may be made through the App Mining Program regarding rewards provided to app developers are not recommendations as to the quality of any investments that individuals may make in a company that receives rewards. If you are considering an investment in any of these companies, you should make your own decision regarding that investment and not rely in any way on the results of the App Mining program.
Blockstack Core is the reference implementation of the Blockstack protocol described in our white paper. Today, it consists of these components:
Blockstack Core: A Python backend service which reads transactions from the Stacks blockchain. This blockchain enables the Stacks Token (STX) and Blockstack Naming service.
Atlas: A peer network for communicating data about the Blockstack Naming System (BNS).
Blockstack API: A service for indexing the data stored by Blockstack Core and making it available in a performant way.
The next version of the Stacks Blockchain is under active development in the Rust programming language and employs our Tunable Proof-of-Work consensus algorithm and a unique scaling solution that enable individual apps to create their own app chains.
"
+ "question": "What is Stacks Blockchain?",
+ "answer": "
Stacks Blockchain is the reference implementation of the Blockstack protocol described in our white paper. Today, it consists of these components:
Stacks Node: A Python backend service which reads transactions from the Stacks blockchain. This blockchain enables the Stacks Token (STX) and Blockstack Naming service.
Atlas: A peer network for communicating data about the Blockstack Naming System (BNS).
Blockstack API: A service for indexing the data stored by Stacks Blockchain and making it available in a performant way.
The next version of the Stacks Blockchain is under active development in the Rust programming language and employs our Tunable Proof-of-Work consensus algorithm and a unique scaling solution that enable individual apps to create their own app chains.
"
},
{
"category": "coredevs",
- "question": "How will the next version of Blockstack Core change?",
- "answer": "
The next version of Blockstack core will incorporate smart contacts and do away with the virtual chain. This next version is expected toward the end of the year and will contain these components:
Leader election and Tunable Proof-of-Work implementation: This component governs how clients select the longest chain and which miners receive transaction fees for broadcasting transactions.
Peering network: This component distributes blocks and microblocks among peer nodes participating in the Stacks blockchain.
Smart contracting VM: This component is responsible for executing and validating transactions in the Stacks blockchain, including smart contract publishing and execution.
Blockstack API: This API indexes the data stored by Blockstack Core, exposing a JSON REST API for querying information about Stacks ownership, the Blockstack Naming System, and other data stored in smart contracts.
"
+ "question": "How will the next version of Stacks Blockchain change?",
+ "answer": "
The next version of Stacks Blockchain will incorporate smart contacts and do away with the virtual chain. This next version is expected toward the end of the year and will contain these components:
Leader election and Tunable Proof-of-Work implementation: This component governs how clients select the longest chain and which miners receive transaction fees for broadcasting transactions.
Peering network: This component distributes blocks and microblocks among peer nodes participating in the Stacks blockchain.
Smart contracting VM: This component is responsible for executing and validating transactions in the Stacks blockchain, including smart contract publishing and execution.
Blockstack API: This API indexes the data stored by Stacks Blockchain, exposing a JSON REST API for querying information about Stacks ownership, the Blockstack Naming System, and other data stored in smart contracts.
Anyone can register a name or identity on Blockstack — you just need to use a Blockstack client to submit a registration request to a Blockstack core node. All of that software is Open-Source and can be run without any centralized parties.
"
+ "answer": "
Anyone can register a name or identity on Blockstack — you just need to use a Blockstack client to submit a registration request to a Stacks Node. All of that software is Open-Source and can be run without any centralized parties.
"
},
{
"category": "coredevs",
@@ -434,7 +323,7 @@
{
"category": "coredevs",
"question": "Do I need to run a full Blockstack node to use Blockstack?",
- "answer": "
No. We maintain a fleet of Blockstack Core nodes that your Blockstack applications can connect to by default.
"
+ "answer": "
No. We maintain a fleet of Stacks Nodes that your Blockstack applications can connect to by default.
"
},
{
"category": "coredevs",
@@ -528,19 +417,19 @@
},
{
"category": "wallet",
- "question": "Can I use another software wallet with Stacks?",
- "answer": "
Currently, the only software wallet that supports Stacks is the Blockstack Wallet software.
"
- },
- {
+ "question": "Can I use another software wallet with Stacks?",
+ "answer": "
Currently, the only software wallet that supports Stacks is the Blockstack Wallet software.
"
+ },
+ {
"category": "wallet",
- "question": "Can I use the older version 1 Blockstack Wallet?",
- "answer": "
Version 1 of the Blockstack Wallet software was a read-only wallet. To view Stacks balances, send or receive Stacks you need to use the latest version 3 wallet. You can use the seed phrase you created with the old wallet with the new version.
"
- },
- {
+ "question": "Can I use the older version 1 Blockstack Wallet?",
+ "answer": "
Version 1 of the Blockstack Wallet software was a read-only wallet. To view Stacks balances, send or receive Stacks you need to use the latest version 3 wallet. You can use the seed phrase you created with the old wallet with the new version.
"
+ },
+ {
"category": "wallet",
- "question": "Can I send Bitcoin to my Stacks Wallet?",
- "answer": "
"
+ },
{
"category": "wallet",
"question": "How do I get help with my wallet from a person?",
@@ -551,7 +440,7 @@
"question": "How do I check the status of my previously purchased Stacks tokens?",
"answer": "
You may check the status of previously purchased Stacks tokens at the Blockstack Explorer. Additional wallet-related information is available here.
"
},
- {
+ {
"category": "tokens",
"question": "How do I check my STX balance?",
"answer": "
Blockchain transactions take time. Once Stacks are sent to you, you see a PENDING transaction, which means the transaction is still being recorded by the blockchain. Your balance will not change until the transaction is recorded. It may be minutes or hours before the transaction is recorded in the blockchain.
When the transaction is complete, you can see a receipt for the transaction in your Stacks Wallet. The PENDING marker goes away once the funds are recorded on the blockchain. Then, at this point, the balance in your Stacks Wallet software should reflect the completed transaction.
"
@@ -566,12 +455,12 @@
"category": "tokens",
"question": "When will Stacks tokens be available on an exchange for US residents?",
"answer": "
For US investors, there is currently no authorized exchange or alternative trading system (ATS) for buying and selling Stacks tokens, and we cannot comment on when an exchange or ATS might list Stacks tokens at this time. Please keep an eye out for updates at stackstoken.com. If you see Stacks listed on an exchange, please let us know at legal@blockstack.com, as the listing may be illegal or a scam.
"
- },
- {
- "category": "tokens",
- "question": "If I am already a Stacks token holder, how does the listing on Binance affect me?",
- "answer": "
If I'm already a Stacks token holder, how does the listing on Binance affect me? If you are a non-US resident and your country's laws allow you to legally use Binance's global exchange, you can exchange any of your Stacks tokens that are no longer subject to a time or transfer lock.
If you cannot legally access Binance's global exchange (e.g., if you are a US resident) then this does not affect you.
"
- },
+ },
+ {
+ "category": "tokens",
+ "question": "If I am already a Stacks token holder, how does the listing on Binance affect me?",
+ "answer": "
If I'm already a Stacks token holder, how does the listing on Binance affect me? If you are a non-US resident and your country's laws allow you to legally use Binance's global exchange, you can exchange any of your Stacks tokens that are no longer subject to a time or transfer lock.
If you cannot legally access Binance's global exchange (e.g., if you are a US resident) then this does not affect you.
"
+ },
{
"category": "tokens",
"question": "Can I sell or transfer Stacks tokens directly to someone else?",
@@ -586,17 +475,17 @@
"category": "tokens",
"question": "What types of transfer or time locks are Stacks tokens subject to?",
"answer": "
Previous and future sales of Stacks tokens are subject to two potential types of locks on use and transfer: a transfer lock and a time lock. Transfer locks are implemented where the tokens sold are considered sales of “restricted securities” under the Securities Act of 1933. Tokens subject to transfer locks are non-transferable on the Blockstack network until a one-year holding period following their sale has lapsed. A token can be burned on the network while subject to a transfer lock (provided it is not subject to a time lock), but otherwise is non-transferable.
Separately, tokens on the Blockstack network can be subject to a time lock, a general restriction that prevents a Stacks token from being used for any purpose on the Blockstack network, such that the Stacks token cannot be burned or transferred. Time locks operate such that Stacks tokens unlock in equal increments each time a pre-set number of blocks is processed on the blockchain.
"
- },
- {
+ },
+ {
"category": "tokens",
"question": "What types of transfer or time locks apply to the current and future sales of Stacks tokens?",
"answer": "
2019 Regulation A offering: Stacks tokens sold pursuant to our Regulation A offering are subject to an approximately two-year time lock from the date of the hard fork that distributes the tokens. 1/24th of the amount of tokens purchased will be released from this time lock on the date of distribution of the tokens, and an additional 1/24th will be released approximately every month. These tokens will not be subject to a transfer lock.
2019 Regulation S offering: Stacks tokens sold pursuant to our Regulation S offering to non-US institutional investors are subject to a one-year transfer lock from the date of sale and an approximately two-year time lock that unlocks on an approximately monthly basis from the date of the hard fork that distributes the tokens.
2017 Accredited Investor Sale: Stacks tokens sold pursuant to our Regulation D offering to accredited investors in 2017 are subject to an approximately two-year time lock that unlocks on an approximately monthly basis from the date of the genesis block, except for 50,000,000 of those tokens, which are subject to an approximately four-year time lock. The tokens were previously subject to a one-year transfer lock, which has expired.
2017 Founder Sale & Equity Investor Sale: Stacks tokens sold to founders and certain stockholders of Blockstack PBC in 2017 are subject to an approximately three-year time lock that unlocks on an approximately monthly basis from the date of the genesis block.
"
- },
- {
- "category": "tokens",
- "question": "What is the current circulating supply of Stacks?",
- "answer": "
As of June 10, 2019, 866,827,880 tokens of the 1.32B genesis block have been distributed and approximately 229,229,868 of those 866,827,880 distributed tokens have been released from their time locks. The remainder continue to be subject to time locks that release approximately monthly over approximately two, three or four year periods.
120,056,154 tokens were sold in the 2019 Reg S and Reg A offerings with an additional 40,000,000 tokens allocated for App Mining. Token distribution will proceed after the October 18, 2019 hard fork according to their corresponding time locks. For more details, please refer to the public filing with the SEC in our offering circular and to our Stacks Token Whitepaper.
"
- },
+ },
+ {
+ "category": "tokens",
+ "question": "What is the current circulating supply of Stacks?",
+ "answer": "
As of June 10, 2019, 866,827,880 tokens of the 1.32B genesis block have been distributed and approximately 229,229,868 of those 866,827,880 distributed tokens have been released from their time locks. The remainder continue to be subject to time locks that release approximately monthly over approximately two, three or four year periods.
120,056,154 tokens were sold in the 2019 Reg S and Reg A offerings with an additional 40,000,000 tokens allocated for App Mining. Token distribution will proceed after the October 18, 2019 hard fork according to their corresponding time locks. For more details, please refer to the public filing with the SEC in our offering circular and to our Stacks Token Whitepaper.
"
+ },
{
"category": "tokens",
"question": "How will mining affect the supply of Stacks tokens?",
@@ -612,20 +501,20 @@
"question": "I have a tax question about my Stacks tokens. Who should I talk to?",
"answer": "
If you have a tax question about your Stacks tokens, we recommend you speak to an accountant or tax lawyer. If you participated in the 2017 token sale through the Blockstack Token Funds, we’ll provide you with the necessary tax reporting forms by the required deadlines, but in general, we cannot give you tax advice.
"
},
- {
- "category": "tokens",
- "question": "How much money has Blockstack raised?",
- "answer": "
Blockstack PBC has raised ~$75m+ from equity investments and token offerings--approximately $23.0M from two token offerings in 2019, $47.5m from a token offering in 2017, and $5.1m in equity investments.
Traditionally, venture-capital-backed startups target around 12 to 18 months of runway after a new round of financing. As of October 2019, Blockstack PBC has a projected runway until at least the end of 2021 at current burn rates.
"
- },
- {
- "category": "tokens",
- "question": "What has been the recent traction on the network?",
- "answer": "
Blockstack PBC moved from the R&D phase to the infrastructure building phase in 2017 (upon closing of the Series A equity investment). Blockstack PBC successfully completed the launch of the Stacks blockchain in Q4 2018, meeting Milestone 1.
Since Q4 2018, we’ve been in the developer traction phase. The number of independent applications built on the network increased from 17 to 46 in Q4 2018, from 46 to 86 in Q1 2019, from 86 to 165 in Q2 2019, to 165 to 265+ apps in Q3 2019. The Blockstack network has 115,780 registered user accounts as of July 2019, and Blockstack PBC has increased focus on user acquisition during the transition from the developer traction phase to user engagement phase.
"
- },
- {
- "category": "tokens",
- "question": "How were tokens distributed to early investors?",
- "answer": "
Accredited Investors and funds in the 2017 Reg D token offering purchased tokens at a $0.12 price. Blockstack PBC raised $47.5M in this offering.
Holders of Blockstack’s Series A convertible preferred stock—who had invested a total of $5.1 million as of late 2016 and funded Blockstack’s early growth and development before the decision to create a token, or the drafting or publication of any white papers—were also provided an opportunity to purchase tokens at a nominal price per token before the 2017 Reg D offering. This opportunity to participate at a nominal price was given in return for their early support and in proportion to their equity ownership, and it was based on their reasonable expectation as early investors that they would receive tokens if Blockstack ever decided to create a digital token.
These tokens are subject to a three-year time lock, commencing upon the introduction of the genesis block to the Blockstack network in November 2018. The tokens for founders and employees are also subject to a three-year time lock starting November 2018.
Further, affiliates of Blockstack PB,C including Union Square Ventures, Muneeb Ali, and Ryan Shea — three of the largest holders of Stacks tokens — have additional restrictions on selling tokens on the open markets.
"
- }
+ {
+ "category": "tokens",
+ "question": "How much money has Blockstack raised?",
+ "answer": "
Blockstack PBC has raised ~$75m+ from equity investments and token offerings--approximately $23.0M from two token offerings in 2019, $47.5m from a token offering in 2017, and $5.1m in equity investments.
Traditionally, venture-capital-backed startups target around 12 to 18 months of runway after a new round of financing. As of October 2019, Blockstack PBC has a projected runway until at least the end of 2021 at current burn rates.
"
+ },
+ {
+ "category": "tokens",
+ "question": "What has been the recent traction on the network?",
+ "answer": "
Blockstack PBC moved from the R&D phase to the infrastructure building phase in 2017 (upon closing of the Series A equity investment). Blockstack PBC successfully completed the launch of the Stacks blockchain in Q4 2018, meeting Milestone 1.
Since Q4 2018, we’ve been in the developer traction phase. The number of independent applications built on the network increased from 17 to 46 in Q4 2018, from 46 to 86 in Q1 2019, from 86 to 165 in Q2 2019, to 165 to 265+ apps in Q3 2019. The Blockstack network has 115,780 registered user accounts as of July 2019, and Blockstack PBC has increased focus on user acquisition during the transition from the developer traction phase to user engagement phase.
"
+ },
+ {
+ "category": "tokens",
+ "question": "How were tokens distributed to early investors?",
+ "answer": "
Accredited Investors and funds in the 2017 Reg D token offering purchased tokens at a $0.12 price. Blockstack PBC raised $47.5M in this offering.
Holders of Blockstack’s Series A convertible preferred stock—who had invested a total of $5.1 million as of late 2016 and funded Blockstack’s early growth and development before the decision to create a token, or the drafting or publication of any white papers—were also provided an opportunity to purchase tokens at a nominal price per token before the 2017 Reg D offering. This opportunity to participate at a nominal price was given in return for their early support and in proportion to their equity ownership, and it was based on their reasonable expectation as early investors that they would receive tokens if Blockstack ever decided to create a digital token.
These tokens are subject to a three-year time lock, commencing upon the introduction of the genesis block to the Blockstack network in November 2018. The tokens for founders and employees are also subject to a three-year time lock starting November 2018.
Further, affiliates of Blockstack PB,C including Union Square Ventures, Muneeb Ali, and Ryan Shea — three of the largest holders of Stacks tokens — have additional restrictions on selling tokens on the open markets.
"
+ }
]
-}
+}
\ No newline at end of file
diff --git a/_develop/add_auth.md b/_develop/add_auth.md
deleted file mode 100644
index 762feea9..00000000
--- a/_develop/add_auth.md
+++ /dev/null
@@ -1,141 +0,0 @@
----
-layout: learn
-description: Blockstack developer documentation
-permalink: /:collection/:path.html
----
-# Add Auth to your DApp
-{:.no_toc}
-
-The way you can add Blockstack Auth to your DApp depends on whether your
-app is a modern decentralized Blockstack App where code runs client-side without
-trusted servers or a legacy client-server app where a server is trusted.
-
-* TOC
-{:toc}
-
-## Authentication in Client-side apps
-
-This method is appropriate for decentralized client-side apps where the user's
-zone of trust — the parts of the app that the user is trusting — begins and ends
-with the code running on their own computer. In apps like these, any code the
-app interacts with that's not on their own computer such as external servers
-does not need to know who they are.
-
-[Blockstack.js](https://blockstack.github.io/blockstack.js/) provides API
-methods that help you to implement Blockstack Authentication in your client-side
-app.
-
-### Default flow
-
-The preferred way to implement authentication in these apps is to use the
-default flow. This flow encapsulates authentication behind a few function
-calls and makes it very fast to get up and running.
-
-The default process use these four functions:
-
-- UserSession.redirectToSignIn
-- UserSession.isSignInPending
-- UserSession.handlePendingSignIn
-- UserSession.loadUserData
-
-When your app wants to start the sign in process, typically when the user clicks
-a **Sign in with Blockstack** button, your app will call the `UserSession.redirectToSignIn`.
-This creates an ephemeral transit key, stores it in the web browser's
-`localStorage`. Then, the function is used to create an authentication request token. The Blockstack Browser
-redirects the user to the Blockstack Browser to approve the sign in request.
-
-
-When a user approves a sign in request, the Blockstack Browser returns a signed `authResponse` token to the `redirectURI` specified in `UserSession.redirectToSignIn`.
-
-To check for the presence of this token, your app should call `UserSession.isSignInPending`. If this returns `true`, the app should then call `UserSession.handlePendingSignIn`. This decodes the token, returns the signed-in-user's data, and simultaneously storing it to `localStorage` so that it can be retrieved later with `loadUserData`.
-
-```js
-import * as blockstack from 'blockstack'
-
-var userSession = new UserSession()
-if (userSession.isSignInPending()) {
- userSession.handlePendingSignIn()
- .then(userData => {
- const profile = userData.profile
- })
-}
-
-```
-
-By default, these method use the `store_write` scope which allows the DApp to read the user profile and read/write user data for the DApp. To specify a different scope, use a AppConfig object.
-
-### Custom flows
-
-Alternatively, you can generate your own transit private key and/or
-authentication request token using the UserSession.makeAuthRequest function. This function gives you more control over the authentication experience. For example, you can change the sign in experience so that it prompts users who have not yet created a Blockstack identity, to choose a hub URL.
-
- The `makeAuthRequest()` method takes the following parameters:
-
-
The time at which this request is no longer valid.
-
- extraParams(Object = {})
-
-
Any extra parameters to pass to the authenticator. Use this to pass options that aren't part of the Blockstack authentication specification, but might be supported by special authenticators.
-
-
-
-For example, you could use the following code to generate an authentication
-request on `https://alice.example.com` or `https://bob.example.com` for an app
-running on origin `https://example.com`.
-
-```js
-
-const transitPrivateKey = generateAndStoreTransitKey()
-const redirectURI = 'https://example.com/authLandingPage'
-const manifestURI = 'https://example.com/manifest.json'
-const scopes = ['scope_write', 'publish_data']
-const appDomain = 'https://example.com'
-
-const authRequest = makeAuthRequest(transitPrivateKey, redirectURI, manifestURI, scopes, appDomain)
-
-redirectToSignInWithAuthRequest(authRequest)
-```
-
-## Authentication in client-server apps
-
-{% include note.html content="Client-server authentication requires using a library written in the
-language of your server app. There are private methods in blockstack.js that can
-be accomplish this on node.js server apps, but they are not currently part of
-our public, supported API." %}
-
-Using Blockstack Authentication in client-server apps is very similar to
-client-side apps. You generate the authentication request using the same code in
-the client as described above.
-
-The main difference is that you need to verify the authentication response token
-on the server after the user approves sign in to your app.
-
-For an example of how verification can be done server side, take a look at the
-[blockstack-ruby](https://github.com/blockstack/blockstack-ruby#to-verify-an-auth-response)
-library.
diff --git a/_develop/app-rankings.md b/_develop/app-rankings.md
deleted file mode 100644
index 020dd3e6..00000000
--- a/_develop/app-rankings.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-layout: learn
-description: Blockstack app mining documentation
-permalink: /:collection/:path.html
----
-**This is outdated documentation for the App Mining program. App Mining Has Been Paused.
-Thank you to the hundreds of you that participated and congratulations to our winners.**
-[More info](https://blog.blockstack.org/the-next-phase-of-app-mining/) & [all apps →](https://app.co/blockstack)
-
-# How scores become rankings
-{:.no_toc}
-
-{% include mining-ranking.md %}
-
-* TOC
-{:toc}
-
-## Z- Scores
-
-First Blockstack determines a `z-score` for each ranking. This is a statistical technique to account for different distributions of scores within categories. The following formula is used to calculate a `z-score` for an app.
-
-`if(App score=0, -1, (App score -average App score:App score))/stdev(App score:App score))`
-
-After computing the z-scores, Blockstack considers the app category. It computes the average of that category's z-scores and the standard deviation of each category.
-
-## Theta-Scores
-
-For each app’s score in a category, Blockstack determines how many standard deviations it is away from the average score in that category. Theta scores standardize reviewer results so they can be compared to other app reviewer data. Theta-scores are calculated by this formulat
-
-`if(App’s Avg. Z-score > 0, App’s Avg. Z-score^0.5, -(ABS(App’s Avg. Z-score)^0.5))`
-
-For example, let’s say a category has an average score of 60, with a standard deviation of 15. A score of 90 would get a z-score of 2, because it’s 2 standard deviations higher than the average.
-
-Once each app has a calculated a z-score in every category, the average of those 4 z-scores results in a final number. A higher number is better than a lower one, and so apps are ranked from highest to lowest.
-
-
-## Final Results
-
-The final results are determined by first averaging the Theta values of the app’s scores, then applying a history score. App mining weighs past results of the program alongside new results to track improvements and give weight to each months rankings.
-
-Apps that have been in the program for a month consider 25% history score (score last round) and 75% their average score this month. Here is the equation that is used:
-
-`if(Score last round=0, New Average Score, (0.75*New average score+0.25*Score last round))`
-
-To see all the formulas in action, please see the results and formulas used in [the full sheet of App Mining audit results](https://docs.google.com/spreadsheets/d/13PXIJhEhTusjVT9elYS3LnGqSj6DBjTUDCzB_R6Inkw/edit?usp=sharing).
diff --git a/_develop/app-reviewers.md b/_develop/app-reviewers.md
deleted file mode 100644
index b1283eac..00000000
--- a/_develop/app-reviewers.md
+++ /dev/null
@@ -1,88 +0,0 @@
----
-layout: learn
-permalink: /:collection/:path.html
----
-# How apps are reviewed and scored
-{:.no_toc}
-
-**This is outdated documentation for the app mining program. App Mining has been paused.
-Thank you to the hundreds of you that participated and congratulations to our winners.**
-[More info](https://blog.blockstack.org/the-next-phase-of-app-mining/) & [all apps →](https://app.co/blockstack)
-
-Blockstack uses third-party reviewers who interact with, review and provide scores for the apps in the App Mining program. The scores from each reviewer are used to determine an app`s ultimate rank. In this section, you learn more about the reviewers and how they score.
-
-* TOC
-{:toc}
-
-## TryMyUI
-
-TryMyUI provides 1.5M application testers around the globe. New apps enrolled in app mining are reviewed by 10 users, and previously enrolled apps receive 5 user testing videos. Apps are rated on the following dimensions:
-
-* Usability
-* Usefulness
-* Credibility
-* Desirability
-
-TryMyUI drops the highest and lowest test scores and uses the middle 8 scores for the first rankings and calculates and average of scores for each component. TryMyUI has it’s own “history” component to increase reliability of the tests. On average, projects need around 20 user tests to get actionable and reliable feedback. TryMyUI provides a monthly score that reflects 75% of the new month’s score, and 25% from last month’s score. The calculation to find that is:
-
-```
-X = raw score of new month
-Y = final (rolled) score from previous month
-
-0.75X + 0.25Y = new month’s final score
-```
-
-TryMyUI tests occur from the beginning to middle of the month, and Blockstack PBC cannot provide exact timing of the tests. App founders should not make any breaking changes to the app during this time. TryMyUI testers are English speaking. TryMyUI provides niche audiences based on the type of app. Founders can take this brief survey to fill out their preferred audiences. Read more about TryMyUI Scoring and recommendations in our [App Miner's Guide]({{ site.baseurl }}/community/app-miners-guide#recommendations-from-trymyui).
-
-## New Internet Labs
-
-New Internet Labs ranks apps based on their use of Blockstack Authentication (Auth) and Gaia as a measure of Digital Rights. New Internet Labs may test on any browser or device of their choosing for web apps. If the application is a mobile app, then it is tested on the appropriate mobile OS.
-
-For authentication, the scoring criteria follows:
-
-| Rating | Blockstack Auth|
-|---|---|
-| `4` | Is the only authentication method.|
-| `3` | Is the primary authentication method.|
-| `2` | Is one of many authentication methods. |
-| `1` | Is of secondary importance among many authentication methods.|
-| `0` | Is not used at all.|
-| `-1` | Is not used at all.|
-
-
-For Gaia, the scoring criteria follows:
-
-| Rating | Gaia|
-|---|---|
-| `1` | Is used. |
-| `0` | Is not used or the reviewer could not determine.|
-| `-1` | Is used but is broken. |
-
-New Internet Labs provides these raw scores to Blockstack. Apps that are found ineligible by New Internet Labs due to having an error in Auth are disqualified from app mining.
-
-## Awario
-
-Awario provides data about app awareness by scanning the web for 'Mentions' of the app name. The Awario score for App Mining is a result of measuring the Reach of these Mentions (specifically, Blog/News mentions), combined with the growth rate of overall Reach, combine with a binary examination of Mentions on social media.
-
-Awario rankings start counting at the start of the month the app was submitted, and the results are incorporated into the rankings the month following. This means that any data used in calculations is from the previous month. New apps to the program do not incorporate this score on their first month of being enrolled.
-
-As of October 2019, Awario ranks apps based on Blended Awareness which is comprised of these parts:
-
-* A binary scoring on social networks, that is, you get a number out of 5 max (1 point for any Mention registered on Facebook, Twitter, YouTube, Reddit, or Instagram).
-* A _reach score_ for any mentions in the news or blog section. The reach will have `log10` scoring applied to it.
-* A _growth score_ which is calculated the same way, just limited to the growth in reach from the news or blog mentions.
-
-Each of these three pieces will make up 1/3 of your overall Awario score. Some special conditions to understand about these values:
-
-* The first month you have Awario data you won't receive a growth score. This means your score for the first month is only comprised of reach and social.
-* If your reach in the last month was less than 1000, you don't get a growth score. This is designed to prevent huge growth percentage outliers.
-
-{% include note-list.html content="
Medium links will not count in your Reach score for the time being. The way Reach is calculated currently on Medium.com is too clumsy. Awario is shipping updates to this soon, so Blockstack can revisit then. Medium Reach will be zeroed out for everyone as described here.
-
If you change your app name, you need to let us know. Email mining@app.co to start the process. Anticipate a month not getting an Awario score to allow for Blockstack to set up and train a new query.
-
Please wait until the audit period to contact us about Mentions you feel are missing. In all the cases where someone has reached out, the Mentions show in the dashboard later as there is a delay as data is processed- your Awario dashboard is not meant to be real-time.
-
" %}
-
-Blockstack publishes the Awario data sheet with all app mentions for auditing at the start of the audit period. Blockstack PBC employee social media accounts are omitted from the reach scores. There is also a manual scan of Awario data to remove any data suspected of a false match.
-
diff --git a/_develop/appMiningFAQ.md b/_develop/appMiningFAQ.md
deleted file mode 100644
index 2ff14165..00000000
--- a/_develop/appMiningFAQ.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-layout: learn
-description: Blockstack app mining documentation
-permalink: /:collection/:path.html
----
-# App Mining FAQ
-
-* TOC
-{:toc}
-
-{% for faq in site.data.theFAQs.faqs %}
- {% if faq.category == 'appminers' %}
-## {{ faq.question }}
-{{ faq.answer }}
- {% endif %}
-{% endfor %}
diff --git a/_develop/auth_provider.md b/_develop/auth_provider.md
deleted file mode 100644
index 0998f725..00000000
--- a/_develop/auth_provider.md
+++ /dev/null
@@ -1,283 +0,0 @@
----
-layout: learn
-permalink: /:collection/:path.html
----
-# Add Blockstack Auth to a website
-{:.no_toc}
-
-This tutorial walks you through adding Blockstack authentication to a web app.
-The site you build is a simple Rails site. You don't require any specialized
-Ruby or Rails knowledge to build this site. However, if you are a knowledgeable
-Rails programmer, you should be able to complete or extend this tutorial easily.
-
-* TOC
-{:toc}
-
-{% include note.html content="This tutorial was written on macOS High Sierra
-10.13.4. If you use a Windows or Linux system, you can still follow along.
-However, you will need to \"translate\" the instructions appropriately for your
-operating system."%}
-
-## Set up your environment
-
-This tutorial requires Ruby 2.0 or higher. To confirm you have Ruby installed and
-that the version, enter the following:
-
-```
-$ ruby -v
-ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin16]
-```
-
-If you do not have Ruby installed, you should install it. If you want to run multiple, different versions
-of Ruby on your workstation, you can use rvm.
-
-After successfully installing Ruby, install the `rails` gem. This tutorial was
-written using `rails` version 5.2.1. You can use the `gem list` command to see
-if the `gem` is already installed. To install the `rails` gem, do the following:
-
-```
-$ gem install rails
-```
-
-
-## Create a Rails website
-
-1. Create a new Rails project by using the `rails new` command:
-
- ```
- $ rails new blockstack-rails-example
- ```
-
- The command generates a project directory.
-
-2. Change directory to the `blockstack-rails-example` project directory.
-
- ```bash
- $ cd blockstack-rails-example
- ```
-
-3. Start your project with the `rails` server.
-
- ```bash
- $ rails s
- ````
-
- The `s` flag is the alias for server.
-
-4. Load the `http://localhost:3000` address in your browser.
-
- You chould see default homepage that says `Yay! You're on Rails!`.
-
- ![](images/rails-installed.png)
-
-
-5. Go ahead and stop the server by entering `CTRL-C` on the command line.
-
-## Add a homepage
-
-In this section, you add a homepage to your new website. To do this, you create
-a new controller, called `PagesController`, that includes the homepage. To set
-this up and test this, do the following:
-
-1. Use `rails` to generate the home page.
-
- ```bash
- $ rails generate controller pages home
- ```
-
- This command instructs rails to create a `controller` names `pages`, that
- includes the method `home`. After running this, you'll have a few new files:
-
- - `/app/controllers/pages/pages_controller.rb` - this is the new controller you created, with a `home` method
- - `/app/views/pages/home.html.erb` - this is the template that rails will use to render the view for `home`.
-
- The command also modifies the pre-existing file `/config/routes.rb` and
- configures your server to use the `home` method for the route `/pages/home`.
-
-2. Edit the `/config/routes.rb` file to match the following:
-
- ```ruby
- Rails.application.routes.draw do
- root to: 'pages#home'
- # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
- end
- ```
-
- This code calls the `root` method with the `to` option which instructs rails
- to use the `home` method in the `pages` controller as the homepage.
-
-3. Save and close the `/config/routes.rb` file.
-
-4. Start the rails server (`rails s`) and open the new [homepage](http://localhost:3000/), you should see your new homepage.
-
- ![](images/rails-pageshome.png)
-
- You can find the source for the home page in the `/app/views/pages/home.html.erb` file.
-
-## Install OmniAuth and OmniAuth-blockstack gems
-
-You'll use the OmniAuth plugin to setup Blockstack authentication. OmniAuth is a popular framework for integrating third-party authentication with a ruby on rails website. Blockstack provides an OmniAuth plugin, OmniAuth-blockstack to make this easy for you.
-
-1. Stop the Rails server if it is running.
-
-2. Edit the `Gemfile` in the root of your project and add two gems, one for OmniAuth and one for the Blockstack plugin.
-
- ```ruby
- gem 'omniauth'
- gem 'omniauth-blockstack'
- ```
-
-3. Save and close the `Gemfile`.
-
-4. Install the gems by running the `bundle install` command.
-
- ```bash
- $ bundle install
- ```
-
- {% include note.html content="
If the bundle command returns a message:
-
Your Ruby version is 2.0.0, but your Gemfile specified 2.5.1
-
Check if the auto-generated Gemfile includes a line that specifies a conflicting Ruby version. Make sure your `ruby` version matches the Gemfile by running ruby -v You can either switch to that version, or remove the line ruby '2.5.1' from your Gemfile
."%}
-
-
-## Add a OmniAuth callback for Blockstack
-
-
-1. Create a new file at `config/initializers/omniauth.rb`.
-
- ```bash
- $ touch config/initializers/omniauth.rb
- ```
-
- You'll use this file to configure the OmniAuth gem and the Blockstack plugin.
-
-2. Edit your new `config/initializers/omniauth.rb` file and add the following code:
-
- ```ruby
- Rails.application.config.middleware.use OmniAuth::Builder do
- provider :blockstack
- end
- ```
-
- This adds the OmniAuth middleware to your project, and tells OmniAuth
- to use the Blockstack provider. After a user signs in with OmniAuth, you need
- to specify a `callback` method for Blockstack to handle the rest of the sign in flow.
-
- The callback method is typically where you grab the authentication information from the
- third party, save some data, and sign the user in to your application by
- saving information in cookies.
-
-3. Save and close the `config/initializers/omniauth.rb` file.
-
-3. Edit the `/app/controllers/pages_controller.rb` file
-
- This file defines a `PagesController` class where you will add the
- `blockstack_callback` method. When you are done the file should look like
- the following:
-
- ```ruby
- class PagesController < ApplicationController
- def home
- end
-
- def blockstack_callback
- puts 'in the callback'
- blockstack_info = request.env['omniauth.auth']
- session[:blockstack_user] = blockstack_info
- redirect_to '/'
- end
- end
- ```
-
- The `puts` line is just a debug output to the console. The gets the user's
- Blockstack info from `env['omniauth.hash`], which is where OmniAuth stores
- all authentication info. Then, that info is loaded into the `session` object
- under the key `:blockstack_user`. By adding this info to the session, the
- info is saved to a cookie which is easy to reference later on.
-
-4. Edit the `/app/views/pages/home.html.erb` file and direct the user to sign in with Blockstack.
-
- Modify the HTML to look like this:
-
- ```html
-
- <%= debug session[:blockstack_user] %>
- ```
-
- The home page directs the user to sign in with Blockstack. The `<%= debug
- session[:blockstack_user] %>` tag tells rails to output the variable
- `session[:blockstack_user]` in an easy-to-read format.
-
- This page creates a link to the route `/auth/blockstack`. By default, OmniAuth
- adds routes to your application in the form of `/auth/:provider`. When the
- user visits that page, they're redirected through the third party
- authentication flow.
-
-5. Save and close the `/app/views/pages/home.html.erb` file.
-6. Edit the `config/routes.rb` file and configure a route to handle the Blockstack callback.
-
- ```ruby
- Rails.application.routes.draw do
- root to: 'pages#home'
- get '/auth/blockstack/callback' => 'pages#blockstack_callback'
- # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
- end
- ```
-
- The `get` line tells the your server to invoke the `blockstack_callback`
- method when the user visits `/auth/blockstack/callback`. By default,
- OmniAuth redirects the user to `/auth/:provider/callback` whenever the users
- comes back from a third-party login.
-
-7. Save and close the `config/routes.rb` file.
-
-
-## Test the Blockstack authentication
-
-1. Start the rails server.
-
- ```
- $ rails s
- ```
-
- You should see the following:
-
- ![](images/rails-newpage.png)
-
-2. Click the **Log In with Blockstack** link.
-
- ![](images/rails-connect.png)
-
- This connect takes you to the Blockstack
-
- ![](images/rails-login-2.png)
-
-3. Log in with the Blockstack web application.
-
- For information on creating or logging in with a Blockstack identity, see the
- use a Blockstack identity. After you finish signing in
- with your identity, you are redirected back to your homepage:
-
- ![](images/rails-newpage-v2.png)
-
- At this point, the Blockstack information is stored in the `session`.
-
-If you want to develop your application further, you would use a standard log
-out to complete the session. Your code to log out would call
-`session[:blockstack_user] = nil` to destroy the Blockstack information.
-
-
-## Conclusion
-{:.no_toc}
-
-Congratulations! You've successfully integrated Blockstack authentication into a
-website. You can now build out a fully-fledged rails app with the ability to use
-Blockstack for decentralized user authentication.
-
-Let folks know your work by tweeting: Tweet your work!
diff --git a/_develop/betatesting.md b/_develop/betatesting.md
deleted file mode 100644
index 701121ff..00000000
--- a/_develop/betatesting.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-layout: learn
-permalink: /:collection/:path.html
----
-
-# Test Blockstack beta features
-
-Blockstack is updated when our team releases new functionality. Significant issues may require patches as well and so result in new releases. A new release of Blockstack is first previewed through a beta before the official release. This allows developers on the Blockstack platform to test their applications with the new functionality before app users.
-
-* TOC
-{:toc}
-
-
-## How to locate your version
-
-If you are running the local version of Blockstack, you are also running the most current release of the blockstack.js library. The actual values are available from blockstack/blockstack-browser and blockstack/blockstack.js.
-
-If you have installed the local Blockstack client on macOS, you can use the "hidden" menu on the client to check for version updates. If you have installed the Windows version, you cannot check for updates in this way. Instead, you must visit the installed application in your control center and find the version listed there.
-
-
-
-
-## Using the beta version
-
-The beta version of Blockstack uses the code from the Blockstack `develop` branch. When using this code, you can test the latest versions but you may encounter issues. Please file any issues on the blockstack/blockstack-browser repository.
-
-To use the beta version of the web application, simply visit the beta.blockstack.browser.org app. If you are using a local client, you can use the hidden menu to turn beta mode on. To turn it off, simply return to using the regular menu.
-
-Once beta mode is engaged, your local Blockstack redirects all activity to a hosted version of Blockstack at `beta.browser.blockstack.org`. You'll have to sign in with your Blockstack ID again to the beta code. You can resume usage of your local Blockstack client at any time by disabling the beta mode in the hidden menu.
-
-{% include note.html content="The Linux version of the local Blockstack client does not support a beta mode. Instead, you should test using the beta version of the web app." %}
-
-## Display the hidden menu on the Blockstack client
-
-Before you begin, make sure you have started the local Blockstack client. Once started, the client appears in your OS toolbar as a small, Blockstack icon.
-
-To display the hidden menu, on macOS, you can do the following:
-
-1. Hover over the Blockstack icon in your menu bar.
-2. Press and hold down the **option** key while clicking the Blockstack icon.
-
- The system displays the hidden menu.
-
-
-
-3. Check for updates.
-
-
-To display the hidden menu on Windows:
-
-1. Hover over the Blockstack icon in your desktop toolbar.
-2. Press and hold down the **ALT** key while clicking the Blockstack icon.
-
- The system displays the hidden menu.
-
-
-
diff --git a/_develop/dapp_principles.md b/_develop/dapp_principles.md
deleted file mode 100644
index a83c3d8d..00000000
--- a/_develop/dapp_principles.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-layout: learn
-permalink: /:collection/:path.html
----
-# Principles of Blockstack applications
-{:.no_toc}
-
-There are as many perspectives on what makes a decentralized app (DApp) as there
-are DApp developers. This section defines the principles that Blockstack
-advocates for DApps operating within its platform.
-
-* TOC
-{:toc}
-
-## The principles
-
-An application is considered a Blockstack DApp if it adheres to the following three principles.
-
-### I. Users own their data
-
-Users own their application data independent of and *outside of* the application. A Blockstack application is only considered decentralized if its users control where their data is hosted and it can prove that they created the data.
-Blockstack applications meet this principle if they use the Gaia storage system. Users may sign and/or encrypt their data in Gaia end-to-end. All files in Gaia are addressed by a user identifier, an application’s hostname, and a filename. Through Gaia, users can prove data ownership and restrict access.
-In the future, users will be able to choose on an app-by-app basis which Gaia hub serves their application data.
-
-### II. Users own their identities
-
-Users are the sole administer of their own independent and unique identifiers. Within an application, users must be distinguishable by unique identifiers. The DApp cannot mask or take away a user’s identifier, and a user must be able to bind their identifier to the data they create.
-Blockstack DApps should expect that each user can own one or more IDs. In turn, these IDs are owned by a private key under the user’s control. The IDs are acquired through the Blockstack naming system. First time users that log into the Blockstack application get a free `id.blockstack` in the Blockstack namespace.
-
-Blockstack IDs are recorded on the Stacks blockchain; this means Blockstack cannot hide IDs. Blockstack IDs each have a public key assigned to them via the blockchain records that encode their operational history. This public key allows users to bind data to their Blockstack IDs through cryptographic signatures (signatures that they use when authenticating on a DApp).
-
-### III. Users have free choice of clients
-
-Identities and *data* are application independent. An application cannot be considered a DApp unless it allows users to interact with their identities and data such that the user can later do so via a different DApp.
-For example, a user that creates data in client `X` must be able access that data from a different client, `Y`, provided the client allows compatible mechanisms. Ultimately, the user has the freedom to write their own client that interacts with their own data.
-
-Blockstack’s APIs and SDKs make it easy to build applications that adhere to this principle. Existing Blockstack applications have this property today simply because they don’t have any irreplaceable server-side logic.
-
-In the future, Blockstack applications must continue to meet the first two principles but need not meet this one. For example, an application could encrypt data in-transit between the application’s client and the user’s chosen Gaia hub provider. In this case, unless the app divulges the encryption key to the user, the user would not have free choice of clients; the user could only use clients with which the app’s servers choose to interact. This use case could apply for users interacting with enterprise or employer-owned data.
-
-## Optional DApp components
-
-You’ll notice the Blockstack principles avoid adherence to a particular network topology or architecture. Many DApps have defining characteristics that are implementation-specific rather than expressions of overall DApp design goals. These aspects are mentioned here as specific non-goals of Blockstack applications.
-
-
-### Smart contracts
-
-Another word for “smart contract” is “replicated state machine.” Some DApps need each peer to execute the same sequence of operations in order to fulfill their business needs (in which case a smart contract would be appropriate), but many do not.
-Blockstack DApps are not required to use smart contracts at all.
-
-### Reliance on tokens and/or non-fungible assets
-
-While having a crypto token or asset can help incentivize DApp deployment and usage, they are not strictly necessary for DApp operation.
-
-## DApps serve users
-
-Fundamentally, DApps should serve users by preserving user autonomy. Developers should not profit from abusive features or neglectful designs. Because Blockstack applications allow users to own their identity and data and gives them free choice of clients, any user can simply stop or avoid using bad DApps with near-zero switching cost.
-
diff --git a/_develop/deploy-tips.md b/_develop/deploy-tips.md
index 35330750..142be0cc 100644
--- a/_develop/deploy-tips.md
+++ b/_develop/deploy-tips.md
@@ -1,9 +1,9 @@
---
layout: learn
-description: Blockstack app mining documentation
+description: Blockstack dApp documentation
permalink: /:collection/:path.html
---
-# How to deploy a Blockstack dApp
+# Deployment
{:.no_toc}
Blockstack applications are web applications that authenticate users with Blockstack Auth and store data with Gaia. Both of these technologies can be accessed on the client side. As such, Blockstack apps tend to be simple in design and operation, since in many cases, they don’t have to host anything besides the application’s assets.
diff --git a/_develop/mining-rewards.md b/_develop/mining-rewards.md
deleted file mode 100644
index a39f8c50..00000000
--- a/_develop/mining-rewards.md
+++ /dev/null
@@ -1,69 +0,0 @@
----
-layout: learn
-description: Blockstack app mining documentation
-permalink: /:collection/:path.html
----
-**This is outdated documentation for the App Mining program. App Mining Has Been Paused.
-Thank you to the hundreds of you that participated and congratulations to our winners.**
-[More info](https://blog.blockstack.org/the-next-phase-of-app-mining/) & [all apps →](https://app.co/blockstack)
-
-# How payouts are administered
-
-The payouts are administered by Blockstack PBC and facilitated by App.co. Here is how the payouts ramp:
-
-
-
-
-
-
Rewards Period
-
Rewards Pool
-
Reward Share
-
Total Monthly Bonus Award for the 10 Highest Rated New Apps
-
-
-
-
-
August 2019 - October 2019
-
$200,000 ($100,000 in BTC* and $100,000 in Stacks tokens**)
-
20% of the remaining BTC payout for each sequentially ranked app + 3% of the remaining STX payout for each sequentially ranked app
-
$10,000
-
-
-
November 2019 - January 2020
-
$400,000 in payout pool ($300k in STX and $100k in BTC)
-
5% of the remaining STX payout for each sequentially ranked app
-
$30,000
-
-
-
February 2020
-
$500,000 in payout pool
-
5% of the remaining STX payout for each sequentially ranked app
-
$50,000
-
-
-
March 2020 - April 2020
-
$700,000 in payout pool
-
4% of the remaining STX payout for each sequentially ranked app
-
$70,000
-
-
-
May 2020 - October 2020
-
$1,000,000 in Stacks tokens
-
3% of the remaining STX payout for each sequentially ranked app
-
$100,000
-
-
-
-
-
-
Table notes
-
-
* The value of BTC will be based on market value at the time of the payout.
-
** The price of the Stacks Tokens distributed under the App Mining program in exchange for non-cash consideration will be deemed to be $0.30 per token for at least three months from the first distribution of tokens pursuant to this offering circular, for purposes of determining whether over $40,000,000 of Stacks Tokens have been sold under this offering.
-
-If at any time following that three-month period the Stacks Tokens are traded on one or more authorized exchanges or alternative trading systems, and there are trades for at least one million Stacks Tokens executed through or on exchanges or alternative trading systems during any calendar month (any such month, a calculationmonth), then we will value the tokens paid to developers in the following month and in all subsequent months until and including the end of the next calculation month at the average closing bid price for the tokens during the calculation month.
-
-
-We will disclose both any changes to the price of the Stacks Tokens to be distributed pursuant to this offering circular, and whether the new calculation price will result in a curtailment of the number of Stacks Tokens being issued in the next month, using either an offering circular supplement filed under Rule 253(g)(2) or a post-qualification amendment, depending on the facts and circumstances at the time of such change.
-
-
diff --git a/_develop/mining_enroll.md b/_develop/mining_enroll.md
deleted file mode 100644
index 3166abef..00000000
--- a/_develop/mining_enroll.md
+++ /dev/null
@@ -1,94 +0,0 @@
----
-layout: learn
-permalink: /:collection/:path.html
----
-# How to enroll in App Mining
-
-**This is outdated documentation for the App Mining program. App Mining Has Been Paused.
-Thank you to the hundreds of you that participated and congratulations to our winners.**
-[More info](https://blog.blockstack.org/the-next-phase-of-app-mining/) & [all apps →](https://app.co/blockstack)
-
-Application mining rewards developers for building decentralized applications
-(DApps). You must enroll your application to be eligible for these
-rewards. This section explains the enrollment process and covers the following topics:
-
-* TOC
-{:toc}
-
-
-{% include warning.html content="You must complete enrollment including submission of verification materials and BTC address prior to the month in which you wish to be considered. If your submission is incomplete it will not be reviewed. Please note that the submission process can take time to complete. No late submissions will be accepted, but we'll be happy to include you in the following month's ranking. You should register early to allow for sufficient time for collection of all required materials." %}
-
-
-## Complete the add and submission forms on App.co
-
-Make sure you enroll in advance of the month you would first like your app to complete. You need only enroll in App Mining once. A single submission enrolls your app in the month you submit and every month following automatically.
-
-To apply, do the following:
-
-1. Integrate Blockstack Auth into your app.
-
- Your application code can reside in a public or a private repository.
-
-2. Complete the App.co form.
-
- You should fill out all the required fields.
-
-
-
-
- {% include required-fields.md %}
-
- Make sure you choose **Blockstack** from the **Authentication** list on the form.
-
-
-3. Press **Submit App**.
-
- The system responds with the a completion dialog and an application link.
-
-
-
- You will also receive an email from the App.co team acknowledging receipt of your submission.
-
-4. Copy and store the application link.
-
-## Provide pay out and tax details
-
-After you submit an app to the App.co site **you must supply the additional details** for your application to be complete. When you successfully submitted your application, you received a link to your submission on App.co. This link gives you the ability to submit your application details such as your tax and payment addresses.
-
-
-
-This dialog requires that you provide the following materials.
-
-
-
-
Required
-
Why?
-
-
-
Payment Details
-
Presently, App Mining payments are made in Bitcoin (BTC) but we anticipate paying in Stacks (STX) soon. For your Stacks payment to start accruing for future delivery, you must provide both BTC and STX addresses. Your app cannot participate in App Mining without Blockstack having both address types on file. To get a STX address, you need to install the Stacks Wallet.
-
-
-
Identity verification
-
We are ready to pay you Bitcoin and Stacks tokens for building a great Blockstack app, but we also need to comply with all applicable laws. This means we must confirm your identity before you can participate in App Mining. Identity verification is a process designed to confirm your identity and protect you from identity theft. You must submit an image of your ID document, which is checked to ensure it is legitimate and has not been altered or manipulated. Valid identity documents are a passport, an identity card, or a driver's license.
-
-
-
-
Document Signing
-
You must sign our participation agreement to become eligible to participate in App Mining. Signing is a process, you provide an email and download some accompanying materials. Then, you complete the signing process via an online process.
-
-
-
Tax Documents
-
Person's or entities (businesses or organizations and so forth) must provide tax documents to participate. US persons or entity supply a IRS Form W-9. Persons outside of the US supply a IRS Form W-8 while entities supply a IRS Form W-8BEN-E. You upload your completed forms via Dropbox, a DropBox account is not required to upload.
-
-
-
-
-After you submit your materials, Blockstack verifies your information and your DApp appears in
-the list of registered apps.
-
-## How to check the status of your submission
-
-You can use your application details link to check on your submission status:
-
-
diff --git a/_develop/mining_intro.md b/_develop/mining_intro.md
deleted file mode 100644
index 44f819a6..00000000
--- a/_develop/mining_intro.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-layout: learn
-description: Blockstack app mining documentation
-permalink: /:collection/:path.html
----
-# Understand App Mining
-{:.no_toc}
-
-**This is outdated documentation for the app mining program. App Mining Has Been Paused.
-Thank you to the hundreds of you that participated and congratulations to our winners.**
-[More info](https://blog.blockstack.org/the-next-phase-of-app-mining/) & [all apps →](https://app.co/blockstack)
-
-This section explains App Mining, a program for developers. For Blockstack, App Mining is a crucial factor in the growth of both blockchain applications and users.
-
-**This is outdated documentation for the app mining program. App Mining Has Been Paused.
-Thank you to the hundreds of you that participated and congratulations to our winners.**
-[More info](https://blog.blockstack.org/the-next-phase-of-app-mining/) & [all apps →](https://app.co/blockstack)
-
-* TOC
-{:toc}
-
-## What is App Mining?
-
-{% include intro-appmining.md %}
-
-## How apps are reviewed and ranked
-
-Blockstack uses the third-party reviewers:
-
-* Awario
-* TryMyUI
-* Internet Labs.
-
-These reviewers are independent, and generally rely on their own proprietary data and insights to generate rankings.
-
-{% include mining-ranking.md %}
-
-Read more about [how reviewers score your app](app-reviewers.html) and [how your app ranking is calculated](app-rankings.html).
-
-
-## Determining how much an app is paid
-
-{% include payout-appmining.md %}
-
-This first release of App Mining uses the initial version of our ranking and
-payout mechanism. Blockstack has taken care to be thoughtful and fair, but
-things may change as we learn more and get feedback from the community. Please
-let us know what you think by commenting in our forum or by emailing us at !
-
-The ranking and payout mechanisms are under constant review and are documented at the app mining's github repository.
diff --git a/_develop/mining_review.md b/_develop/mining_review.md
deleted file mode 100644
index 235cbfff..00000000
--- a/_develop/mining_review.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-layout: learn
-description: Blockstack app mining documentation
-permalink: /:collection/:path.html
----
-# App reviewer instructions
-
-Reviewers submit their app rankings to Blockstack every month. The first day of
-the month Blockstack will email reviewers a spreadsheet on which to record rankings.
-
-To submit app rankings, please complete the following steps:
-
-1. Download the spreadsheet for that month.
-
- The spreadsheet is sent to the email address Blocksack has on file for you. The sheet lists all apps eligible for ranking.
-
-2. Record your rankings on the spreadsheet.
-
- Place a the rank value in the **Ranking** column next to each app you would
- like to rank. You can rank only those apps you want and omit ranking others.
- Rank each application numerically where 1 (one) is the highest.
-
- Please avoid modifying the spreadsheet in apart from adding your rankings.
- The `App ID` column, in particular, must be preserved to process your rankings
- accurately.
-
-3. Return your rankings by the 15th of each month to .
-
- {% include important.html content="Blockstack must receive your rankings by the 15th of the month or they won't be considered!" %}
-
-4. Attach your completed spreadsheet to your return email.
-
- Include in the email a brief explanation summarizing your methodology or
- thoughts when ranking. Please mention any app you want to highlight for the
- month.
-
-After receiving the rankings from all reviewers, Blockstack will combine them to calculate each application's final z-scores.
diff --git a/_develop/overview_auth.md b/_develop/overview_auth.md
index 4ce0d9f8..a9eb35e0 100644
--- a/_develop/overview_auth.md
+++ b/_develop/overview_auth.md
@@ -3,7 +3,7 @@ layout: learn
permalink: /:collection/:path.html
---
-# Understand Blockstack Auth
+# Guide to Blockstack Auth
{:.no_toc}
Blockstack Auth provides single sign on and authentication without third parties or remote servers. On this page, you'll get an overview of authentication from a developer and user perspective. The following topics are covered:
@@ -44,11 +44,11 @@ When she chooses an ID (or creates a new one), Alice is redirected back to the D
Scopes define the permissions requested from, and that a user accepts, through the sign-in dialog.
DApps may request any of the following scopes:
-| Scope | Definition|
-|---|---|
-| `store_write` | Read and write data to the user's Gaia hub in an app-specific storage bucket. |
+| Scope | Definition |
+| -------------- | ------------------------------------------------------------------------------------ |
+| `store_write` | Read and write data to the user's Gaia hub in an app-specific storage bucket. |
| `publish_data` | Publish data so that other users of the app can discover and interact with the user. |
-| `email` | Requests the user's email if available. |
+| `email` | Requests the user's email if available. |
The permissions scope should be specified through the AppConfig object. If no `scopes` array is provided to the `redirectToSignIn` or `makeAuthRequest`
functions, the default is to request `['store_write']`.
diff --git a/_develop/profiles.md b/_develop/profiles.md
index c90b965e..9b597307 100644
--- a/_develop/profiles.md
+++ b/_develop/profiles.md
@@ -2,7 +2,7 @@
layout: learn
permalink: /:collection/:path.html
---
-# Work with Profiles
+# Guide to Blockstack Profiles
{:.no_toc}
diff --git a/_develop/storage.md b/_develop/storage.md
index c6bef379..27e623c7 100644
--- a/_develop/storage.md
+++ b/_develop/storage.md
@@ -2,7 +2,7 @@
layout: learn
permalink: /:collection/:path.html
---
-# Work with Storage
+# Guide to Blockstack Storage
{:.no_toc}
diff --git a/_develop/zero_to_dapp_1.md b/_develop/zero_to_dapp_1.md
deleted file mode 100644
index 3b286f7a..00000000
--- a/_develop/zero_to_dapp_1.md
+++ /dev/null
@@ -1,232 +0,0 @@
----
-layout: learn
-description: Blockstack Zero-to-DApp tutorial
-permalink: /:collection/:path.html
-image: /assets/img/zero-to-dapp.png
----
-# 1 - About DApps and App Mining
-{:.no_toc}
-
-**Zero-to-DApp 1 of 4**
-
-Welcome to the Blockstack Zero-to-DApp tutorial. The tutorial uses the
-Blockstack platform to teach you about blockchain technology and the Blockstack
-Ecosystem. The tutorial teaches you what makes a DApp different than a
-traditional application. You'll build and run a DApp. You'll also learn about
-the Application Mining program which awards funds to DApp developer every month.
-
-The tutorial has four parts of which this is first, and it contains the
-following topics:
-
-* TOC
-{:toc}
-
-You can complete the entire Zero-to-DApp tutorial in less than 45 minutes. If
-you prefer a 10-minute hello-world code sample, see the [Hello, Blockstack
-Tutorial](/browser/hello-blockstack).
-
-
-### Skills you need to follow this tutorial
-{:.no_toc}
-
-This tutorial is written for developers and others who want to learn about DApps
-and how the Blockstack ecosystem supports their development. As a result, the
-target audience is intentionally broad. Anyone with access to a Windows, Mac, or
-Linux computer and some familiarity with a command line should be able to follow
-along.
-
-If you are good at following directions, chances are you can complete this
-tutorial even if you have no programming experience. Knowledgeable developers
-should easily be able to complete the tutorial within an hour by following
-along.
-
-If you are a developer superhero, you may want to skim or move
-quickly through the pages and that's fine too.
-
-{% include note.html content="For best results, use the Chrome browser for this tutorial. Currently, the Blockstack Browser works best in Chrome and you can encounter problems using browsers such as Safari or Firefox. Currently, IE and the Edge browsers are not supported." %}
-
-
-## How traditional and decentralized applications differ
-
-In this tutorial, you build, run, modify, and deploy a decentralized application
-(DApp) called Animal Kingdom. A DApp uses blockchain technology for the
-authentication and data storage components of an application’s platform.
-Blockchain applications are decentralized applications, meaning they move data
-control and identity management from central authorities and organizations to
-individual users.
-
-Anyone who has had their identity stolen or lost money because of a data breach,
-understands that centralized applications come with personal risk. Anyone who
-has lived in or visited a foreign country and lost access to a site, to a
-service, or to information because of government censorship also understands how
-centralization impacts how people live.
-
-Users and businesses see DApps as valuable because they solve the
-centralization problems of traditional applications. The following table
-describes the features of traditional applications and the features of
-blockchain applications:
-
-
-
-
Traditional application
-
Decentralized application
-
-
-
Users must create many username and password combinations for each service or application. Each combination must be managed and maintained. Also, each creation requires the user to provide important or unique information into the care of a third-party.
-
Users create and own one or more identities. They use their identities with all applications and services. For example, a user could use the same identity for buying books online as they use for social media.
-
-
-
Multiple third-party applications and services store personal data from individual users in backend servers. These backend servers are under the control of the application or service. Users leaving the application leave their data behind.
-
Personal information and data is encrypted and remains under the control of the user. Users leaving an application leave no data behind because none was stored with the application.
-
-
-
Multiple accounts across many servers make personal data subject to attack, misuse, and uncontrolled collection.
-
Users can audit access to their data and know who accessed their data and which data were accessed.
-
-
-
Central authorities and middlemen control network access enabling them to censor applications and/or users that use them.
-
Companies are developing blockchains that run over peer-to-peer networks. These future networks can make shutting down or entirely blocking a decentralized application close to impossible.
-
-
-
-The blockchain technology you build a DApp with determines the features available to your application.
-
-## Try your first DApp by creating an identity
-
-The Blockstack Web browser is a DApp for the web. Users can use it to create and
-manage identities in the Blockstack Ecosystem. DApps built with the Blockstack
-platform, use the on-boarding sequence provided by the browser to onboard their
-users. Currently, users can create a Blockstack ID for free or buy their own
-ID.
-
-If you haven't already created your own Blockstack ID, do this now. As you
-create an ID, consider what interactions are familiar to you from traditional
-applications, and which are not.
-
-{% include create_id.md %}
-
-If you already have a Blockstack ID, launch the browser and try resetting it. Or
-trying logging on from a device or browser software you haven't used before.
-
-## Seeding DApp market with application mining
-
-Blockchain applications are a new paradigm for both application developers and
-application users. New paradigms in any market, think solar power or electric
-vehicles, need public and private coalitions to grow. The centralized hosting
-and services known as cloud computing were once new paradigms. It was the
-investment of billions in funds and incentives from governments and private
-companies that grew the cloud computing market.
-
-
-
-
App Mining Eligibility Requirements
-
DApps that are eligible for application mining must:
-
-
-
Implement Blockstack authentication
-
Invite registration and use by the general public
-
-
-
Storing data in a Gaia storage hub is optional. Potentially in the future it may be required.
-
-
As you work through this Zero-to-DApp tutorial, you’ll build and deploy a sample
-application that meets these requirements. While the application you build won't
-be eligible for application mining, completing the tutorial makes you
-eligible for a free, limited edition t-shirt:
-
-
-
-
You'll learn how to get your t-shirt in part 4 of this tutorial.
-
-
-
-## Overview of the DApp you will build
-
-You are going to build a DApp called AnimalKingdom. Animal Kingdom is a DApp for
-the web. Users log into it and create an animal persona that rules over a
-specific territory. The combination of persona and territory is a kingdom. Once
-you create a kingdom, you can add subjects from other kingdoms.
-
-The Animal Kingdom interacts with two Blockstack services, the Blockstack
-Browser (https://browser.blockstack.org) and the Gaia data storage hub
-(https://hub.blockstack.org/). The Blockstack Browser is itself
-a DApp. The storage hub is purely a service without user-facing functionality.
-
-The following table describes the key interactions and screens in the DApp.
-
-
Users log in (authenticate) with a Blockstack identity. By authenticating, the user gives the application the ability to get and put data in the user's Gaia storage hub.
The Blockstack login dialogs are part of the Blockstack Browser which is itself
- a DApp. Once a user authenticates, the DApp code automatically
- returns them to the Kingdom they were attempting to enter.
First-time visitors to a kingdom are prompted to create an animal persona and
- a territory to rule. Once they make a selection, users click Done to create a
- kingdom to rule. Behind the scenes, the data about the user's selection is stored in the user's Gaia hub.
-
Each kingdom has animals and territories. Users can edit their original persona/animal combination. You'll learn how to modify the Animal Kingdom code to add new animals and territories.
Users can add subjects from territories in their own Animal Kingdom. The DApp updates the user's Gaia hub each time the user adds a subject. Users can also visit other Animal Kingdom installations and add subjects from these as well. You'll learn how to modify the Other Kingdoms available in your installation.
-
-
-
-
-
-You can try a completed version of this application for yourself by using your
-Blockstack identity to log into the Blockstack Animal Kingdom.
-
-## Where to go next
-{:.no_toc}
-
-This section introduced you to the benefits of a decentralized application
-(DApp). You also learned that, similar to other new paradigms, both
-the public and private companies are committing serious resources to developing
-blockchain tech. Finally, you learned Blockstack is designed so that you
-can quickly build a DApp and enter this emerging market.
-
-In the next section, you learn more about developing DApps and how they are
-different from traditional applications. You’ll also learn about the resources
-Blockstack provides for DApp developers that help you clarify where to put your
-efforts and how to fund them.
-
-Continue to [2 of 4, Zero-to-DApp](zero_to_dapp_2.html).
diff --git a/_develop/zero_to_dapp_2.md b/_develop/zero_to_dapp_2.md
deleted file mode 100644
index 6622bffa..00000000
--- a/_develop/zero_to_dapp_2.md
+++ /dev/null
@@ -1,330 +0,0 @@
----
-layout: learn
-description: Blockstack Zero-to-DApp tutorial
-permalink: /:collection/:path.html
-image: /assets/img/zero-to-dapp.png
----
-# 2 - Learn about the platform
-{:.no_toc}
-
-**Zero-to-DApp 2 of 4 for macOS/Linux (or [Windows](zero_to_dapp_2_win.html))**
-
-In this part, you learn how the Blockstack platform lowers the barriers to
-building with blockchain technology. You'll set up all the prerequisites you
-need to build a typical web DApp. Finally, you'll build and run your own version
-of the Animal Kingdom DApp introduced in [part 1](zero_to_dapp_1.html). This
-part has the following topics:
-
-* TOC
-{:toc}
-
-
-## A blockchain platform without pain
-
-Blockstack’s mission is to bring about a new internet where users control the
-access to their data and how it is used. With this mission in mind, Blockstack
-Public Benefit Corp. (PBC) started development of the Blockstack platform in 2017.
-
-The platform’s development philosophy followed two simple principles. First,
-create backend services that allow decentralized applications to be both
-performant and scalable. Second, provide simple, familiar development
-interfaces to blockchain technology. The result of this philosophy is a
-technology platform that allows you to:
-
-* **Build your application in any Javascript framework.** You can use the blockchain without learning a new programming language or extending your application stack. Currently, Blockstack supports a react generator for web applications and SDKs for both iOS and Android.
-* **Use well-defined REST endpoints that simplify and encapsulate the blockchain backend.** The Blockstack Javascript API reduces blockchain operations to familiar GET and PUT operations.
-* **Access the Blockstack’s Naming System (BNS).** The system has over 90K users that can immediately start using your application.
-* **Scale quickly to large, performant production systems.** Blockstack’s Gaia storage system gives fast, scalable performance on a level comparable to Amazon S3, Google Drive, or Azure.
-
-Using Blockstack’s technology you can start building immediately on the
-blockchain with the knowledge you have today. You won’t need to spend time or
-effort developing additional knowledge of specialized languages or technologies.
-
-## Get prerequisites and set up your environment
-
-To follow the procedures in the rest of this tutorial, you need the following:
-
-* A Blockstack ID (identity) to test your Animal Kingdom.
-* Access to the a terminal window and some familiarity with the command line it provides.
-* On Mac, an installation of the XCode command-line tools to support Node Package Manager (`npm`)
-* The Node Package Manager package manager.
-
-Follow the procedures in this section to install these components.
-
-{% include note.html content="For best results, please use the Chrome browser for this tutorial. Currently, the Blockstack Browser works best in Chrome and you can encounter problems using browsers such as Safari or Firefox. We are working on a fix for these issues." %}
-
-
-### Confirm or get a Blockstack ID
-{:.no_toc}
-
-Confirm you have a Blockstack ID also known as an identity; `joe.id.blockstack`
-is an example of an identity.
-
-* If you have an existing ID, log into the Blockstack Browser in your browser.
-
- Logging in confirms you have a valid ID with the required _secret recovery
- key_ or _magic recovery code_. The secret recovery key is a 12 or 24 word
- phrase you recorded when you created the ID. The magic recovery code is a
- string of characters Blockstack emailed to you when you created your
- identity. You can confirm your identity with either.
-
-* If you do not yet have a Blockstack ID, create one through the Blockstack Browser.
-
- Instructions for creating an ID are available in this documentation.
-
-
-### Ensure command-line access
-{:.no_toc}
-
-If you are using a Mac, you can find the **terminal** in the **Application >
-Launchpad > Other** folder.
-
-
-
-If you don't often use the command line, take a moment to test some common commands.
-
-
-
-
Command
-
What it does
-
-
-
pwd
-
Print the name of the working directory; the current directory your command line is in.
-
-
-
ls
-
Lists the files and directories in the current directory.
-
-
-
cd
-
Change directory to navigate to locations in your file system.
-
-
-
-### Install XCode Command Line tools
-{:.no_toc}
-
-The Command Line Tool package gives Mac terminal users many commonly used tools,
-utilities, and compilers. Some of the contents installed by NPM require XCode.
-
-1. Open a terminal window on your system.
-2. Enter the `xcode-select` command string:
-
- ```bash
- $ xcode-select --install
- ```
-
-
-
- A software update dialog displays:
-
-
-
-3. Click **Install** to confirm.
-
- You are prompted to agree to the terms of service.
-
-4. Agree to the terms of services.
-
- The tools are installed. This is fairly quick depending on your connection speed.
-
-
-### Install Node Package Manager (NPM)
-{:.no_toc}
-
-Open source developers from every continent use NPM to share software components
-called packages. The Animal Kingdom uses React, Babel, and many other
-components. You'll use the `npm` command to install these packaged components.
-
- 1. Open a terminal window on your system.
- 2. Verify you have installed `npm` using the `which` command.
-
-
-
- If `npm` is installed, `which` returns the command's location in your environment.
-
-3. If the `npm` command is not in your system, install it using the instructions for your operating system.
-
- Installing the NPM tool can take several minutes depending on your connection speed.
-
-## Get the Animal Kingdom code
-
-In this section, you copy the code for Animal Kingdom to your workstation.
-
-1. In your browser (Chrome is recommended), open the Animal Kingdom code repository.
-
- The AnimalKingdom code is kept in a public GitHub repository.
-
-2. Click the **Clone or download** button.
-
- If you have a GitHub account you can choose to clone the original repository
- or fork it and then clone it. These instructions assume you are downloading
- the code.
-
-3. Choose the **Download ZIP** for Animal Kingdom.
-
-
-
-4. Check your download directory for the `animal-kingdom-master.zip` file.
-5. Copy the download zip file to a directory where you keep code projects.
-6. Unzip the file.
-
-
-
- After unzipping the file you should have the `animal-kingdom-master` directory.
-
-7. In your terminal change directory into the top of the directory by entering:
-
- ```bash
- $ cd animal-kingdom-master
- ```
-
- Use the `pwd` command to confirm which directory you are in.
-
- ```bash
- $ pwd
- /Users/manthony/animal-kingdom-master
- ```
-
-8. Take a minute review the files and subdirectories in your Animal Kingdom project.
-
- Use the `ls` command to list directory contents.
-
-
-
-
Name
-
Description
-
-
-
README.md
-
Contains a quick reference for building and running Animal Kingdom.
-
-
-
package.json
-
An NPM project file and a corresponding .lock file.
-
-
-
public
-
Files that are copied into the root of the site you are building.
-
-
-
cors
-
Files to support cross-origin request configuration.
-
-
-
src
-
React source code for the site. This contains configuration files.
-
-
-
-## Build the sample in development mode
-
-You can build and run the Animal Kingdom on your local workstation. Before you
-can run the program you use NPM to get install all the dependent packages. One
-of the key packages `npm` installs for you is the Blockstack Javascript library.
-
-1. Make sure you are in the root directory of the project.
-
- ```bash
- cd ~/animal-kingdom-master
- pwd
- /Users/manthony/animal-kingdom-master
- ```
-
-2. Enter `npm install` to get the software components Animal Kingdom needs.
-
- ```bash
- $ npm install
-
- > fsevents@1.2.4 install /Users/manthony/animal-kingdom-master/node_modules/fsevents
- > node install
-
- node-pre-gyp WARN Tried to download(404): https://fsevents-binaries.s3-us-west-2.amazonaws.com/v1.2.4/fse-v1.2.4-node-v67-darwin-x64.tar.gz
- node-pre-gyp WARN Pre-built binaries not found for fsevents@1.2.4 and node@11.1.0 (node-v67 ABI, unknown) (falling back to source compile with node-gyp)
- SOLINK_MODULE(target) Release/.node
- CXX(target) Release/obj.target/fse/fsevents.o
- In file included from ../fsevents.cc:6:
-
- ...
-
- added 1390 packages from 766 contributors and audited 15238 packages in 16.11s
- found 1 high severity vulnerability
- run `npm audit fix` to fix them, or `npm audit` for details
- $
- ```
-
- This command creates a `node_modules` subdirectory to your project code and
- installs all the code libraries you need for your Animal Kingdom project.
-
-3. Enter the `ls` command to list the contents of your project directory to verify `npm` installed correctly.
-
- ```
- $ ls
- ```
-
- The `node_modules`directory contains many core libraries used by Animal
- Kingdom. For example, the Blockstack Javascript library is in the
- `nodule_modules/blockstack/lib` subdirectory.
-
-
-## Start your Animal Kingdom DApp
-
-1. Start the Animal Kingdom DApp running on your workstation by entering:
-
- ```bash
- npm run start
- ```
-
- The `npm` program uses the `scripts/start.js` file to package the Animal
- Kingdom application. Once the code is packaged, the DApp opens Animal Kingdom
- running at the `http://localhost:3000` URL in your browser.
-
-2. From the initial Animal Kingdom screen, choose an animal persona and a territory.
-
-
-
-3. Press **Done** at the bottom of the page.
-
- The Animal Kingdom makes a call to the Gaia hub to store your selection.
- After a brief pause, the DApp returns you to the **Your Kingdom** page. If
- you have problems, refresh the page and click **Your Kingdom** in the menu.
-
-
-
-4. Spend a little time exploring the application.
-
- For example, you could edit your animal or visit the other pages such as **Animals** or **Territories**.
-
-5. Go back to your terminal where you started your application is running.
-6. Press `CTRL-C` to stop the application.
-
-
-
-You can always start the application again with `npm run start` command as you will later in this tutorial.
-
-## Resources for Blockstack developers
-
-Blockstack provides several resources that help developers who are building on
-the Platform. Take a moment to investigate these resources:
-
-* Visit the Blockstack forum.
- This is a valuable resource to learn about the questions that other developers have now or have had in the past.
-* Visit the Blockstack Community website to learn about events that may be coming to your area.
-* Join the Blockstack Slack channel which you can join by filling in the following form.
-
-
-## Where to go next
-{:.no_toc}
-
-In this section, you learned about the Blockstack platform and why it makes
-Blockchain development a painless process by encapsulating the complexity of the
-blockstack backend. You also set up a typical development environment for
-developing a Blockstack web application. Finally, you started and ran the
-Animal Kingdom application locally.
-
-In the next section, you explore the application code and learn which recorded
-elements in a DApp make it eligible for App Mining. Continue to [Zero-to-DApp, 3
-of 4](zero_to_dapp_3.html).
diff --git a/_develop/zero_to_dapp_2_win.md b/_develop/zero_to_dapp_2_win.md
deleted file mode 100644
index ceaec60b..00000000
--- a/_develop/zero_to_dapp_2_win.md
+++ /dev/null
@@ -1,345 +0,0 @@
----
-layout: learn
-description: Blockstack Zero-to-DApp tutorial
-permalink: /:collection/:path.html
-image: /assets/img/zero-to-dapp.png
----
-# 2 - Learn about the platform (Windows)
-{:.no_toc}
-
-**Zero-to-DApp 2 of 4 for Windows (or [macOS/Linux](zero_to_dapp_2.html))**
-
-In this part, you learn how the Blockstack platform lowers the barriers to
-building with blockchain technology. You'll set up all the prerequisites you
-need to build a typical web DApp. Finally, you'll build and run your own version
-of the Animal Kingdom DApp introduced in [part 1](zero_to_dapp_1.html). This
-part has the following topics:
-
-* TOC
-{:toc}
-
-
-## A blockchain platform without pain
-
-Blockstack’s mission is to bring about a new internet where users control the
-access to their data and how it is used. With this mission in mind, Blockstack
-Public Benefit Corp. (PBC) started development of the Blockstack platform in 2017.
-
-The platform’s development philosophy followed two simple principles. First,
-create backend services that allow decentralized applications to be both
-performant and scalable. Second, provide simple, familiar development
-interfaces to blockchain technology. The result of this philosophy is a
-technology platform that allows you to:
-
-* **Build your application in any Javascript framework.** You can use the blockchain without learning a new programming language or extending your application stack. Currently, Blockstack supports a react generator for web applications and SDKs for both iOS and Android.
-* **Use well-defined REST endpoints that simplify and encapsulate the blockchain backend.** The Blockstack Javascript API reduces blockchain operations to familiar GET and PUT operations.
-* **Access the Blockstack’s Naming System (BNS).** The system has over 90K users that can immediately start using your application.
-* **Scale quickly to large, performant production systems.** Blockstack’s Gaia storage system gives fast, scalable performance on a level comparable to Amazon S3, Google Drive, or Azure.
-
-Using Blockstack’s technology you can start building immediately on the
-blockchain with the knowledge you have today. You won’t need to spend time or
-effort developing additional knowledge of specialized languages or technologies.
-
-## Get prerequisites and set up your environment
-
-To follow the procedures in the rest of this tutorial, you need the following:
-
-* A Blockstack ID (identity) to test your Animal Kingdom.
-* Access to the Windows Powershell window and some familiarity with the command line it provides.
-* The Node Package Manager package manager.
-* Python and similar additional tools.
-
-Follow the procedures in this section to install these components.
-
-
-
Windows versions and browser clients tested against this setup
-
This setup procedure was tested on Windows 7 and Windows 10 images using VirtualBox. The Chrome browser was used in both environments. For best results, you should use Chrome as well. Currently, IE and the Edge browsers are not supported with Blockstack Dapps.
-
-
-
-
-### Confirm or get a Blockstack ID
-{:.no_toc}
-
-Confirm you have a Blockstack ID also known as an identity; `joe.id.blockstack`
-is an example of an identity.
-
-* If you have an existing ID, log into the Blockstack Browser in your browser.
-
- Logging in confirms you have a valid ID with the required _secret recovery
- key_ or _magic recovery code_. The secret recovery key is a 12 or 24 word
- phrase you recorded when you created the ID. The magic recovery code is a
- string of characters Blockstack emailed to you when you created your
- identity. You can confirm your identity with either.
-
-* If you do not yet have a Blockstack ID, create one through the Blockstack Browser.
-
- Instructions for creating an ID are available in this documentation.
-
-
-### Ensure command-line access
-{:.no_toc}
-
-If you are using Windows 10 Enterprise Edition, you search for the **Powershell** from the **Start Menu**.
-
-
-
-Click on the Powershell icon to open the shell.
-
-
-
-If you don't often use the Powershell, take a moment to test some common commands.
-
-
-
-
Command
-
What it does
-
-
-
pwd
-
Print the name of the working directory; the current directory your command line is in.
-
-
-
ls
-
Lists the files and directories in the current directory.
-
-
-
cd
-
Change directory to navigate to locations in your file system.
-
-
-
-### Install Node Package Manager (NPM)
-{:.no_toc}
-
-Open source developers from every continent use NPM to share software components
-called packages. The Animal Kingdom uses React, Babel, and many other
-components. You'll use the `npm` command to install these packaged components.
-
-1. Open a web browser (for example, Chrome) window on your system.
-2. Navigate to the install it using the instructions for your operating system.
-
-
-
-3. Download the **10.15.3** version.
-4. Open the the `msi` download.
-
- The system displays the installer.
-
-
-
-5. Press **Next** accepting all the defaults until you reach the **Install** button.
-6. Press **Install**.
-
- Installing the NPM tool can take several minutes depending on your connection speed.
-
-7. Open a new Powershell window being sure to **Run as Administrator**.
-
-8. Check the node.js version you just installed.
-
-
-
-9. From the command prompt, install them
-
- ```bash
- PS C:\windows\system32> npm install --global --production windows-build-tools
- ```
-
- This is installation can take a lot of time, when it is done, you see message similar to the following:
-
-
-
-## Get the Animal Kingdom code
-
-In this section, you copy the code for Animal Kingdom to your workstation.
-
-1. In your browser (Chrome is recommended), open the Animal Kingdom code repository.
-
- The AnimalKingdom code is kept in a public GitHub repository.
-
-2. Click the **Clone or download** button.
-
- If you have a GitHub account you can choose to clone the original repository
- or fork it and then clone it. These instructions assume you are downloading
- the code.
-
-3. Move the download file to your c:/user
-
-4. Choose the **Download ZIP** for Animal Kingdom.
-
-
-
-5. Check your **Download** directory for the `animal-kingdom-master.zip` file.
-6. Right click on the file to display the context menu, and choose **Extract All**.
-
-
-
-6. When prompted for the destination of the extracted files, choose the `C:\` directory.
-
-
-
-7. Click **Extract** file.
-
- After extracting the file you should have the `C:\animal-kingdom-master` directory on your system.
-
-8. In your Powershell change directory into the top of the directory by entering:
-
- ```bash
- cd C:\animal-kingdom-master
- ```
-9. Use the `pwd` command to confirm which directory you are in.
-
- ```bash
- C:\animal-kindom-master> pwd
-
- Path
- ----
- C:\animal-kingdom-master
- ```
-
-8. Take a minute review the files and subdirectories in your Animal Kingdom project.
-
- Use the `ls` command to list directory contents.
-
-
-
-
Name
-
Description
-
-
-
README.md
-
Contains a quick reference for building and running Animal Kingdom.
-
-
-
package.json
-
An NPM project file and a corresponding .lock file.
-
-
-
public
-
Files that are copied into the root of the site you are building.
-
-
-
cors
-
Files to support cross-origin request configuration.
-
-
-
src
-
React source code for the site. This contains configuration files.
-
-
-
-## Build the sample in development mode
-
-You can build and run the Animal Kingdom on your local workstation. Before you
-can run the program you use NPM to get install all the dependent packages. One
-of the key packages `npm` installs for you is the Blockstack Javascript library.
-
-1. Make sure you are in the root directory of the project.
-
- ```bash
- PS C:\> cd .\animal-kingdom-master\ PS C:\animal-kingdom-master> „
- PS C:\animal-kingdom-master> pwd
-
- Path
- -----
- C:\animal-kingdom-master
- ```
-
-2. Enter `npm install` to get the software components Animal Kingdom needs.
-
- ```bash
- C:\animal-kingdom-master> npm install
-
- > fsevents@1.2.4 install /Users/manthony/animal-kingdom-master/node_modules/fsevents
- > node install
-
- node-pre-gyp WARN Tried to download(404): https://fsevents-binaries.s3-us-west-2.amazonaws.com/v1.2.4/fse-v1.2.4-node-v67-darwin-x64.tar.gz
- node-pre-gyp WARN Pre-built binaries not found for fsevents@1.2.4 and node@11.1.0 (node-v67 ABI, unknown) (falling back to source compile with node-gyp)
- SOLINK_MODULE(target) Release/.node
- CXX(target) Release/obj.target/fse/fsevents.o
- In file included from ../fsevents.cc:6:
-
- ...
-
- added 1390 packages from 766 contributors and audited 15238 packages in 16.11s
- found 1 high severity vulnerability
- run `npm audit fix` to fix them, or `npm audit` for details
- C:\animal-kingdom-master>
- ```
-
- This command creates a `node_modules` subdirectory to your project code and
- installs all the code libraries you need for your Animal Kingdom project.
-
-3. Enter the `ls` command to list the contents of your project directory to verify `npm` installed correctly.
-
- ```
- C:\animal-kingdom-master> ls
- ```
-
- The `node_modules`directory contains many core libraries used by Animal
- Kingdom. For example, the Blockstack Javascript library is in the
- `nodule_modules/blockstack/lib` subdirectory.
-
-
-## Start you Animal Kingdom DApp
-
-1. Start the Animal Kingdom DApp running on your workstation by entering:
-
- ```bash
- C:\animal-kingdom-master> npm run start
- ```
-
- The `npm` program uses the `scripts/start.js` file to package the Animal
- Kingdom application. Once the code is packaged, the DApp opens Animal Kingdom
- running at the `http://localhost:3000` URL in your browser.
-
- {% include note.html content="Your firewall may warn you about the application requesting internet access, you must allow this access to proceed." %}
-
-2. From the initial Animal Kingdom screen, choose an animal persona and a territory.
-
-
-
-3. Press **Done** at the bottom of the page.
-
- The Animal Kingdom makes a call to the Gaia hub to store your selection.
- After a brief pause, the DApp returns you to the **Your Kingdom** page. If
- you have problems, refresh the page and click **Your Kingdom** in the menu.
-
-
-
-4. Spend a little time exploring the application.
-
- For example, you could edit your animal or visit the other pages such as **Animals** or **Territories**.
-
-5. Go back to your Powershell where you started your application is running.
-6. Press `CTRL-C` to stop the application.
-
-
-
-You can always start the application again with `npm run start` command as you will later in this tutorial.
-
-## Resources for Blockstack developers
-
-Blockstack provides several resources that help developers who are building on
-the Platform. Take a moment to investigate these resources:
-
-* Visit the Blockstack forum.
- This is a valuable resource to learn about the questions that other developers have now or have had in the past.
-* Visit the Blockstack Community website to learn about events that may be coming to your area.
-* Join the Blockstack Slack channel which you can join by filling in the following form.
-
-
-## Where to go next
-{:.no_toc}
-
-In this section, you learned about the Blockstack platform and why it makes
-Blockchain development a painless process by encapsulating the complexity of the
-blockstack backend. You also set up a typical development environment for
-developing a Blockstack web application. Finally, you started and ran the
-Animal Kingdom application locally.
-
-In the next section, you explorer the application code and learn which recorded
-elements in a DApp make it eligible for App Mining. Continue to [Zero-to-DApp, 3
-of 4 (Windows)](zero_to_dapp_3_win.html).
diff --git a/_develop/zero_to_dapp_3.md b/_develop/zero_to_dapp_3.md
deleted file mode 100644
index 3c546cc6..00000000
--- a/_develop/zero_to_dapp_3.md
+++ /dev/null
@@ -1,491 +0,0 @@
----
-layout: learn
-description: Blockstack Zero-to-DApp tutorial
-permalink: /:collection/:path.html
-image: /assets/img/zero-to-dapp.png
----
-# 3 - Customize your kingdom
-{:.no_toc}
-
- **Zero to DAPP 3 of 4 for macOS/Linux (or [Windows](zero_to_dapp_3_win.html))**
-
-In this page, you examine and modify the Animal Kingdom DApp [you built in part
-2](zero_to_dapp_2.html). You'll review the underlying code and locate the
-portions of it which fulfill the requirements necessary to qualify an
-application for App Mining. You'll expand your knowledge of the application by
-extending it. Finally, you'll learn how to deploy a DApp.
-
-This page contains the following topics
-
- * TOC
- {:toc}
-
-
-### Before you get started
-{:.no_toc}
-
-Before you continue, make sure you can locate the key files and
-directories (folders) in your project. You'll need to make sure you have opened
-a terminal and have changed directory to the top of your Animal Kingdom project.
-
-
-
-If you find it easier to navigate, you can use the Finder as well. Just remember
-you'll need the command line to run your project.
-
-## Understand the Animal Kingdom application code
-
-The Animal Kingdom application has two major components, React and Blockstack.
-React is used to build all the web components and interactions. You could
-replace React with any framework that you like; Blockstack is web framework
-agnostic. This section does not explain the React in any detail; The discussion
-focuses on the Blockstack Javascript library code instead.
-
-The Blockstack Javascript library is all a developer needs to
-create a DApp. It grants the application the ability to authenticate a
-Blockstack identity and to read and write to the user's data stored in a Gaia
-hub.
-
-### Authenticating user identity
-
-The `src/App.js` file creates a Blockstack `UserSession` and uses that session's
-`isUserSignedIn()` method to determine if the user is signed in or out of the
-application. Depending on the result of this method. The application redirects
-to the `src/SignedIn` page or to the `src/Landing.js` page.
-
-```js
- import React, { Component } from 'react'
- import './App.css'
- import { UserSession } from 'blockstack'
-
- import Landing from './Landing'
- import SignedIn from './SignedIn'
-
- class App extends Component {
-
- constructor() {
- super()
- this.userSession = new UserSession()
- }
-
- componentWillMount() {
- const session = this.userSession
- if(!session.isUserSignedIn() && session.isSignInPending()) {
- session.handlePendingSignIn()
- .then((userData) => {
- if(!userData.username) {
- throw new Error('This app requires a username.')
- }
- window.location = `/kingdom/${userData.username}`
- })
- }
- }
-
- render() {
- return (
-
- {this.userSession.isUserSignedIn() ?
-
- :
-
- }
-
- );
- }
- }
-
- export default App
-```
-
-The first time you start the application, this code determines if the user has
-signed into the DApp previously. If not, it opens the `Landing.js` page. This
-page offers the user an opportunity to **Sign in to Blockstack**.
-
-Clicking the button ends up calling the `redirectToSignIn()` method which generates an
-authentication request and redirects the user to the Blockstack Browser to
-approve the sign in request. The actual Blockstack sign-in dialog depends on
-whether the user already has an existing session in the Blockstack Browser.
-
-
-
-Signing in with an identity is the means by which the user grants the DApp
-access. Access means the DApp can read the user profile and read/write user data
-for the DApp. Data is encrypted at a unique URL on a Gaia storage hub.
-
-The source code imports `UserSession` from the Blockstack library. Data related to a given user-session is encapsulated in the session. In a web
-browser, `UserSession` default behavior is to store session data in the
-browser's local storage. This means that app developers can leave management of
-session state to users. In a non-web browser environment, it is necessary to
-pass in an instance of `AppConfig` which defines the parameters of the current
-app.
-
-
-
App Mining Requirement: Blockstack Authentication
-
To participate in application mining your application must integrate Blockstack authentication. Test flight apps do not qualify.
-
-
-
-### Get and put user data to a Gaia Hub
-
-Gaia is the Blockstack data storage hub (https://hub.blockstack.org). Once a user
-authenticates, the application can get and put application data in the user's
-storage. After a user signs in, the `SignedIn.js` code checks the user's Gaia
-profile by running the `loadMe()` method.
-
-```js
-loadMe() {
- const options = { decrypt: false }
- this.userSession.getFile(ME_FILENAME, options)
- .then((content) => {
- if(content) {
- const me = JSON.parse(content)
- this.setState({me, redirectToMe: false})
- } else {
- const me = null
-
- this.setState({me, redirectToMe: true})
- }
- })
- }
-```
-
-Most of the imports in this file are locally coded React components. For example, `Kingdom.js`, `EditMe.js`, and `Card.js`. The key Blockstack imports is the `UserSession` and an `appConfig` which is defined in the `constants.js` file.
-
-The `loadMe()` code uses the Blockstack's `UserSession.getFile()` method to get
-the specified file from the applications data store. If the users' data store on
-Gaia does not have the data, which is the case for new users, the Gaia hub
-responds with HTTP `404` code and the `getFile()` promise resolves to null. If you
-are using a Chrome Developer Tools with the DApp, you'll see these errors in a
-browser's developer **Console**.
-
-
-
-After a user chooses an animal persona and a territory, the user presses **Done**
-and the application stores the user data on Gaia.
-
-```js
-saveMe(me) {
- this.setState({me, savingMe: true})
- const options = { encrypt: false }
- this.userSession.putFile(ME_FILENAME, JSON.stringify(me), options)
- .finally(() => {
- this.setState({savingMe: false})
- })
-}
-```
-
-The Blockstack putFile() stores the data provided in the
-user's DApp data store. By default, `putFile()` stores data in an encrypted format which means only the user that stored it can view it. You can view the URL for the data store from a user's profile. Because this application wants other users to view the persona and territory, the data is not encrypted, so the `encrypt` option is set to `false`.
-
-If you tested your Animal Kingdom, you can see this on your profile. To see your
-profile, go to the Blockstack
-explorer and search for your ID:
-
-
-
-
-
App Mining Optional: Gaia Storage
-
Use of Gaia storage is not required for application mining. Keep in mind, using Gaia may make data storage easier as it is designed to work in the Blockstack Ecosystem.
-
-
-
-### Application configuration
-
-Your DApp contains three pages **Animals**, **Territories**, and **Other
-Kingdoms** that are derived from three code elements:
-
- * The `src/constants.js` file defines the application's data profile (`AppConfig`).
- * The `public/animals` directory which contains images.
- * The `public/territories` directory which contains images.
-
-In the next section, you extend your Kingdom's configuration by modifying these files.
-
-## Add a territory
-
-If your application is still running in localhost stop it with a `CTRL-C` from
-your keyboard.
-
-1. Decide what kind of territory to add &—; desert, ocean, or city!
-
- This example adds Westeros, a fictional territory.
-
-2. Search for an image to represent your new territory.
-
- Google images is a good place to find a JPEG image of Westeros.
-
-3. Save the image to the `public/territories` folder in your Animal Kingdom project code.
-
- {% include warning.html content="The territory filename must be all lower case and have a .jpg extension.
- For this example, the territory image is saved in the westeros.jpg file." %}
-
-4. Use the `ls` command to confirm your file appears in `territories` directory and has the correct name.
-
- ```bash
- ls public/territories/
- forest.jpg tundra.jpg westeros.jpg
- ```
-
-5. Open the `src/constant.js` file in your favorite editor.
-6. Scroll down to the section that defines the **Territories**.
-
- ```js
- export const TERRITORIES = [
- {
- id: 'forest',
- name: 'Forest',
- superpower: 'Trees!'
- },
- {
- id: 'tundra',
- name: 'Tundra',
- superpower: 'Let it snow!'
- }
- ]
- ```
-
-7. Add your new territory.
-
- ```js
- export const TERRITORIES = [
- {
- id: 'forest',
- name: 'Forest',
- superpower: 'Trees!'
- },
- {
- id: 'tundra',
- name: 'Tundra',
- superpower: 'Let it snow!'
- },
- {
- id: 'westeros',
- name: 'Westeros',
- superpower: 'The Iron Throne!'
- }
- ]
- ```
-8. Save and close the `constant.js` file.
-9. Back in a terminal window, restart your application.
-
- ```bash
- $ npm run start
- ```
-10. After the application starts, navigate to the **Territories** page and look for your `Westeros` territory.
-
-
-
-## Add the Blockstack kingdom to Other Kingdoms
-
-Your Animal Kingdom only recognizes two **Other Kingdoms**. In this section,
-you add a third, the Blockstack kingdom (`https://animalkingdoms.netlify.com`).
-
-1. Open the `src/constant.js` file in your favorite editor.
-
- On Mac you can use TextEdit or Vim.
-
-2. Scroll down to the section that defines the **Other Kingdoms**
-
- ```js
- export const OTHER_KINGDOMS = [
- {
- app: 'https://animal-kingdom-1.firebaseapp.com',
- ruler: 'larry.id'
- },
- {
- app: 'http://localhost:3001',
- ruler: 'larz.id'
- }
- ]
- ```
-
- To add a kingdom, you need its URL and the ID of its owner.
-
-3. Edit the file and add the `https://animalkingdoms.netlify.com` which is owned by `meepers.id.blockstack`.
-
- When you are done the file will look like this.
-
-
- ```js
- export const OTHER_KINGDOMS = [
- {
- app: 'https://animal-kingdom-1.firebaseapp.com',
- ruler: 'larry.id'
- },
- {
- app: 'http://localhost:3001',
- ruler: 'larz.id'
- },
- {
- app: 'https://animalkingdoms.netlify.com',
- ruler: 'meepers.id.blockstack'
- }
- ]
- ```
-
-4. Save and close the `constants.js` file.
-5. Back in your browser, navigate to the **Other Kingdoms** page.
-
-
-
-6. Go to the `meepers` kingdom by clicking on her kingdom.
-7. Try adding a subject from meepers's kingdom to yours.
-
-
-## Deploy your DApp on the web
-
-So far, you've been running the application locally. This means you are the only
-person that can use it to create a kingdom. You can make your application
-available to others by hosting it out on the internet. You can do this for free
-with a Netlify account.
-
-
-
App Mining Requirement: Review Accessibility
-
To participate in application mining your application must be available for review. Open source projects must provide the URL to their code. Projects with private repositories can provide their application in a package form.
-
-
-
-Before you begin, you need to build a site that is ready to deploy.
-
-1. In your terminal, press `CTRL-C` on your keyboard to stop your `npm run start` build.
-2. Build a website from your code by entering the `npm run build` command:
-
- ```bash
- npm run build
- ```
-
-
-
- When the command completes, you should have a new `build` subdirectory in your project.
-
-3. Open your project in the Finder.
-4. Locate the newly created `build` subfolder.
-
-
-
-5. Sign up for a free Netlify account
-
- This example assumes you create an account by providing an email and password.
-
-
-
-6. In your email inbox, find Netlify's welcome email and verify your account.
-
-
-
-7. Log into Netlify and go to the **Overview** page in your browser.
-8. Drag your `build` subdirectory from the Finder into the drop zone in Netlify.
-
-
-
- After a moment, Netlify builds your code and displays the location of your new website.
-
-
-
-9. Click on your website name to display the website.
-
- You are prompted to sign into this new site with your Blockstack ID.
-
-10. Click **Sign in with Blockstack**.
-
- After you sign in, your website presents you with this message:
-
-
-
- You get this message because, when you authenticate, your DApp at one URL
- requested a resource (an identity) from another DApp, the Blockstack
- Browser. A request for a resource outside of the origin (your new website)
- is called as a _cross-origin request_(CORs). Getting data in this manner can
- be risky, so you must configure your website security to allow interactions
- across origins.
-
-
-
-
- You can think of CORS interactions as an apartment building with Security.
- For example, if you need to borrow a ladder, you could ask a neighbor in
- your building who has one. Security would likely not have a problem with
- this request (i.e., same-origin, your building). If you needed a particular
- tool, however, and you ordered it delivered from an online hardware store
- (i.e., cross-origin, another site), Security may request identification
- before allowing the delivery man into the apartment building.
-
- Credit: Codecademy
-
-
-
- The way you configure CORs depends on which company is serving your website.
- You are using Netlify for this example.
-
-11. Locate the `cors/_headers` and `cors/_redirects` files in your project.
-
- You can use the Finder or the `ls` command.
-
-
-
-12. Copy them into your `build` directory.
-
- To copy them with the `ls` command, enter the following in the root of the `animal-kingdom-master` project.
-
- ```bash
- cp cors/_headers build
- cp cors/_redirects build
- ```
-
- The name of each file, with the underscore, is essential.
-
-13. Drag the `build` file back into the Netlify drop zone.
-
- After a moment, Netlify publishes your site. Check the published location, it may have changed.
-
-14. Click on the link and log into your Animal Kingdom.
-15. Recreate your animal persona and territory.
-
- The Animal Kingdom is identified by its location on the Internet, remember?
- So, the animal kingdom you created on your local workstation is different
- than the one you create on Netlify.
-
-## Add your Kingdom to our Clan
-
-At this point, your kingdom is isolated. If you know another kingdom, you can
-add subjects from that kingdom but other kingdoms can't access your subjects. In
-this section, you use a free GitHub account to add your kingdom to the
-Blockstack kingdom.
-
-1. If you have a GitHub account, go to step 2 otherwise go to GitHub site and create a new account.
-2. Go to the https://github.com/blockstack/animal-kingdom/issues repository on Github.
-2. Click **New Issue**.
-
- The new issue dialog appears.
-
-3. Fill out the issue with the URL from Netlify and your Blockstack id.
-
- When you are done, your issue will look like the following:
-
-
-
-4. Press **Submit new issue**.
-
- The Blockstack team will add your Netlify kingdom to ours. When we do that, we will notify you on the issue and you'll also get an email.
-
-5. When you receive the email, login to the Blockstack Animal kingdom to see your kingdom under **Other Kingdoms**.
-
-
-## Next steps (and a cool tshirt!)
-{:.no_toc}
-
-
-In the next part, you learn about how application mining can fund your DApp
-development efforts. And you will take a couple of minutes to [add your Animal Kingdom DApp to App.co
-— the Universal App store](zero_to_dapp_4.html). Completing this step earns you a
-limited edition t-shirt.
-
-If you have a twitter account, why not tell some folks about your progress?
-
-Tweet your work!
diff --git a/_develop/zero_to_dapp_3_win.md b/_develop/zero_to_dapp_3_win.md
deleted file mode 100644
index 3184dbf1..00000000
--- a/_develop/zero_to_dapp_3_win.md
+++ /dev/null
@@ -1,500 +0,0 @@
----
-layout: learn
-description: Blockstack Zero-to-DApp tutorial
-permalink: /:collection/:path.html
-image: /assets/img/zero-to-dapp.png
----
-# 3 - Customize your kingdom (Windows)
-{:.no_toc}
-
- **Zero to DAPP 3 of 4 for Windows (or [macOS/Linux](zero_to_dapp_3.html))**
-
-In this page, you examine and modify the Animal Kingdom DApp [you built in part
-2](zero_to_dapp_2.html). You'll review the underlying code and locate the
-portions of it which fulfill the requirements necessary to qualify an
-application for App Mining. You'll expand your knowledge of the application by
-extending it. Finally, you'll learn how to deploy a DApp.
-
-This page contains the following topics
-
- * TOC
- {:toc}
-
-
-### Before you get started
-{:.no_toc}
-
-Before you continue, make sure you can locate the key files and
-directories (folders) in your project. You'll need to make sure you have opened
-a terminal and have changed directory to the top of your Animal Kingdom project.
-
-
-
-If you find it easier to navigate, you can use the Finder as well. Just remember
-you'll need the command line to run your project.
-
-## Understand the Animal Kingdom application code
-
-The Animal Kingdom application has two major components, React and Blockstack.
-React is used to build all the web components and interactions. You could
-replace React with any framework that you like; Blockstack is web framework
-agnostic. This section does not explain the React in any detail; The discussion
-focuses on the Blockstack Javascript library the DApp instead.
-
-The Blockstack Javascript library is all a developer needs to
-create a DApp. It grants the application the ability to authenticate a
-Blockstack identity and to read and write to the user's data stored in a Gaia
-hub.
-
-### Authenticating user identity
-
-The `src/App.js` file creates a Blockstack `UserSession` and uses that session's
-`isUserSignedIn()` method to determine if the user is signed in or out of the
-application. Depending on the result of this method. The application redirects
-to the `src/SignedIn` page or to the `src/Landing.js` page.
-
-```js
- import React, { Component } from 'react'
- import './App.css'
- import { UserSession } from 'blockstack'
-
- import Landing from './Landing'
- import SignedIn from './SignedIn'
-
- class App extends Component {
-
- constructor() {
- super()
- this.userSession = new UserSession()
- }
-
- componentWillMount() {
- const session = this.userSession
- if(!session.isUserSignedIn() && session.isSignInPending()) {
- session.handlePendingSignIn()
- .then((userData) => {
- if(!userData.username) {
- throw new Error('This app requires a username.')
- }
- window.location = `/kingdom/${userData.username}`
- })
- }
- }
-
- render() {
- return (
-
- {this.userSession.isUserSignedIn() ?
-
- :
-
- }
-
- );
- }
- }
-
- export default App
-```
-
-The first time you start the application, this code determines if the user has
-signed into the DApp previously. If not, it opens the `Landing.js` page. This
-page offers the user an opportunity to **Sign in to Blockstack**.
-
-Clicking the button ends up calling the `redirectToSignIn()` method which generates an
-authentication request and redirects the user to the Blockstack Browser to
-approve the sign in request. The actual Blockstack sign-in dialog depends on
-whether the user already has an existing session in the Blockstack Browser.
-
-
-
-Signing in with an identity is the means by which the user grants the DApp
-access. Access means the DApp can read the user profile and read/write user data
-for the DApp. Data is encrypted at a unique URL on a Gaia storage hub.
-
-The source code imports `UserSession` from the Blockstack library. Data related to a given user-session is encapsulated in the session. In a web
-browser, `UserSession` default behavior is to store session data in the
-browser's local storage. This means that app developers can leave management of
-session state to users. In a non-web browser environment, it is necessary to
-pass in an instance of `AppConfig` which defines the parameters of the current
-app.
-
-
-
App Mining Requirement: Blockstack Authentication
-
To participate in application mining your application must integrate Blockstack authentication.
-
-
-
-### Get and put user data to a Gaia Hub
-
-Gaia is the Blockstack data storage hub (https://hub.blockstack.org). Once a user
-authenticates, the application can get and put application data in the user's
-storage. After a user signs in, the `SignedIn.js` code checks the user's Gaia
-profile by running the `loadMe()` method.
-
-```js
-loadMe() {
- const options = { decrypt: false }
- this.userSession.getFile(ME_FILENAME, options)
- .then((content) => {
- if(content) {
- const me = JSON.parse(content)
- this.setState({me, redirectToMe: false})
- } else {
- const me = null
-
- this.setState({me, redirectToMe: true})
- }
- })
- }
-```
-
-Most of the imports in this file are locally coded React components. For example, `Kingdom.js`, `EditMe.js`, and `Card.js`. The key Blockstack imports is the `UserSession` and an `appConfig` which is defined in the `constants.js` file.
-
-The `loadMe()` code uses the Blockstack's `UserSession.getFile()` method to get
-the specified file from the applications data store. If the users' data store on
-Gaia does not have the data, which is the case for new users, the Gaia hub
-responds with HTTP `404` code and the `getFile()` promise resolves to null. If you
-are using a Chrome Developer Tools with the DApp, you'll see these errors in a
-browser's developer **Console**.
-
-
-
-After a user chooses an animal persona and a territory, the user presses **Done**
-and the application stores the user data on Gaia.
-
-```js
-saveMe(me) {
- this.setState({me, savingMe: true})
- const options = { encrypt: false }
- this.userSession.putFile(ME_FILENAME, JSON.stringify(me), options)
- .finally(() => {
- this.setState({savingMe: false})
- })
-}
-```
-
-The Blockstack putFile() stores the data provided in the
-user's DApp data store. By default, `putFile()` stores data in an encrypted format which means only the user that stored it can view it. You can view the URL for the data store from a user's profile. Because this application wants other users to view the persona and territory, the data is not encrypted, so the `encrypt` option is set to `false`.
-
-If you tested your Animal Kingdom, you can see this on your profile. To see your
-profile, go to the Blockstack
-explorer and search for your ID:
-
-
-
-
-
App Mining Optional: Gaia Storage
-
Use of Gaia storage is not required for application mining. Keep in mind, using Gaia may make data storage easier as it is designed to work in the Blockstack Ecosystem.
-
-
-
-### Application configuration
-
-Your DApp contains three pages **Animals**, **Territories**, and **Other
-Kingdoms** that are derived from three code elements:
-
- * The `src/constants.js` file defines the application's data profile (`AppConfig`).
- * The `public\animals` directory which contains images.
- * The `public\territories` directory which contains images.
-
-In the next section, you extend your Kingdom's configuration by modifying these files.
-
-## Add a territory
-
-If your application is still running in localhost stop it with a `CTRL-C` from
-your keyboard.
-
-1. Decide what kind of territory to add — desert, ocean, or city!
-
- This example adds Westeros, a fictional territory.
-
-2. Search for an image to represent your new territory.
-
- Google images is a good place to find a JPEG image of Westeros.
-
-3. Save the image to the `public/territories` folder in your Animal Kingdom project code.
-
- {% include warning.html content="The territory filename must be all lower case and have a .jpg extension.
- For this example, the territory image is saved in the westeros.jpg file." %}
-
-4. Use the `ls` command to confirm your file appears in `territories` directory and has the correct name.
-
- ```bash
- PS C:\animal-kingdom-master> ls .\public\territories\
-
- Directory: C:\animal-kingdom-master\public\territories
-
- Mode LastWriteTime Length Name
-
- -a 2/26/2019 6:09 AM 132814 forest.jpg
- -a 2/26/2019 6:09 AM 128272 tundra.jpg
- -a 2/26/2019 6:31 AM 1087534 westeros.jpg
-
- PS C:\animal-kingdom-master>
- ```
-
-5. Open the `src\constant.js` file in your favorite editor.
-6. Scroll down to the section that defines the **Territories**.
-
- ```js
- export const TERRITORIES = [
- {
- id: 'forest',
- name: 'Forest',
- superpower: 'Trees!'
- },
- {
- id: 'tundra',
- name: 'Tundra',
- superpower: 'Let it snow!'
- }
- ]
- ```
-
-7. Add your new territory.
-
- ```js
- export const TERRITORIES = [
- {
- id: 'forest',
- name: 'Forest',
- superpower: 'Trees!'
- },
- {
- id: 'tundra',
- name: 'Tundra',
- superpower: 'Let it snow!'
- },
- {
- id: 'westeros',
- name: 'Westeros',
- superpower: 'The Iron Throne!'
- }
- ]
- ```
-8. Save and close the `constant.js` file.
-9. Back in a terminal window, restart your application.
-
- ```bash
- c:\animal-kingdom-master> npm run start
- ```
-10. After the application starts, navigate to the **Territories** page and look for your `Westeros` territory.
-
-
-
-## Add the Blockstack kingdom to Other Kingdoms
-
-Your Animal Kingdom only recognizes two **Other Kingdoms**. In this section,
-you add a third, the Blockstack kingdom (`https://animalkingdoms.netlify.com`).
-
-1. Open the `src/constant.js` file in your favorite editor.
-
- On Windows you can use Notepad.
-
-2. Scroll down to the section that defines the **Other Kingdoms**
-
- ```js
- export const OTHER_KINGDOMS = [
- {
- app: 'https://animal-kingdom-1.firebaseapp.com',
- ruler: 'larry.id'
- },
- {
- app: 'http://localhost:3001',
- ruler: 'larz.id'
- }
- ]
- ```
-
- To add a kingdom, you need its URL and the ID of its owner.
-
-3. Edit the file and add the `https://animalkingdoms.netlify.com` which is owned by `meepers.id.blockstack`.
-
- When you are done the file will look like this.
-
-
- ```js
- export const OTHER_KINGDOMS = [
- {
- app: 'https://animal-kingdom-1.firebaseapp.com',
- ruler: 'larry.id'
- },
- {
- app: 'http://localhost:3001',
- ruler: 'larz.id'
- },
- {
- app: 'https://animalkingdoms.netlify.com',
- ruler: 'meepers.id.blockstack'
- }
- ]
- ```
-
-4. Save and close the `constants.js` file.
-5. Back in your browser, navigate to the **Other Kingdoms** page.
-
-
-
-6. Go to the `meepers` kingdom by clicking on her kingdom.
-7. Try adding a subject from meepers's kingdom to yours.
-
-
-## Deploy your DApp on the web
-
-So far, you've been running the application locally. This means you are the only
-person that can use it to create a kingdom. You can make your application
-available to others by hosting it out on the internet. You can do this for free
-with a Netlify account.
-
-
-
App Mining Requirement: Review Accessibility
-
To participate in application mining your application must be available for review. Open source projects must provide the URL to their code. Projects with private repositories can provide their application in a package form.
-
-
-
-Before you begin, you need to build a site that is ready to deploy.
-
-1. In your terminal, press `CTRL-C` on your keyboard to stop your `npm run start` build.
-2. Build a website from your code by entering the `npm run build` command:
-
- ```bash
- npm run build
- ```
-
-
-
- When the command completes, you should have a new `build` subdirectory in your project.
-
-3. Open your project in the Finder.
-4. Locate the newly created `build` subfolder.
-
-
-
-5. Sign up for a free Netlify account
-
- This example assumes you create an account by providing an email and password.
-
-
-
-6. In your email inbox, find Netlify's welcome email and verify your account.
-
-
-
-7. Log into Netlify and go to the **Overview** page in your browser.
-8. Drag your `build` subdirectory from the Finder into the drop zone in Netlify.
-
-
-
- After a moment, Netlify builds your code and displays the location of your new website.
-
-
-
-9. Click on your website name to display the website.
-
- You are prompted to sign into this new site with your Blockstack ID.
-
-10. Click **Sign in with Blockstack**.
-
- After you sign in, your website presents you with this message:
-
-
-
- You get this message because, when you authenticate, your DApp at one URL
- requested a resource (an identity) from another DApp, the Blockstack
- Browser. A request for a resource outside of the origin (your new website)
- is called as a _cross-origin request_(CORs). Getting data in this manner can
- be risky, so you must configure your website security to allow interactions
- across origins.
-
-
-
-
- You can think of CORS interactions as an apartment building with Security.
- For example, if you need to borrow a ladder, you could ask a neighbor in
- your building who has one. Security would likely not have a problem with
- this request (i.e., same-origin, your building). If you needed a particular
- tool, however, and you ordered it delivered from an online hardware store
- (i.e., cross-origin, another site), Security may request identification
- before allowing the delivery man into the apartment building.
-
- Credit: Codecademy
-
-
-
- The way you configure CORs depends on which company is serving your website.
- You are using Netlify for this example.
-
-11. Locate the `cors/_headers` and `cors/_redirects` files in your project.
-
- You can use the Finder or the `ls` command.
-
-
-
-12. Copy them into your `build` directory.
-
- To copy them with the `ls` command, enter the following in the root of the `animal-kingdom-master` project.
-
- ```bash
- cp cors/_headers build
- cp cors/_redirects build
- ```
-
- The name of each file, with the underscore, is essential.
-
-13. Drag the `build` file back into the Netlify drop zone.
-
- After a moment, Netlify publishes your site. Check the published location, it may have changed.
-
-14. Click on the link and log into your Animal Kingdom.
-15. Recreate your animal persona and territory.
-
- The Animal Kingdom is identified by its location on the Internet, remember?
- So, the animal kingdom you created on your local workstation is different
- than the one you create on Netlify.
-
-## Add your Kingdom to our Clan
-
-At this point, your kingdom is isolated. If you know another kingdom, you can
-add subjects from that kingdom but other kingdoms can't access your subjects. In
-this section, you use a free GitHub account to add your kingdom to the
-Blockstack kingdom.
-
-1. If you have a GitHub account, go to step 2 otherwise go to GitHub site and create a new account.
-2. Go to the https://github.com/blockstack/animal-kingdom/issues repository on Github.
-2. Click **New Issue**.
-
- The new issue dialog appears.
-
-3. Fill out the issue with the URL from Netlify and your Blockstack id.
-
- When you are done, your issue will look like the following:
-
-
-
-4. Press **Submit new issue**.
-
- The Blockstack team will add your Netlify kingdom to ours. When we do that, we will notify you on the issue and you'll also get an email.
-
-5. When you receive the email, login to the Blockstack Animal kingdom to see your kingdom under **Other Kingdoms**.
-
-
-## Next steps (and a cool tshirt!)
-{:.no_toc}
-
-
-In the next part, you learn about how application mining can fund your DApp
-development efforts. And you will take a couple of minutes to [add your Animal Kingdom DApp to App.co
-— the Universal App store](zero_to_dapp_4.html). Completing this step earns you a
-limited edition t-shirt.
-
-If you have a twitter account, why not tell some folks about your progress?
-
-Tweet your work!
diff --git a/_develop/zero_to_dapp_4.md b/_develop/zero_to_dapp_4.md
deleted file mode 100644
index ad3a9ecb..00000000
--- a/_develop/zero_to_dapp_4.md
+++ /dev/null
@@ -1,74 +0,0 @@
----
-layout: learn
-description: Blockstack Zero-to-DApp tutorial
-permalink: /:collection/:path.html
-image: /assets/img/zero-to-dapp.png
----
-# 4 - List and fund thru App.co
-{:.no_toc}
-
- **Zero to DAPP 4 of 4**
-
-In this part, you learn about application mining as a funding source for your
-new DApp efforts. You'll submit your sample Animal Kingdom to App.co, the
-Universal DApp store and earn a t-shirt. You'll also learn about other ways
-Blockstack helps your development efforts. This part contains the following topics:
-
-* TOC
-{:toc}
-
-This page assumes you have customized and deployed your Animal Kingdom as
-[described in part 3](zero_to_dapp_3).
-
-
-## Add your Animal Kingdom to App.co
-
-App.co accepts applications from all decentralized protocols such as Ethereum,
-Blockstack, and many others. When you add an app, it is not automatically
-eligible for application mining, you must submit it using an another procedure.
-You can also submit an application for App Mining but not add it to App.co.
-
-In this section, you add your Animal Kingdom to the **Blockstack Sample
-Application** category on App.co. Adding your Animal Kingdom app to this
-category earns you a limited edition a Zero-to-DApp t-shirt. Only submit your
-sample application if you have deployed the application on the internet. This
-allows us to confirm you completed the tutorial. You can submit more than one
-example, only your first submission receives a t-shirt.
-
-To add an app, do the following:
-
-1. In your browser, navigate to the App.co website.
-2. Choose **Add your app** option from the menu.
-
- The system opens the submit your App form.
-
-
-
-3. Complete the following fields.
-
- {% include required-fields.md %}
-
-4. Check **App is publicly accessible and user-ready**.
-5. Agree to the terms.
-6. Press the **Submit** button.
-
- The Blockstack team will email you information about how to obtain your
- limited edition t-shirt at our store.
-
-
-
-
-
-
-## Congratulations
-{:.no_toc}
-
-You've completed the Zero-to-DApp tutorial and have joined the growing
-DApp developer community on Blockstack. We hope you've taken the extra
-step of submitting your Animal Kingdom application to the App.co site.
-
-Tweet your work!
diff --git a/_faqs/allFAQS.md b/_faqs/allFAQS.md
index 7354a208..0ed3e051 100644
--- a/_faqs/allFAQS.md
+++ b/_faqs/allFAQS.md
@@ -66,17 +66,6 @@ This is a comprehensive list of all the Blockstack FAQs.
{% endif %}
{% endfor %}
-## Application Miner questions
-
-{% for faq in site.data.theFAQs.faqs %}
- {% if faq.category == 'appminers' %}
-### {{ faq.question }}
-
-{{ faq.answer }}
-
- {% endif %}
-{% endfor %}
-
## Core developer questions
{% for faq in site.data.theFAQs.faqs %}
diff --git a/_includes/commandline.md b/_includes/commandline.md
index a62e1799..75cd55df 100644
--- a/_includes/commandline.md
+++ b/_includes/commandline.md
@@ -6,7 +6,7 @@ Browser does not yet support. Using the command line, developers can:
* Generate and Broadcast all supported types of Blockstack transactions
* Load, store, and list data in Gaia hubs
* Generate owner, payment and application keys from a seed phrase
-* Query Blockstack core nodes
+* Query Stacks Nodes
* Implement a minimum viable authentication flow
{% include warning.html content="Many of the commands operate on unencrypted
diff --git a/_includes/intro-appmining.md b/_includes/intro-appmining.md
deleted file mode 100644
index 61d964d3..00000000
--- a/_includes/intro-appmining.md
+++ /dev/null
@@ -1,5 +0,0 @@
-Traditionally the term _mining_ in cryptocurrency refers to the process of contributing compute resources to the network and earning a reward. In the Blockstack Ecosystem, instead of just mining through computation, developers mine by building apps, and the Blockstack community funds them simply for being pioneers in the emerging Blockchain software market.
-
-![](images/mining-image.png)
-
-Blockstack believes app mining represents a revolution in app funding, allowing small teams to bootstrap without advertising or venture capital. Each month, qualifying apps compete for funding. Qualified apps are evaluated and ranked by expert app reviewers. The better your app, the higher payout you earn. App mining is a new mining model that is continuously evolving and improving based on community feedback.
\ No newline at end of file
diff --git a/_includes/payout-appmining.md b/_includes/payout-appmining.md
deleted file mode 100644
index 9a626dca..00000000
--- a/_includes/payout-appmining.md
+++ /dev/null
@@ -1,14 +0,0 @@
-For each App Mining cohort, there is a determined “pot” of total earnings that
-will get paid to apps. For the Alpha run, App Mining paid a total of $25,000
-USD. However, in
-December 2018, App Mining began paying $100,000 USD each month, with earnings
-paid out in Bitcoin.
-
-The top app gets paid 20% of the total pot. So, for a pot of $100k, the top app
-receives $20,000 USD. The next app gets paid 20% of the remaining pot. The
-remaining pot is $80k, and 20% of that is $16,000. This process continues until
-every app has been paid.
-
-Here is a chart that visualizes the decay in rewards, depending on rank:
-
-![](images/decaying.png)
diff --git a/_includes/signature_fund.md b/_includes/signature_fund.md
deleted file mode 100644
index 6624b58e..00000000
--- a/_includes/signature_fund.md
+++ /dev/null
@@ -1,15 +0,0 @@
-In 2017 Blockstack announced the Blockstack Signature Fund. The Signature Fund
-is aimed at growing an ecosystem of decentralized applications on Blockstack.
-The fund releases funds through a Signature Bounty program. This is a global
-bounty program using a contest model. Teams from all over the world submit
-products and a set of judges determine who wins the prize for the best product.
-
-In addition to the bounty program, Blockstack supports an application mining
-program. This is an early stage program for developers. In this program,
-application developers register their application on App.co. Then, each month,
-application developers get paid depending on their application
-quality ranking. The ranking is determined by a set of application reviewers.
-
-Application mining differs from the venture model or the app studio model
-because the rewards are in cryptocurrency. Blockstack PBC administrates both the
-review and delivery of these monthly payments.
diff --git a/_ios/tutorial.md b/_ios/tutorial.md
index 1d04c583..fbb73cf0 100644
--- a/_ios/tutorial.md
+++ b/_ios/tutorial.md
@@ -3,7 +3,7 @@ layout: learn
description: How to use Blockstack on iOS Mobile
permalink: /:collection/:path.html
---
-# iOS SDK Tutorial (Pre-release)
+# iOS DApps
{:.no_toc}
This tutorial teaches you how to create a decentralized application using
diff --git a/_layouts/smart.html b/_layouts/smart.html
new file mode 100644
index 00000000..d12fe8b8
--- /dev/null
+++ b/_layouts/smart.html
@@ -0,0 +1,77 @@
+---
+layout: default
+---
+
+
+
+
+
+
+
+ {% for section in site.data.navigation_smart %}
+ {% if section.title %}
+
\ No newline at end of file
diff --git a/_org/explore.md b/_org/explore.md
deleted file mode 100644
index fed2395f..00000000
--- a/_org/explore.md
+++ /dev/null
@@ -1,104 +0,0 @@
----
-layout: org
-description: "Blockstack Network documentation"
-permalink: /:collection/:path.html
----
-# Explore the Stacks blockchain
-
-Blockchains are often compared to databases. They are similar in that they store
-information which users (people or programs) can examine or search. Each
-blockchain platform provides a _blockchain explorer_ for searching the data in
-their particular blockchain. This section explains how to use the Stacks
-explorer to investigate the Stacks blockchain.
-
-This page is written for people who are blockchain beginners. If you are a developer interested in the technical specifications behind the Stacks explorer, please see [this discussion in the forum](https://forum.blockstack.org/t/announcing-blockstack-explorer/491). Detailed information about naming, registration, and so forth can be found in the [Using the Naming Service section](https://docs.blockstack.org/core/naming/introduction.html) of this documentation.
-
-## What you can search
-
-You use {::nomarkdown} the Stacks explorer{:/} to search for the following objects:
-
-
-
-
Object
-
Description
-
Example of a search
-
-
-
name
-
An identifier or name. A name is a type of digital asset on the Blockstack network. If you have signed into the Blockstack Browser, you created a name. If an application developer registered an application within Blockstack, then they registered a name.
-
naval.id or meepers.id.blockstack
-
-
-
block
-
A block is a complete record on the blockchain. A good analogy is a diary entry. Each entry completes at a particular point in time, contains one or more activities which took place in the past. A block is a history of completed activity from a specific point of time on the blockchain. The sequential number associated with a block is called a height.
-
1001
-
-
-
transaction
-
A transaction is a unit of work within a block. To use the diary entry analogy, an entry for Sunday may include a run to the lake, lunch at Spago, and auditioning for a movie. Lunch at Spago is a "transaction" in this analogy. Each transaction, like a block, has a unique value associated with it called a hash. You can use this hash in the explorer to look up the transaction. And, you can be confident that no other transaction has that particular hash, it is unique.
-
000000007136b5c...
- This hash is a partial hash, an actual hash value is very long.
-
-
-
address
-
An address is an identifier used during a transaction. It is a unique number that represents the origination or destination of a transaction. Addresses encrypt a participant in a transaction so that the person or entity that took part in the transaction remains private.
-
3AKx3kBhTFC58Ws This address is a partial address, an actual address value is very long.
-
-
-
-People such as token holders or application users typically don't need to use an explorer. However, there are a few interesting things to do if you are a token holder, a user, or both.
-
-## Investigate the Explorer
-
-An easy thing to explore is an identity. If you have an identity through the
-Blockstack Browser, you can explore that identity. Identities that you create
-through the browser are free if you create them in the Blockstack namespace. If you don't have an identity, you [can create one]({{ site.baseurl }}/browser/ids-introduction.html).
-
-What is a namespace? Well, think of it a bit like an email address, you can get
-an email address on your own suffix `yourname@myuniquename.com`, or you can get
-email with a service type suffix such as `yahoo` or `msn` or `gmail`.
-Blockstack identity behaves like this service type suffix. So, there is only one
-`meepers.id.blockstack` but someone else can be `meepers2.id.blockstack`. You
-can see this in action yourself with the explorer, by doing the following:
-
-1. Open the [explorer](https://explorer.blockstack.org/).
-
-2. Select the **Names** tag.
-
- ![](images/names.png)
-
- The **Names** page lists all the names (users or organizations) that are registered on the Stacks blockchain. There are over 77 thousand names on this list! So, you likely do not want to scroll down the page looking for yours. You can search for a known name, try searching for the `meepers.id.blockstack` name.
-
-3. Place your cursor in the search bar in the right hand corner and type `meepers.id.blockstack` and then press return.
-
- The explorer looks for the name and then loads the information for it. You should see this result:
-
- ![](images/identity.png)
-
- At the left is some friendly looking information from the person whose
- identity this is --- a photo maybe, personal name, and social community
- verifications. This is the public information the person opted to share.
- Identifying information is a step for establishing trust that a person is who
- they say they are. This particular ID has an unverified account with the
- social-coding network GitHub. So, perhaps they are shady.
-
- **View Raw Profile Data** allows you to see the information a Blockstack core
- leverages, such as the identity and "map" it to stored data and other things.
- On the right, you see a list of all the blocks
- associated with this identity.
-
-4. Click on the block link to expand its information.
-
- This information is not as friendly for non-technical people.
-
- ![](images/block-page.png)
-
- You can click on transactions to go further down into this technical information.
-
-
-Try searching for your own identity. If necessary, you can first [create your own identity]({{ site.baseurl }}/browser/ids-introduction.html). The identity `meepers` looks a bit shady now but you may comeback and find the she has verified her identity. Try looking at the identity of our Blockstack founder, `muneeb.id`. You can see, he is a trusted and well known person. How does your identity compare?
-
-## For Stacks token holders
-
-In the section [For current token holders](tokenholders.html) current token holders can find out how to
-use the explorer to search for details about your Stacks token allocation.
diff --git a/_org/overview.md b/_org/overview.md
index 11890c6f..0c4240a3 100644
--- a/_org/overview.md
+++ b/_org/overview.md
@@ -37,10 +37,6 @@ Using Blockstack’s technology developers can start building immediately on the
blockchain with the knowledge you have today. You won’t need to spend time or
effort developing expertise in specialized languages or technologies.
-### Blockstack Signature Fund
-
-{% include signature_fund.md %}
-
### Blockstack Token LLC
Through the 2017 Blockstack token offering, Blockstack Token LLC created the
@@ -58,13 +54,13 @@ process. This consensus algorithm is planned to be introduced in additional
hard forks in 2019.
Addtionally, a future Stacks blockchain will support truly decentralized mobile
-applications by removing the need to trust a remote Blockstack Core node.
+applications by removing the need to trust a remote Stacks Node.
Instead, it will be possible for light clients to calculate the economic weight
of different Stacks blockchain forks, and identify the fork with the most
economic activity. Today, light clients rely on other trusted sources for fork
selection and cannot make that decision independently. For mobile apps this
enables functionality like looking up names without having to rely on a remote
-Blockstack Core node.
+Stacks Node.
Finally, Blockstack currently supports relatively simple smart contracts that
are used to register digital assets on the network. The Stacks blockchain v2
diff --git a/_org/token.md b/_org/token.md
index 1d6a117d..58350d71 100644
--- a/_org/token.md
+++ b/_org/token.md
@@ -48,7 +48,7 @@ The genesis block launch makes possible the following interactions:
* Application developers can earn Stacks by building an application on the Blockstack ecosystem.
-* Any Stacks tokens held at the time of launch or after remain usable under the Blockstack Core platform.
+* Any Stacks tokens held at the time of launch or after remain usable under the Stacks Blockchain platform.
Finally, in addition to the development of Stacks token, this launch enables
-further development of Blockstack Core itself.
+further development of Stacks Blockchain itself.
diff --git a/overview_auth.md b/overview_auth.md
index 228b0948..b67fbfb4 100644
--- a/overview_auth.md
+++ b/overview_auth.md
@@ -50,7 +50,7 @@ This app private key is also deterministic, meaning that for a given Blockstack
* is used in the end-to-end encryption of files stored for the app on the user's Gaia hub
* serves as a cryptographic secret that apps can use to perform other cryptographic functions
-A Blockstack Core node also generates a public key token which is sent to the
+A Stacks node also generates a public key token which is sent to the
browser as an `authRequest` from the browser to the core node. The signed
authentication request is sent to Blockstack through a JSON Web Token (JWT).
Blocktack passes the token in via a URL query string in the `authRequest`