Coder Social home page Coder Social logo

coinworks's Introduction

    

CoinWorks

If you would like to extract chainlets from Bitcoin, please set up and use this simple project: https://github.com/cakcora/BitcoinParser

3. Chainnet (IEEE ICDM 2019)

Using persistent homology based ideas, we offer an elegant, easily extendable and computationally light approach for graph representation learning on Blockchain networks to predict cryptocurrency prices.

We introduce a novel concept of chainlets, or Bitcoin subgraphs, which allows us to evaluate the local topological structure of the Bitcoin graph over time.

Aug 2017 Version 1.1

We offer a holistic view on Blockchain. Starting with a brief history, we give the building blocks of Blockchain, and explain their interactions. As graph mining has become a major part its analysis, we elaborate on graph theoretical aspects of the Blockchain technology.

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See the prerequisites that you need to deploy this project to your environment.

Prerequisites

What things you need to install the software and how to install them

Python 3.5
Tensorflow r1.1

Installing

Please visit the given links to install required software to run CoinWork project.

Python Installation     : https://www.python.org/downloads/
Tensorflow Installation : https://www.tensorflow.org/install/

Anaconda is recommended to be used for installation of both python and tensorflow. Anaconda is an open source distribution of Python and it simplifies package management and deployment. Please visit https://anaconda.org/ for more information.

Authors

  • Nazmiye Ceren ABAY
  • Cuneyt Gurcan AKCORA

Project Structure

Here, our project is divided into two main parts as data files and source codes written in Java and Python.

Processed Data Files

Our processed data spans from 2009 to 2018 in each file:

Raw Data Files

Other than the processed data files, we also have raw input and output edges of transactions. This data is divided into yearly and monthly files. Each year's data is zipped together and contains 12 input edge files and 12 output edge files of transactions that were mined in the blocks of that year/month.

Each line in the input edge file is tab separated with the format:

Unix time of transaction\thash of transaction\thash of first input transaction\tindex of output from first input transaction\thash of second input transaction\tindex of output from second input transaction\t(additional inputs, if exist)\r\n

Each line in the output edge file is tab separated with the format:

Unix time of transaction\thash of transaction\thash of first output address\tamount of first output bitcoins\thash of second output address\tamount of second output bitcoins\t(additional outputs, if exist)\r\n

Consider the Bitcoin graph in the figure above, where transactions and addresses are shown with rectangles and circles, respectively. This graph would be given in two files: inputsYear_Month.txt and outputsYear_Month.txt. Files would include these lines:

-- inputsYear_Month.txt
UnixTimeOft_1	HashOft_1	HashOft_x1	0	HashOft_x2	8
UnixTimeOft_2	HashOft_1	HashOft_x3	1	HashOft_x4	3	HashOft_x5	0
UnixTimeOft_3	HashOft_1	1
UnixTimeOft_4	HashOft_3	2	HashOft_2	0

-- outputsYear_Month.txt
UnixTimeOft_1	HashOft_1	HashOfa_6	10^8	HashOfa_7	0.8^0.8
UnixTimeOft_2	HashOft_2	HashOfa_8	3.8*10^8
UnixTimeOft_3	HashOft_3 HashOfa_9	0.2*10^8	HashOfa_10	0.2*10^8	HashOfa_11	0.3*10^8
UnixTimeOft_4	HashOft_4 HashOfa_12	3.7*10^8	HashOfa_13	0.3*10^8

Please send your data related questions to cuneyt.akcora AT utdallas DOT edu.

Please cite one of the following works when using this data:

@inproceedings{abay2018,
  title={ChainNet: Learning on Blockchain Graphs with Topological Features},
  author={Abay, Nazmiye Ceren and Akcora, Cuneyt Gurcan and Gel, Yulia R. and Islambekov, Umar D. and Kantarcioglu, Murat and Thuraisingham, Bhavani},
  booktitle={under submission},
  pages={1-9},
  year={2018},
  organization={ACM}
}
@inproceedings{akcora2018pakdd,
  title={Forecasting Bitcoin Price with Graph Chainlets},
  author={Akcora, Cuneyt Gurcan and Dey, Asim Kumar and Gel, Yulia R. and Kantarcioglu, Murat},
  booktitle={Pacific-Asia conference on knowledge discovery and data mining},
  pages={1-12},
  year={2018},
  organization={Springer}
}

Source Files

  • src
    • main
      • python
        • bitcoin_prediction
          • bitcoin_tests
            • In this folder, we put bitcoin test files to predict log return of bitcoin with recursive neural network (RNN) and random forest algorithms.
          • sliding
            • slided_regression.py
              • This class can be used to predict bitcoin both for betti numbers and chainlets. It takes 3 file parameters to run prediction model bitcoin price file, chainlet file and result file.
            • filtration_regression.py
              • For given threshold values, chainlets are filtrated and fed into the prediction model. For each threshold, one model is constructed and output its prediction.
            • boosting_of_filtrated_regression.py
              • This class takes the previously constructed models of filtration_regression.py and re-build the stronger deep learning model with them.

Deep Learning Network Structure

In this project, for both slided and filtration techniques, regression of deep learning is used for constructing the model for prediction of Bitcoin system. While constructing deep learning, we have used 4 hidden layer with hyperbolic tangent activation function. To get better convergence of gradient descent, Xavier weight initialization technique is applied. For avoiding the overfitting of training bitcoin sets, dropout technique is used as a regularization technique and its value is 0.2 for each hidden layer.

coinworks's People

Contributors

cakcora avatar cuneytgurcan avatar ncabay avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

coinworks's Issues

readme

I am trying to reproduce results of your paper on Bitcoin Risk Modeling with Blockchain Graphs, however I'm experiencing some trouble with understanding of some of the files' purposes. Could you update readme to reflect current file structure and required arguments please or contact me to discuss it? I would be very grateful.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.