Transaction 0aa77f354401dfd6dcfbaa194ffa5feb65740a3198de1190d8e8535d8988c55b
1 Input
-
8494226d00b39582ef1bd937d3bf4d1ab039384361f2a5139945f2c069c822ef:0
OP_DATA_32(32) 117f692257b2331233b5705ce9c682be8719ff1b2b64cbca290bd6faeb54423eOP_CHECKSIG(172)OP_DATA_6(6) cOP_DROP(117)OP_0(0)OP_IF(99)OP_DATA_3(3) ordOP_DATA_1(1)OP_DATA_23(23) text/html;charset=utf-8OP_0(0)OP_PUSHDATA2(77) <!DOCTYPE html> <html> <head> <style> body { margin: 0; padding: 0; background: black; color: blue; font-family: monospace; font-size: 8px; } #screen { white-space: pre; position: absolute; top: 0; left: 0; width: 100%; height: 100%; } </style> </head> <body> <pre id="screen"></pre> <script> // Perlin noise implementation // Source: https://gist.github.com/banksean/304522 var ClassicalNoiseOP_PUSHDATA2(77) = function(r) { this.grad3 = [[1,1,0],[-1,1,0],[1,-1,0],[-1,-1,0],[1,0,1],[-1,0,1],[1,0,-1],[-1,0,-1],[0,1,1],[0,-1,1],[0,1,-1],[0,-1,-1]]; this.p = []; for (var i=0; i<256; i++) { this.p[i] = Math.floor(r() * 256); } this.perm = []; for(var i=0; i<512; i++) { this.perm[i] = this.p[i & 255]; } }; ClassicalNoise.prototype.dot = function(g, x, y, z) { return g[0]*x + g[1]OP_PUSHDATA2(77) *y + g[2]*z; }; ClassicalNoise.prototype.mix = function(a, b, t) { return (1.0 - t) * a + t * b; }; ClassicalNoise.prototype.fade = function(t) { return t * t * t * (t * (t * 6.0 - 15.0) + 10.0); }; ClassicalNoise.prototype.noise = function(x, y, z) { var X = Math.floor(x), Y = Math.floor(y), Z = Math.floor(z); x = x - X; y = y - Y; z = z - Z; X = X & 255; Y = Y & 255; Z = Z & 255; var gi0OP_PUSHDATA2(77) 00 = this.perm[X+this.perm[Y+this.perm[Z]]] % 12; var gi001 = this.perm[X+this.perm[Y+this.perm[Z+1]]] % 12; var gi010 = this.perm[X+this.perm[Y+1+this.perm[Z]]] % 12; var gi011 = this.perm[X+this.perm[Y+1+this.perm[Z+1]]] % 12; var gi100 = this.perm[X+1+this.perm[Y+this.perm[Z]]] % 12; var gi101 = this.perm[X+1+this.perm[Y+this.perm[Z+1]]] % 12; var gi110 = this.perm[X+1+this.perm[Y+1+this.perm[Z]]] % 12; var gi111 = this.perm[X+1+OP_PUSHDATA2(77) this.perm[Y+1+this.perm[Z+1]]] % 12; var n000= this.dot(this.grad3[gi000], x, y, z); var n100= this.dot(this.grad3[gi100], x-1, y, z); var n010= this.dot(this.grad3[gi010], x, y-1, z); var n110= this.dot(this.grad3[gi110], x-1, y-1, z); var n001= this.dot(this.grad3[gi001], x, y, z-1); var n101= this.dot(this.grad3[gi101], x-1, y, z-1); var n011= this.dot(this.grad3[gi011], x, y-1, z-1); var n111= this.dot(this.grad3[gi1OP_PUSHDATA2(77) 11], x-1, y-1, z-1); var u = this.fade(x); var v = this.fade(y); var w = this.fade(z); var nx00 = this.mix(n000, n100, u); var nx01 = this.mix(n001, n101, u); var nx10 = this.mix(n010, n110, u); var nx11 = this.mix(n011, n111, u); var nxy0 = this.mix(nx00, nx10, v); var nxy1 = this.mix(nx01, nx11, v); var nxyz = this.mix(nxy0, nxy1, w); return nxyz; }; const mod = 2 ** 31OP_PUSHDATA2(77) - 1; const a = 1103515245; const c = 12345; let seed; function random() { seed = (a * seed + c) % mod; return seed / mod; } function hashCode(str) { let hash = 0; if (str.length === 0) { return hash; } for (let i = 0; i < str.length; i++) { const char = str.charCodeAt(i); hash = (hash << 5) - hash + char; hash = hash & hash; } return Math.abs(hash); } function getRandomColor() { const letters =OP_PUSHDATA2(77) '0123456789ABCDEF'; let color = '#'; for (let i = 0; i < 6; i++) { color += letters[Math.floor(random() * 16)]; } return color; } async function getBlockHeight() { const response = await fetch('/blockheight'); const blockHeight = await response.text() || 0; seed = hashCode(blockHeight); init(); } function init() { const screenEl = document.getElementById('screen'); const screenData = []; const asciiChars = ['💯', '🏔', 'OP_PUSHDATA2(77) 🧗', '🌄', '🏞', '🏴☠️', '⬆️']; let fontSize = 8; let charAspectRatio = 0.55; let screenW = Math.floor(window.innerWidth / (fontSize * charAspectRatio)); let screenH = Math.floor(window.innerHeight / fontSize); let frame = 0; const noise = new ClassicalNoise(random); for (let y = 0; y < screenH; y++) { const row = []; for (let x = 0; x < screenW; x++) { row.push(' '); } screenData.push(row); } funOP_PUSHDATA2(77) ction draw() { for (let y = 0; y < screenH; y++) { for (let x = 0; x < screenW; x++) { let value = noise.noise(x / 20, y / 20, frame / 10); let index = Math.floor((value + 1) / 2 * asciiChars.length); screenData[y][x] = asciiChars[index]; } } const screenText = screenData.map(row => row.join('')).join('\n'); screenEl.textContent = screenText; frame++; } setInterval(draw, 100); window.addEventListeneOP_PUSHDATA2(77) r('resize', function() { screenW = Math.floor(window.innerWidth / (fontSize * charAspectRatio)); screenH = Math.floor(window.innerHeight / fontSize); screenData.length = 0; for (let y = 0; y < screenH; y++) { const row = []; for (let x = 0; x < screenW; x++) { row.push(' '); } screenData.push(row); } draw(); }); document.body.style.color = getRandomColor(); } getBlockHeight(); setIntervalOP_PUSHDATA1(76) (function() { location.reload(); }, 60000); </script> </body> </html>OP_ENDIF(104)
2 Outputs
- 0aa77f354401dfd6dcfbaa194ffa5feb65740a3198de1190d8e8535d8988c55b:0
- 0aa77f354401dfd6dcfbaa194ffa5feb65740a3198de1190d8e8535d8988c55b:1
value 546
address bc1plh484fw27554ypgd9mw6wf3d9mac4v4fh8drseckuh52xey40j9q4w4zns
value 2264
address bc1qwvaz8f9y47rz62m8t46c83u0x0hq94kq4gsjjp