***(0,0)/{\S/}\==

OWLS × ETHEREUM

An observational study of 9,999 code-generated birds migrating their way from random entropy to deterministic permanence on Ethereum mainnet.

EXPLORE COLLECTION
01

Pure On-Chain Art

299 lines of Solidity. Zero dependencies. Every owl lives forever as pure contract logic—no servers, no IPFS, just deterministic art emerging from the blockchain itself.

// tokenURI from Owls.sol
function tokenURI(uint256 tokenId) public view returns (string memory) {
require(_exists(tokenId), "Owl does not exist.");
uint256 seed = seeds[tokenId];
return descriptor.tokenURI(tokenId, seed);
}
02

Block Hash Entropy

At mint time, the contract reads blockhash. This 256-bit value, combined with your token ID through keccak256, becomes the immutable seed for your owl.

// random() from Owls.sol
function random(uint256 tokenId) private view returns (uint256) {
return uint256(
keccak256(abi.encodePacked(blockhash(block.number - 1), tokenId))
);
}
03

Bit Shifting Magic

The 256-bit seed gets decomposed through modulo operations. Each trait extracts specific bits: head from bits 0-47, face from 48-95, body from 96-143, feet from 144-191. Colors interleave with shapes.

// generateSeed() from Owls.sol
function generateSeed(uint256 tokenId) private view returns (uint256) {
uint256 r = random(tokenId);
uint256 headSeed = 100 * (r % 7 + 10) + ((r >> 48) % 20 + 10);
uint256 faceSeed = 100 * ((r >> 96) % 6 + 10) + ((r >> 96) % 20 + 10);
...
}
04

Real-time SVG Generation

No pre-stored images. The contract builds SVG in memory using abi.encodePacked(). A custom WOFF2 font gets base64-encoded inline, ensuring perfect rendering everywhere.

// tokenURI from OwlDescriptorV3.sol
function tokenURI(...) {
// Extract traits from seed
Trait memory head = getHead(seed / 1000000000000);
Trait memory face = getFace((seed / 100000000) % 10000);
Trait memory body = getBody((seed / 10000) % 10000);
Trait memory feet = getFeet(seed % 10000);
...
// Assemble SVG from traits
string memory rawSvg = string(
abi.encodePacked(
'<text x="160" y="130">',
head.content, face.content, body.content, feet.content,
'</text>'
));
}
05

Gas Engineering

Every line optimized for efficiency. unchecked blocks skip overflow checks where safe. Batch minting uses a single SSTORE for up to 100 owls. Result: 30% gas savings.

MINT GAS
~65K
CONTRACT SIZE
24KB
ON-CHAIN %
100%
TOTAL SUPPLY
9,999
06

Evolving Canvas

Three descriptor versions deployed on-chain. The team can upgrade the visual renderer—enabling future competitions, artistic improvements, or community customizations. Your owl's seed remains immutable while its expression can evolve.

Network:Ethereum Mainnet
Status:
Live

Hoo we are

Switzerland gave the world watches and chocolate. Now it's gifting you a collection of 9,999 ASCII owls, brought to life by two guys from the Alps obsessed with Web3, ASCII art, and, of course, owls. You're welcome.

Questions?hey@goodbird.io

Ready to own a piece of history?