From 82b1d3f2dc01c432b294e3558eacef953ab6757a Mon Sep 17 00:00:00 2001 From: moxiegirl Date: Wed, 12 Sep 2018 18:21:31 -0700 Subject: [PATCH] Making the site live Signed-off-by: moxiegirl --- _config.yml | 12 +- ...navigation_bns.yml => navigation_core.yml} | 6 - _data/navigation_home.yml | 4 +- _data/navigation_learn.yml | 4 +- _includes/navbar.html | 5 +- .../{related-bns.html => related-core.html} | 0 _layouts/auth.html | 4 +- _layouts/bns.html | 4 +- _layouts/changelog.html | 4 +- _layouts/contact.html | 4 +- _layouts/core.html | 74 + _layouts/evaluate.html | 4 +- _layouts/gaia.html | 4 +- _layouts/learn.html | 4 +- _layouts/page.html | 4 +- _layouts/post.html | 2 +- _layouts/usenew.html | 4 +- _site/2017/05/25/post63.html | 7 +- _site/404.html | 9 +- _site/android/tutorial.html | 19 +- _site/browser/README.md | 27 - ...r-storage.html => blockstack_storage.html} | 39 +- _site/browser/browser-introduction.html | 26 +- _site/browser/faq_general.html | 19 +- _site/browser/hello-blockstack.html | 31 +- _site/browser/ids-introduction.html | 17 +- _site/browser/todo-list.html | 379 --- _site/changelog/index.html | 9 +- _site/common/construction.html | 17 +- _site/contact/index.html | 100 +- _site/core/api-specs.md | 2130 +---------------- _site/core/atlas/howitworks.html | 283 ++- _site/core/atlas/howtouse.html | 283 ++- _site/core/atlas/overview.html | 283 ++- _site/core/faq_developer.html | 19 +- _site/core/faq_technical.html | 283 ++- _site/core/install-api.html | 283 ++- _site/core/memcached.html | 283 ++- _site/core/naming/architecture.html | 283 ++- _site/core/naming/comparison.html | 283 ++- _site/core/naming/creationhowto.html | 287 ++- _site/core/naming/did.html | 283 ++- _site/core/naming/forks.html | 283 ++- _site/core/naming/introduction.html | 283 ++- _site/core/naming/manage.html | 283 ++- _site/core/naming/namespaces.html | 283 ++- _site/core/naming/openbazaar.html | 539 ----- _site/core/naming/pickname.html | 290 ++- _site/core/naming/register.html | 283 ++- _site/core/naming/resolving.html | 283 ++- _site/core/naming/search.html | 283 ++- _site/core/naming/subdomains.html | 283 ++- _site/core/naming/tutorial_creation.html | 1105 --------- _site/core/naming/tutorial_subdomains.html | 283 ++- _site/core/wire-format.html | 286 ++- _site/feed.xml | 2 +- _site/index.html | 9 +- _site/ios/tutorial.html | 19 +- _site/news/index.html | 5 +- _site/robots.txt | 2 + _site/thanks/index.html | 9 +- contact.md | 12 +- 62 files changed, 3302 insertions(+), 7348 deletions(-) rename _data/{navigation_bns.yml => navigation_core.yml} (84%) rename _includes/{related-bns.html => related-core.html} (100%) create mode 100644 _layouts/core.html delete mode 100644 _site/browser/README.md rename _site/browser/{multi-player-storage.html => blockstack_storage.html} (90%) delete mode 100644 _site/browser/todo-list.html delete mode 100644 _site/core/naming/openbazaar.html delete mode 100644 _site/core/naming/tutorial_creation.html create mode 100644 _site/robots.txt diff --git a/_config.yml b/_config.yml index 62987357..9666e062 100644 --- a/_config.yml +++ b/_config.yml @@ -61,7 +61,7 @@ twitter_username: # Default footer image settings footer: - copyright: Blockstack + copyright: "Blockstack" # Disqus comments shortname, requires Disqus account https://disqus.com/ # disqus: @@ -85,8 +85,12 @@ post_assets: /assets/posts/ # Build settings -markdown: kramdown -highlighter: rouge +markdown: kramdown +kramdown: + input: GFM + auto_ids: true + hard_wrap: false + syntax_highlighter: rouge plugins: - jekyll-feed @@ -110,6 +114,8 @@ exclude: - get-content.sh - _core/aglio_templates - _core/attic + - _code/api-specs.md + - _browser/todo-list.md sass: style: compressed diff --git a/_data/navigation_bns.yml b/_data/navigation_core.yml similarity index 84% rename from _data/navigation_bns.yml rename to _data/navigation_core.yml index 4fb07774..78dd019d 100644 --- a/_data/navigation_bns.yml +++ b/_data/navigation_core.yml @@ -7,10 +7,8 @@ - title: Tutorials & Cookbooks docs: - - core/naming/tutorial_creation - core/naming/tutorial_subdomains - core/naming/search - - core/naming/openbazaar - title: How to use BNS @@ -21,11 +19,7 @@ - core/naming/register - core/naming/manage - core/naming/subdomains - -- title: Forks and Dids - docs: - core/naming/forks - - core/naming/did - title: Atlas docs: diff --git a/_data/navigation_home.yml b/_data/navigation_home.yml index 98dd2400..ee01dedb 100644 --- a/_data/navigation_home.yml +++ b/_data/navigation_home.yml @@ -10,10 +10,10 @@ icon: settings doc: browser/browser-introduction -- title: Build Apps and Earn Money +- title: Build Decentralized Applications desc: Learn how to build an application that earns with Blockstack. icon: code - doc: android/tutorial + doc: browser/hello-blockstack - title: Use the Naming Service desc: Work with namespaces, zone files, and other advanced BNS topics. diff --git a/_data/navigation_learn.yml b/_data/navigation_learn.yml index a7e79680..52a5acee 100644 --- a/_data/navigation_learn.yml +++ b/_data/navigation_learn.yml @@ -1,7 +1,7 @@ - title: Try a tutorial docs: - browser/hello-blockstack - - browser/multi-player-storage + - browser/blockstack_storage - title: Work with an SDK docs: @@ -10,5 +10,5 @@ - title: Reference docs: - - core/faq_developer + - core/faq_developer - common/javascript_ref diff --git a/_includes/navbar.html b/_includes/navbar.html index ba41ead2..f60bca29 100644 --- a/_includes/navbar.html +++ b/_includes/navbar.html @@ -3,8 +3,11 @@
    diff --git a/_includes/related-bns.html b/_includes/related-core.html similarity index 100% rename from _includes/related-bns.html rename to _includes/related-core.html diff --git a/_layouts/auth.html b/_layouts/auth.html index c3237ba8..85fd20fd 100644 --- a/_layouts/auth.html +++ b/_layouts/auth.html @@ -36,7 +36,7 @@ layout: default
    -
    +

    {{ page.title | escape }}

    @@ -47,7 +47,7 @@ layout: default {% include post-meta.html %}
    -
    +
    {{ content }} {% include share.html %}
    diff --git a/_layouts/bns.html b/_layouts/bns.html index 4a6d818c..79e84616 100644 --- a/_layouts/bns.html +++ b/_layouts/bns.html @@ -32,7 +32,7 @@ layout: default
    -
    +

    {{ page.title | escape }}

    @@ -42,7 +42,7 @@ layout: default {% include post-meta.html %}
    -
    +
    {{ content }} {% include share.html %}
    diff --git a/_layouts/changelog.html b/_layouts/changelog.html index 2288936c..daa30cde 100644 --- a/_layouts/changelog.html +++ b/_layouts/changelog.html @@ -5,11 +5,11 @@ layout: default
    -
    +

    {{ page.title | escape }}

    -
    +
    {{ content }}
    diff --git a/_layouts/contact.html b/_layouts/contact.html index bafa0ed8..9290f394 100644 --- a/_layouts/contact.html +++ b/_layouts/contact.html @@ -5,11 +5,11 @@ layout: default
    -
    +

    {{ page.title | escape }}

    -
    +
    {{ content }}
    diff --git a/_layouts/core.html b/_layouts/core.html new file mode 100644 index 00000000..ef8f6389 --- /dev/null +++ b/_layouts/core.html @@ -0,0 +1,74 @@ +--- +layout: default +--- + +
    +
    +
    + + + +
    + +
    + +

    {{ page.title | escape }}

    + + {% if page.subtitle %}

    {{ page.subtitle }}

    {% endif %} + + + + + + {{ content }} + {% include share.html %} +
    + +
    + + {% include paginate-doc.html %} + + + +
    + + + +
    + +
    +
    diff --git a/_layouts/evaluate.html b/_layouts/evaluate.html index c093a34c..dde91ea3 100644 --- a/_layouts/evaluate.html +++ b/_layouts/evaluate.html @@ -36,7 +36,7 @@ layout: default
    -
    +

    {{ page.title | escape }}

    @@ -47,7 +47,7 @@ layout: default {% include post-meta.html %}
    -
    +
    {{ content }} {% include share.html %}
    diff --git a/_layouts/gaia.html b/_layouts/gaia.html index d401f056..cb080533 100644 --- a/_layouts/gaia.html +++ b/_layouts/gaia.html @@ -32,7 +32,7 @@ layout: default
    -
    +

    {{ page.title | escape }}

    @@ -42,7 +42,7 @@ layout: default {% include post-meta.html %}
    -
    +
    {{ content }} {% include share.html %}
    diff --git a/_layouts/learn.html b/_layouts/learn.html index 528c8446..933ee1dc 100644 --- a/_layouts/learn.html +++ b/_layouts/learn.html @@ -36,7 +36,7 @@ layout: default
    -
    +

    {{ page.title | escape }}

    @@ -47,7 +47,7 @@ layout: default {% include post-meta.html %}
    -
    +
    {{ content }} {% include share.html %}
    diff --git a/_layouts/page.html b/_layouts/page.html index 32771b28..d7e5e171 100644 --- a/_layouts/page.html +++ b/_layouts/page.html @@ -5,11 +5,11 @@ layout: default
    -
    +

    {{ page.title | escape }}

    -
    +
    {{ content }}
    diff --git a/_layouts/post.html b/_layouts/post.html index 7c0624d0..d4a98cde 100644 --- a/_layouts/post.html +++ b/_layouts/post.html @@ -4,7 +4,7 @@ layout: default
    -
    +

    {{ page.title | escape }}

    diff --git a/_layouts/usenew.html b/_layouts/usenew.html index bc87dbfe..4fdf3714 100644 --- a/_layouts/usenew.html +++ b/_layouts/usenew.html @@ -36,7 +36,7 @@ layout: default
    -
    +

    {{ page.title | escape }}

    @@ -47,7 +47,7 @@ layout: default {% include post-meta.html %}
    -
    +
    {{ content }} {% include share.html %}
    diff --git a/_site/2017/05/25/post63.html b/_site/2017/05/25/post63.html index 75a448cb..0d79772e 100644 --- a/_site/2017/05/25/post63.html +++ b/_site/2017/05/25/post63.html @@ -42,8 +42,11 @@
      @@ -95,7 +98,7 @@
      -
      +

      Site tags

      diff --git a/_site/404.html b/_site/404.html index 37a14f52..810f89dc 100644 --- a/_site/404.html +++ b/_site/404.html @@ -40,8 +40,11 @@
        @@ -94,11 +97,11 @@
        -
        +

        Feeling Lost

        -
        +

        The page you are looking for cannot be found. Please navigate to homepage.

        diff --git a/_site/android/tutorial.html b/_site/android/tutorial.html index 0947d5a6..69b1899a 100644 --- a/_site/android/tutorial.html +++ b/_site/android/tutorial.html @@ -17,9 +17,9 @@ - + +{"description":"Android SDK Tutorial (Pre-release)","author":{"@type":"Person","name":"Blockstack"},"@type":"BlogPosting","url":"https://zbabystack.netlify.com/android/tutorial.html","headline":"Android SDK Tutorial (Pre-release)","dateModified":"2018-09-12T18:20:57-07:00","datePublished":"2018-09-12T18:20:57-07:00","mainEntityOfPage":{"@type":"WebPage","@id":"https://zbabystack.netlify.com/android/tutorial.html"},"@context":"http://schema.org"} @@ -42,8 +42,11 @@
        @@ -158,7 +161,7 @@
        -
        -
        +

        This tutorial is written for readers who are new to either or both Blockstack and Android to create a decentralized application. It contains the following diff --git a/_site/browser/README.md b/_site/browser/README.md deleted file mode 100644 index 787392e1..00000000 --- a/_site/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/_site/browser/multi-player-storage.html b/_site/browser/blockstack_storage.html similarity index 90% rename from _site/browser/multi-player-storage.html rename to _site/browser/blockstack_storage.html index 7e95e304..8381d07d 100644 --- a/_site/browser/multi-player-storage.html +++ b/_site/browser/blockstack_storage.html @@ -6,20 +6,20 @@ -Manage Data with Gaia | Blockstack +Blockstack Storage Tutorial | Blockstack - + - - - - + + + + - + +{"description":"Blockstack Storage Tutorial","author":{"@type":"Person","name":"Blockstack"},"@type":"BlogPosting","url":"https://zbabystack.netlify.com/browser/blockstack_storage.html","headline":"Blockstack Storage Tutorial","dateModified":"2018-09-12T18:20:57-07:00","datePublished":"2018-09-12T18:20:57-07:00","mainEntityOfPage":{"@type":"WebPage","@id":"https://zbabystack.netlify.com/browser/blockstack_storage.html"},"@context":"http://schema.org"} @@ -42,8 +42,11 @@

        @@ -158,9 +161,9 @@
        -
        +
        -

        Manage Data with Gaia

        +

        Blockstack Storage Tutorial

        @@ -176,18 +179,18 @@ -
        -
        +

        In this tutorial, you build a micro-blogging application using multi-player Gaia storage. Gaia is Blockstack’s decentralized high-performance storage @@ -1075,8 +1078,8 @@ about Blockstack. To use a working version of the app go here.

        diff --git a/_site/browser/browser-introduction.html b/_site/browser/browser-introduction.html index 293df6b7..487a051f 100644 --- a/_site/browser/browser-introduction.html +++ b/_site/browser/browser-introduction.html @@ -17,9 +17,9 @@ - + +{"description":"Use the Blockstack Browser","author":{"@type":"Person","name":"Blockstack"},"@type":"BlogPosting","url":"https://zbabystack.netlify.com/browser/browser-introduction.html","headline":"Use the Blockstack Browser","dateModified":"2018-09-12T18:20:57-07:00","datePublished":"2018-09-12T18:20:57-07:00","mainEntityOfPage":{"@type":"WebPage","@id":"https://zbabystack.netlify.com/browser/browser-introduction.html"},"@context":"http://schema.org"} @@ -42,8 +42,11 @@
          @@ -127,7 +130,7 @@
          -
          -
          +

          The Blockstack Browser gives users the ability to explore and use the decentralized applications (dapps). The decentralized applications are a new way @@ -237,7 +240,7 @@ page.

          Installation requires that you have macOS High Sierra 10.12 or higher. Do the following to install:

            -
          1. Download the OSX installer from from <a href=”https://blockstack.org/install” target=”_blank”>the browser installation page</a>.
          2. +
          3. Download the OSX installer from the browser installation page.
          4. Double-click the downloaded DMG file to launch the installer.

            @@ -273,7 +276,7 @@ you are already logged into the local application:

            install:

              -
            1. Download the Windows installer from from <a href=”https://blockstack.org/install” target=”_blank”>the browser installation page</a>.
            2. +
            3. Download the Windows installer from from the browser installation page.
            4. Double-click the installer package to launch it.

              @@ -300,8 +303,7 @@ install:

              On Linux

              The Blockstack installation on Linux requires Docker. Before installing -Blockstack, <a href=“https://docs.docker.com/install/” target=”_blank”>install -the version of Docker appropriate for your operating system</a>.

              +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.

              @@ -309,7 +311,7 @@ the version of Docker appropriate for your operating system</a>.

              1. -

                Download the Linux installer from from <a href=”https://blockstack.org/install” target=”_blank”>the browser installation page</a>.

                +

                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. diff --git a/_site/browser/faq_general.html b/_site/browser/faq_general.html index 2493e15e..6788b4c7 100644 --- a/_site/browser/faq_general.html +++ b/_site/browser/faq_general.html @@ -17,9 +17,9 @@ - + +{"description":"Users Frequently Asked Questions (FAQ)","author":{"@type":"Person","name":"Blockstack"},"@type":"BlogPosting","url":"https://zbabystack.netlify.com/browser/faq_general.html","headline":"Users Frequently Asked Questions (FAQ)","dateModified":"2018-09-12T18:20:57-07:00","datePublished":"2018-09-12T18:20:57-07:00","mainEntityOfPage":{"@type":"WebPage","@id":"https://zbabystack.netlify.com/browser/faq_general.html"},"@context":"http://schema.org"} @@ -42,8 +42,11 @@
                  @@ -127,7 +130,7 @@
                  -
                  +

                  Users Frequently Asked Questions (FAQ)

                  @@ -145,18 +148,18 @@ -
                  -
                  +

                  This is a general FAQ intended for users of decentralized applications. If you are a developer, refer to the [technical FAQ].

                  @@ -203,7 +206,7 @@ For developers, Blockstack develops an ecosystem of software and services that d
                • 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 applications in the new Internet don’t keep or save your data.
                • +
                • 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?

                diff --git a/_site/browser/hello-blockstack.html b/_site/browser/hello-blockstack.html index b8b1629f..c4b69866 100644 --- a/_site/browser/hello-blockstack.html +++ b/_site/browser/hello-blockstack.html @@ -17,9 +17,9 @@ - + +{"description":"Hello, Blockstack Tutorial","author":{"@type":"Person","name":"Blockstack"},"@type":"BlogPosting","url":"https://zbabystack.netlify.com/browser/hello-blockstack.html","headline":"Hello, Blockstack Tutorial","dateModified":"2018-09-12T18:20:57-07:00","datePublished":"2018-09-12T18:20:57-07:00","mainEntityOfPage":{"@type":"WebPage","@id":"https://zbabystack.netlify.com/browser/hello-blockstack.html"},"@context":"http://schema.org"} @@ -42,8 +42,11 @@
                @@ -158,7 +161,7 @@
                -
                -
                +
                -

                In this tutorial, you build a simple application on Blockstack. The application +

                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 @@ -201,7 +204,7 @@ decentralized, server-less application. You work through the following sections:

              3. Generate an initial Blockstack application
              4. Review the basic application structure
              5. Start the server and view the application
              6. -
              7. Understand the application code
              -

              Understand the application code

              +

              Understand the generated application code

              -

              In this section, you look at the main application code which is located in the -public/app.css file. Open this file now.

              +

              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.

              diff --git a/_site/browser/ids-introduction.html b/_site/browser/ids-introduction.html index 52c2673e..feb11da3 100644 --- a/_site/browser/ids-introduction.html +++ b/_site/browser/ids-introduction.html @@ -17,9 +17,9 @@ - + +{"description":"Get and use a Blockstack ID","author":{"@type":"Person","name":"Blockstack"},"@type":"BlogPosting","url":"https://zbabystack.netlify.com/browser/ids-introduction.html","headline":"Get and use a Blockstack ID","dateModified":"2018-09-12T18:20:57-07:00","datePublished":"2018-09-12T18:20:57-07:00","mainEntityOfPage":{"@type":"WebPage","@id":"https://zbabystack.netlify.com/browser/ids-introduction.html"},"@context":"http://schema.org"} @@ -42,8 +42,11 @@
                @@ -127,7 +130,7 @@
                -
                -
                +

                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 diff --git a/_site/browser/todo-list.html b/_site/browser/todo-list.html deleted file mode 100644 index 9f628df6..00000000 --- a/_site/browser/todo-list.html +++ /dev/null @@ -1,379 +0,0 @@ -

                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. 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.

                - -
                $ which npm
                -/usr/local/bin/npm
                -$ which yarn
                -/usr/local/bin/yarn
                -
                -
                - -

                Install npm, install -yarn, or both as needed. You

                - -

                While it stands alone, this tour does on the information from the Hello -Blockstack tutorial. 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. -These instructions assume you are cloning.

                - -
                  -
                1. -

                  Install the code by cloning it.

                  - -
                   $ git clone git@github.com:blockstack/blockstack-todos.git
                  -
                  -
                  -
                2. -
                3. -

                  Change to directory to the root of the code.

                  - -
                   $ cd blockstack-todos
                  -
                  -
                  -
                4. -
                5. -

                  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.
                  -
                  -
                  -
                6. -
                - -

                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:

                - - - - - - - - - - - - - - - - - - - - - - - - - - -
                FileDescription
                main.jsApplication initialization.
                App.vue Code for handling the authResponse.
                Landing.vue Code for the initial sign on page.
                Dashboard.vueApplication 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:

                  - -

                  -
                2. -
                3. -

                  Choose Sign In with Blockstack.

                  -
                4. -
                - -

                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 installedNot installed
                - -

                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:

                - -

                - -

                If the user chooses Deny, the Blockstack authenticator opens but the user -is not logged into the sample application.

                - -

                - -

                If the login to the application is successful, the user is presented with the application:

                - -

                - -

                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. -
                3. Navigate to jwt.io.
                4. -
                5. -

                  Paste the full token there.

                  - -

                  The output should look similar to below:

                  - -
                   {
                  -   "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"
                  -   ]
                  - }
                  -
                  -
                  -
                6. -
                - -
                -

                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. -
                3. The Blockstack JWT implementation is different from other implementations because of the underlying cryptography we employ. There are libraries in Javascript and Ruby available on the Blockstack Github to allow you to work with these tokens.
                4. -
                -
                - -

                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:

                - - - - - - - - - - - - - - - - - - - - - - -
                FileDescription
                App.vue Handles the authResponse.
                Landing.vue Generates the authRequest.
                Dashboard.vueHandles sign out.
                - -

                The src/components/Landing.vue code calls a redirectToSignIn() function which generates the authRequest and redirects the user to the Blockstack authenticator:

                - -
                signIn () {
                -  const blockstack = this.blockstack
                -  blockstack.redirectToSignIn()
                -}
                -
                -
                - -

                Once the user authenticates, the application handles the authResponse in the src/App.vue file. :

                - -
                if (blockstack.isUserSignedIn()) {
                -  this.user = blockstack.loadUserData().profile
                -} else if (blockstack.isSignInPending()) {
                -  blockstack.handlePendingSignIn()
                -  .then((userData) => {
                -    window.location = window.location.origin
                -  })
                -}
                -
                -
                - -

                If blockstack.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() 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.

                -
                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:

                - -

                - -

                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. You can fetch the todos.json -file you just added by opening the Javascript console and running the following -command:

                - -
                blockstack.getFile("todos.json", { decrypt: true }).then((file) => {console.log(file)})
                -
                - -

                You should see a JSON with the todos you just added:

                - -
                [
                -  {
                -    "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:

                - -
                [
                -  {
                -    "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:

                - -
                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() method to store it in our Gaia Hub.

                - -

                The code needs to read the Todo items from the storage with the blockstack.getFile() method which returns a promise:

                - -
                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.

                - -

                If you would like to explore the Blockstack APIs, you can visit the Blockstack Core API documentation or the Blockstack JS API.

                - -

                Go forth and build!

                diff --git a/_site/changelog/index.html b/_site/changelog/index.html index 7d638358..e593f017 100644 --- a/_site/changelog/index.html +++ b/_site/changelog/index.html @@ -40,8 +40,11 @@
                  @@ -94,11 +97,11 @@
                  -
                  +

                  Changelog

                  -
                  +

                  Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.

                  diff --git a/_site/common/construction.html b/_site/common/construction.html index 378509c6..ade5813d 100644 --- a/_site/common/construction.html +++ b/_site/common/construction.html @@ -17,9 +17,9 @@ - + +{"description":"Excuse our dust!","author":{"@type":"Person","name":"Blockstack"},"@type":"BlogPosting","url":"https://zbabystack.netlify.com/common/construction.html","headline":"Excuse our dust!","dateModified":"2018-09-12T18:20:57-07:00","datePublished":"2018-09-12T18:20:57-07:00","mainEntityOfPage":{"@type":"WebPage","@id":"https://zbabystack.netlify.com/common/construction.html"},"@context":"http://schema.org"} @@ -42,8 +42,11 @@
                    @@ -119,7 +122,7 @@
                    -
                    -
                    +

                    This section UNDER CONSTRUCTION please comeback and visit us soon. If you have questions about this area or suggestions for content, please feel free to post on the Blockstack Forum.

                    diff --git a/_site/contact/index.html b/_site/contact/index.html index ba19d258..d1529cdf 100644 --- a/_site/contact/index.html +++ b/_site/contact/index.html @@ -6,9 +6,9 @@ -Got Any Questions | Blockstack +Got Any Questions? | Blockstack - + @@ -17,7 +17,7 @@ +{"description":"Docs","author":{"@type":"Person","name":"Blockstack"},"@type":"WebPage","url":"https://zbabystack.netlify.com/contact/","headline":"Got Any Questions?","@context":"http://schema.org"} @@ -40,8 +40,11 @@
                      @@ -94,96 +97,21 @@
                      -
                      - -

                      Got Any Questions

                      - -
                      -
                      Morbi varius in accumsan blandit, elit ligula velit, luctus mattis ante nulla nulla.
                      - -

                      Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt.

                      - -
                      - + -

                      Contact Form

                      -
                      -
                      - -
                      - -
                      -
                      -
                      - -
                      - -
                      -
                      -
                      - -
                      - -
                      -
                      -
                      - -
                      - -
                      -
                      -
                      - - - - - -
                      -
                      -
                      diff --git a/_site/core/api-specs.md b/_site/core/api-specs.md index 80c445e3..70435abc 100644 --- a/_site/core/api-specs.md +++ b/_site/core/api-specs.md @@ -1,1719 +1,48 @@ -# Group Authorization - -## Auth Request View [GET /auth?authRequest={authRequestToken}] - -This endpoint is accessed internally by -[blockstack.js](https://github.com/blockstack/blockstack.js) to process user -sign-in requests. Applications use `blockstack.js` to direct users to sign in -or sign up. Please see the [blockstack.js -documentation](http://blockstack.github.io/blockstack.js/#authentication) on -authentication for details. - -When the user clicks the Blockstack login button in an application, the app should -redirect the user to this endpoint (via `blockstack.js`). If the user already has an -account, they will be redirected along with requested data. If the -user doesn’t have an account, the user will be presented with each of -the app’s requested permissions, then will satisfy or deny them. The -sign-in dashboard will then redirect the user back to the application -with a signed JWT. This JWT contains a signature and an API -token that the app can use for future authorization of endpoints. - -Each application specifies in advance which family of API calls it -will need to make to function properly. This list is passed along to -this endpoint when creating an application account. The -account-creation page shows this list of API endpoints and what they -do, and allows the user to line-item approve or deny them. The list -is stored to the user's profile, and returned to the application -application as part of the session JWT. The API -server will NACK requests to endpoints in API families absent from the -session JWT. - -+ Requires root authorization -+ Parameters - + authRequestToken: eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksifQ.eyJhcHBfZG9tYWluIjoiaGVsbG9ibG9ja3N0YWNrLmNvbSIsIm1ldGhvZHMiOltdLCJhcHBfcHVibGljX2tleSI6IjAyYjk0ZjY4NDgzOGFkMjdmZTE0Nzk1MGMyNjQ1ZjRhYzhjYmU1OTJlYjYzYmQwYTQ5MWQ2YzBlYWZjNjE0YzVjMCJ9.0lLrxt8uGtB2rCKB9sb0jK1DdrrWuuuWM-nsyjvFnmjNx0XfG14Npl72w6hp9W2OHoXdPe7VuXkfvKmVNlQdeA (jwt token) - app token before signing -+ Response 200 - + Body - - {"token": - "eyJhbGciOiJFUzI1NksiLCJ0eXAiOiJKV1QifQ.eyJhcHBfZG9tYWluIjoiaGVsbG9ibG9ja3N0YWNrLmNvbSIsIm1ldGhvZHMiOltdLCJ0aW1lc3RhbXAiOjE0OTkzNDc4OTUsImV4cGlyZXMiOjE0OTk5NTI2OTUsImFwcF91c2VyX2lkIjoiMUVITmE2UTRKejJ1dk5FeEw0OTdtRTQzaWtYaHdGNmtabSIsImRldmljZV9pZCI6IjAiLCJibG9ja2NoYWluX2lkIjpudWxsLCJzdG9yYWdlIjp7ImNsYXNzZXMiOnsid3JpdGVfcHJpdmF0ZSI6WyJkaXNrIiwiczMiLCJibG9ja3N0YWNrX3NlcnZlciIsImRodCJdLCJyZWFkX2xvY2FsIjpbImRpc2siXSwicmVhZF9wdWJsaWMiOlsiczMiLCJibG9ja3N0YWNrX3Jlc29sdmVyIiwiYmxvY2tzdGFja19zZXJ2ZXIiLCJodHRwIiwiZGh0Il0sIndyaXRlX2xvY2FsIjpbImRpc2siXSwid3JpdGVfcHVibGljIjpbXSwicmVhZF9wcml2YXRlIjpbImRpc2siXX0sInByZWZlcmVuY2VzIjp7fX0sImFwaV9lbmRwb2ludCI6ImxvY2FsaG9zdDo2MjcwIiwiYXBwX3B1YmxpY19rZXlzIjpbXSwidmVyc2lvbiI6MX0.Bhne8wQpPVfkV-VLf2mrsoMmNiE2e04crgLN7OUFKEh_YWeGmqjoZU7JVSzXA5r7LCpZ9Eki5uAWlJSHk-JuCA" - } - -# Group Core Node Administration - -Blockstack Core's API module provides a set of API calls for interacting with -the node's configuration. However, most of this section is **DEPRECATED** in favor -of moving configuration state to the [Blockstack -Browser](https://github.com/blockstack/blockstack-browser). Client-side state -is managed by [blockstack.js](https://github.com/blockstack/blockstack.js). - -## Ping the node [GET /v1/node/ping] -Ping the Blockstack node to see if it's alive. -+ Public Endpoint -+ Response 200 (application/json) - + Body - - { - "status": "alive", - "version": "###version###" - } - + Schema - - { - "type": "object", - "properties": { - "status": { - "type": "string" - }, - "version": { - "type": "string" - } - }, - "required": [ - "status", - "version" - ] - } - -## Get the node's config [GET /v1/node/config] -Returns the current configuation settings of the Blockstack node. - -+ DEPRECATED. Blockstack clients should use - [blockstack.js](https://github.com/blockstack/blockstack.js) for querying -client-side configuration state. -+ Requires root authorization -+ Legacy Endpoint -+ Response 200 (application/json) - + Body - - { - "bitcoind": { - "passwd": "blockstacksystem", - "port": "18332", - "regtest": "True", - "server": "localhost", - "spv_path": "/tmp/.../spv_headers.dat", - "use_https": "False", - "user": "blockstack" - }, - "blockchain-reader": { - "port": "18332", - "rpc_password": "blockstacksystem", - "rpc_username": "blockstack", - "server": "localhost", - "use_https": "False", - "utxo_provider": "bitcoind_utxo", - "version_byte": "0" - }, - "blockchain-writer": { - "port": "18332", - "rpc_password": "blockstacksystem", - "rpc_username": "blockstack", - "server": "localhost", - "use_https": "False", - "utxo_provider": "bitcoind_utxo", - "version_byte": "0" - }, - "blockstack-client": { - "advanced_mode": "true", - "api_endpoint_port": "6270", - "api_password": "...", - "blockchain_reader": "bitcoind_utxo", - "blockchain_writer": "bitcoind_utxo", - "client_version": "0.18.0.0", - "poll_interval": "300", - "port": "16264", - "queue_path": "/tmp/.../client/queues.db", - "rpc_detach": "True", - "server": "localhost", - "storage_drivers": "disk", - "storage_drivers_required_write": "disk", - } - } - - + Schema - - { - 'type': 'object', - 'patternProperties': { - '.+': { - 'type': 'string', - 'pattern': '.+', - }, - } - -## Set config field [POST /v1/node/config/{section}?{key}={value}] -Set one or more config fields in a config section. - -+ DEPRECATED. Blockstack clients should use - [blockstack.js](https://github.com/blockstack/blockstack.js) for client-side -configuration management. -+ Requires root authorization -+ Legacy Endpoint -+ Parameters - + section: blockstack-client (string) - configuration section - + key: server (string) - configuration variable to set - + value: node.blockstack.org (string) - value to set - -+ Response 200 (application/json) - + Body - - { 'status' : true } - - + Schema - - { - 'anyOf': [ - { - 'type': 'object', - 'properties': { - 'status': { - 'type': 'boolean' - }, - }, - }, - { - 'type': 'object', - 'properties': { - 'error': { - 'type': 'string', - }, - }, - }, - ], - } - -## Delete a config field [DELETE /v1/node/config/{section}/{key}] -Delete a single field from the configuration. - -+ DEPRECATED. Blockstack clients should use - [blockstack.js](https://github.com/blockstack/blockstack.js) for client-side -configuration management. -+ Requires root authorization -+ Legacy Endpoint -+ Parameters - + section: blockstack-client (string) - configuration section - + key: advanced_mode (string) - configuration variable to set - -+ Response 200 (application/json) - - + Body - - { 'status' : true } - - + Schema - - { - 'anyOf': [ - { - 'type': 'object', - 'properties': { - 'status': { - 'type': 'boolean' - }, - }, - }, - { - 'type': 'object', - 'properties': { - 'error': { - 'type': 'string', - }, - }, - }, - ], - } - -## Delete a config section [DELETE /v1/node/config/{section}] -Deletes a whole section from the node's configuration. - -+ DEPRECATED. Blockstack clients should use - [blockstack.js](https://github.com/blockstack/blockstack.js) for client-side -configuration management. -+ Requires root authorization -+ Legacy Endpoint -+ Parameters - + section: blockstack-client (string) - configuration section - -+ Response 200 (application/json) - + Body - - { 'status' : true } - - + Schema - - { - 'anyOf': [ - { - 'type': 'object', - 'properties': { - 'status': { - 'type': 'boolean' - }, - }, - }, - { - 'type': 'object', - 'properties': { - 'error': { - 'type': 'string', - }, - }, - }, - ], - } - -## Get registrar state [GET /v1/node/registrar/state] -Gets the current state of the registrar. That is, the Blockstack operations -that have been submitted to the blockchain but are still waiting for -enough confirmations. - -+ DEPRECATED. Blockstack clients should use - [blockstack.js](https://github.com/blockstack/blockstack.js) to query -the status of pending transactions. -+ Requires root authorization -+ Legacy Endpoint -+ Response 200 (application/json) - + Body - - [ - { - "block_height": 666, - "fqu": "bar.test", - "owner_address": "myaPViveUWiiZQQTb51KXCDde4iLC3Rf3K", - "payment_address": "mv1uqYWZpnap4VBSKTHfKW6noTZcNtxtCW", - "profile": { - "@type": "Person", - "accounts": [] - }, - "transfer_address": null, - "tx_hash": "b0fa7d4d79bb69cb3eccf40978514dec1620d05fe7822c550c2764c670efcd29", - "type": "preorder", - "zonefile": "$ORIGIN bar.test\n$TTL 3600\npubkey TXT \"pubkey:data:03ea5d8c2a3ba84eb17625162320bb53440557c71f7977a57d61405e86be7bdcda\"\n_file URI 10 1 \"file:///home/bar/.blockstack/storage-disk/mutable/bar.test\"\n", - "zonefile_hash": "cbe11bbbfffe415b915a7f9566748f72a0d8b2bd" - } - ] - - + Schema - - { - 'type': 'array', - 'items': { - 'type': 'object', - 'properties': { - 'block_height': { - 'type': 'integer', - 'minimum': 0, - }, - 'fqu': { - 'type': 'string', - 'pattern': r'^([a-z0-9\\-_.+]{3,37})$', - }, - 'owner_address': { - 'type': 'string', - 'pattern': r'^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$', - }, - 'payment_address': { - 'type': 'string', - 'pattern': r'^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$', - }, - 'profile': { - 'type': 'object', - 'additionalProperties': true, - 'properties': { - '@context': { - 'optional': true, - 'type': 'string' - }, - '@id': { - 'optional': true, - 'type': 'string' - }, - '@type': { - 'type': 'string' - }, - 'account': { - 'items': { - 'properties': { - '@type': { - 'type': 'string' - }, - 'identifier': { - 'optional': true, - 'type': 'string' - }, - 'proofMessage': { - 'optional': true, - 'type': 'string' - }, - 'proofSignature': { - 'optional': true, - 'type': 'string' - }, - 'proofType': { - 'optional': true, - 'type': 'string' - }, - 'proofUrl': { - 'optional': true, - 'type': 'string' - }, - 'service': { - 'optional': true, - 'type': 'string' - } - }, - 'type': 'object' - }, - 'optional': true, - 'type': 'array' - }, - 'address': { - 'optional': true, - 'properties': { - '@type': { - 'type': 'string' - }, - 'addressCountry': { - 'optional': true, - 'type': 'string' - }, - 'addressLocality': { - 'optional': true, - 'type': 'string' - }, - 'postalCode': { - 'optional': true, - 'type': 'string' - }, - 'streetAddress': { - 'optional': true, - 'type': 'string' - } - }, - 'type': 'object' - }, - 'birthDate': { - 'optional': true, - 'type': 'string' - }, - 'description': { - 'optional': true, - 'type': 'string' - }, - 'familyName': { - 'optional': true, - 'type': 'string' - }, - 'givenName': { - 'optional': true, - 'type': 'string' - }, - 'image': { - 'items': { - 'properties': { - '@type': { - 'type': 'string' - }, - 'contentUrl': { - 'optional': true, - 'type': 'string' - }, - 'name': { - 'optional': true, - 'type': 'string' - } - }, - 'type': 'object' - }, - 'optional': true, - 'type': 'array' - }, - 'knows': { - 'items': { - 'properties': { - '@id': { - 'optional': true, - 'type': 'string' - }, - '@type': { - 'type': 'string' - } - }, - 'type': 'object' - }, - 'optional': true, - 'type': 'array' - }, - 'name': { - 'optional': true, - 'type': 'string' - }, - 'taxID': { - 'optional': true, - 'type': 'string' - }, - 'website': { - 'items': { - 'properties': { - '@type': { - 'type': 'string' - }, - 'url': { - 'optional': true, - 'type': 'string' - } - }, - 'type': 'object' - }, - 'optional': true, - 'type': 'array' - }, - 'worksFor': { - 'items': { - 'properties': { - '@id': { - 'optional': true, - 'type': 'string' - }, - '@type': { - 'type': 'string' - } - }, - 'type': 'object' - }, - 'optional': true, - 'type': 'array' - } - } - }, - 'transfer_address': r'^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$', - 'tx_hash': r'^([0-9a-fA-F]+)$', - 'type': '.+', - 'zonefile': '.+', - 'zonefile_hash': r'^([0-9a-fA-F]+)$' - } - } - } - - -# Group Core Wallet Management - -This entire section is **DEPRECATED** in favor of the wallet software in -[blockstack.js](https://github.com/blockstack/blockstack.js). Names registered -with this API will need to be transferred to the Blockstack Browser. - -The Blockstack Core node manages its own wallet -- this has three keys -for payment, name ownership, and signing data (e.g., user profiles). This -wallet can be managed through these endpoints. - -## Get balance via mock-insight API [GET /insight-api/addr/{address}/balance] -Returns the integer satoshi balance of the given address, with mininum -of 1 confirmation. - -+ DEPRECATED. Blockstack clients should use - [blockstack.js](https://github.com/blockstack/blockstack.js) to query -balances. -+ Authorization: `wallet_read` -+ Legacy Endpoint -+ Response 200 (application/json) - + Body - - 2104 - - + Schema - - { 'type' : 'integer' } - -## Get unconfirmed balance via mock-insight API [GET /insight-api/addr/{address}/unconfirmedBalance] -Returns the integer *unconfirmed* satoshi balance of the given address -(only the 0-confirmation balance). To get the min_conf=0 balance of an -address, you want *unconfirmedBalance* + *balance*. The unconfirmed -balance may be negative (if there is an unconfirmed spend). This -specification is strange, I know, but it replicates the interface of -insight-api. - -+ DEPRECATED. Blockstack clients should use - [blockstack.js](https://github.com/blockstack/blockstack.js) to query -balances. -+ Authorization: `wallet_read` -+ Legacy Endpoint -+ Response 200 (application/json) - + Body - - -1000 - - + Schema - - { 'type' : 'integer' } - -## Get wallet payment address [GET /v1/wallet/payment_address] - -Returns core node's payment address. - -+ DEPRECATED. Blockstack clients should use - [blockstack.js](https://github.com/blockstack/blockstack.js) to manage keys -and query UTXOs. -+ Authorization: `wallet_read` -+ Legacy Endpoint -+ Response 200 (application/json) - + Body - - { - "address": "mv1uqYWZpnap4VBSKTHfKW6noTZcNtxtCW" - } - - + Schema - - { - 'type': 'object', - 'properties': { - 'type': 'string', - 'pattern': r'^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$', - } - } - -## Set a specific wallet key [PUT /v1/wallet/keys/{keyname}] -This call instructs the blockstack core node to use a particular key -instead of the core node's configured wallet key. The setting of this -key is *temporary* by default, meaning that it is not written to -`~/.blockstack/wallet.json`, and on a subsequent restart, the key will -return to the original key. However, the core registrar *tracks* the -owner key used for each `PREORDER`, and stores that private key -encrypted (with `scrypt` and the core wallet password) in the -queue. When the registrar detects that the key being used for a -particular name has changed, it will recover by submitting further -transactions with the stored key. - -However, for blockstack core >= 0.14.5, the `persist_change` keyword -will instruct the core node to write the changed key to -`~/.blockstack/wallet.json`. In this mode, the node will backup the -previous wallet to `~/.blockstack/wallet.json.prior.` - -+ DEPRECATED. Blockstack clients should use - [blockstack.js](https://github.com/blockstack/blockstack.js) to manage keys. -+ Requires root authorization -+ Legacy Endpoint -+ Parameters - + keyname: owner (string) - which key to set (one of 'owner', 'data', 'payment') - -+ Request (application/json) - + Body - - "cPo24qGYz76xSbUCug6e8LzmzLGJPZoowQC7fCVPLN2tzCUJgfcW" - -+ Request (application/json) - + Schema - - { - "type" : "object", - "properties" : { - "private_key" : { - "anyOf": [ - { - "anyOf": [ - { - "pattern": "^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$", - "type": "string" - }, - { - "pattern": "^([0-9a-fA-F]+)$", - "type": "string" - } - ] - }, - { - "properties": { - "address": { - "pattern": "^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$", - "type": "string" - }, - "private_keys": { - "items": { - "anyOf": [ - { - "pattern": "^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$", - "type": "string" - }, - { - "pattern": "^([0-9a-fA-F]+)$", - "type": "string" - } - ] - }, - "type": "array" - }, - "redeem_script": { - "pattern": "^([0-9a-fA-F]+)$", - "type": "string" - } - }, - "required": [ - "address", - "redeem_script", - "private_keys" - ], - "type": "object" - } - ] - }, - "persist_change" : {"type" : "boolean"} - }, - "required" : [ "private_key" ] - } - -+ Request (application/json) - + Schema - - { - "anyOf": [ - { - "anyOf": [ - { - "pattern": "^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$", - "type": "string" - }, - { - "pattern": "^([0-9a-fA-F]+)$", - "type": "string" - } - ] - }, - { - "properties": { - "address": { - "pattern": "^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$", - "type": "string" - }, - "private_keys": { - "items": { - "anyOf": [ - { - "pattern": "^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$", - "type": "string" - }, - { - "pattern": "^([0-9a-fA-F]+)$", - "type": "string" - } - ] - }, - "type": "array" - }, - "redeem_script": { - "pattern": "^([0-9a-fA-F]+)$", - "type": "string" - } - }, - "required": [ - "address", - "redeem_script", - "private_keys" - ], - "type": "object" - } - ] - } - -+ Response 200 (application/json) - + Body - - {"status": true} - - + Schema - - { - 'anyOf': [ - { - 'type': 'object', - 'properties': { - 'status': { - 'type': 'boolean' - }, - }, - }, - { - 'type': 'object', - 'properties': { - 'error': { - 'type': 'string', - }, - }, - }, - ], - } - -## Get payment wallet balance [GET /v1/wallet/balance/{minconfs}] - -Fetches wallet balance, including UTXOs from transactions with at -least a specified number of confirmations. - -+ DEPRECATED. Blockstack clients should use - [blockstack.js](https://github.com/blockstack/blockstack.js) to manage keys -and query UTXOs. -+ Authorization: `wallet_read` -+ Legacy Endpoint -+ Parameters - + minconfs: 0 (number, optional) - the minimum confs of transactions to include in balance -+ Response 200 (application/json) - + Body - - { - "balance": { - "bitcoin": 49.931727, - "satoshis": 4993172700 - } - } - - + Schema - - { - 'type': 'object', - 'properties': { - 'balance': { - 'type': 'object', - 'properties': { - 'bitcoin': { - 'type': 'number', - 'minimum': 0, - }, - 'satoshis': { - 'type': 'integer', - 'minimum': 0, - }, - }, - }, - }, - } - -## Withdraw payment wallet funds [POST /v1/wallet/balance] -Withdraw an amount (given in satoshis) from the core payment -wallet, to a particular address. - -+ DEPRECATED. Blockstack clients should use - [blockstack.js](https://github.com/blockstack/blockstack.js) to manage keys, -generate transactions, and send transactions. -+ Authorization: `wallet_write` -+ Legacy Endpoint -+ Request (application/json) - + Body - - {'address' : 'mibZW6EBpXSTWQNQ9E4fi9hhGKYSMkjyg9', - 'amount' : 100, - 'min_confs' : 6, - 'tx_only' : false} - - + Schema - - { - 'type': 'object', - 'properties': { - 'address': { - 'type': 'string', - 'pattern': r"^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$", - }, - 'amount': { - 'type': 'integer', - 'minimum': 0, - }, - 'message': { - 'type': 'string', - 'pattern': '^.{1,80}$', - } - 'min_confs': { - 'type': 'integer', - 'minimum': 0, - }, - 'tx_only': { - 'type': 'boolean' - }, - 'payment_key': { - 'anyOf': [ - { - 'anyOf': [ - { - 'pattern': '^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$', - 'type': 'string' - }, - { - 'pattern': '^([0-9a-fA-F]+)$', - 'type': 'string' - } - ] - }, - { - 'properties': { - 'address': { - 'pattern': '^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$', - 'type': 'string' - }, - 'private_keys': { - 'items': { - 'anyOf': [ - { - 'pattern': '^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$', - 'type': 'string' - }, - { - 'pattern': '^([0-9a-fA-F]+)$', - 'type': 'string' - } - ] - }, - 'type': 'array' - }, - 'redeem_script': { - 'pattern': '^([0-9a-fA-F]+)$', - 'type': 'string' - } - }, - 'required': [ - 'owner' - ], - 'type': 'object' - } - ] - } - }, - 'required': [ - 'address' - ], - } - -+ Response 200 (application/json) - + Body - - { - "status": true, - "transaction_hash": "c4ee8d1993794487e6b5aca802a1793530bdff35c763ca051fbaa4b998780822", - "success": true - } - + Schema - - { - 'anyOf': [ - { - 'type': 'object', - 'properties': { - 'success': { - 'type': 'boolean' - }, - 'transaction_hash': { - 'type': 'string', - 'pattern': r'^([0-9a-fA-F]+)$', - }, - }, - }, - { - 'type': 'object', - 'properties': { - 'error': { - 'type': 'string', - }, - }, - }, - ], - } - - -## Get wallet owner address [GET /v1/wallet/owner_address] -Returns core node's owner address. - -+ DEPRECATED. Blockstack clients should use - [blockstack.js](https://github.com/blockstack/blockstack.js) to manage keys. -+ Authorization: `wallet_read` -+ Legacy Endpoint -+ Response 200 (application/json) - + Body - - { - "address": "myaPViveUWiiZQQTb51KXCDde4iLC3Rf3K" - } - + Schema - - { - 'anyOf': [ - { - 'type': 'object', - 'properties': { - 'address': { - 'type': 'string', - 'pattern': r"^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$", - }, - }, - }, - { - 'type': 'object', - 'properties': { - 'error': { - 'type': 'string', - }, - }, - }, - ], - } - - -## Get wallet data public key [GET /v1/wallet/data_pubkey] -Returns the public key the core node uses for signing user data - -+ DEPRECATED. Blockstack clients should use - [blockstack.js](https://github.com/blockstack/blockstack.js) to manage keys. -+ Authorization: `wallet_read` -+ Legacy Endpoint -+ Response 200 (application/json) - + Body - - { - "public_key": "03ea5d8c2a3ba84eb17625162320bb53440557c71f7977a57d61405e86be7bdcda" - } - + Schema - - { - 'anyOf': [ - { - 'type': 'object', - 'properties': { - 'public_key': { - 'type': 'string', - 'pattern': r'^([0-9a-fA-F]+)$', - }, - }, - }, - { - 'type': 'object', - 'properties': { - 'error': { - 'type': 'string', - }, - }, - }, - ], - } - -## Change wallet password [PUT /v1/wallet/password] -This will change the password for core's wallet. Currently not working endpoint. - -+ DEPRECATED. Blockstack clients should use - [blockstack.js](https://github.com/blockstack/blockstack.js) to encrypt keys. -+ Authorization: `wallet_write` -+ Legacy Endpoint -+ Request (application/json) - + Body - - {'password' : '"0123456789abcdef"', - 'new_password' : "abcdef0123456789"'} - + Schema - - { - 'anyOf': [ - { - 'type': 'object', - 'properties': { - 'password': { - 'type': 'string', - }, - 'new_password': { - 'type': 'string', - }, - }, - }, - { - 'type': 'object', - 'properties': { - 'error': { - 'type': 'string', - }, - }, - }, - ], - } - -## Set all wallet keys [PUT /v1/wallet/keys] - -+ DEPRECATED. Blockstack clients should use - [blockstack.js](https://github.com/blockstack/blockstack.js) to manage keys -in a client wallet. -+ Legacy Endpoint -+ Requires root authorization - -## Get all wallet keys [GET /v1/wallet/keys] - -+ DEPRECATED. Blockstack clients should use - [blockstack.js](https://github.com/blockstack/blockstack.js) to interact with -a client wallet. -+ Legacy Endpoint -+ Requires root authorization - -# Group Managing Names - -All POST, PUT, and DELETE routes in this section are **DEPRECATED** in favor of using either the [Blockstack -Browser](https://github.com/blockstack/blockstack-browser) or -[blockstack.js](https://github.com/blockstack/blockstack.js) to register and -manage names. - -All GET routes are still valid. - -## Register a name [POST /v1/names] -Registers a name, optionally to a given owner key and optionally using -a given payment key to pay for the name and transaction fees. - -This method takes a JSON blob with the following fields: - -* `name`: (required) the fully-qualified name to register. -* `zonefile`: (optional) the zone file to associate with this name. If one is - not given, a default one will be generated. -* `owner_address`: (optional) the recipient of this name. See below. -* `min_confs`: (optional) this is the minimum number of confirmations for UTXOs - that will be used for payments for this name registration. Lower values speed -up the name registration time, at the risk of blockchain reorgs or frontrunners -invalidating your name's registration. -* `tx_fee`: (optional) use this transaction fee (in satoshis) instead of - estimating one. -* `cost_satoshis`: (optional) how much to pay for this name. This value will be - sent to the name's namespace's designated burn address. If not given, the -precise value will be looked up automatically. -* `unsafe`: (optional) ignore internal safety checks when generating and sending - transactions. See below. -* `owner_key`: (optional) if given, this is the *private key* of the owner -that will receive the name. Useful for when you want to use your *personal* -node to register names to a different key, without having to bother with the -extra `NAME_TRANSFER` transaction required by passing `owner_address`. -DO NOT USE IN PUBLIC SETTINGS. -* `payment_key`: (optional) if given, this is the *private key* used to pay for - the name registration fee and transaction fees. Useful for when you want to -use your *personal* node to register names with a different payment key. DO NOT -USE IN PUBLIC SETTINGS. - -If no `owner_address` is supplied in the POSTed JSON -object, the node will register a name for the `owner_key` given in the -JSON blob. If no `owner_key` is given, then the node's current owner address -in its wallet will be used. - -If an `owner_address` is supplied, a `TRANSFER` transaction will be -broadcasted to send the name to appropriate owner. If you intend to register -many names to different addresses, it is recommended that you use one of the -wallet endpoints to set the node's owner keys to save yourself the extra -`TRANSFER` transactions (or pass `owner_key`). However, you should *ONLY* do -this if you trust the node (i.e. only do this for personal nodes). - -The `min_confs` keyword controls the minimum number of confirmations for -UTXOs used as payments for name registration. - -The `unsafe` keyword instructs the node's registrar to ignore certain -safety checks while registering the name (in particular, the registrar -will not verify that the user own's the name before issuing a -`REGISTER` and `UPDATE`). This allows the registrar to submit -operations before they have been confirmed on remote resolvers or -indexers, in this mode, the registrar will wait for 4 confirmations on -a `PREORDER`, 1 confirmation on a `REGISTER` and 1 confirmation on an -`UPDATE`. `node.blockstack.org` will correctly detect the registration -after the `UPDATE` has 6 confirmations. - -+ DEPRECATED. Registering names is now performed by [Blockstack - Browser](https://github.com/blockstack/blocktack-browser) and -[blockstack.js](https://github.com/blockstack/blockstack.js). -+ Authorization: `register` -+ Legacy Endpoint -+ Request (application/json) - + Body - - { - 'name' : 'bar.test' - } - -+ Request (application/json) - + Schema - - { - 'type': 'object', - 'properties': { - "name": { - 'type': 'string', - 'pattern': OP_NAME_PATTERN - }, - "zonefile": { - 'type': 'string', - 'maxLength': RPC_MAX_ZONEFILE_LEN, - }, - "owner_address": { - 'type': 'string', - 'pattern': OP_BASE58CHECK_PATTERN, - }, - 'min_confs': { - 'type': 'integer', - 'minimum': 0, - }, - 'tx_fee': { - 'type': 'integer', - 'minimum': 0, - 'maximum': TX_MAX_FEE, - }, - 'cost_satoshis': { - 'type': 'integer', - 'minimum': 0, - }, - 'unsafe': { - 'type': 'boolean' - }, - 'owner_key': { - 'anyOf': [ - { - 'anyOf': [ - { - 'pattern': '^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$', - 'type': 'string' - }, - { - 'pattern': '^([0-9a-fA-F]+)$', - 'type': 'string' - } - ] - }, - { - 'properties': { - 'address': { - 'pattern': '^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$', - 'type': 'string' - }, - 'private_keys': { - 'items': { - 'anyOf': [ - { - 'pattern': '^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$', - 'type': 'string' - }, - { - 'pattern': '^([0-9a-fA-F]+)$', - 'type': 'string' - } - ] - }, - 'type': 'array' - }, - 'redeem_script': { - 'pattern': '^([0-9a-fA-F]+)$', - 'type': 'string' - } - }, - 'required': [ - 'owner' - ], - 'type': 'object' - } - ] - }, - 'payment_key': { - 'anyOf': [ - { - 'anyOf': [ - { - 'pattern': '^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$', - 'type': 'string' - }, - { - 'pattern': '^([0-9a-fA-F]+)$', - 'type': 'string' - } - ] - }, - { - 'properties': { - 'address': { - 'pattern': '^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$', - 'type': 'string' - }, - 'private_keys': { - 'items': { - 'anyOf': [ - { - 'pattern': '^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$', - 'type': 'string' - }, - { - 'pattern': '^([0-9a-fA-F]+)$', - 'type': 'string' - } - ] - }, - 'type': 'array' - }, - 'redeem_script': { - 'pattern': '^([0-9a-fA-F]+)$', - 'type': 'string' - } - }, - 'required': [ - 'owner' - ], - 'type': 'object' - } - ] - } - }, - 'required': [ - 'name' - ], - 'additionalProperties': False, - } - -+ Response 200 (application/json) - + Body - - { - "message": "Name queued for registration. The process takes several hours. You can check the status with `blockstack info`.", - "success": true, - "transaction_hash": "6cdb9722f72875b30e1ab3de463e3960aced951f674be942b302581a9a9469a5" - } - - + Schema +# Group Core Node Administration - { - 'anyOf': [ - { - 'type': 'object', - 'properties': { - 'success': { - 'type': 'boolean' - }, - 'transaction_hash': { - 'type': 'string', - 'pattern': r'^([0-9a-fA-F]+)$', - }, - }, - }, - { - 'type': 'object', - 'properties': { - 'error': { - 'type': 'string', - }, - }, - }, - ], - } +Blockstack Core's 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). +## Ping the node [GET /v1/node/ping] -## Revoke name [DELETE /v1/names/{name}] -Revokes the name from Blockstack. This renders -the name unusable until it expires. Use this method if your private keys -are compromised. +Ping the Blockstack node to see if it's alive. -+ DEPRECATED. Blockstack clients should use - [blockstack.js](https://github.com/blockstack/blockstack.js) for generating -transactions. -+ Authorization: `revoke` -+ Legacy Endpoint -+ Parameters - + name: bar.test (string) - fully-qualified name ++ Public Endpoint + Response 200 (application/json) + Body - { - "message": "Name queued for revocation. The process takes ~1 hour. You can check the status with `blockstack info`.", - "success": true, - "transaction_hash": "b2745b706d7a14ce652265de103d7eaefb44a75eb658d7bb1db8868da08768b2" - } - - + Schema - { - 'anyOf': [ - { - 'type': 'object', - 'properties': { - 'success': { - 'type': 'boolean' - }, - 'transaction_hash': { - 'type': 'string', - 'pattern': r'^([0-9a-fA-F]+)$', - }, - }, - }, - { - 'type': 'object', - 'properties': { - 'error': { - 'type': 'string', - }, - }, - }, - ], + "status": "alive", + "version": "###version###" } - - -## Transfer name [PUT /v1/names/{name}/owner] -Transfers a name to a different owner. - -+ DEPRECATED. Blockstack clients should use - [blockstack.js](https://github.com/blockstack/blockstack.js) for generating -transactions. -+ Authorization: `transfer` -+ Legacy Endpoint -+ Parameters - + name: bar.test (string) - name to transfer -+ Request (application/json) - + Body - - { "owner" : "mjZicz7GSJBZuGeCMEgpzr8U9w6d41DfXm" } - -+ Request (application/json) - + Schema - - - { - 'type': 'object', - 'properties': { - 'owner': { - 'type': 'string', - 'pattern': OP_BASE58CHECK_PATTERN, - }, - 'tx_fee': { - 'type': 'integer', - 'minimum': 0, - 'maximum': 500000 - }, - 'owner_key': { - 'anyOf': [ - { - 'anyOf': [ - { - 'pattern': '^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$', - 'type': 'string' - }, - { - 'pattern': '^([0-9a-fA-F]+)$', - 'type': 'string' - } - ] - }, - { - 'properties': { - 'address': { - 'pattern': '^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$', - 'type': 'string' - }, - 'private_keys': { - 'items': { - 'anyOf': [ - { - 'pattern': '^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$', - 'type': 'string' - }, - { - 'pattern': '^([0-9a-fA-F]+)$', - 'type': 'string' - } - ] - }, - 'type': 'array' - }, - 'redeem_script': { - 'pattern': '^([0-9a-fA-F]+)$', - 'type': 'string' - } - }, - 'required': [ - 'owner' - ], - 'type': 'object' - } - ] - }, - 'payment_key': { - 'anyOf': [ - { - 'anyOf': [ - { - 'pattern': '^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$', - 'type': 'string' - }, - { - 'pattern': '^([0-9a-fA-F]+)$', - 'type': 'string' - } - ] - }, - { - 'properties': { - 'address': { - 'pattern': '^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$', - 'type': 'string' - }, - 'private_keys': { - 'items': { - 'anyOf': [ - { - 'pattern': '^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$', - 'type': 'string' - }, - { - 'pattern': '^([0-9a-fA-F]+)$', - 'type': 'string' - } - ] - }, - 'type': 'array' - }, - 'redeem_script': { - 'pattern': '^([0-9a-fA-F]+)$', - 'type': 'string' - } - }, - 'required': [ - 'owner' - ], - 'type': 'object' - } - ] - } - }, - 'additionalProperties': False, - } - - -+ Response 202 (application/json) - + Body - - { - "message": "Name queued for transfer. The process takes ~1 hour. You can check the status with `blockstack info`.", - "success": true, - "transaction_hash": "c0d677f9ee681abbed8ca6d231bc4ece517c8c6695ce883e5e196b5395402779" - } - + Schema { - 'anyOf': [ - { - 'type': 'object', - 'properties': { - 'success': { - 'type': 'boolean' - }, - 'transaction_hash': { - 'type': 'string', - 'pattern': r'^([0-9a-fA-F]+)$', - }, - }, - }, - { - 'type': 'object', - 'properties': { - 'error': { - 'type': 'string', - }, + "type": "object", + "properties": { + "status": { + "type": "string" }, - }, - ], - } - -## Publish zone file [POST /v1/names/zonefile] -Publish the zonefile which has _already_ been announced. -Submit either as a string with the 'zonefile' property, or -as a base64 encoded blob with the 'zonefile_b64' property. -We recommend base64-encoding your zone files in order to guarantee that they -will be JSON-encodable. - -+ DEPRECATED. -+ Request (application/json) - + Schema - - { - 'type': 'object', - 'properties': { - "zonefile": { - 'type': 'string', - }, - "zonefile_b64": { - 'type': 'string', - } - }, - 'additionalProperties': False, - } - -+ Response 200 (application/json) - + Body - - {'success': true, 'servers' : ['...']} - - -## Set zone file [PUT /v1/names/{name}/zonefile] -Sets the user's zonefile hash, and, if supplied, propagates the -zonefile. If you supply the zonefile, the hash will be calculated from -that. Ultimately, your requests should only supply one of `zonefile`, -`zonefile_b64`, or `zonefile_hash`. - -The value for `zonefile_b64` is a base64-encoded string. -New clients _should_ use the `zonefile_b64` field when specifying a zone file. -The `zonefile` field is preserved for legacy compatibility. - -This API call issues a `NAME_UPDATE` transaction for a name that is owned by -this node's wallet. That is, you can only call this API method if your node -owns the name you're updating. - -+ DEPRECATED. Blockstack clients should use - [blockstack.js](https://github.com/blockstack/blockstack.js) for generating -transactions. -+ Authorization: `update` -+ Legacy Endpoint -+ Parameters - + name: bar.test (string) - fully-qualified name -+ Request (application/json) - + Schema - - { - 'type': 'object', - 'properties': { - "zonefile": { - 'type': 'string', - }, - 'zonefile_b64': { - 'type': 'string', - 'pattern': r'^((?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4}))$' - }, - 'zonefile_hash': { - 'type': 'string', - 'pattern': '^([0-9a-fA-F]{20})$' - }, - 'tx_fee': { - 'type': 'integer', - 'minimum': 0, - 'maximum': 500000 - }, - 'owner_key': { - 'anyOf': [ - { - 'anyOf': [ - { - 'pattern': '^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$', - 'type': 'string' - }, - { - 'pattern': '^([0-9a-fA-F]+)$', - 'type': 'string' - } - ] - }, - { - 'properties': { - 'address': { - 'pattern': '^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$', - 'type': 'string' - }, - 'private_keys': { - 'items': { - 'anyOf': [ - { - 'pattern': '^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$', - 'type': 'string' - }, - { - 'pattern': '^([0-9a-fA-F]+)$', - 'type': 'string' - } - ] - }, - 'type': 'array' - }, - 'redeem_script': { - 'pattern': '^([0-9a-fA-F]+)$', - 'type': 'string' - } - }, - 'required': [ - 'owner' - ], - 'type': 'object' - } - ] - }, - 'payment_key': { - 'anyOf': [ - { - 'anyOf': [ - { - 'pattern': '^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$', - 'type': 'string' - }, - { - 'pattern': '^([0-9a-fA-F]+)$', - 'type': 'string' - } - ] - }, - { - 'properties': { - 'address': { - 'pattern': '^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$', - 'type': 'string' - }, - 'private_keys': { - 'items': { - 'anyOf': [ - { - 'pattern': '^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$', - 'type': 'string' - }, - { - 'pattern': '^([0-9a-fA-F]+)$', - 'type': 'string' - } - ] - }, - 'type': 'array' - }, - 'redeem_script': { - 'pattern': '^([0-9a-fA-F]+)$', - 'type': 'string' - } - }, - 'required': [ - 'owner' - ], - 'type': 'object' - } - ] - } - }, - 'additionalProperties': False, + "version": { + "type": "string" } - -+ Response 202 (application/json) - + Body - - {'success': true, 'transaction_hash' : '...'} - + Schema - - { - 'anyOf': [ - { - 'type': 'object', - 'properties': { - 'success': { - 'type': 'boolean' - }, - 'transaction_hash': { - 'type': 'string', - 'pattern': r'^([0-9a-fA-F]+)$', - }, - }, - }, - { - 'type': 'object', - 'properties': { - 'error': { - 'type': 'string', - }, - }, }, - ], + "required": [ + "status", + "version" + ] } +# Group Managing Names + ## Fetch zone file [GET /v1/names/{name}/zonefile] + Fetch a user's raw zone file. This only works for RFC-compliant zone files. This method returns an error for names that have non-standard zone files. ++ Public Endpoint + Parameters + name: bar.test (string) - fully-qualified name + Response 200 (application/json) @@ -1747,6 +76,7 @@ This method returns an error for names that have non-standard zone files. } # Group Name Querying + This family of API endpoints deals with querying name information. ## Get all names [GET /v1/names?page={page}] @@ -1810,12 +140,12 @@ Fetch a list of all names known to the node. + Body { - "address": "1QJQxDas5JhdiXhEbNS14iNjr8auFT96GP", - "blockchain": "bitcoin", - "expire_block": 489247, - "last_txid": "1edfa419f7b83f33e00830bc9409210da6c6d1db60f99eda10c835aa339cad6b", - "status": "registered", - "zonefile": "$ORIGIN muneeb.id\n$TTL 3600\n_http._tcp IN URI 10 1 \"https://blockstack.s3.amazonaws.com/muneeb.id\"\n", + "address": "1QJQxDas5JhdiXhEbNS14iNjr8auFT96GP", + "blockchain": "bitcoin", + "expire_block": 489247, + "last_txid": "1edfa419f7b83f33e00830bc9409210da6c6d1db60f99eda10c835aa339cad6b", + "status": "registered", + "zonefile": "$ORIGIN muneeb.id\n$TTL 3600\n_http._tcp IN URI 10 1 \"https://blockstack.s3.amazonaws.com/muneeb.id\"\n", "zonefile_hash": "b100a68235244b012854a95f9114695679002af9" } @@ -1826,7 +156,7 @@ Fetch a list of all names known to the node. 'properties': { 'address': { 'type': 'string', - 'pattern': r"^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$", + 'pattern': r"^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$", }, 'blockchain': { 'type': 'string', @@ -1864,15 +194,15 @@ Fetch a list of all names known to the node. 'pattern': '^[0-9a-fA-F]{20}$`, }, }, - { 'required': + { 'required': [ 'address', 'blockchain', 'last_txid', 'status', 'zonefile', 'zonefile_hash' ] } } - -## Name history [GET /v1/names/{name}/history?page={page}] + +## Get name history [GET /v1/names/{name}/history?page={page}] Get a history of all blockchain records of a registered name. + Public Endpoint + Subdomain aware @@ -1885,21 +215,21 @@ Get a history of all blockchain records of a registered name. { "373821": [ { - "address": "1QJQxDas5JhdiXhEbNS14iNjr8auFT96GP", - "block_number": 373821, - "consensus_hash": null, - "first_registered": 373821, - "importer": "76a9143e2b5fdd12db7580fb4d3434b31d4fe9124bd9f088ac", - "importer_address": "16firc3qZU97D1pWkyL6ZYwPX5UVnWc82V", - "last_creation_op": ";", - "last_renewed": 373821, - "name": "muneeb.id", - "name_hash128": "deb7fe99776122b77925cbf0a24ab6f8", - "namespace_block_number": 373601, - "namespace_id": "id", - "op": ";", - "op_fee": 100000.0, - "opcode": "NAME_IMPORT", + "address": "1QJQxDas5JhdiXhEbNS14iNjr8auFT96GP", + "block_number": 373821, + "consensus_hash": null, + "first_registered": 373821, + "importer": "76a9143e2b5fdd12db7580fb4d3434b31d4fe9124bd9f088ac", + "importer_address": "16firc3qZU97D1pWkyL6ZYwPX5UVnWc82V", + "last_creation_op": ";", + "last_renewed": 373821, + "name": "muneeb.id", + "name_hash128": "deb7fe99776122b77925cbf0a24ab6f8", + "namespace_block_number": 373601, + "namespace_id": "id", + "op": ";", + "op_fee": 100000.0, + "opcode": "NAME_IMPORT", "preorder_block_number": 373821, } ] @@ -1917,7 +247,7 @@ Get a history of all blockchain records of a registered name. 'properties': { 'address': { 'type': 'string', - 'pattern': r"^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$", + 'pattern': r"^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$", }, 'base': { 'type': 'integer', @@ -1992,7 +322,7 @@ Get a history of all blockchain records of a registered name. 'anyOf': [ { 'type': 'string', - 'pattern': r"^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$", + 'pattern': r"^([123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+)$", }, { 'type': 'null', @@ -2107,7 +437,7 @@ Fetches the historical zonefile specified by the username and zone hash. + Body { - "zonefile": + "zonefile": "$ORIGIN muneeb.id\n$TTL 3600\n_http._tcp IN URI 10 1 \"https://blockstack.s3.amazonaws.com/muneeb.id\"\n" } @@ -2161,6 +491,7 @@ Retrieves a list of names owned by the address provided. } # Group Price Checks + ## Get namespace price [GET /v1/prices/namespaces/{tld}] This endpoint is used to get the price of a namespace. Anyone can create a @@ -2191,10 +522,12 @@ tutorial](https://github.com/blockstack/blockstack-core/blob/master/docs/namespa ## Get name price [GET /v1/prices/names/{name}] -This endpoint is used to get the price of a name. If you are using -a public endpoint, you should *only* rely on the `name_price` field in the -returned JSON blob. Other fields are **DEPRECATED**, since they are relevant -only for estimating the cost of registering a name (which should be done via +This endpoint is used to get the price of a name. If you are using a public +endpoint, you should *only* rely on the `name_price` field in the returned JSON +blob. + +The other fields are relevant only for estimating the cost of registering a +name. You register a name via [blockstack.js](https://github.com/blockstack/blockstack.js) or the [Blockstack Browser](https://github.com/blockstack/blockstack-browser)). @@ -2206,27 +539,27 @@ Browser](https://github.com/blockstack/blockstack-browser)). { "name_price": { - "satoshis": 100000, + "satoshis": 100000, "btc": 0.001 - }, - "total_tx_fees": 519209, + }, + "total_tx_fees": 519209, "register_tx_fee": { - "satoshis": 159110, + "satoshis": 159110, "btc": 0.0015911 - }, + }, "preorder_tx_fee": { - "satoshis": 163703, + "satoshis": 163703, "btc": 0.00163703 - }, + }, "warnings": [ "Insufficient funds; fees are rough estimates." - ], + ], "total_estimated_cost": { - "satoshis": 619209, + "satoshis": 619209, "btc": 0.00619209 - }, + }, "update_tx_fee": { - "satoshis": 196396, + "satoshis": 196396, "btc": 0.00196396 } } @@ -2292,7 +625,9 @@ Browser](https://github.com/blockstack/blockstack-browser)). } # Group Blockchain Operations + ## Get consensus hash [GET /v1/blockchains/{blockchainName}/consensus] + Get the current Blockstack consensus hash on a blockchain. + Public Endpoint + Parameters @@ -2316,8 +651,9 @@ Get the current Blockstack consensus hash on a blockchain. }, } -## Get number of names on blockchain [GET /v1/blockchains/{blockchainName}/name_count{?all}] -Get the number of names on a blockchain. +## Get total names on Blockchain [GET /v1/blockchains/{blockchainName}/name_count{?all}] + +Get a count of the number of names on a blockchain. + Public Endpoint + Parameters + blockchainName: bitcoin (string) - the given blockchain @@ -2396,7 +732,9 @@ Get the number of subdomains on a blockchain. ## Get operations in block [GET /v1/blockchains/{blockchainName}/operations/{blockHeight}] + Get the Blockstack operations in a given block ++ Public Endpoint + Parameters + blockchainName : bitcoin (string) - the given blockchain + blockHeight : 462592 (integer) - the block height @@ -2723,202 +1061,9 @@ Get the Blockstack operations in a given block } ] -## Get pending transactions [GET /v1/blockchains/{blockchainName}/pending] -Get the current transactions that the node has issued and are still pending. -+ DEPRECATED. Blockstack clients should use - [blockstack.js](https://github.com/blockstack/blockstack.js) to query the -blockchain. -+ Public Endpoint -+ Parameters - + blockchainName : bitcoin (string) - the given blockchain -+ Response 200 (application/json) - + Body - - { - "queues": {} - } - - + Schema - - { - 'type': 'object', - 'properties': { - 'preorder': { - 'type': 'array', - 'items': { - 'type': 'object', - 'properties': { - 'name': { 'type': 'string', 'pattern': '^([a-z0-9\-_.+]{3,37})$' }, - 'tx_hash': { 'type': 'string', 'pattern': '^[0-9a-fA-F]+$' }, - 'confirmations': { 'type': 'integer', 'minimum': 0 }, - }, - }, - }, - 'register': { - 'type': 'array', - 'items': { - 'type': 'object', - 'properties': { - 'name': { 'type': 'string', 'pattern': '^([a-z0-9\-_.+]{3,37})$' }, - 'tx_hash': { 'type': 'string', 'pattern': '^[0-9a-fA-F]+$' }, - 'confirmations': { 'type': 'integer', 'minimum': 0 }, - }, - }, - }, - 'update': { - 'type': 'array', - 'items': { - 'type': 'object', - 'properties': { - 'name': { 'type': 'string', 'pattern': '^([a-z0-9\-_.+]{3,37})$' }, - 'tx_hash': { 'type': 'string', 'pattern': '^[0-9a-fA-F]+$' }, - 'confirmations': { 'type': 'integer', 'minimum': 0 }, - }, - }, - }, - 'transfer': { - 'type': 'array', - 'items': { - 'type': 'object', - 'properties': { - 'name': { 'type': 'string', 'pattern': '^([a-z0-9\-_.+]{3,37})$' }, - 'tx_hash': { 'type': 'string', 'pattern': '^[0-9a-fA-F]+$' }, - 'confirmations': { 'type': 'integer', 'minimum': 0 }, - }, - }, - }, - 'renew': { - 'type': 'array', - 'items': { - 'type': 'object', - 'properties': { - 'name': { 'type': 'string', 'pattern': '^([a-z0-9\-_.+]{3,37})$' }, - 'tx_hash': { 'type': 'string', 'pattern': '^[0-9a-fA-F]+$' }, - 'confirmations': { 'type': 'integer', 'minimum': 0 }, - }, - }, - }, - 'revoke': { - 'type': 'array', - 'items': { - 'type': 'object', - 'properties': { - 'name': { 'type': 'string', 'pattern': '^([a-z0-9\-_.+]{3,37})$' }, - 'tx_hash': { 'type': 'string', 'pattern': '^[0-9a-fA-F]+$' }, - 'confirmations': { 'type': 'integer', 'minimum': 0 }, - }, - }, - }, - 'name_import': { - 'type': 'array', - 'items': { - 'type': 'object', - 'properties': { - 'name': { 'type': 'string', 'pattern': '^([a-z0-9\-_.+]{3,37})$' }, - 'tx_hash': { 'type': 'string', 'pattern': '^[0-9a-fA-F]+$' }, - 'confirmations': { 'type': 'integer', 'minimum': 0 }, - }, - }, - }, - } - } - -## Get unspent outputs [GET /v1/blockchains/{blockchainName}/{address}/unspent] -+ DEPRECATED. Blockstack clients should use - [blockstack.js](https://github.com/blockstack/blockstack.js) to query the -blockchain. -+ Authorization: `blockchain` -+ Parameters - + blockchainName : bitcoin (string) - the given blockchain - + address : 1GuKR3nJi2VH3E1ZSPvuX8nAu3jNnr7xzq (string) - the address to get unspents for -+ Response 200 (application/json) - + Body - - [ - { - "confirmations": 18, - "out_script": "76a914ae6ee3760fccb8225541ca89f08c927930adf97b88ac", - "outpoint": { - "hash": "977d3a025790e2cbdb50f63761872f36e78fbb9c53d515cb4c53155a1964932d", - "index": 1 - }, - "transaction_hash": "977d3a025790e2cbdb50f63761872f36e78fbb9c53d515cb4c53155a1964932d", - "value": 76779 - } - ] - - + Schema - - { - 'type': 'array', - 'items': { - 'type': 'object', - 'properties': { - 'confirmations': { 'type': 'integer', 'minimum': 0 }, - 'out_script': { 'type': 'string', 'pattern': '^[0-9a-fA-F]+$' }, - 'outpoint': { - 'type': 'object', - 'properties': { - 'hash': { 'type': 'string', 'pattern': '^[0-9a-fA-F]+$' }, - 'index': { 'type': 'integer', 'minimum': 0 }, - }, - }, - 'transaction_hash': { 'type': 'string', 'pattern': '^[0-9a-fA-F]+$' }, - 'value': { 'type': 'integer', 'minimum': 0 }, - }, - }, - } - -## Broadcast transaction [POST /v1/blockchains/{blockchainName}/txs] -+ DEPRECATED. Blockstack clients should use - [blockstack.js](https://github.com/blockstack/blockstack.js) to broadcast -transactions. -+ Authorization: `blockchain` -+ Parameters - + blockchainName : bitcoin (string) - the blockchain to broadcast on -+ Request (application/json) - + Schema - - { - 'type': 'object', - 'properties': { - 'tx': { - 'type': 'string', - 'pattern': OP_HEX_PATTERN, - }, - }, - 'additionalProperties': False, - 'required': [ - 'tx' - ], - } - -+ Response 200 (application/json) - + Body - - { 'status' : True, 'tx_hash' : '...' } - - + Schema - - { - 'anyOf': [ - { - 'type': 'object', - 'properties': { - 'status': { 'type': 'boolean' }, - 'tx_hash': { 'type': 'string', 'pattern': '^[0-9a-fA-F]+$' }, - }, - }, - { - 'type': 'object', - 'properties': { - 'error': { 'type': 'string' }, - }, - }, - ] - } # Group Namespace Operations + ## Get all namespaces [GET /v1/namespaces] + Public Endpoint + Response 200 (application/json) @@ -2927,10 +1072,11 @@ transactions. { "namespaces": [ ".id" - ] + ] } ## Get namespace names [GET /v1/namespaces/{tld}/names?page={page}] + Fetch a list of names from the namespace. + Public Endpoint + Parameters @@ -2940,15 +1086,17 @@ Fetch a list of names from the namespace. + Response 200 (application/json) + Body - [ "aldenquimby.id", "aldeoryn.id", - "alderete.id", "aldert.id", + [ "aldenquimby.id", "aldeoryn.id", + "alderete.id", "aldert.id", "aldi.id", "aldighieri.id", ... ] # Group Resolver Endpoints + ## Lookup User [GET /v1/users/{username}] -Lookup and resolver a user's profile. Defaults to the `id` namespace. -Note that [blockstack.js](https://github.com/blockstack/blockstack.js) does -*not* rely on this endpoint. + +Lookup and resolver a user's profile. Defaults to the `id` namespace. Note that +[blockstack.js](https://github.com/blockstack/blockstack.js) does *not* rely on +this endpoint. + Public Only Endpoint + Subdomain Aware @@ -2956,106 +1104,20 @@ Note that [blockstack.js](https://github.com/blockstack/blockstack.js) does + Parameters + username: fred (string) - username to lookup + Response 200 (application/json) + + Body - - - { - "fred.id": { - "owner_address": "1CER5u4QXuqffHjHKrU76iMCsqtJLM5VHu", - "profile": { - "@context": "http://schema.org", - "@type": "Person", - "account": [ - { - "@type": "Account", - "identifier": "fredwilson", - "placeholder": false, - "proofType": "http", - "proofUrl": "https://twitter.com/fredwilson/status/943066895422455809", - "service": "twitter" - } - ], - "description": "I am a VC", - "image": [ - { - "@type": "ImageObject", - "contentUrl": "https://gaia.blockstack.org/hub/1CER5u4QXuqffHjHKrU76iMCsqtJLM5VHu/0/avatar-0", - "name": "avatar" - } - ], - "name": "Fred Wilson" - }, - "public_key": "026c94d1897fa148fa6401247a339b55abd869a3d562fdae8a7fcb9a11f1f846f3", - "verifications": [ - { - "identifier": "fredwilson", - "proof_url": "https://twitter.com/fredwilson/status/943066895422455809", - "service": "twitter", - "valid": true - } - ], - "zone_file": { - "$origin": "fred.id", - "$ttl": 3600, - "uri": [ - { - "name": "_http._tcp", - "priority": 10, - "target": "https://gaia.blockstack.org/hub/1CER5u4QXuqffHjHKrU76iMCsqtJLM5VHu/0/profile.json", - "weight": 1 - } - ] - } - } - } - + [ "aldenquimby.id", "aldeoryn.id", + "alderete.id", "aldert.id", + "aldi.id", "aldighieri.id", ... ] ## Profile Search [GET /v1/search?query={query}] Searches for a profile using a search string. + Public Only Endpoint + Parameters - + query: wenger (string) - the search query + + query: wenger (string) - the search query + Response 200 (application/json) + Body - { - "results": [ - { - "fullyQualifiedName": "albertwenger.id", - "username": "albertwenger", - "profile": { - "@type": "Person", - "account": [ - { - "@type": "Account", - "identifier": "albertwenger", - "proofType": "http", - "service": "twitter" - }, - { - "@type": "Account", - "identifier": "albertwenger", - "proofType": "http", - "service": "facebook" - }, - { - "@type": "Account", - "identifier": "albertwenger", - "proofType": "http", - "service": "github" - }, - { - "@type": "Account", - "identifier": "1QHDGGLEKK7FZWsBEL78acV9edGCTarqXt", - "role": "payment", - "service": "bitcoin" - } - ], - "address": { - "@type": "PostalAddress", - "addressLocality": "New York" - }, - "description": "VC at USV.com", - ... - } - + [ "aldenquimby.id", "aldeoryn.id", + "alderete.id", "aldert.id", + "aldi.id", "aldighieri.id", ... ] diff --git a/_site/core/atlas/howitworks.html b/_site/core/atlas/howitworks.html index 49c3fe8f..69d911a0 100644 --- a/_site/core/atlas/howitworks.html +++ b/_site/core/atlas/howitworks.html @@ -17,9 +17,9 @@ - + +{"description":"How Atlas Works","author":{"@type":"Person","name":"Blockstack"},"@type":"BlogPosting","url":"https://zbabystack.netlify.com/core/atlas/howitworks.html","headline":"How Atlas Works","dateModified":"2018-09-12T18:20:57-07:00","datePublished":"2018-09-12T18:20:57-07:00","mainEntityOfPage":{"@type":"WebPage","@id":"https://zbabystack.netlify.com/core/atlas/howitworks.html"},"@context":"http://schema.org"} @@ -42,8 +42,11 @@
                        @@ -99,158 +102,151 @@
                        -
                        +

                        How Atlas Works

                        + -
                        +

                        Atlas was designed to overcome the structural weaknesses inherent to all distributed hash tables. In particular, it uses an unstructured peer network to @@ -482,7 +478,7 @@ which ones are missing which chunks can be found -

                        + - -
                        +{"description":"How to Use the Atlas Network","author":{"@type":"Person","name":"Blockstack"},"@type":"BlogPosting","url":"https://zbabystack.netlify.com/core/atlas/howtouse.html","headline":"How to Use the Atlas Network","dateModified":"2018-09-12T18:20:57-07:00","datePublished":"2018-09-12T18:20:57-07:00","mainEntityOfPage":{"@type":"WebPage","@id":"https://zbabystack.netlify.com/core/atlas/howtouse.html"},"@context":"http://schema.org"} @@ -42,8 +42,11 @@
                          @@ -99,158 +102,151 @@
                          -
                          +

                          How to Use the Atlas Network

                          + -
                          +

                          This section teaches you how to use the Atlas network, it contains the following sections:

                          @@ -416,7 +412,7 @@ failures.

                          -
                          + - -
                          +{"description":"Overview of the Atlas network","author":{"@type":"Person","name":"Blockstack"},"@type":"BlogPosting","url":"https://zbabystack.netlify.com/core/atlas/overview.html","headline":"Overview of the Atlas network","dateModified":"2018-09-12T18:20:57-07:00","datePublished":"2018-09-12T18:20:57-07:00","mainEntityOfPage":{"@type":"WebPage","@id":"https://zbabystack.netlify.com/core/atlas/overview.html"},"@context":"http://schema.org"} @@ -42,8 +42,11 @@
                            @@ -99,158 +102,151 @@
                            -
                            +

                            Overview of the Atlas network

                            + -
                            +

                            This document describes the Atlas network, a peer-to-peer content-addressed storage system whose chunks’ hashes are announced on a public blockchain. Atlas @@ -470,7 +466,7 @@ as part of the protocol.

                            -
                            + - -
                            +{"description":"Developer FAQs","author":{"@type":"Person","name":"Blockstack"},"@type":"BlogPosting","url":"https://zbabystack.netlify.com/core/faq_developer.html","headline":"Developer FAQs","dateModified":"2018-09-12T18:20:57-07:00","datePublished":"2018-09-12T18:20:57-07:00","mainEntityOfPage":{"@type":"WebPage","@id":"https://zbabystack.netlify.com/core/faq_developer.html"},"@context":"http://schema.org"} @@ -42,8 +42,11 @@
                            @@ -158,7 +161,7 @@
                            -
                            -
                            +

                            These FAQs are intended for developers of Blockstack.

                            diff --git a/_site/core/faq_technical.html b/_site/core/faq_technical.html index 1b8ed895..4379224a 100644 --- a/_site/core/faq_technical.html +++ b/_site/core/faq_technical.html @@ -17,9 +17,9 @@ - + +{"description":"Blockstack Technical FAQ","author":{"@type":"Person","name":"Blockstack"},"@type":"BlogPosting","url":"https://zbabystack.netlify.com/core/faq_technical.html","headline":"Blockstack Technical FAQ","dateModified":"2018-09-12T18:20:57-07:00","datePublished":"2018-09-12T18:20:57-07:00","mainEntityOfPage":{"@type":"WebPage","@id":"https://zbabystack.netlify.com/core/faq_technical.html"},"@context":"http://schema.org"} @@ -42,8 +42,11 @@
                              @@ -99,158 +102,151 @@
                              -
                              + +{"description":"Blockstack API","author":{"@type":"Person","name":"Blockstack"},"@type":"BlogPosting","url":"https://zbabystack.netlify.com/core/install-api.html","headline":"Blockstack API","dateModified":"2018-09-12T18:20:57-07:00","datePublished":"2018-09-12T18:20:57-07:00","mainEntityOfPage":{"@type":"WebPage","@id":"https://zbabystack.netlify.com/core/install-api.html"},"@context":"http://schema.org"} @@ -42,8 +42,11 @@
                                @@ -99,158 +102,151 @@
                                -
                                + +{"description":"Installing Memcached","author":{"@type":"Person","name":"Blockstack"},"@type":"BlogPosting","url":"https://zbabystack.netlify.com/core/memcached.html","headline":"Installing Memcached","dateModified":"2018-09-12T18:20:57-07:00","datePublished":"2018-09-12T18:20:57-07:00","mainEntityOfPage":{"@type":"WebPage","@id":"https://zbabystack.netlify.com/core/memcached.html"},"@context":"http://schema.org"} @@ -42,8 +42,11 @@
                                  @@ -99,158 +102,151 @@
                                  -
                                  +

                                  Installing Memcached

                                  + -
                                  +

                                  The Blockstack API optionally uses memcached and pylibmc for scaling read-only calls. If you want to enable this functionality then you should have memcached @@ -329,7 +325,7 @@ $ echo stats | nc localhost 11211 -

                                  + - -
                                  +{"description":"Understand the Architecture","author":{"@type":"Person","name":"Blockstack"},"@type":"BlogPosting","url":"https://zbabystack.netlify.com/core/naming/architecture.html","headline":"Understand the Architecture","dateModified":"2018-09-12T18:20:57-07:00","datePublished":"2018-09-12T18:20:57-07:00","mainEntityOfPage":{"@type":"WebPage","@id":"https://zbabystack.netlify.com/core/naming/architecture.html"},"@context":"http://schema.org"} @@ -42,8 +42,11 @@
                                    @@ -99,158 +102,151 @@
                                    -
                                    +

                                    Understand the Architecture

                                    + -
                                    +

                                    The BNS node is the heart of the system. It is responsible for building up and replicating global name state.

                                    @@ -379,7 +375,7 @@ the reader to client-specific documentation for registering and managing names.< -
                                    + - -
                                    +{"description":"Naming system feature comparison","author":{"@type":"Person","name":"Blockstack"},"@type":"BlogPosting","url":"https://zbabystack.netlify.com/core/naming/comparison.html","headline":"Naming system feature comparison","dateModified":"2018-09-12T18:20:57-07:00","datePublished":"2018-09-12T18:20:57-07:00","mainEntityOfPage":{"@type":"WebPage","@id":"https://zbabystack.netlify.com/core/naming/comparison.html"},"@context":"http://schema.org"} @@ -42,8 +42,11 @@
                                      @@ -99,158 +102,151 @@
                                      -
                                      +

                                      Naming system feature comparison

                                      + -
                                      +

                                      BNS is not the only naming system in wide-spread use, nor is it the only decentralized naming system that implements human-readable, globally-unique, and @@ -516,7 +512,7 @@ slightly more valuable.

                                      -
                                      + - -
                                      +{"description":"Creating a Namespace","author":{"@type":"Person","name":"Blockstack"},"@type":"BlogPosting","url":"https://zbabystack.netlify.com/core/naming/creationhowto.html","headline":"Creating a Namespace","dateModified":"2018-09-12T18:20:57-07:00","datePublished":"2018-09-12T18:20:57-07:00","mainEntityOfPage":{"@type":"WebPage","@id":"https://zbabystack.netlify.com/core/naming/creationhowto.html"},"@context":"http://schema.org"} @@ -42,8 +42,11 @@
                                        @@ -99,158 +102,151 @@
                                        -
                                        +

                                        Creating a Namespace

                                        + -
                                        +

                                        There are four steps to creating a namespace:

                                        @@ -329,9 +325,9 @@ create the same namespace, the one that successfully confirms both the do this, then the namespace they created disappears (along with all the names they imported).

                                        -

                                        Developers wanting to create their own namespaces should read the namespace +

                                        Developers wanting to create their own namespaces should read the namespace creation document. It is highly recommended that -developers follow this tutorial closely, given the large amount of +developers individula support to create your own namespace, given the large amount of cryptocurrency at stake.

                                        +{"description":"Decentralized Identifiers (DIDs)","author":{"@type":"Person","name":"Blockstack"},"@type":"BlogPosting","url":"https://zbabystack.netlify.com/core/naming/did.html","headline":"Decentralized Identifiers (DIDs)","dateModified":"2018-09-12T18:20:57-07:00","datePublished":"2018-09-12T18:20:57-07:00","mainEntityOfPage":{"@type":"WebPage","@id":"https://zbabystack.netlify.com/core/naming/did.html"},"@context":"http://schema.org"} @@ -42,8 +42,11 @@
                                          @@ -99,158 +102,151 @@
                                          -
                                          + +{"description":"BNS Forks","author":{"@type":"Person","name":"Blockstack"},"@type":"BlogPosting","url":"https://zbabystack.netlify.com/core/naming/forks.html","headline":"BNS Forks","dateModified":"2018-09-12T18:20:57-07:00","datePublished":"2018-09-12T18:20:57-07:00","mainEntityOfPage":{"@type":"WebPage","@id":"https://zbabystack.netlify.com/core/naming/forks.html"},"@context":"http://schema.org"} @@ -42,8 +42,11 @@
                                            @@ -99,158 +102,151 @@
                                            -
                                            +

                                            BNS Forks

                                            + -
                                            +

                                            BNS effectively uses a public blockchain to store a database log. A BNS peer bootstraps itself by downloading and replaying the database log from the @@ -421,7 +417,7 @@ to the fork-set with the highest cumulative burn.

                                            -
                                            + - -
                                            +{"description":"Blockstack Naming Service (BNS)","author":{"@type":"Person","name":"Blockstack"},"@type":"BlogPosting","url":"https://zbabystack.netlify.com/core/naming/introduction.html","headline":"Blockstack Naming Service (BNS)","dateModified":"2018-09-12T18:20:57-07:00","datePublished":"2018-09-12T18:20:57-07:00","mainEntityOfPage":{"@type":"WebPage","@id":"https://zbabystack.netlify.com/core/naming/introduction.html"},"@context":"http://schema.org"} @@ -42,8 +42,11 @@
                                              @@ -99,158 +102,151 @@
                                              -
                                              +

                                              Blockstack Naming Service (BNS)

                                              + -
                                              +

                                              This document gives an overview of how the Blockstack Naming Service work. This section introduces you to BNS and explains the following concepts:

                                              @@ -503,7 +499,7 @@ between these name objects is presented below:

                                              -
                                              + - -
                                              +{"description":"Manage BNS Names","author":{"@type":"Person","name":"Blockstack"},"@type":"BlogPosting","url":"https://zbabystack.netlify.com/core/naming/manage.html","headline":"Manage BNS Names","dateModified":"2018-09-12T18:20:57-07:00","datePublished":"2018-09-12T18:20:57-07:00","mainEntityOfPage":{"@type":"WebPage","@id":"https://zbabystack.netlify.com/core/naming/manage.html"},"@context":"http://schema.org"} @@ -42,8 +42,11 @@
                                                @@ -99,158 +102,151 @@
                                                -
                                                +

                                                Manage BNS Names

                                                + -
                                                +

                                                This section teaches you how to manage your namespace, it contains the following sections:

                                                @@ -411,7 +407,7 @@ document for details on how to construct this transaction.

                                                -
                                                + - -
                                                +{"description":"Understand Namespaces","author":{"@type":"Person","name":"Blockstack"},"@type":"BlogPosting","url":"https://zbabystack.netlify.com/core/naming/namespaces.html","headline":"Understand Namespaces","dateModified":"2018-09-12T18:20:57-07:00","datePublished":"2018-09-12T18:20:57-07:00","mainEntityOfPage":{"@type":"WebPage","@id":"https://zbabystack.netlify.com/core/naming/namespaces.html"},"@context":"http://schema.org"} @@ -42,8 +42,11 @@
                                                  @@ -99,158 +102,151 @@
                                                  -
                                                  +

                                                  Understand Namespaces

                                                  + -
                                                  +

                                                  Namespaces are the top-level naming objects in BNS.

                                                  @@ -425,7 +421,7 @@ between these name objects is presented below:

                                                  -
                                                  + - -
                                                  - - - - - - - - - - - - - - -
                                                  -
                                                  - -
                                                  -
                                                  - - - - -
                                                  -
                                                  -
                                                  - - - -
                                                  - -
                                                  - -

                                                  How to link your OpenBazaar GUID to your Blockstack ID

                                                  - - - - - -
                                                  - - - -

                                                  If you don’t have the Blockstack CLI. Download and install it first. Instructions are here. The rest of this tutorial assumes that you’ve already registered a name using the Blockstack CLI.

                                                  - -

                                                  Step 1: Advanced Mode

                                                  - -

                                                  The first step is to activate “advanced mode” in the CLI. The command to do so is:

                                                  - -
                                                      $ blockstack set_advanced_mode on
                                                  -
                                                  -
                                                  - -

                                                  Step 2: Add an OpenBazaar Account

                                                  - -

                                                  The second step is to create an OpenBazaar account for your profile (the Onename app also enabled to link your OpenBazaar GUID). The command to do so is:

                                                  - -
                                                      $ blockstack put_account "<BLOCKSTACK ID>" "openbazaar" "<YOUR OB GUID>" "<URL TO YOUR STORE>"
                                                  -
                                                  -
                                                  - -

                                                  The URL can be any valid URL; it won’t be used by OpenBazaar. Here’s an example, using the name testregistration001.id and the GUID 0123456789abcdef:

                                                  - -
                                                      $ blockstack put_account "testregistration001.id" "openbazaar" "0123456789abcdef" "https://bazaarbay.org/@testregistration001"
                                                  -
                                                  -
                                                  - -

                                                  The update should be instantaneous. You can verify that your store is present with list_accounts:

                                                  - -
                                                      $ blockstack list_accounts "testregistration001.id"
                                                  -    {
                                                  -        "accounts": [
                                                  -            {
                                                  -                "contentUrl": "https://bazaarbay.org/@testregistration001.id",
                                                  -                "identifier": "0123456789abcdef",
                                                  -                "service": "openbazaar"
                                                  -            }
                                                  -        ]
                                                  -    }
                                                  -
                                                  -
                                                  - -

                                                  Troubleshooting

                                                  - -

                                                  Common problems you might encounter.

                                                  - -

                                                  Profile is in legacy format

                                                  - -

                                                  If you registered your blockstack ID before spring 2016, there’s a chance that your profile is still in a legacy format. It will get migrated to the new format automatically if you update your profile on the Onename app. However, you have to do this manually with the CLI.

                                                  - -

                                                  To do so, the command is:

                                                  -
                                                      $ blockstack migrate <YOUR BLOCKSTACK ID>
                                                  -
                                                  -
                                                  - -

                                                  It will take a little over an hour to complete, but once finished, you’ll be able to manage your accounts with the above commands (and do so with no delays).

                                                  - -

                                                  Failed to broadcast update transaction

                                                  - -

                                                  This can happen during a migrate for one of a few reasons:

                                                  -
                                                    -
                                                  • You do not have enough balance to pay the transaction fee (which is calculated dynamically).
                                                  • -
                                                  • Your payment address has unconfirmed transactions.
                                                  • -
                                                  • You can’t connect to a Bitcoin node.
                                                  • -
                                                  - -

                                                  To determine what’s going on, you should try the command again by typing BLOCKSTACK_DEBUG=1 blockstack ... instead of blockstack....

                                                  - - - -
                                                  - -
                                                  - - - - - - -
                                                  -

                                                  Related Articles

                                                  - - - - - -
                                                    - -
                                                  -
                                                  - - - -
                                                  - - - -
                                                  - -
                                                  -
                                                  - - -
                                                  -
                                                  - - - - - - - -
                                                  -
                                                  - - - -
                                                  -
                                                  - - - - -
                                                  -
                                                  - - - - - - - - - - - diff --git a/_site/core/naming/pickname.html b/_site/core/naming/pickname.html index 40d25549..fbdb9dfb 100644 --- a/_site/core/naming/pickname.html +++ b/_site/core/naming/pickname.html @@ -17,9 +17,9 @@ - + +{"description":"Choose a name","author":{"@type":"Person","name":"Blockstack"},"@type":"BlogPosting","url":"https://zbabystack.netlify.com/core/naming/pickname.html","headline":"Choose a name","dateModified":"2018-09-12T18:20:57-07:00","datePublished":"2018-09-12T18:20:57-07:00","mainEntityOfPage":{"@type":"WebPage","@id":"https://zbabystack.netlify.com/core/naming/pickname.html"},"@context":"http://schema.org"} @@ -42,8 +42,11 @@
                                                    @@ -99,158 +102,151 @@
                                                    -
                                                    +

                                                    Choose a name

                                                    + -
                                                    +

                                                    This section explains how to choose and create a namespace, it contains the following sections:

                                                    @@ -366,7 +362,7 @@ the BNS API.

                                                    -

                                                    If you want to register a namespace, please see the namespace creation tutorial.

                                                    +

                                                    If you want to register a namespace, please see the namespace creation section.

                                                    Getting the Current Consensus Hash (reference)

                                                    @@ -438,9 +434,8 @@ create the same namespace, the one that successfully confirms both the do this, then the namespace they created disappears (along with all the names they imported).

                                                    -

                                                    Developers wanting to create their own namespaces should read the namespace -creation document. It is highly recommended that -developers follow this tutorial closely, given the large amount of +

                                                    Developers wanting to create their own namespaces should read the namespace creation section document. It is highly recommended that +developers request individual support before creating their own space, given the large amount of cryptocurrency at stake.

                                                    +{"description":"Register a name","author":{"@type":"Person","name":"Blockstack"},"@type":"BlogPosting","url":"https://zbabystack.netlify.com/core/naming/register.html","headline":"Register a name","dateModified":"2018-09-12T18:20:57-07:00","datePublished":"2018-09-12T18:20:57-07:00","mainEntityOfPage":{"@type":"WebPage","@id":"https://zbabystack.netlify.com/core/naming/register.html"},"@context":"http://schema.org"} @@ -42,8 +42,11 @@
                                                      @@ -99,158 +102,151 @@
                                                      -
                                                      +

                                                      Register a name

                                                      + -
                                                      +

                                                      This section explains registering BNS names and provides instructions for methods you can use to understandt the cost of namespace registration.

                                                      @@ -407,7 +403,7 @@ dynamically and automatically, and broadcast both the + - -
                                                      +{"description":"Resolve a name","author":{"@type":"Person","name":"Blockstack"},"@type":"BlogPosting","url":"https://zbabystack.netlify.com/core/naming/resolving.html","headline":"Resolve a name","dateModified":"2018-09-12T18:20:57-07:00","datePublished":"2018-09-12T18:20:57-07:00","mainEntityOfPage":{"@type":"WebPage","@id":"https://zbabystack.netlify.com/core/naming/resolving.html"},"@context":"http://schema.org"} @@ -42,8 +42,11 @@
                                                        @@ -99,158 +102,151 @@
                                                        -
                                                        +

                                                        Resolve a name

                                                        + -
                                                        +

                                                        This section explains resolving BNS names and provides instructions for methods you can use to accomplish namespace resolution.

                                                        @@ -577,7 +573,7 @@ under its previous owner, if the name expired and was reregistered.

                                                        -
                                                        + - -
                                                        +{"description":"How to build a Profile Search Index","author":{"@type":"Person","name":"Blockstack"},"@type":"BlogPosting","url":"https://zbabystack.netlify.com/core/naming/search.html","headline":"How to build a Profile Search Index","dateModified":"2018-09-12T18:20:57-07:00","datePublished":"2018-09-12T18:20:57-07:00","mainEntityOfPage":{"@type":"WebPage","@id":"https://zbabystack.netlify.com/core/naming/search.html"},"@context":"http://schema.org"} @@ -42,8 +42,11 @@
                                                          @@ -99,158 +102,151 @@
                                                          -
                                                          +

                                                          How to build a Profile Search Index

                                                          + -
                                                          +

                                                          The search subsystem for Blockstack Core creates an index for data associated with registered names in namespaces and makes that data searchable.

                                                          @@ -488,7 +484,7 @@ bin/elasticsearch -d (on linux) -
                                                          + - -
                                                          +{"description":"BNS Subdomains","author":{"@type":"Person","name":"Blockstack"},"@type":"BlogPosting","url":"https://zbabystack.netlify.com/core/naming/subdomains.html","headline":"BNS Subdomains","dateModified":"2018-09-12T18:20:57-07:00","datePublished":"2018-09-12T18:20:57-07:00","mainEntityOfPage":{"@type":"WebPage","@id":"https://zbabystack.netlify.com/core/naming/subdomains.html"},"@context":"http://schema.org"} @@ -42,8 +42,11 @@
                                                            @@ -99,158 +102,151 @@
                                                            -
                                                            +

                                                            BNS Subdomains

                                                            + -
                                                            +

                                                            This section explains BNS subdomains and provides instructions for methods you can use to work with them. The following topics are included:

                                                            @@ -547,7 +543,7 @@ details on how to use it.

                                                            -
                                                            + - -
                                                            - - - - - - - - - - - - - - -
                                                            -
                                                            - -
                                                            -
                                                            - - - - -
                                                            -
                                                            -
                                                            - - - -
                                                            - -
                                                            - -

                                                            Create and Launch a Namespace

                                                            - - - - - -
                                                            - -

                                                            This tutorial teaches you how to create your namespace, it contains the -following sections:

                                                            - - - -

                                                            Creating namespaces is expensive. -Be sure to test your namespace in our integration test -framework -first! It will let you simulate any valid namespace configuration -you want at no risk to you.

                                                            - -
                                                            -

                                                            WARNING: If you intend to create a namespace, you must read this document -in its entirety. You should also install the test framework and experiment -with your namespace’s parameters. FAILURE TO DO SO MAY RESULT IN IRRECOVERABLE -LOSS OF FUNDS.

                                                            -
                                                            - -

                                                            Before you begin

                                                            - -

                                                            Some basic familiarity with how Bitcoin works is required to -understand this tutorial. This includes:

                                                            - -
                                                              -
                                                            • knowing the difference between mainnet, testnet, and regtest
                                                            • -
                                                            • knowing about compressed and uncompressed ECDSA public keys
                                                            • -
                                                            • knowing about base58-check encoding
                                                            • -
                                                            • knowing how Bitcoin transactions are structured
                                                            • -
                                                            • knowing how UTXOs work
                                                            • -
                                                            - -

                                                            Creating a namespace is a three-step process. The first step is to preorder -the namespace, which broadcasts a salted hash of the namespace ID. The second -step is to reveal the namespace, which exposes the namespace ID and price -function to the blockchain. The final step is to ready the namespace, which -allows anyone to register names within it.

                                                            - -

                                                            In between the reveal and ready steps, the namespace creator will have a -“lock” on the namespace that lasts for about 1 year. During this time period, -the namespace creator can import names. The import transaction lets the -namespace creator assign the name a zone file and an owner in one step.

                                                            - -

                                                            Before Trying This in Production…

                                                            - -

                                                            Setting up the Test Environment

                                                            - -

                                                            In this example, we will use the test framework to create a private Bitcoin -blockchain on your computer, and then create a Blockstack namespace on it. -This will let you experiment with different namespace parameters -without spending actual BTC. The test framework uses bitcoind -regtest, -so all of the commands you’ll run here will work identically on -mainnet.

                                                            - -

                                                            To install the test framework, please follow these -instructions. -Once you have the test framework installed, you should run the namespace_check test in --interactive-web mode. -This will create an empty .test namespace and leave the test scenario running -once it finishes. You will be able to fund addresses and create new blocks via -your Web browser or via curl, as will be explained below. Also, you’ll be able to use the -blockstack utility to interact with your private blockchain and namespaces.

                                                            - -

                                                            The test setup command is as follows. This will launch the namespace_check -test scenario, and open a web server on port 3001.

                                                            -
                                                                $ blockstack-test-scenario --interactive-web 3001 blockstack_integration_tests.scenarios.namespace_check
                                                            -
                                                            -
                                                            - -

                                                            When the test is ready for us to experiment, you should see the following:

                                                            - -
                                                                An empty namespace called 'test' has been created
                                                            -    Feel free to experiment with other namespaces
                                                            -
                                                            -    Available keys with a balance:
                                                            -    *  6e50431b955fe73f079469b24f06480aee44e4519282686433195b3c4b5336ef01
                                                            -    *  c244642ce0b4eb68da8e098facfcad889e3063c36a68b7951fb4c085de49df1b01
                                                            -    *  f4c3907cb5769c28ff603c145db7fc39d7d26f69f726f8a7f995a40d3897bb5201
                                                            -    *  8f87d1ea26d03259371675ea3bd31231b67c5df0012c205c154764a124f5b8fe01
                                                            -    *  bb68eda988e768132bc6c7ca73a87fb9b0918e9a38d3618b74099be25f7cab7d01
                                                            -    *  2,3,6f432642c087c2d12749284d841b02421259c4e8178f25b91542c026ae6ced6d01,65268e6267b14eb52dc1ccc500dc2624a6e37d0a98280f3275413eacb1d2915d01,cdabc10f1ff3410082448b708c0f860a948197d55fb612cb328d7a5cc07a6c8a01
                                                            -    *  2,3,4c3ab2a0704dfd9fdc319cff2c3629b72ebda1580316c7fddf9fad1baa323e9601,75c9f091aa4f0b1544a59e0fce274fb1ac29d7f7e1cd020b66f941e5d260617b01,d62af1329e541871b244c4a3c69459e8666c40b683ffdcb504aa4adc6a559a7701
                                                            -    *  2,3,4b396393ca030b21bc44a5eba1bb557d04be1bfe974cbebc7a2c82b4bdfba14101,d81d4ef8123852403123d416b0b4fb25bcf9fa80e12aadbc08ffde8c8084a88001,d0482fbe39abd9d9d5c7b21bb5baadb4d50188b684218429f3171da9de206bb201
                                                            -    *  2,3,836dc3ac46fbe2bcd379d36b977969e5b6ef4127e111f2d3e2e7fb6f0ff1612e01,1528cb864588a6a5d77eda548fe81efc44180982e180ecf4c812c6be9788c76a01,9955cfdac199b8451ccd63ec5377a93df852dc97ea01afc47db7f870a402ff0501
                                                            -
                                                            -
                                                            - -

                                                            You can determine that the test framework is live by going to -http://localhost:3001 in your Web browser. From there, you can generate -blocks in the test framework’s bitcoind node and you can fund any address in -the test framework.

                                                            - -

                                                            Finally, you can use the blockstack-test-env command to set up your shell -environment variables so blockstack will interact with this test (instead of -mainnet). To do so, run the following in your shell:

                                                            - -
                                                                $ . $(which blockstack-test-env) namespace_check
                                                            -    |blockstack-test namespace_check| $
                                                            -
                                                            -
                                                            - -

                                                            You can verify that the environment variables by verifying that your $PS1 -variable includes the name of your test (as shown above), and that some other -BLOCKSTACK_-prefixed variables are set:

                                                            - -
                                                                |blockstack-test namespace_check| $ env | grep BLOCKSTACK
                                                            -    BLOCKSTACK_OLD_PS1=\u@\h:\w$
                                                            -    BLOCKSTACK_TESTNET=1
                                                            -    BLOCKSTACK_EPOCH_1_END_BLOCK=1
                                                            -    BLOCKSTACK_EPOCH_2_END_BLOCK=2
                                                            -    BLOCKSTACK_TEST=1
                                                            -    BLOCKSTACK_DEBUG=1
                                                            -    BLOCKSTACK_CLIENT_CONFIG=/tmp/blockstack-run-scenario.blockstack_integration_tests.scenarios.namespace_check/client/client.ini
                                                            -
                                                            -
                                                            - -

                                                            Registering a Namespace

                                                            - -

                                                            Suppose we’re going to create the hello namespace. The key -6e50431b955fe73f079469b24f06480aee44e4519282686433195b3c4b5336ef01 will be the key that -pays for the namespace. The key -c244642ce0b4eb68da8e098facfcad889e3063c36a68b7951fb4c085de49df1b01 will be the key that -creates the namespace. The creator key will be used to import names and -declare the namespace ready. The payment key will be used to both pay for the -namespace and receive name registration and renewal fees for the first year of -the namespace’s lifetime.

                                                            - -

                                                            In this example, we will set these keys as environment variables:

                                                            - -
                                                                |blockstack-test namespace_check| $ export PAYMENT_PKEY="6e50431b955fe73f079469b24f06480aee44e4519282686433195b3c4b5336ef01"
                                                            -    |blockstack-test namespace_check| $ export CREATOR_PKEY="c244642ce0b4eb68da8e098facfcad889e3063c36a68b7951fb4c085de49df1b01"
                                                            -
                                                            -
                                                            - -

                                                            Multisig Namespace Payment

                                                            - -

                                                            If you want to use a multisig address to pay for your namespace (and collect -name registration fees), then instead of using -6e50431b955fe73f079469b24f06480aee44e4519282686433195b3c4b5336ef01, you should -use a string formatted as m,n,pk1,pk2,...,pk_n. m is the number of -signatures required, n is the number of private keys, and pk1,pk2,...,pk_n -are the private keys.

                                                            - -

                                                            For example, you can use the following as your PAYMENT_PKEY to have a 2-of-3 -multisig script pay for your namespace and collect name registration fees:

                                                            - -
                                                                |blockstack-test namespace_check| $ export PAYMENT_PKEY="2,3,6f432642c087c2d12749284d841b02421259c4e8178f25b91542c026ae6ced6d01,65268e6267b14eb52dc1ccc500dc2624a6e37d0a98280f3275413eacb1d2915d01,cdabc10f1ff3410082448b708c0f860a948197d55fb612cb328d7a5cc07a6c8a01"
                                                            -
                                                            -
                                                            - -

                                                            Namespace preorder

                                                            - -

                                                            The command to preorder the namespace would be:

                                                            - -
                                                                |blockstack-test namespace_check| $ blockstack namespace_preorder hello "$PAYMENT_PKEY" "$CREATOR_PKEY"
                                                            -
                                                            -
                                                            - -

                                                            You will be given a set of instructions on how to proceed to reveal and -launch the namespace. READ THEM CAREFULLY. You will be prompted to -explicitly acknowledge that you understand the main points of the instructions, -and that you understand the risks.

                                                            - -

                                                            The command outputs some necessary information at the very end of its execution. -In particular, you will need to remember the transaction ID of the namespace -preorder. The command will help you do so.

                                                            - -

                                                            Here is a sample output:

                                                            - -
                                                                |blockstack-test namespace_check| $ blockstack namespace_preorder hello "$PAYMENT_PKEY" "$CREATOR_PKEY"
                                                            -
                                                            -    <...snip...>
                                                            -
                                                            -    Remember this transaction ID: b40dd1375ef63e5a40ee60d790ec6dccd06efcbac99d0cd5f3b07502a4ab05ac
                                                            -    You will need it for `blockstack namespace_reveal`
                                                            -
                                                            -    Wait until b40dd1375ef63e5a40ee60d790ec6dccd06efcbac99d0cd5f3b07502a4ab05ac has six (6) confirmations.  Then, you can reveal `hello` with:
                                                            -
                                                            -        $ blockstack namespace_reveal "hello" "6e50431b955fe73f079469b24f06480aee44e4519282686433195b3c4b5336ef01" "c244642ce0b4eb68da8e098facfcad889e3063c36a68b7951fb4c085de49df1b01" "b40dd1375ef63e5a40ee60d790ec6dccd06efcbac99d0cd5f3b07502a4ab05ac"
                                                            -
                                                            -    {
                                                            -        "status": true,
                                                            -        "success": true,
                                                            -        "transaction_hash": "b40dd1375ef63e5a40ee60d790ec6dccd06efcbac99d0cd5f3b07502a4ab05ac"
                                                            -    }
                                                            -
                                                            -
                                                            - -

                                                            If all goes well, you will get back a transaction hash (in this case, b40dd1375ef63e5a40ee60d790ec6dccd06efcbac99d0cd5f3b07502a4ab05ac). -To get Blockstack to process it, you will need to mine some blocks in the test framework (by default, -Blockstack will only accept a transaction that has 6 confirmations). To do -this, simply go to http://localhost:3001 and generate at least 6 blocks. If you -observe the test log, you will see the Blockstack node process and accept it.

                                                            - -

                                                            Note that when you do this live, you should wait for -at least 10 confirmations before sending the reveal transaction, just to be -safe.

                                                            - -

                                                            Namespace reveal

                                                            - -

                                                            The command to reveal a preordered namespace is more complicated, since it -describes the price curve.

                                                            - -

                                                            This command is interactive. The command to invoke it is as follows:

                                                            - -
                                                                |blockstack-test namespace_check| $ blockstack namespace_reveal hello "$PAYMENT_PKEY" "$CREATOR_PKEY" "b40dd1375ef63e5a40ee60d790ec6dccd06efcbac99d0cd5f3b07502a4ab05ac"
                                                            -
                                                            -
                                                            - -

                                                            When running the command, you will see the namespace creation wizard prompt you -with the price curve and the current values:

                                                            - -
                                                            Name lifetimes (blocks): infinite
                                                            -Price coefficient:       4
                                                            -Price base:              4
                                                            -Price bucket exponents:  [15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
                                                            -Non-alpha discount:      2
                                                            -No-vowel discount:       5
                                                            -Burn or receive fees?    Receive to mr6nrMvvh44sR5MiX929mMXP5hqgaTr6fx
                                                            -
                                                            -Name price formula:
                                                            -(UNIT_COST = 10.0 satoshi):
                                                            -                                     buckets[min(len(name)-1, 15)]
                                                            -             UNIT_COST * coeff * base
                                                            -cost(name) = -----------------------------------------------------
                                                            -                   max(nonalpha_discount, no_vowel_discount)
                                                            -
                                                            -
                                                            -Name price table:
                                                            -| length | price       | price, nonalpha | price, no vowel | price, both |
                                                            ---------------------------------------------------------------------------
                                                            -|      1 | 42949672960 |      8589934592 |      8589934592 |  8589934592 |
                                                            -|      2 | 10737418240 |      5368709120 |      2147483648 |  2147483648 |
                                                            -|      3 |  2684354560 |      1342177280 |       536870912 |   536870912 |
                                                            -|      4 |   671088640 |       335544320 |       134217728 |   134217728 |
                                                            -|      5 |   167772160 |        83886080 |        33554432 |    33554432 |
                                                            -|      6 |    41943040 |        20971520 |         8388608 |     8388608 |
                                                            -|      7 |    10485760 |         5242880 |         2097152 |     2097152 |
                                                            -|      8 |     2621440 |         1310720 |          524288 |      524288 |
                                                            -|      9 |      655360 |          327680 |          131072 |      131072 |
                                                            -|     10 |      163840 |           81920 |           32768 |       32768 |
                                                            -|     11 |       40960 |           20480 |            8192 |        8192 |
                                                            -|     12 |       10240 |            5120 |            2048 |        2048 |
                                                            -|     13 |        2560 |            1280 |             512 |         512 |
                                                            -|     14 |         640 |             320 |             128 |         128 |
                                                            -|     15 |         160 |              80 |              32 |          32 |
                                                            -|    16+ |          40 |              20 |              10 |          10 |
                                                            -
                                                            -
                                                            -What would you like to do?
                                                            -(0) Set name lifetime in blocks             (positive integer between 1 and 4294967295, or "infinite")
                                                            -(1) Set price coefficient                   (positive integer between 1 and 255)
                                                            -(2) Set base price                          (positive integer between 1 and 255)
                                                            -(3) Set price bucket exponents              (16 comma-separated integers, each between 1 and 15)
                                                            -(4) Set non-alphanumeric character discount (positive integer between 1 and 15)
                                                            -(5) Set no-vowel discount                   (positive integer between 1 and 15)
                                                            -(6) Toggle collecting name fees             (True: receive fees; False: burn fees)
                                                            -(7) Show name price formula
                                                            -(8) Show price table
                                                            -(9) Done
                                                            -
                                                            -(1-9)
                                                            -
                                                            -
                                                            - -

                                                            All prices are in the “fundamental unit” of the underlying blockchain (i.e. -satoshis).

                                                            - -

                                                            As the formula describes, the name’s price is a function of:

                                                            - -
                                                              -
                                                            • a fixed unit cost (UNIT_COST)
                                                            • -
                                                            • a multiplicative constant coefficient (coeff)
                                                            • -
                                                            • a fixed exponential base (base)
                                                            • -
                                                            • a 16-element list of price buckets, indexed by the length of the name (buckets)
                                                            • -
                                                            • a discount for having non-alphnumeric letters (nonalpha_discount)
                                                            • -
                                                            • a discount for having no vowels in the name (no_vowel_discount)
                                                            • -
                                                            - -

                                                            You can use options 1 through 8 to play with the pricing function and examine -the name costs in the price table. Enter 9 to send the transaction itself.

                                                            - -

                                                            Once you’re happy, you can issue the namespace-reveal transaction. As with the -namespace-preorder transaction, you will get back a transaction hash, and your transaction will be -unconfirmed. Simply go to http://localhost:3001 to generate some more blocks -to confirm your namespace-reveal.

                                                            - -

                                                            Once you have confirmed your namespace-reveal transaction, you can -begin to populate your namespace with some initial names.

                                                            - -

                                                            Collecting Name Fees

                                                            - -

                                                            Blockstack 0.17 introduced the ability to create a namespace such that for the -first year of its existence (54595 blocks), all name registration and renewal -fees will be sent to the address of the payment key. In this example, -this is the address mr6nrMvvh44sR5MiX929mMXP5hqgaTr6fx.

                                                            - -

                                                            The alternative is to -have all namespace fees sent to an unspendable burn address -(1111111111111111111114oLvT2). This is the case for the .id namespace, -for example.

                                                            - -

                                                            After the year has passed, all future name registrations and renewal fees -will be sent to the unspendable burn address. This is to disincentivize -namespace squatters.

                                                            - -

                                                            Warnings

                                                            - -
                                                              -
                                                            • You must issue this command within 144 blocks of the namespace-preorder transaction. Otherwise, the preorder will expire and you will need to start over from scratch.
                                                            • -
                                                            - -

                                                            Importing names

                                                            - -

                                                            After sending the reveal transaction, you can populate your namespace with -some initial names. You can do so with the name_import command.

                                                            - -

                                                            Suppose we want to import the name example.hello and assign it to an owner -whose public key address is ms6Y32bcL5zhA57e8tf7awgVZuPxV8Xg8N. Suppose also -that you wanted to give example.hello an initial zone file stored at -/var/blockstack/zone_files/example.hello. To do so, you would issue the -following command:

                                                            - -
                                                                |blockstack-test namespace_check| $ blockstack name_import example.hello ms6Y32bcL5zhA57e8tf7awgVZuPxV8Xg8N /var/blockstack/zone_files/example.hello "$CREATOR_PKEY"
                                                            -
                                                            -
                                                            - -

                                                            By default, you must use the private key you used to reveal the namespace -to import names (this is $CREATOR_PKEY in this example).

                                                            - -

                                                            As with namespace-preorder and namespace-reveal, the transaction this command -generates will be unconfirmed. Simply go to http://localhost:3001 to generate -some blocks to confirm it.

                                                            - -

                                                            You can check the progress of the transaction with blockstack info, as follows:

                                                            - -
                                                                |blockstack-test namespace_check| $ blockstack info
                                                            -    {
                                                            -        "cli_version": "0.17.0.8",
                                                            -        "consensus_hash": "b10fdd38a20a7e46555ce3a7f68cf95c",
                                                            -        "last_block_processed": 694,
                                                            -        "last_block_seen": 694,
                                                            -        "queues": {
                                                            -            "name_import": [
                                                            -                {
                                                            -                    "confirmations": 1,
                                                            -                    "name": "example.hello",
                                                            -                    "tx_hash": "10f7dcd9d6963ef5d20d010f731d5d2ddb76163a083b9d7a2b9fd4515c7fe58c"
                                                            -                }
                                                            -            ]
                                                            -        },
                                                            -        "server_alive": true,
                                                            -        "server_host": "localhost",
                                                            -        "server_port": 16264,
                                                            -        "server_version": "0.17.0.8"
                                                            -    }
                                                            -
                                                            -
                                                            - -

                                                            The confirmation field indicates how deep in the blockchain the transaction is -at the time. Generating more blocks will increase its number of confirmations.

                                                            - -

                                                            When you do this live, -YOU SHOULD LEAVE YOUR COMPUTER RUNNING UNTIL THE name_import QUEUE IS EMPTY. -Blockstack’s background API daemon will monitor the transactions and upload the -name’s zone file to the Blockstack Atlas network once it is confirmed. -But to do so, your computer must remain online. If you do not do this, then -the name will not have a zone file and will be unusable in the higher layers of -Blockstack-powered software (including Blockstack applications). However, -if your computer does go offline or reboots, you can recover by -restarting the Blockstack API daemon (with -blockstack api start). The daemon itself will pick up where it left off, and -replicate all zone files that have confirmed transactions.

                                                            - -

                                                            After the zone file is uploaded, the name will be public and resolvable. You can re-import the -same name over and over, and give it a different address and/or zone file. Like -all other names, the Blockstack Atlas network will accept and propagate zone -files for imported names.

                                                            - -

                                                            The owner of the address ms6Y32bcL5zhA57e8tf7awgVZuPxV8Xg8N will not be -able to issue any transactions for the name example.hello until the namespace -creator has sent the ready transaction.

                                                            - -

                                                            Using multiple private keys for NAME_IMPORT

                                                            - -

                                                            Bitcoin itself imposes limits on how fast you can send transactions from the -same key (limited by a maximum UTXO-chain length). To work around this, -Blockstack lets you import names by using up to 300 private keys. The private -keys you can use are BIP32 unhardened children of the namespace reveal key (i.e. -$CREATOR_PKEY in this example).

                                                            - -

                                                            The first name you import must use the namespace reveal private key -($CREATOR_PKEY in this example). However, all future names you import in this -namespace can use one of the 300 BIP32 keys.

                                                            - -

                                                            To get the list of keys you can use, you can use the make_import_keys command:

                                                            - -
                                                                |blockstack-test namespace_check| $ blockstack make_import_keys example hello "$CREATOR_PKEY"
                                                            -    aeda50305ada40aaf53f2d8921aa717f1ec71a0a3b9b4c6397b3877f6d45c46501 (n4DVTuLLv5J1Yc17AoRYY1GtxDAuLGAESr)
                                                            -    92ff179901819a1ec7d32997ce3bb0d9a913895d5850cc05146722847128549201 (mib2KNBGR4az8GiUmusBZexVBqb9YB2gm5)
                                                            -    cc5b6a454e2b614bfa18f4deb9a8e179ab985634d63b7fedfaa59573472d209b01 (mxE2iqV4jdpn4K349Gy424TvZp6MPqSXve)
                                                            -    9b0265e0ac8c3c24fe1d79a734b3661ec2b5c0c2619bb6342356572b8235910101 (n4rGz8hkXTscUGWCwZvahrkEh6LHZVQUoa)
                                                            -    e2585af250404b7918cf6c91c6fa67f3401c0d1ae66df2fafa8fa132f4b9350f01 (moGNpEpighqc6FnkqyNVJA9xtfTiStr5YU)
                                                            -    {
                                                            -        "status": true
                                                            -    }
                                                            -
                                                            -
                                                            - -

                                                            (NOTE: in the test environment, you get only 5 keys in order to save time).

                                                            - -

                                                            You can use any of these keys to import names.

                                                            - -

                                                            Trying it out

                                                            - -

                                                            Here’s an example walkthrough of how to try this out in the test framework:

                                                            - -
                                                              -
                                                            1. Import the first name, creating a zone file in the process:
                                                            2. -
                                                            - -
                                                                |blockstack-test namespace_check| $ cat > /var/blockstack/zone_files/example.hello <<EOF
                                                            -    > $ORIGIN example.hello
                                                            -    > $TTL 3600
                                                            -    > _file URI 10 1 "file:///home/blockstack-test/example.hello"
                                                            -    > EOF
                                                            -    |blockstack-test namespace_check| $ blockstack name_import example.hello ms6Y32bcL5zhA57e8tf7awgVZuPxV8Xg8N /var/blockstack/zone_files/example.hello "$CREATOR_PKEY"
                                                            -    Import cost breakdown:
                                                            -    {
                                                            -        "name_import_tx_fee": {
                                                            -            "btc": 0.0003342,
                                                            -            "satoshis": 33420
                                                            -        },
                                                            -        "total_estimated_cost": {
                                                            -            "btc": 0.0003342,
                                                            -            "satoshis": 33420
                                                            -        },
                                                            -        "total_tx_fees": 33420
                                                            -    }
                                                            -    Importing name 'example.hello' to be owned by 'ms6Y32bcL5zhA57e8tf7awgVZuPxV8Xg8N' with zone file hash '05c302430f4ed0a24470abf9df7e264d517fd389'
                                                            -    Proceed? (y/N) y
                                                            -    {
                                                            -        "status": true,
                                                            -        "success": true,
                                                            -        "transaction_hash": "bd875f00f63bcb718bb22782c88c3edcbed79663f2f9152deab328c48746f103",
                                                            -        "value_hash": "05c302430f4ed0a24470abf9df7e264d517fd389"
                                                            -    }
                                                            -
                                                            -
                                                            - -
                                                              -
                                                            1. Advance the test framework blockchain, so the indexer knows which import keys to expect:
                                                            2. -
                                                            - -
                                                                # NOTE: you can also do this by going to http://localhost:3001 in your Web browser
                                                            -    |blockstack-test namespace_check| $ curl -X POST http://localhost:3001/nextblock
                                                            -
                                                            -
                                                            - -
                                                              -
                                                            1. Make import keys:
                                                            2. -
                                                            - -
                                                                |blockstack-test namespace_check| $ blocksatck make_import_keys hello "$CREATOR_PKEY"
                                                            -    aeda50305ada40aaf53f2d8921aa717f1ec71a0a3b9b4c6397b3877f6d45c46501 (n4DVTuLLv5J1Yc17AoRYY1GtxDAuLGAESr)
                                                            -    92ff179901819a1ec7d32997ce3bb0d9a913895d5850cc05146722847128549201 (mib2KNBGR4az8GiUmusBZexVBqb9YB2gm5)
                                                            -    cc5b6a454e2b614bfa18f4deb9a8e179ab985634d63b7fedfaa59573472d209b01 (mxE2iqV4jdpn4K349Gy424TvZp6MPqSXve)
                                                            -    9b0265e0ac8c3c24fe1d79a734b3661ec2b5c0c2619bb6342356572b8235910101 (n4rGz8hkXTscUGWCwZvahrkEh6LHZVQUoa)
                                                            -    e2585af250404b7918cf6c91c6fa67f3401c0d1ae66df2fafa8fa132f4b9350f01 (moGNpEpighqc6FnkqyNVJA9xtfTiStr5YU)
                                                            -    {
                                                            -        "status": true
                                                            -    }
                                                            -
                                                            -
                                                            - -
                                                              -
                                                            1. Fill up one of the addresses in the test framework, so we can fund NAME_IMPORT transactions with it:
                                                            2. -
                                                            - -
                                                                # NOTE: you can also do this by going to http://localhost:3001 in your Web browser
                                                            -    |blockstack-test namespace_check| $ curl -X POST -F 'addr=n4DVTuLLv5J1Yc17AoRYY1GtxDAuLGAESr' -F 'value=100000000' 'http://localhost:3001/sendfunds'
                                                            -
                                                            -
                                                            - -
                                                              -
                                                            1. Import another name, with the child private key we just funded:
                                                            2. -
                                                            - -
                                                                |blockstack-test namespace_check| $ cat > /tmp/example.hello.zonefile <<EOF
                                                            -    > $ORIGIN example2.hello
                                                            -    > $TTL 3600
                                                            -    > _file URI 10 1 "file:///home/blockstack-test/example2.hello"
                                                            -    > EOF
                                                            -    |blockstack-test namespace_check| $ blockstack name_import example2.hello n3sFkNfBQPWS25G12DqDEqHRPiqHotAkEb /tmp/example.hello.zonefile aeda50305ada40aaf53f2d8921aa717f1ec71a0a3b9b4c6397b3877f6d45c46501
                                                            -    Import cost breakdown:
                                                            -    {
                                                            -        "name_import_tx_fee": {
                                                            -            "btc": 0.0003342,
                                                            -            "satoshis": 33420
                                                            -        },
                                                            -        "total_estimated_cost": {
                                                            -            "btc": 0.0003342,
                                                            -            "satoshis": 33420
                                                            -        },
                                                            -        "total_tx_fees": 33420
                                                            -    }
                                                            -    Importing name 'example2.hello' to be owned by 'n3sFkNfBQPWS25G12DqDEqHRPiqHotAkEb' with zone file hash '0649bc0b457f54c564d054ce20dc3745a0c4f0c0'
                                                            -    Proceed? (y/N) y
                                                            -    {
                                                            -        "status": true,
                                                            -        "success": true,
                                                            -        "transaction_hash": "496a6c2aaccedd98a8403c2e61ff3bdeff221a58bf0e9c362fcae981353f459f",
                                                            -        "value_hash": "0649bc0b457f54c564d054ce20dc3745a0c4f0c0"
                                                            -    }
                                                            -
                                                            -
                                                            - -
                                                              -
                                                            1. Advance the blockchain again:
                                                            2. -
                                                            - -
                                                                # NOTE: you can also do this by going to http://localhost:3001 in your Web browser
                                                            -    |blockstack-test namespace_check| $ curl -X POST http://localhost:3001/nextblock
                                                            -
                                                            -
                                                            - -
                                                              -
                                                            1. See that the names are processing:
                                                            2. -
                                                            - -
                                                                |blockstack-test namespace_check| $ blockstack info
                                                            -    {
                                                            -        "cli_version": "0.17.0.8",
                                                            -        "consensus_hash": "2a055beeaedcaa1365ab2671a0254a03",
                                                            -        "last_block_processed": 711,
                                                            -        "last_block_seen": 711,
                                                            -        "queues": {
                                                            -            "name_import": [
                                                            -                {
                                                            -                    "confirmations": 2,
                                                            -                    "name": "example.hello",
                                                            -                    "tx_hash": "bd875f00f63bcb718bb22782c88c3edcbed79663f2f9152deab328c48746f103",
                                                            -                },
                                                            -                {
                                                            -                    "confirmations": 1,
                                                            -                    "name": "example2.hello",
                                                            -                    "tx_hash": "496a6c2aaccedd98a8403c2e61ff3bdeff221a58bf0e9c362fcae981353f459f"
                                                            -                }
                                                            -            ]
                                                            -        },
                                                            -        "server_alive": true,
                                                            -        "server_host": "localhost",
                                                            -        "server_port": 16264,
                                                            -        "server_version": "0.17.0.8"
                                                            -    }
                                                            -
                                                            -
                                                            - -
                                                              -
                                                            1. Confirm all the transactions:
                                                            2. -
                                                            - -
                                                                # NOTE: you can also do this by going to http://localhost:3001 in your Web browser
                                                            -    |blockstack-test namespace_check| $ for i in $(seq 1 10); do curl -X POST http://localhost:3001/nextblock
                                                            -
                                                            -
                                                            - -
                                                              -
                                                            1. Look up name zone files to confirm they were replicated to the test framework’s Atlas network:
                                                            2. -
                                                            - -
                                                                |blockstack-test namespace_check| $ blockstack info
                                                            -    {
                                                            -        "cli_version": "0.17.0.8",
                                                            -        "consensus_hash": "ad247c1d5ff239a65db0736951078f17",
                                                            -        "last_block_processed": 721,
                                                            -        "last_block_seen": 721,
                                                            -        "queues": {},
                                                            -        "server_alive": true,
                                                            -        "server_host": "localhost",
                                                            -        "server_port": 16264,
                                                            -        "server_version": "0.17.0.8"
                                                            -    }
                                                            -    |blockstack-test namespace_check| $ blockstack get_name_zonefile example.hello
                                                            -    $ORIGIN example.hello
                                                            -    $TTL 3600
                                                            -    _file URI 10 1 "file:///home/blockstack-test/example.hello"
                                                            -
                                                            -    |blockstack-test namespace_check| $ blockstack get_name_zonefile example2.hello
                                                            -    $ORIGIN example2.hello
                                                            -    $TTL 3600
                                                            -    _file URI 10 1 "file:///home/blockstack-test/example2.hello"
                                                            -
                                                            -
                                                            - -

                                                            Now, these names are imported and once the NAMESPACE_READY transaction is -sent, the name owners can proceed to issue name operations.

                                                            - -

                                                            Warnings

                                                            - -
                                                              -
                                                            • The first private key you use must be the same one you used to create the namespace ($CREATOR_KEY).
                                                            • -
                                                            • You may only use the 300 private keys described above to import names.
                                                            • -
                                                            • You must complete all NAME_IMPORT transactions within 52595 blocks of the NAMESPACE_REVEAL transaction (about 1 year).
                                                            • -
                                                            - -

                                                            Launching a Namespace

                                                            - -

                                                            Once you have pre-populated your namespace with all of the initial names, you -have to make it ready so anyone can register a name. If you do not do this -within 1 year of the reveal transaction, then your namespace and all of the -names will disappear, and someone else will be able to register it.

                                                            - -

                                                            To make a namespace ready, you use the creator private key as follows:

                                                            - -
                                                                 |blockstack-test namespace_check| $ blockstack namespace_ready hello "$CREATOR_PKEY"
                                                            -
                                                            -
                                                            - -

                                                            Warnings

                                                            - -
                                                              -
                                                            • You must send the NAMESPACE_READY transaction within 52595 blocks (about 1 year) of the NAMESPACE_REVEAL transaction.
                                                            • -
                                                            - - - -
                                                            - -
                                                            - - - - - - -
                                                            -

                                                            Related Articles

                                                            - - - - - -
                                                              - -
                                                            -
                                                            - - - -
                                                            - - - -
                                                            - -
                                                            -
                                                            - - -
                                                            -
                                                            - - - - - - - -
                                                            -
                                                            - - - -
                                                            -
                                                            - - - - -
                                                            -
                                                            - - - - - - - - - - - diff --git a/_site/core/naming/tutorial_subdomains.html b/_site/core/naming/tutorial_subdomains.html index a034d070..0e2077c6 100644 --- a/_site/core/naming/tutorial_subdomains.html +++ b/_site/core/naming/tutorial_subdomains.html @@ -17,9 +17,9 @@ - + +{"description":"Subdomain Design and Implementation","author":{"@type":"Person","name":"Blockstack"},"@type":"BlogPosting","url":"https://zbabystack.netlify.com/core/naming/tutorial_subdomains.html","headline":"Subdomain Design and Implementation","dateModified":"2018-09-12T18:20:57-07:00","datePublished":"2018-09-12T18:20:57-07:00","mainEntityOfPage":{"@type":"WebPage","@id":"https://zbabystack.netlify.com/core/naming/tutorial_subdomains.html"},"@context":"http://schema.org"} @@ -42,8 +42,11 @@
                                                              @@ -99,158 +102,151 @@
                                                              -
                                                              +

                                                              Subdomain Design and Implementation

                                                              + -
                                                              +

                                                              Subdomains allow us to provide names to end users cheaply (and quickly). This tutorial explains you how to create, register, and run a subdomain register, it @@ -624,7 +620,7 @@ correct environment variables for it to run).

                                                              -
                                                              + - -
                                                              +{"description":"Bitcoin wire format","author":{"@type":"Person","name":"Blockstack"},"@type":"BlogPosting","url":"https://zbabystack.netlify.com/core/wire-format.html","headline":"Bitcoin wire format","dateModified":"2018-09-12T18:20:57-07:00","datePublished":"2018-09-12T18:20:57-07:00","mainEntityOfPage":{"@type":"WebPage","@id":"https://zbabystack.netlify.com/core/wire-format.html"},"@context":"http://schema.org"} @@ -42,8 +42,11 @@
                                                                @@ -99,158 +102,151 @@
                                                                -
                                                                +

                                                                Bitcoin wire format

                                                                + -
                                                                +

                                                                This page is for organizations who want to be able to create and send name operation transactions to the blockchain(s) Blockstack supports. It describes the transaction formats for the Bitcoin blockchain.

                                                                @@ -743,8 +739,7 @@ for a previously-anounced namespace hash (sent by a previous namespace creation -tutorial for details.

                                                                +creator can import names. See the namespace creation section for details.

                                                                Example: c698ac4b4a61c90b2c93dababde867dea359f971e2efcf415c37c9a4d9c4f312

                                                                @@ -886,7 +881,7 @@ def hash128(data): -
                                                                + - -
                                                                +{"description":"iOS SDK Tutorial (Pre-release)","author":{"@type":"Person","name":"Blockstack"},"@type":"BlogPosting","url":"https://zbabystack.netlify.com/ios/tutorial.html","headline":"iOS SDK Tutorial (Pre-release)","dateModified":"2018-09-12T18:20:57-07:00","datePublished":"2018-09-12T18:20:57-07:00","mainEntityOfPage":{"@type":"WebPage","@id":"https://zbabystack.netlify.com/ios/tutorial.html"},"@context":"http://schema.org"} @@ -42,8 +42,11 @@
                                                                @@ -158,7 +161,7 @@
                                                                -
                                                                -
                                                                +

                                                                This tutorial teaches you how to create a decentralized application using Blockstack’s iOS SDK using the following content:

                                                                diff --git a/_site/news/index.html b/_site/news/index.html index 4b28283a..5146705b 100644 --- a/_site/news/index.html +++ b/_site/news/index.html @@ -40,8 +40,11 @@
                                                                  diff --git a/_site/robots.txt b/_site/robots.txt new file mode 100644 index 00000000..1f53798b --- /dev/null +++ b/_site/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: / diff --git a/_site/thanks/index.html b/_site/thanks/index.html index 47652119..db222997 100644 --- a/_site/thanks/index.html +++ b/_site/thanks/index.html @@ -40,8 +40,11 @@
                                                                    @@ -94,11 +97,11 @@
                                                                    -
                                                                    +

                                                                    Thanks

                                                                    -
                                                                    +

                                                                    Varius tempor. Nulla non sollicitudin tortor. Morbi sit amet laoreet ipsum, vel pretium mi. Morbi varius, tellus in accumsan blandit, elit ligula eleifend velit, luctus mattis ante nulla condimentum nulla.

                                                                    Ut malesuada varius tempor. Nulla non sollicitudin tortor. Morbi sit amet laoreet ipsum, vel pretium mi. Morbi varius, tellus in accumsan blandit, elit ligula eleifend velit, luctus mattis ante nulla condimentum nulla.

                                                                    diff --git a/contact.md b/contact.md index 00c0d0f9..7771a359 100644 --- a/contact.md +++ b/contact.md @@ -1,14 +1,10 @@ --- layout: contact -title: Got Any Questions +title: Got Any Questions? permalink: /contact/ -formspree: - email: my_name@gmail.com - redirect: /thanks/ --- -##### Morbi varius in accumsan blandit, elit ligula velit, luctus mattis ante nulla nulla. +##### To get in touch with us... -Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. - -{% include map.html latitude="40.6700" longitude="-73.9400" zoom="16" %} +Please feel free to post any [questions on our public form](https://forum.blockstack.org/). +You can also request [access to our Slack instance](https://docs.google.com/a/blockstack.com/forms/d/e/1FAIpQLSed5Mnu0G5ZMJdWs6cTO_8sTJfUVfe1sYL6WFDcD51_XuQkZw/viewform).