Launching OpenBazaar Beta 2.0

Note: This blog post is outdated. Read this article for the latest code.

Today we’re launching OpenBazaar beta 2.0, with the following changes:

  • Multiple bug fixes.
  • New feature: “Add Node” by entering Store GUID.
  • New feature: Shutdown from within the web client. (Settings > Advanced)
  • New feature: Web port is now randomized by default.
  • New feature: Automatically opens preferred web browser by default on start.
  • UX-Upgrade: stores on home page are now scrollable.
  • Tests converted to formal unit tests, travis integration.
  • Code reorganization, normalization, cleanup, refactors.
  • Debian binary now lintian error and warning free.
  • Compatibility and stability improvements in configure.sh
  • Search improvements

The instruction installations are the same as 1.0, which you can read here. Please note that we have dropped support of Python 2.6 in this release.

For more information on the current state of the code, read Brian’s State of the Code for September 2014.

We’ve had a huge increase in community participation since our 1.0 launch last month. Since OpenBazaar launched at the end of April this year, we’ve had over 700 issues opened and pull requests (new code) submitted. More than 400 of the 700 have come in the last month alone, from 40 different contributors. We also passed 600 stars on Github. You can check out more stats on our Github page.

Github stats

Read More

OpenBazaar State of the Code; September 2014

Note: This blog post is outdated. Read this article for the latest code.

OpenBazaar was started in early April of this year as a proof of concept. The first few months were a small experiment to see how it could work. A month ago, we released the first beta, and it’s grown to a platform that people are beginning to test and use. You can check out what the network looks like in the video below. Today, beta 2.0 goes live.

For a project of this magnitude to succeed it takes more than just a little elbow grease on the weekends. To build a world-class, production ready piece of software that passes security audits and can claim features like censorship-resistance, resilience, and pseudo-anonymity we must have considerable contributions in terms of people, finances and interest. We’ve been pleasantly surprised at the interest we’ve received, and we’re finally starting to nail down the people aspect as well.

We’ve had several great additions to the team and the impact it has made is jarring. Our codebase is currently going through a cleansing process and being poked and prodded from all angles to ensure we are delivering quality source code. Our development methodology is getting a thorough adjustment to simplify the contribution model, but at the same time provide additional structure and organization to the project. This has been a frustrating but fruitful process as we shift from a one man coding show to a team of professional individuals working together. This shift may slow down the roll-out of new features, but long-term it makes the code much more secure, easier to understand and contribute to, and will prevent growing pains down the road.

As such, we are shifting away from rolling out a full release at the end of the year, and moving instead to release new betas each month until we feel the code is worthy of being called a full release. Because this is a security product, we are slowing down the additions of new features until we have implemented full unit testing and a significant refactoring of the code. Once these have been achieved we will then build new features on the proper foundation.

One other really exciting aspect of the project in my eyes is the future of our user interface. Anyone with development experience can see that our current UI is mostly based off of the Bootstrap style. While great for bootstrapping an application, it doesn’t have its own personality and soon will we start to shed that exterior. We have a very talented set of designers and can’t wait to reveal more about what this will look like. The product will be much more intuitive, which is one of our primary goals as we roll this product out to the larger community.

To sum it all up we are making great progress and you the community are truly stepping up to support us whether through Reddit posts, bug reports, code contributions, donations or any of the other myriad ways to help us out. We feel the love and we are doing our best to return it to you. We do this for the betterment of our fellow global citizens, not to become millionaires. We call on you to help us make OpenBazaar the most exciting project on Internet!

Read More

Guide – How to Setup/Run an OpenBazaar Node on a VPS

Note: This blog post is outdated. Read this article for the latest code.

If you want to test out OpenBazaar, but don’t want to install it (or can’t) on your own computer, you can rent a Virtual Private Server (VPS) instead.

If you already have a VPS, you can run the OpenBazaar installation and then skip to this section.

There are many different VPS services available, and they typically provide the same services. One of the more popular is Digital Ocean. You can sign up and start running a VPS with their service easily, or shop around and choose another service.

You can choose how large you want the space to be. OpenBazaar and it’s dependencies are around 5 GB, so we recommend 7 GBs or more. You don’t need large amounts of RAM or anything fancy. These types of installs are typically inexpensive, $5 or $10 a month.

You can then choose your OS. I recommend Ubuntu, either 12 or 14 should be fine.

Once you’ve rented a VPS, chosen and installed your OS, you should receive instructions on how to ssh into your machine, or some VPS allow you to access the terminal via web interface. Either way, you can now install OpenBazaar by following these instructions.

One tip: it can sometimes take a long time to generate a key pair. If you run this command first, it will speed up that process considerably:

sudo apt-get install haveged

Configuring Your SSH Client

