BitShares Technical Documentation - Table of Contents List (Updated with links)

in #bitshares4 years ago

Learn from the Contents!! Do you know BitShares History? Are you interested to learn BitShares?

This is BitShares Documentation Contents list. I updated my last year post information and add links. This time, it would be easier to check out each content page.
You might get some ideas what's in the BitShares documents and what you might be able to do with this technology!!!

bitshare-logo2 -updated.png

Graphene Technical Documentation by @xeroc

Table Of Contents

1:: BitShares 2.0
2:: MUSE
3:: Integration Guide
4:: API Guide
5:: Development Guide
6:: Testnets
7:: How to Contribute

1:: BitShares 2.0

1-1. What is BitShares

1-1.1. What is BitShares

  • Background
  • Consensus Technology
  • Distributed Autonomous Companies
  • Community

1-1.2. The History of BitShares

  • The History of BitShares as laid out by Stan Larimer
  • The History of BitShares Part One
  • The History of BitShares Part Two
  • The History of BitShares Part Three
  • December’s Innovation – TAPOS and the End of Mining
  • History of Funding
  • The Great Consolidation

1-1.3. Delegated Proof of Stake

  • Background
  • Rationale Behind DPOS
  • Shareholders are in Control
  • Pooled Mining as Delegated Proof of Work
  • Reasons to not randomly select representatives from all users
    • Scalability
    • Role of Delegates
    • How to become a delegate
  • Voting Algorithm
    • How do I get “votes?”
    • Why use only upvotes?
    • How are ‘votes’ counted?
    • Is there an anti-vote?
  • Disincentives for Attacks
  • How many witnesses are securing the network
  • DPOS Infographic
  • Sources and Discussions

1-1.4. Whitepapers

  • BitShares 2.0: General Overview
  • BitShares 2.0: Financial Smart Contract Platform

1-2. Guides

1-2.1. Installation

1-2.1(a) Downloads
  • Precompile Executables
1-2.1(b) Sources
1-2.1(c) Building from Sources
  • Downloading the sources
    • Dependencies
      • Development Toolkit
      • Boost 1.57
  • Building BitShares
  • Updating BitShares
  • Distribution Specific Settings
    • Ubuntu 14.04
    • Ubuntu 15.04
1-2.1(d) Upgrading
  • Recompiling from Sources

1-2.2. Migrating from BitShares 1.0 to BitShares 2.0

1-2.2(a) What is New in BitShares 2.0
1-2.2(b) What has Changed since BitShares 0.9?
1-2.2(c) Blockchain Upgrade
1-2.2(d) Exporing Your Wallet
  • BitShares 1.0 Full Client
    • Synchronize your Wallet
    • Export via the main menu
    • Export via the console
1-2.2(e) Importing Your Wallet
  • Web Wallet
  • CLI wallet
    • Claiming Balances
    • Manually claim balances
1-2.2(f) Migration Remarks
  • Remarks on Private Keys
  • Technical Explanation

1-2.3. User Guide

1-2.3(a) For End User

1-2.3(b) For Blockchain “Employees”

1-2.3(c) Frequently Asked Questions

  • Assets FAQ
    • General
      • What happens to the asset creation fee?
      • Can What about Parent and Child assets?
      • I change x after creation of the asset?
      • Changing the issuer
  • Fee Pool
    • What is the fee pool all about?
    • What to do if the fee pool is empty?
  • Market Fees
    • What happens if I enable Market fees?
    • What are Asset Flags and Permissions?
    • What are the Permissions?
    • W hat are the Flags?
  • Market Pegged Assets
    • Can I use the same flags/permissions as for UIAs?
    • What are market-pegged-asset-specific parameters?
  • CLI Wallet FAQ
    • Why does the CLI client crash immediately when I try to run it for the first time?
    • How can I close the CLI client in a clean way?
    • How can I import to my CLI client a wallet originally created in the web GUI?
    • How can I create, register and upgrade an account to Lifetime Membership?
  • Witness FAQ
    • What is the best way to interact with the witness node?
    • How do I check whether the witness node is already synced?
    • If it seems to be unable to sync beyond a certain date
    • Whose private key is [/“BTS6MRyAjQ..”,”5KQwrPbwdL..”]/? Why is it predefined ion the config.ini?
    • What is the meaning of all those different text colors in the witness node console?
    • How can I close the witness node in a clean way?
    • Is it safe to delete logs stored in witness_node_data_dirlogsp2p?
    • What is the difference between public and private testnet?

1-2.4. Investor Guide

Claim your Investment
* Claiming Your Stake

1-2.5. Businesses, Developers and Business Developers

1-2.5(a) BitShares Improvement Proposal
1-2.5(b) Funding Your Ideas
  • Basic Worker Proposal
  • Fee Backed Asset
  • Crowdfunding
  • Mixed Funding

1-2.6 Tutorials

1-2.6(a) General Tutorials
1-2.6(b) API Usage
1-2.6(c) Assets
1-2.6(d) Prediction Market
1-2.6(e) Committee Tutorials
1-2.6(f) Worker Tutorials
1-2.6(g) Witness Tutorials
1-2.6(h) Developers

