Transaction 6f1dab30f5169a86d724d76ef3bbb699a5a84ba1a2232c4bde6d9196df0d2341

2 Input
  • 928d3e70d28912b67eb805d2736e54e8c260df44fab7ac9e7b2ea6a681d40051:0
    OP_DATA_32(32) 7e590ae736ff06482f5187a36516d57272c94c02c2286073187cb56260cbc640
    OP_CHECKSIG(172)
    OP_0(0)
    OP_IF(99)
    OP_DATA_3(3) ord
    OP_DATA_1(1) 
    OP_DATA_18(18) https://chisel.xyz
    OP_DATA_1(1) 
    OP_DATA_15(15) text/javascript
    OP_0(0)
    OP_PUSHDATA2(77) // 🚁 BITNAV on-chain index validator // // 🔒 max supply: 20,000 via parent-child (first 10k bitmaps 1:1 + 10k bitcopters 1:1) // // [official version on sat 1337012500000000] // // rules: // 1. only 1 per BITCOPTER or 0-9999.bitmap (first valid child inscription) // 2. MIME type includes "text/html" // 3. contains content: <script id="BITNAV" type="module" src="/content/<THIS_MODULES_INSCRIPTION_ID>" // 4. less than 240 bytes (180 bytes if using a bitmap number) // 5. top script sets window.parentId to a BITC
    OP_PUSHDATA2(77) OPTER inscription ID or window.bitmapNumber to a bitmap number 0-9999 // // indexing order: first valid bitnav child of 0-9999.bitmap followed by BITCOPTER #0-9999 // examples: 0.bitmap > BITNAV #0, 420.bitmap > BITNAV #420, BITCOPTER #0 > BITNAV #10000, BITCOPTER #4321 > BITNAV #14321 const currentId = (window.location.href.match(/[a-f0-9]{64}i[0-9]+/i) || [''])[0] const loadHtml = (text) => { return ` <style> * { background: #003c4d; color: #ffae00; margin: 0; box-sizing: bord
    OP_PUSHDATA2(77) er-box; } html, body { height: 100%; display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; user-select: none; font-family: sans-serif; font-weight: bold; } .t { font-size: xx-large; opacity: 0.5; padding-bottom: 2px; } .c { font-size: smaller; color: white; opacity: 0.8; } </style> <div class="t">🚁</div><div class="c">🔒 ${text}</div> ` } const
    OP_PUSHDATA2(77) validateBITNAV = async () => { // display loader while validating document.open(); document.write(loadHtml('validating..')); document.close(); // make sure there isnt any extra code const content = await fetch('/content/' + currentId).then(r => r.text()) const len = content.length const maxLen = window.bitmapNumber ? 180 : 240 if (len > 0 && len < maxLen) { const contentIdentifier = '<script id="BITNAV" type="module"' const displaySat = 1337012500000000
    OP_PUSHDATA2(77) // check if parent is in index let validParent = '' const { pako, base64ToUint8Array } = await import('/content/f47c76a559965c1357e3bbf892ab228c9183149dd886edc299f4b21c95460feci0'); const getArray = (index) => { const gzippedData = base64ToUint8Array(index); const decompressedData = pako.ungzip(gzippedData); const textDecoder = new TextDecoder(); const resultString = textDecoder.decode(decompressedData);
    OP_PUSHDATA2(77) return JSON.parse(resultString); } // if window.bitmapNumber is set if (!(window.bitmapNumber === null || window.bitmapNumber === undefined)) { const {bitmapIndex10k} = await import('/content/3a85d8cc1bd5dcd11f65d156768d0729e9ef6f2c3ed4e6191db5f47e28ec91fei0') const bitmapArray = getArray(bitmapIndex10k) const currentBitmapData = bitmapArray[window.bitmapNumber] const satData = await fetch(`/r/sat/${currentBitmapData[1]}/at/0`).then(r =
    OP_PUSHDATA2(77) > r.json()) validParent = satData.id // otherwise use window.parentId } else if (window.parentId) { const {bitmapIndex10k} = await import('/content/3a85d8cc1bd5dcd11f65d156768d0729e9ef6f2c3ed4e6191db5f47e28ec91fei0') const bitmapArray = getArray(bitmapIndex10k) const {bitcopterIndex10k} = await import('/content/5612eff7e3bd080400dd3fae36b14ffb0c5f6117018d6bdd74e5c56d28c42f4bi0') const bitcopterArray = getArray(bitcopterIndex10k)
    OP_PUSHDATA2(77) const validSatsArray = bitcopterArray.concat(bitmapArray) for (const item of validSatsArray) { if (item[0] === window.parentId.slice(0, 6)) { const satData = await fetch(`/r/sat/${item[1]}/at/0`).then(r => r.json()) if (satData.id === window.parentId) { validParent = window.parentId } else { } } } } if (validParent === '') {
    OP_PUSHDATA2(77) document.open(); document.write(loadHtml('invalid parent')); document.close(); } else { window.validParentId = validParent // check if currentId is first child of parent const childIds = [] let moreToFetch = true let page = 0 while (moreToFetch) { await fetch('/r/children/' + validParent + '/' + page) .then(r => r.json()) .then(data => {
    OP_PUSHDATA2(77) childIds.push(...data.ids) if (data.more) { page++ } else { moreToFetch = false } }) } let firstChild = null let otherFirstChildFound = false const scriptId = (import.meta.url.match(/[a-f0-9]{64}i[0-9]+/i) || [''])[0] window.validParentChildrenIds = childIds // iterate through children look
    OP_PUSHDATA2(77) ing for content match for (const child of childIds) { if (!firstChild) { const data = await fetch('/content/' + child).then(r => r.text()) const max = data.includes('bitmapNumber') ? 180 : 240 if (!otherFirstChildFound && data.length < max && data.includes(window.bitmapNumber ? window.bitmapNumber : validParent) && data.includes(contentIdentifier) && data.includes(scriptId)) { if (currentId === child) {
    OP_PUSHDATA2(77) firstChild = child } else { otherFirstChildFound = true } } } } if (firstChild) { const contentId = await fetch(`/r/sat/${displaySat}/at/-1`) .then(r => r.json()).then(r => r.id) const contentHtml = await fetch('/content/' + contentId) .then(r => r.text()) document.
    OP_PUSHDATA2(77) open(); document.write(contentHtml); document.close(); } else { document.open(); document.write(loadHtml('invalid')); document.close(); } } } else { document.open(); document.write(loadHtml('invalid')); document.close(); } } if (window.innerWidth < 150) { document.open(); document.write(` <style> * { background: #003c4d; margin: 0; box-sizin
    OP_PUSHDATA2(77) g: border-box; } html, body { height: 100%; display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; user-select: none; font-family: sans-serif; font-weight: bold; font-size: calc(10vw + 9vh); } .t { font-size: calc(6vw + 6vh); color: lime; opacity: 0.5; text-shadow: 0 0 18px #9fff06; } .i { color: #fff; opacity: 0.5; font-size: calc(8vw + 8vh); } </style>
    OP_PUSHDATA1(76) <div>🚁</div><div class="t">🔒 BITNAV</div><div class="i"><i>${currentId.slice(0, 6)}..</i></div> `); document.close(); } else { await validateBITNAV() }
    OP_ENDIF(104)
  • 6f1f177bc15d7d3c0c116590d8a6eba216ce0499c51f118e6c16b5244177de2e:0
3 Outputs
  • 6f1dab30f5169a86d724d76ef3bbb699a5a84ba1a2232c4bde6d9196df0d2341:0
  • value  1337
    address  bc1pulvrgxr6c9q5aj8su3xu7zx760ca2wm5lekdmwhgh9454tsu9y8s6ng00v
  • 6f1dab30f5169a86d724d76ef3bbb699a5a84ba1a2232c4bde6d9196df0d2341:1
  • value  20260
    address  bc1pxcdgs0ep3f7lnr7cv59mknc973xgyn0dpmt7a4d8z3x8arjyxyyqev4hnw
  • 6f1dab30f5169a86d724d76ef3bbb699a5a84ba1a2232c4bde6d9196df0d2341:2
  • value  330
    address  bc1p2n6wa6v7t8lvwrqh3nwzwe2399a9mlgdmpnu4jh0tqguwpaxeqwqq0z4vh