EDIT: Thanks to Nate Welch, I think I may have found the error in my calculation. I am assigning contributions to windows based on their timestamp, but in reality one can contribute today to any future window, so allocating by timestamp shouldn’t work.

I’ve often wondered whether banking tends to select people with masochistic tendencies. I’ve just spent far longer than I care to admit manually checking EOS crowdsale transactions.

Why on Earth would I do that? Aside from masochism?

Misguided dreams basically. Of gaining a data edge when participating in the EOS crowdsale. I’m building a tool for visualising momentum and whale participation.

In any event, it doesn’t matter, once I find a discrepancy, I have trouble letting go. And a discrepancy I have found.

TLDR: I cannot get my EOS window totals to match those on eos.io/distribution. At the bottom of this post is a link to a spreadsheet with the manual checks I made which I think mean either Etherscan (my data source) is wrong, or the EOS contract is wrong. I would greatly appreciate any help in figuring this out!

The Discrepancy

As I was building my retire-young-money-making-tool, I noticed that my EOS window ETH contribution totals did not match those on the eos.io site.

For window 11, I get 15,205.10 ETH vs 15,239.86 ETH per the official site For window 12, I get 17,189.07 ETH vs 17,203.50 ETH per the official site

Sure it’s not a big difference now, but unless I know why there is a difference, I can’t assume that in future periods the difference won’t blow out to something significant.

Anyway, that’s how I justified the need to roll up my sleeves and perform some tests.

To be clear, normally in these situations I assume I screwed something up.

Test 1: Manually check transactions at boundary windows

First, I thought maybe I was screwing up the boundaries between windows, e.g. counting a transaction as belonging to period 13 when it should be in 12.

But, that turned out not to be the case, my data is squeaky clean at the boundaries.

For example,

0xd3e7d02f7f8a3aabcab0f5c872b262017b260405eacd5c729b37d9e29d8371da was the lucky tx that just sneaked into the window 11 close in my data.

This is exactly the same as in etherscan.

The poor bastard in the next tx (0x256606b92a08c880977a45f99b790d07b5add1a343083b99f3a1b9a2630b3fc4) sent in ETH and didn’t receive EOS until the following day (I have cold sweats thinking about this happening to me someday).

So, conclusion, no boundary issues in my data.

Test 2: Compare my data source to a web scrape

Second, I thought maybe my data was missing transactions, or was somehow screwy relative to the source of truth.

Admittedly, I have not checked my data directly against the EOS contract. I don’t even know how to do that.

Instead, I took the data I was working with, which I sourced from the etherscan.io api, and compared it to the results of a separate webscrape I did on the etherscan.io site.

I was expecting to find missing transactions in my data . . . but nope!

Every nano-decimal of ETH that I had in my data matched the ETH from the webscrape.

Gah!

Possible Reasons for the Discrepancy

A. Something that I haven’t thought of. Any feedback greatly appreciated!

B. Etherscan data is wrong.

C. The EOS official counts are wrong.

The Real Test: Check a transaction list that adds up to the official EOS window contribution amounts

This is where I fall short on Ethereum knowledge and technical skills.

As an ex-banker though what I want to do is get a list of all the transactions that add up to the official contribution tallies for each window.

That way I can compare, for instance, the transactions that add up to the official 15,239.86 ETH for window 11, with the transactions in my calculation for window 11.

If anyone knows how to do this, please let me know . . .thanks!!

The workings

For any insomniac masochists out there, here are my manual checks along with instructions on how to reproduce: https://dl.dropboxusercontent.com/u/56708711/eosCrowdsaleManualCheck.xlsx