References + Resources

References

An introduction to DMT and NATs (written by the Block team) can be found at this gitbook.

Figures 1 through 8 in this book have been calculated and rendered with GNU Octave, an open-source equivalent to the numeric computing platform MATLAB).

The title image and Figure 9 were rendered in Unity, using heightmaps exported from Octave. Textures were mapped using a script written by Unity user abertrand.

On-chain data was sourced from the Google BigQuery dataset called bigquery-public-data:bitcoin_blockchain.

Further information

For updates on DMT and NATs, the Blockrunner’s YouTube channel does an excellent job.

Heightmaps

The images below are heightmaps, commonly used as data inputs for generating terrain in 3D modelling packages such as Unity or Blender. These are provided as a quick and simple way for developers to test game environments generated by a NAS.

A few notes on these:

  • These images represent the first 824 544 blocks. Each pixel is one block. Pixel shading ('grayness') is determined by mapping the data range of the data set used for the image to a number from 0 to 255 (representing black to white for each pixel).

  • Note that transaction count accuracy is reduced for these maps, as there are only 256 levels available. For the first example (raw transaction count), the lowest input is 1 and the highest is 12239 (block 367853). This means that transaction counts can only be determined to an accuracy of 12239/256 or 47.85 counts.

  • Block 0 (genesis block) is located at the bottom left of each image, with block count increasing to the right and then up.

  • These have been generated so they wrap seamlessly (on the short side) to allow for creation of 3d NAS such a cylinders and spheres.

Example Heightmaps

Raw transaction count

This represents the transaction count of each block. Note that there are a few blocks which have very high counts, so this skews the distribution of other blocks down.

Averaged transaction count

This heightmap is simply the map above, with a 5x5 block average. It is shown in figure 4.

Halving Islands

This is a heightmap that represents figure 6.

NAT generated landscape

This is a heightmap that represents figure 8.

Last updated