You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Brian Hoffman 2c8da24bc3
Merge pull request #1967 from OpenBazaar/qatest
1 month ago
.travis Update the dll for Windows builds 2 years ago
Godeps Revert multiwallet client continue on error 1 month ago
api Merge branch 'v0.13.6-rc' 3 months ago
cmd Add dates to timestamps for desktop server 3 months ago
core Bump version to v0.13.8 1 month ago
docs Bump version to v0.13.8 1 month ago
ipfs [#1800] Extract ipfs.GetCachedIPNSRecord and ipfs.DeleteCachedIPNSRecord 4 months ago
mobile Add date to the timestamps in Haven logging 3 months ago
net Clarify offline message logging messages 1 month ago
pb [#1923] Add version to profile protobuf 1 month ago
qa QA dockerfile 2 months ago
repo (#1919) Migrate to AddWatchedAddresses (#1920) 2 months ago
schema Merge branch 'master' into resync 6 months ago
storage gofmt project 11 months ago
test [#1571] Update chat endpoints to use repo.APITime 9 months ago
util first pass at separating order payment network message code from eth branch 7 months ago
vendor Revert multiwallet client continue on error 1 month ago
wallet (#1919) Migrate to AddWatchedAddresses (#1920) 2 months ago
.dockerignore [#1292] Use bitcoind 0.16.3; Install from requirements.txt 1 year ago
.gitignore Add multiwallet constructor 1 year ago
.golangci.yml Disable goimports linter 11 months ago
.travis.yml Fix golangci-lint version in travis script 11 months ago [doc] fix slack links 11 months ago
Dockerfile CLEANUP: Tweak Dockerfile a little and add comments to make it clearer. 9 months ago Point Dockfiles at public Docker Hub repo; Add make help 2 months ago Point Dockfiles at public Docker Hub repo; Add make help 2 months ago
LICENSE update year in license 1 year ago
Makefile Update make openbazaard command to not include tag 2 months ago Add a blurb about min Golang version 10 months ago Update project to use golang v1.11 11 months ago BUILD: Make use 1 year ago
docker-compose.yml Dev Docker: Map service ports externally; Allow forked procs in delve 1 year ago
openbazaard.go Fix publish lock in openbazaard.go 7 months ago
package.json Bump version to v0.13.8 1 month ago Add multiwallet constructor 1 year ago


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 wallet for interacting with several cryptocurrency networks. And a JSON API which can be used by a user interface to control the node and browse the network. Find the user interface for the server at

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 development, 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 easier.


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. Ensure you are using at least version 1.10 of Golang, otherwise you might get errors while running.


  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 encrypted
      -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]
                                  (default: debug)
      -f, --nologfiles            save logs on disk
      -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
      -v, --verbose               print openbazaar logs to stdout
          --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]
          --bitcoincash           use a Bitcoin Cash wallet in a dedicated data directory
          --zcash=                use a ZCash wallet in a dedicated data directory. To use this you must
                                  pass in the location of the zcashd binary.


Documentation of the OpenBazaar protocol has not been formalized yet. If you would like to help, please reach out on Slack or via a new issue on GitHub.

openbazaar-go exposes an HTTP API which permits high-level interactions on the network and the internal wallet. Find the HTTP API documentation at


Contributions are definitely welcome! Please read the Contributing Guidelines before starting.