# Introduction

For project updates, follow @MonkMatto on Twitter.

### *Chainlife tokens are aware, and they change on transfer!*

## Project overview:

**Chainlife tokens**: 1024 microcosms of digital life that are interactive, malleable, evolving, and aware.

**Chainlife world**: a single ever-changing macrocosm that is affected by individual tokens, is collaborative, (also) on-chain, and extendible.

**Chainlife forest**: (future goal) grow a healthy forest ecosystem (not on-chain) to fight climate change and keep Chainlife carbon negative (project started with 40,000 txn of carbon offsets).

**Chainlife project**: genesis project of Matto's blockchain interactive NFT platform, Substratum, Chainlife allows new art generating scripts to be added to the tokens and API over time. Currently there are 3 on-chain art scripts: Chainlife (base token), Esoterra (map token), Painting (pattern history).

Chainlife is a project that allows exploration of [cellular automata](https://en.wikipedia.org/wiki/Cellular_automaton). At the most granular level, it's a collection of 1024 individual generative art **NFTs** on the Ethereum blockchain. The generative scripts are on-chain, and all traits are calculated live in token. They're aware of many pieces of blockchain data, and they change: evolving and maturing in unique ways as they respond to transfers and on-chain customizations that their owners can set. You can see and interact with the smart contract [here](https://etherscan.io/address/0x4E171e0F14a9046e14B93221f31Acd2EC4Af8429#code).

The tokens combine together to form a collaborative and ever-evolving **world**, formed by grid of 32 x 32 cells. Each cell can exist on any level in this world, ranging from level 0 to level 9999. As tokens 'mature', they gain levels, and as the token gains a level, it's cell in the world grid also gains a level. Additionally, owners can 'level shift' their token by a positive or negative value, thereby changing which level the token exists on.

The Chainlife project has committed to fight climate change. To create a positive environmental impact, the carbon footprint the project would generate at mint-out, has been carbon offset at a 400x multiple. Also, the custom API built for Chainlife is carbon neutral, running on Azure. Finally, it's the artist's hope that they can plant 1024 trees in the USA for this project.

Chainlife is the genesis project of **Substratum**, an on-chain genart platform committed to fighting climate change and supporting blockchain-interactive NFT projects like no other platform can.

There's *a ton* of detail and information about this very rich project, and this gitbook will serve as the project's documentation. Please note that it's a work in progress! Continue to the Quickstart Guide, or jump to other areas through the navigation.


# Quickstart Guide

### Message to Chainlife owners and apreciatooors:&#x20;

Thank you! I really appreciate your interest in playing with these rather nerdy and complex NFTs. I've put this information together to help you get acclimated. There are channels in my Discord ([join here](https://discord.com/invite/AQDwjAa3g2)) dedicated to this project.

Hop in there, say hello, and post there if you need any help! (You can also just message Matto, but I do sleep sometimes, and someone in the channel may be able to help faster.)


# Chapter 1: Find your token\*

\*Or choose someone else's token you want to play with

You can browse the collection on marketplaces, but there are also specific ways to interact on the chainlife.xyz website with a token ID. Here are links to marketplaces and rarity tools where you can see the tokens:

* <https://artacle.io/project/chainlife>
* <https://opensea.io/collection/chainlife-by-matto>
* <https://looksrare.org/collections/0x4E171e0F14a9046e14B93221f31Acd2EC4Af8429>
* <https://x2y2.io/collection/0x4E171e0F14a9046e14B93221f31Acd2EC4Af8429/items>

Find a token, click on it and see how the patterns in the middle of the token change. If you want, hit H to see hotkeys, but spoiler: *there's a lot and it might be overwhelming*. Compare it to some other tokens. Some may live forever, some may die out, some may stabilize in a loop. These are cellular automata apps in disguise.

Note the pattern in the center of the Chainlife token - that's the population of live cells, and it's based on the owner's address and the previous owner's address. If the token was minted but never transferred, then the pattern is an exact translation of the minters wallet address in binary form, where `1`'s are live and `0`'s are dead. Once transfers have happened, it gets more complicated, but it's always the result of the current and previous owners' addresses after being passed through one of six, binary logic gates.

### This means that Chainlife tokens change every transfer!

Sometimes the changes are minor, and sometimes they're major. To preview how the starting seed will look after a transfer, there's a tool built into every token, but it won't show palette or other evolution changes.


# Chapter 2: Chainlife World

Like metaverse NFTs, Chainlife NFTs coexist in a larger 'World.' A public facing API provides the data to render this world, and a viewer can be opened from [chainlife.xyz](https://chainlife.xyz/) (if it loads slow, please be patient, we're fine-tuning the Azure app's automatic resource scaling and CDNs).

Your token is one of those little squares! If all tokens were displayed on the same level (like level 0, where they all minted), they'd appear in a grid. As the tokens 'mature' they move up levels in their metadata, unlock new features and functions, and they literally move up a level in the World view. Currently, World display is capped to 64 levels, but this will change!

This World is more than just a representation of on-chain data; it's also collaborative and playable! (We'll cover that in chapter 7.)

Click and drag in the 3D viewer area to change the view. You can zoom in or out with scrolling/pinching, or move the camera with click and drag.

Where in the grid is your token? The token traits list the coordinates, but you can quickly find your token with a token-ID map. After mint, tokens can be elevated as they 'mature' but they'll always stay in their grid coordinates.

When looking down at the World, token 0 will always and forever be in the upper left corner, and the last token in the collection will be in the bottom right corner. Building patterns is a topic we'll cover later, but the best way to do so is to position your token on the same level as a neighbor.&#x20;

Unless the token is on an edge, tokenID +1 and -1 are the tokens to the left and right; tokenID - 32 is the token directly above it; tokenID + 32 is the token directly below it, and you just subtract or add 1 to get the other neighbors on those other levels. If the token is on the edge, then depending on which side it falls, it will have 3 less neighbors on that edge.

*"...Does that mean edge tokens are less desirable? What about the corner tokens with even less neighbors?"*&#x20;

The answer? We'll find out, but note that after a planned update/upgrade *(cough, roadmap, cough)*, some token traits could change the math on this... That's all I can say, and I've said too much. ;)


# Chapter 3: World Interaction

With the World view active (click in there to activate it), press the backslash key: `\`

A test input will pop up. Click in it, enter `L0` , and then click the button. This will put the focus on level 0 of the Chainlife World, and any tokens that are level 0 will appear there! Notice how the other levels are partially transparent.

There's more that you can do when viewing a level, but for now, exit the level 0 focus by pressing spacebar.&#x20;

You can open any World level that is being displayed. Here for this first version, levels 0-63 are shown. Any tokens above level 63 will appear on level 63 in the World view. Similarly, tokens with negative levels, will instead appear on level 0.

You can also highlight any individual token by pressing the backslash key `\` to open the input field, and then enter `T0` (or any other token number). Enter `T` and `<your token number>`, then press the button. Your token will highlight, the focus will shift to the level of your token, and all other tokens will become partially transparent.

There's more to do, but let's open your token! With your Chainlife token highlighted, press `C` to open the token page or press `G` to generate the token in a full screen page (allow popups).&#x20;

Check it out and continue in the next section.&#x20;

(Note, you don't need to use the input field for any 'hotkeys.' The input field is only used to focus on levels or to highlight tokens.)


# Chapter 4: Open your token!

You can open a token's page from the World view as described in the previous section, directly from the form on chainlife.xyz, or from marketplaces by clicking the link to view the token on chainlife.xyz. (Note, opening from the World view opens in a new tab, and you might need to disable popup blockers).

The token page has a live-generator of the token, the live-generated token traits, and also two forms for the token owners to use to write to the contract:

* **Custom Rule** section allows owners to write a custom rule to chain that the token will automatically use if its level is at least 16. Custom rules must use the format `Bn/Sn` where `n` is a single or series of digits. No quotes are required, and custom rules can be removed or overwritten at any time by their owner. This is a free customization - only gas is needed.
* **Shift Levels** section allows owners to set a level shift on-chain. This can be a positive or negative integer, and it gets added to the token's transfer count to determine it's level. Note that this requires a payment of .0001 Eth per level that is being shifted, positive or negative. This charge helps to offset the costs of the data processing the API must do whenever a token's on-chain data changes.

There are additional links to open the token on marketplaces, on analytics pages, and to open the full page token generator.


# Chapter 5: Interact with token

(oh boy, this is the big one...)

## ...Click on it!

(click again to pause)

Easy right? But there's a lot more that you can do with a Chainlife token, because it's actually an artistic application to interact with cellular automata. (Not sure what that is? Check out [this section](https://youtu.be/1GanontDIEs?t=110) of the intro video.) At the very bottom of this page, there's a map of keyboard hotkeys, but next are some basic functions that are enabled by default in every token (note that the token has to be active first when it's part of another html page).

In addition to playing the token and letting it run its course, any viewer (not just the owner) can do the following:

* Press `H` to replace the token art with 'help', showing many of the available hotkeys.
* If the token is paused, pressing `N` advances to the next cycle.
* Keys `1`, `2`, `3`, `4`, and `5` set the cycle speed. All tokens default to a speed of `3`.
* `6` Sets the token's ruleset to the Game of Life rules. (Most tokens have this set as default, but not all.)
* As long as there are cells still alive, `Z` resets the token to the starting population.
* `C` overlays the current cycle count at the very top of the token.
* `Q` overlays the number of live cells every cell in the token has. This information is what is used by the ruleset to determine the next cycle's cells.
* `<` and `>` cycle the color matte outside the token (seen when the token is viewed in a non-square frame).
* `B` disables any color changes that maturity or uncommon traits may add to the token.
* `S` saves the current image.
* `D` downloads the token's data
* `E` exports the seed in a file that can be imported into other popular cellular automata apps.
* `L` downloads the game log that shows a history of every cycle.
* `\` opens an input field, and if you paste in an Eth address, the population will change to what it would be if the token was transferred to that address.

As the token matures, more hotkeys are unlocked, and the most interesting unlocked functions might be the ruleset controls. As the token gains levels, keys 7, 8, and 9 will enable new rulesets that control the token's population of cells. If only there was a way for you to see this... hmmmmm.....

You can! The Level Shift function allows owners to change the level of their tokens. Continue on to learn about that! Oh yeah, here's the keyboard map I promised:

<figure><img src="/files/VPyjSRQc9ILw54RhSoco" alt=""><figcaption></figcaption></figure>


# Chapter 6: Shift token level

Shifting a token's level allows owners to control the maturity level of their token and which level in the Chainlife World their token exists on. It is additive, meaning if the level shift is 5, and an owner submits a transaction to shift the token by 4, then the new level is 9.

Negative shifts are allowed.&#x20;

Note that the world levels that tokens can live on are restricted: 0 - 9999. Currently, the World viewer for the testnet will only show a fraction of these levels: 0 - 20. The mainnet World view will show levels 0 - 63, and additional ranges will be searchable and viewable in a future update.

So, browse to the page of your token, make sure you've connected your wallet, and submit a level shift. For fun, try shifting your token around, maybe to level 10 so it can exist on the same level as Matto's token #5. It'll stay there until the owner submits another level shift transaction or the token is transferred.&#x20;

The World level is the token transfer count + the cumulative level shift.


# Chapter 7: Play a level

Back in the Chainlife World 3D viewer, focus on a particular level. Any level with tokens on it will be fine, go ahead and try #5 to start.

Review: open the input field with `\` and then enter `L0` or `L` and another integer between `0` and `63`.

Once you have a World level in focus, press `P` (not in the input field, just hit the key). This will interpret any Chainlife tokens on that level as live cells and create a cellular automata player in a new window! (Might have to disable pop-up blockers.) Note that the 'level' of the player, is the level of the level.

Most of the same functions are available in the level player, but there are a few exceptions. Notably, you can't input an Eth address to preview how it would look if transferred there. Also, there are no owner's of this ethereal level, just owners that occupy portions of it.

The level's style is randomly generated every 6 minutes, and it's worldwide. For example, anyone loading level 5 at the same time, from anywhere, will all see the same palette and features.

Note: you can also launch a level from a highlighted token in the World view. The level that launches will be the level of the highlighted token.


# Optional: Set custom rule

Without going into much detail on cellular automata rulesets, I want to make sure you know that at levels 16 and above, Chainlife tokens can utilize custom rules to determine the lives of their population of cells.&#x20;

Tokens will mature the ability to preview custom rules around level 13, and to do so, anyone can load a token, press `\` and enter a valid ruleset. `B123456/S9876542` is a valid ruleset, but it's kind of silly. `B2/S8` is a fun one. `B3/S23` is the Game of Life. All rulesets are in the format `Bn/Sn` where n are a series of digits.

There is research being done in regard to these kinds of rules, as there are billions of possible combinations.

You can shift your token to level 16, preview a ruleset, and if you like it, set it! If a valid ruleset is stored on chain and the token is level 16 or higher, that token will load with that ruleset as the default. Reset the on-chain ruleset by using the RESET button.


# Optional: Esoterra

Every token also has the potential to create a 3D map, and I call this alternative render an Esoterra. This is experimental and meta, and I've created a proof of concept.&#x20;

From the world view, when a token is highlighted (you remember how to do that, right? `\` and then `T<token number>`). When a token is highlighted, press `V` to view its Esoterra (opens in new window, may need to disable pop-up blockers).

This is a render of the token's on-chain data, using the token's starting seed data, and rendered with some other traits from the token. Easiest to notice is that the palettes match. Navigate around the Esoterra 3D view like you would the World viewer, with click and drag.

These are 3D spaces that change with blockchain data, together creating a larger 3D world made of on-chain assets and on-chain data, controlled by the token's owners. Thanks to the platform, Substratum, setting 'esoterra' as the custom rule will change the rendering style of the token to use the esoterra artwork (and changing it away from that will return it to a traditional Chainlife token.

Over time, I'll be adding other rendering algorithms that the token owners can opt into!


# The Artist

<figure><img src="/files/5Nevu53OQHCbKRdnDjWF" alt=""><figcaption><p>Tintype photograph by <a href="https://www.lightmatterstudio.com/">Will Harlan Campbell</a></p></figcaption></figure>

I go by Matto. I'll keep this succinct and relevant to this project. I have an MFA in Film and Computer Animation. Although I first started to code when I was like, 5, things got interesting when I discovered processing in the early 2000s when trying to create generative visuals for films.

I worked in education from 2003-2015, and besides that whole out-of-college being an adult, I kept a low profile socially. In 2015 I published some novels and started making custom board games.

Then NFTs happened. I had the seed of the idea for Chainlife in 2018, and in 2020 I started to experiment and learn the skills needed to make it a reality. Since then, I...

* discovered Art Blocks and released [Enso](https://www.artblocks.io/collections/presents/projects/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/34) and [FOCUS](https://www.artblocks.io/collections/presents/projects/0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270/181)...
* tried to co-found a next-gen minting platform to support Chainlife (it didn't work out)...
* retaught myself solidity and launched [BLONKS](https://blonks.xyz/)...
* experimented with smart contract composability / interactivity and launched [deFOCUSed](https://matto.xyz/project/defocused/) and [Texture and Hues](https://matto.xyz/project/texture-and-hues/)...
* and finally, with a talented [dev. team](https://www.drakewest.dev/), I'm launching [Chainlife](https://chainlife.xyz/) on my own next-gen platform!

(I'll write more about the platform later, but yeah - I'm literally just getting started here!)


# FAQ

<details>

<summary><strong>If it's a game, how do you win?</strong></summary>

Chainlife games are like life; there is no definition of a win-state. Everyone is free to define their own win-state any way they like.

Not satisfied with that answer? Well, Chainlife NFTs represent a simulation of a population living under very simple rules, in a very simple world. An owner has significant control over the population - godlike power. So, pretend you're supervising the population. Without your intervention, how many cycles does the population last? With your intervention, can you make it last longer? Can you get more cells to stabilize alive? Or if you just want to watch it burn, how quickly can you wipe out the population?

...Still not satisfied? Fine; you win if your Chainlife population stabilizes into a pattern or if it survives...at least 1,000 cycles.

</details>

<details>

<summary><strong>How can I play a World Level?</strong></summary>

You can open any level directly from the Chainlife World viewer. See the Chainlife World viewer page for more info.

</details>

<details>

<summary><strong>How on-chain is the project?</strong></summary>

The generative script to produce Chainlife simulations and calculate traits is on-chain, the smart contract generates all script inputs, and even p5.js has been stored on-chain. Everything except a web-browser is secured on-chain, and it's a matter of time before somebody stores a browser's code on-chain too.

The World View app is very simple, and once it's finalized with a playable level simulator, I'll put it on-chain for good measure. Esoterra code is not on-chain. Esoterra is not a token; it's an idea, and I want it accessible to anyone with passion to participate. Perhaps the community will want me to put a version of Esoterra on chain, but we'll just have to see.

Chainlife utilizes an API, which is off-chain, but it's reproduceable, and it should be reproduced in different ways as technology progresses.

Will technology advance so far in 100 years that Chainlife tokens won't be able to be played? I have no idea, but I bet there will be a solution to make them still work. I really wouldn't worry about it.

</details>

<details>

<summary><strong>Can a token die?</strong></summary>

Besides burning (sending a token to a null address), there are ways a token can be 'dead'. A token whose population dies during play isn't a dead token, the population just didn't survive. On refresh, the starting seed will reappear and the game can be replayed. A dead token can happen if an owner sends the token to themselves at specific transfer counts (which mean that specific logic gates are used). If this happens, the token will start with no live population.

Sending the token to another account, or back to the same account again, will bring a population back to life.

The only permanent death *in token* would happen if that token was sent to the null address at specific times in its logic-gate cycle. The token still exists in the World Grid, and the contract owner (Matto) still has control over its level. So, although the cellular automata in the token may permanently be gone, the Chainlife token lives on in the collection as - basically - uninhabited space.

</details>

<details>

<summary><strong>Is it cash-grabby to allow people to pay to upgrade their token?</strong></summary>

Without it, there would be a strong likelihood that users would 'grind' their token, transferring it back to themselves 16 times just so they can see the token's full potential. With rare or highly prized tokens, this might otherwise be the only way for someone to maintain control of a particular token and still see it matured.

I see the level shift as a value add overall, because it gives owners more flexibility (this is a game after all). Also, the shifts are fully reversible (but not refundable!), so an owner could try out a level and if they decide they don't like the new look or the shift trait, they can shift the token back.

This requires some custom on-chain tooling, which is kind of cool, but more importantly it allows owners to coordinate. Will level 69 be more popular than 420? What about level 9000? Someday we might find out.

Finally, to address the cost: from mint, a shift of 16 would instantly 'mature' the token, and it would cost 0.0016 Eth. This is much cheaper than 16 separate transaction fees, and instead of paying miners and creating a larger carbon footprint, owners would be supporting the Chainlife project.

</details>

<details>

<summary><strong>How big is your team? What are your future plans?</strong></summary>

\*waves\* Hi, I'm Matto. I've been a one-man show for a long, long time. I hired an experienced dev team (Drake & West Dev <https://www.drakewest.dev/>) to help build the API and a slick front end app (the website). That's it, so this is a very 'Indie' operation.

In the years before NFTs, I was making art, writing stories, and making games. Now that I'm FINALLY bringing Chainlife to the world and launching my own platform, I plan on continuing doing those same things - but on a whole new level with all new terms: *my own.* Expect new and innovative artworks, new blockchain-powered games, and maybe even some crypto-fiction projects (although it's a tough match for today's market and users).

</details>

<details>

<summary><strong>Single or multimint? (Single.) Why no multimint?</strong></summary>

I'm not a fan of multimint as I think it encourages overspending. Yeah it would help the project sell out faster, but there are (imo) more important considerations. First, entropy is determined by mint details, and although even consecutive mints in the same block would have very different entropy, I like maximizing the variability of inputs into the system.

Also, I believe it would be beneficial to have tokens in various places throughout the grid, as opposed to a few in a line. While consecutive mints may be nice for other metaverse 'land', Chainlife tokens and the Chainlife World operate very differently.

Finally, I believe that there is a potential for greater enjoyment and community engagement if an owner's mints are spread out across the World grid.

</details>

<details>

<summary><strong>If this is a genesis project, will their be airdrops or owner benefits?</strong></summary>

Official answer: don't count on it.

I really enjoy giving back and doing things for my collectors, but I can't promise anything, and I hope you don't buy these fun and nerdy artworks with that kind of expectation.

</details>

<details>

<summary><strong>What if mint doesn't generate the funds to plant the forest?</strong></summary>

Planting trees isn't very expensive, but the land and land prep has significant cost. If so little is generated that the project can't fund the purchase of a small field, then Matto will allocate a suitable solution with his own resources.

I'd love for Chainlife to be able to reforest 10+ acres, but it's all dependent on mint size, price, mint-out, and land availability. At the very least, you can be sure that this project has a positive impact on the environment.

</details>

<details>

<summary><strong>Tokenomics?</strong></summary>

Collection Size: 1024 - which creates a 32 x 32 grid of tokens.&#x20;

Chainlife will have an early mint stage for Enso and FOCUS token holders, called the 'Zen. Mint'. After which, the mint will be public. The cost is the same for both periods: 0.0275 Eth per mint (initially .08 Eth per token, airdrops of additional tokens to owners result in a cost per token to be about .0275 Eth).

Secondary royalties: 7% (5% artist, 2% platform). Chainlife cannot exist on any existing platform's infrastructure. Because on-chain data must be read, new images rendered, and new traits calculated *with every transfer and level shift* Chainlife's API is more demanding than most per-token, and it requires management. Without a large project supporting it, it wouldn't be self-sufficient. Chainlife must be the project that supports the platform - which can and will be used for other experimental games and artwork by Matto (& frens!).

A portion of mint proceeds will be used to create a positive environmental impact. This may be unique for a platform's *genesis* project, but it's aligned with Chainlife and very important, so I'm doing it anyway. Donating the funds to a non-profit is a straightforward and easy solution, but Chainlife is unique, and its impact will be as well.

</details>

<details>

<summary><strong>What are the different mint stages?</strong></summary>

**Stage 1: Zen. Mint**

* Zen. Mint price will be 0.08 Eth, and the minting period will last 10 days. When this period is over, the price will remain the same and the mint will shift to the public stage.
* Minters will need to mint from a wallet holding a Zenerative token (an Enso or FOCUS).
* Minters will select any Enso or FOCUS token during mint, and the smart contract will check its ownership and eligibility.
* Each Zenerative token can only be used once, and their usage or claim-status can be checked on Etherscan.
* The only opportunity to mint a Zen. Mint Chainlife is during the premint stage.

**Public mint info** (incomplete)

* Public mint will be a fixed price of 0.08 Eth. One mint per transaction. Minting and Minting to another address are both supported.

</details>

<details>

<summary><strong>How variable is the project?</strong></summary>

tl;dr: *VERY*.

Chainlife NFTs have an infinitely evolvable starting seed, and they all have a built-in, straightforward preview method. Every minter's Chainlife NFTs will start with the same seed at mint, but they'll be different from every other minter's NFTs' starting seed.

There are 20 palettes, (not weighted the same in probability), and each flips during the NFT's maturity. This results in a collection that can appear to have 40 looks, as tokens will be matured at different rates.

There are 11 standard cell-styles, 10 of which have a 'showoff' version. There is also a style that cycles through some of the other styles, resulting in 22 visual style variations.

6 logic gates are used to determine the new starting seed of Chainlife NFTs at every transfer. Savvy owners could create a completely dead token, one where all their possible cells are live, and anywhere in between.

5 gameplay speeds and a single-cycle step-through mode allows different experiences of the Chainlife during play.

4 switchable rulesets unlock with transfers (or lucky mints). Rulesets are the core to cellular automata; they control which cells are born or survive in the next cycle. All matured Chainlife tokens will be able to access all 4 standard rulesets, but traits will differentiate the tokens that started with more than one ruleset.

3\* overruling traits change how cells are displayed. Some are only visible in live-mode, and one of the three overruling traits has 3 variations of it, but let's just say there are 3 *main* overruling traits.

(Up to) 2 bonus palettes are available to the tokens minted by prior collectors during Zen. Mint. Mints created during the public mint period will not have this functionality.

There are three scales of the 'Fixed' world state, and also an 'Expanding' world state that 'zooms out' on each transfer for a certain number of transfers. There's an unlockable zoom function that allows players to adjust the world the Chainlife lives in, but it resets every refresh.

All tokens have an unlockable ability to preview custom rulesets with a built-in method. Previewing addresses for the next starting seed is always available to all tokens.

Custom rulesets are storable on-chain for automatic use after reaching maturity. These can be stored and updated at any time by the owner, but only if matured will a token try to use the rule.

There are unlockable user-interactivity modes and functions, like auto-repopulation that automatically *temporarily* switches the active ruleset in order to repopulate the playable area.

The NFTs have built-in methods for displaying stats and educational details. The current cycle count can be displayed during play, and an overlay of a cell's neighbor count can be displayed in the paused state.

There are functions to download the game log, a data file describing the current NFT, as well as a seed file for importing into cellular automata applications.

All NFTs can switch palette-specific & black and white matte-colors - for classy display on any screen. The color-matte is displayed if the token is displayed within a non-square frame.

...And there's some other cool stuff hidden within the code that will have to be discovered!

Ignoring starting seed variability (2^160) and some less impactful traits, Chainlife NFTs have over 14 million trait combinations and over 120k visual combinations *at mint*. After maturity, with inclusion of custom rulesets (but still ignoring starting seeds and some traits), Chainlife visual variability/performance grows into the hundreds of billions alternatives.

</details>

<details>

<summary>Why do some demo/simulation tokens immediately die?</summary>

The simulated Chainlife tokens are random, and this includes a special piece of information that owners can set on-chain for their tokens: the Custom Rule. These rules control when cells are born and when they survive to the next cycle, so a random rule can be very chaotic!

If you see the icon for Custom Rule in the token's corner when paused, you can switch the ruleset being used to any of the standard ones, by pressing 6, 7, 8, or 9.

</details>

<details>

<summary><strong>How do you calculate rarity if traits change?</strong></summary>

It's advised that rarity calculations only consider the following traits:

* Palette
* Organism Style
* Showoff
* Aurora
* Joy
* OG
* Expanding World
* Zen. Mint
* Community Reach Bonus (discounted 50%)
* Community Influence Bonus (discounted 50%)

</details>

<details>

<summary><strong>Have another question?</strong></summary>

Ask Matto on Discord or Twitter so he can answer it here!

</details>


# Examples

The following outputs have been curated to illustrate some of the variety in the algorithm and maturity-states possible. All images portray the starting seed. Details below each are simplified traits, all of which can be determined by the token's corner symbols and knowledge about style and palette.

![](/files/iaYDAvyRYt55I2RmhK9s)

* Active Ruleset: Life
* Available Rulesets: Life, Day & Night
* Palette Maturity: Base
* World: Expanding
* Logic Gate: XOR
* Style: Square
* Palette: Aurora Borealis

![](/files/X4kuprSpfbRqHW4yHdWg)

* Active Ruleset: Long Life
* Available Rulesets: Life, Day & Night, Long Life, Seeds
* Palette Maturity: Flipping Unlocked
* World: Fixed - Zoomable
* Logic Gate: NAND
* Style: Diamond (fancy)
* Palette: Mono

![](/files/jI3qmIwW8QTx3JwKmPJP)

* Active Ruleset: Long Life
* Available Rulesets: Life, Long Life
* Palette Maturity: Base
* World: Fixed
* Logic Gate: OR
* Style: Diamond
* Palette: Mandrill

![](/files/rOlP7i9YQdL0CFKKI0ey)

* Active Ruleset: Long Life
* Available Rulesets: Life, Day & Night, Long Life
* Palette Maturity: Base
* World: Fixed - Zoomable
* Logic Gate: XNOR
* Style: Horizontal
* Palette: Koi

![](/files/g7LECTA2R6qLOtR4oxNn)

* Active Ruleset: Seeds
* Available Rulesets: Life, Day & Night, Seeds
* Palette Maturity: Base
* World: Expanding - Zoomable
* Logic Gate: NOR
* Style: Square (fancy)
* Palette: Anemone

![](/files/9GwRZfWrOxjDJYX3L5ee)

* Active Ruleset: Life
* Available Rulesets: Life, Day & Night
* Palette Maturity: Inverted Palette
* World: Fixed - Zoomable
* Logic Gate: XNOR
* Style: Vertical
* Palette: Magma

### Notice the borders in the following outputs (partial and full), which illustrate when a Chainlife NFT has matured Custom Ruleset functionality.

#### **Previewing Unlocked!**

![](/files/V8zZt4n030Y0KqDSg9Bo)

* Active Ruleset: Life
* Available Rulesets: Life, Day & Night, Long Life, Seeds
* Palette Maturity: Rotation Unlocked
* World: Expanding - Zoomable
* Logic Gate: XOR
* Style: Vertical Lines
* Custom Rule Preview: Unlocked
* Palette: FOCUS

#### **Custom Rule Unlocked!**

![](/files/54oVX2SNmsVPJGeWQoNZ)

* Active Ruleset: Custom Ruleset
* Available Rulesets: Life, Day & Night, Long Life, Seeds, Custom Ruleset
* Palette Maturity: Rotation Unlocked
* World: Fixed - Zoomable
* Logic Gate: NAND
* Style: Triangles
* Fully Matured: true
* Palette: Partly Cloudy


# Token Info

### Chainlife is an on-chain, generative-art-mimics-life-mimics-art collectible and evolving game-within-a-game, by Matto.&#x20;

Each Chainlife token is a self-contained, fully on-chain, evolvable, generative art game, and together they form a large, collaborative game world that can be represented in 3D.

Each token features a population of [cellular automata](https://en.wikipedia.org/wiki/Cellular_automaton), that are born, live, or die based on particular *rules*. If left alone, they carry out their business, but as the token matures through on-chain transactions, a player can interact with this population in amazing ways. Owners have even more power, impacting the starting population as well as being able to write custom rules to chain - controlling the very existence of the cellular automata and how every player experiences it.

Before going any further, let me ask you a question: ***What legacy will you add to a Chainlife?***

Every minter, buyer, seller, and customizer changes the Chainlife token - and not *just* by creating a random hash. Most of these changes are easy and happen automatically as the NFTs are transferred between wallets, but there's much more beneath the surface. Collectors and enthusiasts can wield significant power over Chainlife NFTs, if they choose to learn how.


# Maturation

### Interactive functions unlock as the NFT matures.

**Chainlife NFTs mature on-chain as they're transferred between addresses and when an owner 'shifts' their token.**

Transfers and shifts (positive and negative) are tracked on-chain, and together these determine the token's World Level. New looks, features, and functions unlock at both hard-coded and hash-controlled World Levels. An owner sending their NFT to themselves will iterate the transfer count, but there's a better way.

Owners can buy level shifts for a very small amount - 0.001 per level. By using the smart contract's SHIFT\_LEVEL function, an owner can shift a token up or down a couple levels, or dozens, hundreds, or even thousands of levels at once. Note that these are additive, so if a token is already shifted by X, and you shift by Y, it's now shifted by X + Y.

Shifts mature the token just like a transfer, but transfers do something shifts do not; they change the token's starting seed - the population of live cells the token begins with. Chainlife NFT's use the owner addresses of both sender and receiver to calculate the starting seed. In this way, each NFT can change **every time** it is transferred.

Due to this unique feature, a preview function is embedded in every Chainlife, allowing owners/potential-buyers to see the next starting seed if the token was transferred to the specified wallet. For those not familiar with cellular automata, this is useful as it can allow the crafting of the starting seed to produce desired patterns.

Once a Chainlife token reaches a threshold when most feature unlocks have occured, it shows a partial border when paused. This partial border communicates that it has unlocked a new function; the Custom Rule preview. After a Chainlife completes its primary maturation (16 levels), a full border appears around the image in its paused state. Fully matured Chainlife NFTs allow the use of on-chain custom rulesets. For those not familiar with cellular automata, this is one of the most exciting features!

The most important takeaways from all this: transfers will *always* affect a Chainlife NFT, at minimum the starting seed, making each Chainlife NFT permanently customizable. With the ability to quickly shift a token to a new level, collectors interested in the features of the token don't have to trade or transfer their token in order to mature it. Shifts are additive, inexpensive, and are intended to offer owners a non-destructive way to enjoy their token.


# Seed Evolution - TECHNICAL

## FEEL FREE TO SKIP THIS SECTION!

The addresses are converted character by character to their binary equivalents, and these binary values are passed through one of six logic gates: OR (∨), AND (∧), XOR (⊻), NOR (↓), NAND (↑), XNOR (⊙) - in that order, repeating.

At mint, the prior owner is the null address, which is all 0's. The minters address is a hexidecimal string. Both addresses are converted character by character into binary; so 0 -> 0000, 2 -> 0010, 4 -> 0100, 8 -> 1000, and the largest value in hexadecimal 'f' -> 1111.

The first logic gate used is OR, which means that if either things being compared is true (or 1 in this case) then the result is true (or 1 in this case). So, 000000000.... for the null address is all false, and cannot make any part of the result true/1. All 0's in the minters address will be 0's in the result, and all 1's will be 1's in the result. The starting seed is exactly the same as the minters address in binary form, where true/1 is a live cell, and false/0 is a dead cell.

The second logic gate is AND, which requires both inputs to be true/1 to result in true/1. This logic gate is used for the first time when the token is first transferred after mint. The prior owner is the minter, the new owner would be wherever it is sent, and both addresses are converted to binary form, character by character. Stepping through the binary digits of both addresses one by one, if both inputs are 1, then the result at that same index is 1. If they're not both 1, then the result at that index is 0. This resulting sequence becomes the new starting seed.

The process of comparing previous owner address and new owner address continues, each time using 1 of the 6 basic logic gates, in a cyclical sequence. For even more detail, start by reading about logic gates [here](https://en.wikipedia.org/wiki/Logic_gate).


# Token Legend

#### Because Chainlife are so complex, symbols communicate maturity states.

Symbols appear on Chainlife NFTs when they're paused. The icons displayed in the four corners communicate the current state of the Chainlife NFT; this is important because the NFTs 'mature' as they are transferred between wallets. After learning what these symbols mean, collectors and enthusiasts can quickly understand the Chainlife token's maturity state.

Below is a diagram of showing a general overview of a Chainlife token. Note that the color of the lines (pink-ish) is the third color of this Chainlife token's palette.

<figure><img src="/files/VIx0hpZ76G1zpcNrUtJj" alt=""><figcaption></figcaption></figure>


# Rulesets

Rulesets describe what conditions result in a cell to be born or survive (and by extension, die).

## Top Left Corner Symbols: Rulesets

Typical maturation is counter-clockwise from top left, but some tokens are more advanced than others out of the minter!

## LIFE

![LIFE ruleset symbol is a square in top left corner](https://labs.matto.xyz/chainlife/src/images/icons/Ruleset_LIFE.png)&#x20;

A square in the top left corresponds to the rule B3/S23. This means that cells are born if they have 3 neighbors; survive with 2 or 3 neighbors; or they die.

## Day & Night

![Day & Night ruleset symbol is a square in bottom left corner](https://labs.matto.xyz/chainlife/src/images/icons/Ruleset_DayAndNight.png)

A square in the bottom left corresponds to the rule B3678/S34678. This means that cells are born if they have 3, 6, 7, or 8 neighbors; survive with 3, 4, 6, 7, or 8 neighbors; or they die.

## Long Life

![Long Life ruleset symbol is a square in bottom right corner](https://labs.matto.xyz/chainlife/src/images/icons/Ruleset_LongLife.png)

A square in the bottom right corresponds to the rule B345/S5. This means that cells are born if they have 3, 4, or 5 neighbors; survive with 5 neighbors; or they die.

## Seeds

![Seeds ruleset symbol is a square in top right corner](https://labs.matto.xyz/chainlife/src/images/icons/Ruleset_Seeds.png)

A square in the top right corresponds to the rule B2/S. This means that cells are born if they have 2 neighbors; or they die.

## All Rulesets Available

![All Rulesets available but with Seeds selected](https://labs.matto.xyz/chainlife/src/images/icons/Ruleset_All4.png)

As rulesets are unlocked, the icons align. The filled in square shows the currently selected ruleset (Seeds in this example).

## Custom Ruleset  &#x20;

![Custom Ruleset symbol is a centered square](https://labs.matto.xyz/chainlife/src/images/icons/Ruleset_Custom.png)

This symbol means that the token has been customized with a ruleset on-chain, and that the rule has successfully been enabled in-token.


# Palette Maturity

Chainlife palettes mature, changing their default state and unlocking interactive functions.

## **Top Right Corner Symbols: Palette Maturity**

Typical maturation is clockwise from top right, but some tokens are more advanced than others out of the minter!

*Note: Palette Maturity based on transfer counts can differ between Chainlife tokens.*

## Base Palette          &#x20;

![Base palette symbol is top right quarter pie wedge](https://labs.matto.xyz/chainlife/src/images/icons/Palette_Base.png)

The token starts with the original arrangement of the palette's colors (live, recently dead, long-dead/background).

## Flippable Palette

![Palette Flippable symbol is bottom right quarter pie wedge.](https://labs.matto.xyz/chainlife/src/images/icons/Palette_Flippable.png)

User interactivity is unlocked allowing the background color and live color to flip.

## Inverted Palette &#x20;

![Palette Inverted symbol is bottom left quarter pie wedge.](https://labs.matto.xyz/chainlife/src/images/icons/Palette_Inverted.png)

The token starts with the dead cell color and live colors swapped.

## Rotatable Palette

![Palette Cycling symbol is top left quarter pie wedge](https://labs.matto.xyz/chainlife/src/images/icons/Palette_Cycling.png)

User interactivity is unlocked allowing live, recently dead, and background/dead cell colors to be cycled.


# World View

The space the live cells have within a Chainlife token is the world, and various icons reveal nature of the world as it matures.

## **Bottom Left Corner Symbols: World View**

The size of a Chainlife token's world impacts how complex its patterns can be.

## Fixed

![Fixed World symbol](https://labs.matto.xyz/chainlife/src/images/icons/World_Fixed.png)

The size of the world is fixed and does not change on transfer.

## Expanding

![Expanding World symbol](https://labs.matto.xyz/chainlife/src/images/icons/World_Expanding.png)

The size of the world increases on transfers for a time, resulting in a more 'zoomed-out' view.

## Fixed - Zoomable

![Fixed Zoomable World symbol](https://labs.matto.xyz/chainlife/src/images/icons/World_Fixed-Zoom.png)

The Fixed-World token has matured enough to unlock zoom controls. Zooming in or out resets the token to the starting seed at generation 0.

## Expanding - Zoomable

![Expanding Zoomable World symbol](https://labs.matto.xyz/chainlife/src/images/icons/World_Expanding-Zoom.png)

The Expanding-World token has matured enough to unlock zoom controls. Zooming in or out resets the token to the starting seed at generation 0.


# Logic Gate

Every transfer, a different logic gate is used to calculate the population of live cells in every Chainlife token.

## **Bottom Right Corner Symbols: Current Logic Gate**

These symbols represent the [logic gate](https://en.wikipedia.org/wiki/Logic_gate) that was used to create the token's current starting seed from the current owner's address and the prior owner's address.

The logic gate used changes every transfer (here, from left to right, first row, then second, then back to first, etc).

## OR

![Logical OR symbol](https://labs.matto.xyz/chainlife/src/images/icons/LogicGate_OR.png)

At the given index, if either the previous or current owner's address equates to '1', the resulting seed value in the Chainlife token is '1'.

## AND

![Logical AND symbol](https://labs.matto.xyz/chainlife/src/images/icons/LogicGate_AND.png)

At the given index, if both the previous and current owner's address equates to '1', the resulting seed value in the Chainlife token is '1'.

## XOR

![Logical XOR symbol](https://labs.matto.xyz/chainlife/src/images/icons/LogicGate_XOR.png)

At the given index, if only one of the previous and current owner's address equates to '1', the resulting seed value in the Chainlife token is '1'.

## NOR

![Logical NOR symbol](https://labs.matto.xyz/chainlife/src/images/icons/LogicGate_NOR.png)

At the given index, if either the previous or current owner's address equates to '1', the resulting seed value in the Chainlife token is '0'.

## NAND

![Logical NAND symbol](https://labs.matto.xyz/chainlife/src/images/icons/LogicGate_NAND.png)

At the given index, if both the previous and current owner's address equates to '1', the resulting seed value in the Chainlife token is '0'.

## XNOR

![Logical XNOR symbol](https://labs.matto.xyz/chainlife/src/images/icons/LogicGate_XNOR.png)

At the given index, if only one of the previous and current owner's address equates to '1', the resulting seed value in the Chainlife token is '0'.


# Interactivity

Without user input, once activated, Chainlife NFTs are 0-player games. With user interaction, they're 1-player games. Depending on definitions, it could be argued that they're also 2-player games. But anyway, here's how you interact with them.

Step 1: click on one or press SPACE.

Step 2: ...Well, that's up to you, check out all the various hotkeys and have fun!


# Starting Interactivity

<figure><img src="/files/M7CYFHIXExDVNqYfp52m" alt=""><figcaption></figcaption></figure>

* Tap/click on the image or press 'SPACE' to pause/unpause the NFT
* 'H' for on-screen help
* 'N' to run one generation
* 1/2/3/4/5 sets the speed
* 'Q' to overlay the quantity of neighbors each cells has
* 'C' to overlay the current cycle #
* 'E' to export seed (uncompressed rle)
* 'S' to save frame (png)
* 'D' to export token's current data (txt)
* 'L' to download the game log (txt)
* '<' or '>' to cycle through palette colors for the color-matte
* '\\' to open the input field
  * Enter an Ethereum address to preview the starting seed if the token is transferred there.


# Unlockable Interactivity

<figure><img src="/files/GysHy6Ok3TmN0NCozj7L" alt=""><figcaption></figcaption></figure>

* 6/7/8/9 selects rulesets used to determine the next generation's population
* 'A' to enable automatic repopulation\*
* 'I' or 'O' to zoom in or out (resets NFT to the starting seed pattern, generation 0)
* 'F' to flip the palette colors
* 'R' to rotate the palette colors
* Enter a Custom Rule in the input field (format: **B*****n*****/S*****n*** where *n* are digits) to preview rules.
* *and some other fun things...*

*\*repopulation disables game log*


# Trait-Specific Interactivity

<figure><img src="/files/yjST6EQWmYiXrL034eel" alt=""><figcaption></figcaption></figure>

* 'T' or 'Y' to switch palettes - *Zen. Mints only.*
* 'J' disables Joy overlays - *Non-standard Joy tokens only.*
* 'G' Enables ghost mode - *Non-standard Joy tokens only.*
* *and some other fun things...*

## **'Zen. Mints' and special interactivity**

**Chainlife NFTs minted during the premint will always be special.**

To thank prior collectors of my Art Blocks 'Zenerative' projects, Enso and FOCUS, the premint period is token-gated to only allow wallets holding those tokens to mint.

Tokens minted during premint will be 'Zen. Mints,' and they'll have a corresponding trait. In addition, they have an ability that other tokens do not; they can switch to Enso and FOCUS palettes during play.

Regardless of the a Zen. Mint's palette, the keys 'T' and 'Y' (for ty / thank you) will switch the palette being used to Enso or FOCUS, respectively. These changes are not permanent, and they'll only last until the token is refreshed.

## 'Non-Standard Joy' special interactivity

**The baseline trait for all Chainlife tokens is `Joy : Standard`.**

Some tokens have other Joy traits, and those tokens have joy-based interactive functions.


# ALL INTERACTIVITY

<figure><img src="/files/VPyjSRQc9ILw54RhSoco" alt=""><figcaption></figcaption></figure>

* Tap/click on the image or press 'SPACE' to pause/unpause the NFT
* 'H' for on-screen help
* 'N' to run one generation
* 1/2/3/4/5 sets the speed
* 'Q' to overlay the quantity of neighbors each cells has
* 'C' to overlay the current cycle #
* 'E' to export seed (uncompressed rle)
* 'S' to save frame (png)
* 'D' to export token's current data (txt)
* 'L' to download the game log (txt)
* '<' or '>' to cycle through palette colors for the color-matte
* 6/7/8/9 selects rulesets used to determine the next generation's population
* 'A' to enable automatic repopulation\*
* 'I' or 'O' to zoom in or out (resets NFT to the starting seed pattern, generation 0)
* 'F' to flip the palette colors
* 'R' to rotate the palette colors
* 'T' or 'Y' to switch palettes - *Zen. Mints only*
* 'J' disables Joy overlays - *Non-standard Joy tokens only*
* 'G' Enables ghost mode - *Non-standard Joy tokens only*
* *and some other fun things...*
* '\\' to open the input field
  * Enter an Ethereum address to preview the starting seed if the token is transferred there.
  * Enter a Custom Rule in the input field (format: **B*****n*****/S*****n*** where *n* are digits) to preview rules.

*\*repopulation disables game log*


# Room for Growth

### **The Chainlife collection has sets of traits that don't affect individual tokens.**

These traits are included for a number of reasons, but most significantly, they allow the community to take part in the growth of the project. One pair of these traits are specific to the Chainlife World and the playable levels, so we'll cover 'community traits' in that section.&#x20;

### Every Chainlife token has a pair of Esoterra traits.

I wanted to look at the on-chain data of a Chainlife token in a different, dimensional way, so I coded something I'm calling 'Esoterra.' I created a 3D renderer proof-of-concept for this, explorable from the World viewer. The Esoterra script uses the same on-chain script inputs, and the same traits from the token.&#x20;

While I have ideas for what this can become, it's not *only* mine to make. The data is available and anyone can help build Esoterra: a unique sort of metaverse that is meta-connected to a two-dimensional game token that lives in a 3d game-world. I don't know if it will be navigable with VR headsets, or if it'll just be a fantastic environment built using a token's traits, but it has great potential to become something amazing that together, Chainlife owners and appreciatooors build.

Time will tell what - if anything - Esoterra becomes. Chainlife is the 'genesis project' of my platform, and it will be the foundation for my future interactive projects. My hope is that passionate and enthusiastic collectors join me in this exploration of deep-blockchain-interaction generative art and games.


# Chainlife Tokens Coexist

The Chainlife World is a 32 x 32 grid (1024 cells), where each cell represents a Chainlife token. All tokens are at the same level at mint: Level 0. Every transfer, and after user-initiated on-chain 'shifts', Chainlife tokens mature and change. These changes occur in the thumbnail image, in the live-view of every token, and in the Chainlife World.

As tokens move up or down levels on-chain, they change levels in the 3D world. Token 0 will always be at grid coordinates (0,0) - top left in overhead view - and the last token will always be in the bottom right in overhead view - but their levels can continually change, forever.


# Utility?

Individual levels of the Chainlife world (which represent Chainlife tokens at their on-chain 'levels'), can be exported for use in popular cellular automata applications (like [Golly](https://golly.sourceforge.net/), check it out!), or can be played directly from the Chainlife generator API.

Besides whatever coolness exists in using on-chain degen-group-behavior to simulate cellular automata, owners can customize their token's levels up or down (for a very small fee), thus allowing owners to work together to create patterns in the Chainlife World.


# World Interactivity

Click, drag, and scroll to navigate in 3D.&#x20;

#### To explore specific levels and tokens, click anywhere on the viewer so it's active, then press '\\' to open the input field...

{% tabs %}
{% tab title="View a Level" %}
In the input field, enter 'L' and a number (eg. L0) to view a single level of the world, then...&#x20;

* Press 'E' to export that token's level's pattern.&#x20;
* Press 'P' to play that token's level's pattern.
  {% endtab %}

{% tab title="View a Token" %}
In the input field, enter 'T' and the token-ID (eg. T1234) to highlight an individual token, then...

* Press 'C' to view that Chainlife token's live-view generator.
* Press 'V' to view that token's 'Esoterra'.
* Press 'E' to export that token's level's pattern.&#x20;
* Press 'P' to play that token's level's pattern.
  {% endtab %}
  {% endtabs %}

When viewing a level or token, press any key other than those listed above to return to the world view.


# Community Traits

Every token has a level, which turns into the level of the world the token occupies. Tokens also have grid positions in their metadata, stored as traits for easy searching on marketplaces.

Additionally, every token has a pair of additional traits that have no effect in token, but have an effect in the world view. These traits, `Additional Community Influence` and `Additional Community Reach`, mimic our own presence in the world, as some of us have more influence or reach than others. These traits are designed to alter a level's playability, and the community of owners and appreciators will have a say in my implementation plan.


# Fighting Climate Change

**The Chainlife project begins carbon negative.**

The entire Chainlife project's carbon footprint from deployment, through mint, and if each token's owner completed a few on-chain transactions, is estimated to be less than 400 pounds of carbon dioxide. Chainlife has preemptively offset 100-times that amount: 40,000 pounds of carbon dioxide. That's about 5 times the average American home's electricity use - for a year.

The Chainlife project doesn't stop there, it’s going to make a difference on the ground, in the real world. We need to make big changes as soon as possible, because acting today is much more important than acting tomorrow.

> "It’s now or never, if we want to limit global warming to 1.5°C (2.7°F)," said Skea. "Without immediate and deep emissions reductions across all sectors, it will be impossible." \
> -International Panel on Climate Change ([April 2022 press release](https://www.ipcc.ch/site/assets/uploads/2022/04/IPCC_AR6_WGIII_PressRelease_English.pdf)), quoting IPCC Working Group III Co-Chair Jim Skea.

A portion of Chainlife's minting proceeds will be used to buy a piece of bare land and turn it into a thriving, healthy forest. As trees grow, they pull carbon dioxide from the atmosphere and lock it up in their living biomass. As long as the forest continues to thrive, carbon can be captured and stored for generations.

In addition to fighting global warming and continually ensuring that the Chainlife project remains carbon negative, forestation of land can have a multitude of benefits. It improves soil health and fights erosion, it cleans the water we drink and the air we breathe, it promotes local biodiversity, and it provides a home for plants and animals that share our little grid of the world.

Additional impact will come from social media outreach and network effects. Matto will share this journey with the world through social media and through links on the project's websites. The more success Chainlife NFTs find, the more it's climate-fighting benefit will be known. Matto's background as a filmmaker, photographer, and educator will be particularly useful here, while he documents the process of turning bare land into a carbon-capturing forest.

Chainlife is going to lead by example and fight climate change - and the world is going to know about it.

#### One last note: <a href="#one-last-note" id="one-last-note"></a>

The API and infrastructure for maintaining Chainlife runs on Azure, which is part of Microsoft, which has been [carbon neutral since 2012](https://www.microsoft.com/en-us/corporate-responsibility/sustainability?activetab=pivot_1%3aprimaryr3).


# ENTIRE SECTION IS WIP


# Token Tech

Chainlife NFTs are ERC-721 compliant tokens on Ethereum. Matto wrote the smart contract that deviates from a standard token contract in a few ways:

* Transfers are counted for every token
* The prior owner of every token is tracked.
* There are two pieces of user-settable pieces of on-chain data:
  * Level Shift allows owners to adjust the world-level their token lives on.
  * Custom Rule allows owners to set the ruleset that control their token's population.
* A custom minting function checks ownership of Matto's Art Blocks projects, acting as a gate that only allows collectors to mint during that phase.
* Generative scripts can be stored on-chain, for use to recreate token art
* A single call to the contract returns all the various information that the generative script requires (token ID, random hash, owner, prior owner, transfer count, shift level, custom rule)


# App Frontend

The front end app is made in REACT. It creates a nice UI for the 3 types of blockchain functions that this project utilizes: mint, level shift, and custom rule setting.&#x20;

...And it looks good. I'll write more later about the tech. details.


# Backend


# Azure

...it's intense and easily scalable. I'll write more later, but yeah, it's part of Microsoft and fully carbon neutral.


# Public API

An API is required to calculate the traits (from all on-chain data), render images as the tokens mature, and generate the html for live-views of the tokens. Additionally, because the tokens together interact in the Chainlife world, levels of all tokens must be tracked.

The API was coded by Drake and West Dev to Matto's specifications. It listens for events emitted from the smart contract and provides various endpoints for the project:

* tokenURI: JSON data that marketplaces use to retrieve token data
* tokens-level: an array of token objects with the specific information to calculate the Chainlife World view
* generator: html and scripts to generate a playable Chainlife token
* level: html and scripts to generate a playable Chainlfie level
* esoterra: html and scripts to generate the experimental Chainlife Esoterra art


# Videos

## Intro Video

{% embed url="<https://youtu.be/1GanontDIEs>" %}


# Terms

Chainlife NFTs are artworks and not financial products.

## **Terms and Conditions**

&#x20;

**Agreement between User and <https://chainlife.xyz>**

Welcome to <https://chainlife.xyz>. The <https://chainlife.xyz> website (the "Site") is comprised of various web pages operated by MetaVentures LLC DBA GenGames ("MetaVentures"). <https://chainlife.xyz> is offered to you conditioned on your acceptance without modification of the terms, conditions, and notices contained herein (the "Terms"). Your use of <https://chainlife.xyz> constitutes your agreement to all such Terms. Please read these terms carefully, and keep a copy of them for your reference.

&#x20;

<https://chainlife.xyz> is an E-Commerce Site.

&#x20;

Chainlife.xyz is an art-NFT project's website. It allows viewing of the artwork in various ways. It also acts as a user interface for the Chainlife NFT smart contract. Chainlife NFTs are experimental artworks and should not be considered financial products or investments.

&#x20;

**Privacy**

Your use of <https://chainlife.xyz> is subject to MetaVentures's Privacy Policy. Please review our Privacy Policy, which also governs the Site and informs users of our data collection practices.

&#x20;

**Electronic Communications**

Visiting <https://chainlife.xyz> or sending emails to MetaVentures constitutes electronic communications. You consent to receive electronic communications and you agree that all agreements, notices, disclosures and other communications that we provide to you electronically, via email and on the Site, satisfy any legal requirement that such communications be in writing.

&#x20;

**Children Under Thirteen**

MetaVentures does not knowingly collect, either online or offline, personal information from persons under the age of thirteen. If you are under 18, you may use <https://chainlife.xyz> only with permission of a parent or guardian.

&#x20;

**Links to Third Party Sites/Third Party Services**

<https://chainlife.xyz> may contain links to other websites ("Linked Sites"). The Linked Sites are not under the control of MetaVentures and MetaVentures is not responsible for the contents of any Linked Site, including without limitation any link contained in a Linked Site, or any changes or updates to a Linked Site. MetaVentures is providing these links to you only as a convenience, and the inclusion of any link does not imply endorsement by MetaVentures of the site or any association with its operators.

&#x20;

Certain services made available via <https://chainlife.xyz> are delivered by third party sites and organizations. By using any product, service or functionality originating from the <https://chainlife.xyz> domain, you hereby acknowledge and consent that MetaVentures may share such information and data with any third party with whom MetaVentures has a contractual relationship to provide the requested product, service or functionality on behalf of <https://chainlife.xyz> users and customers.

&#x20;

**No Unlawful or Prohibited Use/Intellectual Property**

You are granted a non-exclusive, non-transferable, revocable license to access and use <https://chainlife.xyz> strictly in accordance with these terms of use. As a condition of your use of the Site, you warrant to MetaVentures that you will not use the Site for any purpose that is unlawful or prohibited by these Terms. You may not use the Site in any manner which could damage, disable, overburden, or impair the Site or interfere with any other party's use and enjoyment of the Site. You may not obtain or attempt to obtain any materials or information through any means not intentionally made available or provided for through the Site.

&#x20;

All content included as part of the Service, such as text, graphics, logos, images, as well as the compilation thereof, and any software used on the Site, is the property of MetaVentures or its suppliers and protected by copyright and other laws that protect intellectual property and proprietary rights. You agree to observe and abide by all copyright and other proprietary notices, legends or other restrictions contained in any such content and will not make any changes thereto.

&#x20;

You will not modify, publish, transmit, reverse engineer, participate in the transfer or sale, create derivative works, or in any way exploit any of the content, in whole or in part, found on the Site. MetaVentures content is not for resale. Your use of the Site does not entitle you to make any unauthorized use of any protected content, and in particular you will not delete or alter any proprietary rights or attribution notices in any content. You will use protected content solely for your personal use, and will make no other use of the content without the express written permission of MetaVentures and the copyright owner. You agree that you do not acquire any ownership rights in any protected content. We do not grant you any licenses, express or implied, to the intellectual property of MetaVentures or our licensors except as expressly authorized by these Terms.

&#x20;

**International Users**

The Service is controlled, operated and administered by MetaVentures from our offices within the USA. If you access the Service from a location outside the USA, you are responsible for compliance with all local laws. You agree that you will not use the MetaVentures Content accessed through <https://chainlife.xyz> in any country or in any manner prohibited by any applicable laws, restrictions or regulations.

&#x20;

**Indemnification**

You agree to indemnify, defend and hold harmless MetaVentures, its officers, directors, employees, agents and third parties, for any losses, costs, liabilities and expenses (including reasonable attorney's fees) relating to or arising out of your use of or inability to use the Site or services, any user postings made by you, your violation of any terms of this Agreement or your violation of any rights of a third party, or your violation of any applicable laws, rules or regulations. MetaVentures reserves the right, at its own cost, to assume the exclusive defense and control of any matter otherwise subject to indemnification by you, in which event you will fully cooperate with MetaVentures in asserting any available defenses.

&#x20;

**Arbitration**

In the event the parties are not able to resolve any dispute between them arising out of or concerning these Terms and Conditions, or any provisions hereof, whether in contract, tort, or otherwise at law or in equity for damages or any other relief, then such dispute shall be resolved only by final and binding arbitration pursuant to the Federal Arbitration Act, conducted by a single neutral arbitrator and administered by the American Arbitration Association, or a similar arbitration service selected by the parties, in a location mutually agreed upon by the parties. The arbitrator's award shall be final, and judgment may be entered upon it in any court having jurisdiction. In the event that any legal or equitable action, proceeding or arbitration arises out of or concerns these Terms and Conditions, the prevailing party shall be entitled to recover its costs and reasonable attorney's fees. The parties agree to arbitrate all disputes and claims in regards to these Terms and Conditions or any disputes arising as a result of these Terms and Conditions, whether directly or indirectly, including Tort claims that are a result of these Terms and Conditions. The parties agree that the Federal Arbitration Act governs the interpretation and enforcement of this provision. The entire dispute, including the scope and enforceability of this arbitration provision shall be determined by the Arbitrator. This arbitration provision shall survive the termination of these Terms and Conditions.

&#x20;

**Class Action Waiver**

Any arbitration under these Terms and Conditions will take place on an individual basis; class arbitrations and class/representative/collective actions are not permitted. THE PARTIES AGREE THAT A PARTY MAY BRING CLAIMS AGAINST THE OTHER ONLY IN EACH'S INDIVIDUAL CAPACITY, AND NOT AS A PLAINTIFF OR CLASS MEMBER IN ANY PUTATIVE CLASS, COLLECTIVE AND/ OR REPRESENTATIVE PROCEEDING, SUCH AS IN THE FORM OF A PRIVATE ATTORNEY GENERAL ACTION AGAINST THE OTHER. Further, unless both you and MetaVentures agree otherwise, the arbitrator may not consolidate more than one person's claims, and may not otherwise preside over any form of a representative or class proceeding.

&#x20;

**Liability Disclaimer**

THE INFORMATION, SOFTWARE, PRODUCTS, AND SERVICES INCLUDED IN OR AVAILABLE THROUGH THE SITE MAY INCLUDE INACCURACIES OR TYPOGRAPHICAL ERRORS. CHANGES ARE PERIODICALLY ADDED TO THE INFORMATION HEREIN. METAVENTURES LLC AND/OR ITS SUPPLIERS MAY MAKE IMPROVEMENTS AND/OR CHANGES IN THE SITE AT ANY TIME.

&#x20;

METAVENTURES LLC AND/OR ITS SUPPLIERS MAKE NO REPRESENTATIONS ABOUT THE SUITABILITY, RELIABILITY, AVAILABILITY, TIMELINESS, AND ACCURACY OF THE INFORMATION, SOFTWARE, PRODUCTS, SERVICES AND RELATED GRAPHICS CONTAINED ON THE SITE FOR ANY PURPOSE. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, ALL SUCH INFORMATION, SOFTWARE, PRODUCTS, SERVICES AND RELATED GRAPHICS ARE PROVIDED "AS IS" WITHOUT WARRANTY OR CONDITION OF ANY KIND. METAVENTURES LLC AND/OR ITS SUPPLIERS HEREBY DISCLAIM ALL WARRANTIES AND CONDITIONS WITH REGARD TO THIS INFORMATION, SOFTWARE, PRODUCTS, SERVICES AND RELATED GRAPHICS, INCLUDING ALL IMPLIED WARRANTIES OR CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT.

&#x20;

TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL METAVENTURES LLC AND/OR ITS SUPPLIERS BE LIABLE FOR ANY DIRECT, INDIRECT, PUNITIVE, INCIDENTAL, SPECIAL, CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF USE, DATA OR PROFITS, ARISING OUT OF OR IN ANY WAY CONNECTED WITH THE USE OR PERFORMANCE OF THE SITE, WITH THE DELAY OR INABILITY TO USE THE SITE OR RELATED SERVICES, THE PROVISION OF OR FAILURE TO PROVIDE SERVICES, OR FOR ANY INFORMATION, SOFTWARE, PRODUCTS, SERVICES AND RELATED GRAPHICS OBTAINED THROUGH THE SITE, OR OTHERWISE ARISING OUT OF THE USE OF THE SITE, WHETHER BASED ON CONTRACT, TORT, NEGLIGENCE, STRICT LIABILITY OR OTHERWISE, EVEN IF METAVENTURES LLC OR ANY OF ITS SUPPLIERS HAS BEEN ADVISED OF THE POSSIBILITY OF DAMAGES. BECAUSE SOME STATES/JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES, THE ABOVE LIMITATION MAY NOT APPLY TO YOU. IF YOU ARE DISSATISFIED WITH ANY PORTION OF THE SITE, OR WITH ANY OF THESE TERMS OF USE, YOUR SOLE AND EXCLUSIVE REMEDY IS TO DISCONTINUE USING THE SITE.

&#x20;

**Termination/Access Restriction**

MetaVentures reserves the right, in its sole discretion, to terminate your access to the Site and the related services or any portion thereof at any time, without notice. To the maximum extent permitted by law, this agreement is governed by the laws of the State of North Carolina and you hereby consent to the exclusive jurisdiction and venue of courts in North Carolina in all disputes arising out of or relating to the use of the Site. Use of the Site is unauthorized in any jurisdiction that does not give effect to all provisions of these Terms, including, without limitation, this section.

&#x20;

You agree that no joint venture, partnership, employment, or agency relationship exists between you and MetaVentures as a result of this agreement or use of the Site. MetaVentures's performance of this agreement is subject to existing laws and legal process, and nothing contained in this agreement is in derogation of MetaVentures's right to comply with governmental, court and law enforcement requests or requirements relating to your use of the Site or information provided to or gathered by MetaVentures with respect to such use. If any part of this agreement is determined to be invalid or unenforceable pursuant to applicable law including, but not limited to, the warranty disclaimers and liability limitations set forth above, then the invalid or unenforceable provision will be deemed superseded by a valid, enforceable provision that most closely matches the intent of the original provision and the remainder of the agreement shall continue in effect.

&#x20;

Unless otherwise specified herein, this agreement constitutes the entire agreement between the user and MetaVentures with respect to the Site and it supersedes all prior or contemporaneous communications and proposals, whether electronic, oral or written, between the user and MetaVentures with respect to the Site. A printed version of this agreement and of any notice given in electronic form shall be admissible in judicial or administrative proceedings based upon or relating to this agreement to the same extent and subject to the same conditions as other business documents and records originally generated and maintained in printed form. It is the express wish to the parties that this agreement and all related documents be written in English.

&#x20;

**Changes to Terms**

MetaVentures reserves the right, in its sole discretion, to change the Terms under which <https://chainlife.xyz> is offered. The most current version of the Terms will supersede all previous versions. MetaVentures encourages you to periodically review the Terms to stay informed of our updates.

&#x20;

**Contact Us**

MetaVentures welcomes your questions or comments regarding the Terms:

&#x20;

MetaVentures LLC

4030 Wake Forest Road STE 349

Raleigh, North Carolina 27609

&#x20;

Email Address:

<monkmatto@protonmail.com>

&#x20;

Effective as of November 07, 2022

&#x20;


# Privacy

## **Privacy Policy**

&#x20;

Protecting your private information is our priority. This Statement of Privacy applies to <https://chainlife.xyz>, and MetaVentures LLC and governs data collection and usage. For the purposes of this Privacy Policy, unless otherwise noted, all references to MetaVentures LLC include <https://chainlife.xyz>, MetaVentures, GenGames, <https://gengames.io> and <https://api.gengames.io>. The MetaVentures website is a art-NFT project site. By using the MetaVentures website, you consent to the data practices described in this statement.

&#x20;

**Collection of your Personal Information**

We do not collect any personal information about you unless you voluntarily provide it to us. However, you may be required to provide certain personal information to us when you elect to use certain products or services. These may include: (a) registering for an account; (b) entering a sweepstakes or contest sponsored by us or one of our partners; (c) signing up for special offers from selected third parties; (d) sending us an email message; (e) submitting your credit card or other payment information when ordering and purchasing products and services. To wit, we will use your information for, but not limited to, communicating with you in relation to services and/or products you have requested from us. We also may gather additional personal or non-personal information in the future.

&#x20;

**Sharing Information with Third Parties**

MetaVentures does not sell, rent or lease its customer lists to third parties.

&#x20;

MetaVentures may share data with trusted partners to help perform statistical analysis, send you email or postal mail, provide customer support, or arrange for deliveries. All such third parties are prohibited from using your personal information except to provide these services to MetaVentures, and they are required to maintain the confidentiality of your information.

&#x20;

MetaVentures may disclose your personal information, without notice, if required to do so by law or in the good faith belief that such action is necessary to: (a) conform to the edicts of the law or comply with legal process served on MetaVentures or the site; (b) protect and defend the rights or property of MetaVentures; and/or (c) act under exigent circumstances to protect the personal safety of users of MetaVentures, or the public.

&#x20;

**Automatically Collected Information**

Information about your computer hardware and software may be automatically collected by MetaVentures. This information can include: your IP address, browser type, domain names, access times and referring website addresses. This information is used for the operation of the service, to maintain quality of the service, and to provide general statistics regarding use of the MetaVentures website.

&#x20;

**Use of Cookies**

The MetaVentures website may use "cookies" to help you personalize your online experience. A cookie is a text file that is placed on your hard disk by a web page server. Cookies cannot be used to run programs or deliver viruses to your computer. Cookies are uniquely assigned to you, and can only be read by a web server in the domain that issued the cookie to you.

&#x20;

One of the primary purposes of cookies is to provide a convenience feature to save you time. The purpose of a cookie is to tell the Web server that you have returned to a specific page. For example, if you personalize MetaVentures pages, or register with MetaVentures site or services, a cookie helps MetaVentures to recall your specific information on subsequent visits. This simplifies the process of recording your personal information, such as billing addresses, shipping addresses, and so on. When you return to the same MetaVentures website, the information you previously provided can be retrieved, so you can easily use the MetaVentures features that you customized.

&#x20;

You have the ability to accept or decline cookies. Most Web browsers automatically accept cookies, but you can usually modify your browser setting to decline cookies if you prefer. If you choose to decline cookies, you may not be able to fully experience the interactive features of the MetaVentures services or websites you visit.

&#x20;

**Links**

This website contains links to other sites. Please be aware that we are not responsible for the content or privacy practices of such other sites. We encourage our users to be aware when they leave our site and to read the privacy statements of any other site that collects personally identifiable information.

&#x20;

**Security of your Personal Information**

MetaVentures secures your personal information from unauthorized access, use, or disclosure. MetaVentures uses the following methods for this purpose:

&#x20;

&#x20;\-          SSL Protocol

&#x20;

When personal information (such as a credit card number) is transmitted to other websites, it is protected through the use of encryption, such as the Secure Sockets Layer (SSL) protocol.

&#x20;

We strive to take appropriate security measures to protect against unauthorized access to or alteration of your personal information. Unfortunately, no data transmission over the Internet or any wireless network can be guaranteed to be 100% secure. As a result, while we strive to protect your personal information, you acknowledge that: (a) there are security and privacy limitations inherent to the Internet which are beyond our control; and (b) security, integrity, and privacy of any and all information and data exchanged between you and us through this Site cannot be guaranteed.

&#x20;

**Right to Deletion**

Subject to certain exceptions set out below, on receipt of a verifiable request from you, we will:

•     Delete your personal information from our records; and

•     Direct any service providers to delete your personal information from their records.

&#x20;

Please note that we may not be able to comply with requests to delete your personal information if it is necessary to:

•     Complete the transaction for which the personal information was collected, fulfill the terms of a written warranty or product recall conducted in accordance with federal law, provide a good or service requested by you, or reasonably anticipated within the context of our ongoing business relationship with you, or otherwise perform a contract between you and us;

•     Detect security incidents, protect against malicious, deceptive, fraudulent, or illegal activity; or prosecute those responsible for that activity;

•     Debug to identify and repair errors that impair existing intended functionality;

•     Exercise free speech, ensure the right of another consumer to exercise his or her right of free speech, or exercise another right provided for by law;

•     Comply with the California Electronic Communications Privacy Act;

•     Engage in public or peer-reviewed scientific, historical, or statistical research in the public interest that adheres to all other applicable ethics and privacy laws, when our deletion of the information is likely to render impossible or seriously impair the achievement of such research, provided we have obtained your informed consent;

•     Enable solely internal uses that are reasonably aligned with your expectations based on your relationship with us;

•     Comply with an existing legal obligation; or

•     Otherwise use your personal information, internally, in a lawful manner that is compatible with the context in which you provided the information.

&#x20;

**Children Under Thirteen**

MetaVentures does not knowingly collect personally identifiable information from children under the age of thirteen. If you are under the age of thirteen, you must ask your parent or guardian for permission to use this website.

&#x20;

**External Data Storage Sites**

We may store your data on servers provided by third party hosting vendors with whom we have contracted.

&#x20;

**Changes to this Statement**

MetaVentures reserves the right to change this Privacy Policy from time to time. We will notify you about significant changes in the way we treat personal information by sending a notice to the primary email address specified in your account, by placing a prominent notice on our website, and/or by updating any privacy information. Your continued use of the website and/or Services available after such modifications will constitute your: (a) acknowledgment of the modified Privacy Policy; and (b) agreement to abide and be bound by that Policy.

&#x20;

**Contact Information**

MetaVentures welcomes your questions or comments regarding this Statement of Privacy. If you believe that MetaVentures has not adhered to this Statement, please contact MetaVentures at:

&#x20;

MetaVentures LLC

4030 Wake Forest Road STE 349

Raleigh, North Carolina 27609

&#x20;

Email Address:

<monkmatto@protonmail.com>

&#x20;

Effective as of November 07, 2022

&#x20;


# Goerli

Goerli contract: 0x04c9E99D134565eB0F0Fef07FB70741A5b615075

## Switch to Goerli Test Network

Goerli is a test network for Ethereum. It uses a different Eth, called Goerli Eth, which has no value, and tokens on Goerli have no value. If you haven't ever used Goerli, you won't have any GoerliETH. Post your address in the discord or message Matto with your address and he'll send you .1 GoerliETH, which is plenty for this experiment.

You have to switch the network your web3 app or browser extension uses from mainnet to goerli in order to interact with the Goerli testnet. You don't need a different eth address; you can use one you already have.

In the Metamask extension, there's a dropdown at the top of the popup window\...

![](/files/rFkWfq3Dm1GONb6SJb1p)

If this is the first time you've used a testnet, you may have to enable them...

![](/files/3p8pbBWF4xPBdVBu7qva)

![](/files/hFp07HKgAqaAevryRneH)

After testnets are enabled, go back to the dropdown and select Goerli...

![](/files/hRq0VCIpwJQNX5cI0ygW)

Once you select Goerli test network, it will show at the top of Metamask, and any Goerli Eth you have will be shown as GoerliETH so people don't confuse the two.

&#x20;![](/files/UG29kWu3m7QRjYwBYqzc)

All Chainlife testnet activity will be on Goerli! When you're done interacting with the testnet, you will need to switch back to mainnet to interact on the Ethereum mainnet.


