Important links and terminology
Space Doodles smart contract | 0x620b70123fb810f6c653da7644b5dd0b6312e4d8 |
Minting website | https://doodles.app at time of mint |
Launching | The act of sending your Doodle into Space and receiving a Space Doodle. |
Docking | The act of docking your Space Doodle and receiving your Doodle. |
Space Doodles Friendly Overview
Space Doodles are personal spaceships for your Doodle. Each Space Doodle is generated from over 200 audio-visual traits and accompanied with stats that reflect the competency of your Doodle in its spaceship. Space Doodles and their stats will be used in future Doodles experiences that deliver surprise and delight to the wider NFT ecosystem.
With this release, Doodles embark on the first steps of their journey through space. Launching a Space Doodle will show you where it is in the universe, its swagger, and how good it is at piloting its ship or holding its bladder.
All Doodlers will be able to claim their own unique spaceship. Claiming a ship means your Doodle becomes a Space Doodle, but don’t worry it can always return safely from space and become a Doodle again.
Traits
Audio-visual traits
Spaceship - 30 unique spaceship types with variations of each in the generative collection. Some customs have additional variations of the 30 unique spaceship types. Spaceships in the generative collection are denoted by MK
to distinguish them from customs.
Thruster - Matter that is emitted from the propulsion of your Space Doodle.
Nearest planet type - The planet type that your Doodle is closest to.
Sector - The bottom-most layer of a Space Doodle. This is the sector of space that your Space Doodle is currently traveling in.
Hidden traits - You may see and hear your Space Doodle pass by interesting objects.
Stats
Stats are generated on-chain through Chainlink VRF and scales from 1-8. This is your Doodle’s competency in its own spaceship. Every stat is highly composable due to its on-chain nature and will be used in future experiences. Each stat aside from rank is immutable and cannot be changed by anyone.
Piloting ability - ranges from Baby Yoda level ability all the way up to the Mandalorian himself.
Mechanical knowledge - if something goes wrong, can your Doodle fix it?
Bladder management - spaceships are small and don’t come equipped with relief facilities
Vibe captaining - how well your Doodle leads and spreads goods vibes
Stamina - game designers will have a field day roasting us for this one
Rank - set at 1
for all Space Doodles and is progress-able through future experiences
Rarities for each stat (excluding rank) are set by rolling a 256 sided dice and technical documentation can be found in the loaded dice lookup table in our contract.
- 8: 1/256 chance
- 7: 1/128 chance
- 6: 1/64 chance
- 5: 1/32 chance
- 4: 1/16 chance
- 3: 1/8 chance
- 2: 1/4 chance
- 1: 1/2 chance
Space Doodles Technical Overview
Space Doodles is a NFT token that wraps Doodles - you transfer a Doodle in and get a Space Doodle out. At any time you are only allowed to hold a Doodle or a Space Doodle, never both. We enforce this through smart contract logic.
On dock, we transfer the Doodle to the contract and depending on if the SpaceDoodle exists, either mint it to the sender or simply transfer it. This normally requires setAllowedForAll approval on the original Doodles contract, but for the single token case, we use onERC721Received to trigger the exchange when the sender transfers a Doodle (to save the setApprovedForAll call). This means that you do not need to setApprovedForAll if you do not want to.
SpaceDoodles have on-chain properties which we're calling "Stats". Of those, five of the stats ("Traits") are randomly assigned at mint, and the last one, "Rank", starts at 1 for everyone. In the future, approved Doodles contracts will get permission to modify the rank stat.
The randomness for on-chain stats comes from Chainlink VRF. We batch the trait assignment to save calls to VRF. The batch size is adjustable via the batchSize variable. When the batch fills up, we call chainlink via COORDINATOR.requestRandomWords. The chainlink coordinator calls this contract back via fulfillRandomWords, which takes the randomness and breaks it up into chunks to use for the individual Space Doodles / traits.
Traits are assigned randomly with values from 1-8 with exponential rarity. Each trait takes 8 bits of randomness (a number from 0 to 255) which we use to look up a "loaded dice lookup table" which gives us a different probability for each value. E.g. 8 only has one entry in the table which gives os a probability of 1/256 or around 0.4%.
Metadata
At release, the metadata .json files for Space Doodles will be served by our backend similar to the original Doodles launch. We will determine the best time to switch over to a decentralized and persistent storage (IPNS/IPFS) by updating the tokenURI in the smart contract.
In Space Doodles metadata, you can find:
- Visual traits
- Spaceship
- Sector
- Thruster
- Nearest planet type
- On-chain stats
- Bladder management
- Piloting ability
- Mechanical knowledge
- Stamina
- Rank
- This is the only mutable stat that will be changed by our smart contracts in the future
- Image thumbnail .png IPFS CID
- Animation .mp4 IPFS CID
- Token name & description
Metadata Considerations
- Ensure that new Rank updates are accurately reflected in token metadata
- Ensure that metadata can be dynamically published upon mint
- Anticipate a long tail of Space Doodles collection mints. Not every Space Doodle NFT will be revealed at the same time and some users may choose to never reveal
The Team
Burnt Toast aka Scott Martin - illustration
Alfie Motion aka Alfie B. - animation
Tulip aka Evan Keast - brand
Bandit aka Bennett Leader - product design & UI/UX
Varoun - A/V engineering
John Bowers - audio
Poopie aka Jordan Castro - product
Protein aka Wei H. - smart contract
Vainglorious aka Adil - back-end engineering & production
DeepBlueSteve - front-end
NFTSantana aka Ivan S. - production