Posted on October 4, 2021

Wanderlust

“Wanderlust” is a data art + generative art project, a BlockStyle, that I created for EthBlock.Art. My algorithm takes the transactional data from each Ethereum block in the blockchain and converts it into a unique, but deterministic, image, visualizing several aspects of each transaction.

You can browse the Wanderlust collection and mint the block you like by going here (use the squirrel icon along the top-left to see new random blocks/images).

In case you’re interested to get a mint, this goes a little different than usual. Instead of simply pressing a “mint” button, you’re invited to browse through the Ethereum blocks beforehand until you find a block whose visual style you like (use the squirrel icon in the top-left to randomly go through blocks). There are then also four different modifiers that control the fine-tuning of the final mint along the right of the page to really turn the block into your perfect image.

The top-left buttons to wander through the blocks / images

EthBlock.art is a collaboration between artists, the Ethereum blockchain, and the minters. It aims to create an ecosystem of styles visualizing Ethereum blocks, either using pure generative art, or also incorporating the data aspect of each block. Read more on this FAQ page in case you want more details about the platform.

Because the description on the project page itself can only hold so many characters, I wanted to use this page to explain all the details in how I turn the transactional data into visual elements.

The genesis mint of Wanderlust

From Block Data to Data Visualization

Each visual is a representation of the transactions of the Ethereum block. In short, squares represent transactions where ETH was transferred, sized according to the amount. Circles are ERC-20 transactions (a pulse marks an NFT), diamonds are all else. The approximate transaction fee (the gas) is plotted on top of each transaction, some barely visible, some forming shapes larger than the tx itself. And finally, everything is scaled to the largest ETH transaction of the block. For a much more detailed explanation of the data side, see the The Visual Data Encoding section at the end of this page.

You can literally take the block number that you see in the top-left of the EthBlock.Art page and search for it on Etherscan to see all the details of the underlying transactions.

While browsing blocks on the EthBlockArt page, you can find the block number in the top-left

For example, the block from the image above, block 5968052, can be found here on EthBlock.Art. It’s clear that there are 5 transactions in this block. If we then look for 5968052 on Etherscan, we get the following result:

The data about block 5968052 on Etherscan

Clicking on the transactions shows all the details from the transactions in the block. From the visual itself, I already knew that there had to be two transactions where Ethereum were transferred, since there are two rectangles. And three transactions without any Ethereum transfer, but that weren’t marked as an ERC-20 or NFT, since these are diamond-shaped. And this is exactly what the information on Etherscan shows:

The separate transactions from block 5968052 on Etherscan

Etherscan has much more information about the transactions, so if you want to know more about the transactions in the block you’ve minted, I’d suggest going through the transactions list there.

You can also work the other way around. I used Etherscan to find my first Ethereum transaction, looked up the corresponding block number, and minted that block as one of my test mints.

Or you can try and find very special transactions. Looking at the contract to which all CryptoPunks are connected, I found a transaction for 450 ETH (!) done only 1 day before I wrote this. I can take the block number, 13347271, and fill it into the block search on EthBlock.Art (the little magnifying glass) to see the resulting visual with one humongous pulsing circle, being the CryptoPunk transaction.

My mint from the block containing my first Ethereum transaction on the left, and the visual from block 13347271 with one massive CryptoPunk sale on the right

Visual Styles

My approach for this project was to let the data, the transactions, be as important to how the visual looks as any purely visual design aspect that I could think of.

I hope it’s the data that might make things special, or even personal to you. A giant CryptoPunk sale, a field full of CryptoKitties, more transactions than the grid can really handle, the block containing your own first Ethereum transaction for example.

Shape Modes

Besides the data itself one of the main visual aspects is the shape mode. There are three modes; Solid, Hybrid, and Wireframe.

The three different 'modes': Solid, Hybrid & Wireframe

The line width of the Wireframe and Hybrid modes is randomly chosen. However, there are a few small differences between these lines. For example, with Hybrid the strokes of rectangles are pulled inward so the size of both a stroked and filled rectangle nicely aligns. Furthermore, the corners of the stroked shapes in Hybrid are sharp and angled, while they’re rounded for Wireframe.

