Giter VIP home page Giter VIP logo

joinmarket's Introduction

Build Status

Coverage Status

##What is JoinMarket ?

The idea behind JoinMarket is to help create a special kind of bitcoin transaction called a CoinJoin transaction. It's aim is to improve the confidentiality and privacy of bitcoin transactions, as well as improve the capacity of the blockchain therefore reduce costs. The concept has enormous potential, but had not seen much usage despite the multiple projects that implement it. This is probably because the incentive structure was not right.

A CoinJoin transaction requires other people to take part. The right resources (coins) have to be in the right place, at the right time, in the right quantity. This isn't a software or tech problem, its an economic problem. JoinMarket works by creating a new kind of market that would allocate these resources in the best way.

One group of participants (called market makers) will always be available to take part in CoinJoins at any time. Other participants (called market takers) can create a CoinJoin at any time. The takers pay a fee which incentivizes the makers. A form of smart contract is created, meaning the private keys will never be broadcasted outside of your computer, resulting in virtually zero risk of loss (aside from malware or bugs). As a result of free-market forces the fees will eventually be next to nothing.

Widespread use of JoinMarket could improve bitcoin's fungibility as a commodity. The privacy aspect has many applications. For example, some users of bitcoin exchanges have a problem of being front-run. As all bitcoin transactions are public, when a seller sends a large amount of coins to an exchange it will be public knowledge and the price will move downwards accordingly.

##Installation

#####REQUIRED INSTALLATION DEPENDENCIES

  • You will need python 2.7

  • You will need libsodium installed

  • Either get it via apt-get as libsodium-dev or build:

    git clone git://github.com/jedisct1/libsodium.git
    cd libsodium
    git checkout tags/1.0.3
    ./autogen.sh
    ./configure
    make check
    sudo make install
    
  • (optional, recommended): Install the libsecp256k1 Python library:

    pip install secp256k1
    

Note that this requires pip. This library will make use of libsecp256k1 if you already have it installed on your system. Most likely you won't, and it will try to build libsecp256k1 automatically for you. This requires some development packages; please read the installation details here, provided for Debian/Ubuntu and OS X. Please also note that if you can't complete this step, Joinmarket will still run correctly, with two disadvantages: wallet loading is much slower without libsecp256k1, and the ECC crypto code is far less robust and well tested.

  • Matplotlib for displaying the graphs in orderbook-watcher (optional)

###DEBIAN / UBUNTU QUICK INSTALL FOR USERS:

  1. sudo apt-get update -y && sudo apt-get upgrade -y && sudo apt-get install python libsodium-dev -y
  2. pip install secp256k1 (optional but recommended)
  3. sudo apt-get install python-matplotlib -y (optional)
  4. Download JoinMarket 0.1.4 source from here
  5. Extract or unzip and cd joinmarket-0.1.4
  6. Generating your first wallet will populate the configuration file: joinmarket.cfg. Check if the default settings suit your needs.

###INSTALL FOR WINDOWS USERS

###WIKI PAGES FOR DETAILED ARTICLES/GUIDES

###CONTRIBUTING TO JOINMARKET AS A DEVELOPER

Clone the repo, then read the notes here.

###TESTING

Install the development requirements:

pip install -r requirements-dev.txt

Run the tests:

PYTHONPATH=.:$PYTHONPATH py.test

Generating html code coverage reports:

PYTHONPATH=.:$PYTHONPATH py.test --cov-report html --btcroot=/path/to/bitcoin/bin/ --btcconf=/path/to/bitcoin.conf --btcpwd=123456abcdef
open htmlcov/index.html

See more information on testing in the Wiki page


joinmarket's People

Contributors

abitfan avatar adamisz avatar adlai avatar alexcato avatar ande2101 avatar anduck avatar baurusdb avatar blinkystitt avatar chris-belcher avatar cohibaa avatar domob1812 avatar ghtdak avatar haarts avatar jamesphillipturpin avatar lacksfish avatar magiksquirrel avatar mb300sd avatar mikadily avatar overlordq avatar raedah avatar tailsjoin avatar veqtrus avatar wozz avatar yhaenggi avatar

Stargazers

 avatar

Watchers

 avatar  avatar

joinmarket's Issues

discussion

Looks like you have continued to make progress. Is it working well?

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.