Settings

Blockchain
Network
Unit
Language
Theme
Sound New Block

Transaction

796cb44585c0bd4e49fb5b8aeb5c6cf20fdfd595a5c9cf22a8698f04aedb848f
Timestamp (utc)
2021-11-18 22:10:15
Fee Paid
0.00003586 BSV
(
0.11341517 BSV
-
0.11337931 BSV
)
Fee Rate
500 sat/KB
Version
1
Confirmations
265,888
Size Stats
7,169 B

3 Outputs

Total Output:
0.11337931 BSV
  • jrunPOKM{"in":0,"ref":["26764d3a08ae3af553030a69152d047b7f3a3f420b8b0338b856e97c8da1e478_o1","1ffa806325d535bf34dd51180f193ac13cd8246f758af8ffa54452f6699a6cd8_o1"],"out":["08b024eb758e979e2b1623918c957e4dcca8a68ce63167035c659a2d88732cbb"],"del":[],"cre":["modopDhAN5GArLxEbBjWTPByqqzThLhL1C"],"exec":[{"op":"DEPLOY","data":["class PokNFT extends TokenPowNFT {\n\n init(name, author, metadata) {\n if (caller !== this.constructor) { // minting\n throw new Error('FYI: Must create using mint()')\n } else {\n super.init(name, author, metadata)\n }\n }\n\n\n /**\n * \n * @returns Number\n */\n getNumber() {\n return this.metadata.editionNo\n }\n\n\n /**\n * \n * @param {String} name \n */\n setName(name) {\n PokNFT.$validateText(name, 'name')\n this.name = name\n }\n\n\n /**\n * \n * @returns String\n */\n getName() {\n return this.name\n }\n\n\n /**\n * \n * @param {String} description \n */\n setDescription(description) {\n PokNFT.$validateText(description, 'description')\n this.metadata.description = description\n }\n\n\n /**\n * \n * @returns String\n */\n getDescription() {\n return this.metadata.description\n }\n\n\n /**\n * \n * @param {String} image // `b://${imageTxid}_o${imageBout}`\n */\n setImage(image) {\n PokNFT.$valdiateImage(image)\n this.metadata.image = image\n }\n\n\n /**\n * \n * @returns String\n */\n getImage() {\n return this.metadata.image\n }\n\n\n /**\n * \n * @param { \n * {\n * percentageFee: Number; // 0 - 10 %\n * payoutAddress: String;\n * }\n * } royalty \n */\n setRoyalty(royalty) {\n PokNFT.$validateRoyalty(royalty)\n this.metadata.percentage = royalty.percentageFee\n this.metadata.feeowneraddress = royalty.payoutAddress\n }\n\n\n /**\n * \n * @returns {\n * {\n * percentageFee: Number;\n * payoutAddress: String;\n * }\n * }\n */\n getRoyalty() {\n return {\n percentageFee: this.metadata.percentage,\n payoutAddress: this.metadata.feeowneraddress\n }\n }\n\n\n /**\n * \n * @param {\n * { \n * [key: String]: {\n * label: String;\n * type: Number | String | Boolean | Null | Undefined | Object | Array; \n * value: String;\n * hidden: Boolean;\n * } \n * }\n * } traits \n */\n setTraits(traits) {\n PokNFT.$validateTraits(traits)\n this.metadata.traits = traits\n }\n\n\n /**\n * \n * @returns Traits\n */\n getTraits() {\n return this.metadata.traits\n }\n\n\n /**\n * \n * @param {\n * {\n * name: String;\n * author: String;\n * description: String;\n * image: `b://${imageTxid}_o${imageBout}`;\n * royalty: {\n * percentageFee: Number; // 0 - 10 %\n * payoutAddress: String;\n * }\n * }\n * } props \n * @param {Traits} traits \n * @returns PokNFT\n */\n static mint(props = {}, traits = {}) {\n\n if (this.constructor === PokNFT) {\n throw new Error(\"FYI: Abstract method cannot be called\");\n }\n\n let { name, author, description, emoji, image, royalty } = props\n\n author = author || this.metadata.author\n description = description || this.metadata.description\n royalty = royalty || this.metadata.royalty\n\n this.$validateText(name, 'name')\n this.$validateText(author, 'author')\n this.$validateText(description, 'description')\n this.$validateImage(image)\n this.$validateRoyalty(royalty)\n\n this.total++\n\n const metadata = {\n editionNo: this.total,\n emoji: emoji || this.metadata.emoji\n }\n\n const nft = new this(name, author, metadata)\n\n nft.setDescription(description)\n nft.setImage(image)\n nft.setTraits(traits || this.metadata.traits)\n nft.setRoyalty(royalty)\n\n return nft\n }\n\n\n static $validateText(text, label) {\n expect(text).toBeString(label)\n expect(text.length > 0).toBe(true, label)\n }\n\n\n static $validateTraits(traits) {\n expect(traits).toBeObject('traits')\n for (let trait of traits) {\n expect(trait.label).toBeString('trait.label')\n expect(trait.label.length).toBeGreaterThan(0, 'trait.label.length')\n expect(trait.value).toBeString('trait.value')\n expect(trait.hidden).toBeBoolean('trait.hidden')\n expect([\n 'Number',\n 'String',\n 'Boolean',\n 'Null',\n 'Undefined',\n 'Object',\n 'Array'\n ].includes(trait.type)).toBe(true, 'trait.type must be on of {Number, String, Boolean, Null, Undefined, Object, Array}')\n }\n }\n\n\n static $validateImage(image) {\n const regex = /^b:\\/\\/[a-fA-F0-9]{64}_o[0-9]+/\n expect(image).toBeString('image')\n expect(regex.test(image)).toBe(true, 'image string should match /^b:\\\\/\\\\/[a-fA-F0-9]{64}_o[0-9]+/')\n }\n\n\n static $validateRoyalty(royalty) {\n expect(royalty).toBeObject('royalty')\n expect(royalty.percentageFee).toBeNumber('royalty.percentage')\n expect(royalty.percentageFee).toBeGreaterThanOrEqualTo(0, 'royalty.percentage')\n expect(royalty.percentageFee).toBeLessThanOrEqualTo(10, 'royalty.percentage')\n expect(royalty.payoutAddress).toBeString('royalty.payoutAddress')\n }\n\n }",{"deps":{"TokenPowNFT":{"$jig":0},"expect":{"$jig":1}},"metadata":{"app":"POK","author":"POK","description":"POK NFT Standard","emoji":"🐟","name":"PokNFT","royalty":{"payoutAddress":"","percentageFee":0},"traits":{}},"sealed":false,"total":0}]}]}
    https://whatsonchain.com/tx/796cb44585c0bd4e49fb5b8aeb5c6cf20fdfd595a5c9cf22a8698f04aedb848f