Settings

Blockchain
Network
Unit
Language
Theme
Sound New Block

Transaction

29ed4db9a26c95ade075b68150e55013a1dcf5adffee7a4661f88ae52fe16dc5
Timestamp (utc)
2021-11-18 21:28:04
Fee Paid
0.00003525 BSV
(
0.11364151 BSV
-
0.11360626 BSV
)
Fee Rate
500.2 sat/KB
Version
1
Confirmations
270,909
Size Stats
7,047 B

3 Outputs

Total Output:
0.11360626 BSV
  • jrunPOKMŒ{"in":0,"ref":["26764d3a08ae3af553030a69152d047b7f3a3f420b8b0338b856e97c8da1e478_o1","c1f48dec58c75552a645a189339fe7b1160d14175f91069b87924d747c1c1f5f_o1"],"out":["bd670220fe0ab61a63beb3ed75d04071b5fbb9ece769cb8380e5623fbb3be5e8"],"del":[],"cre":["modopDhAN5GArLxEbBjWTPByqqzThLhL1C"],"exec":[{"op":"DEPLOY","data":["class PokNFT extends TokenPowNFT {\n\n init(author, metadata) {\n if (caller !== this.constructor) { // minting\n throw new Error('FYI: Must create using mint()')\n } else {\n super.init(undefined, 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.setName(name)\n nft.setDesription(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 > 0).toBe(true, 'trait.label')\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')\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')\n }\n\n\n static $validateRoyalty(royalty) {\n expect(royalty).toBeObject('royalty')\n expect(royalty.percentage).toBeNumber('royalty.percentage')\n expect(royalty.percentage).toBeGreaterThanOrEqualTo(0, 'royalty.percentage')\n expect(royalty.percentage).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/29ed4db9a26c95ade075b68150e55013a1dcf5adffee7a4661f88ae52fe16dc5