Overview

Wave Pool is a Block Style created on the EthBlock.art platform. It was programmed using the p5.js JavaScript library, and generates a deterministic piece of visual art for every block in the Ethereum blockchain (almost 12 million currently). While the programming logic from the style and data contained in a specific block determine the initial look, collectors, or more aptly creators, modify the output into their own unique work of mintable NFT art (known as Block Art). Wave Pool was programmed throughout January 2021, and was released in early February.

Wave Pool generates a repetition of sine waves, rotated around a central point. The number of waves, separation between waves, amplitude, and frequency are all determined from the block hash. Creators control the size of the overall wave (zoom - mod1), rotation (2), thickness (3), opacity (4), border/pinstripe opacity (5), and background opacity (6). Color controls adjust the three colors of the wave (1-3), the border/pinstripe color (4), gradient color (5), and background. 9 easter eggs enhance the presentation of waves, with a staggering number of combinations, and seemingly endless list of odds.

Four variables determine the shape of each overall wave. The total number of sine waves can range from 5 to 99, while the separation between waves varies from 1 to 90 degrees. The amplitude (height) of each sine wave is between 1 and 50 percent of the canvas size. Finally, the frequency, or length of one oscillation, ranges from 2.5 to 100 percent of the canvas size. Each individual sine wave making up the overall wave has the same degrees of separation, amplitude, and frequency.


How Many Unique Waves?

We can determine the approximate number of unique waves by multiplying the number of possible values for each of the four variables making up a wave. With 95 different values for the number of waves, 90 values for degrees of separation, 50 possible amplitude percentages, and basically 99 frequency percentages, there are about 43,222,500 waves with different values possible.

However, you'll notice some waves with similar features; we could even start to classify the different groups or types of waves that are generated. Of course, after some more searching, you'll find plenty of waves that break your expectations as well. And, to be precise, the values for degree separation, amplitude, and frequency are all decimal values; which means the number of unique waves is technically higher. To top it off, the 9 different easter eggs and all their possible combinations (and range of values) allow for a multitude of unique and rare waves.

One of the great features of ethblock.art is that you, as the Creator, can help make the artwork even more rare. Your control over zoom, rotation, thickness, opacity, border and background, along with all the color options provides for an infinite number of waves and artistic possibilities. With a 5x multiplier you can make sure your creation stays unique, or the next Creator has to pay greatly for the same block, immediately providing increased value to your NFT.


Supply and Cost

410 waves
from the Wave Pool BlockStyle are available for minting.

.041 ETH Minimum
(w/ default block fee of .007 the lowest cost to mint is .048 - all details are available on the create page)

Wave Pool Block 5185358
Block #5185358


Wave Pool Block 8292217
Block #8292217

Modifiers (Style Editor)

mod1 - Zoom

The mod1 modifier zooms in on the wave as you approach 1, or pulls away making the wave smaller as you move towards 0. This modifier can drastically alter the look of your art and it's always fun to zoom all the way into the middle. Adjusting the thickness (mod 3) and opacity (mod 4) at different zoom levels can help find creative looks.

mod2 - Spin

The mod2 modifier spins the wave around its center, adjusting the overall rotation value of the wave. For some dense and full waves the rotation may not make as big a difference, but in some cases this can make a big change in the presentation of your wave.

mod3 - Wave Thickness

The mod3 modifier adjusts the thickness of each individual sine wave. Values closer to 0 thin the lines out, while you can make them quite wide as you move towards 1. Adjusting the opacity (mod4) often helps as you change the thickness. Making thicker lines can create for more overlap of the individual sine waves, which with the right opacity can make for excellent color blending and visual effects.

mod4 - Wave Opacity

The mod4 modifier controls the amount of opacity for the individual waves. Waves often contain areas of overlap and this control allows you to see more or less of the overlapping lines. A lot of variation can be done with this one control and is always worth testing out.

mod5 - Border / Pinstripe Opacity

The mod5 modifier changes the opacity amount of the border, or when present, pinstripes. The color4 modifier controls the main color of the border/pinstripes, while this one allows you to soften and blend into the wave. Adding just the right shade of border/pinstripes can be an important finishing touch for your wave.

mod6 - Background Opacity

The mod6 modifier changes the opacity of the background color. This can be done to soften the overall background (which can also be done with the background color modifier) and is especially helpful when a Gradient Egg is present. This can control how vibrant or deep the gradient effect is.

color1

The color1 modifier alters one of the 3 colors used in generating the wave. This color is also affected by the mod4 modifier, as it adjusts the opacity.

color2

The color2 modifier alters one of the 3 colors used in generating the wave. This color is also affected by the mod4 modifier, as it adjusts the opacity.

color3

The color3 modifier alters one of the 3 colors used in generating the wave. This color is also affected by the mod4 modifier, as it adjusts the opacity.

color4

The color4 modifier alters the color of the border or pinstripes. This color is also affected by the mod5 modifier, as it adjusts the opacity.

