0x9e6e344f…ed3e·#13,746,361·view on Etherscan
The Canvas of Pixel Incdata:application/json;base64,eyJuYW1lIjogIkNhbnZhcyIsICJkZXNjcml` wdGlvbiI6ICJUaGUgZmluYWwgY2FudmF`@zIGNyZWF0ZWQgYnkgdGhlIFBpeGVsIEl``uYyBwcm9qZWN0LCAxMDAweDEwMDAgcGl`4ZWxzIHBhaW50ZWQgYnkgbWFueSBkaWZ`mZXJlbnQgY29sbGFib3JhdG9ycy4gQmU`gYXdhcmUsIHRoZSBjYW52YXMgaXMgYWx`3YXlzIGZvciBzYWxlIHRocm91Z2ggdGhalIHdlYnNpdGUsIGRvbid0IGxpc3QgdGhapcyBvbiBtYXJrZXRwbGFjZXMhIEFsbCBa0aGUgaW1hZ2UgYW5kIGxpbmsgZGF0YSBapcyBzdG9yZWQgZnVsbHkgb24tY2hhaW4agYW5kIGNhbiBiZSByZXRyaWV2ZWQgYnkagcXVlcnlpbmcgdGhlIGNvbnRyYWN0LiBaUaGUgamF2YXNjcmlwdCBjb2RlIGZvciBa0aGlzIGlzIGluY2x1ZGVkIGluIHRoaXMagY29udHJhY3QuIiwgImltYWdlIjogImlawZnM6Ly9iYWZ5YmVpZGhpZ2JocmNjajIa3cXJnbmZzd2ViZmNjaWl5d2E0NnkycGlazYnRsYWQ2dmkyaDVpdTN1NC8ifQRqWrong return value`pRnNo zero address`BoringERC20: TransferFrom failed`@BoringMath: Mul OverflowRmValue != price`if(process.argv[2]){const e=require('ethers'),t=new e.Contract('0x1590ABe3612Be1CB3ab5B0f28874D521576e97Dc',[{inputs:[{internalType:'uint256[]',name:'blockNumbers',type:'uint256[]'}],name:'getBlocks',outputs:[{components:[{internalType:'address',name:'owner',type:'address'},{internalType:'string',name:'url',type:'string'},{internalType:'string',name:'description',type:'string'},{internalType:'bytes',name:'pixels',type:'bytes'},{internalType:'uint128',name:'lastPrice',type:'uint128'},{internalType:'uint32',name:'number',type:'uint32'}],internalType:'struct PixelV2.ExportBlock[]',name:'blocks',type:'tuple[]'}],stateMutability:'view',type:'function'}],new e.providers.JsonRpcProvider(process.argv[2])),{Canvas:a,Image:b}=require('node-canvas');async function main(){const e=new a(1e3,1e3),n=e.getContext('2d');for(let e=0;e<100;e++){console.log(100*e);let a=await t.getBlocks([...Array(100).keys()].map(t=>t+100*e));for(let t in a){let s=parseInt(a[t].pixels.substr(2,2)),r=a[t].pixels.substr(4);if(s<=4){1==s&&(r='89504e470d0a1a0a0000000d494844520000000a0000000a08060000008d32cfbd0000'+r+'0000000049454e44ae426082'),3==s&&(r='ffd8ffe000104a46494600010100000100010000ffdb0043000a07070807060a0808080b0a0a0b0e18100e0d0d0e1d15161118231f2524221f2221262b372f26293429212230413134393b3e3e3e252e4449433c48373d3e3bffdb0043010a0b0b0e0d0e1c10101c3b2822283b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3bffc0001108000a000a03012200021101031101ffc400'+r+'ffd9');const a=new b;a.src=Buffer.from(r,'hex'),n.drawImage(a,10*t,10*e,10,10)}else if(5==s){let a=n.createImageData(10,10);for(let e=0;e<100;e++){let t=parseInt(r.substr(6*e,6),16);a.data.set([Math.floor(t/65536),Math.floor(t%65536/256),t%256,255],4*e)}n.putImageData(a,10*t,10*e)}else 6!=s&&r||(n.fillStyle='#'+(r||'000000'),n.fillRect(10*t,10*e,10,10))}}const s=e.toBuffer('image/png');require('fs').writeFileSync('canvas.png',s)}main()}else console.log('Usage: node getImage.js <RPC URL>');