ICPR Preliminary Token Distribution

icpReboot
6 min readSep 8, 2021

--

Outline

In this post, we want to describe the analysis and rationale behind the initial token distribution of the ICP Reboot (ICPR) token for Dfinity’s original seed investors and early contributors.

The Motivation

Our primary directive is to directly address the failings of Dfinity’s “Genesis Event” initial token distribution, which includes its lack of transparency and blatant treatment of early contributors and seed investors while allowing insiders immediate access to their tokens and dumping them on retail.

We understand that many seed investors and early contributors were discriminated against and subjected to insufficient technical assistance while forced to use irresponsible and non-standard key management practices.

We intend for the ICPR initial token distribution to be as fair and as transparent as possible.

Background

According to the report by Arkham Intelligence, the Dfinity treasury and insiders deposited and sold roughly $3.6B worth of ICP to exchanges, thus causing the token to depreciate almost 95% in value:

  • The Treasury has directly deposited 8.3 million ICP, worth ~$2 billion at time of deposit, 94% of which was on two days: listing day of May 10th (3.1mm) and June 15 (4.7mm).
  • The Treasury sent 34.1 million ICP to 34 suspected insider addresses. These addresses have deposited 10.7 million ICP, also worth ~$1.6 billion at time of deposit, intermittently over the weeks since listing.
  • Deposits from the Treasury plus suspected insiders account for approximately 75% of total ICP deposits to exchanges.​

A similar observation was reported by Uphold, Crypto Briefing, and The Moguldom Nation

In our analysis below, it was very challenging to map the “Genesis Event” initial token distribution correctly. Unlike most prominent projects in space and very atypically, Dfinity hasn’t been transparent nor provided a breakdown of its initial token distribution. To add insult to injury, Dfinity imposed various vesting plans (2–7 years) on unexpecting seed investors and early contributors.

Token flows from Arkham Intelligence’s report

Analysis

As a first step (which is usually very common in the space), we’ve wanted to analyze Dfinity’s on-chain data by running a full Dfinity node. Still, unfortunately, this task became virtually impossible. Surprisingly, Dfinity doesn’t currently provide access to the code repository required to run a node but instead directs you to a corporate-style form request:

Moreover, it seems that even after being approved and receiving permission to operate a node, it wouldn’t be possible to run a node using your own hardware, but only via one of Dfinity’s partners:

From https://support.internetcomputer.org/hc/en-us/articles/360060742712-Can-I-use-my-own-equipment-to-host-nodes-:

Afterwards, we analyzed the initial token distribution via the official Dfinity Block Explorer. Still, unfortunately, it introduces another challenge: unlike other prominent chains, the initial distribution wasn’t performed via the genesis block but split into many cross-blocks separate mint transactions.

For example, the first mint transaction 9e32c54975adf84a1d98f19df41bbc34a752a899c32cc9c0000200b2c4308f85 was indeed in the genesis block:

Yet the second mint transactions 1ddc304e0fe45c967cff6b26b1ca2d8a7ee40c2c39f4be0ed4f5cdd5e39ae890 was mined in the next block and so on:

Moreover, it’s unclear when the genesis minting ends since it’s virtually impossible to differentiate between genesis and any other mint. For example, even at the time of writing, we can observe minting transactions in blocks 340,281 and 340,283:

Realizing that mint transaction analysis will also produce inconclusive results, we’ve decided to analyze Dfinity’s official donations https://etherscan.io/address/0x1Be116204bb55CB61c821a1C7866fA6f94b561a5 Ethereum smart contract. We cross-check it with the base data from https://ic.rocks and directly querying genesis accounts pending balances using the Dfinity command-line execution environment (DFX) against a public ICP node.

We have collected genesis account info from these three sources:

  • Sample data from ic.rocks:
  • Sample data using DFX:
  • Sample data using FDC:

We can immediately notice a few discrepancies, making the FDC contract problematic:

  1. According to the FDC, there are 504 distinct donors (212 seeders and 292 early contributors, with no intersecting addresses), while there are only 375 genesis accounts, according to the base data.
  2. Querying the extra 129 accounts allocations via DFX shows that no ICP tokens were allocated to them, which raises the question of who these accounts are and why they were excluded from the Genesis Event. Perhaps these accounts represent Dfinity insiders or another discriminated group?
  3. We have compared the allocations reported by the FDC contract with the base data, and although the data from ic.rocks and DFX matched one to one, there are various discrepancies with the data from FDC.

For example, you can see the differences between the matched base data (marked in green) and FDC data (marked in red):

According to the code of the FDC contract, the discrepancies should be the result of a share normalization of restricted tokens (token shares for Dfinity itself and its early contributors). Yet, we can see that the finalization didn’t ever happen:

The restricted accounts share uses the burnMultDen and the burnMultNom state variables to calculate the de-facto “unrestricted” token share:

These state variables are being assigned in the closeAssignmentsIfOpen function:

Which is called by the finalize function, which also finalizes donations to the contract:

Yet, it appears that Dfinity has never finalized the contract, thus preventing the normalization from taking effect:

In addition to that, it seems that the ratio between the incorrect values and the base data isn’t fixed, which means that even if the normalization would’ve taken place — it would still produce incorrect values.

The good news is that using this method confirmed many of the other genesis accounts whose base data were compatible with the FDC contract.

Conclusion

Since it wasn’t possible to effectively (and efficiently) spin a full node and we had to rely on external data (which we were able to validate via three distinct methods), we realize that the best approach would be to use our verified 375 genesis accounts data as the baseline for the ICPR initial distribution.

We are aware of the many discrepancies and inaccuracies in the Genesis Event, as well as that many of the seed investors and early contributors were discriminated against, didn’t receive sufficient technical support from Dfinity, and were also subjected to the risk of losing their keys due to the irresponsible and non-standard mandatory requirements to use Dfinity’s local key management CLI tools instead of the industry-standard cold wallet solutions and hardware wallets.

As a result, we will publish the ICPR initial distribution data for the 375 genesis accounts. We will open it for comments, claims, and objections to ensure that no original contributor is discriminated against. In addition, with the help of our internal compliance team, we are creating a fair and transparent token distribution process to assist accounts who have lost access to their keys.

In the following weeks, we will publish more information on the process of genesis accounts contacting us and processing their claims. Stay tuned!

--

--