Settings

Blockchain
Network
Unit
Language
Theme
Sound New Block

Transaction

33e78fa7c43b6d7a60c271d783295fa180b7e9fce07d41ff1b52686936b3e6ae
Timestamp (utc)
2020-11-29 03:54:56
Fee Paid
0.00002410 BSV
(
0.00107435 BSV
-
0.00105025 BSV
)
Fee Rate
500.1 sat/KB
Version
1
Confirmations
333,854
Size Stats
4,819 B

4 Outputs

Total Output:
0.00105025 BSV
  • jrun Run ▸ ExtraM«{"in":0,"ref":["1f0abf8d94477b1cb57629d861376616f6e1d7b78aba23a19da3e6169caf489e_o2"],"out":["6820e05fe6d6ebb1e9284af787d5c0577a80092d3a4130cb30b329bdeca673c0","1c6678c08ce73ca2516a86ac2105c9e3142585fb42954b94d353c25e14ddb4fc"],"del":[],"cre":["n3CiECgxW1pB1rGbYiX67e4U7AnS3MpJeE","n3CiECgxW1pB1rGbYiX67e4U7AnS3MpJeE"],"exec":[{"op":"DEPLOY","data":["function txo (rawtx) {\n const ret = { }\n\n function chunks (script) {\n const b = Hex.stringToBytes(script)\n let i = 0\n\n function u8 () { return b[i++] }\n function u16 () { return u8() + u8() * 256 }\n function u32 () { return u16() + u16() * 256 * 256 }\n function buf (n) { const h = Hex.bytesToString(b.slice(i, i + n)); i += n; return h }\n\n const OP_PUSHDATA1 = 0x4c\n const OP_PUSHDATA2 = 0x4d\n const OP_PUSHDATA4 = 0x4e\n\n const chunks = []\n while (i < b.length) {\n const opcodenum = u8()\n if (opcodenum > 0 && opcodenum < OP_PUSHDATA1) {\n chunks.push({ buf: buf(opcodenum), len: opcodenum, opcodenum })\n } else if (opcodenum === OP_PUSHDATA1) {\n const len = u8()\n chunks.push({ buf: buf(len), len, opcodenum })\n } else if (opcodenum === OP_PUSHDATA2) {\n const len = u16()\n chunks.push({ buf: buf(len), len, opcodenum })\n } else if (opcodenum === OP_PUSHDATA4) {\n const len = u32()\n chunks.push({ buf: buf(len), len, opcodenum })\n } else {\n chunks.push({ opcodenum })\n }\n }\n return chunks\n }\n\n // https://stackoverflow.com/questions/23190056/hex-to-base64-converter-for-javascript\n function bytesToBase64 (arr) {\n const abc = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' // base64 alphabet\n const bin = n => n.toString(2).padStart(8, 0) // convert num to 8-bit binary string\n const l = arr.length\n let result = ''\n for (let i = 0; i <= (l - 1) / 3; i++) {\n const c1 = i * 3 + 1 >= l // case when \"=\" is on end\n const c2 = i * 3 + 2 >= l // case when \"=\" is on end\n const chunk = bin(arr[3 * i]) + bin(c1 ? 0 : arr[3 * i + 1]) + bin(c2 ? 0 : arr[3 * i + 2])\n const r = chunk.match(/.{1,6}/g).map((x, j) => j === 3 && c2 ? '=' : (j === 2 && c1 ? '=' : abc[+('0b' + x)]))\n result += r.join('')\n }\n return result\n }\n\n function xput (script, output) {\n const ret = { }\n chunks(script).forEach((c, n) => {\n if (c.buf) {\n ret['b' + n] = bytesToBase64(Hex.stringToBytes(c.buf))\n const enc = c.buf.replace(/[0-9a-f]{2}/g, '%$&')\n if (output) try { ret['s' + n] = decodeURIComponent(enc) } catch (e) { }\n if (output) ret['h' + n] = c.buf\n } else {\n ret['b' + n] = { op: c.opcodenum }\n }\n })\n return ret\n }\n\n function input (txin, i) {\n const ret = xput(txin.script)\n ret.e = { h: txin.prevTxId, i: txin.outputIndex }\n ret.i = i\n ret.seq = txin.sequenceNumber\n return ret\n }\n\n function output (txout, i) {\n const ret = xput(txout.script, true)\n ret.e = { v: txout.satoshis, i }\n ret.i = i\n return ret\n }\n\n const tx = new Tx(rawtx)\n ret.in = tx.inputs.map(input)\n ret.out = tx.outputs.map(output)\n ret.lock = tx.nLockTime\n return ret\n}",{"deps":{"Hex":{"$jig":0},"Tx":{"$jig":2}}},"class Tx {\n constructor (rawtx) {\n const b = Hex.stringToBytes(rawtx)\n let i = 0\n\n function u8 () { return b[i++] }\n function u16 () { return u8() + u8() * 256 }\n function u32 () { return u16() + u16() * 256 * 256 }\n function u64 () { return u32() + u32() * 256 * 256 * 256 * 256 }\n function varint () { const b0 = u8(); return b0 === 0xff ? u64() : b0 === 0xf3 ? u32() : b0 === 0xfd ? u16() : b0 }\n function txid () { const h = Hex.bytesToString(b.slice(i, i + 32).reverse()); i += 32; return h }\n function script () { const n = varint(); const h = Hex.bytesToString(b.slice(i, i + n)); i += n; return h }\n\n this.version = u32()\n\n const nin = varint()\n this.inputs = []\n for (let vin = 0; vin < nin; vin++) {\n this.inputs.push({\n prevTxId: txid(),\n outputIndex: u32(),\n script: script(),\n sequenceNumber: u32()\n })\n }\n\n const nout = varint()\n this.outputs = []\n for (let vout = 0; vout < nout; vout++) {\n this.outputs.push({\n satoshis: u64(),\n script: script()\n })\n }\n\n this.nLockTime = u32()\n }\n}",{"deps":{"Hex":{"$dup":["1","deps","Hex"]}}}]}]}
    https://whatsonchain.com/tx/33e78fa7c43b6d7a60c271d783295fa180b7e9fce07d41ff1b52686936b3e6ae