2:: MUSE

2-1. Installation

2-1.1. Downloads

2-1.2. Sources

2-1.3. Building from Sources

2-1.3(a) Downloading the sources
2-1.3(b) Dependencies
  • Development Toolkit
  • Boost 1.57
  • QT 5.5
2-1.3(c) Building MUSE
2-1.3(d) Distribution Specific Settings
  • Ubuntu 14.04
  • Ubuntu 15.04

2-1.4. Upgrading

2-1.4(a) Recompiling from Sources

2-2. How to Redeem your MUSE/NOTE

2-2.1. Exporting your wallet

2-2.1(a) From Bitcoin Pre-Sale
Bitcoin Pre-Sale
2-2.1(b) From BitShares Decentralized Exchange
BitShares’ NOTE Token
  • Using the main menu
  • Using the console

2-2.2. Creating a MUSE account

2-2.3. Importing Your Balance

2-2.3(a) Using the Web Wallet (recommended)
2-2.3(b) Using the Console Client (advanced users)
  • Claiming Balances
  • Manually claim balances

3:: Integration Guide

3-1: Basic Knowledge

3-1.1. What is Different in BitShares

  • Several Tokens
  • Registered Identities
  • No More Addresses
  • Memos
  • Securing Funds
  • Full Nodes and Clients
  • Object IDs

3-1.2. Blockchain Interaction

3-1.2(a) Full Node
  • Full Nodes
  • Configuration
  • Enabling Remote Procedure Calls (RPC)
  • Restarting the witness node
  • Enabling Block Production
3-1.2(b) Delayed Full Node
3-1.2(c) CLI Wallet
  • Launching
  • Enabling Remote Procedure Calls (RPC)
3-1.2(d) Web Wallet
  • Download
  • Installing Dependencies
  • Bundling
  • Testing Bundle
  • Live Development
3-1.2(e) CLI Wallet FAQ
3-1.2(f) Witness FAQ

3-1.3. Network and Wallet Configuration

3-1.3(a) Components
  • P2P network
  • Trusted Full Node
  • Wallet
  • Wallet API
3-1.3(b) Network Setups

3-1.4 Often used API Calls

3-1.4(a) Objects and IDs
  • Objects
    • List of commonly used objects
    • Examples
  • Definitions
    • Protocol Space (1.x.x)
    • Implementattion Space (2.x.x)
3-1.4(b) Wallet API Calls
--> 4-1.1(b)

3-2: Use-Cases

3-2.1. Exchanges, Bridges, and Gateways

3-2.1(a) Integration Instructions
3-2.1(b) Libraries
API Guide --> 4:: API Guide

3-2.2. Merchants

API Guide --> 4:: API Guide

3-2.3. Traders

3-2.3(a) Public API

BitShares Public Full Nodes:

  • Websocket Calls & Notifications
    • Prerequisits
    • Call Format
    • Requesting API access
    • Database Notifications
    • Example Session
  • Blockchain API --> 4-1.2(c)
    • Database API
    • Account History API
    • Crypto API
    • Network Broadcast API
    • Network Nodes API
3-2.3(b) Private API
3-2.3(c) Libraries
--> 3-2.3(b)

3-2.4. Businesses

3-2.4(a) Business
3-2.4(b) Libraries
--> 3-2.3(c)
API Guide --> 4:: API Guide

4:: API Guide

4-1: Interfacing with Graphene

4-1.1. Wallet API

4-1.1(a) Remote Procedure Calls
  • Prerequisits
  • Call Format
  • Remarks
4-1.1(b) Wallet API Calls
  • General Calls
  • Wallet Calls
  • Account Calls
  • Trading Calls
  • Asset Calls
  • Governance
  • Privacy Mode
  • Blockchain Inspection
  • Transaction Builder

4-1.2. Blockchain API(s)

4-1.2(a) Remote Procedure Calls
--> 4-1.1(a)
4-1.2(b) Websocket Calls & Notifications
  • Prerequisits
  • Call Format
  • Requesting API Access
  • Database Notifications
  • Example Session
4-1.2(c) Blockchain API

The Graphene full node distinguishes several different APIs that can be accessed as described the websockets documentation.

Database API

  • Objects
  • Subscriptions
  • Blocks and transactions
  • Globals
  • Keys
  • Accounts
  • Balances
  • Assets
  • Markets / feeds
  • Witnesses
  • Committee members
  • Workers
  • Votes
  • Authority / Validation
  • Proposed Transactions
  • Blinded balances

Account History API

  • Account History
  • Market History

Crypto API

  • Blinding and Un-Blinding
  • Rage Proofs
  • Verification

Network Broadcast API

  • Transactions
  • Block

Network Nodes API

  • Obtain Network Information
  • Change Network Settings

Access to some APIs may be restricted and requires login with username and passphrase. More detailed description about this can be found on the API Access Restrictions page.

4-1.3. Blockchain Objects and their Identifiers

