Survivors of the Merge

posers
6 min readNov 4, 2022

It’s been a little over a month since Ethereum switched to PoS. During this time, some projects have come and gone, but we continue to forge ahead as a Poser community. Congratulations to all those who are surviving during this bearish time and continuing to build for the web3 community!

In this article, the dev team will outline why Posers is a historically significant collection and why it is the first on-chain PFP on PoS.

We took a closer look at all the transactions for 10 blocks after (and during) the Merge and made a table describing all the NFT projects for that time interval:

First 10 blocks after the Merge (by Posers)

We can consider two versions of this table: one showing all projects, and one showing only those that survived and continue to operate. We think it’s cool to see this blockchain record laid out like this — feel free to share it on social networks!

The Merge happened on block 15537394: https://etherscan.io/block/15537394

The first mint of Posers was done on block 15537397 (after 4 blocks):

https://etherscan.io/tx/0x0a788452a371bf580b15f972e88e6cdca2ed226e60c52a48ec9d2f8cb42f3a7d

During this time, several projects succeeded in minting, let’s take a closer look at them:

The Transition — first on-chain nft on POS

The Merge — first off-chain nft on POS

BLOOM — first airdropped off-chain PFP on POS without reveal (reveal on October 2)

Posers — first on-chain PFP on POS

Several projects never even revealed their art, some showed up and disappeared right away.

What about the Posers?

Not only did we give the community awesome pixel avatars, but we also keep working on utilities that will benefit our holders, as well as the entire NFT community!

We recently released the Poser Customizer Tool, a utility for customizing the appearance of your Poser NFT (which we detailed in a previous article.) In addition, we are developing the Posers Swap Tool, a utility with the ability to securely swap your Posers with each other. At first you will only be able to swap Posers, but we plan to support additional selected collections to our Swap Tool at a later time!

We are happy once again to confirm that Posers are the first on-chain PFP collection minted since the Ethereum Network switched from Proof of Work to Proof of Stake. We have used this, and only this statement since our beginning, as you can see in the original post from our discord (this message has never been edited):

And here’s why this is really important: Due to the fact that Posers is an on-chain collection, Posers does not depend on any servers and will be accessible for as long as the Ethereum blockchain itself exists. Moreover, neither metadata, nor images, nor any other parameters of the original NFT in Posers can be changed by developers (or anyone else), since our contract is owned by null-address, as we renounced ownership immediately after the mint. This is further proof of Posers’ reliability and ultimate longevity. Posers not only made history as “the first on-chain PFP collection on the POS”, but your Posers will be with you forever!

Some were critical that the Poser contract was created before PoS, as were the airdrops we made. Note to readers that the idea of early airdrops was agreed upon beforehand in our discord.
*message has also never been edited and implemented for many of the reasons described in the previous article. (https://medium.com/@poserscollection/posers-dfc4e8db50f2)

We can confidently say that the Posers metadata didn’t exist before POS, and therefore the NFTs (by definition) did not exist yet either. If you’re interested to understand more about this, we tried to cover the question in as much detail as possible from the technical point of view.

How metadata generation works

What is token metadata

The ERC721 standard has a method tokenURI, which takes in a tokenID and returns a URI that points to some JSON object describing the particular token. It has fields like “name”, “image”, “description” — that is the metadata. The generated JSON should fully identify and describe the token in a format supported by the major marketplaces. For example: https://docs.opensea.io/docs/metadata-standards

The Posers JSON stores the on-chain — in contract in base64 format.

In non-on-chain collections, metadata and other data are stored on the IPFS or other less reliable servers, which over time can affect the availability of all data of such tokens.

How to store on-chain metadata?

In Posers, the size of metadata with a picture can be up to 1 KB. If we generated the metadata at mint and saved it directly to the contract, it would be very expensive in gas. We decided to save some unique pseudo randomly generated token seed for each token. This token seed is used when calling the tokenURI method as a seed to use the pseudo-random function to select trait values, from which the SVG picture is assembled.

Thus, the extra gas cost due to on-chain generation only takes up the cost of one SSTORE operation. Using the idea of ERC721a — we store the information per batch, not per token, so that the gas cost does not depend on the number of tokens you want to mint. In the second picture, we save the batch seed for each batch when minting.

1. for each batch we save a batch seed
2. calculating tokenSeed from batchSeed

Reveal or the first on the POS

The attentive reader will notice that in the second picture there is some function collectionSeed, and if its value is 0, then the tokenURI method returns an error. Thus, we can say that the tokens, which were airdropped before the mint when collectionSeed was equal to zero, did not fully comply with ERC721 standard and were not full-fledged NFT.

3. you can only mint if there is a POS (the difficulty of the block has become 0)
4. creation of the seed at the POS moment

About collectionSeed

Let’s look at one of the three mint functions, such as mintDegen.

On line 143 of the image above (picture 4) we see that the setCollectionSeedIfNotSet method is called, which sets the hash of the previous block in collectionSeed if collectionSeed isn’t initialized yet (equal to 0).

On line 138 is a condition that checks that you can mint only if the POS has happened (based on the value of block.difficulty, picture 3).

So the collectionSeed value is set only at POS and the contract starts to fully satisfy the ERC721 standard only at POS.

You can check all the code from the screenshots in person in the contract itself:

https://etherscan.io/address/0x02beed1404c69e62b76af6dbdae41bd98bca2eab#code

After a successful mint, we did a renounce ownership to permanently lock all metadata, images, and contract settings into the blockchain. Now Posers are forever in the blockchain and do not depend on any servers.

The posers made history and continue to make it with you! Thank you for joining us on this journey, we are excited to grow our community alongside you!

--

--

posers

POSers are the first minted on-chain PFP collection launched since the Ethereum Network transitioned from Proof of Work to Proof of Stake. https://posers.app/