memoscan
← all memos

Memo 0x0f05b38f…d25d56 on Ethereum

<!-- assembler cc0 | renders the_terminal_god_speed live from The Vessel token 9994, entries 32-38. RPC order: wallet (window.ethereum) -> seed list -> if ALL fail, a form lets you paste your own RPC. --> <!DOCTYPE html> <html><head><meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"> <title>the_terminal_god_speed</title> <style> *{margin:0;padding:0;box-sizing:border-box} html,body{width:100%;height:100%;background:#000;overflow:hidden;font-family:monospace;color:#666;display:flex;align-items:center;justify-content:center} #s{position:fixed;z-index:2;text-align:center;font-size:12px;line-height:1.8;padding:24px;max-width:90vw} #s .e{color:#a44} #s .r{color:#888;cursor:pointer;text-decoration:underline} #f{display:none;flex-direction:column;gap:10px;align-items:center} #f.show{display:flex} #f label{color:#888;font-size:12px} #f .hint{color:#555;font-size:10px;line-height:1.6} #f input{background:#0a0a0a;border:1px solid #333;color:#9c9;font-family:monospace;font-size:12px;padding:8px 10px;width:min(420px,80vw);outline:none} #f input:focus{border-color:#585} #f button{background:#111;border:1px solid #444;color:#9c9;font-family:monospace;font-size:11px;padding:6px 14px;cursor:pointer} #f button:hover{border-color:#585} </style></head> <body> <div id="s"> <div id="status">reading chain...</div> <form id="f" onsubmit="return useCustomRpc(event)"> <label>all endpoints unreachable</label> <div class="hint">paste an Ethereum RPC URL and press enter<br>(any mainnet JSON-RPC endpoint, e.g. from chainlist.org)</div> <input id="rpc" type="text" placeholder="https://..." autocomplete="off" spellcheck="false"> <button type="submit">assemble</button> </form> </div> <script> var VESSEL='0xECb92Cc7112b80A2234936315BbB493fb48d1463'; var TOKEN=9994, START=32, COUNT=7; var rpcs=['https://ethereum-rpc.publicnode.com','https://eth.drpc.org','https://0xrpc.io/eth','https://eth.llamarpc.com','https://cloudflare-eth.com']; var statusEl=document.getElementById('status'); var formEl=document.getElementById('f'); var inputEl=document.getElementById('rpc'); function pad(n){return n.toString(16).padStart(64,'0');} function h2s(h){if(h.indexOf('0x')===0)h=h.slice(2);var b=new Uint8Array(h.length/2);for(var i=0;i<h.length;i+=2)b[i/2]=parseInt(h.substr(i,2),16);return new TextDecoder().decode(b);} async function call(to,data){ var p=[{to:to,data:data},'latest']; if(window.ethereum){try{var r=await window.ethereum.request({method:'eth_call',params:p});if(r&&r!=='0x')return r;}catch(e){}} for(var i=0;i<rpcs.length;i++){try{ var x=await fetch(rpcs[i],{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({jsonrpc:'2.0',method:'eth_call',params:p,id:1})}); var j=await x.json();if(j.result&&j.result!=='0x')return j.result; }catch(e){}} return null; } // returns the entry's hex chars (NOT decoded), or null. We concat hex across all // entries and decode ONCE at the end so multi-byte UTF-8 split across a chunk // boundary never corrupts. async function readEntryHex(entry){ var raw=await call(VESSEL,'0x39c50f01'+pad(TOKEN)+pad(entry)); if(!raw||raw==='0x'||raw.length<130)return null; var len=parseInt(raw.slice(66,130),16); return len?raw.slice(130,130+len*2):null; } function showForm(msg){ statusEl.innerHTML=msg||''; formEl.classList.add('show'); setTimeout(function(){inputEl.focus();},50); } async function assemble(){ formEl.classList.remove('show'); var hex=''; for(var i=0;i<COUNT;i++){ var entry=START+i; statusEl.innerHTML='reading '+(i+1)+'/'+COUNT+'…'; var part=await readEntryHex(entry); if(part===null){ showForm('<span class="e">couldn’t read entry '+entry+' from any endpoint</span>'); return false; } hex+=part; } document.open();document.write(h2s(hex));document.close(); return true; } function useCustomRpc(ev){ ev.preventDefault(); var u=(inputEl.value||'').trim(); if(!/^https?:\/\//i.test(u)){ showForm('<span class="e">enter a full http(s) URL</span>'); return false; } rpcs=[u]; // user's endpoint takes over statusEl.innerHTML='retrying via your endpoint…'; formEl.classList.remove('show'); assemble().then(function(ok){ if(!ok) showForm('<span class="e">that endpoint failed too — try another</span>'); }); return false; } assemble(); </script> </body></html>