Cryptocurrency GitHub Score

Evaluating the tech team behind the top 10 cryptocurrencies

Federico Ulfo
7 min readDec 30, 2018

These past years I spent too much time studying cryptocurrencies. I was reading white papers, checking GitHub repositories, running trading analysis, aggregating information from different APIs, and attending Programming Blockchain by Jimmy Song.

My attempt to predict the price was most of the time wrong. Sometimes the price was lower than I predicted, more often higher. Trading is full of booby traps. The only way to survive is by having a strategy, with a stop loss, stop winning, and a lot of discipline to avoid falling into FUD/FOMO. Unless you plan to do HODLing for 10+ years, kudos to you!

What determines the price of a cryptocurrency?

Cryptocurrency market caps are correlated mostly by the type. For example, Decentralized Exchanges such as Komodo, BitStamp, Wave, and 0X in 2017 hovered around the same market cap for a while. Similarly did the crypto credit cards: Monaco, TenX, and Centra. Another example is the Smart Contract cryptocurrencies like Ethereum, Stellar, EOS, Cardano, NEO, with a cap very close to each other. Curiously, Doge and Mona also had the same market cap for sometimes, which brought me to the (wrong?) assumption that marketing, branding, and logo, are possibly one of the main reason investors decide the price. After all many investors simply buy what they like, without reading any white paper, checking the code, community, etc.

The truth is nobody really knows how to price a cryptocurrency.

The price discovery is a combination of the following:

  • Anchoring effect once established the price for a red apple, a yellow apple will cost about the same. The same happens to different crypto assets. Though, Bitcoin doesn’t really have anything to be anchored, aside from its own previous ATH and past ATH, which are very important anchoring levels. Cryptocurrencies are also directly correlated to Bitcoin, since most of their liquidity comes from Bitcoin.
  • Speculation, hoping that Bitcoin is following the rainbow chart becoming the Internet/World currency and getting rich fast. Doesn’t set the price, but pushes it higher.
  • Fibonacci and psychological levels (TA), like in the stock market the price tend to follow very clear patterns near a Fibonacci series, sometimes the prices are simply “psychological walls”. Bitcoin has a few very important one: $1,200 was the top of Nov 2013 bubble and almost $20,000 in December 2017.
  • Spoofing trade, washing trade, pump and dump, hacking attempt, 51% attacks, Crypto is out of the reach of the regulators, therefore, almost anything is “legal”. Insider trading is prohibited though hard to prove it.
  • Spoofy deserves its own bullet point. Spoofy is probably behind several price pump and dump.
  • Adoption is what increases the minimum price of a cryptocurrency, although it doesn’t really set a specific price. Also is basically impossible to know exactly how many people are using a cryptocurrency (at least in Bitcoin), because 1 user can have N wallets, and 1 wallet can also have N users, in the case of an exchange.
  • Predictable technical and economic fundamentals, that are intrinsic to Bitcoin and other cryptocurrencies. The Halving, for example, the difficulty for example, while the hashing power is not fully predictable, the growth and decrease are usually linear and predictable.
  • Fundamentals, such as what problem the cryptocurrency is solving, how big is the market for that problem, what features offers. Chris Burniske does a good job explaining how to evaluate the Velocity of Money.
  • Soft and Hard Forks, big changes brought through soft fork can be the spark for a rally, an example is when Segwit got activated, paving the road to solving the Bitcoin scalability problem. Hard fork, can be even more effective in price changing, the sum of the market cap of the 2 forks, is much higher than the initial one.
  • Moon phases and other random stuff, hard to believe, though Bitcoin is somehow synchronized with the phase of the moon. On January 31, 2018, we’ll have the super blood moon, chances are the price will pump or dump.

