twister - p2p microblogging =========================== http://www.twister.net.co Bitcoin Copyright (c) 2009-2013 Bitcoin Developers libtorrent Copyright (c) 2003 - 2007, Arvid Norberg twister Copyright (c) 2013 Miguel Freitas What is twister? ---------------- twister is an experimental peer-to-peer microblogging software. User registration and authentication is provided by a bitcoin-like network, so it is completely distributed (does not depend on any central authority). Post distribution uses kademlia DHT network and bittorrent-like swarms, both are provided by libtorrent. Both Bitcoin and libtorrent versions included here are highly patched and do not interoperate with existing networks (on purpose). License ------- Bitcoin is released under the terms of the MIT license. See `COPYING` for more information or see http://opensource.org/licenses/MIT. libtorrent is released under the BSD-license. twister specific code is released under the MIT license or BSD, you choose. (it shouldn't matter anyway, except for the "non-endorsement clause"). Development process ------------------- There is no development process defined yet. Developers of either bitcoin or libtorrent are welcomed and will be granted immediate write-access to the repository (a small retribution for bastardizing their codebases). Testing ------- Some security checks are disabled (temporarily) allowing multiple clients per IP. Therefore it is possible to run multiple twisterd instances at the same machine: $ twisterd -datadir=/tmp/twister1 -port=30001 -daemon -rpcuser=user -rpcpassword=pwd -rpcallowip=127.0.0.1 -rpcport=40001 $ twisterd -datadir=/tmp/twister2 -port=30002 -daemon -rpcuser=user -rpcpassword=pwd -rpcallowip=127.0.0.1 -rpcport=40002 $ twisterd -rpcuser=user -rpcpassword=pwd -rpcallowip=127.0.0.1 -rpcport=40001 addnode :30002 onetry Note: some features (like block generation and dht put/get) do now work unless there are at least two known nodes, like these two instances. Wire protocol ------------- Bitcoin and libtorrent protocol signatures have been changed on purpose to make twister network incompatible. This avoids the so called "merge bug": http://blog.notdot.net/2008/6/Nearly-all-DHT-implementations-vulnerable-to-merge-bug - Bitcoin signature changed from "f9 be b4 d9" to "f0 da bb d2". - Bitcoin port changed from 8333 to 28333. - Torrent signature changed from "BitTorrent protocol" to "twister protocollll". - Torrent/DHT query changed from "y" to "z" - Torrent/DHT answer changed from "a" to "x" Quick JSON command examples --------------------------- To create a new user key and send it to the network: ./twisterd createwalletuser somebody ./twisterd sendnewusertransaction somebody To create the first (1) public post: ./twisterd newpostmsg somebody 1 "hello world" To add this user to the following list: ./twisterd follow somebody '["somebody"]' To get the last 5 posts from user we follow: ./twisterd getposts 5 '[{"username":"somebody"}]'