Color Palettes

There are 19 different color palettes. About 75% of these have their color palettes fixed, such as the Chaos palette that I started this project with.

The 'Chaos' color palette

I was inspired to use this approach by Matt DesLauriers' color use in his sublime Subscapes project.

The remaining palettes use randomly generated colors to determine part, or even the whole color palette used. For example, One hue randomly picks a hue and creates a color scale with dark and light versions from it. Or Onyx that will always show black shapes, but the hue of the pastel-like color background is determined randomly from the transaction’s hash.

The 'One hue' and 'Onyx' color palettes

I’ll eventually update this page to show how all 19 different color palettes look. I hope each one will be present in the final set, but who knows, maybe some are just not picked ┐( ̄ヮ ̄)┌

Two outputs from Wanderlust

Modifiers

There are 4 modifiers with which you can fine-tune the look of the block / image. You can find these along the right side of the image. You can continue making changes to these modifiers even after you’ve minted the block.

Going through random blocks and adjusting the result with the modifier sliders on the right

Grid Resolution

You will have control of how “big” the underlying grid is that all the shapes are drawn within with modifier 1. All the way to the left and the grid will be 8x8 cells. All the way to the right and its size will be 46x46 cells.

Dragging modifier 1 from 0 to 1 increasing the grid from 8x8 to 46x46

This modifier can have quite a big impact on how the visual will look. I hope you’ll have fun playing with it to get the block to look like you want.

I personally love the “chunky grid” look for blocks with fewer transactions, while the largest resolution can create quite the color interplay for blocks with hundreds of transactions (especially when there is quite some diversity in the ethereum values transferred).

The smallest versus largest grid resolution selected, on the left and right respectively

The Visual Data Encoding

This being a project that blends data visualization, data art, and generative art, I have to find a good balance between wanting to show the data absolutely correctly, and making something visually appealing, even without any context given.

Let me explain exactly how I go from the transactional data to the visual elements, and the few concessions I make along the way to make the end result look more visually appealing.

Many ERC-20 circles in this block
A block full of CryptoKitties on the left and one giant CryptoPunk sale of 131 ETH on the right
A block with one big ETH transaction reducing all other transactions to the minimum of being at least one grid cell big
If the biggest ETH transaction in a block is small, it will increase the chance of 'gas bubbles' becoming easily visible
Several circles, diamonds and seemingly 1 rectangle have 'gas bubbles' around them that are much greater than themselves

But what if a block doesn’t have any transactions? There are quite a few of these. Theoretically I should be showing an empty image with only the background color. However, I was afraid that might give people the idea that something in the code was broken, or that part of the visual still had to be loaded. I therefore chose to show something.

A block with zero transactions on the left, and a block with exactly one transaction on the right

There is a small chance that a one-tx block will also have its rectangle in the dead center.

You’ll know that you’ve come across a zero-transaction block if there is one (big) rectangle (no circle or diamond), positioned exactly in the center, without any “gas” shape associated with it. If there is only one big rectangle/shape but it’s not in the center, that will be a block with one transaction.

Save a High Resolution Image

In case you’re looking for a high resolution image of your mint, I would suggest following the steps outlined in this article. Let me explain you the steps specifically for EthBlock.Art / Wanderlust as well:

The video below shows all these steps performed on my own “genesis” mint of Wanderlust, which resulted in an image that was 8602x8602px large:

A video explanation on how to save a high-res image of any mint

In case you want to create a high resolution image at the exact dimensions you’ve set up for the new “device”, you have to go to the Full-Screen version of your mint instead. However, since you can’t mess with modifiers there, your mint will need to have its mod2 set-up all the way to the left as its base/saved setting to have it be static.

In the video below I show how to save a high res image that is exactly 1920*8 = 15360x15360px big (which was the device setting I created):

A video explanation on how to save a high-res image at some predefined exact dimensions

If you do end up printing a Wanderlust, I’d love to see a photo! (ノ◕ヮ◕)ノ*:・゚✧

See also