Bitcoin/PostgreSQL bridge
Python Shell
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
coinbridge
test
.gitignore
.travis.yml
LICENSE.txt
MANIFEST.in
README.rst
bitcoin.conf
init.sh
requirements.txt
setup.py

README.rst

Bitcoin/PostgreSQL bridge

https://travis-ci.org/tinybike/coinbridge.svg?branch=master

Bridge between Bitcoin and PostgreSQL.

Coinbridge connects the Bitcoin daemon (bitcoind) and a local PostgreSQL database. It listens for transaction confirmations and automatically updates a transactions table in your database.

Includes a "payment" method which uses free, instant Bitcoin transfers between accounts in the same wallet, and standard Bitcoin transactions otherwise. Also includes a comprehensive wrapper for Bitcoin's JSON-RPC functionality.

Coinbridge has been tested with Bitcoin, but it should work for any altcoin that shares Bitcoin's RPC command suite (i.e., most of them). To add a different coin, enter the new coin's information into coinbridge/data/coins.json. For wallet listener functionality, you also need to create a coinbridge/newcoin-listen script with newcoin-cli (or newcoind) in place of bitcoin-cli, and point the new coin's walletnotify to this script in newcoin's configuration file.

Bitcoin: 1CjevDn76Yg5TsEZLkbKy2A6g5hYPE3gAG

Installation

$ pip install coinbridge

Depending on your system, compiling Bitcoin from scratch can be a headache. On Ubuntu, you can simply install bitcoind from the bitcoin PPA:

$ apt-get install python-software-properties
$ add-apt-repository ppa:bitcoin/bitcoin
$ apt-get update
$ apt-get install bitcoind

A convenience script, init.sh, is included that will do some initial configuration for you. I have only tested this on Ubuntu 12.04/14.04 so far. The below steps are only necessary if init.sh does not work for you:

  1. Set up a pgpass file so transaction confirmations can be autologged to Postgres. Replace HOST, PORT, USER, DATABASE, PASSWORD with your own settings. Note: coinbridge/db.py expects the username to be coinbridge. If you use a different username, you must also create a coinbridge/data/pg.cfg file (containing the HOST:PORT:USER:DATABASE:PASSWORD string) so that Python can connect to Postgres.

    $ touch ~/.pgpass
    $ echo HOST:PORT:USER:DATABASE:PASSWORD >> ~/.pgpass
    $ chmod 600 ~/.pgpass
    
  2. Set environment variables:

    $ echo "export BRIDGE=/path/to/coinbridge" >> ~/.profile
    $ echo "export PGPASSFILE=$HOME/.pgpass" >> ~/.profile
    $ source ~/.profile
    
  3. Finally, you need to point Bitcoin's walletnotify at coinbridge/bitcoin-listen:

    $ apt-get install jq
    $ echo "walletnotify=$BRIDGE/coinbridge/bitcoin-listen %s" >> ~/.bitcoin/bitcoin.conf
    

Usage

from coinbridge import Bridge

bridge = Bridge()
bridge.payment(from_account, to_account, amount)