diff --git a/README.md b/README.md index d675d73a..f76c7afe 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,25 @@ -Bitcoin integration/staging tree -================================ +twister - p2p microblogging +=========================== -http://www.bitcoin.org +http://www.twister.net.co -Copyright (c) 2009-2013 Bitcoin Developers +Bitcoin Copyright (c) 2009-2013 Bitcoin Developers +libtorrent Copyright (c) 2003 - 2007, Arvid Norberg +twister Copyright (c) 2013 Miguel Freitas -What is Bitcoin? +What is twister? ---------------- -Bitcoin is an experimental new digital currency that enables instant payments to -anyone, anywhere in the world. Bitcoin uses peer-to-peer technology to operate -with no central authority: managing transactions and issuing money are carried -out collectively by the network. Bitcoin is also the name of the open source -software which enables the use of this currency. +twister is an experimental peer-to-peer microblogging software. -For more information, as well as an immediately useable, binary version of -the Bitcoin client sofware, see http://www.bitcoin.org. +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 ------- @@ -23,60 +27,61 @@ 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 ------------------- -Developers work in their own trees, then submit pull requests when they think -their feature or bug fix is ready. +There is no development process defined yet. -If it is a simple/trivial/non-controversial change, then one of the Bitcoin -development team members simply pulls it. +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). -If it is a *more complicated or potentially controversial* change, then the patch -submitter will be asked to start a discussion (if they haven't already) on the -[mailing list](http://sourceforge.net/mailarchive/forum.php?forum_name=bitcoin-development). +Testing +------- -The patch will be accepted if there is broad consensus that it is a good thing. -Developers should expect to rework and resubmit patches if the code doesn't -match the project's coding conventions (see `doc/coding.txt`) or are -controversial. +Some security checks are disabled (temporarily) allowing multiple clients per IP. +Therefore it is possible to run multiple twisterd instances at the same machine: -The `master` branch is regularly built and tested, but is not guaranteed to be -completely stable. [Tags](https://github.com/bitcoin/bitcoin/tags) are created -regularly to indicate new official, stable release versions of Bitcoin. +$ 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 -Testing -------- +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. -Testing and code review is the bottleneck for development; we get more pull -requests than we can review and test. Please be patient and help out, and -remember this is a security-critical project where any mistake might cost people -lots of money. +Wire protocol +------------- -### Automated Testing +Bitcoin and libtorrent protocol signatures have been changed on purpose to +make twister network incompatible. This avoids the so called "merge bug": -Developers are strongly encouraged to write unit tests for new code, and to -submit new unit tests for old code. +http://blog.notdot.net/2008/6/Nearly-all-DHT-implementations-vulnerable-to-merge-bug -Unit tests for the core code are in `src/test/`. To compile and run them: +- 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" - cd src; make -f makefile.unix test +Quick JSON command examples +--------------------------- -Unit tests for the GUI code are in `src/qt/test/`. To compile and run them: +To create a new user key and send it to the network: + ./twisterd createwalletuser somebody + ./twisterd sendnewusertransaction somebody - qmake BITCOIN_QT_TEST=1 -o Makefile.test bitcoin-qt.pro - make -f Makefile.test - ./bitcoin-qt_test +To create the first (1) public post: + ./twisterd newpostmsg somebody 1 "hello world" -Every pull request is built for both Windows and Linux on a dedicated server, -and unit and sanity tests are automatically run. The binaries produced may be -used for manual QA testing — a link to them will appear in a comment on the -pull request posted by [BitcoinPullTester](https://github.com/BitcoinPullTester). See https://github.com/TheBlueMatt/test-scripts -for the build/test scripts. +To add this user to the following list: + ./twisterd follow somebody '["somebody"]' -### Manual Quality Assurance (QA) Testing +To get the last 5 posts from user we follow: + ./twisterd getposts 5 '[{"username":"somebody"}]' -Large changes should have a test plan, and should be tested by somebody other -than the developer who wrote the code. -See https://github.com/bitcoin/QA/ for how to create a test plan.