/blockstack-core

The reference implementation of Blockstack

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

Blockstack Core

PyPI Slack

blockstack-core is the reference implementation of the Blockstack protocol.

  • blockstack-core
    • Creating and transmitting blockchain transactions,
    • Creating and parsing virtualchain state, and
    • Communicating with the peer network, Atlas.
  • blockstack-core api
    • Provides a RESTful interface for clients to interact with blockstack-core functionality
    • Contains your bitcoin wallet
    • API Docs (rendered)
  • blockstack
    • A command-line-interface for the blockstack-core api, and blockstack-core

What is Blockstack?

Blockstack is a new decentralized internet where you own your data and your apps run locally without remote servers.

Blockstack provides decentralized services for naming/DNS, identity, authentication and storage. Developers can use JavaScript libraries to build serverless apps and they don't need to worry about managing infrastructure.

If you are looking to get started with the blockstack platform and register a name, we recommend you start with the Blockstack Browser first.

For more info on Blockstack here are some good links:

Table of Contents

Installing Blockstack

If you are looking to register a name, or use blockstack application, we recommend that you start with the blockstack-browser You can find install instructions for:

  • Linux using our Docker launcher script.
  • Windows - Alpha installer which installs docker utilities and our docker images.
  • macOS

If you are looking to install blockstack-core, there are two methods:

Install with pip

You should use pip2 if you have it instead of pip. Blockstack is built against Python 2.7.

On Mac:

# Install blockstack
$ pip2 install blockstack --upgrade

On Debian & Ubuntu:

# Install dependancies
$ sudo apt-get update && sudo apt-get install -y python-pip python-dev libssl-dev libffi-dev rng-tools libgmp3-dev
$ sudo pip2 install pyparsing

# Install blockstack
$ sudo pip2 install blockstack --upgrade

Setting up blockstack-api

If this is your first time installing blockstack first you will need to run blockstack setup and follow the prompts. Using the defaults is recommended. This process generates your wallet and the blockstack configuration files.

NOTE: This process generates a wallet. BE SURE TO SAVE THE WALLET PASSWORD YOU TYPE IN.

Next you need to start the blockstack api server: blockstack api start. Now, you can test your installation by running blockstack info which should display the last block processed and the latest consensus hash.

Install with docker

WARNING: This install path is currently in developer alpha state. We will be adding more features here in the coming months.

NOTE: You will need docker installed to do this. The easiest way to install docker is with this quick script: wget -q0- https://get.docker.com/ | sh. There are also step by step instructions to install. You will want the CE install.

Blockstack API and the Blockstack Browser run well in docker. There is a provided CLI to help you build and launch the docker images if you are not comfortable with docker: launcher. The CLI will pull down the images from our Quay image repository.

First you need to download the launcher script and make it runnable, You will also need to edit 2 variables in the script:

$ wget -O launcher https://raw.githubusercontent.com/blockstack/packaging/master/browser-core-docker/launcher
$ chmod +x launcher
$ nano launcher
# Set the two following variables:
# TAG=v0.18.1
# COREVERSION=0.17.0.9

Then you can run the ./launcher commands:

# First run the pull command. This will fetch the latest docker images from our image repository.
$ ./launcher pull-core

# The first time you run a core node you will need to sync it with the current state of the network
# This process can take a long time. blockstack-core offers a fast_sync option. To use it with the docker install:
$ ./launcher init-core

# To start the blockstack-core node run
$ ./launcher start-core

# When you are done you can stop the core node with the following
$ ./launcher stop-core

This will start the Blockstack browser and a paired blockstack-api daemon.

If you would like to build your own docker image, you can use the Dockerfile in the root of this repository.

Running a blockstack-core instance

After installation, you can (optionally) do a fast-sync that quickly syncs a local blockstack-core node with the Atlas network:

# Download the Atlas snapshot
$ blockstack-core --debug fast_sync http://fast-sync.blockstack.org/snapshot.bsk

# start the blockstack-core daemon to index the blockchain
$ blockstack-core --debug start

# Check the server logs for errors
$ tail -f ~/.blockstack-server/blockstack-server.log

Next, visit the usage docs to learn how to register names of your own, as well as transfer them and associate data with them.

If you encounter any technical issues in installing or using Blockstack, please search the open issues and start a new one if your issue is not covered. You can also visit the forum or #support channel in Slack.

Development Status

v0.17.0 is the current stable release of Blockstack Core (available on the master branch).

The next release is being built on the develop. Please submit all pull requests to the develop branch.

In the list of release notes you can find what has changed in each release.

Blockstack Docs

You can learn more by visiting the Blockstack Website and checking out the in-depth articles and documentation:

You can also read the Blockstack paper:

If you have high-level questions about Blockstack, try searching our forum and start a new question if your question is not answered there.

Contributing

We welcome any small or big contributions! Please take a moment to review the guidelines for contributing to open source in order to make the contribution process easy and effective for everyone involved.

Developers: You can try out Blockstack Core in a local sandbox using our integration test framework.

You can install the latest release candidate by:

$ git clone https://github.com/blockstack/blockstack-core.git
$ blockstack-core/images/scripts/debian-release-candidate.sh

Copyright and License

The code and documentation copyright are attributed to blockstack.org for the year of 2017.

This code is released under the GPL v3 license, and the docs are released under the Creative Commons license.