Skip to content
OSX app for Bitmarkets decentralized marketplace
Objective-C Shell
Branch: master
Clone or download
Latest commit 3001dd9 Apr 12, 2016
Type Name Latest commit message Commit time
Failed to load latest commit information.
BitMarkets adding javaosx.dmg Nov 13, 2015
.gitignore ignore eclipse stuff Nov 14, 2014
LICENSE Update Apr 12, 2016
ToDo.txt updating nodeShouldSelectChildOnAdd & nodeShouldSortChildren Dec 21, 2014 adding branch to submodules Dec 4, 2014


This OSX repo has been deprecated as we are working on a Javascript/Electron implementation of Bitmarkets now. We'll be releasing that repo when it's ready.


Bitmarkets is a protocol and client used to implement a p2p online marketplace client using Bitmessage for communications and Bitcoin for payments.


After cloning the git repo, you'll need to init and pull all the submodules by running and Then you should be able to build and run in Xcode.

To verify/audit the build you'll need to download and compile some of the statically built executables (e.g. python and tor in BitmessageKit) seperately.

#security notes

Bitmarkets talks to the network in three ways:

  • BitcoinJ talks to other Bitcoin nodes via Tor
  • Bitmessage talks to other Bitmessage nodes via Tor
  • HTTP requests to are used get the current Bitcoin exchange rate.

Client side files are not currently encrypted. We recommend at least using FileVault.

#dev path high priority

  • GNUstep port to Linux and Windows
  • ability to choose between bid addresses
  • auto-updates
  • app store release
  • automated tests
  • encrypt all local data files and add password login
  • deterministic builds (see
  • use tor for bitcoin price updates

#dev path low priority

  • UI for accepting multiple sales on a single post?
  • support stores with namecoin (a namecoin name to bitmessage address entry)
  • option for using separate pubkey for each post
  • ui update, image browsing view option within a category
  • use ntimelock to avoid utx pollution for transactions that fail to reach agreement?


#architecture notes

On starting, the app launches three child processes:

  1. a Tor server, which is used by the Bitmessage and BitcoinJ servers use to route their communications to the Bitmessage network and Bitcoin network (respectively) through the Tor network.

  2. a Bitmessage server, which is used for posting sales to a public Bitmessage channel and for sending messages between buyers and sellers to 1) place and accept bids 2) setup escrow 3) send physical delivery address to seller 4) release escrow via payment or refund

  3. a BitcoinJ server, which is used as the app's' Bitcoin wallet and to construct and trackthe escrow transactions.



  • BitcoinJ now uses Tor
  • POW limited to 1 core
  • image attachments auto resized to fit in 32kb JPEG


  • server launch fix
  • performance improvements -- caching address valid requests -- coallessing node notifications
You can’t perform that action at this time.