|
|
|
@ -1,21 +1,25 @@
@@ -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
@@ -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 <external-ip>: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. |
|
|
|
|