Settings

Blockchain
Network
Unit
Language
Theme
Sound New Block

Transaction

cb2d7a2c56add845ecd84a4e6db4162a78a2f53b4501ad12e404583bdb225899
Timestamp (utc)
2021-05-13 14:19:19
Fee Paid
0.00001840 BSV
(
0.04996823 BSV
-
0.04994983 BSV
)
Fee Rate
500.4 sat/KB
Version
1
Confirmations
299,894
Size Stats
3,677 B

4 Outputs

Total Output:
0.04994983 BSV
  • jrunMC {"in":0,"ref":["native://Jig","b44a203acd6215d2d24b33a41f730e9acf2591c4ae27ecafc8d88ef83da9ddea_o1"],"out":["f03252e05dd6b7c0a5fe5755d57f348cbf04659b4110576edbff80b014233776","da224b25ba6b1b72fd6883ab6720cfa674e790bee56a03724eb2fea223723f56"],"del":[],"cre":["mrFq6ERhfWusvpec6C4JHiCbMDbFtU7ekA","mrFq6ERhfWusvpec6C4JHiCbMDbFtU7ekA"],"exec":[{"op":"DEPLOY","data":["class TokenPowNftTest extends Jig {\n init (name, author, description, emoji, image, avatarTxId, assetIds, owner) {\n const minting = caller === this.constructor;\n if (!minting) throw new Error(\"Must create using mint()\");\n this.sender = caller && caller.owner ? caller.owner : null;\n\n this.metadata = {\n name,\n author,\n\t description,\n\t emoji,\n image,\n avatarTxId,\n\t assetIds\n }\n\n this.name = name;\n this.author = author;\n this.description = description;\n this.emoji = emoji;\n \n this.avatarTxId = avatarTxId;\n \n let result = '';\n \n if(assetIds){\n if(assetIds.length > 0){\n assetIds.forEach(asset => {\n result+=asset.txtid;\n if(asset.description){\n result+=\"=\" + asset.description;\n }\n result+=\";\"\n });\n }\n }\n\n this.assets = result;\n \n this.owner = owner;\n }\n\n send(to) {\n this.sender = this.owner;\n this.owner = to;\n }\n\n static mint(name, author, description, emoji, image, avatarTxId, assetIds, owner) {\n return this(name, author, description, emoji, image, avatarTxId, assetIds, owner);\n }\n}",{"deps":{"Jig":{"$jig":0}},"friends":[{"$jig":1},{"$jig":3}],"interactive":false},"class OrderLock {\n constructor(address, satoshis) {\n if (typeof address !== \"string\" || address.length < 27) {\n throw new TypeError(\"Invalid address\");\n }\n if (typeof satoshis !== \"number\" || !Number.isInteger(satoshis)) {\n throw new Error(\"Invalid satoshis\");\n }\n if (satoshis > Number.MAX_SAFE_INTEGER) {\n throw new Error(\"Invalid. Max: \" + Number.MAX_SAFE_INTEGER);\n }\n if (satoshis < 546) {\n throw new Error(\"Dust\");\n }\n this.address = address;\n this.satoshis = satoshis;\n }\n script() {\n const output = this.serializeOutput(this.address, this.satoshis);\n const hashOutput = this.sha256sha256(output);\n return (\n OrderLock.scriptTemplate.slice(0, 2) +\n hashOutput +\n OrderLock.scriptTemplate.slice(66)\n );\n }\n serializeOutput(address, satoshis) {\n const satoshisHex = this.serializeSatoshis(satoshis);\n const satoshisHexBytes = Hex.stringToBytes(satoshisHex);\n const outputScriptBytes = Hex.stringToBytes(this.getP2PKHScript(address));\n const lengthBytes = [25];\n return satoshisHexBytes.concat(lengthBytes, outputScriptBytes);\n }\n serializeSatoshis(satoshis) {\n let numberHex = (\"0000000000000000\" + satoshis.toString(16)).slice(-16);\n return numberHex\n .match(/[a-fA-F0-9]{2}/g)\n .reverse()\n .join(\"\");\n }\n getP2PKHScript(address) {\n const decoded = Base58.decode(address);\n const hex = Hex.bytesToString(decoded);\n return asm(`OP_DUP OP_HASH160 ${hex} OP_EQUALVERIFY OP_CHECKSIG`);\n }\n sha256sha256(output) {\n return Hex.bytesToString(sha256(sha256(output)));\n }\n domain() {\n return 0;\n }\n}",{"deps":{}}]}]}
    https://whatsonchain.com/tx/cb2d7a2c56add845ecd84a4e6db4162a78a2f53b4501ad12e404583bdb225899