Skip to content
Bitcoin P2P router, in python
Python
Find file
Pull request Compare This branch is 1 commit behind jgarzik:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
.gitignore
BUGS
COPYING
Cache.py
ChainDb.py
Log.py
MemPool.py
README
TODO
dbck.py
mkbootstrap.py
node.py
q_avg_size.py
rpc.py
testscript.py

README

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.

Something went wrong with that request. Please try again.