CryptoTendies are Collectibles building on top of $TEND.
..
...,,,,,,,,,,,,,,,,,,,....
..,,,,,,,,,.,.................,,,.....
.,,,,,,,,,............................,,,...
..,,,,,,,......................................,..
..,,,,,,,,.........................................,,,..
.,,,,,,,,..............................................,,..
.,,,,,,,,...............................................,.,,,.
.,,,,,,,,................................ ..................,,,,.
.*,,,,,,,....................... ....... .................,,,,,,.
.,*,,,,,,....................... . ....................,,,,,*,.
.**,,,,,,.....,#&&@&#@&%* ...... ...................,,,,,,*,.
.,*,,,,...,...*&&%%* ,%&(...... .................,,,,,***.
.,,,,,,,..,.../&####(((/,/&&#*. .. ......................,,,,,,**,.
.,*,,,,.......,&%####%%%%&&&&%*.... ........./%@&&&%/,......,,,,,***.
.*,,,,,,.......,%%%####%%%%&&&#... ...#&&%, *&@%.......,,,,**.
.****,,,,,.......*&&&%%%%%%&&&/.... ...... ....,%%%%#(//,*%@@&....,,,,,,**,.
,******,,,,.........*#&&&&&&#,.....,********... ..(%%#%%%%%&&&&&@*....,,,,,,*,.
,///****,,,,.....................,*/****,*****,. ...(%%%#%%%%%&&&@@,....,,,,,,**.
,////*****,,,,..................,/******,******,....,%&%%%%%%&&&@@/.....,,,,,,**,.
.*////*****,,,,,...............*(******,********....../&@@&&&@@&#.....,.,,,,,***,.
.*//////******,,,,,,...........*%(****,*******/*.........,,,,...........,,,*****,.
,///////********,,,,,,,,,....,*#%(*,,,****/(##*.......................,,,*****/,.
,////////********,,,,,,,,,,,,,*(#%#**,*/####(*,....................,,,,,*****//.
.///////////*********,,,,,,,,,*/(#####%####/*,,...............,,,,,,,******///,.
,*/////////////***********,,,,**////(((((/**,,,,,,,,,,,,,,,,,,,,,*********///*. ...................
.,*///////////////***************************,,,,,,,,,,,,,,,,************////(/,............................
................ .,,**////////////////**************************************************////((///*,,,,,,**********,,,,,,,........
.......................,***////////////////////**************************************/////////((((////*****************/********,,,,,...
..........,,,,,,,,,,,,,,,,,,*******///////////////////*****************************/////////////(((((////*******//////////////////////***,,,,,..
.....,,,,,,*******************,,,,******************///////////////*////////////////////////((((((((((///******,,,**///////////////////////*****,,,..
.....,,,******//////////////**,,,,,,,,,,,,,,**********************/////////////////////////((((((((/////****,,,,,,,,,**///FOR//10/$COIN/////////*****,,,.
..,,,,****////////////////////*,,,,,,,,,,,,,,,,,,***********************///////////////////////////////***,,,,,,,,,,,,,,*/////////////////////////////***,,..
..,,,,****//SEND//50/$TEND/////*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,********************///////////////******,,,,,,,,,,,,,,,,,,,,**////////////////////////////*****,.
.,,,***////////////////////////*,,,.,,.............,,,,,,,,,,,,,,,,,,****************************,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*///////////////////////////////***,.
.,,,***/////////////////////////*,,,,.........................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*/////////////////////////////////***..
.,,***//////////////////////////*,,,,,,...............................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,.,,,,,,,,,,,,,,,,,,,,,,,,,*///////////////////////////////////*,.
.***////////////////////////////*,,,,,,,,...........................................................,,...,,. ..,,,,,,,,,,,,,,,*/((////(///,,,*****//*/////////////*,.
.,***//**////////////////////////**,,,,,,,,,,..............................................................,. .,,,,,,,,**/((((((((((/. .*((/. ......,,,..
,***///, .//////////**///////////***,,,,,,,,,,.............. ............................................... .,,,,,***((((((((((((,..,((((((/.
.,**/////,....*((///, ./((((((((***,**,,,,,,,,,,..... ..........................................,. .,******(#(((((((#(((((((((((((. ...
.*///////,.... .//. .#((((((/********,,,,,,,,,. ........................,.........,,,..,. .******(##((##( ,(#(((((((#/.....
.. ......... .... ,%(#(((/********,.,,,,.. ..........................,.. ...,. .***///(####(. ,(#((((#/....,.
.,........... *#(((((//***/* .. .,.,,.,,,..............,. .,///((###(. *%#((#* ......
..,,............. *%##((///(,. .,,,,,....,,,..,,,,..,. ./(##%/. *#%(,.....,..
..,............... . *##(((, .. .,,,,,,,,. *%(. .. .........,,.
.,,,............... ,(, .,,,,. . . .............,,,,.
.,,,,................ ,, ...............,,,,.
,,,,,,................. . .. ..................,,,,,,.
.,,,,,,,,..................... .. .....................,,,,,,*,.
.*,,,,,,,,..................... .. . .....................,,,,,,,*,.
.,**,,,,,,,,...................... ... .. . ... ........................,,,,,,***.
.,**,,,,,,,,,,,............................. .. ..............................,,,,,,,,,,**.
.,***,,,,,,,,,,,,........................................ ... . ....... ....... ....................................,,,,,,,,,,*****,.
.,****,,,,,,,,,,,,,.......................................................................................................,,,,,,,,,,,,,,******,
.,******,,,,,,,,,,,,,,.,.................................,,,.......................................................,,,,,,,,,,,,,,,,,,*******..
.,********,,,,,,,,,,,,,,,,,,........................,,,...,,................................................,,,,,,,,,,,,,,,,,,,,**********.
.**********,,,,,,,,,,,,,,,,,,,,.,,.............,,,.......,,.....................................,,,,,,,,,,,,,,,,,,,,,,,,,,**********//,.
,//**********,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,...,,,....,,,,...................,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,**************//*.
.*//***************,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*****************////,.
.*////***************,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,***********************///*.
,//////**********************,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*,************************///////*.
.*//////***************************,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,************************************/////////*.
.*////////************************0x1F0a2Db4B774409d9188C7c7446EB3C2CaD70263*************************///////////,.
.,*///////////****************************************************************************//////////////////,
.,/(///////////*******************************************************************//////////////////(/,
.,*((/////////////////************************************************////////////////////(//((/,.
..*/((//////////////////////////************************////////////////////////////(/((/*.
.,//(((/////////////////////////////////////////////////////////////////////((((/*,.
.*/((((//(/////////////////////////////////////////////////////((//((((/*.
..*//(((((((/(((//////////////////////////////////((((((((((((/*,.
.**//((((((((((((((((/(((((((((/(((((((((((((((//**...
.,,**///(((((((((((((((((((((((//**,,.
............ ..
The contracts and tests here were derived initially from the OpenSea 1155 Loot Box code. Ultimately, the functionality needed for CryptoTendies required a significant rewrite, and to use Solidity 0.6, we needed to migrate to OpenZeppelin's ERC1155 standard, but we still needed to make three changes to the ERC1155 code as currently provided in order to extend it so that it would still work with the OpenSea code.
Anyway, huge props to the OpenSea and Horizon Games teams for their work on the multi-token standard contract, OpenSea and Rob Myers for the 1155 lootbox code, and the entire OpenZeppelin team for basically writing 90% of the code running on Ethereum.