tx · 51R3mwNe34jWJfGMxCXo2Yd96bNZ2oJJRhestEeASh5R

3PAi1ePLQrYrY3jj9omBtT6isMkZsapbmks:  -0.01400000 Waves

2022.04.14 17:23 [3073654] smart account 3PAi1ePLQrYrY3jj9omBtT6isMkZsapbmks > SELF 0.00000000 Waves

{ "type": 13, "id": "51R3mwNe34jWJfGMxCXo2Yd96bNZ2oJJRhestEeASh5R", "fee": 1400000, "feeAssetId": null, "timestamp": 1649946196608, "version": 2, "chainId": 87, "sender": "3PAi1ePLQrYrY3jj9omBtT6isMkZsapbmks", "senderPublicKey": "XrNmTusDFaLSz3wAjmdfcyC5h6uYyVbpdh18758UpFv", "proofs": [ "Zcr3evzeTayjDcS3pokiiaBp8BnwdzP6R915aQx9gULhZtM1vz5a2XaiKC7hV4VF7S6h8vSxHxaX6TBFs8qU8Du" ], "script": "base64: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AA9yYW5kb21TZWVkQmxvY2sAAAADdnJmCQAAagAAAAIJAASyAAAAAgUAAAAKcmFuZG9tSGFzaAUAAAAGb2Zmc2V0BQAAAAh2YXJpYW50cwEAAAARZ2V0UmFuZG9tQXJ0ZWZhY3QAAAACAAAABWJveElkAAAAAWgEAAAADHJhbmRvbU51bWJlcgkBAAAAD2dldFJhbmRvbU51bWJlcgAAAAQAAAAAAAAAAAYFAAAABWJveElkBQAAAAFoAAAAAAAAAAABCQABkQAAAAIFAAAACWFydGVmYWN0cwUAAAAMcmFuZG9tTnVtYmVyAQAAAA5nZXRSYW5kb21HZW5lcwAAAAIAAAAEdHhJZAAAAAFoBAAAAAxyYW5kb21OdW1iZXIJAQAAAA9nZXRSYW5kb21OdW1iZXIAAAAEAAAAAAAAAAAGBQAAAAR0eElkBQAAAAFoAAAAAAAAAAACCQABkQAAAAIFAAAACWZyZWVHZW5lcwUAAAAMcmFuZG9tTnVtYmVyAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIAAAAHYWRkcmVzcwAAAANrZXkEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWECAAAAAAEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAAAx0cnlHZXRTdHJpbmcAAAABAgAAABRzdGF0aWNfb3JhY2xlQWRkcmVzcwEAAAARZ2V0QnJlZWRlckFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAFXN0YXRpY19icmVlZGVyQWRkcmVzcwEAAAANZ2V0RWdnQXNzZXRJZAAAAAAJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAEXN0YXRpY19lZ2dBc3NldElkAQAAABNnZXRUcnVzdGVkQ29udHJhY3RzAAAAAAkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAF3N0YXRpY190cnVzdGVkQ29udHJhY3RzAQAAAAhhc1N0cmluZwAAAAEAAAAFdmFsdWUEAAAAByRtYXRjaDAFAAAABXZhbHVlAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAABnN0cmluZwUAAAAHJG1hdGNoMAUAAAAGc3RyaW5nCQAAAgAAAAECAAAAHHdyb25nIHR5cGUsIGV4cGVjdGVkOiBTdHJpbmcBAAAABWFzSW50AAAAAQAAAAV2YWx1ZQQAAAAHJG1hdGNoMAUAAAAFdmFsdWUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAADaW50BQAAAAckbWF0Y2gwBQAAAANpbnQJAAACAAAAAQIAAAAZd3JvbmcgdHlwZSwgZXhwZWN0ZWQ6IEludAEAAAAObWFuaXB1bGF0ZU5hbWUAAAADAAAACWFzc2V0TmFtZQAAAAhwb3NpdGlvbgAAAARjaGFyCQABLAAAAAIJAAEsAAAAAgkAAS8AAAACBQAAAAlhc3NldE5hbWUJAABlAAAAAgUAAAAIcG9zaXRpb24AAAAAAAAAAAEFAAAABGNoYXIJAQAAAAl0YWtlUmlnaHQAAAACBQAAAAlhc3NldE5hbWUJAABlAAAAAgAAAAAAAAAAEAUAAAAIcG9zaXRpb24BAAAAEGl0ZW1Jc0luQ29vbERvd24AAAACAAAADGFydGVmYWN0TmFtZQAAAAphcnRlZmFjdElkBAAAABF1bnN0YWtlSGVpZ2h0TGFzdAkBAAAADXRyeUdldEludGVnZXIAAAABCQEAAAAQa2V5VW5zdGFrZUhlaWdodAAAAAIFAAAADGFydGVmYWN0TmFtZQUAAAAKYXJ0ZWZhY3RJZAQAAAAOY29vbGRvd25QZXJpb2QAAAAAAAAAAPADCQAAZgAAAAIFAAAABmhlaWdodAkAAGQAAAACBQAAABF1bnN0YWtlSGVpZ2h0TGFzdAUAAAAOY29vbGRvd25QZXJpb2QHBgAAAA8AAAABaQEAAAAPbWFuaXB1bGF0ZUJvb3N0AAAAAgAAAAVib29zdAAAAAZkdWNrSWQEAAAAEGFsbG93ZWRDb250cmFjdHMJAQAAABNnZXRUcnVzdGVkQ29udHJhY3RzAAAAAAQAAAAUYWxsb3dlZENvbnRyYWN0c0xpc3QJAAS1AAAAAgUAAAAQYWxsb3dlZENvbnRyYWN0cwIAAAABOwQAAAAKZGFwcFRvQ2FsbAkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIDCQAAAAAAAAIJAARPAAAAAgUAAAAUYWxsb3dlZENvbnRyYWN0c0xpc3QFAAAACmRhcHBUb0NhbGwFAAAABHVuaXQJAAACAAAAAQIAAAAvVGhpcyBzbWFydCBjb250cmFjdCBjYW4ndCBtYW5pcHVsYXRlIHRoZSBib29zdCEEAAAAA2tleQkBAAAAFGtleUV4dGVybmFsQm9vc3REdWNrAAAAAQUAAAAGZHVja0lkBAAAAAthY3RpdmVCb29zdAkBAAAADXRyeUdldEludGVnZXIAAAABBQAAAANrZXkEAAAACG5ld0Jvb3N0CQAAZAAAAAIFAAAAC2FjdGl2ZUJvb3N0BQAAAAVib29zdAMJAABmAAAAAgAAAAAAAAAAAAUAAAAIbmV3Qm9vc3QJAAACAAAAAQIAAAA7U29tZXRoaW5nIHdlbnQgd3Jvbmcgd2l0aCBib29zdCwgcGxlYXNlIGNvbnRhY3QgdGhlIGFkbWlucyEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAA2tleQUAAAAIbmV3Qm9vc3QFAAAAA25pbAAAAAFpAQAAABZtYW5pcHVsYXRlQm9vc3RBY2NvdW50AAAAAgAAAAVib29zdAAAAAdhZGRyZXNzBAAAABBhbGxvd2VkQ29udHJhY3RzCQEAAAATZ2V0VHJ1c3RlZENvbnRyYWN0cwAAAAAEAAAAFGFsbG93ZWRDb250cmFjdHNMaXN0CQAEtQAAAAIFAAAAEGFsbG93ZWRDb250cmFjdHMCAAAAATsEAAAACmRhcHBUb0NhbGwJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyAwkAAAAAAAACCQAETwAAAAIFAAAAFGFsbG93ZWRDb250cmFjdHNMaXN0BQAAAApkYXBwVG9DYWxsBQAAAAR1bml0CQAAAgAAAAECAAAAL1RoaXMgc21hcnQgY29udHJhY3QgY2FuJ3QgbWFuaXB1bGF0ZSB0aGUgYm9vc3QhBAAAAANrZXkJAQAAABdrZXlFeHRlcm5hbEJvb3N0QWRkcmVzcwAAAAEFAAAAB2FkZHJlc3MEAAAAC2FjdGl2ZUJvb3N0CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEFAAAAA2tleQQAAAAIbmV3Qm9vc3QJAABkAAAAAgUAAAALYWN0aXZlQm9vc3QFAAAABWJvb3N0AwkAAGYAAAACAAAAAAAAAAAABQAAAAhuZXdCb29zdAkAAAIAAAABAgAAADtTb21ldGhpbmcgd2VudCB3cm9uZyB3aXRoIGJvb3N0LCBwbGVhc2UgY29udGFjdCB0aGUgYWRtaW5zIQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAADa2V5BQAAAAhuZXdCb29zdAUAAAADbmlsAAAAAWkBAAAAFGNoZWNrQXJ0ZWZhY3REZXRhaWxzAAAAAQAAAAdhc3NldElkBAAAAAVhc3NldAkBAAAABXZhbHVlAAAAAQkAA+wAAAABCQACWQAAAAEFAAAAB2Fzc2V0SWQEAAAACWFzc2V0TmFtZQkBAAAABXZhbHVlAAAAAQgFAAAABWFzc2V0AAAABG5hbWUDAwkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAAC2FsbEFydGVmYWN0BQAAAAlhc3NldE5hbWUJAAAAAAAAAggFAAAABWFzc2V0AAAABmlzc3VlcgUAAAAEdGhpcwcJAAUUAAAAAgUAAAADbmlsBQAAAAlhc3NldE5hbWUJAAACAAAAAQIAAAAQSW52YWxpZCBhcnRlZmFjdAAAAAFpAQAAAA9jb25maWd1cmVPcmFjbGUAAAABAAAABm9yYWNsZQMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwkAAAIAAAABAgAAAAphZG1pbiBvbmx5CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAAFHN0YXRpY19vcmFjbGVBZGRyZXNzBQAAAAZvcmFjbGUFAAAAA25pbAAAAAFpAQAAABpjYWxjdWxhdGVGYXJtaW5nUG93ZXJCb29zdAAAAAIAAAAGZHVja0lkAAAAB2FkZHJlc3MEAAAAEWV4dGVybmFsQm9vc3REdWNrCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAQAAABRrZXlFeHRlcm5hbEJvb3N0RHVjawAAAAEFAAAABmR1Y2tJZAQAAAAUZXh0ZXJuYWxCb29zdEFkZHJlc3MJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkBAAAAF2tleUV4dGVybmFsQm9vc3RBZGRyZXNzAAAAAQUAAAAHYWRkcmVzcwQAAAAKdG90YWxCb29zdAkAAGQAAAACBQAAABFleHRlcm5hbEJvb3N0RHVjawUAAAAUZXh0ZXJuYWxCb29zdEFkZHJlc3MJAAUUAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAAZkdWNrSWQCAAAAC19sYXN0X2Jvb3N0BQAAAAp0b3RhbEJvb3N0BQAAAANuaWwFAAAACnRvdGFsQm9vc3QAAAABaQEAAAAJZml4ZWRHZW5lAAAAAwAAAAd0eElkU3RyAAAAD3BhcmVudEZpeGVkR2VuZQAAABFwb3NpdGlvbkZpeGVkR2VuZQQAAAAMZmlyc3RQYXltZW50CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAAxmaXJzdEFzc2V0SWQJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAADGZpcnN0UGF5bWVudAAAAAdhc3NldElkAwkBAAAAAiE9AAAAAggFAAAADGZpcnN0UGF5bWVudAAAAAZhbW91bnQAAAAAAAAAAAEJAAACAAAAAQIAAAATTkZUIGlzIG5vdCBhdHRhY2hlZAQAAAAIYXJ0ZWZhY3QJAQAAAAhhc1N0cmluZwAAAAEJAAP8AAAABAUAAAAEdGhpcwIAAAAUY2hlY2tBcnRlZmFjdERldGFpbHMJAARMAAAAAgUAAAAMZmlyc3RBc3NldElkBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAIYXJ0ZWZhY3QFAAAACGFydGVmYWN0AwkBAAAAAiE9AAAAAgUAAAAIYXJ0ZWZhY3QCAAAAC0FSVC1GSVhHRU5FCQAAAgAAAAECAAAAKVlvdSBuZWVkIHRvIGF0dGFjaCBhIEFSVC1GSVhHRU5FIGFydGVmYWN0BAAAAAR0eElkCQACWQAAAAEFAAAAB3R4SWRTdHIEAAAAD2ZpbmlzaEhlaWdodEtleQkBAAAAGWdldFByb2Nlc3NGaW5pc2hIZWlnaHRLZXkAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAEdHhJZAQAAAATcHJvY2Vzc0ZpbmlzaEhlaWdodAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgkBAAAAEWdldEJyZWVkZXJBZGRyZXNzAAAAAAUAAAAPZmluaXNoSGVpZ2h0S2V5BAAAAA9kdWNrR2VuZXNTdHJpbmcJAQAAAAhhc1N0cmluZwAAAAEJAAP8AAAABAkBAAAAEWdldEJyZWVkZXJBZGRyZXNzAAAAAAIAAAAMZ2VuZXJhdGVEdWNrCQAETAAAAAIFAAAAB3R4SWRTdHIJAARMAAAAAgUAAAATcHJvY2Vzc0ZpbmlzaEhlaWdodAkABEwAAAACBQAAAA9wYXJlbnRGaXhlZEdlbmUJAARMAAAAAgUAAAARcG9zaXRpb25GaXhlZEdlbmUJAARMAAAAAgIAAAAACQAETAAAAAIAAAAAAAAAAAAFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAA9kdWNrR2VuZXNTdHJpbmcFAAAAD2R1Y2tHZW5lc1N0cmluZwQAAAAEY2FsbAkAA/wAAAAECQEAAAARZ2V0QnJlZWRlckFkZHJlc3MAAAAAAgAAABdmaW5pc2hEdWNrSGF0Y2hpbmdJdGVtcwkABEwAAAACBQAAAAd0eElkU3RyCQAETAAAAAIFAAAAD2R1Y2tHZW5lc1N0cmluZwUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAABGNhbGwFAAAABGNhbGwJAARMAAAAAgkBAAAABEJ1cm4AAAACCQEAAAAFdmFsdWUAAAABCAUAAAAMZmlyc3RQYXltZW50AAAAB2Fzc2V0SWQAAAAAAAAAAAEFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAAhmcmVlR2VuZQAAAAEAAAAHdHhJZFN0cgQAAAAMZmlyc3RQYXltZW50CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAAxmaXJzdEFzc2V0SWQJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAADGZpcnN0UGF5bWVudAAAAAdhc3NldElkAwkBAAAAAiE9AAAAAggFAAAADGZpcnN0UGF5bWVudAAAAAZhbW91bnQAAAAAAAAAAAEJAAACAAAAAQIAAAATTkZUIGlzIG5vdCBhdHRhY2hlZAQAAAAIYXJ0ZWZhY3QJAQAAAAhhc1N0cmluZwAAAAEJAAP8AAAABAUAAAAEdGhpcwIAAAAUY2hlY2tBcnRlZmFjdERldGFpbHMJAARMAAAAAgUAAAAMZmlyc3RBc3NldElkBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAIYXJ0ZWZhY3QFAAAACGFydGVmYWN0AwkBAAAAAiE9AAAAAgUAAAAIYXJ0ZWZhY3QCAAAADEFSVC1GUkVFR0VORQkAAAIAAAABAgAAACpZb3UgbmVlZCB0byBhdHRhY2ggYSBBUlQtRlJFRUdFTkUgYXJ0ZWZhY3QEAAAABHR4SWQJAAJZAAAAAQUAAAAHdHhJZFN0cgQAAAAPZmluaXNoSGVpZ2h0S2V5CQEAAAAZZ2V0UHJvY2Vzc0ZpbmlzaEhlaWdodEtleQAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAR0eElkBAAAABNwcm9jZXNzRmluaXNoSGVpZ2h0CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACCQEAAAARZ2V0QnJlZWRlckFkZHJlc3MAAAAABQAAAA9maW5pc2hIZWlnaHRLZXkEAAAADHNlbGVjdGVkR2VuZQkBAAAADmdldFJhbmRvbUdlbmVzAAAAAgUAAAAEdHhJZAUAAAATcHJvY2Vzc0ZpbmlzaEhlaWdodAQAAAAOcmFuZG9tUG9zaXRpb24JAQAAAA9nZXRSYW5kb21OdW1iZXIAAAAEAAAAAAAAAAAHBQAAAAR0eElkBQAAABNwcm9jZXNzRmluaXNoSGVpZ2h0AAAAAAAAAAADBAAAAA9kdWNrR2VuZXNTdHJpbmcJAQAAAAhhc1N0cmluZwAAAAEJAAP8AAAABAkBAAAAEWdldEJyZWVkZXJBZGRyZXNzAAAAAAIAAAAMZ2VuZXJhdGVEdWNrCQAETAAAAAIFAAAA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JFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAAdwcmVJbml0AAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAcc3RhdGljX0FSVC1MQUtFX2Zhcm1pbmdTbG90cwAAAAAAAAAAyAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAcc3RhdGljX0FSVC1MQUtFX2Zhcm1pbmdCb29zdAAAAAAAAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAdc3RhdGljX0FSVC1IT1VTRV9mYXJtaW5nU2xvdHMAAAAAAAAAAAQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAHXN0YXRpY19BUlQtSE9VU0VfZmFybWluZ0Jvb3N0AAAAAAAAAAAeCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAACBzdGF0aWNfQVJULUJJR0hPVVNFX2Zhcm1pbmdTbG90cwAAAAAAAAAACgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAgc3RhdGljX0FSVC1CSUdIT1VTRV9mYXJtaW5nQm9vc3QAAAAAAAAAAA8FAAAAA25pbAAAAAFpAQAAAA1pc3N1ZUFydGVmYWN0AAAAAgAAAAR0eXBlAAAACHJlY2VpdmVyAwkAAAAAAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMEAAAAB3R4SWRTdHIJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAQAAAAHYWRkcmVzcwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAACHJlY2VpdmVyBAAAAAhhcnRlZmFjdAkABEMAAAAHBQAAAAR0eXBlAgAAACpORlQgYXJ0ZWZhY3Qgb2YgV2F2ZXMgRHVja3MgZ2FtZS4g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", "height": 3073654, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: CnCTkGviczb5Weanzq6vMXhAiuyRyYFFcKzQJtxVejKn Next: CyjzXmmHPbJXG1rBGpq9HpKmYhE6JrjZR1k2CX1V6zQi Diff:
OldNewDifferences
77 func d (b,e) = (((b + "_") + e) + "_unstake_height")
88
99
10-func f (b,g) = (((b + "_") + g) + "_duck")
10+func f (g) = (g + "_duck_external_boost")
1111
1212
13-func h (g) = (g + "_duck_external_boost")
13+func h (i) = (i + "_user_external_boost")
1414
1515
16-func i (j,k) = (((j + "_") + toBase58String(k)) + "_fh")
16+func j (i,k) = (((i + "_") + toBase58String(k)) + "_fh")
1717
1818
1919 let l = base58'3P44yqcpfhPF2iC1nptm2ZJCTaN7VYhz9og'
2828
2929 let q = ["ART-XMISTL", "ART-XHAT", "ART-XSCARF", "ART-XSWEATER", "ART-XSOCK", "ART-XTREE"]
3030
31-let r = ["ART-LAKE", "ART-XTREE"]
31+let r = (q ++ p)
3232
33-let s = ["ART-XMISTL"]
34-
35-let t = (s ++ r)
36-
37-let u = (q ++ p)
38-
39-func v (w) = {
40- let x = getString(this, w)
41- if ($isInstanceOf(x, "String"))
33+func s (t) = {
34+ let u = getString(this, t)
35+ if ($isInstanceOf(u, "String"))
4236 then {
43- let y = x
44- y
37+ let v = u
38+ v
4539 }
4640 else ""
4741 }
4842
4943
50-func z (w) = {
51- let x = getInteger(this, w)
52- if ($isInstanceOf(x, "Int"))
44+func w (t) = {
45+ let u = getInteger(this, t)
46+ if ($isInstanceOf(u, "Int"))
5347 then {
54- let y = x
55- y
48+ let v = u
49+ v
5650 }
5751 else 0
5852 }
5953
6054
61-func A (B,k,C,D) = {
62- let E = value(blockInfoByHeight((C - 1)))
63- let F = sha256(((base58'items' + k) + value(E.vrf)))
64- (toInt(F, D) % B)
55+func x (y,k,z,A) = {
56+ let B = value(blockInfoByHeight((z - 1)))
57+ let C = sha256(((base58'items' + k) + value(B.vrf)))
58+ (toInt(C, A) % y)
6559 }
6660
6761
68-func G (H,I) = {
69- let J = A(6, H, I, 1)
70-q[J]
62+func D (E,F) = {
63+ let G = x(6, E, F, 1)
64+q[G]
7165 }
7266
7367
74-func K (k,I) = {
75- let J = A(6, k, I, 2)
76-o[J]
68+func H (k,F) = {
69+ let G = x(6, k, F, 2)
70+o[G]
7771 }
7872
7973
80-func L (j,w) = {
81- let x = getString(j, w)
82- if ($isInstanceOf(x, "String"))
74+func I (i,t) = {
75+ let u = getString(i, t)
76+ if ($isInstanceOf(u, "String"))
8377 then {
84- let y = x
85- y
78+ let v = u
79+ v
8680 }
8781 else ""
8882 }
8983
9084
91-func M () = Address(fromBase58String(v("static_oracleAddress")))
85+func J () = Address(fromBase58String(s("static_oracleAddress")))
9286
9387
94-func N () = Address(fromBase58String(L(M(), "static_breederAddress")))
88+func K () = Address(fromBase58String(I(J(), "static_breederAddress")))
9589
9690
97-func O () = fromBase58String(L(M(), "static_eggAssetId"))
91+func L () = fromBase58String(I(J(), "static_eggAssetId"))
9892
9993
100-func P () = L(M(), "static_trustedContracts")
94+func M () = I(J(), "static_trustedContracts")
10195
10296
103-func Q (R) = {
104- let x = R
105- if ($isInstanceOf(x, "String"))
97+func N (O) = {
98+ let u = O
99+ if ($isInstanceOf(u, "String"))
106100 then {
107- let S = x
108- S
101+ let P = u
102+ P
109103 }
110104 else throw("wrong type, expected: String")
111105 }
112106
113107
114-func T (R) = {
115- let x = R
116- if ($isInstanceOf(x, "Int"))
108+func Q (O) = {
109+ let u = O
110+ if ($isInstanceOf(u, "Int"))
117111 then {
118- let U = x
119- U
112+ let R = u
113+ R
120114 }
121115 else throw("wrong type, expected: Int")
122116 }
123117
124118
125-func V (W,X,Y) = ((take(W, (X - 1)) + Y) + takeRight(W, (16 - X)))
119+func S (T,U,V) = ((take(T, (U - 1)) + V) + takeRight(T, (16 - U)))
126120
127121
128-func Z (b,e) = {
129- let aa = z(d(b, e))
130- let ab = 240
131- if ((height > (aa + ab)))
122+func W (b,e) = {
123+ let X = w(d(b, e))
124+ let Y = 240
125+ if ((height > (X + Y)))
132126 then false
133127 else true
134128 }
135129
136130
137-@Callable(ac)
138-func manipulateBoost (ad,g) = {
139- let ae = P()
140- let af = split(ae, ";")
141- let ag = toString(ac.caller)
142- if ((indexOf(af, ag) == unit))
131+@Callable(Z)
132+func manipulateBoost (aa,g) = {
133+ let ab = M()
134+ let ac = split(ab, ";")
135+ let ad = toString(Z.caller)
136+ if ((indexOf(ac, ad) == unit))
143137 then throw("This smart contract can't manipulate the boost!")
144138 else {
145- let w = h(g)
146- let ah = z(w)
147- let ai = (ah + ad)
148- if ((0 > ai))
139+ let t = f(g)
140+ let ae = w(t)
141+ let af = (ae + aa)
142+ if ((0 > af))
149143 then throw("Something went wrong with boost, please contact the admins!")
150- else [IntegerEntry(w, ai)]
144+ else [IntegerEntry(t, af)]
151145 }
152146 }
153147
154148
155149
156-@Callable(ac)
157-func checkArtefactDetails (aj) = {
158- let ak = value(assetInfo(fromBase58String(aj)))
159- let W = value(ak.name)
160- if (if (containsElement(u, W))
161- then (ak.issuer == this)
150+@Callable(Z)
151+func manipulateBoostAccount (aa,i) = {
152+ let ab = M()
153+ let ac = split(ab, ";")
154+ let ad = toString(Z.caller)
155+ if ((indexOf(ac, ad) == unit))
156+ then throw("This smart contract can't manipulate the boost!")
157+ else {
158+ let t = h(i)
159+ let ae = w(t)
160+ let af = (ae + aa)
161+ if ((0 > af))
162+ then throw("Something went wrong with boost, please contact the admins!")
163+ else [IntegerEntry(t, af)]
164+ }
165+ }
166+
167+
168+
169+@Callable(Z)
170+func checkArtefactDetails (ag) = {
171+ let ah = value(assetInfo(fromBase58String(ag)))
172+ let T = value(ah.name)
173+ if (if (containsElement(r, T))
174+ then (ah.issuer == this)
162175 else false)
163- then $Tuple2(nil, W)
176+ then $Tuple2(nil, T)
164177 else throw("Invalid artefact")
165178 }
166179
167180
168181
169-@Callable(ac)
170-func configureOracle (al) = if ((ac.caller != this))
182+@Callable(Z)
183+func configureOracle (ai) = if ((Z.caller != this))
171184 then throw("admin only")
172- else [StringEntry("static_oracleAddress", al)]
185+ else [StringEntry("static_oracleAddress", ai)]
173186
174187
175188
176-@Callable(ac)
177-func calculateFarmingPowerBoost (g,j) = {
178- let am = if ((v(a("ART-LAKE", j)) != ""))
179- then 2
180- else 0
181- let an = if ((v(a("ART-XTREE", j)) != ""))
182- then 3
183- else 0
184- let ao = if ((v(f("ART-XSCARF", g)) != ""))
185- then 69
186- else 0
187- let ap = z(h(g))
188- let aq = (((am + an) + ao) + ap)
189- $Tuple2([IntegerEntry((g + "_last_boost"), aq)], aq)
189+@Callable(Z)
190+func calculateFarmingPowerBoost (g,i) = {
191+ let aj = w(f(g))
192+ let ak = w(h(i))
193+ let al = (aj + ak)
194+ $Tuple2([IntegerEntry((g + "_last_boost"), al)], al)
190195 }
191196
192197
193198
194-@Callable(ac)
195-func fixedGene (ar,as,at) = {
196- let au = value(ac.payments[0])
197- let av = toBase58String(value(au.assetId))
198- if ((au.amount != 1))
199+@Callable(Z)
200+func fixedGene (am,an,ao) = {
201+ let ap = value(Z.payments[0])
202+ let aq = toBase58String(value(ap.assetId))
203+ if ((ap.amount != 1))
199204 then throw("NFT is not attached")
200205 else {
201- let aw = Q(invoke(this, "checkArtefactDetails", [av], nil))
202- if ((aw == aw))
203- then if ((aw != "ART-FIXGENE"))
206+ let ar = N(invoke(this, "checkArtefactDetails", [aq], nil))
207+ if ((ar == ar))
208+ then if ((ar != "ART-FIXGENE"))
204209 then throw("You need to attach a ART-FIXGENE artefact")
205210 else {
206- let k = fromBase58String(ar)
207- let ax = i(toString(ac.caller), k)
208- let ay = getIntegerValue(N(), ax)
209- let az = Q(invoke(N(), "generateDuck", [ar, ay, as, at, "", 0], nil))
210- if ((az == az))
211+ let k = fromBase58String(am)
212+ let as = j(toString(Z.caller), k)
213+ let at = getIntegerValue(K(), as)
214+ let au = N(invoke(K(), "generateDuck", [am, at, an, ao, "", 0], nil))
215+ if ((au == au))
211216 then {
212- let aA = invoke(N(), "finishDuckHatchingItems", [ar, az], nil)
213- if ((aA == aA))
214- then [Burn(value(au.assetId), 1)]
217+ let av = invoke(K(), "finishDuckHatchingItems", [am, au], nil)
218+ if ((av == av))
219+ then [Burn(value(ap.assetId), 1)]
215220 else throw("Strict value is not equal to itself.")
216221 }
217222 else throw("Strict value is not equal to itself.")
222227
223228
224229
225-@Callable(ac)
226-func freeGene (ar) = {
227- let au = value(ac.payments[0])
228- let av = toBase58String(value(au.assetId))
229- if ((au.amount != 1))
230+@Callable(Z)
231+func freeGene (am) = {
232+ let ap = value(Z.payments[0])
233+ let aq = toBase58String(value(ap.assetId))
234+ if ((ap.amount != 1))
230235 then throw("NFT is not attached")
231236 else {
232- let aw = Q(invoke(this, "checkArtefactDetails", [av], nil))
233- if ((aw == aw))
234- then if ((aw != "ART-FREEGENE"))
237+ let ar = N(invoke(this, "checkArtefactDetails", [aq], nil))
238+ if ((ar == ar))
239+ then if ((ar != "ART-FREEGENE"))
235240 then throw("You need to attach a ART-FREEGENE artefact")
236241 else {
237- let k = fromBase58String(ar)
238- let ax = i(toString(ac.caller), k)
239- let ay = getIntegerValue(N(), ax)
240- let aB = K(k, ay)
241- let aC = A(7, k, ay, 3)
242- let az = Q(invoke(N(), "generateDuck", [ar, ay, 0, 0, aB, aC], nil))
243- if ((az == az))
242+ let k = fromBase58String(am)
243+ let as = j(toString(Z.caller), k)
244+ let at = getIntegerValue(K(), as)
245+ let aw = H(k, at)
246+ let ax = x(7, k, at, 3)
247+ let au = N(invoke(K(), "generateDuck", [am, at, 0, 0, aw, ax], nil))
248+ if ((au == au))
244249 then {
245- let aA = invoke(N(), "finishDuckHatchingItems", [ar, az], nil)
246- if ((aA == aA))
247- then [Burn(value(au.assetId), 1)]
250+ let av = invoke(K(), "finishDuckHatchingItems", [am, au], nil)
251+ if ((av == av))
252+ then [Burn(value(ap.assetId), 1)]
248253 else throw("Strict value is not equal to itself.")
249254 }
250255 else throw("Strict value is not equal to itself.")
255260
256261
257262
258-@Callable(ac)
263+@Callable(Z)
259264 func copyDuck () = {
260- let au = value(ac.payments[0])
261- let aD = value(ac.payments[1])
262- let av = toBase58String(value(au.assetId))
263- let aE = T(invoke(N(), "validateAndGetChildren", [av], nil))
264- if ((aE == aE))
265- then if (if ((au.amount != 1))
265+ let ap = value(Z.payments[0])
266+ let ay = value(Z.payments[1])
267+ let aq = toBase58String(value(ap.assetId))
268+ let az = Q(invoke(K(), "validateAndGetChildren", [aq], nil))
269+ if ((az == az))
270+ then if (if ((ap.amount != 1))
266271 then true
267- else (aD.amount != 1))
272+ else (ay.amount != 1))
268273 then throw("NFT is not attached")
269274 else {
270- let aw = Q(invoke(this, "checkArtefactDetails", [toBase58String(value(aD.assetId))], nil))
271- if ((aw == aw))
272- then if ((aw != "ART-MIRROR"))
275+ let ar = N(invoke(this, "checkArtefactDetails", [toBase58String(value(ay.assetId))], nil))
276+ if ((ar == ar))
277+ then if ((ar != "ART-MIRROR"))
273278 then throw("You need to attach a ART-MIRROR artefact")
274279 else {
275- let aF = value(assetInfo(value(au.assetId)))
276- let aG = split(aF.name, "")
277- if (if ((aG[14] == "G"))
280+ let aA = value(assetInfo(value(ap.assetId)))
281+ let aB = split(aA.name, "")
282+ if (if ((aB[14] == "G"))
278283 then true
279- else (aG[14] == "J"))
284+ else (aB[14] == "J"))
280285 then throw("You can't mirror this duck")
281286 else {
282- let aH = aF.name
283- let aA = invoke(N(), "createDuckSpecialGenes", [ac.caller.bytes, aH, aE], nil)
284- if ((aA == aA))
285- then [ScriptTransfer(ac.caller, 1, au.assetId), Burn(value(aD.assetId), 1)]
287+ let aC = aA.name
288+ let av = invoke(K(), "createDuckSpecialGenes", [Z.caller.bytes, aC, az], nil)
289+ if ((av == av))
290+ then [ScriptTransfer(Z.caller, 1, ap.assetId), Burn(value(ay.assetId), 1)]
286291 else throw("Strict value is not equal to itself.")
287292 }
288293 }
293298
294299
295300
296-@Callable(ac)
297-func wearItemToDuck () = {
298- let au = value(ac.payments[0])
299- let aD = value(ac.payments[1])
300- let g = toBase58String(value(au.assetId))
301- let aI = toBase58String(value(aD.assetId))
302- if (if ((au.amount != 1))
301+@Callable(Z)
302+func addArteFactToDuck () = {
303+ let ap = value(Z.payments[0])
304+ let ay = value(Z.payments[1])
305+ let aq = toBase58String(value(ap.assetId))
306+ if (if ((ap.amount != 1))
303307 then true
304- else (aD.amount != 1))
308+ else (ay.amount != 1))
305309 then throw("NFT is not attached")
306310 else {
307- let aE = T(invoke(N(), "validateAndGetChildren", [g], nil))
308- if ((aE == aE))
309- then {
310- let b = Q(invoke(this, "checkArtefactDetails", [aI], nil))
311- if ((b == b))
312- then if ((b != "ART-XSCARF"))
313- then throw("You need to attach a ART-XSCARF artefact")
314- else {
315- let e = v(f(b, g))
316- if ((e == ""))
317- then [StringEntry(f(b, g), aI), ScriptTransfer(ac.caller, 1, au.assetId)]
318- else throw(("Duck is already wearing a " + b))
319- }
320- else throw("Strict value is not equal to itself.")
321- }
322- else throw("Strict value is not equal to itself.")
323- }
324- }
325-
326-
327-
328-@Callable(ac)
329-func addArteFactToDuck () = {
330- let au = value(ac.payments[0])
331- let aD = value(ac.payments[1])
332- let av = toBase58String(value(au.assetId))
333- if (if ((au.amount != 1))
334- then true
335- else (aD.amount != 1))
336- then throw("NFT is not attached")
337- else {
338- let aE = T(invoke(N(), "validateAndGetChildren", [av], nil))
339- if ((aE == aE))
340- then if ((aE == 0))
311+ let az = Q(invoke(K(), "validateAndGetChildren", [aq], nil))
312+ if ((az == az))
313+ then if ((az == 0))
341314 then throw("You can only pick a sterile NFT-duck")
342315 else {
343- let aw = Q(invoke(this, "checkArtefactDetails", [toBase58String(value(aD.assetId))], nil))
344- if ((aw == aw))
345- then if (if ((aw != "ART-XHAT"))
346- then (aw != "ART-POMP")
316+ let ar = N(invoke(this, "checkArtefactDetails", [toBase58String(value(ay.assetId))], nil))
317+ if ((ar == ar))
318+ then if (if ((ar != "ART-XHAT"))
319+ then (ar != "ART-POMP")
347320 else false)
348321 then throw("You need to attach a ART-XHAT or ART-POMP artefact")
349322 else {
350- let aF = value(assetInfo(value(au.assetId)))
351- let aG = split(aF.name, "")
352- if (if ((aG[14] == "G"))
323+ let aA = value(assetInfo(value(ap.assetId)))
324+ let aB = split(aA.name, "")
325+ if (if ((aB[14] == "G"))
353326 then true
354- else (aG[14] == "J"))
327+ else (aB[14] == "J"))
355328 then throw("You can't mirror this duck")
356- else if (if ((aG[5] == "S"))
329+ else if (if ((aB[5] == "S"))
357330 then true
358- else (aG[5] == "T"))
331+ else (aB[5] == "T"))
359332 then throw("you already attached a artefact")
360333 else {
361- let Y = if ((aw == "ART-XHAT"))
334+ let V = if ((ar == "ART-XHAT"))
362335 then "T"
363- else if ((aw == "ART-POMP"))
336+ else if ((ar == "ART-POMP"))
364337 then "S"
365338 else throw("No char defined")
366- let aJ = aF.name
367- let aK = Q(invoke(N(), "getGenFromName", [aJ], nil))
368- if ((aK == aK))
339+ let aD = aA.name
340+ let aE = N(invoke(K(), "getGenFromName", [aD], nil))
341+ if ((aE == aE))
369342 then {
370- let aH = V(aJ, 6, Y)
371- let aA = invoke(N(), "createDuckSpecialGenes", [ac.caller.bytes, aH, aE], nil)
372- if ((aA == aA))
343+ let aC = S(aD, 6, V)
344+ let av = invoke(K(), "createDuckSpecialGenes", [Z.caller.bytes, aC, az], nil)
345+ if ((av == av))
373346 then {
374- let aL = invoke(N(), "reduceRarity", [av, aK], nil)
375- if ((aL == aL))
376- then [Burn(value(au.assetId), 1), Burn(value(aD.assetId), 1)]
347+ let aF = invoke(K(), "reduceRarity", [aq, aE], nil)
348+ if ((aF == aF))
349+ then [Burn(value(ap.assetId), 1), Burn(value(ay.assetId), 1)]
377350 else throw("Strict value is not equal to itself.")
378351 }
379352 else throw("Strict value is not equal to itself.")
389362
390363
391364
392-@Callable(ac)
393-func stakeItem () = if (if ((size(ac.payments) == 1))
394- then (ac.payments[0].amount == 1)
395- else false)
396- then {
397- let aj = value(ac.payments[0].assetId)
398- let b = Q(invoke(this, "checkArtefactDetails", [toBase58String(aj)], nil))
399- if ((b == b))
400- then if (containsElement(t, b))
401- then if (if (containsElement(r, b))
402- then Z(b, toBase58String(aj))
403- else false)
404- then throw("Item can't be staked yet, it's in cooldown")
405- else {
406- let aM = toString(ac.caller)
407- let e = v(a(b, aM))
408- if ((e == ""))
409- then [StringEntry(a(b, aM), toBase58String(aj))]
410- else throw(("You are already staking " + b))
411- }
412- else throw("You can't stake this artafect")
413- else throw("Strict value is not equal to itself.")
414- }
415- else throw("Invalid payment")
416-
417-
418-
419-@Callable(ac)
420-func unstakeItem (b) = if (containsElement(u, b))
421- then {
422- let aM = toString(ac.caller)
423- let e = v(a(b, aM))
424- if ((e == ""))
425- then throw(("You didnt stake " + b))
426- else [IntegerEntry(d(b, e), height), ScriptTransfer(ac.caller, 1, fromBase58String(e)), DeleteEntry(a(b, aM))]
427- }
428- else throw("This artefact doesn't exist")
429-
430-
431-
432-@Callable(ac)
365+@Callable(Z)
433366 func preInit () = [IntegerEntry("static_ART-LAKE_farmingSlots", 200), IntegerEntry("static_ART-LAKE_farmingBoost", 2), IntegerEntry("static_ART-HOUSE_farmingSlots", 4), IntegerEntry("static_ART-HOUSE_farmingBoost", 30), IntegerEntry("static_ART-BIGHOUSE_farmingSlots", 10), IntegerEntry("static_ART-BIGHOUSE_farmingBoost", 15)]
434367
435368
436369
437-@Callable(ac)
438-func issueArtefact (aN,aO) = if ((ac.caller == this))
370+@Callable(Z)
371+func issueArtefact (aG,aH) = if ((Z.caller == this))
439372 then {
440- let ar = toBase58String(ac.transactionId)
441- let j = Address(fromBase58String(aO))
442- let aw = Issue(aN, "NFT artefact of Waves Ducks game. Drop #2.", 1, 0, false, unit, 0)
443- let e = calculateAssetId(aw)
444-[aw, StringEntry((("artefact_" + toBase58String(e)) + "_type"), aN), ScriptTransfer(j, 1, e)]
373+ let am = toBase58String(Z.transactionId)
374+ let i = Address(fromBase58String(aH))
375+ let ar = Issue(aG, "NFT artefact of Waves Ducks game. Drop #2.", 1, 0, false, unit, 0)
376+ let e = calculateAssetId(ar)
377+[ar, StringEntry((("artefact_" + toBase58String(e)) + "_type"), aG), ScriptTransfer(i, 1, e)]
445378 }
446379 else throw("admin only")
447380
448381
449382
450-@Callable(ac)
451-func setLock (aP) = if ((ac.caller == this))
452- then [IntegerEntry("global_locked", aP)]
383+@Callable(Z)
384+func setLock (aI) = if ((Z.caller == this))
385+ then [IntegerEntry("global_locked", aI)]
453386 else throw("admin only")
454387
455388
456389
457-@Callable(ac)
390+@Callable(Z)
458391 func buyArtefact () = if ((lastBlock.timestamp > 1639742400000))
459392 then throw("There are no active sales now... ")
460- else if ((z("global_locked") > 0))
393+ else if ((w("global_locked") > 0))
461394 then throw("contract is temporarily locked")
462- else if ((z("global_artAmount") >= n))
395+ else if ((w("global_artAmount") >= n))
463396 then throw("SOLDOUT!!! Hurray!")
464397 else if (if ((1639605600000 > lastBlock.timestamp))
465- then (ac.caller != Address(l))
398+ then (Z.caller != Address(l))
466399 else false)
467400 then throw("Too early...")
468401 else {
469- let au = value(ac.payments[0])
470- if ((au.assetId != O()))
471- then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(O())))
472- else if ((m > au.amount))
402+ let ap = value(Z.payments[0])
403+ if ((ap.assetId != L()))
404+ then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(L())))
405+ else if ((m > ap.amount))
473406 then throw(("To hatch a duck you currently need the following amount of EGGlets: " + toString(m)))
474- else [StringEntry((((toString(ac.caller) + "_") + toBase58String(ac.transactionId)) + "_status"), "started"), IntegerEntry((((toString(ac.caller) + "_") + toBase58String(ac.transactionId)) + "_finishHeight"), (height + 2)), IntegerEntry("global_artAmount", (z("global_artAmount") + 1))]
407+ else [StringEntry((((toString(Z.caller) + "_") + toBase58String(Z.transactionId)) + "_status"), "started"), IntegerEntry((((toString(Z.caller) + "_") + toBase58String(Z.transactionId)) + "_finishHeight"), (height + 2)), IntegerEntry("global_artAmount", (w("global_artAmount") + 1))]
475408 }
476409
477410
478411
479-@Callable(ac)
480-func setGlobalArtAmount (aQ) = if (if ((ac.caller == this))
412+@Callable(Z)
413+func setGlobalArtAmount (aJ) = if (if ((Z.caller == this))
481414 then true
482- else (ac.caller == Address(l)))
483- then [IntegerEntry("global_artAmount", aQ)]
415+ else (Z.caller == Address(l)))
416+ then [IntegerEntry("global_artAmount", aJ)]
484417 else throw("Permission denied")
485418
486419
487420
488-@Callable(ac)
489-func claimArtefact (aR) = {
490- let k = fromBase58String(aR)
491- let aS = (((toString(ac.caller) + "_") + aR) + "_status")
492- let aT = (((toString(ac.caller) + "_") + aR) + "_finishHeight")
493- if ((getStringValue(aS) != "started"))
421+@Callable(Z)
422+func claimArtefact (aK) = {
423+ let k = fromBase58String(aK)
424+ let aL = (((toString(Z.caller) + "_") + aK) + "_status")
425+ let aM = (((toString(Z.caller) + "_") + aK) + "_finishHeight")
426+ if ((getStringValue(aL) != "started"))
494427 then throw("claimed already")
495- else if ((getIntegerValue(aT) > height))
428+ else if ((getIntegerValue(aM) > height))
496429 then throw("you cannot claim yet")
497430 else {
498- let aU = G(k, getIntegerValue(aT))
499- let ak = Issue(aU, "Artefact of Waves Ducks metaverse.", 1, 0, false, unit, getIntegerValue(aT))
500- let aj = calculateAssetId(ak)
501-[StringEntry(aS, aU), StringEntry((((toString(ac.caller) + "_") + aR) + "_artefactId"), toBase58String(aj)), StringEntry((toBase58String(aj) + "_type"), aU), ak, ScriptTransfer(ac.caller, 1, aj)]
431+ let aN = D(k, getIntegerValue(aM))
432+ let ah = Issue(aN, "Artefact of Waves Ducks metaverse.", 1, 0, false, unit, getIntegerValue(aM))
433+ let ag = calculateAssetId(ah)
434+[StringEntry(aL, aN), StringEntry((((toString(Z.caller) + "_") + aK) + "_artefactId"), toBase58String(ag)), StringEntry((toBase58String(ag) + "_type"), aN), ah, ScriptTransfer(Z.caller, 1, ag)]
502435 }
503436 }
504437
505438
506-@Verifier(aV)
507-func aW () = sigVerify(aV.bodyBytes, aV.proofs[0], aV.senderPublicKey)
439+@Verifier(aO)
440+func aP () = sigVerify(aO.bodyBytes, aO.proofs[0], aO.senderPublicKey)
508441
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func a (b,c) = (((b + "_") + c) + "_owner")
55
66
77 func d (b,e) = (((b + "_") + e) + "_unstake_height")
88
99
10-func f (b,g) = (((b + "_") + g) + "_duck")
10+func f (g) = (g + "_duck_external_boost")
1111
1212
13-func h (g) = (g + "_duck_external_boost")
13+func h (i) = (i + "_user_external_boost")
1414
1515
16-func i (j,k) = (((j + "_") + toBase58String(k)) + "_fh")
16+func j (i,k) = (((i + "_") + toBase58String(k)) + "_fh")
1717
1818
1919 let l = base58'3P44yqcpfhPF2iC1nptm2ZJCTaN7VYhz9og'
2020
2121 let m = (3 * 100000000)
2222
2323 let n = (301 + 600)
2424
2525 let o = ["A", "B", "C", "D", "E"]
2626
2727 let p = ["ART-LAKE", "ART-HOUSE", "ART-BIGHOUSE", "ART-FIXGENE", "ART-FREEGENE", "ART-MIRROR", "ART-POMP", "ART-CAPE", "ART-HAT", "ART-CUSTOMDUCK"]
2828
2929 let q = ["ART-XMISTL", "ART-XHAT", "ART-XSCARF", "ART-XSWEATER", "ART-XSOCK", "ART-XTREE"]
3030
31-let r = ["ART-LAKE", "ART-XTREE"]
31+let r = (q ++ p)
3232
33-let s = ["ART-XMISTL"]
34-
35-let t = (s ++ r)
36-
37-let u = (q ++ p)
38-
39-func v (w) = {
40- let x = getString(this, w)
41- if ($isInstanceOf(x, "String"))
33+func s (t) = {
34+ let u = getString(this, t)
35+ if ($isInstanceOf(u, "String"))
4236 then {
43- let y = x
44- y
37+ let v = u
38+ v
4539 }
4640 else ""
4741 }
4842
4943
50-func z (w) = {
51- let x = getInteger(this, w)
52- if ($isInstanceOf(x, "Int"))
44+func w (t) = {
45+ let u = getInteger(this, t)
46+ if ($isInstanceOf(u, "Int"))
5347 then {
54- let y = x
55- y
48+ let v = u
49+ v
5650 }
5751 else 0
5852 }
5953
6054
61-func A (B,k,C,D) = {
62- let E = value(blockInfoByHeight((C - 1)))
63- let F = sha256(((base58'items' + k) + value(E.vrf)))
64- (toInt(F, D) % B)
55+func x (y,k,z,A) = {
56+ let B = value(blockInfoByHeight((z - 1)))
57+ let C = sha256(((base58'items' + k) + value(B.vrf)))
58+ (toInt(C, A) % y)
6559 }
6660
6761
68-func G (H,I) = {
69- let J = A(6, H, I, 1)
70-q[J]
62+func D (E,F) = {
63+ let G = x(6, E, F, 1)
64+q[G]
7165 }
7266
7367
74-func K (k,I) = {
75- let J = A(6, k, I, 2)
76-o[J]
68+func H (k,F) = {
69+ let G = x(6, k, F, 2)
70+o[G]
7771 }
7872
7973
80-func L (j,w) = {
81- let x = getString(j, w)
82- if ($isInstanceOf(x, "String"))
74+func I (i,t) = {
75+ let u = getString(i, t)
76+ if ($isInstanceOf(u, "String"))
8377 then {
84- let y = x
85- y
78+ let v = u
79+ v
8680 }
8781 else ""
8882 }
8983
9084
91-func M () = Address(fromBase58String(v("static_oracleAddress")))
85+func J () = Address(fromBase58String(s("static_oracleAddress")))
9286
9387
94-func N () = Address(fromBase58String(L(M(), "static_breederAddress")))
88+func K () = Address(fromBase58String(I(J(), "static_breederAddress")))
9589
9690
97-func O () = fromBase58String(L(M(), "static_eggAssetId"))
91+func L () = fromBase58String(I(J(), "static_eggAssetId"))
9892
9993
100-func P () = L(M(), "static_trustedContracts")
94+func M () = I(J(), "static_trustedContracts")
10195
10296
103-func Q (R) = {
104- let x = R
105- if ($isInstanceOf(x, "String"))
97+func N (O) = {
98+ let u = O
99+ if ($isInstanceOf(u, "String"))
106100 then {
107- let S = x
108- S
101+ let P = u
102+ P
109103 }
110104 else throw("wrong type, expected: String")
111105 }
112106
113107
114-func T (R) = {
115- let x = R
116- if ($isInstanceOf(x, "Int"))
108+func Q (O) = {
109+ let u = O
110+ if ($isInstanceOf(u, "Int"))
117111 then {
118- let U = x
119- U
112+ let R = u
113+ R
120114 }
121115 else throw("wrong type, expected: Int")
122116 }
123117
124118
125-func V (W,X,Y) = ((take(W, (X - 1)) + Y) + takeRight(W, (16 - X)))
119+func S (T,U,V) = ((take(T, (U - 1)) + V) + takeRight(T, (16 - U)))
126120
127121
128-func Z (b,e) = {
129- let aa = z(d(b, e))
130- let ab = 240
131- if ((height > (aa + ab)))
122+func W (b,e) = {
123+ let X = w(d(b, e))
124+ let Y = 240
125+ if ((height > (X + Y)))
132126 then false
133127 else true
134128 }
135129
136130
137-@Callable(ac)
138-func manipulateBoost (ad,g) = {
139- let ae = P()
140- let af = split(ae, ";")
141- let ag = toString(ac.caller)
142- if ((indexOf(af, ag) == unit))
131+@Callable(Z)
132+func manipulateBoost (aa,g) = {
133+ let ab = M()
134+ let ac = split(ab, ";")
135+ let ad = toString(Z.caller)
136+ if ((indexOf(ac, ad) == unit))
143137 then throw("This smart contract can't manipulate the boost!")
144138 else {
145- let w = h(g)
146- let ah = z(w)
147- let ai = (ah + ad)
148- if ((0 > ai))
139+ let t = f(g)
140+ let ae = w(t)
141+ let af = (ae + aa)
142+ if ((0 > af))
149143 then throw("Something went wrong with boost, please contact the admins!")
150- else [IntegerEntry(w, ai)]
144+ else [IntegerEntry(t, af)]
151145 }
152146 }
153147
154148
155149
156-@Callable(ac)
157-func checkArtefactDetails (aj) = {
158- let ak = value(assetInfo(fromBase58String(aj)))
159- let W = value(ak.name)
160- if (if (containsElement(u, W))
161- then (ak.issuer == this)
150+@Callable(Z)
151+func manipulateBoostAccount (aa,i) = {
152+ let ab = M()
153+ let ac = split(ab, ";")
154+ let ad = toString(Z.caller)
155+ if ((indexOf(ac, ad) == unit))
156+ then throw("This smart contract can't manipulate the boost!")
157+ else {
158+ let t = h(i)
159+ let ae = w(t)
160+ let af = (ae + aa)
161+ if ((0 > af))
162+ then throw("Something went wrong with boost, please contact the admins!")
163+ else [IntegerEntry(t, af)]
164+ }
165+ }
166+
167+
168+
169+@Callable(Z)
170+func checkArtefactDetails (ag) = {
171+ let ah = value(assetInfo(fromBase58String(ag)))
172+ let T = value(ah.name)
173+ if (if (containsElement(r, T))
174+ then (ah.issuer == this)
162175 else false)
163- then $Tuple2(nil, W)
176+ then $Tuple2(nil, T)
164177 else throw("Invalid artefact")
165178 }
166179
167180
168181
169-@Callable(ac)
170-func configureOracle (al) = if ((ac.caller != this))
182+@Callable(Z)
183+func configureOracle (ai) = if ((Z.caller != this))
171184 then throw("admin only")
172- else [StringEntry("static_oracleAddress", al)]
185+ else [StringEntry("static_oracleAddress", ai)]
173186
174187
175188
176-@Callable(ac)
177-func calculateFarmingPowerBoost (g,j) = {
178- let am = if ((v(a("ART-LAKE", j)) != ""))
179- then 2
180- else 0
181- let an = if ((v(a("ART-XTREE", j)) != ""))
182- then 3
183- else 0
184- let ao = if ((v(f("ART-XSCARF", g)) != ""))
185- then 69
186- else 0
187- let ap = z(h(g))
188- let aq = (((am + an) + ao) + ap)
189- $Tuple2([IntegerEntry((g + "_last_boost"), aq)], aq)
189+@Callable(Z)
190+func calculateFarmingPowerBoost (g,i) = {
191+ let aj = w(f(g))
192+ let ak = w(h(i))
193+ let al = (aj + ak)
194+ $Tuple2([IntegerEntry((g + "_last_boost"), al)], al)
190195 }
191196
192197
193198
194-@Callable(ac)
195-func fixedGene (ar,as,at) = {
196- let au = value(ac.payments[0])
197- let av = toBase58String(value(au.assetId))
198- if ((au.amount != 1))
199+@Callable(Z)
200+func fixedGene (am,an,ao) = {
201+ let ap = value(Z.payments[0])
202+ let aq = toBase58String(value(ap.assetId))
203+ if ((ap.amount != 1))
199204 then throw("NFT is not attached")
200205 else {
201- let aw = Q(invoke(this, "checkArtefactDetails", [av], nil))
202- if ((aw == aw))
203- then if ((aw != "ART-FIXGENE"))
206+ let ar = N(invoke(this, "checkArtefactDetails", [aq], nil))
207+ if ((ar == ar))
208+ then if ((ar != "ART-FIXGENE"))
204209 then throw("You need to attach a ART-FIXGENE artefact")
205210 else {
206- let k = fromBase58String(ar)
207- let ax = i(toString(ac.caller), k)
208- let ay = getIntegerValue(N(), ax)
209- let az = Q(invoke(N(), "generateDuck", [ar, ay, as, at, "", 0], nil))
210- if ((az == az))
211+ let k = fromBase58String(am)
212+ let as = j(toString(Z.caller), k)
213+ let at = getIntegerValue(K(), as)
214+ let au = N(invoke(K(), "generateDuck", [am, at, an, ao, "", 0], nil))
215+ if ((au == au))
211216 then {
212- let aA = invoke(N(), "finishDuckHatchingItems", [ar, az], nil)
213- if ((aA == aA))
214- then [Burn(value(au.assetId), 1)]
217+ let av = invoke(K(), "finishDuckHatchingItems", [am, au], nil)
218+ if ((av == av))
219+ then [Burn(value(ap.assetId), 1)]
215220 else throw("Strict value is not equal to itself.")
216221 }
217222 else throw("Strict value is not equal to itself.")
218223 }
219224 else throw("Strict value is not equal to itself.")
220225 }
221226 }
222227
223228
224229
225-@Callable(ac)
226-func freeGene (ar) = {
227- let au = value(ac.payments[0])
228- let av = toBase58String(value(au.assetId))
229- if ((au.amount != 1))
230+@Callable(Z)
231+func freeGene (am) = {
232+ let ap = value(Z.payments[0])
233+ let aq = toBase58String(value(ap.assetId))
234+ if ((ap.amount != 1))
230235 then throw("NFT is not attached")
231236 else {
232- let aw = Q(invoke(this, "checkArtefactDetails", [av], nil))
233- if ((aw == aw))
234- then if ((aw != "ART-FREEGENE"))
237+ let ar = N(invoke(this, "checkArtefactDetails", [aq], nil))
238+ if ((ar == ar))
239+ then if ((ar != "ART-FREEGENE"))
235240 then throw("You need to attach a ART-FREEGENE artefact")
236241 else {
237- let k = fromBase58String(ar)
238- let ax = i(toString(ac.caller), k)
239- let ay = getIntegerValue(N(), ax)
240- let aB = K(k, ay)
241- let aC = A(7, k, ay, 3)
242- let az = Q(invoke(N(), "generateDuck", [ar, ay, 0, 0, aB, aC], nil))
243- if ((az == az))
242+ let k = fromBase58String(am)
243+ let as = j(toString(Z.caller), k)
244+ let at = getIntegerValue(K(), as)
245+ let aw = H(k, at)
246+ let ax = x(7, k, at, 3)
247+ let au = N(invoke(K(), "generateDuck", [am, at, 0, 0, aw, ax], nil))
248+ if ((au == au))
244249 then {
245- let aA = invoke(N(), "finishDuckHatchingItems", [ar, az], nil)
246- if ((aA == aA))
247- then [Burn(value(au.assetId), 1)]
250+ let av = invoke(K(), "finishDuckHatchingItems", [am, au], nil)
251+ if ((av == av))
252+ then [Burn(value(ap.assetId), 1)]
248253 else throw("Strict value is not equal to itself.")
249254 }
250255 else throw("Strict value is not equal to itself.")
251256 }
252257 else throw("Strict value is not equal to itself.")
253258 }
254259 }
255260
256261
257262
258-@Callable(ac)
263+@Callable(Z)
259264 func copyDuck () = {
260- let au = value(ac.payments[0])
261- let aD = value(ac.payments[1])
262- let av = toBase58String(value(au.assetId))
263- let aE = T(invoke(N(), "validateAndGetChildren", [av], nil))
264- if ((aE == aE))
265- then if (if ((au.amount != 1))
265+ let ap = value(Z.payments[0])
266+ let ay = value(Z.payments[1])
267+ let aq = toBase58String(value(ap.assetId))
268+ let az = Q(invoke(K(), "validateAndGetChildren", [aq], nil))
269+ if ((az == az))
270+ then if (if ((ap.amount != 1))
266271 then true
267- else (aD.amount != 1))
272+ else (ay.amount != 1))
268273 then throw("NFT is not attached")
269274 else {
270- let aw = Q(invoke(this, "checkArtefactDetails", [toBase58String(value(aD.assetId))], nil))
271- if ((aw == aw))
272- then if ((aw != "ART-MIRROR"))
275+ let ar = N(invoke(this, "checkArtefactDetails", [toBase58String(value(ay.assetId))], nil))
276+ if ((ar == ar))
277+ then if ((ar != "ART-MIRROR"))
273278 then throw("You need to attach a ART-MIRROR artefact")
274279 else {
275- let aF = value(assetInfo(value(au.assetId)))
276- let aG = split(aF.name, "")
277- if (if ((aG[14] == "G"))
280+ let aA = value(assetInfo(value(ap.assetId)))
281+ let aB = split(aA.name, "")
282+ if (if ((aB[14] == "G"))
278283 then true
279- else (aG[14] == "J"))
284+ else (aB[14] == "J"))
280285 then throw("You can't mirror this duck")
281286 else {
282- let aH = aF.name
283- let aA = invoke(N(), "createDuckSpecialGenes", [ac.caller.bytes, aH, aE], nil)
284- if ((aA == aA))
285- then [ScriptTransfer(ac.caller, 1, au.assetId), Burn(value(aD.assetId), 1)]
287+ let aC = aA.name
288+ let av = invoke(K(), "createDuckSpecialGenes", [Z.caller.bytes, aC, az], nil)
289+ if ((av == av))
290+ then [ScriptTransfer(Z.caller, 1, ap.assetId), Burn(value(ay.assetId), 1)]
286291 else throw("Strict value is not equal to itself.")
287292 }
288293 }
289294 else throw("Strict value is not equal to itself.")
290295 }
291296 else throw("Strict value is not equal to itself.")
292297 }
293298
294299
295300
296-@Callable(ac)
297-func wearItemToDuck () = {
298- let au = value(ac.payments[0])
299- let aD = value(ac.payments[1])
300- let g = toBase58String(value(au.assetId))
301- let aI = toBase58String(value(aD.assetId))
302- if (if ((au.amount != 1))
301+@Callable(Z)
302+func addArteFactToDuck () = {
303+ let ap = value(Z.payments[0])
304+ let ay = value(Z.payments[1])
305+ let aq = toBase58String(value(ap.assetId))
306+ if (if ((ap.amount != 1))
303307 then true
304- else (aD.amount != 1))
308+ else (ay.amount != 1))
305309 then throw("NFT is not attached")
306310 else {
307- let aE = T(invoke(N(), "validateAndGetChildren", [g], nil))
308- if ((aE == aE))
309- then {
310- let b = Q(invoke(this, "checkArtefactDetails", [aI], nil))
311- if ((b == b))
312- then if ((b != "ART-XSCARF"))
313- then throw("You need to attach a ART-XSCARF artefact")
314- else {
315- let e = v(f(b, g))
316- if ((e == ""))
317- then [StringEntry(f(b, g), aI), ScriptTransfer(ac.caller, 1, au.assetId)]
318- else throw(("Duck is already wearing a " + b))
319- }
320- else throw("Strict value is not equal to itself.")
321- }
322- else throw("Strict value is not equal to itself.")
323- }
324- }
325-
326-
327-
328-@Callable(ac)
329-func addArteFactToDuck () = {
330- let au = value(ac.payments[0])
331- let aD = value(ac.payments[1])
332- let av = toBase58String(value(au.assetId))
333- if (if ((au.amount != 1))
334- then true
335- else (aD.amount != 1))
336- then throw("NFT is not attached")
337- else {
338- let aE = T(invoke(N(), "validateAndGetChildren", [av], nil))
339- if ((aE == aE))
340- then if ((aE == 0))
311+ let az = Q(invoke(K(), "validateAndGetChildren", [aq], nil))
312+ if ((az == az))
313+ then if ((az == 0))
341314 then throw("You can only pick a sterile NFT-duck")
342315 else {
343- let aw = Q(invoke(this, "checkArtefactDetails", [toBase58String(value(aD.assetId))], nil))
344- if ((aw == aw))
345- then if (if ((aw != "ART-XHAT"))
346- then (aw != "ART-POMP")
316+ let ar = N(invoke(this, "checkArtefactDetails", [toBase58String(value(ay.assetId))], nil))
317+ if ((ar == ar))
318+ then if (if ((ar != "ART-XHAT"))
319+ then (ar != "ART-POMP")
347320 else false)
348321 then throw("You need to attach a ART-XHAT or ART-POMP artefact")
349322 else {
350- let aF = value(assetInfo(value(au.assetId)))
351- let aG = split(aF.name, "")
352- if (if ((aG[14] == "G"))
323+ let aA = value(assetInfo(value(ap.assetId)))
324+ let aB = split(aA.name, "")
325+ if (if ((aB[14] == "G"))
353326 then true
354- else (aG[14] == "J"))
327+ else (aB[14] == "J"))
355328 then throw("You can't mirror this duck")
356- else if (if ((aG[5] == "S"))
329+ else if (if ((aB[5] == "S"))
357330 then true
358- else (aG[5] == "T"))
331+ else (aB[5] == "T"))
359332 then throw("you already attached a artefact")
360333 else {
361- let Y = if ((aw == "ART-XHAT"))
334+ let V = if ((ar == "ART-XHAT"))
362335 then "T"
363- else if ((aw == "ART-POMP"))
336+ else if ((ar == "ART-POMP"))
364337 then "S"
365338 else throw("No char defined")
366- let aJ = aF.name
367- let aK = Q(invoke(N(), "getGenFromName", [aJ], nil))
368- if ((aK == aK))
339+ let aD = aA.name
340+ let aE = N(invoke(K(), "getGenFromName", [aD], nil))
341+ if ((aE == aE))
369342 then {
370- let aH = V(aJ, 6, Y)
371- let aA = invoke(N(), "createDuckSpecialGenes", [ac.caller.bytes, aH, aE], nil)
372- if ((aA == aA))
343+ let aC = S(aD, 6, V)
344+ let av = invoke(K(), "createDuckSpecialGenes", [Z.caller.bytes, aC, az], nil)
345+ if ((av == av))
373346 then {
374- let aL = invoke(N(), "reduceRarity", [av, aK], nil)
375- if ((aL == aL))
376- then [Burn(value(au.assetId), 1), Burn(value(aD.assetId), 1)]
347+ let aF = invoke(K(), "reduceRarity", [aq, aE], nil)
348+ if ((aF == aF))
349+ then [Burn(value(ap.assetId), 1), Burn(value(ay.assetId), 1)]
377350 else throw("Strict value is not equal to itself.")
378351 }
379352 else throw("Strict value is not equal to itself.")
380353 }
381354 else throw("Strict value is not equal to itself.")
382355 }
383356 }
384357 else throw("Strict value is not equal to itself.")
385358 }
386359 else throw("Strict value is not equal to itself.")
387360 }
388361 }
389362
390363
391364
392-@Callable(ac)
393-func stakeItem () = if (if ((size(ac.payments) == 1))
394- then (ac.payments[0].amount == 1)
395- else false)
396- then {
397- let aj = value(ac.payments[0].assetId)
398- let b = Q(invoke(this, "checkArtefactDetails", [toBase58String(aj)], nil))
399- if ((b == b))
400- then if (containsElement(t, b))
401- then if (if (containsElement(r, b))
402- then Z(b, toBase58String(aj))
403- else false)
404- then throw("Item can't be staked yet, it's in cooldown")
405- else {
406- let aM = toString(ac.caller)
407- let e = v(a(b, aM))
408- if ((e == ""))
409- then [StringEntry(a(b, aM), toBase58String(aj))]
410- else throw(("You are already staking " + b))
411- }
412- else throw("You can't stake this artafect")
413- else throw("Strict value is not equal to itself.")
414- }
415- else throw("Invalid payment")
416-
417-
418-
419-@Callable(ac)
420-func unstakeItem (b) = if (containsElement(u, b))
421- then {
422- let aM = toString(ac.caller)
423- let e = v(a(b, aM))
424- if ((e == ""))
425- then throw(("You didnt stake " + b))
426- else [IntegerEntry(d(b, e), height), ScriptTransfer(ac.caller, 1, fromBase58String(e)), DeleteEntry(a(b, aM))]
427- }
428- else throw("This artefact doesn't exist")
429-
430-
431-
432-@Callable(ac)
365+@Callable(Z)
433366 func preInit () = [IntegerEntry("static_ART-LAKE_farmingSlots", 200), IntegerEntry("static_ART-LAKE_farmingBoost", 2), IntegerEntry("static_ART-HOUSE_farmingSlots", 4), IntegerEntry("static_ART-HOUSE_farmingBoost", 30), IntegerEntry("static_ART-BIGHOUSE_farmingSlots", 10), IntegerEntry("static_ART-BIGHOUSE_farmingBoost", 15)]
434367
435368
436369
437-@Callable(ac)
438-func issueArtefact (aN,aO) = if ((ac.caller == this))
370+@Callable(Z)
371+func issueArtefact (aG,aH) = if ((Z.caller == this))
439372 then {
440- let ar = toBase58String(ac.transactionId)
441- let j = Address(fromBase58String(aO))
442- let aw = Issue(aN, "NFT artefact of Waves Ducks game. Drop #2.", 1, 0, false, unit, 0)
443- let e = calculateAssetId(aw)
444-[aw, StringEntry((("artefact_" + toBase58String(e)) + "_type"), aN), ScriptTransfer(j, 1, e)]
373+ let am = toBase58String(Z.transactionId)
374+ let i = Address(fromBase58String(aH))
375+ let ar = Issue(aG, "NFT artefact of Waves Ducks game. Drop #2.", 1, 0, false, unit, 0)
376+ let e = calculateAssetId(ar)
377+[ar, StringEntry((("artefact_" + toBase58String(e)) + "_type"), aG), ScriptTransfer(i, 1, e)]
445378 }
446379 else throw("admin only")
447380
448381
449382
450-@Callable(ac)
451-func setLock (aP) = if ((ac.caller == this))
452- then [IntegerEntry("global_locked", aP)]
383+@Callable(Z)
384+func setLock (aI) = if ((Z.caller == this))
385+ then [IntegerEntry("global_locked", aI)]
453386 else throw("admin only")
454387
455388
456389
457-@Callable(ac)
390+@Callable(Z)
458391 func buyArtefact () = if ((lastBlock.timestamp > 1639742400000))
459392 then throw("There are no active sales now... ")
460- else if ((z("global_locked") > 0))
393+ else if ((w("global_locked") > 0))
461394 then throw("contract is temporarily locked")
462- else if ((z("global_artAmount") >= n))
395+ else if ((w("global_artAmount") >= n))
463396 then throw("SOLDOUT!!! Hurray!")
464397 else if (if ((1639605600000 > lastBlock.timestamp))
465- then (ac.caller != Address(l))
398+ then (Z.caller != Address(l))
466399 else false)
467400 then throw("Too early...")
468401 else {
469- let au = value(ac.payments[0])
470- if ((au.assetId != O()))
471- then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(O())))
472- else if ((m > au.amount))
402+ let ap = value(Z.payments[0])
403+ if ((ap.assetId != L()))
404+ then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(L())))
405+ else if ((m > ap.amount))
473406 then throw(("To hatch a duck you currently need the following amount of EGGlets: " + toString(m)))
474- else [StringEntry((((toString(ac.caller) + "_") + toBase58String(ac.transactionId)) + "_status"), "started"), IntegerEntry((((toString(ac.caller) + "_") + toBase58String(ac.transactionId)) + "_finishHeight"), (height + 2)), IntegerEntry("global_artAmount", (z("global_artAmount") + 1))]
407+ else [StringEntry((((toString(Z.caller) + "_") + toBase58String(Z.transactionId)) + "_status"), "started"), IntegerEntry((((toString(Z.caller) + "_") + toBase58String(Z.transactionId)) + "_finishHeight"), (height + 2)), IntegerEntry("global_artAmount", (w("global_artAmount") + 1))]
475408 }
476409
477410
478411
479-@Callable(ac)
480-func setGlobalArtAmount (aQ) = if (if ((ac.caller == this))
412+@Callable(Z)
413+func setGlobalArtAmount (aJ) = if (if ((Z.caller == this))
481414 then true
482- else (ac.caller == Address(l)))
483- then [IntegerEntry("global_artAmount", aQ)]
415+ else (Z.caller == Address(l)))
416+ then [IntegerEntry("global_artAmount", aJ)]
484417 else throw("Permission denied")
485418
486419
487420
488-@Callable(ac)
489-func claimArtefact (aR) = {
490- let k = fromBase58String(aR)
491- let aS = (((toString(ac.caller) + "_") + aR) + "_status")
492- let aT = (((toString(ac.caller) + "_") + aR) + "_finishHeight")
493- if ((getStringValue(aS) != "started"))
421+@Callable(Z)
422+func claimArtefact (aK) = {
423+ let k = fromBase58String(aK)
424+ let aL = (((toString(Z.caller) + "_") + aK) + "_status")
425+ let aM = (((toString(Z.caller) + "_") + aK) + "_finishHeight")
426+ if ((getStringValue(aL) != "started"))
494427 then throw("claimed already")
495- else if ((getIntegerValue(aT) > height))
428+ else if ((getIntegerValue(aM) > height))
496429 then throw("you cannot claim yet")
497430 else {
498- let aU = G(k, getIntegerValue(aT))
499- let ak = Issue(aU, "Artefact of Waves Ducks metaverse.", 1, 0, false, unit, getIntegerValue(aT))
500- let aj = calculateAssetId(ak)
501-[StringEntry(aS, aU), StringEntry((((toString(ac.caller) + "_") + aR) + "_artefactId"), toBase58String(aj)), StringEntry((toBase58String(aj) + "_type"), aU), ak, ScriptTransfer(ac.caller, 1, aj)]
431+ let aN = D(k, getIntegerValue(aM))
432+ let ah = Issue(aN, "Artefact of Waves Ducks metaverse.", 1, 0, false, unit, getIntegerValue(aM))
433+ let ag = calculateAssetId(ah)
434+[StringEntry(aL, aN), StringEntry((((toString(Z.caller) + "_") + aK) + "_artefactId"), toBase58String(ag)), StringEntry((toBase58String(ag) + "_type"), aN), ah, ScriptTransfer(Z.caller, 1, ag)]
502435 }
503436 }
504437
505438
506-@Verifier(aV)
507-func aW () = sigVerify(aV.bodyBytes, aV.proofs[0], aV.senderPublicKey)
439+@Verifier(aO)
440+func aP () = sigVerify(aO.bodyBytes, aO.proofs[0], aO.senderPublicKey)
508441

github/deemru/w8io/6500d08 
173.55 ms