Wallet Invaders is a dymanic fully on-chain NFT collection (ERC-721), created by Eto Vass (opens in a new tab). Each NFT from the collection visualizes the Ethereum address of the owner's wallet.

⚠️

If you transfer the NFT to another wallet, the main visualization will be different, but all of the traits (style - colors, special effects, etc) will be kept. If you mint more than one NFT from the same wallet, the traits (style) will be different, but the main visualization will be the same (with the exception of mirrors).

How are they generated?

Ethereum wallet address is 160 bits long. We take every bit from the wallet and in a diagonal zig-zag manner generate the main visualization as a matrix. Checking every bit and if the bit is 0, then it will render as an empty block, otherwise if 1 - as colored block.

Then with certain probabilities, the matrix is either kept as it is (mirrors = 0), mirrored around Y axis (mirrors = 1) or mirrored around both Y and X axises (mirrors = 2)

If the matrix is not mirrored (mirrors = 0) or mirrored around Y and then X axises (mirrors = 2), then the matrix is with size 13x13 (13x13 = 169, enough to fit all 160 bits). Otherwise, if mirrored around Y axis (mirrors = 1), it is with size 18x9 (18x9 = 162, enough to fit all 160 bits).

Examples

If there are no mirrors, or mirrors around both Y and X axises (in this order), then the matrix is with size 13x13.

Here is an example for address 0xFFfFfFffFFfffFFfFFfFFFFFffFFFffffFfFFFfF. In this example - blue blocks are bits with value 1, empty blocks - with value 0. White numbers are the order of the bits in the matrix.

0xFF - 13x13

And another one for Eto Vass' address - 0x1ff241abaD54DEcB967Bd0f57c2a584C7d1ca8BD

Eto's - 13x13

For mirror around Y axis, the matrix is with size 18x9, so once mirrored to be with 1:1 ratio

Here is an example address 0xFFfFfFffFFfffFFfFFfFFFFFffFFFffffFfFFFfF

0xFF - 18x9

And another one for Eto Vass' address - 0x1ff241abaD54DEcB967Bd0f57c2a584C7d1ca8BD

Eto's - 18x9

Mirrors

Once the matrix is generated from the 160 bit address, then 0, 1 or 2 mirrors are applied to the matrix, to form the main visualization

In case on 0 mirrors, the main visualization looks like the one above for 0x1ff241abaD54DEcB967Bd0f57c2a584C7d1ca8BD

Eto's - mirrors 0

For 1 mirror - only around Y axis - then it looks like:

Eto's mirrors 1

And for 2 mirrors - one around Y and then one around X axises, it looks like:

Eto's mirrors 2

Filters

One the matrix is generated and mirrored, then it is drawn as SVG (with various variables, that will be explained in Traits section) and then at least two filters are applied:

  1. Spread Filter - that rounds the blocks
Eto's Spread Only Filter
  1. Light Filter - that gives nice 3d looking of the image
Eto's Both Filters

One more filter (special effect) can also be applied, this is described in the Traits section

line