Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
thallium205 committed Jan 26, 2013
1 parent 61cc349 commit 5b8ca35
Showing 1 changed file with 26 additions and 13 deletions.
39 changes: 26 additions & 13 deletions README.md
Expand Up @@ -7,15 +7,15 @@ Block Viewer visualizes the Bitcoin block chain by building an ownership network

## Dependencies
### Server:
Java 1.8
Neo4j Enterprise
Gephi Toolkit
OpenVPN (For replication)
* Java
* Neo4j Enterprise
* Gephi Toolkit
* OpenVPN (For replication)

### Client:
Node.js
MySQL
OpenVPN (For replication)
* Node.js
* MySQL
* OpenVPN (For replication)

## Methodology
In order to create what is seen at http://blockviewer.com, Block Viewer performs the following:
Expand All @@ -27,15 +27,17 @@ In order to create what is seen at http://blockviewer.com, Block Viewer performs
4. It finds related transactions between owners and creates a transfers edge between owners, creating the high level owner network:
![Ownership Network](http://i.imgur.com/hfOxS.png)
5. Using each owner's identified addresses, it scrapes several websites (including BitcoinTalk and Bitcoin-OTC) and sees if an owner has been explicitly identified. If so, it creates an "identifies" edge between the address and owner, as seen in the screenshot in step 3.
6. Once the ownership network is constructed, the application exports each owner to a graph, where each component of the graph represents the following:
* **Node Label** - If an owner has been identified to a real world entity such as a bitcointalk.org username, nodes will be tagged with this information under Alias. Otherwise, they will be tagged with a unique owner identifier.
* **Node Size** - The amount of inbound/outbound transactions that have been sent to and from a particular owner will be represented with how large a node is relative to the other nodes in the current graph.
* **Node Color** - Hotter colors will represent recent activity sent from the owner while a cooler color will represent older activity.
* **Edge Color** - Hotter colors will represent recent transactions while cooler colors will represent older ones.
* **Edge Direction** - Following an edge in a clockwise direction will separate inbound vs outbound transactions.
6. Once the ownership network is constructed, the application exports each owner to a graph.
7. It also exports time-division subsections of the network by day, giving users the ability to look at the behavior of the ownership network by time-span instead of by owner.
8. The front end consumes the generated graphs, displaying it to the user. The front-end server uses Neo4j replication to keep the cypher queries fast, and uses the backend's mysql database to fetch the owner graphs

Each component of the graph represents the following:
* **Node Label** - If an owner has been identified to a real world entity such as a bitcointalk.org username, nodes will be tagged with this information under Alias. Otherwise, they will be tagged with a unique owner identifier.
* **Node Size** - The amount of inbound/outbound transactions that have been sent to and from a particular owner will be represented with how large a node is relative to the other nodes in the current graph.
* **Node Color** - Hotter colors will represent recent activity sent from the owner while a cooler color will represent older activity.
* **Edge Color** - Hotter colors will represent recent transactions while cooler colors will represent older ones.
* **Edge Direction** - Following an edge in a clockwise direction will separate inbound vs outbound transactions.
*
## Usage
Several command line arguments are passed into blockviewer. To let it build a full, application ready use as seen at blockviewer.com, the backend server would use:
```java
Expand Down Expand Up @@ -64,3 +66,14 @@ Issues are being tracked in Github.

## Interested? Ideas?
I'm here to answer any and all questions and ideas. If you would like to contribute to this project, please let me know! It's very much in its infancy, there is lots of room for improvement.

## License
MIT License

Author <2012> <John Russell>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

0 comments on commit 5b8ca35

Please sign in to comment.