Peer To Peer Networks
Great architecture, not so great implementations.
Peer to peer works as a conceptual framework, but all in all, message-oriented middleware implementations seem to be more powerful and flexible.
http://en.wikipedia.org/wiki/List_of_P2P_protocols
http://en.wikipedia.org/wiki/Peer-to-peer
Peer-to-peer (P2P) computing or networking is a distributed application architecture that partitions tasks or work loads between peers. Peers are equally privileged, equipotent participants in the application. They are said to form a peer-to-peer network of nodes ...
Unstructured peer-to-peer networks do not impose a particular structure on the overlay network by design, but rather are formed by nodes that randomly form connections to each other. (Gnutella, Gossip, and Kazaa are examples of unstructured P2P protocols) ...
In structured peer-to-peer networks the overlay is organized into a specific topology, and the protocol ensures that any node can efficiently search the network for a file/resource, even if the resource is extremely rare ...
Hybrid models are a combination of peer-to-peer and client-server models. A common hybrid model is to have a central server that helps peers find each other.
Currently, hybrid models have better performance than either pure unstructured networks or pure structured networks because certain functions, such as searching, do require a centralized functionality but benefit from the decentralized aggregation of nodes provided by unstructured networks.
Peer To Peer Platforms
Most of these things flourished 10 years ago and are now released sporadically or barely usable or Windows only or all three ...
http://en.wikipedia.org/wiki/Gnutella
http://en.wikipedia.org/wiki/Gtk-gnutella
http://gtk-gnutella.sourceforge.net/en/?page=download
Darwin (Mac OS X) ... Terribly outdated version!
Source tarballs ???
http://en.wikibooks.org/wiki/The_World_of_Peer-to-Peer_%28P2P%29
http://en.wikibooks.org/wiki/The_World_of_Peer-to-Peer_%28P2P%29/Networks_and_Protocols/Gnutella
http://en.wikipedia.org/wiki/GNUnet
GNUnet is a free software framework for decentralized, peer-to-peer networking and an official GNU package. The framework offers link encryption, peer discovery, resource allocation, communication over many transports (such as tcp, udp, http, https, wlan and bluetooth) and various basic peer-to-peer algorithms for routing, multicast and network size estimation.
GNUnet's basic network topology is that of a mesh network. GNUnet includes a distributed hash table (DHT) which is a randomized variant of Kademlia that can still efficiently route in small-world networks. GNUnet offers a "F2F topology" option for restricting connections to only the users' trusted friends.
The users' friends' own friends (and so on) can then indirectly exchange files with the users' computer, never using its IP address directly.
http://freecode.com/projects/gnunet
Recent comments ... 29 Feb 2012 12:30 yanestra ... After so many years, GNUnet is still far from usable.
Freenet is free software which lets you anonymously share files, browse and publish "freesites" (web sites accessible only through Freenet) and chat on forums, without fear of censorship. Freenet is decentralised to make it less vulnerable to attack, and if used in "darknet" mode, where users only connect to their friends, is very difficult to detect.
For best performance, Freenet will run continually. It should not interfere with your computer usage, as it requires around 200MB of RAM and 10% of one CPU core, plus some disk access
Bitcoin and Blockchain
Not directly useful, but interesting nonetheless.
http://en.wikipedia.org/wiki/Blockchain.info
Mastering Bitcoin - http://chimera.labs.oreilly.com/books/1234000001802/index.html
Chapter 2. How Bitcoin Works - http://chimera.labs.oreilly.com/books/1234000001802/ch02.html
http://www.xe.com/currency/xbt-bitcoin?
Blockchain.info provides official API libraries for a number of languages
https://blockchain.info/api/blockchain_api
https://github.com/blockchain
Python Client - https://github.com/blockchain/api-v1-client-python
The module consists of the following sub-modules:
-
blockexplorer
(api/blockchain_api) -
createwallet
(api/create_wallet) -
exchangerates
(api/exchange_rates_api) -
pushtx
(pushtx) -
receive
(api/api_receive) -
statistics
(api/charts_api) -
wallet
(api/blockchain_wallet_api)
The main module is called blockchain
NodeJS Client - https://github.com/blockchain/api-client-v1-node
https://en.bitcoin.it/wiki/Block_chain
A block chain is a transaction database shared by all nodes participating in a system based on the Bitcoin protocol. A full copy of a currency's block chain contains every transaction ever executed in the currency. With this information, one can find out how much value belonged to each address at any point in history.
Every block contains a hash of the previous block. This has the effect of creating a chain of blocks from the genesis block to the current block. Each block is guaranteed to come after the previous block chronologically because the previous block's hash would otherwise not be known.
Each block is also computationally impractical to modify once it has been in the chain for a while because every block after it would also have to be regenerated. These properties are what make double-spending of bitcoins very difficult. The block chain is the main innovation of Bitcoin ...
https://en.bitcoin.it/wiki/Block_chain_download
https://en.bitcoin.it/wiki/Satoshi_Client_Block_Exchange
https://en.bitcoin.it/wiki/Alternative_chain
An alternative chain is a system using the block chain algorithm to achieve distributed consensus on a particular topic. Alternative chains may share miners with a parent network such as Bitcoin's; this is called merged mining.
Alternative chains have been suggested as ways to implement DNS, P2P currency exchanges, SSL certificate authorities, timestamping, file storage and voting systems .
Bitcoin uses the block chain algorithm to achieve distributed consensus on who owns what coins. Block chains were invented specifically for the Bitcoin project but they can be applied anywhere a distributed consensus needs to be established in the presence of malicious or untrustworthy actors.
Virtuoso Universal Server - Not !
http://virtuoso.openlinksw.com/
The unique hybrid server architecture of Virtuoso enables it to offer traditionally distinct server functionality within a single product offering that covers the following areas:
SQL Relational Tables Data Management (SQL RDBMS)
RDF Relational Property Graphs Data Management (RDF Triple or Quad Store)
Content Management (HTML, TEXT, TURTLE, RDF/XML, JSON, JSON-LD, XML)
Web and other Document File Services (Web Document or File Server)
Five-Star Linked Open Data Deployment(RDF-based Linked Data Server)
Web Application Server (SOAP or RESTful interation modes).
Commercial and open versions
https://github.com/openlink/virtuoso-opensource
Extensive build process ... after all the BS, server has restrictive licence.