Skip to content
Bitcoin P2P router, in python
Find file
Pull request Compare This branch is 18 commits behind jgarzik:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
bitcoin
.gitignore
BUGS
COPYING
Cache.py
ChainDb.py
Log.py
MemPool.py
README
TODO
dbck.py
mkbootstrap.py
node.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:

	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.