Settings

Blockchain
Network
Unit
Language
Theme
Sound New Block

Transaction

8b582e6192dedadfe6678404d7339bc4e96cb7615bfccfcd278c22c52ffcc8ef
Timestamp (utc)
2021-05-04 03:03:17
Fee Paid
0.00006821 BSV
(
0.00053825 BSV
-
0.00047004 BSV
)
Fee Rate
1,000 sat/KB
Version
1
Confirmations
302,124
Size Stats
6,821 B

8 Outputs

Total Output:
0.00047004 BSV
  • jrunM{"in":0,"ref":["native://Jig","9f709cbcde726984ef7de4958b2219c6b098339d161a1cab7b02a558acd05ce6_o1","f97d4ac2a3d6f5ed09fad4a4f341619dc5a3773d9844ff95c99c5d4f8388de2f_o1"],"out":["37a44b504c04e51ec1a55db4a531b0d32c550dee9a59c1044a8a003a9074ac8d","ae61a02adee206ff523faa884cd7c77efc52b38dee4e4ce915f74d7cf0968b3d","f9b8c12ec8a7987ff04dcc0043ed7660299d70208fa046bbc234515d7dd2b4dd","c3eab08ea173c6537c78379b3d6c0e2592ae43c3c0eb065923c6ce4a1f7bd512","0f6b2aa15635401a38e63e62639e19ff30d3bbcd678598bd84fa3d1c7e92b429","b549ac32fe0d5de297a1be7a1a59db2189803dec6fda56d5a849c1bd5dfb5d04"],"del":[],"cre":["mu97FuDfo5pg7w7rufebTJdfFKBekSkLJA","mu97FuDfo5pg7w7rufebTJdfFKBekSkLJA","mu97FuDfo5pg7w7rufebTJdfFKBekSkLJA","mu97FuDfo5pg7w7rufebTJdfFKBekSkLJA","mu97FuDfo5pg7w7rufebTJdfFKBekSkLJA","mu97FuDfo5pg7w7rufebTJdfFKBekSkLJA"],"exec":[{"op":"DEPLOY","data":["class Offer extends Jig {\n init(args) {\n const { amount, pubKey, mediaItem, listingPost = null, } = args;\n expect(caller).toBeInstanceOf(OfferManager);\n expect(amount).toBeNumber();\n expect(mediaItem).toBeInstanceOf(MediaItem);\n if (listingPost) {\n expect(listingPost).toBeInstanceOf(ListingPost);\n }\n this.data = {\n amount,\n transaction: '',\n requesterPubKey: pubKey,\n listingPost,\n messages: [],\n removalHandle: new OfferRemovalHandle(this),\n };\n this.owner = mediaItem.owner;\n }\n accept(transaction, message = '') {\n expect(transaction).toBeString();\n expect(message).toBeString();\n this.data.transaction = transaction;\n this.send(this.data.requesterPubKey, message);\n }\n decline(message = '') {\n expect(message).toBeString();\n this.send(this.data.requesterPubKey, message);\n }\n send(to, message = '') {\n expect(message).toBeString();\n if (message) {\n this.data.messages.push({\n sender: this.owner,\n message,\n });\n }\n this.owner = to;\n }\n}",{"deps":{"Jig":{"$jig":0},"ListingPost":{"$jig":4},"MediaItem":{"$jig":1},"OfferManager":{"$jig":7},"OfferRemovalHandle":{"$jig":8},"expect":{"$jig":2}}},"class ListingPost extends Jig {\n init(ownerPubKey, props) {\n const { message, price, mediaItem, boardOrigin, requesterPubKey, } = props;\n expect(caller).toBeInstanceOf(ListingManager);\n expect(message).toBeString();\n expect(price).toBeNumber();\n expect(boardOrigin).toBeString();\n expect(requesterPubKey).toBeString();\n expect(mediaItem).toBeInstanceOf(MediaItem);\n this.data = {\n message,\n price,\n boardOrigin,\n mediaItem,\n requesterPubKey,\n approved: false,\n removalHandle: new ListingPostRemovalHandle(this),\n };\n this.owner = ownerPubKey;\n }\n setApproved(approved) {\n this.data.approved = approved;\n }\n postTo(to) {\n this.owner = to;\n }\n}",{"deps":{"Jig":{"$dup":["1","deps","Jig"]},"ListingManager":{"$jig":5},"ListingPostRemovalHandle":{"$jig":6},"MediaItem":{"$dup":["1","deps","MediaItem"]},"expect":{"$dup":["1","deps","expect"]}}},"class ListingManager extends Jig {\n init(pubKey) {\n this.data = {\n listings: [],\n pubKey,\n };\n }\n createListing(ownerPubKey, listingProps) {\n const { message, price, mediaItem, boardOrigin, } = listingProps;\n const newListing = new ListingPost(ownerPubKey, {\n message,\n price,\n mediaItem,\n boardOrigin,\n requesterPubKey: this.data.pubKey,\n });\n this.data.listings.push(newListing);\n }\n sendTo(to) {\n this.owner = to;\n }\n removeListingPost(listingPost) {\n expect(listingPost).toBeInstanceOf(ListingPost);\n this.data.listings = this.data.listings.filter(l => l.origin !== listingPost.origin);\n listingPost.data.removalHandle.destroy();\n }\n}",{"deps":{"Jig":{"$dup":["1","deps","Jig"]},"ListingPost":{"$dup":["1","deps","ListingPost"]},"expect":{"$dup":["1","deps","expect"]}}},"class ListingPostRemovalHandle extends Jig {\n init(post) {\n expect(caller).toBeInstanceOf(ListingPost);\n expect(post).toBeInstanceOf(ListingPost);\n this.data = {\n post,\n };\n }\n}",{"deps":{"Jig":{"$dup":["1","deps","Jig"]},"ListingPost":{"$dup":["1","deps","ListingPost"]},"expect":{"$dup":["1","deps","expect"]}}},"class OfferManager extends Jig {\n init(pubKey) {\n expect(pubKey).toBeString();\n this.data = {\n pubKey,\n offers: {},\n };\n }\n createOffer(amount, mediaItem, listingPost = null) {\n const { offers, pubKey, } = this.data;\n expect(offers[mediaItem.origin]).not.toBeDefined();\n expect(mediaItem.owner).not.toEqual(this.owner);\n if (listingPost) {\n expect(listingPost).toBeInstanceOf(ListingPost);\n }\n const newOffer = new Offer({\n amount,\n pubKey,\n mediaItem,\n listingPost,\n });\n offers[mediaItem.origin] = newOffer;\n return newOffer;\n }\n async rescindOffer(offerOrigin) {\n const { offers, } = this.data;\n const removedOffer = offers[offerOrigin] || null;\n if (removedOffer) {\n await removedOffer.destroy();\n delete offers[offerOrigin];\n }\n return removedOffer;\n }\n removeDeclinedOffer(offerOrigin) {\n const { offers, } = this.data;\n const removedOffer = offers[offerOrigin] || null;\n delete offers[offerOrigin];\n return removedOffer;\n }\n}",{"deps":{"Jig":{"$dup":["1","deps","Jig"]},"ListingPost":{"$dup":["1","deps","ListingPost"]},"Offer":{"$jig":3},"expect":{"$dup":["1","deps","expect"]}}},"class OfferRemovalHandle extends Jig {\n init(post) {\n expect(caller).toBeInstanceOf(Offer);\n expect(post).toBeInstanceOf(Offer);\n this.data = {\n post,\n };\n }\n}",{"deps":{"Jig":{"$dup":["1","deps","Jig"]},"Offer":{"$dup":["9","deps","Offer"]},"expect":{"$dup":["1","deps","expect"]}}}]}]}
    https://whatsonchain.com/tx/8b582e6192dedadfe6678404d7339bc4e96cb7615bfccfcd278c22c52ffcc8ef
Total Output:
0.00047004 BSV