Community driven twister-core
Go to file
2013-10-10 19:30:07 -03:00
contrib Add wtogami to gitian download scripts. 2013-07-07 03:25:22 -10:00
doc Remove readme-qt.rst and update documentation for readme-qt.md 2013-07-10 16:01:57 +08:00
libtorrent remove "unfinished" entry of resume file. it makes no sense when pieces per block = 1 2013-10-10 19:30:07 -03:00
share Added NSHighResolutionCapable flag to Info.plist for better font rendering on Retina displays. 2013-05-31 15:39:28 +02:00
src printf typo 2013-10-10 14:03:41 -03:00
.gitattributes Build identification strings 2012-04-10 18:16:53 +02:00
.gitignore Add Bitcoin-Qt.app to .gitignore 2013-04-26 15:38:28 +08:00
COPYING Bump version numbers for 0.8 release 2013-01-30 14:19:09 -05:00
INSTALL make instructions 2013-10-08 18:39:07 -03:00
README.md better error checking and variables names in user_data save/load 2013-10-10 14:02:37 -03:00
twister-qt.pro - begin refactoring twister_utils.h 2013-09-28 17:17:14 -03:00
twister-test.py create structure per local user to keep m_following and directmsgs 2013-10-08 15:39:56 -03:00

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 <external-ip>: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"}]'