color5

The color5 modifier alters the color of the outer edges of a Gradient egg (not used for non-Gradient waves).

background

The background modifier alters the color of the background, and the central area of a Gradient Egg wave. This color is also affected by the mod6 modifier, as it adjusts the opacity.


Wave Pool Style Editor
Wave Pool Style Editor
Wave Pool Block ?
Displace Egg (1 in 40)

Easter Eggs

Wave Pool offers 9 easter eggs, hidden within random blocks, each with their own odds. You'll know when you find an egg due to the altered appearance, or by noting the line mark on the bottom right edge of the canvas (color1 modifier determines the color of marks). There is one mark for each egg found on a given block. The chance of getting any one single egg for a given block is 1 in 7 (or 6.7 to be exact).

The How Many value is calculated by estimating a nice round number of 12,000,000 blocks. As the current number of blocks is a little below this, the numbers are technically lower currently. But, we add new blocks every minute, new waves are always being generated, and the number of eggs that appear increases over time (but the odds per block always stays the same).

HPinstripe / VPinstripe

Either horizontal (HPinstripe: 1 in 20) or vertical (VPinstripe: 1 in 30) pinstripes are drawn behind the wave. The number of pinstripes can range from 3 to 200. The color4 modifier alters the color of the pinstripes, while mod5 alters the opacity. One of my favorite two-egg combos, and the easiest to find, is both HPinstripes and VPinstripes (1 in 600), creating a grid. Normally though, you'll find these eggs separate from each other.

Some of the pinstripe counts are similar in appearance, but pinstripes with a small number of stripes are easily noticeable. Getting a 3-stripe pinstripe takes the 1 in 20 odds of HPinstripe to 1 in 3,960 (as the odds of any particular count is 1 in 198). Fortunately, the low-count pinstripe waves often look quite beautiful. I wouldn't sleep on the high-count pinstripe waves either, they have their own mojo.

Both pinstripes also offer another egg within an egg, by including a border 2% of the time (1 in 50). All waves include a border (which have a range of 91 possible values and decimals between), but HPinstripe and VPinstripe usually remove the border. However, 2% of the time the border still appears making these eggs even more rare. The odds of finding a HPinstripe egg with a border are 1 in 1,000. VPinstripe eggs with a border are 1 in 1,500.

Displace

The Displace Egg (1 in 40) moves the central rotation point of the wave away from the center of the image. Different percentages determine whether the wave is moved up, down, left, right, or towards one of the four corners. 65% (1 in 1.54) of the time the wave is displaced along the y-axis (up/down). 25% of the time (1 in 4) the wave is displaced along the x-axis (left/right). 10% of the time (1 in 10) the wave is displaced along both the x and y axes, moving it towards one of the corners. How far the wave is displaced also varies each time. It's easier to notice waves displaced by greater amounts, as the center of the wave nears a border.

VariWidth

The VariWidth egg (1 in 50) alters the width(or length, but VariWidth sounds better) of different sine waves making up the overall wave; it varies the width. The amount of change depends on the block and invidual wave, but some waves are grouped together when altering their width. Typically you'll want to zoom out to take into the full effect of this egg. It's quite impressive how a simple change like this can drastically change the look and feel of a style.

Gradient

The Gradient Egg (1 in 100) adds a circular gradient effect to the background of the wave. Most aspects of the gradient can be controlled and tailored using the modifiers. mod6 controls the opacity of the background on regular waves, but also has an effect on how much of the gradient effect you want to see. Setting this low lessens the effect, while moving it towards 1 makes it stand out. This is also where the color5 modifier comes in, as a gradient needs to move between two colors. The outer edges of the gradient, near the border, are based on the background color setting. The inner part of the gradient near the center of the canvas is based on the color5 setting. Using color5, background, and mod6 controls allows you to dial in the perfect effect for your wave.

Frame

The Frame egg (1 in 200) adds an inner border to the existing outer border. The thickness of the inner border is determined by the thickness of the outer border (which varies some from wave to wave). At the same time the distance between inner and outer border can vary over 16 possible values (and decimals between), allowing the Frame egg to take on a number of different looks.

Square

The Square Egg (1 in 300) changes the appearance of the sine waves. Regular waves draw curved lines along the path of the sine wave, while Square waves draw squares along points of the sine wave path. The size of the squares can be controlled using mod3, while the opacity is controlled by mod4, just like manipulating any other waves and their lines.

Dot

The Dot Egg (1 in 400) is similar to the Square Egg, but instead of drawing squares along the path of the wave, it draws dots (circles). Just like the squares, the size and opacity of dots can be controlled using mod3 and mod4 modifiers.

One

The One Egg (1 in 25,000) is the rarest single egg I've programmed so far. Normally waves are made up of 5 to 99 individual sine waves, but this egg generates only a single sine wave. Each One wave still derives its amplitude and frequency from the block hash and can be modified like any other wave. While finding a One wave is hard enough, finding one combined with any other egg will be incredibly rare.