For your desktop or laptop, I recommend using PuTTY. vSSH is the clear winner for iPhone or Android; please purchase the full featured app to support the devs for making an excellent application. The configuration is somewhat similar for PuTTY and vSSH.

Firstly, add in the host IP address of your VPS (remember to save your configuration once your done to save time):

Putty 01

Depending on how you configured your VPS above, you may have a password or private key for authenticating your session. If you have a ppk (like me), select the file’s location on laptop or mobile device (this may be more difficult with iOS as it lacks any sort of accessible file system, so you may be better off going with a password):

Putty 02

Setup your port forwarding so that port 8888 from your VPS is forwarded to your localhost port 8888.

  • Your source port is ‘8888’ and source IP is 127.0.0.1
  • Your destination port is ‘8888’ and destination IP is 127.0.0.1
  • Type = Local

Putty 03

In PuTTY, the end result should look like this:

Putty 04

Running Your Node

Assuming you have configured your VPS and SSH client correctly, all you have to do is start a session with your VPS and navigate to your OpenBazaar folder to run the node as instructed.

The best way to do that is to run your node with UPnP disabled and forcing the node to use port 8888 (doesn’t have to be port 8888, you can select any port number you want… just make sure your SSH client is forwarding the right port to your local host). This can be achieved through the following command:

./openbazaar -q 8888 --disable-open-browser start

Recommended: Your node will go down the moment you disconnect your SSH session. To keep running your OpenBazaar node after your session has ended, enter the following command to run your node (instead of above):

$ nohup ./openbazaar -q 8888 --disable-open-browser start &

Open up your browser and enter the following address to access your OB node:

127.0.0.1:8888

This works surprisingly well on mobile devices using vSSH and is a testament to how powerful OpenBazaar can become in the future!

Read More

OpenBazaar is now MIT licensed

We are happy to announce that we decided to release OpenBazaar under the MIT license.

OpenBazaar had previously been released under AGPL. After lengthy discussions on the matter, the team arrived at the consensus to move forward with relicensing under MIT.

We believe the MIT license will help us better achieve our vision of building a platform of free trade, where anyone can exchange goods and services via the Internet in an uncensored and privacy-respecting manner. We feel it is crucial to publish our code under a very permissive open source license in order to let people freely build software upon our platform as they see fit.

While we’re building the canonical OpenBazaar node software, we believe the power and accessibility of the OpenBazaar network will thrive through the use of a multitude of clients who have access to our secure, pseudonymous, and decentralized system of trade. We expect others to build both commercial and free clients that can access our network, leverage the versatility of the Ricardian contract system, utilize powerful blockchain-based transactions to ensure safety, and support their own systems with our trust and identity service.

By releasing under MIT, we are allowing these things to happen, and we hope this will, in turn, empower the OpenBazaar network to widen.

This is our way of saying we invite you to participate in our platform, whoever you may be. We hope this will encourage developers to start building code which makes use of these virtues and feel free to base it on our own code, so that, together, we can create a world where people can trade with freedom and safety.

Read More

Why proof-of-burn?

We’ve had many people commenting on our proof-of-burn scheme as the basis for our reputation pledge system which forms one of the core pillars of our identity and trust platform for OpenBazaar.

As previously explained on our blog, with proof-of-burn, you’ve invested resources that create an incentive to keep a good reputation and impose a significant cost for abandoning that reputation. This reputation is associated with your pseudonymous identity.

Some of the technical details behind these ideas are detailed on my paper, but read on if you want to see why we chose proof-of-burn instead of other alternatives.

People have expressed concerns about how the reputation pledging scheme alone is able to prevent us from fraud. I wanted to point out that we’re still in beta 1 and that we’re working hard to address all of these concerns: This reputation pledge system will not be used on its own. Our trust and identity system is far from complete, and we aim to combine several powerful tactics to achieve a system in which each node’s reputation is reliable. We’re researching ways to do this and we’re working on several drafts, including a web-of-trust, surety bonds, trust-as-risk, and other alternatives, which can be combined together to form a more powerful scheme and ensure safety on the network. We will publish more information and details on these schemes as they solidify. We understand that trust is a core component of a decentralized market, and we are making it our priority to build a truly free marketplace where people can be trusted even though pseudonymous.

There are two popular schemes that people are suggesting to us to use instead of proof-of-burn: These are proof-to-miner and proof-of-donation. We’ve heard about these suggestions on reddit and elsewhere. While we do like charities and wish we could donate burned money to them, this is simply not feasible, and the reasons are security-related and technical. The same applies to donating to miners, or others schemes in which funds are allocated at random. In fact, some people suggested that nodes acquire reputation by donating to the OpenBazaar development team itself, but again this has the same issues that I’m explaining below (although you can always donate directly :D).

