tx · BdN4gSBVMNjbGfNoGRpGmKG6Pp7QZyr4VUz8N4pTWVRm

3MtrXLq2YFHNLqTBXr488vaQVQpsHdmbg7C:  -0.02100000 Waves

2024.12.03 23:51 [3398961] smart account 3MtrXLq2YFHNLqTBXr488vaQVQpsHdmbg7C > SELF 0.00000000 Waves

{ "type": 13, "id": "BdN4gSBVMNjbGfNoGRpGmKG6Pp7QZyr4VUz8N4pTWVRm", "fee": 2100000, "feeAssetId": null, "timestamp": 1733259196408, "version": 2, "chainId": 84, "sender": "3MtrXLq2YFHNLqTBXr488vaQVQpsHdmbg7C", "senderPublicKey": "ESRi59hjHAnDxmeFyTaaXNvzeEW323BvzYJYyKjpEsC1", "proofs": [ "XnMW2S55UqURVmSXp1qw5p9f6ta4mFYxyQjzXJ7HMpVAvYxfQfHK7PV2jmrSixYgEC6FSCgypQuVyU9P79nqK69" ], "script": "base64:AAIFAAAAAAAAAC8IAhIECgIICBIECgIICBIDCgEIEgUKAwgICBIECgIICBIDCgEBEgMKAQgSAwoBCAAAACUBAAAAB2dldEJvb2wAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABBsAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAB0Jvb2xlYW4EAAAAAWIFAAAAByRtYXRjaDAFAAAAAWIHAQAAAAhhc1N0cmluZwAAAAEAAAAFdmFsdWUEAAAAByRtYXRjaDAFAAAABXZhbHVlAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXMFAAAAByRtYXRjaDAFAAAAAXMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABcwUAAAAHJG1hdGNoMAkAAAIAAAABAgAAACZ3cm9uZyB0eXBlLCBleHBlY3RlZDogU3RyaW5nLCBnb3Q6IEludAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAABcwUAAAAHJG1hdGNoMAkAAAIAAAABAgAAACd3cm9uZyB0eXBlLCBleHBlY3RlZDogU3RyaW5nLCBnb3Q6IFVuaXQJAAACAAAAAQIAAAAcd3JvbmcgdHlwZSwgZXhwZWN0ZWQ6IFN0cmluZwEAAAAJaXNUZXN0RW52AAAAAAkBAAAAB2dldEJvb2wAAAABAgAAAAdURVNURU5WAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIAAAAHYWRkcmVzcwAAAANrZXkEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWECAAAAAAEAAAAMdHJ5R2V0U3RyaW5nAAAAAQAAAANrZXkJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIFAAAABHRoaXMFAAAAA2tleQEAAAAXc3RhdGljS2V5X29yYWNsZUFkZHJlc3MAAAAAAgAAABRzdGF0aWNfb3JhY2xlQWRkcmVzcwEAAAASc3RhdGljS2V5X2V4dHJhRmVlAAAAAAIAAAAPc3RhdGljX2V4dHJhRmVlAQAAABdzdGF0aWNLZXlfZmVlQWdncmVnYXRvcgAAAAACAAAAFHN0YXRpY19mZWVBZ2dyZWdhdG9yAQAAABxzdGF0aWNLZXlfcmVmQ29udHJhY3RBZGRyZXNzAAAAAAIAAAAZc3RhdGljX3JlZkNvbnRyYWN0QWRkcmVzcwEAAAAcc3RhdGljS2V5X2NhbmlSZWJpcnRoQWRkcmVzcwAAAAACAAAAG3N0YXRpY19jYW5pbmVSZWJpcnRoQWRkcmVzcwEAAAAcc3RhdGljS2V5X2NhbmlGYXJtaW5nQWRkcmVzcwAAAAACAAAAG3N0YXRpY19jYW5pbmVTdGFraW5nQWRkcmVzcwEAAAAWc3RhdGljS2V5X2l0ZW1zQWRkcmVzcwAAAAACAAAAE3N0YXRpY19pdGVtc0FkZHJlc3MBAAAACWdldE9yYWNsZQAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQkBAAAAF3N0YXRpY0tleV9vcmFjbGVBZGRyZXNzAAAAAAEAAAAQZ2V0RmVlQWdncmVnYXRvcgAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAF3N0YXRpY0tleV9mZWVBZ2dyZWdhdG9yAAAAAAEAAAAOZ2V0TWludEFzc2V0SWQAAAAABQAAAAR1bml0AQAAAA5nZXRCdXJuQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAASc3RhdGljX2J1cm5BZGRyZXNzAQAAABVnZXRSZWZDb250cmFjdEFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABxzdGF0aWNLZXlfcmVmQ29udHJhY3RBZGRyZXNzAAAAAAEAAAAVZ2V0Q2FuaVJlYmlydGhBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAcc3RhdGljS2V5X2NhbmlSZWJpcnRoQWRkcmVzcwAAAAABAAAAFWdldENhbmlGYXJtaW5nQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAHHN0YXRpY0tleV9jYW5pRmFybWluZ0FkZHJlc3MAAAAAAQAAAA9nZXRJdGVtc0FkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABZzdGF0aWNLZXlfaXRlbXNBZGRyZXNzAAAAAAEAAAAWY2hlY2tBZGRpdGlvbmFsUGF5bWVudAAAAAEAAAAHcGF5bWVudAMJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkCQAAAgAAAAECAAAAGkJEQ0FQOiBQbGVhc2UgYXR0YWNoIHdhdmVzBAAAAAlmZWVBbW91bnQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAASc3RhdGljS2V5X2V4dHJhRmVlAAAAAAMJAQAAAAIhPQAAAAIIBQAAAAdwYXltZW50AAAABmFtb3VudAUAAAAJZmVlQW1vdW50CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAB1CRENBUDogUGxlYXNlIGF0dGFjaCBleGFjdGx5IAkAAaQAAAABBQAAAAlmZWVBbW91bnQCAAAAEyBhbW91bnQgb2Ygd2F2ZWxldHMJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAEGdldEZlZUFnZ3JlZ2F0b3IAAAAABQAAAAlmZWVBbW91bnQFAAAABHVuaXQFAAAAA25pbAAAAAAQZGVsYXlGb3JIYXRjaGluZwAAAAAAAAAAAgAAAAAPSGF0Y2hpbmdTdGFydGVkAgAAABBIQVRDSElOR19TVEFSVEVEAAAAABBIYXRjaGluZ0ZpbmlzaGVk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BQAAAAd0eElkU3RyBAAAABFoYXRjaGluZ1N0YXR1c0tleQkBAAAAFGdldEhhdGNoaW5nU3RhdHVzS2V5AAAAAgUAAAAHYWRkcmVzcwUAAAAEdHhJZAQAAAAPZmluaXNoSGVpZ2h0S2V5CQEAAAAaZ2V0SGF0Y2hpbmdGaW5pc2hIZWlnaHRLZXkAAAACBQAAAAdhZGRyZXNzBQAAAAR0eElkBAAAABB0b3RhbER1Y2tzQW1vdW50CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAC2NhbmlfYW1vdW50BAAAAAplZ2dzTmVlZGVkCQEAAAAVY291bnRFZ2dzTmVlZGVkQW1vdW50AAAAAQUAAAAQdG90YWxEdWNrc0Ftb3VudAQAAAALJHQwNjk3MDcwMjIJAAUUAAAAAgkAASwAAAACCQABLAAAAAICAAAABUNBTkktBQAAAANnZW4CAAAAAy1KVQIAAAAEOFctSgQAAAAHZHVja0dlbggFAAAACyR0MDY5NzA3MDIyAAAAAl8xBAAAAAdmYXJtR2VuCAUAAAALJHQwNjk3MDcwMjIAAAACXzIEAAAAC2Rlc2NyaXB0aW9uCQABLAAAAAIJAAEsAAAAAgIAAAAOeyJnZW5vdHlwZSI6ICIFAAAAB2R1Y2tHZW4CAAAAGSIsICJjcm9zc2JyZWVkaW5nIjogdHJ1ZX0EAAAABWFzc2V0CQAEQwAAAAcFAAAAB2R1Y2tHZW4FAAAAC2Rlc2NyaXB0aW9uAAAAAAAAAAABAAAAAAAAAAAABwUAAAAEdW5pdAUAAAAGaGVpZ2h0BAAAAAdhc3NldElkCQAEOAAAAAEFAAAABWFzc2V0BAAAAAlkdWNrSWRLZXkJAQAAAAxnZXRDQU5JSWRLZXkAAAACBQAAAAdhZGRyZXNzBQAAAAR0eElkBAAAABN2YWx1ZUR1Y2tJZEtleUV4aXRzCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQUAAAAJZHVja0lkS2V5AwkBAAAAAiE9AAAAAgUAAAATdmFsdWVEdWNrSWRLZXlFeGl0cwIAAAAACQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAClJU0o6IFlvdSB3aWxsIG92ZXJyaWRlIGZvbGxvd2luZyBkdWNrSWQgOgUAAAAJZHVja0lkS2V5AgAAACQgbWFrZSBzdXJlIHRoYXQgeW91ciB0eElkIGlzIHVuaXF1ZSEJAAUUAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAGmdldEhhdGNoaW5nRmluaXNoSGVpZ2h0S2V5AAAAAgUAAAAHYWRkcmVzcwUAAAAEdHhJZAUAAAAGaGVpZ2h0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAAtjYW5pX2Ftb3VudAkAAGQAAAACBQAAABB0b3RhbER1Y2tzQW1vdW50AAAAAAAAAAABCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAA9jYW5pX2xhc3RfcHJpY2UJAABpAAAAAgUAAAAKZWdnc05lZWRlZAAAAAAAABbjYAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABFoYXRjaGluZ1N0YXR1c0tleQUAAAAQSGF0Y2hpbmdGaW5pc2hlZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAlkdWNrSWRLZXkJAAJYAAAAAQUAAAAHYXNzZXRJZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQACWAAAAAEFAAAAB2Fzc2V0SWQFAAAACWR1Y2tJZEtleQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAD2dldENBTklTdGF0c0tleQAAAAEFAAAAB2R1Y2tHZW4JAABkAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABCQEAAAAPZ2V0Q0FOSVN0YXRzS2V5AAAAAQUAAAAHZHVja0dlbgAAAAAAAAAAAQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAABnN0YXRzXwUAAAAHZmFybUdlbgIAAAAJX3F1YW50aXR5CQAAZAAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAICAAAABnN0YXRzXwUAAAAHZmFybUdlbgIAAAAJX3F1YW50aXR5AAAAAAAAAAABCQAETAAAAAIFAAAABWFzc2V0CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQUAAAAHYWRkcmVzcwAAAAAAAAAAAQUAAAAHYXNzZXRJZAUAAAADbmlsCQACWAAAAAEFAAAAB2Fzc2V0SWQAAAABaQEAAAAJaXNzdWVGcmVlAAAAAgAAAAdhZGRyZXNzAAAAB3R4SWRTdHIDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIJAQAAABVnZXRDYW5pUmViaXJ0aEFkZHJlc3MAAAAACQAAAgAAAAECAAAAEUNJRjogcmViaXJ0aCBvbmx5BAAAAAR0eElkCQACWQAAAAEFAAAAB3R4SWRTdHIEAAAAEWhhdGNoaW5nU3RhdHVzS2V5CQEAAAAUZ2V0SGF0Y2hpbmdTdGF0dXNLZXkAAAACBQAAAAdhZGRyZXNzBQAAAAR0eElkBAAAAA9maW5pc2hIZWlnaHRLZXkJAQAAABpnZXRIYXRjaGluZ0ZpbmlzaEhlaWdodEtleQAAAAIFAAAAB2FkZHJlc3MFAAAABHR4SWQEAAAAEHRvdGFsRHVja3NBbW91bnQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQIAAAALY2FuaV9hbW91bnQEAAAACmVnZ3NOZWVkZWQJAQAAABVjb3VudEVnZ3NOZWVkZWRBbW91bnQAAAABBQAAABB0b3RhbER1Y2tzQW1vdW50BAAAAAskdDA4NjA0ODc1MgkBAAAADWdldFJhbmRvbU5hbWUAAAADBQAAAAR0eElkCQAAZAAAAAIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkAA+kAAAABBQAAAAR0eElkCQABLAAAAAIJAAEsAAAAAgUAAAAHdHhJZFN0cgIAAAALIG5vdCBmb3VuZCAJAAJYAAAAAQUAAAAEdHhJZAAAAAAAAAAAAQYEAAAAB0NBTklHZW4IBQAAAAskdDA4NjA0ODc1MgAAAAJfMQQAAAAHZmFybUdlbggFAAAACyR0MDg2MDQ4NzUyAAAAAl8yBAAAAAtkZXNjcmlwdGlvbgkAASwAAAACCQABLAAAAAICAAAADnsiZ2Vub3R5cGUiOiAiBQAAAAdDQU5JR2VuAgAAABkiLCAiY3Jvc3NicmVlZGluZyI6IHRydWV9BAAAAAVhc3NldAkABEMAAAAHBQAAAAdDQU5JR2VuBQAAAAtkZXNjcmlwdGlvbgAAAAAAAAAAAQAAAAAAAAAAAAcFAAAABHVuaXQFAAAABmhlaWdodAQAAAAHYXNzZXRJZAkABDgAAAABBQAAAAVhc3NldAQAAAAGYW1vdW50CQAAZAAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkBAAAAD2dldENBTklTdGF0c0tleQAAAAEFAAAAB0NBTklHZW4AAAAAAAAAAAEEAAAACWR1Y2tJZEtleQkBAAAADGdldENBTklJZEtleQAAAAIFAAAAB2FkZHJlc3MFAAAABHR4SWQJAAUUAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAGmdldEhhdGNoaW5nRmluaXNoSGVpZ2h0S2V5AAAAAgUAAAAHYWRkcmVzcwUAAAAEdHhJZAUAAAAGaGVpZ2h0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAAtjYW5pX2Ftb3VudAkAAGQAAAACBQAAABB0b3RhbER1Y2tzQW1vdW50AAAAAAAAAAABCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAA9jYW5pX2xhc3RfcHJpY2UJAABpAAAAAgUAAAAKZWdnc05lZWRlZAAAAAAAABbjYAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABFoYXRjaGluZ1N0YXR1c0tleQUAAAAQSGF0Y2hpbmdGaW5pc2hlZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAlkdWNrSWRLZXkJAAJYAAAAAQUAAAAHYXNzZXRJZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQACWAAAAAEFAAAAB2Fzc2V0SWQFAAAACWR1Y2tJZEtleQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAD2dldENBTklTdGF0c0tleQAAAAEFAAAAB0NBTklHZW4FAAAABmFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAABnN0YXRzXwUAAAAHZmFybUdlbgIAAAAJX3F1YW50aXR5CQAAZAAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAICAAAABnN0YXRzXwUAAAAHZmFybUdlbgIAAAAJX3F1YW50aXR5AAAAAAAAAAABCQAETAAAAAIFAAAABWFzc2V0CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQUAAAAHYWRkcmVzcwAAAAAAAAAAAQUAAAAHYXNzZXRJZAUAAAADbmlsCQACWAAAAAEFAAAAB2Fzc2V0SWQAAAABaQEAAAALc2V0RGlzY291bnQAAAABAAAAA3ZhbAMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwkAAAIAAAABAgAAAAphZG1pbl9vbmx5CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABNkaXNjb3VudENvZWZmaWNpZW50BQAAAAN2YWwFAAAAA25pbAAAAAFpAQAAAA1zdGFydEhhdGNoaW5nAAAAAQAAAA5yZWZlcmVyQWRkcmVzcwQAAAALZmVlVmFsaWRhdGUJAQAAABZjaGVja0FkZGl0aW9uYWxQYXltZW50AAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAMJAAAAAAAAAgUAAAALZmVlVmFsaWRhdGUFAAAAC2ZlZVZhbGlkYXRlAwkAAGYAAAACCQEAAAAIaXNMb2NrZWQAAAAAAAAAAAAAAAAACQAAAgAAAAECAAAAJUVHRyBvcGVyYXRpb25zIGFyZSB0ZW1wb3JhcmlseSBsb2NrZWQEAAAAD3RvdGFsQ2FuaUFtb3VudAkBAAAADXRyeUdldEludGVnZXIAAAABAgAAAAtjYW5pX2Ftb3VudAQAAAAKZWdnc05lZWRlZAkBAAAAFWNvdW50RWdnc05lZWRlZEFtb3VudAAAAAEFAAAAD3RvdGFsQ2FuaUFtb3VudAQAAAAHcmVzdWx0cwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAUZ2V0SGF0Y2hpbmdTdGF0dXNLZXkAAAACCQAEJQAAAAEIBQAAAAFpAAAADG9yaWdpbkNhbGxlcggFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAUAAAAPSGF0Y2hpbmdTdGFydGVkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAaZ2V0SGF0Y2hpbmdGaW5pc2hIZWlnaHRLZXkAAAACCQAEJQAAAAEIBQAAAAFpAAAADG9yaWdpbkNhbGxlcggFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAkAAGQAAAACBQAAAAZoZWlnaHQFAAAAEGRlbGF5Rm9ySGF0Y2hpbmcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAC2NhbmlfYW1vdW50CQAAZAAAAAIFAAAAD3RvdGFsQ2FuaUFtb3VudAAAAAAAAAAAAQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAPY2FuaV9sYXN0X3ByaWNlCQAAaQAAAAIFAAAACmVnZ3NOZWVkZWQAAAAAAAAW42AFAAAAA25pbAQAAAAMZmlyc3RQYXltZW50CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABBAAAAAlsZWZ0VG9QYXkDCQAAAAAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAMEAAAAC2Jvb3N0ZXJUeXBlCQEAAAAIYXNTdHJpbmcAAAABCQAD/AAAAAQJAQAAAA9nZXRJdGVtc0FkZHJlc3MAAAAAAgAAABRjaGVja0FydGVmYWN0RGV0YWlscwkABEwAAAACCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEICQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAACAAAAB2Fzc2V0SWQFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAAtib29zdGVyVHlwZQUAAAALYm9vc3RlclR5cGUDCQAAAAAAAAIFAAAAC2Jvb3N0ZXJUeXBlAgAAAApBUlQtQ0FOQ1BOCQAAaAAAAAIJAABpAAAAAgUAAAAKZWdnc05lZWRlZAAAAAAAAAAAZAAAAAAAAAAAVQAAAAAAAAAAZAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FAAAACmVnZ3NOZWVkZWQDCQEAAAACIT0AAAACCAUAAAAMZmlyc3RQYXltZW50AAAAB2Fzc2V0SWQJAQAAAA5nZXRNaW50QXNzZXRJZAAAAAAJAAACAAAAAQIAAAAdVEI6IFlvdSBjYW4gYXR0YWNoIG9ubHkgV0FWRVMDCQAAZgAAAAIFAAAACWxlZnRUb1BheQgFAAAADGZpcnN0UGF5bWVudAAAAAZhbW91bnQJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAA1VEI6IFRvIGJyZWVkIGEgQ2FuaW5lIHlvdSBmb2xsb3dpbmcgYW1vdW50IG9mIFdBVkVTOiAJAAGkAAAAAQUAAAAJbGVmdFRvUGF5AgAAAAEgCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAHYWRkTW9yZQkAA/wAAAAECQEAAAAVZ2V0Q2FuaUZhcm1pbmdBZGRyZXNzAAAAAAIAAAAUYWRkV2F2ZXNBbmRTdGFrZU1vcmUFAAAAA25pbAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgUAAAAEdW5pdAUAAAAJbGVmdFRvUGF5BQAAAANuaWwDCQAAAAAAAAIFAAAAB2FkZE1vcmUFAAAAB2FkZE1vcmUEAAAABnJlZnVuZAMJAAAAAAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIJAABlAAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEAAAAGYW1vdW50BQAAAAlsZWZ0VG9QYXkJAQAAAA5nZXRNaW50QXNzZXRJZAAAAAAFAAAAA25pbAUAAAADbmlsCQAETgAAAAIJAAROAAAAAgUAAAAHcmVzdWx0cwUAAAAGcmVmdW5kBQAAAAtmZWVWYWxpZGF0ZQkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAADmZpbmlzaEhhdGNoaW5nAAAAAQAAAAd0eElkU3RyBAAAAAtmZWVWYWxpZGF0ZQkBAAAAFmNoZWNrQWRkaXRpb25hbFBheW1lbnQAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAwkAAAAAAAACBQAAAAtmZWVWYWxpZGF0ZQUAAAALZmVlVmFsaWRhdGUEAAAABHR4SWQJAAJZAAAAAQUAAAAHdHhJZFN0cgQAAAARaGF0Y2hpbmdTdGF0dXNLZXkJAQAAABRnZXRIYXRjaGluZ1N0YXR1c0tleQAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAR0eElkBAAAAA9maW5pc2hIZWlnaHRLZXkJAQAAABpnZXRIYXRjaGluZ0ZpbmlzaEhlaWdodEtleQAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAR0eElkBAAAAAlDQU5JSWRLZXkJAQAAAAxnZXRDQU5JSWRLZXkAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAEdHhJZAQAAAAQaGF0Y2hpbmdUeFN0YXR1cwkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwUAAAARaGF0Y2hpbmdTdGF0dXNLZXkEAAAAFGhhdGNoaW5nRmluaXNoSGVpZ2h0CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzBQAAAA9maW5pc2hIZWlnaHRLZXkDCQAAAAAAAAIFAAAAEGhhdGNoaW5nVHhTdGF0dXMFAAAAEEhhdGNoaW5nRmluaXNoZWQEAAAABkNBTklJZAkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwkBAAAADGdldENBTklJZEtleQAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAR0eElkCQAAAgAAAAEJAAEsAAAAAgIAAABAVGhlIENhbmkgd2FzIGhhdGNoZWQgYW5kIGNsYWltZWQgYWxyZWFkeSwgaGVyZSBpcyB0aGUgZm9sb3dpbmc6IAUAAAAGQ0FOSUlkAwkAAGYAAAACBQAAABRoYXRjaGluZ0ZpbmlzaEhlaWdodAUAAAAGaGVpZ2h0CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAdSGF0Y2hpbmcgaXMgbm90IGZpbmlzaGVkIHlldCAJAAGkAAAAAQkAAGUAAAACBQAAABRoYXRjaGluZ0ZpbmlzaEhlaWdodAUAAAAGaGVpZ2h0AgAAACcgYmxvY2tzIHJlbWFpbmluZywgaXQgd2lsbCB0YWtlIGFyb3VuZCAJAAGkAAAAAQkAAGUAAAACBQAAABRoYXRjaGluZ0ZpbmlzaEhlaWdodAUAAAAGaGVpZ2h0AgAAAAggbWludXRlcwQAAAANJHQwMTI1OTkxMjY3MgkBAAAADWdldFJhbmRvbU5hbWUAAAADBQAAAAR0eElkBQAAABRoYXRjaGluZ0ZpbmlzaEhlaWdodAcEAAAAB0NBTklHZW4IBQAAAA0kdDAxMjU5OTEyNjcyAAAAAl8xBAAAAAdmYXJtR2VuCAUAAAANJHQwMTI1OTkxMjY3MgAAAAJfMgQAAAALZGVzY3JpcHRpb24JAAEsAAAAAgkAASwAAAACAgAAAA57Imdlbm90eXBlIjogIgUAAAAHQ0FOSUdlbgIAAAAZIiwgImNyb3NzYnJlZWRpbmciOiB0cnVlfQQAAAAFYXNzZXQJAARDAAAABwUAAAAHQ0FOSUdlbgUAAAALZGVzY3JpcHRpb24AAAAAAAAAAAEAAAAAAAAAAAAHBQAAAAR1bml0BQAAABRoYXRjaGluZ0ZpbmlzaEhlaWdodAQAAAAHYXNzZXRJZAkABDgAAAABBQAAAAVhc3NldAQAAAAGYW1vdW50CQAAZAAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkBAAAAD2dldENBTklTdGF0c0tleQAAAAEFAAAAB0NBTklHZW4AAAAAAAAAAAEJAAROAAAAAgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABFoYXRjaGluZ1N0YXR1c0tleQUAAAAQSGF0Y2hpbmdGaW5pc2hlZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAlDQU5JSWRLZXkJAAJYAAAAAQUAAAAHYXNzZXRJZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQACWAAAAAEFAAAAB2Fzc2V0SWQFAAAACUNBTklJZEtleQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAD2dldENBTklTdGF0c0tleQAAAAEFAAAAB0NBTklHZW4FAAAABmFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAABnN0YXRzXwUAAAAHZmFybUdlbgIAAAAJX3F1YW50aXR5CQAAZAAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAICAAAABnN0YXRzXwUAAAAHZmFybUdlbgIAAAAJX3F1YW50aXR5AAAAAAAAAAABCQAETAAAAAIFAAAABWFzc2V0CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgAAAAAAAAAAAQUAAAAHYXNzZXRJZAUAAAADbmlsBQAAAAtmZWVWYWxpZGF0ZQkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAAAwkBAAAACWlzVGVzdEVudgAAAAAJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5BAAAAAlmaXJzdFVzZXIBAAAAIFEc5P1m/xJp0vFaFJ87suL0O3/By2gnojRebDjXV91tBAAAAApzZWNvbmRVc2VyAQAAACBccg5LrvEhT2bmGUX6aqKx7bE2KVlfGczMsOFNQYhqfQQAAAAJdGhpcmRVc2VyAQAAACCgr5HlLXlDYWEyEq2OufoYWVGdLVNJNsPQo/eoYBk7TgQAAAAPZmlyc3RVc2VyU2lnbmVkAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAFAAAACWZpcnN0VXNlcgAAAAAAAAAAAQMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAABBQAAAAlmaXJzdFVzZXIAAAAAAAAAAAEDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAgUAAAAJZmlyc3RVc2VyAAAAAAAAAAABAAAAAAAAAAAABAAAABBzZWNvbmRVc2VyU2lnbmVkAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAFAAAACnNlY29uZFVzZXIAAAAAAAAAAAEDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAQUAAAAKc2Vjb25kVXNlcgAAAAAAAAAAAQMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAACBQAAAApzZWNvbmRVc2VyAAAAAAAAAAABAAAAAAAAAAAABAAAAA90aGlyZFVzZXJTaWduZWQDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAAJdGhpcmRVc2VyAAAAAAAAAAABAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAEFAAAACXRoaXJkVXNlcgAAAAAAAAAAAQMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAACBQAAAAl0aGlyZFVzZXIAAAAAAAAAAAEAAAAAAAAAAAAEAAAAD3NpZ25hdHVyZXNDb3VudAkAAGQAAAACCQAAZAAAAAIFAAAAD2ZpcnN0VXNlclNpZ25lZAUAAAAQc2Vjb25kVXNlclNpZ25lZAUAAAAPdGhpcmRVc2VyU2lnbmVkBAAAAAckbWF0Y2gwBQAAAAJ0eAkAAGcAAAACBQAAAA9zaWduYXR1cmVzQ291bnQAAAAAAAAAAALddNez", "height": 3398961, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: B7mXXdprvczmQyEEm9yfKnx7vkRgJ4bhhteTWCSVCCpD Next: none Diff:
OldNewDifferences
66 b
77 case _ =>
88 false
9+}
10+
11+
12+func asString (value) = match value {
13+ case s: String =>
14+ s
15+ case s: Int =>
16+ throw("wrong type, expected: String, got: Int")
17+ case s: Unit =>
18+ throw("wrong type, expected: String, got: Unit")
19+ case _ =>
20+ throw("wrong type, expected: String")
921 }
1022
1123
4153 func staticKey_caniFarmingAddress () = "static_canineStakingAddress"
4254
4355
56+func staticKey_itemsAddress () = "static_itemsAddress"
57+
58+
4459 func getOracle () = Address(fromBase58String(tryGetString(staticKey_oracleAddress())))
4560
4661
6075
6176
6277 func getCaniFarmingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_caniFarmingAddress())))
78+
79+
80+func getItemsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_itemsAddress())))
6381
6482
6583 func checkAdditionalPayment (payment) = if (isDefined(payment.assetId))
211229 let finishHeightKey = getHatchingFinishHeightKey(address, txId)
212230 let totalDucksAmount = tryGetInteger("cani_amount")
213231 let eggsNeeded = countEggsNeededAmount(totalDucksAmount)
214- let $t065546606 = $Tuple2((("CANI-" + gen) + "-JU"), "8W-J")
215- let duckGen = $t065546606._1
216- let farmGen = $t065546606._2
232+ let $t069707022 = $Tuple2((("CANI-" + gen) + "-JU"), "8W-J")
233+ let duckGen = $t069707022._1
234+ let farmGen = $t069707022._2
217235 let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}")
218236 let asset = Issue(duckGen, description, 1, 0, false, unit, height)
219237 let assetId = calculateAssetId(asset)
235253 let finishHeightKey = getHatchingFinishHeightKey(address, txId)
236254 let totalDucksAmount = tryGetInteger("cani_amount")
237255 let eggsNeeded = countEggsNeededAmount(totalDucksAmount)
238- let $t081888336 = getRandomName(txId, (valueOrErrorMessage(transactionHeightById(txId), ((txIdStr + " not found ") + toBase58String(txId))) + 1), true)
239- let CANIGen = $t081888336._1
240- let farmGen = $t081888336._2
256+ let $t086048752 = getRandomName(txId, (valueOrErrorMessage(transactionHeightById(txId), ((txIdStr + " not found ") + toBase58String(txId))) + 1), true)
257+ let CANIGen = $t086048752._1
258+ let farmGen = $t086048752._2
241259 let description = (("{\"genotype\": \"" + CANIGen) + "\", \"crossbreeding\": true}")
242260 let asset = Issue(CANIGen, description, 1, 0, false, unit, height)
243261 let assetId = calculateAssetId(asset)
265283 let totalCaniAmount = tryGetInteger("cani_amount")
266284 let eggsNeeded = countEggsNeededAmount(totalCaniAmount)
267285 let results = [StringEntry(getHatchingStatusKey(toString(i.originCaller), i.transactionId), HatchingStarted), IntegerEntry(getHatchingFinishHeightKey(toString(i.originCaller), i.transactionId), (height + delayForHatching)), IntegerEntry("cani_amount", (totalCaniAmount + 1)), IntegerEntry("cani_last_price", (eggsNeeded / 1500000))]
268- let leftToPay = eggsNeeded
269286 let firstPayment = value(i.payments[1])
287+ let leftToPay = if ((size(i.payments) == 3))
288+ then {
289+ let boosterType = asString(invoke(getItemsAddress(), "checkArtefactDetails", [toBase58String(value(value(i.payments[2]).assetId))], nil))
290+ if ((boosterType == boosterType))
291+ then if ((boosterType == "ART-CANCPN"))
292+ then ((eggsNeeded / 100) * 85)
293+ else 100
294+ else throw("Strict value is not equal to itself.")
295+ }
296+ else eggsNeeded
270297 if ((firstPayment.assetId != getMintAssetId()))
271298 then throw("TB: You can attach only WAVES")
272299 else if ((leftToPay > firstPayment.amount))
307334 else if ((hatchingFinishHeight > height))
308335 then throw((((("Hatching is not finished yet " + toString((hatchingFinishHeight - height))) + " blocks remaining, it will take around ") + toString((hatchingFinishHeight - height))) + " minutes"))
309336 else {
310- let $t01189311966 = getRandomName(txId, hatchingFinishHeight, false)
311- let CANIGen = $t01189311966._1
312- let farmGen = $t01189311966._2
337+ let $t01259912672 = getRandomName(txId, hatchingFinishHeight, false)
338+ let CANIGen = $t01259912672._1
339+ let farmGen = $t01259912672._2
313340 let description = (("{\"genotype\": \"" + CANIGen) + "\", \"crossbreeding\": true}")
314341 let asset = Issue(CANIGen, description, 1, 0, false, unit, hatchingFinishHeight)
315342 let assetId = calculateAssetId(asset)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func getBool (key) = match getBoolean(this, key) {
55 case b: Boolean =>
66 b
77 case _ =>
88 false
9+}
10+
11+
12+func asString (value) = match value {
13+ case s: String =>
14+ s
15+ case s: Int =>
16+ throw("wrong type, expected: String, got: Int")
17+ case s: Unit =>
18+ throw("wrong type, expected: String, got: Unit")
19+ case _ =>
20+ throw("wrong type, expected: String")
921 }
1022
1123
1224 func isTestEnv () = getBool("TESTENV")
1325
1426
1527 func tryGetStringExternal (address,key) = match getString(address, key) {
1628 case a: String =>
1729 a
1830 case _ =>
1931 ""
2032 }
2133
2234
2335 func tryGetString (key) = tryGetStringExternal(this, key)
2436
2537
2638 func staticKey_oracleAddress () = "static_oracleAddress"
2739
2840
2941 func staticKey_extraFee () = "static_extraFee"
3042
3143
3244 func staticKey_feeAggregator () = "static_feeAggregator"
3345
3446
3547 func staticKey_refContractAddress () = "static_refContractAddress"
3648
3749
3850 func staticKey_caniRebirthAddress () = "static_canineRebirthAddress"
3951
4052
4153 func staticKey_caniFarmingAddress () = "static_canineStakingAddress"
4254
4355
56+func staticKey_itemsAddress () = "static_itemsAddress"
57+
58+
4459 func getOracle () = Address(fromBase58String(tryGetString(staticKey_oracleAddress())))
4560
4661
4762 func getFeeAggregator () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_feeAggregator())))
4863
4964
5065 func getMintAssetId () = unit
5166
5267
5368 func getBurnAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_burnAddress")))
5469
5570
5671 func getRefContractAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_refContractAddress())))
5772
5873
5974 func getCaniRebirthAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_caniRebirthAddress())))
6075
6176
6277 func getCaniFarmingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_caniFarmingAddress())))
78+
79+
80+func getItemsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_itemsAddress())))
6381
6482
6583 func checkAdditionalPayment (payment) = if (isDefined(payment.assetId))
6684 then throw("BDCAP: Please attach waves")
6785 else {
6886 let feeAmount = getIntegerValue(getOracle(), staticKey_extraFee())
6987 if ((payment.amount != feeAmount))
7088 then throw((("BDCAP: Please attach exactly " + toString(feeAmount)) + " amount of wavelets"))
7189 else [ScriptTransfer(getFeeAggregator(), feeAmount, unit)]
7290 }
7391
7492
7593 let delayForHatching = 2
7694
7795 let HatchingStarted = "HATCHING_STARTED"
7896
7997 let HatchingFinished = "HATCHING_FINISHED"
8098
8199 func isLocked () = {
82100 let masterAddress = Address(base58'3PEPftf2kWZDmAaWBjs6BUJa9957kiA2PkU')
83101 match getInteger(masterAddress, "egglock") {
84102 case b: Int =>
85103 b
86104 case _ =>
87105 0
88106 }
89107 }
90108
91109
92110 func getHatchingStatusKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_status")
93111
94112
95113 func getHatchingFinishHeightKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_fh")
96114
97115
98116 func getCANIIdKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_di")
99117
100118
101119 func getCANIStatsKey (genString) = (("stats_" + genString) + "_amount")
102120
103121
104122 func tryGetInteger (key) = {
105123 let val = match getInteger(this, key) {
106124 case b: Int =>
107125 b
108126 case _ =>
109127 0
110128 }
111129 val
112130 }
113131
114132
115133 let discountCoefficient = tryGetInteger("discountCoefficient")
116134
117135 func getRandomNumber (variants,txId,hatchingFinishHeight,offset) = {
118136 let randomSeedBlock = value(blockInfoByHeight((hatchingFinishHeight - 1)))
119137 let randomHash = sha256((txId + value(randomSeedBlock.vrf)))
120138 (toInt(randomHash, (offset * 8)) % variants)
121139 }
122140
123141
124142 func select (color) = {
125143 let oldGenes = [$Tuple2(("CANI-AAAAAAAA-G" + color), "8A-G")]
126144 let newGenes = [$Tuple2(("CANI-BBBBBBBB-G" + color), "8B-G"), $Tuple2(("CANI-CCCCCCCC-G" + color), "8C-G"), $Tuple2(("CANI-DDDDDDDD-G" + color), "8D-G"), $Tuple2(("CANI-EEEEEEEE-G" + color), "8E-G")]
127145 $Tuple2((oldGenes ++ newGenes), newGenes)
128146 }
129147
130148
131149 func getRandomName (txId,hatchingFinishHeight,all) = {
132150 let colorRandom = getRandomNumber(4, txId, hatchingFinishHeight, 1)
133151 let color = ["A", "B", "C", "D"][colorRandom]
134152 let colorSelect = select(color)
135153 let toPickFrom = if (all)
136154 then colorSelect._1
137155 else colorSelect._2
138156 let typeRandom = getRandomNumber(size(toPickFrom), txId, hatchingFinishHeight, 0)
139157 toPickFrom[typeRandom]
140158 }
141159
142160
143161 let typesAmount = (size(select("R")._2) - 1)
144162
145163 func countEggsNeededAmount (totalCANIsAmount) = {
146164 let n = totalCANIsAmount
147165 let g = discountCoefficient
148166 let t = typesAmount
149167 let price = (pow((100 + ((n * g) / (10 * t))), 2, 5, 1, 2, DOWN) + 55)
150168 (price * 1500000)
151169 }
152170
153171
154172 func asBoolean (value) = match value {
155173 case boolean: Boolean =>
156174 boolean
157175 case _ =>
158176 throw("TI: wrong type, expected: Boolean")
159177 }
160178
161179
162180 @Callable(i)
163181 func reduceRarity (assetId,fGen) = {
164182 let asset = fromBase58String(assetId)
165183 if (if ((i.caller != getCaniRebirthAddress()))
166184 then (i.caller != this)
167185 else false)
168186 then throw("IRR: admin or rebirth only")
169187 else {
170188 let duckGen = value(assetInfo(asset)).name
171189 let letter = takeRight(take(duckGen, 6), 1)
172190 let farmGen = (("8" + letter) + "-G")
173191 [IntegerEntry(getCANIStatsKey(duckGen), (tryGetInteger(getCANIStatsKey(duckGen)) - 1)), IntegerEntry((("stats_" + farmGen) + "_quantity"), (tryGetInteger((("stats_" + farmGen) + "_quantity")) - 1))]
174192 }
175193 }
176194
177195
178196
179197 @Callable(i)
180198 func increaseRarity (assetId,fGen) = {
181199 let asset = fromBase58String(assetId)
182200 if (if ((i.caller != getCaniRebirthAddress()))
183201 then (i.caller != this)
184202 else false)
185203 then throw("IRR: admin or rebirth only")
186204 else {
187205 let duckGen = value(assetInfo(asset)).name
188206 let letter = takeRight(take(duckGen, 6), 1)
189207 let farmGen = (("8" + letter) + "-G")
190208 [IntegerEntry(getCANIStatsKey(duckGen), (tryGetInteger(getCANIStatsKey(duckGen)) + 1)), IntegerEntry((("stats_" + farmGen) + "_quantity"), (tryGetInteger((("stats_" + farmGen) + "_quantity")) + 1))]
191209 }
192210 }
193211
194212
195213
196214 @Callable(i)
197215 func configureOracle (oracle) = if ((i.caller != this))
198216 then throw("ICU: admin only")
199217 else [StringEntry("static_oracleAddress", oracle)]
200218
201219
202220
203221 @Callable(i)
204222 func issueJackpot (address,txIdStr,gen) = if (if ((i.caller != getCaniRebirthAddress()))
205223 then (i.caller != this)
206224 else false)
207225 then throw("ISJ: admin or rebirth only")
208226 else {
209227 let txId = fromBase58String(txIdStr)
210228 let hatchingStatusKey = getHatchingStatusKey(address, txId)
211229 let finishHeightKey = getHatchingFinishHeightKey(address, txId)
212230 let totalDucksAmount = tryGetInteger("cani_amount")
213231 let eggsNeeded = countEggsNeededAmount(totalDucksAmount)
214- let $t065546606 = $Tuple2((("CANI-" + gen) + "-JU"), "8W-J")
215- let duckGen = $t065546606._1
216- let farmGen = $t065546606._2
232+ let $t069707022 = $Tuple2((("CANI-" + gen) + "-JU"), "8W-J")
233+ let duckGen = $t069707022._1
234+ let farmGen = $t069707022._2
217235 let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}")
218236 let asset = Issue(duckGen, description, 1, 0, false, unit, height)
219237 let assetId = calculateAssetId(asset)
220238 let duckIdKey = getCANIIdKey(address, txId)
221239 let valueDuckIdKeyExits = tryGetString(duckIdKey)
222240 if ((valueDuckIdKeyExits != ""))
223241 then throw((("ISJ: You will override following duckId :" + duckIdKey) + " make sure that your txId is unique!"))
224242 else $Tuple2([IntegerEntry(getHatchingFinishHeightKey(address, txId), height), IntegerEntry("cani_amount", (totalDucksAmount + 1)), IntegerEntry("cani_last_price", (eggsNeeded / 1500000)), StringEntry(hatchingStatusKey, HatchingFinished), StringEntry(duckIdKey, toBase58String(assetId)), StringEntry(toBase58String(assetId), duckIdKey), IntegerEntry(getCANIStatsKey(duckGen), (tryGetInteger(getCANIStatsKey(duckGen)) + 1)), IntegerEntry((("stats_" + farmGen) + "_quantity"), (tryGetInteger((("stats_" + farmGen) + "_quantity")) + 1)), asset, ScriptTransfer(value(addressFromString(address)), 1, assetId)], toBase58String(assetId))
225243 }
226244
227245
228246
229247 @Callable(i)
230248 func issueFree (address,txIdStr) = if ((i.caller != getCaniRebirthAddress()))
231249 then throw("CIF: rebirth only")
232250 else {
233251 let txId = fromBase58String(txIdStr)
234252 let hatchingStatusKey = getHatchingStatusKey(address, txId)
235253 let finishHeightKey = getHatchingFinishHeightKey(address, txId)
236254 let totalDucksAmount = tryGetInteger("cani_amount")
237255 let eggsNeeded = countEggsNeededAmount(totalDucksAmount)
238- let $t081888336 = getRandomName(txId, (valueOrErrorMessage(transactionHeightById(txId), ((txIdStr + " not found ") + toBase58String(txId))) + 1), true)
239- let CANIGen = $t081888336._1
240- let farmGen = $t081888336._2
256+ let $t086048752 = getRandomName(txId, (valueOrErrorMessage(transactionHeightById(txId), ((txIdStr + " not found ") + toBase58String(txId))) + 1), true)
257+ let CANIGen = $t086048752._1
258+ let farmGen = $t086048752._2
241259 let description = (("{\"genotype\": \"" + CANIGen) + "\", \"crossbreeding\": true}")
242260 let asset = Issue(CANIGen, description, 1, 0, false, unit, height)
243261 let assetId = calculateAssetId(asset)
244262 let amount = (tryGetInteger(getCANIStatsKey(CANIGen)) + 1)
245263 let duckIdKey = getCANIIdKey(address, txId)
246264 $Tuple2([IntegerEntry(getHatchingFinishHeightKey(address, txId), height), IntegerEntry("cani_amount", (totalDucksAmount + 1)), IntegerEntry("cani_last_price", (eggsNeeded / 1500000)), StringEntry(hatchingStatusKey, HatchingFinished), StringEntry(duckIdKey, toBase58String(assetId)), StringEntry(toBase58String(assetId), duckIdKey), IntegerEntry(getCANIStatsKey(CANIGen), amount), IntegerEntry((("stats_" + farmGen) + "_quantity"), (tryGetInteger((("stats_" + farmGen) + "_quantity")) + 1)), asset, ScriptTransfer(value(addressFromString(address)), 1, assetId)], toBase58String(assetId))
247265 }
248266
249267
250268
251269 @Callable(i)
252270 func setDiscount (val) = if ((i.caller != this))
253271 then throw("admin_only")
254272 else [IntegerEntry("discountCoefficient", val)]
255273
256274
257275
258276 @Callable(i)
259277 func startHatching (refererAddress) = {
260278 let feeValidate = checkAdditionalPayment(i.payments[0])
261279 if ((feeValidate == feeValidate))
262280 then if ((isLocked() > 0))
263281 then throw("EGG operations are temporarily locked")
264282 else {
265283 let totalCaniAmount = tryGetInteger("cani_amount")
266284 let eggsNeeded = countEggsNeededAmount(totalCaniAmount)
267285 let results = [StringEntry(getHatchingStatusKey(toString(i.originCaller), i.transactionId), HatchingStarted), IntegerEntry(getHatchingFinishHeightKey(toString(i.originCaller), i.transactionId), (height + delayForHatching)), IntegerEntry("cani_amount", (totalCaniAmount + 1)), IntegerEntry("cani_last_price", (eggsNeeded / 1500000))]
268- let leftToPay = eggsNeeded
269286 let firstPayment = value(i.payments[1])
287+ let leftToPay = if ((size(i.payments) == 3))
288+ then {
289+ let boosterType = asString(invoke(getItemsAddress(), "checkArtefactDetails", [toBase58String(value(value(i.payments[2]).assetId))], nil))
290+ if ((boosterType == boosterType))
291+ then if ((boosterType == "ART-CANCPN"))
292+ then ((eggsNeeded / 100) * 85)
293+ else 100
294+ else throw("Strict value is not equal to itself.")
295+ }
296+ else eggsNeeded
270297 if ((firstPayment.assetId != getMintAssetId()))
271298 then throw("TB: You can attach only WAVES")
272299 else if ((leftToPay > firstPayment.amount))
273300 then throw(((("TB: To breed a Canine you following amount of WAVES: " + toString(leftToPay)) + " ") + toString(i.caller)))
274301 else {
275302 let addMore = invoke(getCaniFarmingAddress(), "addWavesAndStakeMore", nil, [AttachedPayment(unit, leftToPay)])
276303 if ((addMore == addMore))
277304 then {
278305 let refund = if ((size(i.payments) == 2))
279306 then [ScriptTransfer(i.caller, (i.payments[1].amount - leftToPay), getMintAssetId())]
280307 else nil
281308 ((results ++ refund) ++ feeValidate)
282309 }
283310 else throw("Strict value is not equal to itself.")
284311 }
285312 }
286313 else throw("Strict value is not equal to itself.")
287314 }
288315
289316
290317
291318 @Callable(i)
292319 func finishHatching (txIdStr) = {
293320 let feeValidate = checkAdditionalPayment(i.payments[0])
294321 if ((feeValidate == feeValidate))
295322 then {
296323 let txId = fromBase58String(txIdStr)
297324 let hatchingStatusKey = getHatchingStatusKey(toString(i.caller), txId)
298325 let finishHeightKey = getHatchingFinishHeightKey(toString(i.caller), txId)
299326 let CANIIdKey = getCANIIdKey(toString(i.caller), txId)
300327 let hatchingTxStatus = getStringValue(this, hatchingStatusKey)
301328 let hatchingFinishHeight = getIntegerValue(this, finishHeightKey)
302329 if ((hatchingTxStatus == HatchingFinished))
303330 then {
304331 let CANIId = getStringValue(this, getCANIIdKey(toString(i.caller), txId))
305332 throw(("The Cani was hatched and claimed already, here is the folowing: " + CANIId))
306333 }
307334 else if ((hatchingFinishHeight > height))
308335 then throw((((("Hatching is not finished yet " + toString((hatchingFinishHeight - height))) + " blocks remaining, it will take around ") + toString((hatchingFinishHeight - height))) + " minutes"))
309336 else {
310- let $t01189311966 = getRandomName(txId, hatchingFinishHeight, false)
311- let CANIGen = $t01189311966._1
312- let farmGen = $t01189311966._2
337+ let $t01259912672 = getRandomName(txId, hatchingFinishHeight, false)
338+ let CANIGen = $t01259912672._1
339+ let farmGen = $t01259912672._2
313340 let description = (("{\"genotype\": \"" + CANIGen) + "\", \"crossbreeding\": true}")
314341 let asset = Issue(CANIGen, description, 1, 0, false, unit, hatchingFinishHeight)
315342 let assetId = calculateAssetId(asset)
316343 let amount = (tryGetInteger(getCANIStatsKey(CANIGen)) + 1)
317344 ([StringEntry(hatchingStatusKey, HatchingFinished), StringEntry(CANIIdKey, toBase58String(assetId)), StringEntry(toBase58String(assetId), CANIIdKey), IntegerEntry(getCANIStatsKey(CANIGen), amount), IntegerEntry((("stats_" + farmGen) + "_quantity"), (tryGetInteger((("stats_" + farmGen) + "_quantity")) + 1)), asset, ScriptTransfer(i.caller, 1, assetId)] ++ feeValidate)
318345 }
319346 }
320347 else throw("Strict value is not equal to itself.")
321348 }
322349
323350
324351 @Verifier(tx)
325352 func verify () = if (isTestEnv())
326353 then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
327354 else {
328355 let firstUser = base58'6TdaXEfhnjYquvPf3yV7MFxt2CbgFmaqsvGwkKfXtKi4'
329356 let secondUser = base58'7DsP2WaMLocbHuUxux7pbXRjTrrZ1TFQPsi5QumS3gr8'
330357 let thirdUser = base58'BpFWP3p3JgYrrP45xfrKzeMcWMEXoinj4FVPPkUiA8D3'
331358 let firstUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], firstUser))
332359 then 1
333360 else if (sigVerify(tx.bodyBytes, tx.proofs[1], firstUser))
334361 then 1
335362 else if (sigVerify(tx.bodyBytes, tx.proofs[2], firstUser))
336363 then 1
337364 else 0
338365 let secondUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], secondUser))
339366 then 1
340367 else if (sigVerify(tx.bodyBytes, tx.proofs[1], secondUser))
341368 then 1
342369 else if (sigVerify(tx.bodyBytes, tx.proofs[2], secondUser))
343370 then 1
344371 else 0
345372 let thirdUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], thirdUser))
346373 then 1
347374 else if (sigVerify(tx.bodyBytes, tx.proofs[1], thirdUser))
348375 then 1
349376 else if (sigVerify(tx.bodyBytes, tx.proofs[2], thirdUser))
350377 then 1
351378 else 0
352379 let signaturesCount = ((firstUserSigned + secondUserSigned) + thirdUserSigned)
353380 match tx {
354381 case _ =>
355382 (signaturesCount >= 2)
356383 }
357384 }
358385

github/deemru/w8io/169f3d6 
45.28 ms