Giter Club home page Giter Club logo

counterparty-lib's Introduction

Build Status Travis Build Status Circle Coverage Status Latest Version License Slack Status Docker Pulls

Description

counterparty-lib is the reference implementation of the Counterparty Protocol.

Note: for the command-line interface to counterparty-lib, see counterparty-cli.

Installation

For a simple Docker-based install of the Counterparty software stack, see this guide.

Manual installation

Download the newest patched Bitcoin Core and create a bitcoin.conf file with the following options:

rpcuser=bitcoinrpc
rpcpassword=rpc
server=1
txindex=1
addrindex=1
rpctimeout=300

Note: you can and should replace the RPC credentials. Remember to use the changed RPC credentials throughout this document.

Then, download and install counterparty-lib:

$ git clone https://github.com/CounterpartyXCP/counterparty-lib.git
$ cd counterparty-lib
$ sudo pip3 install --upgrade -r requirements.txt
$ sudo python3 setup.py install

Followed by counterparty-cli:

$ git clone https://github.com/CounterpartyXCP/counterparty-cli.git
$ cd counterparty-cli
$ sudo pip3 install --upgrade -r requirements.txt
$ sudo python3 setup.py install

Note on sudo: both counterparty-lib and counterparty-server can be installed by non-sudoers. Please refer to external documentation for instructions on using pip without root access and other information related to custom install locations.

Then, launch the daemon via:

$ counterparty-server bootstrap
$ counterparty-server --backend-password=rpc start

Basic Usage

Via command-line

(Requires counterparty-cli to be installed.)

  • The first time you run the server, you may bootstrap the local database with: $ counterparty-server bootstrap

  • Start the server with: $ counterparty-server start

  • Check the status of the server with: $ counterparty-client getinfo

  • For additional command-line arguments and options: $ counterparty-server --help $ counterparty-client --help

Via Python

Bare usage from Python is also possible, without installing counterparty-cli:

$ python3
>>> from counterpartylib import server
>>> db = server.initialise(<options>)
>>> server.start_all(db)

Configuration and Operation

The paths to the configuration files, log files and database files are printed to the screen when starting the server in ‘verbose’ mode: $ counterparty-server --verbose start

By default, the configuration files are named server.conf and client.conf and located in the following directories:

  • Linux: ~/.config/counterparty/
  • Windows: %APPDATA%\Counterparty\

Client and Server log files are named counterparty.client.[testnet.]log and counterparty.server.[testnet.]log, and located in the following directories:

  • Linux: ~/.cache/counterparty/log/
  • Windows: %APPDATA%\Local\Counterparty\counterparty\Logs

Counterparty API activity is logged in server.[testnet.]api.log and client.[testnet.]api.log.

Counterparty database files are by default named counterparty.[testnet.]db and located in the following directories:

  • Linux: ~/.local/share/counterparty
  • Windows: %APPDATA%\Roaming\Counterparty\counterparty

Configuration File Format

Manual configuration is not necessary for most use cases. "back-end" and "wallet" are used to access Bitcoin server RPC.

A counterparty-server configuration file looks like this:

[Default]
backend-name = addrindex
backend-user = <user>
backend-password = <password>
rpc-host = 0.0.0.0
rpc-user = <rpcuser>
rpc-password = <rpcpassword>

The force argument can be used either in the server configuration file or passed at runtime to make the server keep running in the case it loses connectivity with the Internet and falls behind the back-end database. This may be useful for non-production Counterparty servers that need to maintain RPC service availability even when the backend or counterparty server has no Internet connectivity.

A counterparty-client configuration file looks like this:

[Default]
wallet-name = bitcoincore
wallet-connect = localhost
wallet-user = <user>
wallet-password = <password>
counterparty-rpc-connect = localhost
counterparty-rpc-user = <rpcuser>
counterparty-rpc-password = <password>

Developer notes

Versioning

  • Major version changes require a full (automatic) rebuild of the database.
  • Minor version changes require a(n automatic) database reparse.
  • All protocol changes are retroactive on testnet.

Continuous integration

  • TravisCI is setup to run all tests with 1 command and generate a coverage report and let python-coveralls parse and upload it. It does runs with --skiptestbook=all so it will not do the reparsing of the bootstrap files.
  • CircleCI is setup to split the tests as much as possible to make it easier to read the error reports. It also runs the integration_test.test_book tests, which reparse the bootstrap files.

Further Reading

counterparty-lib's People

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.