2022.04.18 12:37 [3079123] smart account 3PAi1ePLQrYrY3jj9omBtT6isMkZsapbmks > SELF 0.00000000 Waves

{ "type": 13, "id": "CyjzXmmHPbJXG1rBGpq9HpKmYhE6JrjZR1k2CX1V6zQi", "fee": 1400000, "feeAssetId": null, "timestamp": 1650274680980, "version": 2, "chainId": 87, "sender": "3PAi1ePLQrYrY3jj9omBtT6isMkZsapbmks", "senderPublicKey": "XrNmTusDFaLSz3wAjmdfcyC5h6uYyVbpdh18758UpFv", "proofs": [ "3t8yQC5Y1JMbg9efgXCzCTVknuqV2uWdHTBztsVXMq9bLocHMS5yhg8KvdYb62mAa26U2bf3dD2zjiyRqeMzw91b" ], "script": "base64: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AA9yYW5kb21TZWVkQmxvY2sAAAADdnJmCQAAagAAAAIJAASyAAAAAgUAAAAKcmFuZG9tSGFzaAUAAAAGb2Zmc2V0BQAAAAh2YXJpYW50cwEAAAARZ2V0UmFuZG9tQXJ0ZWZhY3QAAAACAAAABWJveElkAAAAAWgEAAAADHJhbmRvbU51bWJlcgkBAAAAD2dldFJhbmRvbU51bWJlcgAAAAQAAAAAAAAAAAYFAAAABWJveElkBQAAAAFoAAAAAAAAAAABCQABkQAAAAIFAAAACWFydGVmYWN0cwUAAAAMcmFuZG9tTnVtYmVyAQAAAA5nZXRSYW5kb21HZW5lcwAAAAIAAAAEdHhJZAAAAAFoBAAAAAxyYW5kb21OdW1iZXIJAQAAAA9nZXRSYW5kb21OdW1iZXIAAAAEAAAAAAAAAAAGBQAAAAR0eElkBQAAAAFoAAAAAAAAAAACCQABkQAAAAIFAAAACWZyZWVHZW5lcwUAAAAMcmFuZG9tTnVtYmVyAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIAAAAHYWRkcmVzcwAAAANrZXkEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWECAAAAAAEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAAAx0cnlHZXRTdHJpbmcAAAABAgAAABRzdGF0aWNfb3JhY2xlQWRkcmVzcwEAAAARZ2V0QnJlZWRlckFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAFXN0YXRpY19icmVlZGVyQWRkcmVzcwEAAAANZ2V0RWdnQXNzZXRJZAAAAAAJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAEXN0YXRpY19lZ2dBc3NldElkAQAAABNnZXRUcnVzdGVkQ29udHJhY3RzAAAAAAkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAF3N0YXRpY190cnVzdGVkQ29udHJhY3RzAQAAAAhhc1N0cmluZwAAAAEAAAAFdmFsdWUEAAAAByRtYXRjaDAFAAAABXZhbHVlAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAABnN0cmluZwUAAAAHJG1hdGNoMAUAAAAGc3RyaW5nCQAAAgAAAAECAAAAHHdyb25nIHR5cGUsIGV4cGVjdGVkOiBTdHJpbmcBAAAABWFzSW50AAAAAQAAAAV2YWx1ZQQAAAAHJG1hdGNoMAUAAAAFdmFsdWUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAADaW50BQAAAAckbWF0Y2gwBQAAAANpbnQJAAACAAAAAQIAAAAZd3JvbmcgdHlwZSwgZXhwZWN0ZWQ6IEludAEAAAAObWFuaXB1bGF0ZU5hbWUAAAADAAAACWFzc2V0TmFtZQAAAAhwb3NpdGlvbgAAAARjaGFyCQABLAAAAAIJAAEsAAAAAgkAAS8AAAACBQAAAAlhc3NldE5hbWUJAABlAAAAAgUAAAAIcG9zaXRpb24AAAAAAAAAAAEFAAAABGNoYXIJAQAAAAl0YWtlUmlnaHQAAAACBQAAAAlhc3NldE5hbWUJAABlAAAAAgAAAAAAAAAAEAUAAAAIcG9zaXRpb24BAAAAEGl0ZW1Jc0luQ29vbERvd24AAAACAAAADGFydGVmYWN0TmFtZQAAAAphcnRlZmFjdElkBAAAABF1bnN0YWtlSGVpZ2h0TGFzdAkBAAAADXRyeUdldEludGVnZXIAAAABCQEAAAAQa2V5VW5zdGFrZUhlaWdodAAAAAIFAAAADGFydGVmYWN0TmFtZQUAAAAKYXJ0ZWZhY3RJZAQAAAAOY29vbGRvd25QZXJpb2QAAAAAAAAAAPADCQAAZgAAAAIFAAAABmhlaWdodAkAAGQAAAACBQAAABF1bnN0YWtlSGVpZ2h0TGFzdAUAAAAOY29vbGRvd25QZXJpb2QHBgAAAA8AAAABaQEAAAAPbWFuaXB1bGF0ZUJvb3N0AAAAAgAAAAVib29zdAAAAAZkdWNrSWQEAAAAEGFsbG93ZWRDb250cmFjdHMJAQAAABNnZXRUcnVzdGVkQ29udHJhY3RzAAAAAAQAAAAUYWxsb3dlZENvbnRyYWN0c0xpc3QJAAS1AAAAAgUAAAAQYWxsb3dlZENvbnRyYWN0cwIAAAABOwQAAAAKZGFwcFRvQ2FsbAkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIDCQAAAAAAAAIJAARPAAAAAgUAAAAUYWxsb3dlZENvbnRyYWN0c0xpc3QFAAAACmRhcHBUb0NhbGwFAAAABHVuaXQJAAACAAAAAQIAAAAvVGhpcyBzbWFydCBjb250cmFjdCBjYW4ndCBtYW5pcHVsYXRlIHRoZSBib29zdCEEAAAAA2tleQkBAAAAFGtleUV4dGVybmFsQm9vc3REdWNrAAAAAQUAAAAGZHVja0lkBAAAAAthY3RpdmVCb29zdAkBAAAADXRyeUdldEludGVnZXIAAAABBQAAAANrZXkEAAAACG5ld0Jvb3N0CQAAZAAAAAIFAAAAC2FjdGl2ZUJvb3N0BQAAAAVib29zdAMJAABmAAAAAgAAAAAAAAAAAAUAAAAIbmV3Qm9vc3QJAAACAAAAAQIAAAA7U29tZXRoaW5nIHdlbnQgd3Jvbmcgd2l0aCBib29zdCwgcGxlYXNlIGNvbnRhY3QgdGhlIGFkbWlucyEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAA2tleQUAAAAIbmV3Qm9vc3QFAAAAA25pbAAAAAFpAQAAABZtYW5pcHVsYXRlQm9vc3RBY2NvdW50AAAAAgAAAAVib29zdAAAAAdhZGRyZXNzBAAAABBhbGxvd2VkQ29udHJhY3RzCQEAAAATZ2V0VHJ1c3RlZENvbnRyYWN0cwAAAAAEAAAAFGFsbG93ZWRDb250cmFjdHNMaXN0CQAEtQAAAAIFAAAAEGFsbG93ZWRDb250cmFjdHMCAAAAATsEAAAACmRhcHBUb0NhbGwJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyAwkAAAAAAAACCQAETwAAAAIFAAAAFGFsbG93ZWRDb250cmFjdHNMaXN0BQAAAApkYXBwVG9DYWxsBQAAAAR1bml0CQAAAgAAAAECAAAAL1RoaXMgc21hcnQgY29udHJhY3QgY2FuJ3QgbWFuaXB1bGF0ZSB0aGUgYm9vc3QhBAAAAANrZXkJAQAAABdrZXlFeHRlcm5hbEJvb3N0QWRkcmVzcwAAAAEFAAAAB2FkZHJlc3MEAAAAC2FjdGl2ZUJvb3N0CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEFAAAAA2tleQQAAAAIbmV3Qm9vc3QJAABkAAAAAgUAAAALYWN0aXZlQm9vc3QFAAAABWJvb3N0AwkAAGYAAAACAAAAAAAAAAAABQAAAAhuZXdCb29zdAkAAAIAAAABAgAAADtTb21ldGhpbmcgd2VudCB3cm9uZyB3aXRoIGJvb3N0LCBwbGVhc2UgY29udGFjdCB0aGUgYWRtaW5zIQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAADa2V5BQAAAAhuZXdCb29zdAUAAAADbmlsAAAAAWkBAAAAFGNoZWNrQXJ0ZWZhY3REZXRhaWxzAAAAAQAAAAdhc3NldElkBAAAAAVhc3NldAkBAAAABXZhbHVlAAAAAQkAA+wAAAABCQACWQAAAAEFAAAAB2Fzc2V0SWQEAAAACWFzc2V0TmFtZQkBAAAABXZhbHVlAAAAAQgFAAAABWFzc2V0AAAABG5hbWUDAwkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAAC2FsbEFydGVmYWN0BQAAAAlhc3NldE5hbWUJAAAAAAAAAggFAAAABWFzc2V0AAAABmlzc3VlcgUAAAAEdGhpcwcJAAUUAAAAAgUAAAADbmlsBQAAAAlhc3NldE5hbWUJAAACAAAAAQIAAAAQSW52YWxpZCBhcnRlZmFjdAAAAAFpAQAAAA9jb25maWd1cmVPcmFjbGUAAAABAAAABm9yYWNsZQMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwkAAAIAAAABAgAAAAphZG1pbiBvbmx5CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAAFHN0YXRpY19vcmFjbGVBZGRyZXNzBQAAAAZvcmFjbGUFAAAAA25pbAAAAAFpAQAAABpjYWxjdWxhdGVGYXJtaW5nUG93ZXJCb29zdAAAAAIAAAAGZHVja0lkAAAAB2FkZHJlc3MEAAAAEWV4dGVybmFsQm9vc3REdWNrCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAQAAABRrZXlFeHRlcm5hbEJvb3N0RHVjawAAAAEFAAAABmR1Y2tJZAQAAAAUZXh0ZXJuYWxCb29zdEFkZHJlc3MJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkBAAAAF2tleUV4dGVybmFsQm9vc3RBZGRyZXNzAAAAAQUAAAAHYWRkcmVzcwQAAAAKdG90YWxCb29zdAkAAGQAAAACBQAAABFleHRlcm5hbEJvb3N0RHVjawUAAAAUZXh0ZXJuYWxCb29zdEFkZHJlc3MJAAUUAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAAZkdWNrSWQCAAAAC19sYXN0X2Jvb3N0BQAAAAp0b3RhbEJvb3N0BQAAAANuaWwFAAAACnRvdGFsQm9vc3QAAAABaQEAAAAJZml4ZWRHZW5lAAAAAwAAAAd0eElkU3RyAAAAD3BhcmVudEZpeGVkR2VuZQAAABFwb3NpdGlvbkZpeGVkR2VuZQQAAAAMZmlyc3RQYXltZW50CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAAxmaXJzdEFzc2V0SWQJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAADGZpcnN0UGF5bWVudAAAAAdhc3NldElkAwkBAAAAAiE9AAAAAggFAAAADGZpcnN0UGF5bWVudAAAAAZhbW91bnQAAAAAAAAAAAEJAAACAAAAAQIAAAATTkZUIGlzIG5vdCBhdHRhY2hlZAQAAAAIYXJ0ZWZhY3QJAQAAAAhhc1N0cmluZwAAAAEJAAP8AAAABAUAAAAEdGhpcwIAAAAUY2hlY2tBcnRlZmFjdERldGFpbHMJAARMAAAAAgUAAAAMZmlyc3RBc3NldElkBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAIYXJ0ZWZhY3QFAAAACGFydGVmYWN0AwkBAAAAAiE9AAAAAgUAAAAIYXJ0ZWZhY3QCAAAAC0FSVC1GSVhHRU5FCQAAAgAAAAECAAAAKVlvdSBuZWVkIHRvIGF0dGFjaCBhIEFSVC1GSVhHRU5FIGFydGVmYWN0BAAAAAR0eElkCQACWQAAAAEFAAAAB3R4SWRTdHIEAAAAD2ZpbmlzaEhlaWdodEtleQkBAAAAGWdldFByb2Nlc3NGaW5pc2hIZWlnaHRLZXkAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAEdHhJZAQAAAATcHJvY2Vzc0ZpbmlzaEhlaWdodAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgkBAAAAEWdldEJyZWVkZXJBZGRyZXNzAAAAAAUAAAAPZmluaXNoSGVpZ2h0S2V5BAAAAA9kdWNrR2VuZXNTdHJpbmcJAQAAAAhhc1N0cmluZwAAAAEJAAP8AAAABAkBAAAAEWdldEJyZWVkZXJBZGRyZXNzAAAAAAIAAAAMZ2VuZXJhdGVEdWNrCQAETAAAAAIFAAAAB3R4SWRTdHIJAARMAAAAAgUAAAATcHJvY2Vzc0ZpbmlzaEhlaWdodAkABEwAAAACBQAAAA9wYXJlbnRGaXhlZEdlbmUJAARMAAAAAgUAAAARcG9zaXRpb25GaXhlZEdlbmUJAARMAAAAAgIAAAAACQAETAAAAAIAAAAAAAAAAAAFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAA9kdWNrR2VuZXNTdHJpbmcFAAAAD2R1Y2tHZW5lc1N0cmluZwQAAAAEY2FsbAkAA/wAAAAECQEAAAARZ2V0QnJlZWRlckFkZHJlc3MAAAAAAgAAABdmaW5pc2hEdWNrSGF0Y2hpbmdJdGVtcwkABEwAAAACBQAAAAd0eElkU3RyCQAETAAAAAIFAAAAD2R1Y2tHZW5lc1N0cmluZwUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAABGNhbGwFAAAABGNhbGwJAARMAAAAAgkBAAAABEJ1cm4AAAACCQEAAAAFdmFsdWUAAAABCAUAAAAMZmlyc3RQYXltZW50AAAAB2Fzc2V0SWQAAAAAAAAAAAEFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAAhmcmVlR2VuZQAAAAEAAAAHdHhJZFN0cgQAAAAMZmlyc3RQYXltZW50CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAAxmaXJzdEFzc2V0SWQJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAADGZpcnN0UGF5bWVudAAAAAdhc3NldElkAwkBAAAAAiE9AAAAAggFAAAADGZpcnN0UGF5bWVudAAAAAZhbW91bnQAAAAAAAAAAAEJAAACAAAAAQIAAAATTkZUIGlzIG5vdCBhdHRhY2hlZAQAAAAIYXJ0ZWZhY3QJAQAAAAhhc1N0cmluZwAAAAEJAAP8AAAABAUAAAAEdGhpcwIAAAAUY2hlY2tBcnRlZmFjdERldGFpbHMJAARMAAAAAgUAAAAMZmlyc3RBc3NldElkBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAIYXJ0ZWZhY3QFAAAACGFydGVmYWN0AwkBAAAAAiE9AAAAAgUAAAAIYXJ0ZWZhY3QCAAAADEFSVC1GUkVFR0VORQkAAAIAAAABAgAAACpZb3UgbmVlZCB0byBhdHRhY2ggYSBBUlQtRlJFRUdFTkUgYXJ0ZWZhY3QEAAAABHR4SWQJAAJZAAAAAQUAAAAHdHhJZFN0cgQAAAAPZmluaXNoSGVpZ2h0S2V5CQEAAAAZZ2V0UHJvY2Vzc0ZpbmlzaEhlaWdodEtleQAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAR0eElkBAAAABNwcm9jZXNzRmluaXNoSGVpZ2h0CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACCQEAAAARZ2V0QnJlZWRlckFkZHJlc3MAAAAABQAAAA9maW5pc2hIZWlnaHRLZXkEAAAADHNlbGVjdGVkR2VuZQkBAAAADmdldFJhbmRvbUdlbmVzAAAAAgUAAAAEdHhJZAUAAAATcHJvY2Vzc0ZpbmlzaEhlaWdodAQAAAAOcmFuZG9tUG9zaXRpb24JAQAAAA9nZXRSYW5kb21OdW1iZXIAAAAEAAAAAAAAAAAHBQAAAAR0eElkBQAAABNwcm9jZXNzRmluaXNoSGVpZ2h0AAAAAAAAAAADBAAAAA9kdWNrR2VuZXNTdHJpbmcJAQAAAAhhc1N0cmluZwAAAAEJAAP8AAAABAkBAAAAEWdldEJyZWVkZXJBZGRyZXNzAAAAAAIAAAAMZ2VuZXJhdGVEdWNrCQAETAAAAAIFAAAA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JFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAAdwcmVJbml0AAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAcc3RhdGljX0FSVC1MQUtFX2Zhcm1pbmdTbG90cwAAAAAAAAAAyAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAcc3RhdGljX0FSVC1MQUtFX2Zhcm1pbmdCb29zdAAAAAAAAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAdc3RhdGljX0FSVC1IT1VTRV9mYXJtaW5nU2xvdHMAAAAAAAAAAAQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAHXN0YXRpY19BUlQtSE9VU0VfZmFybWluZ0Jvb3N0AAAAAAAAAAAeCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAACBzdGF0aWNfQVJULUJJR0hPVVNFX2Zhcm1pbmdTbG90cwAAAAAAAAAACgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAgc3RhdGljX0FSVC1CSUdIT1VTRV9mYXJtaW5nQm9vc3QAAAAAAAAAAA8FAAAAA25pbAAAAAFpAQAAAA1pc3N1ZUFydGVmYWN0AAAAAgAAAAR0eXBlAAAACHJlY2VpdmVyAwkAAAAAAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMEAAAAB3R4SWRTdHIJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAQAAAAHYWRkcmVzcwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAACHJlY2VpdmVyBAAAAAhhcnRlZmFjdAkABEMAAAAHBQAAAAR0eXBlAgAAACpORlQgYXJ0ZWZhY3Qgb2YgV2F2ZXMgRHVja3MgZ2FtZS4g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", "height": 3079123, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 51R3mwNe34jWJfGMxCXo2Yd96bNZ2oJJRhestEeASh5R Next: 3JEYH5A9P9wW5oZy2HDJH1SdvPfEyt9owZJhaRou2ZLx Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func keyArtefactOwner (artefactName,owner) = (((artefactName + "_") + owner) + "_owner")
55
66
77 func keyUnstakeHeight (artefactName,artefactId) = (((artefactName + "_") + artefactId) + "_unstake_height")
88
99
1010 func keyExternalBoostDuck (duckId) = (duckId + "_duck_external_boost")
1111
1212
1313 func keyExternalBoostAddress (address) = (address + "_user_external_boost")
1414
1515
1616 func getProcessFinishHeightKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_fh")
1717
1818
1919 let devAddress = base58'3P44yqcpfhPF2iC1nptm2ZJCTaN7VYhz9og'
2020
2121 let eggsNeeded = (3 * 100000000)
2222
2323 let artefactsLimit = (301 + 600)
2424
2525 let freeGenes = ["A", "B", "C", "D", "E"]
2626
2727 let oldArtefacts = ["ART-LAKE", "ART-HOUSE", "ART-BIGHOUSE", "ART-FIXGENE", "ART-FREEGENE", "ART-MIRROR", "ART-POMP", "ART-CAPE", "ART-HAT", "ART-CUSTOMDUCK"]
2828
2929 let artefacts = ["ART-XMISTL", "ART-XHAT", "ART-XSCARF", "ART-XSWEATER", "ART-XSOCK", "ART-XTREE"]
3030
3131 let allArtefact = (artefacts ++ oldArtefacts)
3232
3333 func tryGetString (key) = match getString(this, key) {
3434 case a: String =>
3535 a
3636 case _ =>
3737 ""
3838 }
3939
4040
4141 func tryGetInteger (key) = match getInteger(this, key) {
4242 case a: Int =>
4343 a
4444 case _ =>
4545 0
4646 }
4747
4848
4949 func getRandomNumber (variants,txId,finishHeight,offset) = {
5050 let randomSeedBlock = value(blockInfoByHeight((finishHeight - 1)))
5151 let randomHash = sha256(((base58'items' + txId) + value(randomSeedBlock.vrf)))
5252 (toInt(randomHash, offset) % variants)
5353 }
5454
5555
5656 func getRandomArtefact (boxId,h) = {
5757 let randomNumber = getRandomNumber(6, boxId, h, 1)
5858 artefacts[randomNumber]
5959 }
6060
6161
6262 func getRandomGenes (txId,h) = {
6363 let randomNumber = getRandomNumber(6, txId, h, 2)
6464 freeGenes[randomNumber]
6565 }
6666
6767
6868 func tryGetStringExternal (address,key) = match getString(address, key) {
6969 case a: String =>
7070 a
7171 case _ =>
7272 ""
7373 }
7474
7575
7676 func getOracle () = Address(fromBase58String(tryGetString("static_oracleAddress")))
7777
7878
7979 func getBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_breederAddress")))
8080
8181
8282 func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), "static_eggAssetId"))
8383
8484
8585 func getTrustedContracts () = tryGetStringExternal(getOracle(), "static_trustedContracts")
8686
8787
8888 func asString (value) = match value {
8989 case string: String =>
9090 string
9191 case _ =>
9292 throw("wrong type, expected: String")
9393 }
9494
9595
9696 func asInt (value) = match value {
9797 case int: Int =>
9898 int
9999 case _ =>
100100 throw("wrong type, expected: Int")
101101 }
102102
103103
104104 func manipulateName (assetName,position,char) = ((take(assetName, (position - 1)) + char) + takeRight(assetName, (16 - position)))
105105
106106
107107 func itemIsInCoolDown (artefactName,artefactId) = {
108108 let unstakeHeightLast = tryGetInteger(keyUnstakeHeight(artefactName, artefactId))
109109 let cooldownPeriod = 240
110110 if ((height > (unstakeHeightLast + cooldownPeriod)))
111111 then false
112112 else true
113113 }
114114
115115
116116 @Callable(i)
117117 func manipulateBoost (boost,duckId) = {
118118 let allowedContracts = getTrustedContracts()
119119 let allowedContractsList = split(allowedContracts, ";")
120120 let dappToCall = toString(i.caller)
121121 if ((indexOf(allowedContractsList, dappToCall) == unit))
122122 then throw("This smart contract can't manipulate the boost!")
123123 else {
124124 let key = keyExternalBoostDuck(duckId)
125125 let activeBoost = tryGetInteger(key)
126126 let newBoost = (activeBoost + boost)
127127 if ((0 > newBoost))
128128 then throw("Something went wrong with boost, please contact the admins!")
129129 else [IntegerEntry(key, newBoost)]
130130 }
131131 }
132132
133133
134134
135135 @Callable(i)
136136 func manipulateBoostAccount (boost,address) = {
137137 let allowedContracts = getTrustedContracts()
138138 let allowedContractsList = split(allowedContracts, ";")
139139 let dappToCall = toString(i.caller)
140140 if ((indexOf(allowedContractsList, dappToCall) == unit))
141141 then throw("This smart contract can't manipulate the boost!")
142142 else {
143143 let key = keyExternalBoostAddress(address)
144144 let activeBoost = tryGetInteger(key)
145145 let newBoost = (activeBoost + boost)
146146 if ((0 > newBoost))
147147 then throw("Something went wrong with boost, please contact the admins!")
148148 else [IntegerEntry(key, newBoost)]
149149 }
150150 }
151151
152152
153153
154154 @Callable(i)
155155 func checkArtefactDetails (assetId) = {
156156 let asset = value(assetInfo(fromBase58String(assetId)))
157157 let assetName = value(asset.name)
158158 if (if (containsElement(allArtefact, assetName))
159159 then (asset.issuer == this)
160160 else false)
161161 then $Tuple2(nil, assetName)
162162 else throw("Invalid artefact")
163163 }
164164
165165
166166
167167 @Callable(i)
168168 func configureOracle (oracle) = if ((i.caller != this))
169169 then throw("admin only")
170170 else [StringEntry("static_oracleAddress", oracle)]
171171
172172
173173
174174 @Callable(i)
175175 func calculateFarmingPowerBoost (duckId,address) = {
176176 let externalBoostDuck = tryGetInteger(keyExternalBoostDuck(duckId))
177177 let externalBoostAddress = tryGetInteger(keyExternalBoostAddress(address))
178178 let totalBoost = (externalBoostDuck + externalBoostAddress)
179179 $Tuple2([IntegerEntry((duckId + "_last_boost"), totalBoost)], totalBoost)
180180 }
181181
182182
183183
184184 @Callable(i)
185185 func fixedGene (txIdStr,parentFixedGene,positionFixedGene) = {
186186 let firstPayment = value(i.payments[0])
187187 let firstAssetId = toBase58String(value(firstPayment.assetId))
188188 if ((firstPayment.amount != 1))
189189 then throw("NFT is not attached")
190190 else {
191191 let artefact = asString(invoke(this, "checkArtefactDetails", [firstAssetId], nil))
192192 if ((artefact == artefact))
193193 then if ((artefact != "ART-FIXGENE"))
194194 then throw("You need to attach a ART-FIXGENE artefact")
195195 else {
196196 let txId = fromBase58String(txIdStr)
197197 let finishHeightKey = getProcessFinishHeightKey(toString(i.caller), txId)
198198 let processFinishHeight = getIntegerValue(getBreederAddress(), finishHeightKey)
199199 let duckGenesString = asString(invoke(getBreederAddress(), "generateDuck", [txIdStr, processFinishHeight, parentFixedGene, positionFixedGene, "", 0], nil))
200200 if ((duckGenesString == duckGenesString))
201201 then {
202202 let call = invoke(getBreederAddress(), "finishDuckHatchingItems", [txIdStr, duckGenesString], nil)
203203 if ((call == call))
204204 then [Burn(value(firstPayment.assetId), 1)]
205205 else throw("Strict value is not equal to itself.")
206206 }
207207 else throw("Strict value is not equal to itself.")
208208 }
209209 else throw("Strict value is not equal to itself.")
210210 }
211211 }
212212
213213
214214
215215 @Callable(i)
216216 func freeGene (txIdStr) = {
217217 let firstPayment = value(i.payments[0])
218218 let firstAssetId = toBase58String(value(firstPayment.assetId))
219219 if ((firstPayment.amount != 1))
220220 then throw("NFT is not attached")
221221 else {
222222 let artefact = asString(invoke(this, "checkArtefactDetails", [firstAssetId], nil))
223223 if ((artefact == artefact))
224224 then if ((artefact != "ART-FREEGENE"))
225225 then throw("You need to attach a ART-FREEGENE artefact")
226226 else {
227227 let txId = fromBase58String(txIdStr)
228228 let finishHeightKey = getProcessFinishHeightKey(toString(i.caller), txId)
229229 let processFinishHeight = getIntegerValue(getBreederAddress(), finishHeightKey)
230230 let selectedGene = getRandomGenes(txId, processFinishHeight)
231231 let randomPosition = getRandomNumber(7, txId, processFinishHeight, 3)
232232 let duckGenesString = asString(invoke(getBreederAddress(), "generateDuck", [txIdStr, processFinishHeight, 0, 0, selectedGene, randomPosition], nil))
233233 if ((duckGenesString == duckGenesString))
234234 then {
235235 let call = invoke(getBreederAddress(), "finishDuckHatchingItems", [txIdStr, duckGenesString], nil)
236236 if ((call == call))
237237 then [Burn(value(firstPayment.assetId), 1)]
238238 else throw("Strict value is not equal to itself.")
239239 }
240240 else throw("Strict value is not equal to itself.")
241241 }
242242 else throw("Strict value is not equal to itself.")
243243 }
244244 }
245245
246246
247247
248248 @Callable(i)
249249 func copyDuck () = {
250250 let firstPayment = value(i.payments[0])
251251 let secondPayment = value(i.payments[1])
252252 let firstAssetId = toBase58String(value(firstPayment.assetId))
253253 let children = asInt(invoke(getBreederAddress(), "validateAndGetChildren", [firstAssetId], nil))
254254 if ((children == children))
255255 then if (if ((firstPayment.amount != 1))
256256 then true
257257 else (secondPayment.amount != 1))
258258 then throw("NFT is not attached")
259259 else {
260260 let artefact = asString(invoke(this, "checkArtefactDetails", [toBase58String(value(secondPayment.assetId))], nil))
261261 if ((artefact == artefact))
262262 then if ((artefact != "ART-MIRROR"))
263263 then throw("You need to attach a ART-MIRROR artefact")
264264 else {
265265 let nftInfo = value(assetInfo(value(firstPayment.assetId)))
266266 let asset1Gen = split(nftInfo.name, "")
267267 if (if ((asset1Gen[14] == "G"))
268268 then true
269269 else (asset1Gen[14] == "J"))
270270 then throw("You can't mirror this duck")
271271 else {
272272 let duckGen = nftInfo.name
273273 let call = invoke(getBreederAddress(), "createDuckSpecialGenes", [i.caller.bytes, duckGen, children], nil)
274274 if ((call == call))
275275 then [ScriptTransfer(i.caller, 1, firstPayment.assetId), Burn(value(secondPayment.assetId), 1)]
276276 else throw("Strict value is not equal to itself.")
277277 }
278278 }
279279 else throw("Strict value is not equal to itself.")
280280 }
281281 else throw("Strict value is not equal to itself.")
282282 }
283283
284284
285285
286286 @Callable(i)
287287 func addArteFactToDuck () = {
288288 let firstPayment = value(i.payments[0])
289289 let secondPayment = value(i.payments[1])
290290 let firstAssetId = toBase58String(value(firstPayment.assetId))
291291 if (if ((firstPayment.amount != 1))
292292 then true
293293 else (secondPayment.amount != 1))
294294 then throw("NFT is not attached")
295295 else {
296296 let children = asInt(invoke(getBreederAddress(), "validateAndGetChildren", [firstAssetId], nil))
297297 if ((children == children))
298298 then if ((children == 0))
299299 then throw("You can only pick a sterile NFT-duck")
300300 else {
301301 let artefact = asString(invoke(this, "checkArtefactDetails", [toBase58String(value(secondPayment.assetId))], nil))
302302 if ((artefact == artefact))
303303 then if (if ((artefact != "ART-XHAT"))
304304 then (artefact != "ART-POMP")
305305 else false)
306306 then throw("You need to attach a ART-XHAT or ART-POMP artefact")
307307 else {
308308 let nftInfo = value(assetInfo(value(firstPayment.assetId)))
309309 let asset1Gen = split(nftInfo.name, "")
310310 if (if ((asset1Gen[14] == "G"))
311311 then true
312312 else (asset1Gen[14] == "J"))
313313 then throw("You can't mirror this duck")
314314 else if (if ((asset1Gen[5] == "S"))
315315 then true
316316 else (asset1Gen[5] == "T"))
317317 then throw("you already attached a artefact")
318318 else {
319319 let char = if ((artefact == "ART-XHAT"))
320320 then "T"
321321 else if ((artefact == "ART-POMP"))
322322 then "S"
323323 else throw("No char defined")
324324 let oldDuckGen = nftInfo.name
325325 let oldFarmGen = asString(invoke(getBreederAddress(), "getGenFromName", [oldDuckGen], nil))
326326 if ((oldFarmGen == oldFarmGen))
327327 then {
328328 let duckGen = manipulateName(oldDuckGen, 6, char)
329329 let call = invoke(getBreederAddress(), "createDuckSpecialGenes", [i.caller.bytes, duckGen, children], nil)
330330 if ((call == call))
331331 then {
332332 let callReduce = invoke(getBreederAddress(), "reduceRarity", [firstAssetId, oldFarmGen], nil)
333333 if ((callReduce == callReduce))
334334 then [Burn(value(firstPayment.assetId), 1), Burn(value(secondPayment.assetId), 1)]
335335 else throw("Strict value is not equal to itself.")
336336 }
337337 else throw("Strict value is not equal to itself.")
338338 }
339339 else throw("Strict value is not equal to itself.")
340340 }
341341 }
342342 else throw("Strict value is not equal to itself.")
343343 }
344344 else throw("Strict value is not equal to itself.")
345345 }
346346 }
347347
348348
349349
350350 @Callable(i)
351351 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)]
352352
353353
354354
355355 @Callable(i)
356356 func issueArtefact (type,receiver) = if ((i.caller == this))
357357 then {
358358 let txIdStr = toBase58String(i.transactionId)
359359 let address = Address(fromBase58String(receiver))
360360 let artefact = Issue(type, "NFT artefact of Waves Ducks game. Drop #2.", 1, 0, false, unit, 0)
361361 let artefactId = calculateAssetId(artefact)
362362 [artefact, StringEntry((("artefact_" + toBase58String(artefactId)) + "_type"), type), ScriptTransfer(address, 1, artefactId)]
363363 }
364364 else throw("admin only")
365365
366366
367367
368368 @Callable(i)
369369 func setLock (n) = if ((i.caller == this))
370370 then [IntegerEntry("global_locked", n)]
371371 else throw("admin only")
372372
373373
374374
375375 @Callable(i)
376376 func buyArtefact () = if ((lastBlock.timestamp > 1639742400000))
377377 then throw("There are no active sales now... ")
378378 else if ((tryGetInteger("global_locked") > 0))
379379 then throw("contract is temporarily locked")
380380 else if ((tryGetInteger("global_artAmount") >= artefactsLimit))
381381 then throw("SOLDOUT!!! Hurray!")
382382 else if (if ((1639605600000 > lastBlock.timestamp))
383383 then (i.caller != Address(devAddress))
384384 else false)
385385 then throw("Too early...")
386386 else {
387387 let firstPayment = value(i.payments[0])
388388 if ((firstPayment.assetId != getEggAssetId()))
389389 then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(getEggAssetId())))
390390 else if ((eggsNeeded > firstPayment.amount))
391391 then throw(("To hatch a duck you currently need the following amount of EGGlets: " + toString(eggsNeeded)))
392392 else [StringEntry((((toString(i.caller) + "_") + toBase58String(i.transactionId)) + "_status"), "started"), IntegerEntry((((toString(i.caller) + "_") + toBase58String(i.transactionId)) + "_finishHeight"), (height + 2)), IntegerEntry("global_artAmount", (tryGetInteger("global_artAmount") + 1))]
393393 }
394394
395395
396396
397397 @Callable(i)
398398 func setGlobalArtAmount (newAmount) = if (if ((i.caller == this))
399399 then true
400400 else (i.caller == Address(devAddress)))
401401 then [IntegerEntry("global_artAmount", newAmount)]
402402 else throw("Permission denied")
403403
404404
405405
406406 @Callable(i)
407407 func claimArtefact (boxIdStr) = {
408408 let txId = fromBase58String(boxIdStr)
409409 let statusKey = (((toString(i.caller) + "_") + boxIdStr) + "_status")
410410 let heightKey = (((toString(i.caller) + "_") + boxIdStr) + "_finishHeight")
411411 if ((getStringValue(statusKey) != "started"))
412412 then throw("claimed already")
413413 else if ((getIntegerValue(heightKey) > height))
414414 then throw("you cannot claim yet")
415415 else {
416416 let artType = getRandomArtefact(txId, getIntegerValue(heightKey))
417417 let asset = Issue(artType, "Artefact of Waves Ducks metaverse.", 1, 0, false, unit, getIntegerValue(heightKey))
418418 let assetId = calculateAssetId(asset)
419419 [StringEntry(statusKey, artType), StringEntry((((toString(i.caller) + "_") + boxIdStr) + "_artefactId"), toBase58String(assetId)), StringEntry((toBase58String(assetId) + "_type"), artType), asset, ScriptTransfer(i.caller, 1, assetId)]
420420 }
421421 }
422422
423423
424424 @Verifier(tx)
425425 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
426426

github/deemru/w8io/786bc32 
68.38 ms