2022.12.14 12:21 [3425274] smart account 3PD18pUDH3EPtqLzC1w2AK33PVBu6qnSLS1 > SELF 0.00000000 Waves
{ "type": 13, "id": "CZwXGQERDk9BaybZ3DccXW5xje5a9pncF5Mhcq5DHyQQ", "fee": 1000000, "feeAssetId": null, "timestamp": 1671009794175, "version": 2, "chainId": 87, "sender": "3PD18pUDH3EPtqLzC1w2AK33PVBu6qnSLS1", "senderPublicKey": "HmVJ1kiwhwwy3iHzDJqs4etemzQeGtHh9jngHyrnTBFU", "proofs": [ "5TNVRkZrcEhVDHqeeS1d29tnqTSBTKxsLERF9uTyx4sdLWMpaMoQkV3HQ8jh56p3BS2rFfUz6Nrufy1YjsfuzryE" ], "script": "base64:AAIFAAAAAAAAAAsIAhIDCgEIEgASAAAAAAUAAAAABUdFTkVTCQAETAAAAAICAAAABXNoZWxsCQAETAAAAAICAAAABWZhbmdzCQAETAAAAAICAAAABWhvcm5zCQAETAAAAAICAAAAC2xvbmcgdG9uZ3VlCQAETAAAAAICAAAABnBvaXNvbgkABEwAAAACAgAAAAlzY2F2ZW5nZXIJAARMAAAAAgIAAAAKY2Ftb3VmbGFnZQkABEwAAAACAgAAAAhpbW11bml0eQUAAAADbmlsAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWIFAAAAByRtYXRjaDAFAAAAAWIAAAAAAAAAAAABAAAAD2dldFJhbmRvbU51bWJlcgAAAAMAAAAIdmFyaWFudHMAAAAEdHhJZAAAAAZvZmZzZXQEAAAAD3JhbmRvbVNlZWRCbG9jawkBAAAABXZhbHVlAAAAAQkAA+0AAAABCQAAZQAAAAIFAAAABmhlaWdodAAAAAAAAAAAAQQAAAAKcmFuZG9tSGFzaAkAAfcAAAABCQAAywAAAAIFAAAABHR4SWQJAQAAAAV2YWx1ZQAAAAEIBQAAAA9yYW5kb21TZWVkQmxvY2sAAAADdnJmCQAAagAAAAIJAASyAAAAAgUAAAAKcmFuZG9tSGFzaAkAAGgAAAACBQAAAAZvZmZzZXQAAAAAAAAAAAgFAAAACHZhcmlhbnRzAAAAABJuZnRDcmVhdGlvbkFkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVeT3cTSF+cgCv33IRJO8PB2ZyaDA3jUXEwBAAAAB21pbnRORlQAAAAEAAAABG5hbWUAAAAEZGVzYwAAAARsaW5rAAAACmNvbGxlY3Rpb24EAAAABU5GVElkBAAAAAckbWF0Y2gwCQAD/AAAAAQFAAAAEm5mdENyZWF0aW9uQWRkcmVzcwIAAAAJY3JlYXRlTkZUCQAETAAAAAIFAAAABG5hbWUJAARMAAAAAgUAAAAEZGVzYwkABEwAAAACBQAAAARsaW5rCQAETAAAAAIFAAAACmNvbGxlY3Rpb24FAAAAA25pbAUAAAADbmlsAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXgFAAAAByRtYXRjaDAFAAAAAXgJAAACAAAAAQIAAAAvc29tZXRoaW5nIHdlbnQgd3JvbmcgZHVyaW5nIHRoZSBjcmVhdGlvbiBvZiBORlQDCQAAAAAAAAIFAAAABU5GVElkBQAAAAVORlRJZAUAAAAFTkZUSWQJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAwAAAAFpAQAAAAptaW50QW5pbWFsAAAAAQAAAARuYW1lBAAAAAZkb21haW4JAAEsAAAAAgkAASwAAAACCQABpAAAAAEJAABkAAAAAgkBAAAAD2dldFJhbmRvbU51bWJlcgAAAAMAAAAAAAAAAAIIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQAAAAAAAAAAAAAAAAAAAAAAAEJAAGkAAAAAQkAAGQAAAACCQEAAAAPZ2V0UmFuZG9tTnVtYmVyAAAAAwAAAAAAAAAAAwgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAAAAAAAAAAAAQAAAAAAAAAAAQIAAAAHMDAwMDAwfAQAAAAEZGVzYwkAASwAAAACAgAAAA9XQVZFUyBBTklNQUxTIHwFAAAABmRvbWFpbgQAAAAFbmZ0SUQJAQAAAAdtaW50TkZUAAAABAUAAAAEbmFtZQUAAAAEZGVzYwkAASwAAAACAgAAADBodHRwczovL2FuaW1hbHMtYmFjay5oZXJva3VhcHAuY29tL2ltYWdlP2RvbWFpbj0FAAAABmRvbWFpbgIAAAANV2F2ZXMgQW5pbWFscwMJAAAAAAAAAgUAAAAFbmZ0SUQFAAAABW5mdElECQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAICAAAACXF1YW50aXR5XwUAAAAGZG9tYWluCQAAZAAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACAgAAAAlxdWFudGl0eV8FAAAABmRvbWFpbgAAAAAAAAAAAQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAHYW5pbWFsXwUAAAAFbmZ0SUQCAAAAB19pc3N1ZXIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgAAAAAAAAAAAQkAAlkAAAABBQAAAAVuZnRJRAUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAA5taW50UmFuZG9tR2VuZQAAAAADAwkBAAAAAiE9AAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAEAAAAg8Rr+Jf72mTj0aSrE3+ES1keyxsoOujcJr3dtH46i5WMGCQEAAAACIT0AAAACCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQAAAAAAAAPQkAJAAACAAAAAQIAAAAvcGxlYXNlIGF0dGFjaCAwLjAxIFBVWlpMRSBhcyBhIHBheW1lbnQuIHRoYW5rcyEEAAAAA251bQkBAAAAD2dldFJhbmRvbU51bWJlcgAAAAMJAAGQAAAAAQUAAAAFR0VORVMIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQAAAAAAAAAAAAEAAAABW5mdElECQEAAAAHbWludE5GVAAAAAQJAAGRAAAAAgUAAAAFR0VORVMFAAAAA251bQkAASwAAAACAgAAABVXQVZFUyBBTklNQUxTIEdFTkVTIHwJAAGRAAAAAgUAAAAFR0VORVMFAAAAA251bQkAASwAAAACAgAAAC5odHRwczovL2FuaW1hbHMtYmFjay5oZXJva3VhcHAuY29tL2ltYWdlP2dlbmU9CQABkQAAAAIFAAAABUdFTkVTBQAAAANudW0CAAAADUFuaW1hbHMgR2VuZXMDCQAAAAAAAAIFAAAABW5mdElEBQAAAAVuZnRJRAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIAAAAAAAAAAAEJAAJZAAAAAQUAAAAFbmZ0SUQFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAHYWRkR2VuZQAAAAAEAAAACGFuaW1hbElkCQEAAAAFdmFsdWUAAAABCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBAAAAAZnZW5lSWQJAQAAAAV2YWx1ZQAAAAEICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABAAAAB2Fzc2V0SWQDAwkBAAAAAiE9AAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50AAAAAAAAAAABBgkBAAAAAiE9AAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEAAAAGYW1vdW50AAAAAAAAAAABCQAAAgAAAAECAAAADmF0dGFjaCBwYXltZW50BAAAAARuYW1lCAkBAAAABXZhbHVlAAAAAQkAA+wAAAABBQAAAAhhbmltYWxJZAAAAARuYW1lBAAAAAdnZW5OYW1lCAkBAAAABXZhbHVlAAAAAQkAA+wAAAABBQAAAAZnZW5lSWQAAAAEbmFtZQQAAAAEZGVzYwkAASwAAAACCQABLAAAAAIICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAACGFuaW1hbElkAAAAC2Rlc2NyaXB0aW9uAgAAAAEsBQAAAAdnZW5OYW1lBAAAAAZkb21haW4JAAEsAAAAAgkAASwAAAACCQEAAAAFdmFsdWUAAAABCQABkQAAAAIJAAS1AAAAAgUAAAAEZGVzYwIAAAABfAAAAAAAAAAAAQIAAAABfAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCQAEtQAAAAIFAAAABGRlc2MCAAAAAXwAAAAAAAAAAAIEAAAABW5mdElECQEAAAAHbWludE5GVAAAAAQFAAAABG5hbWUFAAAABGRlc2MJAAEsAAAAAgIAAAAwaHR0cHM6Ly9hbmltYWxzLWJhY2suaGVyb2t1YXBwLmNvbS9pbWFnZT9kb21haW49BQAAAAZkb21haW4CAAAADVdhdmVzIEFuaW1hbHMDCQAAAAAAAAIFAAAABW5mdElEBQAAAAVuZnRJRAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIAAAAAAAAAAAEJAAJZAAAAAQUAAAAFbmZ0SUQFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAACQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleaU69ZY=", "height": 3425274, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FXan6YsLkYPFkTpmZCgukSYhfRjDZCytyVxmQJJfynVw Next: B3EAMuGTHLfSok51HDMmsNhcQYMHR9ehGWfkJ2MSV13W Diff:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let GENES = ["shell", "fangs", "horns", "long tongue", "poison", "scavenger", "camouflage"] | |
4 | + | let GENES = ["shell", "fangs", "horns", "long tongue", "poison", "scavenger", "camouflage", "immunity"] | |
5 | 5 | ||
6 | 6 | func tryGetInteger (key) = match getInteger(this, key) { | |
7 | 7 | case b: Int => |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let GENES = ["shell", "fangs", "horns", "long tongue", "poison", "scavenger", "camouflage"] | |
4 | + | let GENES = ["shell", "fangs", "horns", "long tongue", "poison", "scavenger", "camouflage", "immunity"] | |
5 | 5 | ||
6 | 6 | func tryGetInteger (key) = match getInteger(this, key) { | |
7 | 7 | case b: Int => | |
8 | 8 | b | |
9 | 9 | case _ => | |
10 | 10 | 0 | |
11 | 11 | } | |
12 | 12 | ||
13 | 13 | ||
14 | 14 | func getRandomNumber (variants,txId,offset) = { | |
15 | 15 | let randomSeedBlock = value(blockInfoByHeight((height - 1))) | |
16 | 16 | let randomHash = sha256((txId + value(randomSeedBlock.vrf))) | |
17 | 17 | (toInt(randomHash, (offset * 8)) % variants) | |
18 | 18 | } | |
19 | 19 | ||
20 | 20 | ||
21 | 21 | let nftCreationAddress = Address(base58'3PFQjjDMiZKQZdu5JqTHD7HwgSXyp9Rw9By') | |
22 | 22 | ||
23 | 23 | func mintNFT (name,desc,link,collection) = { | |
24 | 24 | let NFTId = match invoke(nftCreationAddress, "createNFT", [name, desc, link, collection], nil) { | |
25 | 25 | case x: String => | |
26 | 26 | x | |
27 | 27 | case _ => | |
28 | 28 | throw("something went wrong during the creation of NFT") | |
29 | 29 | } | |
30 | 30 | if ((NFTId == NFTId)) | |
31 | 31 | then NFTId | |
32 | 32 | else throw("Strict value is not equal to itself.") | |
33 | 33 | } | |
34 | 34 | ||
35 | 35 | ||
36 | 36 | @Callable(i) | |
37 | 37 | func mintAnimal (name) = { | |
38 | 38 | let domain = ((toString((getRandomNumber(2, i.transactionId, 0) + 1)) + toString((getRandomNumber(3, i.transactionId, 1) + 1))) + "000000|") | |
39 | 39 | let desc = ("WAVES ANIMALS |" + domain) | |
40 | 40 | let nftID = mintNFT(name, desc, ("https://animals-back.herokuapp.com/image?domain=" + domain), "Waves Animals") | |
41 | 41 | if ((nftID == nftID)) | |
42 | 42 | then [IntegerEntry(("quantity_" + domain), (tryGetInteger(("quantity_" + domain)) + 1)), StringEntry((("animal_" + nftID) + "_issuer"), toString(i.caller)), ScriptTransfer(i.caller, 1, fromBase58String(nftID))] | |
43 | 43 | else throw("Strict value is not equal to itself.") | |
44 | 44 | } | |
45 | 45 | ||
46 | 46 | ||
47 | 47 | ||
48 | 48 | @Callable(i) | |
49 | 49 | func mintRandomGene () = if (if ((i.payments[0].assetId != base58'HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS')) | |
50 | 50 | then true | |
51 | 51 | else (i.payments[0].amount != 1000000)) | |
52 | 52 | then throw("please attach 0.01 PUZZLE as a payment. thanks!") | |
53 | 53 | else { | |
54 | 54 | let num = getRandomNumber(size(GENES), i.transactionId, 0) | |
55 | 55 | let nftID = mintNFT(GENES[num], ("WAVES ANIMALS GENES |" + GENES[num]), ("https://animals-back.herokuapp.com/image?gene=" + GENES[num]), "Animals Genes") | |
56 | 56 | if ((nftID == nftID)) | |
57 | 57 | then [ScriptTransfer(i.caller, 1, fromBase58String(nftID))] | |
58 | 58 | else throw("Strict value is not equal to itself.") | |
59 | 59 | } | |
60 | 60 | ||
61 | 61 | ||
62 | 62 | ||
63 | 63 | @Callable(i) | |
64 | 64 | func addGene () = { | |
65 | 65 | let animalId = value(i.payments[0].assetId) | |
66 | 66 | let geneId = value(i.payments[1].assetId) | |
67 | 67 | if (if ((i.payments[0].amount != 1)) | |
68 | 68 | then true | |
69 | 69 | else (i.payments[1].amount != 1)) | |
70 | 70 | then throw("attach payment") | |
71 | 71 | else { | |
72 | 72 | let name = value(assetInfo(animalId)).name | |
73 | 73 | let genName = value(assetInfo(geneId)).name | |
74 | 74 | let desc = ((value(assetInfo(animalId)).description + ",") + genName) | |
75 | 75 | let domain = ((value(split(desc, "|")[1]) + "|") + value(split(desc, "|")[2])) | |
76 | 76 | let nftID = mintNFT(name, desc, ("https://animals-back.herokuapp.com/image?domain=" + domain), "Waves Animals") | |
77 | 77 | if ((nftID == nftID)) | |
78 | 78 | then [ScriptTransfer(i.caller, 1, fromBase58String(nftID))] | |
79 | 79 | else throw("Strict value is not equal to itself.") | |
80 | 80 | } | |
81 | 81 | } | |
82 | 82 | ||
83 | 83 | ||
84 | 84 | @Verifier(tx) | |
85 | 85 | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
86 | 86 |
github/deemru/w8io/786bc32 32.86 ms ◑