All Projects → jgarzik → Pynode

jgarzik / Pynode

Licence: mit
Bitcoin P2P router, in python

Programming Languages

python
139335 projects - #7 most used programming language

This python script (node.py) is a client node for the bitcoin network. It is based on ArtForz' public domain half-a-node at http://pastebin.com/ZSM7iHZw

In its current form, node.py does nothing more than listen for new transactions and blocks, perform verification checks on the data, and store them in a database. Script verification is a separate, manual process (testscript.py). It is therefore not safe for general use. See BUGS and TODO files. A simple HTTP server for JSON-RPC API calls is also included. Send the "help" RPC call for a list of supported commands.

It might be useful as the base for a P2P monitoring node, or similar tasks.

Dependencies:

python-bitcoinlib, https://github.com/jgarzik/python-bitcoinlib
GEvent, http://www.gevent.org/
python-leveldb, http://code.google.com/p/py-leveldb/

Command line usage:

./node.py my-config-file

The configuration file is a key=value text file, with the following settings:

# hostname or IP address of network node to connect to
host=127.0.0.1

# port of network node to connect to (default: 8333)
port=8333

# JSON-RPC server user, password.  Uses HTTP Basic authentication.
rpcuser=XXXX
rpcpass=YYYY

# JSON-RPC server incoming TCP port (default: 9332)
rpcport=9332

# database directory
db=/tmp/chaindb

# log filename, or '-' or no-value for standard output
log=/tmp/chaindb/node.log

# if present, import these blocks into the block database
loadblock=/tmp/blk0001.dat

# if present, disable all signature checking in new blocks
# (disabled by default)
nosig=1

# if present, force signature checking on all blocks,
# even those normally skipped because they were prior
# to a checkpoint.
# (disabled by default)
forcesig=1

node.py connects to a single remote node, and does not accept incoming P2P connections. If the connection is lost, node.py exits.

See the "mini-node" branch for a single-file, non-chaindb node.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].