OpenBazaar 2.0 Server Daemon in Go
Go Python Other
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
.travis Update the dll for Windows builds Jul 14, 2017
Godeps Update wallet dependencies Aug 14, 2018
api Merge pull request #1054 from OpenBazaar/TS_travis Aug 7, 2018
bitcoin Move zcashd and bitcoind wallets to separate packages Jul 6, 2018
cmd Update go-onion-transport lib Jul 27, 2018
core Bump version number Aug 14, 2018
docs Fix h3 in gateway docs Apr 9, 2018
ipfs First pass IPNS refactor Jul 25, 2018
mobile Fix exchangerate import in mobile package Aug 8, 2018
namesys First pass rebase ipfs Jun 27, 2018
net Improve error messages in OFFLINE_ACK message handler Aug 15, 2018
pb Fix bug setting coinType and paymentCoin in cases put Jul 20, 2018
qa Fix bug in complete_disputed qa test Jul 30, 2018
repo Ensure schema version file bumps when listing index file is missing Aug 15, 2018
schema BUGFIX: Fix Errorf call in schema/manager.go. Jul 25, 2018
storage Update mobile package Jul 3, 2018
test TESTS: Add API tests for cases/sales/purchases GETs. Jul 19, 2018
vendor Update wallet dependencies Aug 14, 2018
.dockerignore Update to Dockerfile to build on go 1.9; dev service in docker-compose Feb 7, 2018
.gitignore Merge remote-tracking branch 'origin/master' into 1004-isolate-db-tests Jul 22, 2018
.travis.yml Make tests run in serial Aug 15, 2018 Update Oct 21, 2016
Dockerfile Update to Dockerfile to build on go 1.9; dev service in docker-compose Feb 7, 2018 Bump to use golang v1.10 Aug 15, 2018
LICENSE Create LICENSE May 1, 2016
Makefile CLEANUP: Remove dummy docker support from Makefile. Jun 19, 2018 Fix broken link in Jan 14, 2018 BUGFIX: Fix build artifacts. Jan 25, 2017 BUGFIX: Fix build artifacts. Jan 25, 2017
docker-compose.yml Dev Docker: Map service ports externally; Allow forked procs in delve May 1, 2018
openbazaard.go IPFS rebase second pass Jun 27, 2018
package.json Bump version number Aug 14, 2018
snapcraft.yaml Update the snap to take the version from git tags Jul 27, 2017 Make tests run in serial Aug 15, 2018


banner OpenBazaar Server Daemon in Go

Build Status Coverage Status Go Report Card

This repository contains the OpenBazaar server daemon which handles the heavy lifting for the OpenBazaar desktop application. The server combines several technologies: A modified IPFS node, which itself combines ideas from Git, BitTorrent, and Kademlia. A lightweight SPV Bitcoin wallet for interacting with the Bitcoin network. And a JSON API which can be used by a user interface to control the node and browse the network. If you are looking for the OpenBazaar user interface code see here.

Table of Contents


A typical install of OpenBazaar contains a bundle of the server daemon and user interface. If this is what you are looking for you can find an installer at If you are looking to run the server daemon by itself or to contribute to developement see below for instructions.

Install Pre-built Packages

The easiest way to run the server is to download a pre-built binary. You can find binaries of our latest release for each operating system here.

Build from Source

To build from source you will need to have Go installed and properly configured. Detailed instructions for installing Go and openbazaar-go on each operating system can be found in the docs package.

Dependency Management

We use Godeps with vendored third-party packages.

IPFS Dependency

We are using a fork of go-ipfs in the daemon. The primary changes include different protocol strings to segregate the OpenBazaar network from the main IPFS network and an increased TTL on certain types of DHT data. You can find the full diff in the readme of the forked repo. The fork is bundled in the vendor package and will be used automatically when you compile and run the server. Note that you will still see import statements instead of despite the package being a fork. This is done to avoid a major refactor of import statements and make rebasing IPFS much more easy.


You can either pull in remote changes as normal or run go get -u


You can run the server with go run openbazaard.go start


  openbazaard [OPTIONS] start [start-OPTIONS]

The start command starts the OpenBazaar-Server

Application Options:
  -v, --version                   Print the version number and exit

Help Options:
  -h, --help                      Show this help message

[start command options]
      -p, --password=             the encryption password if the database is
      -t, --testnet               use the test network
      -r, --regtest               run in regression test mode
      -l, --loglevel=             set the logging level [debug, info, notice,
                                  warning, error, critical]
      -a, --allowip=              only allow API connections from these IPs
      -s, --stun                  use stun on µTP IPv4
      -d, --datadir=              specify the data directory to be used
      -c, --authcookie=           turn on API authentication and use this
                                  specific cookie
      -u, --useragent=            add a custom user-agent field
          --torpassword=          Set the tor control password. This will
                                  override the tor password in the config.
          --tor                   Automatically configure the daemon to run as
                                  a Tor hidden service and use Tor exclusively.
                                  Requires Tor to be running.
          --dualstack             Automatically configure the daemon to run as
                                  a Tor hidden service IN ADDITION to using the
                                  clear internet. Requires Tor to be running.
                                  WARNING: this mode is not private
          --disablewallet         disable the wallet functionality of the node
          --disableexchangerates  disable the exchange rate service to prevent
                                  api queries
          --storage=              set the outgoing message storage option
                                  [self-hosted, dropbox] default=self-hosted


When ready we will put up a full documentation of the OpenBazaar protocol and the JSON API at


Contributions are definitely welcome! Please read the contributing guidelines before starting.