This past year I also spent several weekends talking about blockchain with Daniel van Flymen. We mostly talked about the tech side, and we noticed that technical problems were correlated to price dropping, e.g. Cryptokitties (https://twitter.com/feulf/status/937526372725067776) or when Ethereum went over 1TB of blockchain size (https://twitter.com/van_flymen/status/999745959885262848).

While bugs and certain bugs are unpredictable, the quality of the tech team is a predictor for the quality of the code. Consequently, we believe is also a better predictor for the success of a cryptocurrency project in the long run.

Introducing Crypto — Git — Score

This is an experiment/attempt to evaluate the quality of a cryptocurrency project by scoring the engineers behind it. To score the engineers we’ll use git-score.com. Git-score generates the score for each contributor by analyzing his/her public metrics, such as the number of commits, PR, followers, etc.

“Hey! That’s bs, what about all the private contributions?! And what about the quality of those contributions?!”

And you’re right! Git-Score serves only to get an indicative quantitative score. So let’s keep that on our mind and let’s run our experiment with the clear expectation that the data is not exact.

This is my git-score

Like any other projects, our first step will be to set gather the requirements and to prepare an execution strategy.

Our goal is to analyze the GitHub score of the top 10 cryptocurrencies by market cap. This means that we’ll need to use coinmarketcap.com, the GitHub APIs, and the git-score APIs.

  1. Bootstrap the project
  2. Collect the data
  3. Analyze the data
  4. Implement the API
  5. Visualize the data

Bootstrap the project

Daniel and I, during a night hackathon, bootstrapped first the project in Python Django, just to get down the idea.

Last year I built a similar project to collect cryptocurrencies prices, in Node, Express, and Firebase. To implement our idea faster, I adapted my old project to the new idea.

Let’s start creating a repository on GitHub. https://github.com/feulf/cryptogitscore.

Collect the Data

List projects

To get started we listed 10 of the top cryptocurrencies and their GitHub repos:

{
"bitcoin": "bitcoin/bitcoin",
"xrp": "ripple/rippled",
"ethereum": "ethereum/go-ethereum",
"bitcoin-cash": "Bitcoin-ABC/bitcoin-abc",
"stellar": "stellar/stellar-core",
"eos": "EOSIO/eos",
"litecoin": "litecoin-project/litecoin",
"cardano": "input-output-hk/cardano-sl/",
"monero": "monero-project/monero"
"tron": "tronprotocol/java-tron"
}

Collect contributors

The next step was to collect the contributors calling the GitHub API. Here’s the package we wrote:

const rp = require("request-promise")
const contributors = (githubProject, page=0) => {

let clientId = process.env.GITHUB_CLIENT_ID
let clientSecret = process.env.GITHUB_CLIENT_SECRET

let options = {
"url": `https://api.github.com/repos/${githubProject}/contributors?per_page=100&page=${page}&client_id=${clientId}&client_secret=${clientSecret}`,
"headers": {
"user-agent": "request"
},
"json": true
}
return rp(options)
}

module.exports = contributors

And here’s the script that uses the package to collect the contributors and store them into Firestore:
https://github.com/feulf/cryptogitscore/blob/master/collect-contributors.js. Notice that we’re batching with promise.all() and db.batch().

Running this code will populate the Firestore database with the list of the contributors.

Keep on mind that GitHub API has 5000 calls limit. This means we’ll have to refactor this code to run through more contributors/projects.

Gather contributors’ score

Our next step is to call git-score.com API to gather the score for each contributor. Here’s the package we wrote:

const rp = require('request-promise')
const gitscore = account => {
var options = {
"url": "http://www.gitscore.com/user/" + account + "/calculate",
"json": true
}
return rp.get(options)
}

module.exports = gitscore

And here’s the library that uses the package to store it on Firestore: https://github.com/feulf/cryptogitscore/blob/master/calculate-contributor-score.js.

Analyze the Data

To make this data useful, we’re running the average of the first 1000 contributors for each project:
https://github.com/feulf/cryptogitscore/blob/master/calculate-project-score.js

This is the most naive analysis we could run. A better analysis may have to consider a combination of the number of commits. Or maybe not?!

Implement the API

To expose the analyzed data, we decided to use Firebase Functions and Firestore: https://github.com/feulf/cryptogitscore-api

And here’s the API:
https://us-central1-git-crypto-score.cloudfunctions.net/api/

Visualize the Data

Because of the time available at our hand, for now, we decided to stop here. We may come back to this later.

Conclusion

Interestingly Litecoin has the highest score with 966, Ethereum is second with 913, and Bitcoin third with 909. Tron has the lowest score with 310. While Git-Score isn’t really a good way to measure the score of an engineer.

Could you use this data to evaluate the long-term estimation of a cryptocurrency? Definitely no! Though this data can help to highlight the outliers. Obviously once highlighted, you want to do your own research more in deep, to make sure the data is actually correct. If anything this was a fun experiment to run.

Crypto Git Score is an open source project under the Apache 2.0 License: https://github.com/feulf/cryptogitscore. Do some good use of it.

Bonus

Here’s an epic quote from Hal Finney that deserve to be mentioned here:

Imagine that Bitcoin is successful…that gives each coin a value of about $10 million (2009)

Disclaimer

This blog post and the open source code in it is not an investment advice. Do always your own research.

--

--

Federico Ulfo

I grow startups and I connect people. I used to play with Lego, now I play with Kubernetes and Bitcoin.