Easter Egg Odds (1 in) How Many?
HPinstripe 20 600,000
VPinstripe 30 400,000
Displace 40 300,000
VariWidth 50 240,000
Gradient 100 120,000
Frame 200 60,000
Square 300 40,000
Dot 400 30,000
One 25,000 480


Wave Pool Block 7713014
Block #7713014 - HPinstripe Egg (1 in 20)
Wave Pool Block 5631380
Block #5631380 - Displace Egg (1 in 40)

Egg Combinations

All 9 easter eggs can combine with each other. We can use the following formula to calculate the number of combos for each egg count: C(n,r) = n! / (r!(n - r)!)

For Example - How many three-egg combinations are there?

C(9,3) = 9! / (3!(9 - 3)!)
9! / 3! x 6!
9 x 8 x 7 x 6 x 5 x 4 x 3 x 2 / (3 x 2) x (6 x 5 x 4 x 3 x 2)
9 x 8 x 7 / 3 x 2
504 / 6
84

Running this forumula for all egg counts and adding all outputs together, we end up with 511 possible combinations of eggs. Waves with 5, 6, 7, 8, or 9 eggs are possible, but unlikely to exist at this time (or ever in the future for many of them). Most of the 4-egg combinations are unlikey to exist, or are extremely rare, while some 3-egg combos are findable but very quickly progress to unlikely or impossible.

Egg Count # of Combos Easiest Odds (1 in)
1 9 20
2 36 600
3 84 24,000
4 126 1,200,000
5 126 120,000,000
6 84 24,000,000,000
7 36 7,200,000,000,000
8 9 2,880,000,000,000,000
9 1 72,000,000,000,000,000,000

Two-Egg Combos

There are 36 two-egg combinations possible. As you can see, the odds vary greatly depending on the two eggs involved, but the odds of getting any two-egg combination for a given block is 1 in 114. The rarest two-egg combo (Dot / One) has odds of 1 in 10,000,000. Currently there should only be one of these in existence (although it's entirely possible the first hasn't shown up yet).



Wave Pool Block 6733236
Block #6733236 - VPinstripe / Dispace Eggs (1 in 1,200)
Wave Pool Block 8906509
Block #8906509 - VPinstripe / Frame Eggs (1 in 6,000)
Egg 1 Egg 2 Odds x Odds 1 in How Many?
HPinstripe VPinstripe 20 x 30 600 20,000
HPinstripe Displace 20 x 40 800 15,000
... VariWidth 20 x 50 1,000 12,000
Gradient 20 x 100 2,000 6,000
Frame 20 x 200 4,000 3,000
Square 20 x 300 6,000 2,000
Dot 20 x 400 8,000 1,500
One 20 x 25,000 500,000 24

VPinstripe Displace 30 x 40 1,200 10,000
VariWidth 30 x 50 1,500 8,000
Gradient 30 x 100 3,000 4,000
Frame 30 x 200 6,000 2,000
Square 30 x 300 9,000 1,333
Dot 30 x 400 12,000 1,000
One 30 x 25,000 750,000 16

Displace VariWidth 40 x 50 2,000 6,000
Gradient 40 x 100 4,000 3,000
Frame 40 x 200 8,000 1,500
Square 40 x 300 12,000 1,000
Dot 40 x 400 16,000 750
One 40 x 25,000 1,000,000 12

VariWidth Gradient 50 x 100 5,000 2,400
Frame 50 x 200 10,000 1,200
Square 50 x 300 15,000 800
Dot 50 x 400 20,000 600
One 50 x 25,000 1,250,000 10

Gradient Frame 100 x 200 20,000 600
Square 100 x 300 30,000 400
Dot 100 x 400 40,000 300
One 100 x 25,000 2,500,000 5

Frame Square 200 x 300 60,000 200
Dot 200 x 400 80,000 150
One 200 x 25,000 5,000,000 2

Square Dot 300 x 400 120,000 100
One 300 x 25,000 7,500,000 2

Dot One 400 x 25,000 10,000,000 1

Three-Egg Combos

There are 84 three-egg combinations possible. The easiest three-egg combo to find is HPinstripe / VPinstripe / Displace (1 in 24,000), while the most difficult is Square / Dot / One (1 in 3,000,000,000). But due to the large number of possible combinations, the odds of getting any three-egg combo for a given block is 1 in 3,855 (not too bad).

Although I have generated all the odds for each of the 84 combinations, I won't list them all here. You can always easily determine how rare your three-egg combo is by multiplying their individual odds. For example, if you find VPinstripe / Displace / Frame, we multiply 30 by 40 by 200, giving us odds of 1 in 240,000. I would love to find one of these, but how many even exist right now? About 50.




Thank you to Adrian at ethblock.art for creating this amazing platform and environment for creative coders. If you are interested in creating your own BlockStyle, reach out on Discord.