0x54de…1627

All memos sent from and to 0x54de…1627.

2 6 e 2 8 3 f 6 e f e 8 1 ░▓9▓▓ 0 1 8 0 4 c 8 f 7 0 5 3 0 ░█4██░ 0 9 8 d b b 4 1 0 8 9 8 a 2▒█░ f 3 c 5 c 6 a d 7 3 4 c 8 6▒█░ 5 4 d b e a 2 a 1 c ▓█ 4 ▒█ a ▓███▓3 b▒█░ a ░██c██▒ b ▓███▓░9 ▓█░█f▓ ▓██ 1 ▓███c d 8 0 ▓█ 3 ▓█ 7 ██▓▒▒█9 e▒█░ 2 ▓██▒9▒▓▒ 4██▒▒▒██0 ▓██▒d██▓▓█▒ 8 ██▓▒▒0█ 6 d b ▒█░ 3 ██ 8▒█▒ ░5▓ e▒█░ 5 ░█▓ 8 7█░ ░█a ▓█▓ a██ █▓ 7 ▒█▒ 0█▓ a 1 b ░█▒ ░e▒ █▓ 8██ 6█ d▒█░ 8 ██ c ░3█ ▓5░ ▓█ 1█▒ █▓ 1 ██ 6██ 2 6 b █▒ ▓e█ █▒ b██▓▓▓▓▓c█░ a▒█░ 8 ██ 1 ▒2▒ ░d▒ ▓█ 7█▒ █▓ 2 ██▓▓▓▓1██░ 6 0 8 █▓ █7█▒░█▒ 3██▓▓▓▓▓b▓ d▒█░ f ██ 5 ▒2▒ ░e▒ ▓█ 8█▒ █▓ c░██▓▓▓▓f▓▓ 4 8 6 █▓▒█8▓█░█░ 8██ 2 9▒█░ 6 ██ c ▒1▒ ░5▒ ▓█ 2█▒ █▓ 9 ██ e 7 0 c ▓██▓f ███ 5██ a d▒█░ f ██░ 9 ░2█ ▓d░ ▓█ 6█▒ █▓ 3 ██ 2 4 c a ▒██ a ▓██ b▒█▓ 8 6▒█░ d ▒██ 0 3█░ ░█b ▓█ e█▒ █▓ a ▒█▓ 0 3 f d ▒█▓ 1 ░██ f ▓██▒░▒6▒ f▒█▓▒▒ 9 ▓██▒8░▒▒ 3██▒░▒██a ▓█ d█▒ █▓ e ▓██▒░7▓▒ c 5 8 ░█░ 2 █▓ 4 ▒████7▒ 7▒████ 6 ▒██d██▓ c░▓████░b ▓█ 2█▒ █▓ c ▒███7█▒ a d 0 4 e 9 1 f 1 e a a 0 d 8 c d 0 0 6 1 e b b 9 c b 3 e 3 e a 0 1 b d 8 4 3
2 5 e 2 7 2 d 6 0 3 ▒▓ 8 ▓▓ e ▓▓▓▓▓▓f░ ▓3 1 ▓░ 9 6 ▒███▒ a 2 0 8 5░ e d ██ 1 ██ 4░██████d▒ ░█c f ░█▒ c 4███▓███4 7 f 5 9█░ 8 9 ██ e ██ d░█▒ 8 ░█6 6 ░█▒ d a█▓ ▒█a c c 0 a▓█ 9 3 ██ 0 ██ 8░█▒ e ░█f 2 ░█▒ 6 a█ █f c 7 e 1 ██ 2 8 ██ 0 ██ 5░█▒ 5 ░█6 6 ░█▒ 2 ░3▓ ▒6▒ 3█▒ b e c ▒█▒ 0 5 ██ 2 ██ 5░█▒ 9 ░█2 2 ░█▒ d ▒3▒ ░e▒ f██ e 1 d ██ 7 5 ████e████ 4░██▓▓▓▓0░ ░█2 d ░█▒ 8 ▓f▒ ░1▓ 4▒ 4 6 8 ▓█ b f ██▓▓2▓▓██ e░██████c░ ░█a 8 ░█▒ 4 ▓9░ ░1▓ 9 f 1 0 ▓█░ 4 0 ██ 5 ██ 9░█▒ f ░█a 3 ░█▒ a ▓0░ ░5▓ 4 6 ▒▓▓▓▓5▒ c ▒█▒ c a ██ b ██ 1░█▒ 6 ░█1 0 ░█▒ d ▓2▒ ░a▓ 1 3 ▓████4▓ 8 ▒█▒ 9 3 ██ c ██ e░█▒ d ░█7 4 ░█▒ a ▒a▓ ▒e▒ b d c 3 ▓█░ 7 3 ██ c ██ c░█▒ a ░█5 3 ░█▒ 8 0█ █1░ 8 4 d 9 ▓█ c 6 ██ f ██ 8░█▒ f ░█a f ░█▒ 0 1█▒ ░█5 f▒ f 0 4 ██ 2 b ██ 2 ██ 4░██▓▓▓▓8▒ ░█3▓▓▓▓▓▓ 5 ░██▓▓8▓▓▓ 1██▓▒▓██8 9██ 2 7 a ▒█▒ b c ▓█ f ██ d░██████a▒ ░█0██████ 1 ░████4███ 9░▓████░f f█▒ d 8 f ██ 7 7 c 8 5 3 b 0 c 9 6 4 6 2▓█ e b 8 0 6 0 f 1 1 9 3 3 6 4█░ 6 e 2 e a a a 3 9 f ▓░
2 b a c b c 2 9 e 2 ▒▓▓▓b▓▓▓▓ 2▒▓ 9▒▓ ▓0▓▓▓▓▓▒ 7 ▒▓ e ▓▓ ▓c▓▓▓▓▓▓▓d▓ ▒▓ 0 ▓▓ 6 ▒▓▓▓▓▓8 b▓▓▓▓▓▓░c 2 ▓███f████ f██ 8█▓ ░█2█████▓ d ██ 0 ██ █0███████3█ ██ 9 ██ c ██████a█ ░6██████▒5 b b ▒█▓ 7██ ▒e▓ ░█d 2 ██ 4 ██ 4 ░█▒ 8 ██ 6 ██ a ██ d██ ░9▒ 4 a 9 ██ 0██ ▒█6 ░█8 6 ██ c ██ 4 ░█▒ c ██ 6 ██ 2 ██ f██ ░2▒ 1 f e▒█░ 9██ ▒█▓c ░█d 0 ██ 6 ██ e ░█▒ c ██ 9 ██ e ██ 8██ ░3▒ c a 6█▓ 1██ ░██ e ░█b 3 ██ 5 ██ c ░█▒ 3 ██ b ██ f ██ 8██ ░0▒ c e b█░ 3██▒██ 8 ░█d▒▒▒▒▒ e ██ f ██ a ░█▒ b ██ 9 ██ 4 ██░░░▒d█░ ░e█▓▓▓▓▓░0 4 ▒9▓ b█████▓ 6 ░█2█████░ c ██ f ██ 1 ░█▒ c ██ 3 ██ 8 ██████5░ ░8██████░4 f █c e███░██░d ░█1 f ██ c ██ 2 ░█▒ 6 ██ f ██ d ██▒░██9 ░9▒ d 5 ▓█8 c██░ ░██5 ░█5 3 ██ 9 ██ 7 ░█▒ b ██ c ██ 4 ██ ░█c ░0▒ b e █▓9 9██ ▒█c ░█2 a ██ 4 ██ a ░█▒ d ██ 0 ██ b ██ ▓e▒ ░b▒ 6 1 ▓█ b 8██ █8▒ ░█b 9 ▓█░ b ██ 2 ░█▒ 5 ▓█░2 ██ d ██ 5█░ ░8▒ 1 1 ▒█▒ 0 7██ c█░ ░█d a ▒█▒ 0▒█▓ c ░█▒ 6 ▒█▒2 ▒█▓ a ██ b██ ░1▒ a d ██▓▓1▓▓▓▓ a██ b██ ░█8 0 ██▓▒4██░ 2 ░█▒ 2 ██e▒▒██░ 9 ██ 7▓█▓ ░3█▓▓▓▓▓▒9 3 ████f████ b▓█ 3▓█ ░█0 3 ▓██6█░ 4 ░█▒ 6 ▓7███░ 9 ▓█ 2 ██ ░6██████▒e 7 0 3 7 c 7 8 6 7 7 2 2 3 a 7 2 5 d 5 3 4 e 1 a 6 6 5 d 8 c c 4 1 3 7 b a
2 a 0 3 1 d 2 c 6 5▓▓▓▓▓▒5 ▒e▓▓▓▓░ 6 ▓6▓▓▓▓▓ d ▓▒ d ░▓1 ▒2▒ 8 ░▓█8█▓░ 1▓ 4 ▓▓ e b░█████f█░ 4██████b d██████4 ██ 3 ▓c 7██ 2 ▓██9▓▓██ d▒█▓ d ▒█▒ 5 2 ░█▒ 9▓██ 9██ f██ e ▒█▒ 2 ██6 d▓ e███▒ b ▒█▓b ░ f ██░ 3 ██ 7 3 ░█▒ a ██░ e ██ 0 ██ d ▒█▒1 ▒4▒ 0█▒ 0▒█░█▓ d ██5 a ░█▓8 ▓█▒ 2 b ░█▒6 ▓█░f ██ 0 ██ 7 ▒█6 e██ e██ c ██ ▓█a ░█1 4 ▓1░ ██ c 7 ░█d ██f ██ 8 ██ 7 ▒a▒ 8 ▓█░ 3 ██ 6 ░█▓ ▒9▒ ▒b▒ c d██ ▓█░d f ░4▓ ░▓█1 ██d░░▒██░f 3█▒ 8 ▒█▒ 6 ▒█▒ 9 ▒█░ c█▓ 3█▒ 6 0 ▒█▓█▓8 6 8██████8 █8████▓░f 3▒█▒ f ██7 ▓█ 7 ██ 4 ▓█ b▓█░ 3 1 ███2 1 7░█▓▒▒░a f█▒░██░8 2 ▒█▒ f ▓2 ██ 9 ░██d▓▓██▒ 8 ▓█░ 1 4 ▒█4 5 c ░█▒ 6 c██ ░█8 7 ▒█▒ 4 a█▒ ░█▒0 ▓█7██████0 ▒█▒ b 2 ░8▒ 4 d ░█▒ 5 8 ██ 4█▒ 5 ▒█▒e 8 ██ ▓█2 █d █2 ▒█▓b 6 b█▒ 0 5 ░█▒5 0 ██ 1 ██░ 7 ▒█4 a ▓█░█e ░6▓ 9█▒ █f d f░█▒ e 1 ░█5 d ██ c ░██ 4 ▒7▒ 7 ░██a▒ 4█░ 8 █▓ d█▓ 8░ f ░█▒ 6 2 ░e▒ f ██c ▓█f ▓▓a██▓▓ 9 █c█ 3██ 7 ██ f ███▒▒f██░ a ░█▒ 0 7 7█▒ e ▓7 6█ █4█████ b 8█▓ 8 █▓ 3 ▒█ 6 ▒██1██▒ c ░█▒f a c 5 5 4 6 6 4 c 0 3 0 c 2 1 2 2 f f 7 8 4 e 8 a c 7 0 e c b a 7 2 f 3
DOS_Loading_Arrayvar DEFAULT_SCRIPTS = [ { data: "three-v0.147.0.min.js.gz", gzip: true, label: "three.js — renderer" }, { data: "F3_Utils", gzip: true, label: "utils — core helpers" }, { data: "css3DRenderer", gzip: true, label: "css3d — surface renderer" }, { data: "CypherDudesFonts", gzip: false, label: "fonts — Andale Mono MonoPixel" }, { data: "CypherDudesLayer1", gzip: false, label: "layer1 images" }, { data: "DOS_Spritesheet", gzip: true, label: "spritesheet — icons" }, { data: "DOS_ethCalls", gzip: true, label: "eth — onchain calls" }, { data: "DOS_os", gzip: true, label: "os — operating layer" }, { data: "DOS_bip39", gzip: true, label: "bip39 — mnemonics" }, { data: "DOS_main", gzip: true, label: "main — world builder" }, { data: "DOS_palace", gzip: true, label: "cypherpalace" }, { data: "DOS_artefacts_Abis", gzip: true, label: "artefacts handler" }, { data: "DOS_communityApps", gzip: true, label: "Community Apps management" }, { data: "recompose.min.js", gzip: true, label: "recompose — chunked artifact loader" }, { data: "DOS_animate", gzip: true, label: "animate — boot init()" } ];
DOS_Loading_Array{"v":1,"algo":"raw","rawSize":1290,"storedSize":1290,"sha256raw":"0xb3de4dc8fb552ee1da6197f13d13f43385eadb1dcaf5a06a5bb96cb760c7f7bb","sha256stored":"0xb3de4dc8fb552ee1da6197f13d13f43385eadb1dcaf5a06a5bb96cb760c7f7bb"}
DOS_artefacts_Abis{"v":1,"algo":"gzip","rawSize":14444,"storedSize":3592,"sha256raw":"0xf440d01f4bf6ab5b83ccdbd771a21e241f33b2fcb5606f046b87de32d6b3edad","sha256stored":"0x676e267ebf8a36de651bdf46aec42324c44454fe6d539cb01ffb29ea54d638c0"}
artefacts_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
artefacts_0726{"v":1,"algo":"base64+gzip","rawSize":6701,"gzipSize":1889,"storedSize":2520,"sha256raw":"0x3a14b99c9861a8ef718ec28820d3da20ed01eceb08ba8cdb2cd7ac3bb8551f2b","sha256stored":"0xacaae5d9b6ebfe11f28f978547341946f100d575fa6df3c490db5fd7117fa682"}
0x54ded708…1627·#25,545,153·0x47ba559a…85022c
<text x='170' y='190' class='g' font-size='90' letter-spacing='8<text x='170' y='400' class='g' `ufont-size='44' fill='#007700'>BO`UND TO CYPHERDUDE #<svg xmlns='http://www.w3.org/20` 00/svg' viewBox='0 0 2048 512' style='background-color:#000000'>``<style>.g{fill:#00ff00;font-fami`ly:monospace}</style><rect x='0' y='0' width='2048' h`eight='512' fill='#ffffff' fill-`Ղopacity='0.6' stroke='#000000' s`troke-width='2'/><rect x='24' y='24' width='72' haeight='72' fill='#00000022'/><rect x='120' y='32' width='1900a' height='452' fill='#000000'/><rect x='120' y='32' width='1900' height='452' fill='none' strokae-width='16' stroke='#002030CC'/a{"trait_type":"Host","value":"{"trait_type":"Status","value":"{"name": "CYPHERPAGER #", "description":"CypherPager is`7 a fully onchain ZK pager, soulb`Wound into the token-bound accoun`wt of a CypherDude. THE ART IS TH`E CIPHER: every message is priva`te, encrypted client-side to the`ׂ owner active-epoch key with Bab`yJubjub/Poseidon and hidden insiade an ASCII grid. Anyone can senad; only the CypherDude owner cana decipher. Scripts, fonts, the zak prover - everything streams fraom the Ethereum blockchain.", "external_url": "/artefacts/cypherpager/", "animation_url": "", "attributes": [data:application/json;base64,ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef`ghijklmnopqrstuvwxyz0123456789-_setRpcs: not authorized;var contractAddress = "";var rpcUrls = ;window.RPCs = rpcUrls;0123456789abcdefhtml,body{margin:0;padding:0;bac` kground:#000;width:100%;height:100%;overflow:hidden}body{display``:flex;align-items:center;justify`-content:center}#svg-container{w`idth:100%;height:100%}#cypherpag`er{width:100vw;height:100vh;disp`gunzipScripts-0.0.1cypherdudes.com/pagercypherDudesFonts["https://ethereum-rpc.publicnode.com","https://eth.llamarpc.com"]
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
cypherpager{"v":1,"algo":"base64+gzip","rawSize":82004,"gzipSize":23979,"storedSize":31972,"sha256raw":"0xb600a762826fd546d33e76eee01135cbe7ca534d96dbea2828d8141d1e322669","sha256stored":"0x454b44d1c8b036b8776c0a2c6b5dca383a8a5650dd23acfd9e9c1525241b2d3f"}
0x54ded708…1627·#25,544,937·0x8e87f92d…14a04a
Offer below current offerincorrect paymentReentrancyGuard: reentrant callRoyalty transfer failedETH transfer failedETH transfer failed
0x54ded708…1627·#25,544,936·0xf6e56d09…8f65ac
DecentralizedOperatingSystemCaller is not escrow contractBoth slots must be claimedInvalid escrow addressSlot already claimedSlot already takenSoulBound : Transfer failedDude has no secret wordPUPPPPPPPPPPPPV[`0123456789abcdefhttps://ethereum-rpc.publicnode.comwss://ethereum-rpc.publicnode.com
0x54ded708…1627·#25,544,885·0xc6db4979…06a69d
Only CypherDudesOffer must be > 0Can't offer on own tokennew Offer must be higher than th`DMarketplace not approvedMarketplace not approvedPrice must be > 0ReentrancyGuard: reentrant callRoyalty transfer failedETH transfer failedETH transfer failed
0x54ded708…1627·#25,544,884·0x8004df04…b8bf1f
Offer below current offerincorrect paymentReentrancyGuard: reentrant callRoyalty transfer failedETH transfer failedETH transfer failed
0x54ded708…1627·#25,544,883·0xfa283b65…80367c
Titles have to be uniqueArchive already storedYou're not the curatorCuration not foundMust be future dateMust be exactly 12:00 UTCSlot already bookedAllowance exceeded for this mont`D0123456789abcdef
0x54ded708…1627·#25,544,882·0xf48ba97b…e95ae2
DecentralizedOperatingSystemCaller is not escrow contractBoth slots must be claimedInvalid escrow addressSlot already claimedSlot already takenSoulBound : Transfer failedDude has no secret word[PPPP[PPPPPPPPPPPV[`0123456789abcdefhttps://ethereum-rpc.publicnode.comwss://ethereum-rpc.publicnode.com
0x54ded708…1627·#25,544,881·0x54b49b07…d4c3d8
0123456789abcdefABCDEFGHIJKLMNOPQRSTUVWXYZabcdef`ghijklmnopqrstuvwxyz0123456789-_var live = {"DOSAddress":"","archivesIndexer":"","slotDealer":"","cypherDealer":"","ownedTokens":"","bip39bitMap":"","appRegistry":"var docsFile = "var currentParcel = var RPCString = "";var WSRPCString = "";var ClaimOrderString = "data:application/json;base64,{"name": "DOS - SLOT #", "description":"The Decentrali`zed Operating System is a monume`6ntal space station drifting on t`Vhe blockchain. A digital haven p`vrotected by self-custody where n`omad avatars can settle to escap`e the matrix of corporate-state `ւmoguls. An open-source, unhosted`, code-built infrastructure alloawing free interaction, creation,a and trade. It is not a written asci-fi novel you can read, nor aa dystopian movie you can watch. aInstead, with the same artistic aintent, its written code builds aan actual world you can navigatea and experiment with, with no staoryboard to follow.", "external_url": "", "animation_url": "", "attributes": [{"trait_type":"Claim Order","val{"trait_type":"Docs","value":"<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' st` yle='background-color:'><defs><style>.cls-1, .cls-2 {f`Vill: none;}.cls-1, .cls-2, .cls-`v; stroke-miterlimit: 10;}.cls-2 `K{stroke-width: 2px;}.cls-4, .cls`k; font-family: MonoPixel, MonoPixel;}.cls-4{font-size:36px;}.cls` -5{font-size:21px;}.cls-6{fill: `@;}</style></defs><g id='Calque_2' data-name='Calque 2'><g><circle cx='256' cy='256' r='118' fill='none' stroke='' stroke-width='2' stroke-dashar`9ray='6 10'><animate attributeNam`Ye='stroke-dashoffset' values='0;`y-32' dur='2s' repeatCount='indef`inite'/></circle><animateTransfo`rm attributeName='transform' typ`قe='rotate' from='0 256 256' to='`360 256 256' dur='40s' repeatCouant='indefinite'/></g><rect class='cls-1 ' x='239.4' y='239.4' width='33.2' height='33.2'/><g><path class='cls-2' d='M256,357.23c-55.82,0-101.23-45.41-101.` 23-101.23s45.41-101.23,101.23-10`@1.23,101.23,45.41,101.23,101.23-``45.41,101.23-101.23,101.23Z'/><c`ircle class='cls-3 ' cx='256' cy='154.77' r='6'/><animateTransform attributeName='t` ransform' type='rotate' from='0 `@256 256' to='-360 256 256' dur='``20s' repeatCount='indefinite'/><`<g class='cls-3' ><path class='cls-2' d='M256,317.23c-33.76,0-61` .23-27.47-61.23-61.23s27.47-61.2`@3,61.23-61.23,61.23,27.47,61.23,``61.23-27.47,61.23-61.23,61.23Z'/`><circle cx='256' cy='194.77' r=`'6'/><circle cx='256' cy='317.23`' r='6'/><circle class='' cx='212.71' cy='212.72' r='6'/`><circle cx='212.71' cy='299.29'a r='6'/><circle cx='299.28' cy='a212.72' r='6'/><circle cx='299.2a8' cy='299.28' r='6'/><circle cxa='194.77' cy='256' r='6'/><circlae cx='317.23' cy='256' r='6'/><aanimateTransform attributeName='taransform' type='rotate' from='0 a256 256' to='-360 256 256' dur='a12s' repeatCount='indefinite'/><a<g class='cls-3'><circle class='cls-2' cx='256' cy='256' r='41.2` 3'/><circle class='' cx='256' cy='214.77' r='6'/><circle cx='256' cy='297.23' r='6'` /><animateTransform attributeNam`@e='transform' type='rotate' from``='0 256 256' to='360 256 256' du`r='5s' repeatCount='indefinite'/`<g class='cls-3' ><path class='cls-2' d='M256,337.23c-44.79,0-81` .23-36.44-81.23-81.23s36.44-81.2`@3,81.23-81.23,81.23,36.44,81.23,``81.23-36.44,81.23-81.23,81.23Z'/`><circle cx='256' cy='174.77' r=`'6'/><circle cx='218.26' cy='184`.09' r='6'/><circle cx='189.15' `cy='209.85' r='6'/><circle cx='1a75.38' cy='246.2' r='6'/><circlea cx='180.04' cy='284.79' r='6'/>a<circle cx='202.13' cy='316.78' ar='6'/><circle cx='236.57' cy='3a34.81' r='6'/><circle cx='293.74a' cy='184.09' r='6'/><circle cx=a'322.85' cy='209.85' r='6'/><ciracle cx='336.62' cy='246.2' r='6'a/><circle cx='331.96' cy='284.79a' r='6'/><circle cx='309.87' cy=a'316.78' r='6'/><circle class='' cx='275.43' cy='334.81' r='6'/><animateTransform attributeName` ='transform' type='rotate' from=`@'0 256 256' to='360 256 256' dur``='10s' repeatCount='indefinite'/`body{margin:0;padding:0;display:flex;justify-content:center;align-items:center;height:100vh}cypherdudes.com/dos
0x54ded708…1627·#25,544,859·0xdddaa61a…3ba41c
0123456789abcdefABCDEFGHIJKLMNOPQRSTUVWXYZabcdef`ghijklmnopqrstuvwxyz0123456789-_var live = {"DOSAddress":"","archivesIndexer":"","slotDealer":"","cypherDealer":"","ownedTokens":"","bip39bitMap":"","appRegistry":"var docsFile = "var currentParcel = var RPCString = "";var WSRPCString = "";var ClaimOrderString = "data:application/json;base64,{"name": "DOS - SLOT #", "description":"The Decentrali`zed Operating System is a monume`6ntal space station drifting on t`Vhe blockchain. A digital haven p`vrotected by self-custody where n`omad avatars can settle to escap`e the matrix of corporate-state `ւmoguls. An open-source, unhosted`, code-built infrastructure alloawing free interaction, creation,a and trade. It is not a written asci-fi novel you can read, nor aa dystopian movie you can watch. aInstead, with the same artistic aintent, its written code builds aan actual world you can navigatea and experiment with, with no staoryboard to follow.", "external_url": "", "animation_url": "", "attributes": [{"trait_type":"Claim Order","val{"trait_type":"Docs","value":"<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' st` yle='background-color:'><defs><style>.cls-1, .cls-2 {f`Vill: none;}.cls-1, .cls-2, .cls-`v; stroke-miterlimit: 10;}.cls-2 `K{stroke-width: 2px;}.cls-4, .cls`k; font-family: MonoPixel, MonoPixel;}.cls-4{font-size:36px;}.cls` -5{font-size:21px;}.cls-6{fill: `@;}</style></defs><g id='Calque_2' data-name='Calque 2'><g><circle cx='256' cy='256' r='118' fill='none' stroke='' stroke-width='2' stroke-dashar`9ray='6 10'><animate attributeNam`Ye='stroke-dashoffset' values='0;`y-32' dur='2s' repeatCount='indef`inite'/></circle><animateTransfo`rm attributeName='transform' typ`قe='rotate' from='0 256 256' to='`360 256 256' dur='40s' repeatCouant='indefinite'/></g><rect class='cls-1 ' x='239.4' y='239.4' width='33.2' height='33.2'/><g><path class='cls-2' d='M256,357.23c-55.82,0-101.23-45.41-101.` 23-101.23s45.41-101.23,101.23-10`@1.23,101.23,45.41,101.23,101.23-``45.41,101.23-101.23,101.23Z'/><c`ircle class='cls-3 ' cx='256' cy='154.77' r='6'/><animateTransform attributeName='t` ransform' type='rotate' from='0 `@256 256' to='-360 256 256' dur='``20s' repeatCount='indefinite'/><`<g class='cls-3' ><path class='cls-2' d='M256,317.23c-33.76,0-61` .23-27.47-61.23-61.23s27.47-61.2`@3,61.23-61.23,61.23,27.47,61.23,``61.23-27.47,61.23-61.23,61.23Z'/`><circle cx='256' cy='194.77' r=`'6'/><circle cx='256' cy='317.23`' r='6'/><circle class='' cx='212.71' cy='212.72' r='6'/`><circle cx='212.71' cy='299.29'a r='6'/><circle cx='299.28' cy='a212.72' r='6'/><circle cx='299.2a8' cy='299.28' r='6'/><circle cxa='194.77' cy='256' r='6'/><circlae cx='317.23' cy='256' r='6'/><aanimateTransform attributeName='taransform' type='rotate' from='0 a256 256' to='-360 256 256' dur='a12s' repeatCount='indefinite'/><a<g class='cls-3'><circle class='cls-2' cx='256' cy='256' r='41.2` 3'/><circle class='' cx='256' cy='214.77' r='6'/><circle cx='256' cy='297.23' r='6'` /><animateTransform attributeNam`@e='transform' type='rotate' from``='0 256 256' to='360 256 256' du`r='5s' repeatCount='indefinite'/`<g class='cls-3' ><path class='cls-2' d='M256,337.23c-44.79,0-81` .23-36.44-81.23-81.23s36.44-81.2`@3,81.23-81.23,81.23,36.44,81.23,``81.23-36.44,81.23-81.23,81.23Z'/`><circle cx='256' cy='174.77' r=`'6'/><circle cx='218.26' cy='184`.09' r='6'/><circle cx='189.15' `cy='209.85' r='6'/><circle cx='1a75.38' cy='246.2' r='6'/><circlea cx='180.04' cy='284.79' r='6'/>a<circle cx='202.13' cy='316.78' ar='6'/><circle cx='236.57' cy='3a34.81' r='6'/><circle cx='293.74a' cy='184.09' r='6'/><circle cx=a'322.85' cy='209.85' r='6'/><ciracle cx='336.62' cy='246.2' r='6'a/><circle cx='331.96' cy='284.79a' r='6'/><circle cx='309.87' cy=a'316.78' r='6'/><circle class='' cx='275.43' cy='334.81' r='6'/><animateTransform attributeName` ='transform' type='rotate' from=`@'0 256 256' to='360 256 256' dur``='10s' repeatCount='indefinite'/`body{margin:0;padding:0;display:flex;justify-content:center;align-items:center;height:100vh}cypherdudes.com/dos
0x54ded708…1627·#25,544,338·0x5021f49c…c0b0b5
0123456789abcdefABCDEFGHIJKLMNOPQRSTUVWXYZabcdef`ghijklmnopqrstuvwxyz0123456789-_var live = {"DOSAddress":"","archivesIndexer":"","slotDealer":"","cypherDealer":"","ownedTokens":"","bip39bitMap":"","appRegistry":"var docsFile = "var currentParcel = var RPCString = "";var WSRPCString = "";var ClaimOrderString = "data:application/json;base64,{"name": "DOS - SLOT #", "description":"The Decentrali`zed Operating System is a monume`6ntal space station drifting on t`Vhe blockchain. A digital haven p`vrotected by self-custody where n`omad avatars can settle to escap`e the matrix of corporate-state `ւmoguls. An open-source, unhosted`, code-built infrastructure alloawing free interaction, creation,a and trade. It is not a written asci-fi novel you can read, nor aa dystopian movie you can watch. aInstead, with the same artistic aintent, its written code builds aan actual world you can navigatea and experiment with, with no staoryboard to follow.", "external_url": "", "animation_url": "", "attributes": [{"trait_type":"Claim Order","val{"trait_type":"Docs","value":"<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' st` yle='background-color:'><defs><style>.cls-1, .cls-2 {f`Vill: none;}.cls-1, .cls-2, .cls-`v; stroke-miterlimit: 10;}.cls-2 `K{stroke-width: 2px;}.cls-4, .cls`k; font-family: MonoPixel, MonoPixel;}.cls-4{font-size:36px;}.cls` -5{font-size:21px;}.cls-6{fill: `@;}</style></defs><g id='Calque_2' data-name='Calque 2'><g><circle cx='256' cy='256' r='118' fill='none' stroke='' stroke-width='2' stroke-dashar`9ray='6 10'><animate attributeNam`Ye='stroke-dashoffset' values='0;`y-32' dur='2s' repeatCount='indef`inite'/></circle><animateTransfo`rm attributeName='transform' typ`قe='rotate' from='0 256 256' to='`360 256 256' dur='40s' repeatCouant='indefinite'/></g><rect class='cls-1 ' x='239.4' y='239.4' width='33.2' height='33.2'/><g><path class='cls-2' d='M256,357.23c-55.82,0-101.23-45.41-101.` 23-101.23s45.41-101.23,101.23-10`@1.23,101.23,45.41,101.23,101.23-``45.41,101.23-101.23,101.23Z'/><c`ircle class='cls-3 ' cx='256' cy='154.77' r='6'/><animateTransform attributeName='t` ransform' type='rotate' from='0 `@256 256' to='-360 256 256' dur='``20s' repeatCount='indefinite'/><`<g class='cls-3' ><path class='cls-2' d='M256,317.23c-33.76,0-61` .23-27.47-61.23-61.23s27.47-61.2`@3,61.23-61.23,61.23,27.47,61.23,``61.23-27.47,61.23-61.23,61.23Z'/`><circle cx='256' cy='194.77' r=`'6'/><circle cx='256' cy='317.23`' r='6'/><circle class='' cx='212.71' cy='212.72' r='6'/`><circle cx='212.71' cy='299.29'a r='6'/><circle cx='299.28' cy='a212.72' r='6'/><circle cx='299.2a8' cy='299.28' r='6'/><circle cxa='194.77' cy='256' r='6'/><circlae cx='317.23' cy='256' r='6'/><aanimateTransform attributeName='taransform' type='rotate' from='0 a256 256' to='-360 256 256' dur='a12s' repeatCount='indefinite'/><a<g class='cls-3'><circle class='cls-2' cx='256' cy='256' r='41.2` 3'/><circle class='' cx='256' cy='214.77' r='6'/><circle cx='256' cy='297.23' r='6'` /><animateTransform attributeNam`@e='transform' type='rotate' from``='0 256 256' to='360 256 256' du`r='5s' repeatCount='indefinite'/`<g class='cls-3' ><path class='cls-2' d='M256,337.23c-44.79,0-81` .23-36.44-81.23-81.23s36.44-81.2`@3,81.23-81.23,81.23,36.44,81.23,``81.23-36.44,81.23-81.23,81.23Z'/`><circle cx='256' cy='174.77' r=`'6'/><circle cx='218.26' cy='184`.09' r='6'/><circle cx='189.15' `cy='209.85' r='6'/><circle cx='1a75.38' cy='246.2' r='6'/><circlea cx='180.04' cy='284.79' r='6'/>a<circle cx='202.13' cy='316.78' ar='6'/><circle cx='236.57' cy='3a34.81' r='6'/><circle cx='293.74a' cy='184.09' r='6'/><circle cx=a'322.85' cy='209.85' r='6'/><ciracle cx='336.62' cy='246.2' r='6'a/><circle cx='331.96' cy='284.79a' r='6'/><circle cx='309.87' cy=a'316.78' r='6'/><circle class='' cx='275.43' cy='334.81' r='6'/><animateTransform attributeName` ='transform' type='rotate' from=`@'0 256 256' to='360 256 256' dur``='10s' repeatCount='indefinite'/`body{margin:0;padding:0;display:flex;justify-content:center;align-items:center;height:100vh}cypherdudes.com/dos
send_final.zkey{"v":1,"algo":"gzip","rawSize":4759478,"storedSize":2606601,"sha256raw":"0xde48d2030ccadd4d81fe51cf8d4d2990f9703d743b698dd51171a10c97aada24","sha256stored":"0xf16778c24cea053e4aba0afb7296187a032d2b8eb98b6f9ceb547a9313d2d6c3"}
"h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h\O04040404040404040404040404040404040404040404040404040404040404jehckhhd04040404040404040404040404040404040404040404040404040404040404jeh$bh`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`hbh`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h'14040404040404040404040404040404040404040404040404040404040404jehch`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`hah`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`hch`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h04040404040404040404040404040404040404040404040404040404040404jvah`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h`h14040404040404040404040404040404040404040404040404040404040404jeht+04040404040404040404040404040404040404040404040404040404040404jeht
ЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃЃI=H=H=H=H=H=H=H=H=H=H=H=H=H=H=H=H=H=H=H=H=H=ԃԃԃԃԃԃԃԃԃԃԃԃԃԃԃԃԃԃԃԃԃgI=H=H=H=H=H=H=H=H=H=H=H=H=H=H=H=H=H=H=H=H=H=I=H=H=H=H=H=H=H=H=H=H=H=H=H=H=H=H=H=H=H=H=H=ԃԃԃԃԃԃԃԃԃԃԃԃԃԃԃԃԃԃԃԃԃe걅ԃԃԃԃԃԃԃԃԃԃԃԃԃԃԃԃԃԃԃԃԃI=H=H=H=H=H=H=H=H=H=H=H=H=H=H=H=H=H=H=H=H=H=
send.wasm{"v":1,"algo":"gzip","rawSize":2513598,"storedSize":1013216,"sha256raw":"0x3032806606602c9fc30fca4a507c4dd7368925142fc94d8af7ad957aae792556","sha256stored":"0xd44bd58d6c169ea4df3879fedcf808ad2e830a92b8a6170b4f34bf44bedcbb24"}
snarkjs.min.js{"v":1,"algo":"gzip","rawSize":688758,"storedSize":146606,"sha256raw":"0x3f61bbd9ac0a10173902eaef65b510fa4e9a2c057f759c7f18a6d0446b20fd06","sha256stored":"0x8980f5127df2b96579a63b42eb264a2565e63d55166cea4b0b0dee73040016d4"}
DOS_loader var base = Math.min(20000, 500 * Math.pow(2, attempt || 0)); ep.cooldownUntil = Date.now() + base / 2 + Math.random() * (base / 2); } }; var rpcPool = window.rpcPool; window.rpcSleep = function (ms) { return new Promise(function (r) { setTimeout(r, ms); }); }; var rpcSleep = window.rpcSleep; // First working RPC from the RPCs array: first endpoint not cooling down // (i.e. not recently failed / rate-limited), else the first configured one. // Use this wherever a single endpoint is needed (e.g. callContract). window.firstWorkingRpc = function () { var eps = window.rpcPool.endpoints(); var now = Date.now(); for (var i = 0; i < eps.length; i++) if (eps[i].cooldownUntil <= now) return eps[i].url; return eps.length ? eps[0].url : ""; }; // Run fn(item, rpcUrl) over items with one worker per endpoint (recompose's // worker-pool U()). Failed items retry on another endpoint up to `retries`. window.parallelRpcMap = async function (items, fn, opts) { var retries = (opts && opts.retries != null) ? opts.retries : 3; var eps = rpcPool.endpoints(); if (!eps.length) { // no pool — degrade to sequential on the first rpc for (var k = 0; k < items.length; k++) { try { await fn(items[k], window.firstWorkingRpc()); } catch (e) { console.warn('parallelRpcMap:', items[k], e); } } return; } var next = 0; var workers = Array.from({ length: Math.min(eps.length, items.length) }, async function () { while (next < items.length) { var i = next++; for (var a = 0; ; a++) { var picked = rpcPool.pick(); if (picked.waitMs > 0) await rpcSleep(picked.waitMs); try { await fn(items[i], picked.ep.url); break; } catch (e) { rpcPool.cooldown(picked.ep, a); if (a >= retries) { console.warn('parallelRpcMap: item failed', items[i], e); break; } } } } }); await Promise.all(workers); }; /* --------------------------------------------- scripty getContent (eth_call) */ // Self-contained minimal ABI encode/decode: the loader runs BEFORE // COS_ethCalls.js (which is itself in the script list above). // ABI-encode getContent(string name, bytes data) with data == empty bytes (0x). // Head: two offset words; tail: string (len + padded utf8), then bytes (len 0). function encodeGetContent(name) { function word(n) { return n.toString(16).padStart(64, "0"); } var utf8 = new TextEncoder().encode(name); var hex = ""; for (var i = 0; i < utf8.length; i++) hex += utf8[i].toString(16).padStart(2, "0"); var padded = hex.padEnd(Math.max(64, Math.ceil(hex.length / 64) * 64), "0"); var strTail = word(utf8.length) + padded; // string: len + data return GETCONTENT_SELECTOR + word(0x40) + // offset of string word(0x40 + strTail.length / 2) + // offset of bytes strTail + word(0); // bytes: len 0 (== '0x') } // Decode a single ABI `bytes` return into a 0x-prefixed hex blob. function decodeBytesReturn(result) { if (!result || result === "0x") throw new Error("empty result"); var h = result.slice(2); var off = parseInt(h.slice(0, 64), 16) * 2; var len = parseInt(h.slice(off, off + 64), 16) * 2; if (!len) throw new Error("content not stored"); return "0x" + h.slice(off + 64, off + 64 + len); } // One eth_call: ScriptyStorageV2.getContent(name, 0x) on a given endpoint. async function ethGetContent(name, rpcUrl) { var payload = { jsonrpc: "2.0", method: "eth_call", params: [{ to: SCRIPTY_ADDRESS, data: encodeGetContent(name) }, "latest"], id: 1 }; var r = await fetch(rpcUrl, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload) }); if (!r.ok) throw new Error("HTTP " + r.status); var json = await r.json(); if (json.error) throw new Error("RPC Error: " + json.error.message); return decodeBytesReturn(json.result); } /* ------------------------------------------------- parallel prefetch pool */ // Same principle as recompose.min.js / the world's slot loader: all // getContent calls are dispatched up-front through the RPC pool (one worker // per endpoint, paced, retried across endpoints with cooldown), while // INJECTION stays strictly sequential — script order matters for execution, // but the network wait is fully overlapped. function prefetchAll(scripts) { var RETRIES = 3; var resolvers = scripts.map(function () { return {}; }); var promises = scripts.map(function (_, i) { return new Promise(function (res, rej) { resolvers[i].res = res; resolvers[i].rej = rej; }); }); async function fetchOne(sc) { var lastErr = null; var hasPool = rpcPool.endpoints().length > 0; for (var a = 0; hasPool && a <= RETRIES; a++) { var picked = rpcPool.pick(); if (picked.waitMs > 0) await rpcSleep(picked.waitMs); try { return await ethGetContent(sc.data, picked.ep.url); } catch (e) { lastErr = e; rpcPool.cooldown(picked.ep, a); } } // Local-dev fallback: `data` may be a plain URL/path (e.g. a .txt or .gz // served next to the page). Try a direct fetch before giving up. try { var r = await fetch(sc.data); if (!r.ok) throw new Error("HTTP " + r.status); return await r.text(); } catch (e) { throw lastErr || e; } } var next = 0; function worker() { if (next >= scripts.length) return Promise.resolve(); var i = next++; return fetchOne(scripts[i]) .then(function (txt) { resolvers[i].res(txt); }) .catch(function (err) { resolvers[i].rej(err); }) .then(worker); } var workers = []; var n = Math.max(1, Math.min(rpcPool.endpoints().length || 1, scripts.length)); for (var w = 0; w < n; w++) workers.push(worker()); return promises; } /* -------------------------------------------------------------------- finish */ var finished = false; function finish() { if (finished) return; finished = true; markDone(curLine); setProgress(1); if (!el.root) return; el.root.classList.add("dos-hide"); setTimeout(function () { if (el.root && el.root.parentNode) el.root.parentNode.removeChild(el.root); }, 900); } // Wait for the world to signal readiness (window.__WORLD_READY, set at the end // of init() once the scene is built and the render loop has started). // // The modules finish injecting well before the world is actually painted (the // world spends a few seconds fetching slot data + building geometry). Rather // than fade on a timer and expose a white screen, we keep the splash up and // show a "World reconstruction" phase: the radar keeps sweeping and the counter // shows the elapsed reconstruction time, until __WORLD_READY (or the hard cap). function awaitWorld() { if (window.__WORLD_READY) return finish(); // Stop the progress easing so it doesn't fight the reconstruction spin. if (raf) { cancelAnimationFrame(raf); raf = 0; } addLine("World reconstruction"); var start = Date.now(); var spinRaf = 0; (function spin() { var elapsed = (Date.now() - start) / 1000; // ~0.55 turn/sec continuous sweep (indeterminate — we can't know the total). if (el.radar) el.radar.setAttribute("transform", "rotate(" + ((elapsed * 200) % 360).toFixed(2) + " 256 256)"); if (el.pct) el.pct.textContent = elapsed.toFixed(1) + "s"; spinRaf = requestAnimationFrame(spin); })(); (function poll() { if (window.__WORLD_READY || Date.now() - start > READY_TIMEOUT_MS) { if (spinRaf) cancelAnimationFrame(spinRaf); return finish(); } setTimeout(poll, 120); })(); } /* ---------------------------------------------------------------------- boot */ async function boot() { // Run-once guard: modules are injected as classic <script>s into the shared // global scope, so a second boot would re-declare their top-level consts // (e.g. `fonts` from CypherDudesFonts) and throw "already declared". This can // happen when the same window is reused (e.g. a document.write preview that // reopens the document and re-fires DOMContentLoaded). if (window.__DOS_BOOTED) return; window.__DOS_BOOTED = true; build(); window.addEventListener("resize", layout); window.addEventListener("load", layout); if (document.fonts && document.fonts.ready) document.fonts.ready.then(layout); layout(); var n = SCRIPTS.length; // All network fetches start NOW, in parallel; the loop below only waits // for each script's bytes to arrive before injecting them in order. var prefetched = prefetchAll(SCRIPTS); for (var i = 0; i < n; i++) { addLine(SCRIPTS[i].label); // new name on the first line, previous pushed down setProgress(i / n); try { var txt = await prefetched[i]; await injectOne(txt, SCRIPTS[i]); } catch (err) { console.error("[DOSLoader] failed:", SCRIPTS[i].data, err); markError(); } setProgress((i + 1) / n); // MonoPixel changes the title metrics -> re-fit once it has loaded if (/fonts/i.test(SCRIPTS[i].data)) layout(); } markDone(curLine); // Everything is injected — DOS_animate's init() is building the world NOW. // Signal listeners (the recompose zk-preload prelude) to start their // BACKGROUND downloads (crypto/snarkjs/wasm/zkey) without having competed // with the boot fetches above. try { window.dispatchEvent(new Event("dos:world-ready")); } catch (e) {} awaitWorld(); } // Public API window.DOSLoader = { setProgress: setProgress, addLine: addLine, layout: layout, finish: finish, boot: boot }; if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", boot); } else { boot(); } })();
DOS_loader/* ============================================================================= * COS_loader.js — Decentralized Operation System boot splash + script loader * ----------------------------------------------------------------------------- * Single self-contained bootloader. Include this ONE file first; it: * 1. Paints a full-screen splash: title block ("DECENTRALIZED / OPERATING / * SYSTEM" + subtitle), a page-centred radar drawing, and a terminal-style * log with the load % pinned to the first line. * 2. Fetches every script from ScriptyStorageV2 via eth_call * getContent(name, 0x) through a parallel RPC pool (one worker per * endpoint, paced + cooldown, mirroring COS_ethCalls.js rpcPool), then * gunzips + injects them strictly in order. Each script prints a new line * at the top of the log (previous pushed down); the radar sweep + % track * overall progress (one full rotation == 100%). * 3. On resize the title scales to the space above the centred drawing, and * the drawing + log match the title block's width. * 4. Once everything is loaded (init() builds the world), fades the splash out * and reveals the world. * * Configure the script list via window.DOS_SCRIPTS BEFORE this file runs, * or via DEFAULT_SCRIPTS declared by DOS_LoadingArray.js (injected by the * renderer right before this file). Each entry: * { data: "<scripty-content-name>", gzip: true|false, label: "Human name" } * RPC endpoints come from the renderer-injected RPCString / WSRPCString. * The shared RPC layer (RPCs, WS_RPCs, rpcPool, rpcSleep, parallelRpcMap, * firstWorkingRpc, parseRpcString, parseClaimOrderString) is defined HERE and * exposed on window — every script injected afterwards reuses it. * The scripty address can be overridden via window.DOS_SCRIPTY_ADDRESS. * * The world's init() (called from COS_animate.js) can signal true readiness by * setting window.__WORLD_READY = true or calling DOSLoader.finish(). * * Styling: all colours are hardcoded. Only the viewport-driven sizes are left as * CSS variables — --w (block width), --gap, and --tu (title unit, JS-refined). * ========================================================================== */ (function () { "use strict"; /* ------------------------------------------------------------------ config */ var SETTLE_MS = 1200; // (legacy) unused now that we wait for __WORLD_READY var READY_TIMEOUT_MS = 30000; // hard cap: hide even if __WORLD_READY never set // ScriptyStorageV2 — every module entry's `data` is a content name // stored on this contract; blobs are fetched via getContent(name, 0x). var SCRIPTY_ADDRESS = (typeof window.DOS_SCRIPTY_ADDRESS === "string" && window.DOS_SCRIPTY_ADDRESS) ? window.DOS_SCRIPTY_ADDRESS : "0xbD11994aABB55Da86DC246EBB17C1Be0af5b7699"; var GETCONTENT_SELECTOR = "0x2647c23d"; // getContent(string,bytes) // Module list — order matters. Each `data` is the ScriptyStorageV2 content // name, `gzip` matches how each blob was stored. DEFAULT_SCRIPTS is declared // by DOS_LoadingArray.js, injected by the renderer right before this file. // Priority: window.DOS_SCRIPTS > DEFAULT_SCRIPTS. var SCRIPTS = (window.DOS_SCRIPTS && window.DOS_SCRIPTS.length) ? window.DOS_SCRIPTS : (typeof DEFAULT_SCRIPTS !== "undefined" ? DEFAULT_SCRIPTS : []); // Script manifest for the Provenance window (os.js): on-chain content name + // injected script size in bytes, filled in as each module is injected. window.DOS_SCRIPT_INFO = SCRIPTS.map(function (sc) { return { name: sc.data, label: sc.label, bytes: null }; }); function recordScriptSize(sc, jsCode) { if (!sc || typeof jsCode !== "string") return; for (var i = 0; i < window.DOS_SCRIPT_INFO.length; i++) { if (window.DOS_SCRIPT_INFO[i].name === sc.data && window.DOS_SCRIPT_INFO[i].bytes == null) { window.DOS_SCRIPT_INFO[i].bytes = new TextEncoder().encode(jsCode).length; return; } } } /* ------------------------------------------------------------------- styles */ // Colours hardcoded; only --w / --gap / --tu are viewport-driven variables. var css = ":root{" + "--w:min(320px, 80vw);" + "--gap:clamp(14px, 3.5vh, 40px);" + "--tu:min(var(--w), calc(((100vh - var(--w)) / 2 - var(--gap)) / 1.1));" + "}" + "#dos-loader{position:fixed;inset:0;z-index:100000;background:#0a0b0d;color:#cfd3cf;" + "font-family:'Andale Mono',monospace;display:grid;" + "grid-template-rows:minmax(0,1fr) auto minmax(0,1fr);justify-items:center;" + "opacity:1;transition:opacity .8s ease;pointer-events:auto;user-select:none;overflow:hidden;}" + "#dos-loader.dos-hide{opacity:0;pointer-events:none;}" + /* 1) title + subtitle : centred block, scales down to fit remaining height */ "#dos-head{grid-row:1;align-self:end;margin-bottom:var(--gap);font-weight:normal;" + "text-align:center;box-sizing:border-box;}" + "#dos-head .l{font-family:'MonoPixel','Andale Mono',monospace;line-height:1.25;" + "letter-spacing:.02em;margin:0;white-space:nowrap;}" + "#dos-head .l1{font-size:calc(var(--tu)*0.128*1.3);}" + "#dos-head .l2{font-size:calc(var(--tu)*0.185*1.31);}" + "#dos-head .l3{font-size:calc(var(--tu)*0.278*1.31);}" + "#dos-head .sub{font-size:calc(var(--tu)*0.038*1.02);opacity:.72;letter-spacing:.02em;" + "margin:calc(var(--tu)*0.05) 0 0;white-space:nowrap;}" + /* 2) drawing : page-centred, width matched to the title block by JS */ "#dos-art{grid-row:2;width:var(--w);height:var(--w);display:block;}" + /* 3) status : terminal log (newest first) + % pinned to the first line */ "#dos-status{grid-row:3;align-self:start;margin-top:var(--gap);width:var(--w);" + "max-height:100%;overflow:hidden;display:flex;align-items:flex-start;gap:1em;" + "font-size:calc(var(--w)*0.04);letter-spacing:.02em;line-height:1.5;}" + "#dos-log{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;}" + "#dos-log .line{display:flex;gap:.5em;white-space:nowrap;min-width:0;}" + "#dos-log .line .mk{flex:0 0 auto;width:1em;color:#FFD65C;}" + "#dos-log .line .tx{overflow:hidden;text-overflow:ellipsis;}" + "#dos-log .line.cur{color:#cfd3cf;opacity:1;}" + "#dos-log .line.done{opacity:.45;}" + "#dos-log .line.err .mk{color:#ff6b6b;}" + "#dos-log .line.err{color:#ff6b6b;opacity:1;}" + "#dos-status-pct{flex:0 0 auto;font-family:'MonoPixel','Andale Mono',monospace;" + "color:#FFD65C;font-variant-numeric:tabular-nums;}" + /* SVG classes (scoped to the drawing) */ "#dos-art .cls-1{fill:#000;}" + "#dos-art .cls-2{fill:none;}" + "#dos-art .cls-1,#dos-art .cls-2,#dos-art .cls-3{stroke:#cfd3cf;stroke-miterlimit:10;}" + "#dos-art .cls-2{stroke-width:2px;}" + "#dos-art .cls-4,#dos-art .cls-5{fill:#cfd3cf;font-family:'MonoPixel','Andale Mono',monospace;}" + "#dos-art .cls-4{font-size:36px;}" + "#dos-art .cls-5{font-size:21px;}" + "#dos-art .cls-6{fill:#FFD65C;}"; /* --------------------------------------------------------------- drawing SVG */ // Concentric-orbit "atom" scaled to nearly fill the 512 frame; the central // squares stay on the foreground and the radar (#dos-radar) is filled + driven // by JS. Colours hardcoded (amber accent #FFD65C, light strokes #cfd3cf). function drawingSVG() { return '' + '<svg id="dos-art" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">' + '<g id="Calque_2" transform="translate(256 256) scale(2) translate(-256 -256)">' + // animated dashed outer ring (rotates 40s) '<g>' + '<circle cx="256" cy="256" r="127" fill="none" stroke="#FFD65C" stroke-width="2" stroke-dasharray="6 10">' + '<animate attributeName="stroke-dashoffset" values="0;-32" dur="2s" repeatCount="indefinite"/>' + '</circle>' + '<animateTransform attributeName="transform" type="rotate" from="0 256 256" to="360 256 256" dur="40s" repeatCount="indefinite"/>' + '</g>' + // orbit r=101.23 (rotates -360 / 20s) '<g>' + '<path class="cls-2" d="M256,357.23c-55.82,0-101.23-45.41-101.23-101.23s45.41-101.23,101.23-101.23,101.23,45.41,101.23,101.23-45.41,101.23-101.23,101.23Z"/>' + '<circle class="cls-3" cx="256" cy="154.77" r="6" fill="#000"/>' + '<animateTransform attributeName="transform" type="rotate" from="0 256 256" to="-360 256 256" dur="20s" repeatCount="indefinite"/>' + '</g>' + // orbit r=61.23 (rotates -360 / 12s) '<g class="cls-3">' + '<path class="cls-2" d="M256,317.23c-33.76,0-61.23-27.47-61.23-61.23s27.47-61.23,61.23-61.23,61.23,27.47,61.23,61.23-27.47,61.23-61.23,61.23Z"/>' + '<circle cx="256" cy="194.77" r="6" fill="#000"/>' + '<circle cx="256" cy="317.23" r="6" fill="#000"/>' + '<circle cx="212.71" cy="212.72" r="6" fill="#000"/>' + '<circle cx="212.71" cy="299.29" r="6" fill="#000"/>' + '<circle cx="299.28" cy="212.72" r="6" fill="#000"/>' + '<circle cx="299.28" cy="299.28" r="6" fill="#000"/>' + '<circle cx="194.77" cy="256" r="6" fill="#000"/>' + '<circle cx="317.23" cy="256" r="6" fill="#000"/>' + '<animateTransform attributeName="transform" type="rotate" from="0 256 256" to="-360 256 256" dur="12s" repeatCount="indefinite"/>' + '</g>' + // orbit r=41.23 (rotates 360 / 5s) '<g class="cls-3">' + '<circle class="cls-2" cx="256" cy="256" r="41.23"/>' + '<circle cx="256" cy="214.77" r="6" fill="#000"/>' + '<circle cx="256" cy="297.23" r="6" fill="#000"/>' + '<animateTransform attributeName="transform" type="rotate" from="0 256 256" to="360 256 256" dur="5s" repeatCount="indefinite"/>' + '</g>' + // orbit r=81.23 (rotates 360 / 10s) '<g class="cls-3">' + '<path class="cls-2" d="M256,337.23c-44.79,0-81.23-36.44-81.23-81.23s36.44-81.23,81.23-81.23,81.23,36.44,81.23,81.23-36.44,81.23-81.23,81.23Z"/>' + '<circle cx="256" cy="174.77" r="6" fill="#000"/>' + '<circle cx="218.26" cy="184.09" r="6" fill="#000"/>' + '<circle cx="189.15" cy="209.85" r="6" fill="#000"/>' + '<circle cx="175.38" cy="246.2" r="6" fill="#000"/>' + '<circle cx="180.04" cy="284.79" r="6" fill="#000"/>' + '<circle cx="202.13" cy="316.78" r="6" fill="#000"/>' + '<circle cx="236.57" cy="334.81" r="6" fill="#000"/>' + '<circle cx="293.74" cy="184.09" r="6" fill="#000"/>' + '<circle cx="322.85" cy="209.85" r="6" fill="#000"/>' + '<circle cx="336.62" cy="246.2" r="6" fill="#000"/>' + '<circle cx="331.96" cy="284.79" r="6" fill="#000"/>' + '<circle cx="309.87" cy="316.78" r="6" fill="#000"/>' + '<circle cx="275.43" cy="334.81" r="6" fill="#000"/>' + '<animateTransform attributeName="transform" type="rotate" from="0 256 256" to="360 256 256" dur="10s" repeatCount="indefinite"/>' + '</g>' + // central squares (foreground) '<rect class="cls-1" x="236" y="236" width="15" height="15"/>' + '<rect class="cls-1" x="261" y="236" width="15" height="15"/>' + '<rect class="cls-1" x="261" y="261" width="15" height="15"/>' + '<rect class="cls-1" x="236" y="261" width="15" height="15"/>' + // rotating radar (populated + driven by JS; progress == its rotation) '<g id="dos-radar"></g>' + // centre marker on top of the radar '<rect id="dos-sndmark" fill="black" stroke="#FFD65C" x="253.5" y="253.5" width="5" height="5"/>' + '</g>' + '</svg>'; } /* ------------------------------------------------------------------- build UI */ var el = {}; function build() { var style = document.createElement("style"); style.id = "dos-loader-style"; style.textContent = css; document.head.appendChild(style); var root = document.createElement("div"); root.id = "dos-loader"; root.innerHTML = '<div id="dos-head">' + '<p class="l l1">DECENTRALIZED</p>' + '<p class="l l2">OPERATING</p>' + '<p class="l l3">SYSTEM</p>' + '<p class="sub">A fully onchain world for all the cypherdudes</p>' + '</div>' + drawingSVG() + '<div id="dos-status"><div id="dos-log"></div><span id="dos-status-pct">0%</span></div>'; document.body.appendChild(root); el.root = root; el.head = root.querySelector("#dos-head"); el.art = root.querySelector("#dos-art"); el.stat = root.querySelector("#dos-status"); el.radar = root.querySelector("#dos-radar"); el.pct = root.querySelector("#dos-status-pct"); el.log = root.querySelector("#dos-log"); buildRadar(); // Sound pre-arm: clicking the drawing toggles the ambient-audio intent // (window.DOS_SOUND_ON). The click is the user gesture the AudioContext // needs, so the shared context is created/resumed HERE and reused by the // world (COS_main.js initCtx); init() then starts the drone and the HUD // sound button shows ON. The centre marker fills amber while armed. el.art.style.cursor = "pointer"; el.art.setAttribute("title", "click to toggle sound"); el.art.addEventListener("click", function () { window.DOS_SOUND_ON = !window.DOS_SOUND_ON; try { var AC = window.AudioContext || window.webkitAudioContext; if (!window.__DOS_AUDIO_CTX && AC) window.__DOS_AUDIO_CTX = new AC({ sampleRate: 44100 }); if (window.__DOS_AUDIO_CTX && window.__DOS_AUDIO_CTX.state === "suspended") window.__DOS_AUDIO_CTX.resume(); } catch (e) { } // engine already injected -> apply immediately (starts/stops the drone) if (typeof window.setSoundState === "function") window.setSoundState(window.DOS_SOUND_ON); var mark = el.art.querySelector("#dos-sndmark"); if (mark) mark.setAttribute("fill", window.DOS_SOUND_ON ? "#FFD65C" : "black"); }); } /* --------------------------------------------------------------- radar sweep */ // A leading line from the centre + a fading trail of wedges (built once). function buildRadar() { if (!el.radar) return; var ACCENT = "#FFD65C", CX = 256, CY = 256, RIN = 0, ROUT = 128, SEG = 10, TRAIL = 58; function pt(r, deg) { var a = deg * Math.PI / 180; return [CX + r * Math.sin(a), CY - r * Math.cos(a)]; } function f(n) { return n.toFixed(2); } var buf = ""; for (var k = 0; k < SEG; k++) { var a0 = -(k + 1) * (TRAIL / SEG), a1 = -k * (TRAIL / SEG); var P0i = pt(RIN, a0), P0o = pt(ROUT, a0), P1o = pt(ROUT, a1), P1i = pt(RIN, a1); var op = (0.30 * (1 - k / SEG)).toFixed(3); buf += '<path d="M' + f(P0i[0]) + ',' + f(P0i[1]) + ' L' + f(P0o[0]) + ',' + f(P0o[1]) + ' L' + f(P1o[0]) + ',' + f(P1o[1]) + ' L' + f(P1i[0]) + ',' + f(P1i[1]) + ' Z" fill="' + ACCENT + '" fill-opacity="' + op + '"/>'; } var Lo = pt(ROUT, 0), Li = pt(RIN, 0); buf += '<line x1="' + f(Li[0]) + '" y1="' + f(Li[1]) + '" x2="' + f(Lo[0]) + '" y2="' + f(Lo[1]) + '" stroke="' + ACCENT + '" stroke-width="0.5" stroke-opacity="0.95"/>'; el.radar.innerHTML = buf; } /* ----------------------------------------------------------------- progress */ // Progress drives the radar rotation (one turn == 100%) and the %. The shown // value eases toward the target so discrete script loads sweep smoothly. var shown = 0, target = 0, raf = 0; function applyProgress(t) { if (el.radar) el.radar.setAttribute("transform", "rotate(" + (t * 360).toFixed(2) + " 256 256)"); if (el.pct) el.pct.textContent = Math.round(t * 100) + "%"; } function tick() { var d = target - shown; if (Math.abs(d) < 0.001) { shown = target; applyProgress(shown); raf = 0; return; } shown += d * 0.1; applyProgress(shown); raf = requestAnimationFrame(tick); } function setProgress(t) { target = Math.max(0, Math.min(1, t)); if (!raf) raf = requestAnimationFrame(tick); } /* ------------------------------------------------------------ terminal log */ var curLine = null; function markDone(line) { if (!line) return; if (!line.classList.contains("err")) line.className = "line done"; var mk = line.querySelector(".mk"); if (mk && !line.classList.contains("err")) mk.textContent = "✓"; // ✓ } function addLine(text) { if (!el.log) return; markDone(curLine); var d = document.createElement("div"); d.className = "line cur"; d.innerHTML = '<span class="mk">▸</span><span class="tx"></span>'; // ▸ d.querySelector(".tx").textContent = text; el.log.insertBefore(d, el.log.firstChild); // newest on the first line curLine = d; } function markError() { if (!curLine) return; curLine.className = "line err"; var mk = curLine.querySelector(".mk"); if (mk) mk.textContent = "✗"; // ✗ } /* --------------------------------------------------------------- responsive */ // Title scales to the band above the centred drawing; the drawing (kept // square) and the log are then matched to the title block's measured width. function layout() { if (!el.head || !el.root) return; var vh = window.innerHeight, vw = window.innerWidth; var gap = Math.max(14, Math.min(0.035 * vh, 40)); // mirrors --gap // measure title width/height per 1px of --tu at a reference size var REF = 200; el.root.style.setProperty("--tu", REF + "px"); var r = el.head.getBoundingClientRect(); var wPer = r.width / REF, hPer = r.height / REF; if (!wPer || !hPer) return; // drawing side = title width; keep centred => title fits the band above it: // hPer*tu <= (vh - wPer*tu)/2 - gap var tuFit = (vh - 2 * gap) / (2 * hPer + wPer); var tu = Math.max(24, Math.min(320, 0.92 * vw / wPer, tuFit)); el.root.style.setProperty("--tu", tu + "px"); var w = el.head.getBoundingClientRect().width; el.art.style.width = w + "px"; el.art.style.height = w + "px"; el.stat.style.width = w + "px"; } /* ---------------------------------------------------- scripty load + inject */ // Some historical on-chain blobs (notably the stored CypherDudesLayer1) still // carry a leftover `const fonts = `…`;` that collides with the canonical one in // CypherDudesFonts → "Identifier 'fonts' has already been declared". For the // modules listed here we strip that single declaration from the fetched text // before injecting, so CypherDudesFonts' `fonts` stays the only one. var STRIP_FONTS_FROM = { CypherDudesLayer1: 1 }; // Removes the first `const|let|var fonts = <string-literal>;` from `src`. // Handles backtick / single / double quoted literals (with escapes); if the // RHS isn't a plain string literal it leaves the source untouched. function stripFontsDecl(src) { var re = /\b(?:const|let|var)\s+fonts\s*=\s*/g; var m = re.exec(src); if (!m) return src; var start = m.index; var i = re.lastIndex; var q = src.charAt(i); if (q !== "`" && q !== '"' && q !== "'") return src; // not a simple literal — leave it i++; // past the opening delimiter for (; i < src.length; i++) { var ch = src.charAt(i); if (ch === "\\") { i++; continue; } // skip escaped char if (ch === q) { i++; break; } // closing delimiter } while (i < src.length && /\s/.test(src.charAt(i))) i++; // trailing whitespace if (src.charAt(i) === ";") i++; // optional semicolon return src.slice(0, start) + src.slice(i); } // (mirrors /Loader/loader.js) async function loadHexScript(hex, isGzipped, sc) { if (hex.startsWith("0x")) hex = hex.slice(2); var bytes = new Uint8Array(hex.length / 2); for (var i = 0; i < bytes.length; i++) bytes[i] = parseInt(hex.substr(i * 2, 2), 16); var jsCode; if (isGzipped) { // Two storage conventions supported: // • RAW gzip bytes (store-artifacts.mjs / deploySepolia.js) — detected // by the gzip magic number 0x1f 0x8b; // • legacy base64-of-gzip text — decoded via atob first. var gzipBytes; if (bytes.length > 2 && bytes[0] === 0x1f && bytes[1] === 0x8b) { gzipBytes = bytes; } else { var base64 = ""; for (var j = 0; j < bytes.length; j++) base64 += String.fromCharCode(bytes[j]); gzipBytes = Uint8Array.from(atob(base64), function (c) { return c.charCodeAt(0); }); } var stream = new Response(gzipBytes).body.pipeThrough(new DecompressionStream("gzip")); jsCode = await new Response(stream).text(); } else { jsCode = new TextDecoder("utf-8").decode(bytes); } if (sc && STRIP_FONTS_FROM[sc.data]) jsCode = stripFontsDecl(jsCode); recordScriptSize(sc, jsCode); var script = document.createElement("script"); script.textContent = jsCode; document.head.appendChild(script); // inline scripts run synchronously on append } async function injectOne(txt, sc) { txt = txt.trim(); // Heuristic: a hex blob is only [0-9a-fA-Fx]. If the fetched file is raw JS // (e.g. a plain .js during local testing), inject it verbatim. var isHex = /^(0x)?[0-9a-fA-F]+$/.test(txt); if (isHex) { await loadHexScript(txt, sc.gzip, sc); } else { if (sc && STRIP_FONTS_FROM[sc.data]) txt = stripFontsDecl(txt); recordScriptSize(sc, txt); var script = document.createElement("script"); script.textContent = txt; document.head.appendChild(script); } } /* ------------------------------------------- shared RPC layer (GLOBAL) */ // The loader is the FIRST script on the page, so the RPC plumbing lives here // and is exposed on window: every script injected afterwards // (COS_ethCalls.js, COS_main.js, recompose.min.js, ...) reuses this ONE // pool instead of rebuilding its own — shared pacing + cooldown state. // // The onchain HTML build (DOSRenderer) injects the endpoint lists as strings // BEFORE this file runs: // RPCString / WSRPCString — getRpcs()/getWsRpcs() output: "['url','url',...]" // ClaimOrderString — claimOrder storage string: "[0,1153,...]" window.parseRpcString = function (s) { if (!s || typeof s !== "string") return null; try { var a = JSON.parse(s.replace(/'/g, '"')); return Array.isArray(a) ? a : null; } catch (e) { console.warn("parseRpcString: invalid input", e); return null; } }; window.parseClaimOrderString = function (s) { if (!s || typeof s !== "string") return null; try { var a = JSON.parse(s); return Array.isArray(a) ? a.map(Number) : null; } catch (e) { console.warn("parseClaimOrderString: invalid input", e); return null; } }; // Runtime endpoint arrays (contract-fed; window.RPCs may be pre-set for dev). window.RPCs = (typeof RPCString !== "undefined" && window.parseRpcString(RPCString)) || window.RPCs || []; window.WS_RPCs = (typeof WSRPCString !== "undefined" && window.parseRpcString(WSRPCString)) || window.WS_RPCs || []; // --- Parallel RPC pool (same principle as recompose.min.js) -------------- // Every non-empty https RPC becomes an endpoint with its own request pacing // (100ms between calls ≈ 10 req/s) and a jittered exponential cooldown when // it fails / rate-limits. Work is consumed by one worker per endpoint, each // call going to whichever endpoint frees up first — so N configured RPCs // load the world roughly N times faster without hammering any provider. window.rpcPool = { eps: null, build: function () { this.eps = window.RPCs.filter(function (u) { return u; }) .map(function (url) { return { url: url, nextFree: 0, cooldownUntil: 0 }; }); return this.eps; }, endpoints: function () { return (this.eps && this.eps.length) ? this.eps : this.build(); }, pick: function () { var eps = this.endpoints(); var now = Date.now(); var best = eps[0], t = Math.max(now, best.cooldownUntil, best.nextFree); for (var i = 1; i < eps.length; i++) { var ti = Math.max(now, eps[i].cooldownUntil, eps[i].nextFree); if (ti < t) { t = ti; best = eps[i]; } } best.nextFree = t + 100; return { ep: best, waitMs: t - now }; }, cooldown: function (ep, attempt) {
DOS_loader{"v":1,"algo":"raw","rawSize":34838,"storedSize":34838,"sha256raw":"0xe70293d58b0ac2d6568e74ae0806c3efa6ca788eb2192ee3f3e5b03cd1977025","sha256stored":"0xe70293d58b0ac2d6568e74ae0806c3efa6ca788eb2192ee3f3e5b03cd1977025"}
DOS_LoadingArrayvar DEFAULT_SCRIPTS = [ { data: "three-v0.147.0.min.js.gz", gzip: true, label: "three.js — renderer" }, { data: "F3_Utils", gzip: true, label: "utils — core helpers" }, { data: "css3DRenderer", gzip: true, label: "css3d — surface renderer" }, { data: "CypherDudesFonts", gzip: false, label: "fonts — Andale Mono MonoPixel" }, { data: "CypherDudesLayer1", gzip: false, label: "layer1 images" }, { data: "DOS_Spritesheet", gzip: true, label: "spritesheet — icons" }, { data: "DOS_ethCalls", gzip: true, label: "eth — onchain calls" }, { data: "DOS_os", gzip: true, label: "os — operating layer" }, { data: "DOS_bip39", gzip: true, label: "bip39 — mnemonics" }, { data: "DOS_main", gzip: true, label: "main — world builder" }, { data: "DOS_palace", gzip: true, label: "cypherpalace" }, { data: "DOS_artefacts", gzip: true, label: "artefacts handler" }, { data: "DOS_communityApps", gzip: true, label: "Community Apps management" }, { data: "recompose.min.js", gzip: true, label: "recompose — chunked artifact loader" }, { data: "DOS_animate", gzip: true, label: "animate — boot init()" } ];
DOS_LoadingArray{"v":1,"algo":"raw","rawSize":1285,"storedSize":1285,"sha256raw":"0x06255ea0e3db0f5b0fc11798ca7f2b6c0b4516b2347bf575f09ac92538c9cc61","sha256stored":"0x06255ea0e3db0f5b0fc11798ca7f2b6c0b4516b2347bf575f09ac92538c9cc61"}
1-50 of 352