Cowlony layer structure

This article speaks about how the cows are dressed, the structure of their traits and how we generate them. The Cowlony contains not only random generated NFTs but thematic and unique hand-drawn themes as well. We will give a general overview of the structure of the artwork and describe some of the difficulties we faced and what solutions we found for them. Let’s jump into it.

Cow’s dress code

The cows are mainly generated by a script, but there will be a few which are unique and built manually. The cows are dressed with up to nine layers (or attributes) which have their values and rarities. You can think about these as basic types of clothes and accessories a cow would wear. The following picture shows the separation of these attributes, and where can they be found. We want to make our collection as diverse and colourful as possible so most of the time these layers filled up. Don’t worry there will be minimal and clean cows as well. Also, this is just the base structure, there will be some extra traits which could not fit exactly in this system.

cowlony layer structure

Cow assembly

We have our layers categorised and well structured. Putting them on top of each other and generating the final art shouldn’t be a big challenge, right? Well, not exactly. This is good in theory and when we try to do the assembly manually in a picture editor software. But it gets much more tricky when there are a lot of variants from one layer and when the generation is automated. The main issue here is how to avoid generating cows which have unmatching parts and an inconsistent overall look.

cow assembly pipeline

To go deeper into the issue there could be two different root-cause a technical one and an artistic one. The first is when there are issues with the layer order and boundaries which results are that some types of clothes and accessories unpleasantly overlapping each other. This can be resolved most of the time by fixing the traits individually, but there could be rare scenarios where this just could not work. The artistic side is the bigger one when traits do not look good with each other. For example, boots can be completely out of style with the rest of the cow even if technically everything is correct.

There are multiple solutions to overcome this problem, we will describe just two in the following. The most simple one is creating a do-not-pare list of traits which do not go well together. This is a really simple one when selecting a new trait during the generation we should just check if it is allowed with the already selected traits or not. This works well to avoid pairing traits with each other, but there is another side to the issue. In some cases we want to pair a group of traits with each other to create themes or as we call herds in the collection. To achieve this we created another indexing on top of our traits which defines these groups. One trait can be part of multiple herds and also have its individual rarity.

To sum up the process we have our traits grouped into the herds, and inside these, they are also grouped into layers. During the generation of one cow, we have a base set from which we put together the layers in a given order.

cow assembly in 3D

Traits and rarity

A cow’s rarity is defined by the rarity of its traits. Which is based on how many herds contain the trait, the size of these herds and lastly the trait’s rarity inside the herd. We have estimates for these values but the exact percentages could be known after the generation process is done. Also, the rarity values could change during the life of the collection since tokens can be burned.


This is great, but you could ask what guarantees that there is zero chance to have identical cows in the collection? We enforce this by generating DNA for each cow, this is based on the traits and their place in the layer structure. This way during the generation we can filter out if somehow we generate the same cow twice.

Rarest cows

Among the “normal” cows, there will be a few “mini herds”. These sub-collections will have different traits and attributes to match a general concept. There will be also unique hand-drawn cows which are not generated, but entirely handmade. These special cows will overshadow all others. Some of the ultra-rare cows will be randomly put into the collection and can be minted by anybody. And some will be minted by us and reserved for airdrops and special occasions.

Traits might also have some effects on grazing, stay tuned



Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store


The 4998 generated and unique cows live on the Ethereum blockchain.