Symbol Launch Discussion Topic (3/3) - Snapshot Block Height
Hi all,
This is the third of three discussion topics we are opening this week. The intention of this post is to gather input, discussion, opinions, questions etc about the approach to selecting a snapshot block height, communication and potential timings etc
As we draw closer to Symbol launch, there is a key topic that we need to decide on as a community - the Snapshot Block Height that will be used as a cut off for the allocation of XYM tokens for each XEM token held in an account, on a 1:1 basis.
As per the original plan, published in May, we were expecting this block to occur somewhere in the 03 December 2020 and 16 Dec 2020.
Now that we are further through development and testnet, this looks likely to be toward the end of that range and is now more likely to be between 14th - 17th Dec. The exact timing is still contingent upon a successful Testnet exit and sign off by the Core Devs, Testers, NGL etc. But we are progressing in the right direction at this time.
This leaves us with a conversation on how best to decide the height, what to communicate, how close to make it to launch etc.
The below is an outline of a few options, if there are others we haven’t thought of, please add them below. Some of these will appeal to some people, others to other people. There is unlikely to be a single approach that appeals to everyone but it’s a healthy discussion to have. I have tried to add some pros and cons to each. The principle requirements we are trying to meet with this approach are:
- A clear and transparent approach to select the block height
- Equal knowledge about the height by everyone
- Ability for exchanges and other third parties to plan for the snapshot vs launch height
- To minimise where possible any dumping of XEM in the period between Snapshot and Launch so that both chains have as a smooth conditions as possible post snapshot
For context, the process for launch is expected to work something similarly to the below:
- In the last 2-3 weeks of Testnet, the Core Devs run private nodes and start the public Symbol network and chain with a dummy genesis block
- Smoke testing occurs on the above and multiple network resets occur to test the creation and re-creation of the genesis block
- A final reset occurs as close as practical after the snapshot block height
- Subject to final sanity testing, the chain details are release publicly to allow other nodes to join
At this time, point 3 is likely to take 2-4 hours at a technical level due to extraction of the balances from NIS1 at a given block height, transformation into a genesis block and the reset and synchronisation etc. Early indications from some exchanges are they may freeze trading of XEM (and withdrawals/deposits) over this period while they enable Symbol OpSec processes, listings, markets etc. We are trying to understand the timing preference of the third parties in relation to this as well at this time but do not have a concrete answer thus far.
Option 1: Random selection of a height by code at launch time
In this option the extraction routine from NIS1 would select at random between an upper and lower block height in a range. The balances at that height would be extracted and pushed into the genesis block. The code used to make the random selection can be published openly for critique, review etc. The actual height could be communicated as part of the launch announcement, github commit etc
Pros:
- The actual height is not known ahead of time and is selected from within a known range that can be communicated publicly so everyone has the same knowledge
- Holders are incentivised to hold until the end of the range, or the launch communication for fear of missing out if they move/trade the XEM, likely to minimise any selling between snapshot block and launch information
- No-one except the person(s) running the code for the final reset knows the block height, in practice this is likely to be only the Core Devs and would not include the rest of NGL.
- Reduces the risk of trading on private information due to timescales and workloads involved around the launch routine
Cons:
- The community will not find out the block height until launch, anyone who intends to dump quickly post snapshot will have to compete with anyone else equally and will be reliant on whichever exchange is being used to re-enable deposits, trading etc.
- The above may also cause a surge in transactions on NIS1 if people try to move quickly onto exchanges
- There is a possibility that node holders who are planning to dump will move balances onto exchanges early in preparation and as a result shut down NIS1 Nodes or Supernodes ahead of the launch
- Exchanges can not plan to an exact block height and need to plan around a range instead which may result in freezing operations for longer.
Option 2: Known block selected and communicated ahead of time
In this option a given date would be selected (probably date and time in UTC) and the block at that time would become the snapshot block, or a given block is selected within the likely date range. The block is known and communicated publicly ahead of time, although is unlikely to be able to be known until 1-2 week of Dec once testing results, launch times etc are fully known. The range will be able to tighten from here all the way up to launch and incrementally get more certain. It is likely that the snapshot height will be ~12-24h before launch
Pros
- Everyone in the community knows the date equally and can prepare for it however they intend to prepare
- Scripts can be prepared with a known static value which may be easier to test reliably
- There is reduced risk of anyone trading upon private information
- Exchanges can plan to an exact block height and dont need to plan around a range instead which may result in freezing operations for less time (may not).
Cons
- If a late issue is found on Testnet, after the blockheight has been communicated and it needs to be changed. This may be confusing for people, everyone would try and communicate this as clearly and loudly as possible but there is a risk someone sells thinking the snapshot has passed, but actually it had to be changed for some reason.
- Any sell pressure that may occur on XEM is likely to occur before launch, this may or may not result in Exchanges freezing trading (or even delisting pairs)
- Any drop in XEM price and position on coinmarketcap, coingecko etc may occur pre-launch
Option 3: Known block selected and exact height communicated after launch
This option is kind of a combination of the two above - a static block height would be selected ahead of time but only a very small number of people would know what it is, either Core Devs or Core Team (probably not NGL). The public communication is that it is between block X and block Y, with block Y being just after launch.
Pros
- Holders are incentivised to hold until the end of the range, or the launch communication for fear of missing out if they move/trade the XEM, likely to minimise any selling between snapshot block and launch information
- Reduces the risk of trading on private information except for a very small number of trusted people (there is still trust though)
- The height is known and static so easy to test, if something goes wrong it can be re-run again after that block without any real issues
Cons
- There is private information known by a small group of individuals so potential for trading on private information, although minimised by being highly trusted individuals
- Exchanges can not plan to an exact block height and need to plan around a range instead which may result in freezing operations for longer.
There will no doubt be strong opinions expressed on this subject and depending on people’s intent round trading, philosophical preferences, technical knowledge etc these may well be opposing. I would ask that we try and have this conversation with respect and to listen to everyone’s positions on it.
I have deliberately tried not to express a preference in this post, or in private conversation channels - because I know the conversation needs to happen and don’t want to influence it at the start. If there are other options please try and express them clearly and in a similar format to help everyone understand them etc.