memoscan
← all memos

Memo 0xced79aca…f3811d on Ethereum

0xcb43078c…17f9·#25,593,799·view on Etherscan
Homage to the PunkOne homage for every CryptoPunk. Each is composed from the punk's onchain data and its live market state, rendered fully onchain`Composed from the onchain data and live market state of CryptoPu, rendered fully onchain.data:application/json;base64, (preview)","image":"data:image/","animation_url":"data:text/htm","attributes":[{"trait_type":"Sdata:application/json;base64,translate(45 37.5) scale(0.625)<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 240 240" sh` ape-rendering="crispEdges"><rect x="60" y="210" width="120"` <rect width="240" height="240" fghijklmnopqrstuvwxyz0123456789+/`@ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef` Rlbad punk data` shape-rendering="crispEdges"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 240 240"<svg xmlns="http://www.w3.org/20` 00/svg" viewBox="0 0 240 240" shape-rendering="crispEdges">Rmels[i]);}})();`window.__homageConveyorInit=func` tion(root){ if(root.__conv)ret`@urn root.__conv; var svg=root.``querySelector('svg');if(!svg)ret`urn null; var NS='http://www.w`3.org/2000/svg'; var shapes=[]`.slice.call(svg.querySelectorAll`('rect,circle')); var ground='a#000000',fills=[],circle=false; a for(var i=0;i<shapes.length;i+a+){var e=shapes[i];if(e.tagName=a=='rect'&&e.getAttribute('x')===anull){ground=e.getAttribute('filal');}else{fills.push(e.getAttribaute('fill'));if(e.tagName==='ciracle')circle=true;}} var n=fillas.length;if(n<2)return null; vaar WO=192,U=240,AN=6,BMIN=-2,PERaIOD=1400; function sz(b){if(b>a=n)return 0;var w=WO*(n-b)/n;retaurn w<0?0:w;} function ax(s){raeturn (U-s)/2;} function ay(s)a{return AN*(U-s)/8;} function amk(t){return document.createElemaentNS(NS,t);} while(svg.firstCahild)svg.removeChild(svg.firstChaild); var cid='hc'+(window.__haomageConvSeq=(window.__homageConavSeq||0)+1); var defs=mk('defsa'),cp=mk('clipPath');cp.setAttriabute('id',cid);var cs; if(circale){cs=mk('circle');cs.setAttribaute('cx',U/2);cs.setAttribute('cay',ay(WO)+WO/2);cs.setAttribute(a'r',WO/2);} else{cs=mk('rect')a;cs.setAttribute('x',ax(WO));cs.asetAttribute('y',ay(WO));cs.setAattribute('width',WO);cs.setAttriabute('height',WO);} cp.appendCahild(cs);defs.appendChild(cp);svag.appendChild(defs); var gr=mka('rect');gr.setAttribute('width'a,U);gr.setAttribute('height',U);agr.setAttribute('fill',ground);savg.appendChild(gr); var g=mk('ag');g.setAttribute('clip-path','aurl(#'+cid+')');g.setAttribute('apointer-events','none');svg.appeandChild(g); var pool={},playinag=false,raf=null,t0=0,pausedP=0;a function shape(el,s){var x=axa(s),y=ay(s);if(circle){el.setAttaribute('cx',x+s/2);el.setAttribuate('cy',y+s/2);el.setAttribute('ar',s<0?0:s/2);}else{el.setAttribaute('x',x);el.setAttribute('y',ya);el.setAttribute('width',s<0?0:as);el.setAttribute('height',s<0?a0:s);}} function render(p){ a var seen={},arr=[],hi=Math.floaor(p),lo=Math.ceil(p+BMIN-n); a for(var m=lo;m<=hi;m++){var b=am-p+n;if(b<BMIN||b>n)continue;vaar el=pool[m]; if(!el){el=mak(circle?'circle':'rect');el.setaAttribute('fill',fills[((m%n)+n)a%n]);if(!circle)el.setAttribute(a'shape-rendering','crispEdges');apool[m]=el;} var s=sz(b);sahape(el,s);el.__s=s;seen[m]=1;arar.push(el);} arr.sort(functiaon(a,b){return b.__s-a.__s;}); a for(var i=0;i<arr.length;i++)a g.appendChild(arr[i]); for(va @ar k in pool){if(!seen[k]){if(poa `ol[k].parentNode)pool[k].parentNa ode.removeChild(pool[k]);delete a pool[k];}} } function now(){a return (window.performance&&perfa ormance.now)?performance.now():Da ate.now();} function frame(t){a if(!playing)return;render((t-t0)a @/PERIOD);raf=requestAnimationFraa `me(frame);} function play(){ifa (playing)return;playing=true;t0=a now()-pausedP*PERIOD;raf=requesta AnimationFrame(frame);} functia on pause(){if(!playing)return;plaaying=false;if(raf){cancelAnimataionFrame(raf);raf=null;}pausedP=a((now()-t0)/PERIOD)%n;render(pauasedP);} function toggle(){if(palaying){pause();}else{play();}} a root.addEventListener('click',atoggle); render(0); var api=a{toggle:toggle,play:play,pause:paause,get playing(){return playinag;},destroy:function(){pause();raoot.removeEventListener('click',atoggle);root.__conv=null;}}; raoot.__conv=api;return api; }; (faunction(){var els=document.queryaSelectorAll('[data-homage-conveyaor]');for(var i=0;i<els.length;ia ++){window.__homageConveyorInit(a </script></body></html><!doctype html><html><head><meta` charset="utf-8"><meta name="vie`@wport" content="width=device-wid``th,initial-scale=1"><style>html,`body{margin:0;height:100%;backgr`ound:#0b0b0e;display:flex;align-`items:center;justify-content:cen`ter;overflow:hidden}#stage{widtha:min(100vw,100vh);height:min(100avw,100vh);cursor:pointer}#stage asvg{width:100%;height:100%;displaay:block}</style></head><body><daiv id="stage" data-homage-conveyaaCeW[PaC]W`@Qcnt?"image":"data:image/svg+xml;base"animation_url":"data:text/html;data:application/json;base64,{"trait_type":"Punk Type","valueV[`@Qm"attributes":[`{"trait_type":"Accessory Count",,"display_type":"number"},{"trait_type":"Color Count","val,"display_type":"number"},{"trait_type":"Status","value":"{"trait_type":"Punk Accessory","