Download and sourceforge project page.
Kenosis nodes form a Kademlia-style network with the following properties:
Too many peer-to-peer programs and libraries have initially seemed to work but floundered under increasing complexity. One of our goals for kenosis was to make reliable software that would Just Work.
Kenosis does one thing and does it well. It is our hope that others will use Kenosis as a foundation for new and exciting peer-to-peer applications.
Kenosis must work on a wide range of platforms because we want it to provide a solid basis for many p2p applications.
As a demonstration of Kenosis we a modified version of BitTorrent that uses Kenosis to find the tracker for a torrent file.
The source code for this is in the regular download. More details can be found in the Kenosis-BitTorrent readme.
Version 1.0 of Kenosis:
We hope to address these and other issues in the future. For example:
More information can be found on our sourceforge project page. If you're interested in opportunities to get involved with the development of Kenosis, please join the kenosis-discuss mailing list.
If you are interested in trying Kenosis out for yourself, try this simple experiment:
>>> import kenosis >>> n = kenosis.Node(bootstrapNetAddress=None) >>> n.port() 5005 >>> n2 = kenosis.Node(bootstrapNetAddress=None) >>> n2.bootstrap("localhost:%s" % n.port()) >>> n2.port() 5006 >>> n2.rpc(nodeAddress=n.nodeAddress()).kenosis.ping() address.NodeAddress(numericAddress=0x11fe53239e10f6c7b21d9a9aaf37a2f37cc34abe) >>> class Handler: ... def returnInt(self, arg): ... return int(arg) ... >>> n.registerNamedHandler(name="test", handler=Handler()) >>> n2.rpc(nodeAddress=n.nodeAddress()).test.returnInt(42) 42 >>> n2.rpc(nodeAddress=n.nodeAddress()).test.returnInt(1234321) 1234321 >>> n.rpc(nodeAddress=n2.nodeAddress()).kenosis.ping() address.NodeAddress(numericAddress=0x8b6eb0433be6a2751493ef39ac5a7236182e20b3)
For more examples of usage look at kenosis/test.py