The reason why a donation to a charity or a list of charities does not work (at least naively) is because it introduces a single-point-of-failure to the system. It is important to note here that our threat model is widely more paranoid than that employed by traditional e-shops. We aim to protect buyer and seller privacy and make the market impossible to censor by governments, big corporations, or other powerful agents. In this endeavor, one possible enemy is a malicious government which, through its legal system, issues a, perhaps secret, warrant which aims to shut down or otherwise disrupt the market. This is something we want to guard against, as we’ve seen it used again and again against various pieces of software that contained centralized components. We simply do not wish to rely on law to ensure the privacy and trustworthiness of our system. The way to guard against such attacks is through true decentralization.

When a charity or the OpenBazaar development team is receiving the funds of reputation pledges, this means that the people holding the private keys to the funds have the ability to centrally control the OpenBazaar network and break its security. Assume we decided to use reputation pledges to fund OpenBazaar development (a similar argument exists for charities). In this case, a malicious government who wishes to circumvent our security, must follow these steps:

  1. First, create an OpenBazaar market.
  2. Then, issue a secret warrant against the OpenBazaar developers asking them to forfeit their private keys. In multisig cases, ask for all the private keys.
  3. Subsequently, donate some amount X to the OpenBazaar development team in a “reputation pledging” move.
  4. Use the private keys obtained in step 2 to access the funds “pledged” and move it back to your own address. No money has been spent to do this.
  5. Repeat ad infinitum.

By following these steps, the malicious party can arbitrarily increase the reputation of any node they choose. One easy way to disrupt the market is then to randomly choose nodes on the network and increase their reputation arbitrarily, rendering our reputation system completely useless. In fact, the malicious agent in this case can increase reputation as much as they want instantaneously.

In case a proof-to-miner scheme is used, a malicious party can act to disrupt the market even without the legal power of warrants. The malicious party in this case can be any miner, even with little mining power. In this scheme, the malicious miner follows these steps:

  1. First, create an OpenBazaar market.
  2. Then, create a proof-to-miner transaction with some amount X which is a “reputation pledge” for your identity towards miners, but keep it secret.
  3. Start mining the next block, and include your secret transaction in your attempt.
  4. If you mine successfully, you’ve acquired reputation. No money has been spent to do this, as they are “donated” back to you. In this case, publish your secret transaction to the network.
  5. If you fail to mine this block, double-spend the amount from the secret transaction in a new reputation pledge attempt. The network won’t see the double-spending, as the first transaction remains secret.
  6. Repeat ad infinitum.

Again, a miner would be able to create an arbitrary amount of reputation for any node they choose and disrupt the network. However, in this case, the rate at which a miner can generate reputation is proportional to the money they own multiplied by their mining power.

As you can see, these naïve attempts to avoid proof-of-burn are unsuccessful. However, there have been several alternative suggestions, and we welcome your opinion in designing our schemes. While more complicated ideas are welcome and we are happy to discuss them, one of our priorities is to have a usable yet secure product by the end of the year, and some of these schemes are simply not feasible to implement in such a short timeframe; let’s keep in mind that shorter code means code that is easier to review and audit for security issues, and we want trust-related code to be thoroughly audited for security.

It seems that many people feel uncomfortable burning coins, and I wish to address their concerns in this post. As Vitalik Butern of Ethereum points out:

The destruction of BTC does not translate into a destruction of economic value; the value simply gets redistributed proportionately among everyone else. Hence, the protocols are actually efficient (i.e. not wasteful).

Or, to quote Satoshi Nakamoto:

Lost coins only make everyone else’s coins worth slightly more. Think of it as a donation to everyone.

The best and simplest explanation as to why value is not lost comes from /u/Amanojack:

There seems to be a widespread perception that destroying coins is somehow related to destroying wealth. It’s just a name; nothing is actually being destroyed in terms of real world wealth or purchasing power, but just being moved around. Proof of burn is actually proof of donation (to every other bitcoin holder, in proportion to how many bitcoins each person holds).

Money is just a form of memory: it records, either in a low-tech way (gold/paper) or high-tech way (Bitcoin), who did what for whom in society. It’s a kind of favor-voucher that you give to people who did something for you and you receive when you do something for someone else. Destroying your favor-vouchers of course doesn’t hurt anyone else; in fact it makes everyone else’s worth more. There are now fewer vouchers chasing the same amount of available favors (goods and services) in society, since one person – the voucher burner – was nice enough to throw away his right to collect goods and services from others.

With these schemes, it will be the first time it becomes possible to trust truly pseudonymous individuals without the need of trusting any authority or centralized system. While we’re very excited to address these issues, they are hard problems that require experimentation, thorough security reviews and auditing, as well as theoretical work as their foundation, so all of this requires time to mature. We ask for your patience as we build this system and further explore its possibilities.

We’re looking forward to building a market where sellers and buyers can trade safely, in which trust can be established between transacting parties by the network without sacrificing any anonymity. We want people to feel secure in their transactions, so that they can finally trade online with privacy and freedom.

Read More