--> 5-1.1.

5:: Development Guide

5-1. Blockchain Specification

The technical specifications of blockchain objects and their serialization is part of the following sections.

5-1.1. Objects and IDs

  • Objects
    • List of commonly used objects
    • Examples
  • Definitions
    • Protocol Space (1.x.x)
    • Implementattion Space (2.x.x)

5-2. Namespaces

5-2.1. Graphene::App

namespace graphene::app

  • Unnamed Group
  • Functions
  • Public Functions
  • Public Members

5-2.2. Graphene::Chain

namespace graphene::chain

  • Typedefs
  • Enums
  • Functions
  • Variables
  • Public Members
  • Public Functions
  • Unnamed Group

5-2.3. Graphene::Wallet

namespace graphene::wallet

  • Typedefs
  • Functions
  • Public Members
  • Public Functions
  • Unnamed Group

5-3. Frequently Asked Questions

  • What is the standard Bitshares address structure and format?
  • What public key system is used? If elliptic curve, then what is the curve?
  • Is there a specification for Bitshares scripting language? (assuming there is one)
  • Is the scripting language turing complete?
  • What transaction types are natively supported?
  • How is accounting addressed in Bitshares? Is it a Nxt style accounting model or like Bitcoin’s UTXO
  • What is the average size in Bytes of a Bitshares transaction?
  • How are transactions validated?
  • Are there any special affordances made for privacy?
  • What data structures are used in the blockchain?
  • What is the format of the block header?
  • What is the maximum bitshares block size?
  • Are there any sharding mechanics currently deployed?
  • How are SPV clients handled?
  • Does the protocol provide mechanisms for overlay protocols to interact such as OR_RETURN?
  • How is time addressed in the blockchain? Is NTP used or some other protocol?
  • How do new clients bootstrap into the network?
  • What is the average block time?
  • Is this done via a gossip protocol or through a federate relay?


You can find all the relevant information about the public network on a dedicated page: Open Public Testnet (**technical details**)

6-1. Public Testnet How to

6-1. 1. Installation/Confguration of Witness

  • Fork CNX’s code base
  • Configuration
    • Blockchain Parameters
    • Default Seed Node List
  • Initial Compilation

6-1.2. Genesis Configuration

  • Genesis editing
  • Writing final genesis
  • Including Genesis into the binaries

6-1.3. Initializing Blockchain

  • Initializing the genesis block
  • Setting up block production
    • Embedding the Genesis block (optional)

6-1.4. Connecting a CLI wallet

  • Creating a wallet
  • Gaining access to stake
  • Creating accounts

6-1.5. Establishing a Committee

  • Creating members
  • Upgrading members
  • Registering as committee member
  • Voting with faucet account

6-1.6. Web Wallet

  • Dependencies
  • Fetching the web wallet
  • Configuration
  • Compilation

6-1.7. Setting up the Faucet

  • Installation of Dependencies
  • Get the Source
  • Configuration
    • Faucet
    • Rails API
    • Database Access
    • Database Settings
    • Mina deployment
    • Update wallet

6-1.8. Nginx Webserver

  • Setup
  • Configuration
  • Running nginx as serice

6-1.9 Installation of Python Library

  • Requirements
  • Installation
  • Usage

6-1.10. Create MPAs/UIAs

We now create some Market Pegged assets and construct the price feed.

6-2. Private Testnet How to

6-2.1. Prerequisites

We assume that you have both witness_node and cli_wallet already compliled (or downloaded from the offical respository).

6-2.2. Folder Structure

Create a new folder (we will refer to it as [Testnet-Home]) in any location you like and copy witness_node and cli_wallet there. The [Testnet-Home] folder will contain all files and folders related to the testnet.

Open a Command Prompt window and switch the current directory to [Testnet-Home].

6-2.3. The Genesis File

The genesis file defines the initial state of the network.

  • Default genesis
  • Customization of the genesis file

6-2.4. Get the Blockchain ID

6-2.5. Witness Configuration

6-2.6. Start Block Production

6-2.7. CLI Usage

  • Create a new wallet
  • Gain access to the genesis stake
  • Create another account
  • Transfer funds between accounts

7:: How to Contribute

7-1. Contribute to BitShares

7-1.1. Backend Development

7-1.2. Frontend Development

7-2. Contribute to Graphene

7-2.1. Backend Development

7-2.2. Frontend Development

7-3. Contribute to the Documentation

7-3.1. Requirements

doxygen (run doxygen in the graphene source to generate required files)
sphinx (
breathe (

  • Quick Install in OSX

7-3.2. Building

7-3.3. Output

7-3.4. Deployment

7-3.5. Updating doxygen (optional)

Updated: 2017-8-14

Have you gotten own idea what's in the documentation? Are you going to dig into learning BitShares technology? Enjoy learning!!

Thank you.


This documentation will helpful to all who are using bitshares and new users interested in bitshares, I have started using bitshares and have some doubts hope this will clear my doubts thanks for bringing to the community.

@krishatnet, I am glad to hear that's helpful.