Software to run the old chain (before 2015-10-13)
C++ CMake C Python QML Ruby Other
Clone or download
Permalink
Failed to load latest commit information.
CMakeModules Upgrade Mac and Linux LevelDB 1.12 -> 1.18-bitcoin Nov 19, 2014
CrashRpt Revert "Revert "Add missing CrashRpt1402.lib file"" Aug 20, 2014
HelperScripts Remove references to "toolkit" Dec 3, 2014
docs @ 7209dfc Move docs to submodule for wiki https://github.com/bitshares/bitshare… Jun 11, 2015
libraries include ID's in snapshot Oct 13, 2015
programs Merge branch 'devshares' into bitshares Jun 11, 2015
snapshots Remove extraneous file Jan 5, 2015
tests Update fc submodule Jun 18, 2015
vendor @ ade97ad Move docs to submodule for wiki https://github.com/bitshares/bitshare… Jun 11, 2015
.gitignore Update .gitignore Mar 6, 2015
.gitmodules Move docs to submodule for wiki https://github.com/bitshares/bitshare… Jun 11, 2015
.travis.yml fix travis build and use clang static analyzer May 2, 2015
BUILD_OSX.md Update build instructions for updating submodules; #1481 Mar 30, 2015
BUILD_UBUNTU.md Update build instructions for updating submodules; #1481 Mar 30, 2015
BUILD_WIN32.md Win32 build: update links for pre-compiled libs Mar 19, 2018
CMakeLists.txt Actually Checkin Hardfork for 0.9.3 Sep 21, 2015
LICENSE.txt Move coding guidelines to GitHub wiki Dec 10, 2014
README.md README.md: Better explanation of RPC server Dec 31, 2014
dev-test-keys.txt add dev keys to test genesis block Nov 11, 2014
new_testnet.py Always surround new_password API type with quotes; #1054, #1416 Mar 3, 2015
run_cmake.bat Merge branch 'develop' of https://github.com/BitShares/bitshares_toolkit Aug 19, 2014
run_cmake_x64.bat [BW]: [Ign] Updated default cmake generator Jun 5, 2014
run_vs.bat - Fixed: WDExpress and VS Professional start together after run 'run_… Jul 31, 2014
run_vs_x64.bat [BW]: [Ign] Addsd batches simplifying x64 development on windows plat… Jun 4, 2014
setenv.bat Small fixes for jenkins build environment. Aug 26, 2014
setenv.sh Fixed some env for jenkins on Linux + be more verbose during build. Aug 29, 2014
setenv_x64.bat Small fixes for jenkins build environment. Aug 26, 2014

README.md

BitShares

BitShares is a software platform designed to help coordinate voluntary free market operations amongst a set of social actors.

These social actors together maintain a replicated deterministic state machine which defines the state of a free market. This state machine unambigiously defines the ownership of resources amongst market participants, the rules by which resources are reallocated through market operations, and the history of all market operations. Social actors are free to voluntarily enter and exit the market as desired.

Replicas of the state machine are kept consistent using the Delegated Proof-of-Stake distributed consensus protocol, which depends on market operations by a special class of market participants colloquially known as shareholders. Resource ownership is secured using digital signatures and inputs to the state machine are shared amongst actors using a peer-to-peer mesh network.

Features

The system is designed to ensure the following properties:

  • Fault-Tolerance: the market should be resilient to bad actors
  • Immutability: the historical intent of all market participants should be preserved
  • Transparency: any actor can inspect the market to verify that it is operating correctly
  • Censorship Resistance: no actor can be kept from performing valid market operations
  • Flexibility: the rules of the market should be able to change given sufficient shareholder approval
  • Self-Sustainability: the market should be be able to fund its own continued operation

Additional information is available at BitShares.org and the BitShares Wiki. Community discussion occurs at BitSharesTalk.org.

Building

Different platforms have different build instructions:

Using the RPC server

For many applications, it is useful to execute BitShares commands from scripts. The BitShares client includes RPC server functionality to allow programs to submit JSON-formatted commands and retrieve JSON-formatted results over an HTTP connection. To enable the RPC server, you can edit the rpc section of config.json as follows:

  "rpc": {
    "enable": true,
    "rpc_user": "USERNAME",
    "rpc_password": "PASSWORD",
    "rpc_endpoint": "127.0.0.1:1775",
    "httpd_endpoint": "127.0.0.1:1776",

Here, USERNAME and PASSWORD are authentication credentials which must be presented by a client to gain access to the RPC interface. These parameters may also be specified on the command line, but this is not recommended because some popular multi-user operating systems (Linux in particular) allow command line parameters of running programs to be visible to all users.

After editing the configuration file and (re)starting the BitShares client, you can use any HTTP client to POST a JSON object and read the JSON response. Here is an example using the popular curl command line HTTP client:

curl --user USERNAME:PASSWORD http://127.0.0.1:1776/rpc -X POST -H 'Content-Type: application/json' -d '{"method" : "blockchain_get_account", "params" : ["dev0.theoretical"], "id" : 1}'

The POST request returns a JSON result like this (some data elided for brevity):

{"id":1,"result":{"id":31427,"name":"dev0.theoretical","public_data":{"version":"v0.4.27.1"},"owner_key":"BTS75vj8aaDWFwg7Wd6WinAAqVddUcSRJ1hSMDNayLAbCuxsmoQTf", ...},"meta_data":{"type":"public_account","data":""}}}

Since HTTP basic authentication is used, the authentication credentials are sent over the socket in unencrypted plaintext. For this reason, binding to an interface other than localhost in the configuration file is not recommended. If you wish to access the RPC interface from a remote system, you should establish a secure connection using SSH port forwarding (the -L option in OpenSSH) or a reverse proxy SSL/TLS tunnel (typically supported by general-purpose webservers such as nginx).

Please keep in mind that anyone able to connect to the RPC socket with the correct username and password will be able to access all funds, accounts and private keys in any open wallet (including wallets opened manually or by another RPC client connected to the same bitshares_client instance). Thus, your security procedures should protect the username, password, and socket accordingly (including config.json since it contains the username and password)!

Contributing

The source code can always be found at the BitShares GitHub Repository. There are four main branches:

  • master - official BitShares releases are tagged from here; this should only change for a new release
  • bitshares - updates to BitShares are staged here in preparation for the next official release
  • develop - all new development happens here; this is what is used for internal BitShares XTS test networks
  • toolkit - this is the most recent common ancestor between master and develop; forks of BitShares should base from here

Some technical documentation is available at the BitShares GitHub Wiki.

Support

Bugs can be reported directly to the BitShares Issue Tracker.

Technical support can be obtained from the BitSharesTalk Technical Support Forum.

License

The BitShares source code is in the public domain under the Unlicense. See the LICENSE for more information.