tx · B9LBuVZTMsy6RUMf1XdE5XTk1ux7WibSBBdFEk7M4uyY

3MwaAkx6seuusecHhgs3DU2tz7GUqPPA8dL:  -0.02100000 Waves

2024.11.29 00:15 [3391812] smart account 3MwaAkx6seuusecHhgs3DU2tz7GUqPPA8dL > SELF 0.00000000 Waves

{ "type": 13, "id": "B9LBuVZTMsy6RUMf1XdE5XTk1ux7WibSBBdFEk7M4uyY", "fee": 2100000, "feeAssetId": null, "timestamp": 1732828504720, "version": 2, "chainId": 84, "sender": "3MwaAkx6seuusecHhgs3DU2tz7GUqPPA8dL", "senderPublicKey": "FjeRG77B68xCTzgAT7JpFu3esNdvT1QQPdS4qaTWeT83", "proofs": [ "5eZGhcRsAXZFSmtSaGDDQx5HgDkDyJQLYDDYUi9ScuVm9aKGKAFLeUSRDxMhN7U8YA86jmpW2Vc2NeGq2AjwPqis" ], "script": "base64:AAIFAAAAAAAAAC8IAhIECgIICBIDCgEIEgQKAggIEgUKAwgICBIECgIICBIDCgEBEgMKAQgSAwoBCAAAACYBAAAAB2dldEJvb2wAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABBsAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAB0Jvb2xlYW4EAAAAAWIFAAAAByRtYXRjaDAFAAAAAWIHAQAAAAlpc1Rlc3RFbnYAAAAACQEAAAAHZ2V0Qm9vbAAAAAECAAAAB1RFU1RFTlYBAAAACGFzU3RyaW5nAAAAAQAAAAV2YWx1ZQQAAAAHJG1hdGNoMAUAAAAFdmFsdWUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABcwUAAAAHJG1hdGNoMAUAAAABcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFzBQAAAAckbWF0Y2gwCQAAAgAAAAECAAAAJndyb25nIHR5cGUsIGV4cGVjdGVkOiBTdHJpbmcsIGdvdDogSW50AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0BAAAAAFzBQAAAAckbWF0Y2gwCQAAAgAAAAECAAAAJ3dyb25nIHR5cGUsIGV4cGVjdGVkOiBTdHJpbmcsIGdvdDogVW5pdAkAAAIAAAABAgAAABx3cm9uZyB0eXBlLCBleHBlY3RlZDogU3RyaW5nAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIAAAAHYWRkcmVzcwAAAANrZXkEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWECAAAAAAEAAAAMdHJ5R2V0U3RyaW5nAAAAAQAAAANrZXkJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIFAAAABHRoaXMFAAAAA2tleQEAAAAXc3RhdGljS2V5X29yYWNsZUFkZHJlc3MAAAAAAgAAABRzdGF0aWNfb3JhY2xlQWRkcmVzcwEAAAASc3RhdGljS2V5X2V4dHJhRmVlAAAAAAIAAAAPc3RhdGljX2V4dHJhRmVlAQAAABdzdGF0aWNLZXlfZmVlQWdncmVnYXRvcgAAAAACAAAAFHN0YXRpY19mZWVBZ2dyZWdhdG9yAQAAABVzdGF0aWNLZXlfcGV0ZUFzc2V0SWQAAAAAAgAAABJzdGF0aWNfcGV0ZUFzc2V0SWQBAAAAHHN0YXRpY0tleV9yZWZDb250cmFjdEFkZHJlc3MAAAAAAgAAABlzdGF0aWNfcmVmQ29udHJhY3RBZGRyZXNzAQAAAB5zdGF0aWNLZXlfZmVsaW5lUmViaXJ0aEFkZHJlc3MAAAAAAgAAABtzdGF0aWNfZmVsaW5lUmViaXJ0aEFkZHJlc3MBAAAAH3N0YXRpY0tleV9mZWxpbmVzU3Rha2luZ0FkZHJlc3MAAAAAAgAAABtzdGF0aWNfZmVsaW5lU3Rha2luZ0FkZHJlc3MBAAAAFnN0YXRpY0tleV9pdGVtc0FkZHJlc3MAAAAAAgAAABNzdGF0aWNfaXRlbXNBZGRyZXNzAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAADHRyeUdldFN0cmluZwAAAAEJAQAAABdzdGF0aWNLZXlfb3JhY2xlQWRkcmVzcwAAAAABAAAAEGdldEZlZUFnZ3JlZ2F0b3IAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABdzdGF0aWNLZXlfZmVlQWdncmVnYXRvcgAAAAABAAAADmdldFBldGVBc3NldElkAAAAAAkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAFXN0YXRpY0tleV9wZXRlQXNzZXRJZAAAAAABAAAADmdldEJ1cm5BZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABJzdGF0aWNfYnVybkFkZHJlc3MBAAAAFWdldFJlZkNvbnRyYWN0QWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAHHN0YXRpY0tleV9yZWZDb250cmFjdEFkZHJlc3MAAAAAAQAAABdnZXRGZWxpbmVSZWJpcnRoQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAHnN0YXRpY0tleV9mZWxpbmVSZWJpcnRoQWRkcmVzcwAAAAABAAAAF2dldEZlbGluZVN0YWtpbmdBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAfc3RhdGljS2V5X2ZlbGluZXNTdGFraW5nQWRkcmVzcwAAAAABAAAAD2dldEl0ZW1zQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAFnN0YXRpY0tleV9pdGVtc0FkZHJlc3MAAAAAAQAAABZjaGVja0FkZGl0aW9uYWxQYXltZW50AAAAAQAAAAdwYXltZW50AwkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQJAAACAAAAAQIAAAAaQkRDQVA6IFBsZWFzZSBhdHRhY2ggd2F2ZXMEAAAACWZlZUFtb3VudAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABJzdGF0aWNLZXlfZXh0cmFGZWUAAAAAAwkBAAAAAiE9AAAAAggFAAAAB3BheW1lbnQAAAAGYW1vdW50BQAAAAlmZWVBbW91bnQJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAHUJEQ0FQOiBQbGVhc2UgYXR0YWNoIGV4YWN0bHkgCQABpAAAAAEFAAAACWZlZUFtb3VudAIAAAATIGFtb3VudCBvZiB3YXZlbGV0cwkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAQZ2V0RmVlQWdncmVnYXRvcgAAAAAFAAAACWZlZUFtb3VudAUAAAAEdW5pdAUAAAADbmlsAAAAABBkZWxheUZvckhhdGNoaW5nAAAAAAAAAAACAAAAAA9IYXRjaGluZ1N0YXJ0ZWQCAAAAEEhBVENISU5HX1NUQVJURUQAAAAAEEhhdGNoaW5nRmluaXNoZWQCAAAAEUhBVENISU5HX0ZJTklTSEVEAQAAAAhpc0xvY2tlZAAAAAAEAAAADW1hc3RlckFkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVeIsgYh8IDKQaIyACMe/6mJIkg53XAWyQkEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAANbWFzdGVyQWRkcmVzcwIAAAAHZWdnbG9jawMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiAAAAAAAAAAAAAQAAABRnZXRIYXRjaGluZ1N0YXR1c0tleQAAAAIAAAAHYWRkcmVzcwAAAAR0eElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAdhZGRyZXNzAgAAAAFfCQACWAAAAAEFAAAABHR4SWQCAAAAB19zdGF0dXMBAAAAGmdldEhhdGNoaW5nRmluaXNoSGVpZ2h0S2V5AAAAAgAAAAdhZGRyZXNzAAAABHR4SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAAB2FkZHJlc3MCAAAAAV8JAAJYAAAAAQUAAAAEdHhJZAIAAAADX2ZoAQAAAA5nZXRGZWxpbmVJZEtleQAAAAIAAAAHYWRkcmVzcwAAAAR0eElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAdhZGRyZXNzAgAAAAFfCQACWAAAAAEFAAAABHR4SWQCAAAAA19kaQEAAAALZ2V0U3RhdHNLZXkAAAABAAAACWdlblN0cmluZwkAASwAAAACCQABLAAAAAICAAAABnN0YXRzXwUAAAAJZ2VuU3RyaW5nAgAAAAdfYW1vdW50AQAAAA10cnlHZXRJbnRlZ2VyAAAAAQAAAANrZXkEAAAAA3ZhbAQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgAAAAAAAAAAAAUAAAADdmFsAAAAABNkaXNjb3VudENvZWZmaWNpZW50CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAE2Rpc2NvdW50Q29lZmZpY2llbnQBAAAAD2dldFJhbmRvbU51bWJlcgAAAAQAAAAIdmFyaWFudHMAAAAEdHhJZAAAABRoYXRjaGluZ0ZpbmlzaEhlaWdodAAAAAZvZmZzZXQEAAAAD3JhbmRvbVNlZWRCbG9jawkBAAAABXZhbHVlAAAAAQkAA+0AAAABCQAAZQAAAAIFAAAAFGhhdGNoaW5nRmluaXNoSGVpZ2h0AAAAAAAAAAABBAAAAApyYW5kb21IYXNoCQAB9wAAAAEJAADLAAAAAgUAAAAEdHhJZAkBAAAABXZhbHVlAAAAAQgFAAAAD3JhbmRvbVNlZWRCbG9jawAAAAN2cmYJAABqAAAAAgkABLIAAAACBQAAAApyYW5kb21IYXNoCQAAaAAAAAIFAAAABm9mZnNldAAAAAAAAAAACAUAAAAIdmFyaWFudHMBAAAABnNlbGVjdAAAAAEAAAAFY29sb3IEAAAACG9sZEdlbmVzBQAAAANuaWwEAAAACG5ld0dlbmVzCQAETAAAAAIJAAUUAAAAAgkAASwAAAACAgAAAA9GRUxJLUFBQUFBQUFBLUcFAAAABWNvbG9yAgAAAAQ4QS1HCQAETAAAAAIJAAUUAAAAAgkAASwAAAACAgAAAA9GRUxJLUJCQkJCQkJCLUcFAAAABWNvbG9yAgAAAAQ4Qi1HCQAETAAAAAIJAAUUAAAAAgkAASwAAAACAgAAAA9GRUxJLUNDQ0NDQ0NDLUcFAAAABWNvbG9yAgAAAAQ4Qy1HCQAETAAAAAIJAAUUAAAAAgkAASwAAAACAgAAAA9GRUxJLURERERERERELUcFAAAABWNvbG9yAgAAAAQ4RC1HBQAAAANuaWwJAAUUAAAAAgkABE4AAAACBQAAAAhvbGRHZW5lcwUAAAAIbmV3R2VuZXMFAAAACG5ld0dlbmVzAQAAAA1nZXRSYW5kb21OYW1lAAAAAwAAAAR0eElkAAAAFGhhdGNoaW5nRmluaXNoSGVpZ2h0AAAAA2FsbAQAAAALY29sb3JSYW5kb20JAQAAAA9nZXRSYW5kb21OdW1iZXIAAAAEAAAAAAAAAAAEBQAAAAR0eElkBQAAABRoYXRjaGluZ0ZpbmlzaEhlaWdodAAAAAAAAAAAAQQAAAAFY29sb3IJAAGRAAAAAgkABEwAAAACAgAAAAFBCQAETAAAAAICAAAAAUIJAARMAAAAAgIAAAABQwkABEwAAAACAgAAAAFEBQAAAANuaWwFAAAAC2NvbG9yUmFuZG9tBAAAAAtjb2xvclNlbGVjdAkBAAAABnNlbGVjdAAAAAEFAAAABWNvbG9yBAAAAAp0b1BpY2tGcm9tAwUAAAADYWxsCAUAAAALY29sb3JTZWxlY3QAAAACXzEIBQAAAAtjb2xvclNlbGVjdAAAAAJfMgQAAAAKdHlwZVJhbmRvbQkBAAAAD2dldFJhbmRvbU51bWJlcgAAAAQJAAGQAAAAAQUAAAAKdG9QaWNrRnJvbQUAAAAEdHhJZAUAAAAUaGF0Y2hpbmdGaW5pc2hIZWlnaHQAAAAAAAAAAAAJAAGRAAAAAgUAAAAKdG9QaWNrRnJvbQUAAAAKdHlwZVJhbmRvbQAAAAALdHlwZXNBbW91bnQJAABlAAAAAgkAAZAAAAABCAkBAAAABnNlbGVjdAAAAAECAAAAAVIAAAACXzEAAAAAAAAAAAEBAAAAFWNvdW50RWdnc05lZWRlZEFtb3VudAAAAAEAAAASdG90YWxGZWxpbmVzQW1vdW50BAAAAAFuBQAAABJ0b3RhbEZlbGluZXNBbW91bnQEAAAAAWcFAAAAE2Rpc2NvdW50Q29lZmZpY2llbnQEAAAAAXQFAAAAC3R5cGVzQW1vdW50BAAAAAVwcmljZQkAAGQAAAACCQAAbAAAAAYJAABkAAAAAgAAAAAAAAAAZAkAAGkAAAACCQAAaAAAAAIFAAAAAW4FAAAAAWcJAABoAAAAAgAAAAAAAAAACgUAAAABdAAAAAAAAAAAAgAAAAAAAAAABQAAAAAAAAAAAQAAAAAAAAAAAgUAAAAERE9XTgAAAAAAAAAD6AkAAGgAAAACBQAAAAVwcmljZQAAAAAAABbjYAEAAAAJYXNCb29sZWFuAAAAAQAAAAV2YWx1ZQQAAAAHJG1hdGNoMAUAAAAFdmFsdWUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAB0Jvb2xlYW4EAAAAB2Jvb2xlYW4FAAAAByRtYXRjaDAFAAAAB2Jvb2xlYW4JAAACAAAAAQIAAAAhVEk6IHdyb25nIHR5cGUsIGV4cGVjdGVkOiBCb29sZWFuAAAACAAAAAFpAQAAAA5pbmNyZWFzZVJhcml0eQAAAAIAAAAHYXNzZXRJZAAAAAdmYXJtR2VuBAAAAAVhc3NldAkAAlkAAAABBQAAAAdhc3NldElkAwMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgkBAAAAF2dldEZlbGluZVJlYmlydGhBZGRyZXNzAAAAAAkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzBwkAAAIAAAABAgAAABxhZG1pbiwgaXRlbXMgb3IgcmViaXJ0aCBvbmx5BAAAAAdkdWNrR2VuCAkBAAAABXZhbHVlAAAAAQkAA+wAAAABBQAAAAVhc3NldAAAAARuYW1lCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAALZ2V0U3RhdHNLZXkAAAABBQAAAAdkdWNrR2VuCQAAZAAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkBAAAAC2dldFN0YXRzS2V5AAAAAQUAAAAHZHVja0dlbgAAAAAAAAAAAQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAABnN0YXRzXwUAAAAHZmFybUdlbgIAAAAJX3F1YW50aXR5CQAAZAAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAICAAAABnN0YXRzXwUAAAAHZmFybUdlbgIAAAAJX3F1YW50aXR5AAAAAAAAAAABBQAAAANuaWwAAAABaQEAAAAPY29uZmlndXJlT3JhY2xlAAAAAQAAAAZvcmFjbGUDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMJAAACAAAAAQIAAAAPSUNVOiBhZG1pbiBvbmx5CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAAFHN0YXRpY19vcmFjbGVBZGRyZXNzBQAAAAZvcmFjbGUFAAAAA25pbAAAAAFpAQAAAAxyZWR1Y2VSYXJpdHkAAAACAAAAB2Fzc2V0SWQAAAAEZkdlbgQAAAAFYXNzZXQJAAJZAAAAAQUAAAAHYXNzZXRJZAMDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIJAQAAABdnZXRGZWxpbmVSZWJpcnRoQWRkcmVzcwAAAAAJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwcJAAACAAAAAQIAAAAaSVJSOiBhZG1pbiBvciByZWJpcnRoIG9ubHkEAAAAB2R1Y2tHZW4ICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAABWFzc2V0AAAABG5hbWUEAAAABmxldHRlcgkBAAAACXRha2VSaWdodAAAAAIJAAEvAAAAAgUAAAAHZHVja0dlbgAAAAAAAAAABgAAAAAAAAAAAQQAAAAHZmFybUdlbgkAASwAAAACCQABLAAAAAICAAAAATgFAAAABmxldHRlcgIAAAACLUcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAtnZXRTdGF0c0tleQAAAAEFAAAAB2R1Y2tHZW4JAABlAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABCQEAAAALZ2V0U3RhdHNLZXkAAAABBQAAAAdkdWNrR2VuAAAAAAAAAAABCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAGc3RhdHNfBQAAAAdmYXJtR2VuAgAAAAlfcXVhbnRpdHkJAABlAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAGc3RhdHNfBQAAAAdmYXJtR2VuAgAAAAlfcXVhbnRpdHkAAAAAAAAAAAEFAAAAA25pbAAAAAFpAQAAAAxpc3N1ZUphY2twb3QAAAADAAAAB2FkZHJlc3MAAAAHdHhJZFN0cgAAAANnZW4DAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyCQEAAAAXZ2V0RmVsaW5lUmViaXJ0aEFkZHJlc3MAAAAACQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMHCQAAAgAAAAECAAAAGklTSjogYWRtaW4gb3IgcmViaXJ0aCBvbmx5BAAAAAR0eElkCQACWQAAAAEFAAAAB3R4SWRTdHIEAAAAEWhhdGNoaW5nU3RhdHVzS2V5CQEAAAAUZ2V0SGF0Y2hpbmdTdGF0dXNLZXkAAAACBQAAAAdhZGRyZXNzBQAAAAR0eElkBAAAAA9maW5pc2hIZWlnaHRLZXkJAQAAABpnZXRIYXRjaGluZ0ZpbmlzaEhlaWdodEtleQAAAAIFAAAAB2FkZHJlc3MFAAAABHR4SWQEAAAAEHRvdGFsRHVja3NBbW91bnQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQIAAAAOZmVsaW5lc19hbW91bnQEAAAACmVnZ3NOZWVkZWQJAQAAABVjb3VudEVnZ3NOZWVkZWRBbW91bnQAAAABBQAAABB0b3RhbER1Y2tzQW1vdW50BAAAAAskdDA3MDI4NzA4MAkABRQAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAFRkVMSS0FAAAAA2dlbgIAAAADLUpVAgAAAAQ4Vy1KBAAAAAdkdWNrR2VuCAUAAAALJHQwNzAyODcwODAAAAACXzEEAAAAB2Zhcm1HZW4IBQAAAAskdDA3MDI4NzA4MAAAAAJfMgQAAAALZGVzY3JpcHRpb24JAAEsAAAAAgkAASwAAAACAgAAAA57Imdlbm90eXBlIjogIgUAAAAHZHVja0dlbgIAAAAZIiwgImNyb3NzYnJlZWRpbmciOiB0cnVlfQQAAAAFYXNzZXQJAARDAAAABwUAAAAHZHVja0dlbgUAAAALZGVzY3JpcHRpb24AAAAAAAAAAAEAAAAAAAAAAAAHBQAAAAR1bml0BQAAAAZoZWlnaHQEAAAAB2Fzc2V0SWQJAAQ4AAAAAQUAAAAFYXNzZXQEAAAACWR1Y2tJZEtleQkBAAAADmdldEZlbGluZUlkS2V5AAAAAgUAAAAHYWRkcmVzcwUAAAAEdHhJZAQAAAATdmFsdWVEdWNrSWRLZXlFeGl0cwkBAAAADHRyeUdldFN0cmluZwAAAAEFAAAACWR1Y2tJZEtleQMJAQAAAAIhPQAAAAIFAAAAE3ZhbHVlRHVja0lkS2V5RXhpdHMCAAAAAAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAApSVNKOiBZb3Ugd2lsbCBvdmVycmlkZSBmb2xsb3dpbmcgZHVja0lkIDoFAAAACWR1Y2tJZEtleQIAAAAkIG1ha2Ugc3VyZSB0aGF0IHlvdXIgdHhJZCBpcyB1bmlxdWUhCQAFFAAAAAIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABpnZXRIYXRjaGluZ0ZpbmlzaEhlaWdodEtleQAAAAIFAAAAB2FkZHJlc3MFAAAABHR4SWQFAAAABmhlaWdodAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAOZmVsaW5lc19hbW91bnQJAABkAAAAAgUAAAAQdG90YWxEdWNrc0Ftb3VudAAAAAAAAAAAAQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAASZmVsaW5lc19sYXN0X3ByaWNlCQAAaQAAAAIFAAAACmVnZ3NOZWVkZWQAAAAAAAAPQkAJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAARaGF0Y2hpbmdTdGF0dXNLZXkFAAAAEEhhdGNoaW5nRmluaXNoZWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAJZHVja0lkS2V5CQACWAAAAAEFAAAAB2Fzc2V0SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAAlgAAAABBQAAAAdhc3NldElkBQAAAAlkdWNrSWRLZXkJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAtnZXRTdGF0c0tleQAAAAEFAAAAB2R1Y2tHZW4JAABkAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABCQEAAAALZ2V0U3RhdHNLZXkAAAABBQAAAAdkdWNrR2VuAAAAAAAAAAABCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAGc3RhdHNfBQAAAAdmYXJtR2VuAgAAAAlfcXVhbnRpdHkJAABkAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAGc3RhdHNfBQAAAAdmYXJtR2VuAgAAAAlfcXVhbnRpdHkAAAAAAAAAAAEJAARMAAAAAgUAAAAFYXNzZXQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAABXZhbHVlAAAAAQkABCYAAAABBQAAAAdhZGRyZXNzAAAAAAAAAAABBQAAAAdhc3NldElkBQAAAANuaWwJAAJYAAAAAQUAAAAHYXNzZXRJZAAAAAFpAQAAAAlpc3N1ZUZyZWUAAAACAAAAB2FkZHJlc3MAAAAHdHhJZFN0cgMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgkBAAAAF2dldEZlbGluZVJlYmlydGhBZGRyZXNzAAAAAAkAAAIAAAABAgAAABJGSVNGOiByZWJpcnRoIG9ubHkEAAAABHR4SWQJAAJZAAAAAQUAAAAHdHhJZFN0cgQAAAARaGF0Y2hpbmdTdGF0dXNLZXkJAQAAABRnZXRIYXRjaGluZ1N0YXR1c0tleQAAAAIFAAAAB2FkZHJlc3MFAAAABHR4SWQEAAAAD2ZpbmlzaEhlaWdodEtleQkBAAAAGmdldEhhdGNoaW5nRmluaXNoSGVpZ2h0S2V5AAAAAgUAAAAHYWRkcmVzcwUAAAAEdHhJZAQAAAAQdG90YWxEdWNrc0Ftb3VudAkBAAAADXRyeUdldEludGVnZXIAAAABAgAAAA5mZWxpbmVzX2Ftb3VudAQAAAAKZWdnc05lZWRlZAkBAAAAFWNvdW50RWdnc05lZWRlZEFtb3VudAAAAAEFAAAAEHRvdGFsRHVja3NBbW91bnQEAAAACyR0MDg2Njg4ODE4CQEAAAANZ2V0UmFuZG9tTmFtZQAAAAMFAAAABHR4SWQJAABkAAAAAgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAD6QAAAAEFAAAABHR4SWQJAAEsAAAAAgkAASwAAAACBQAAAAd0eElkU3RyAgAAAAsgbm90IGZvdW5kIAkAAlgAAAABBQAAAAR0eElkAAAAAAAAAAABBgQAAAAJRmVsaW5lR2VuCAUAAAALJHQwODY2ODg4MTgAAAACXzEEAAAAB2Zhcm1HZW4IBQAAAAskdDA4NjY4ODgxOAAAAAJfMgQAAAALZGVzY3JpcHRpb24JAAEsAAAAAgkAASwAAAACAgAAAA57Imdlbm90eXBlIjogIgUAAAAJRmVsaW5lR2VuAgAAABkiLCAiY3Jvc3NicmVlZGluZyI6IHRydWV9BAAAAAVhc3NldAkABEMAAAAHBQAAAAlGZWxpbmVHZW4FAAAAC2Rlc2NyaXB0aW9uAAAAAAAAAAABAAAAAAAAAAAABwUAAAAEdW5pdAUAAAAGaGVpZ2h0BAAAAAdhc3NldElk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FmNoZWNrQWRkaXRpb25hbFBheW1lbnQAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAwkAAAAAAAACBQAAAAtmZWVWYWxpZGF0ZQUAAAALZmVlVmFsaWRhdGUEAAAABHR4SWQJAAJZAAAAAQUAAAAHdHhJZFN0cgQAAAARaGF0Y2hpbmdTdGF0dXNLZXkJAQAAABRnZXRIYXRjaGluZ1N0YXR1c0tleQAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAR0eElkBAAAAA9maW5pc2hIZWlnaHRLZXkJAQAAABpnZXRIYXRjaGluZ0ZpbmlzaEhlaWdodEtleQAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAR0eElkBAAAAAtGZWxpbmVJZEtleQkBAAAADmdldEZlbGluZUlkS2V5AAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAABHR4SWQEAAAAEGhhdGNoaW5nVHhTdGF0dXMJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMFAAAAEWhhdGNoaW5nU3RhdHVzS2V5BAAAABRoYXRjaGluZ0ZpbmlzaEhlaWdodAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwUAAAAPZmluaXNoSGVpZ2h0S2V5AwkAAAAAAAACBQAAABBoYXRjaGluZ1R4U3RhdHVzBQAAABBIYXRjaGluZ0ZpbmlzaGVkBAAAAAhGZWxpbmVJZAkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwkBAAAADmdldEZlbGluZUlkS2V5AAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAABHR4SWQJAAACAAAAAQkAASwAAAACAgAAAEJUaGUgRmVsaW5lIHdhcyBoYXRjaGVkIGFuZCBjbGFpbWVkIGFscmVhZHksIGhlcmUgaXMgdGhlIGZvbG93aW5nOiAFAAAACEZlbGluZUlkAwkAAGYAAAACBQAAABRoYXRjaGluZ0ZpbmlzaEhlaWdodAUAAAAGaGVpZ2h0CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAdSGF0Y2hpbmcgaXMgbm90IGZpbmlzaGVkIHlldCAJAAGkAAAAAQkAAGUAAAACBQAAABRoYXRjaGluZ0ZpbmlzaEhlaWdodAUAAAAGaGVpZ2h0AgAAACcgYmxvY2tzIHJlbWFpbmluZywgaXQgd2lsbCB0YWtlIGFyb3VuZCAJAAGkAAAAAQkAAGUAAAACBQAAABRoYXRjaGluZ0ZpbmlzaEhlaWdodAUAAAAGaGVpZ2h0AgAAAAggbWludXRlcwQAAAANJHQwMTI3ODUxMjg2MAkBAAAADWdldFJhbmRvbU5hbWUAAAADBQAAAAR0eElkBQAAABRoYXRjaGluZ0ZpbmlzaEhlaWdodAcEAAAACUZlbGluZUdlbggFAAAADSR0MDEyNzg1MTI4NjAAAAACXzEEAAAAB2Zhcm1HZW4IBQAAAA0kdDAxMjc4NTEyODYwAAAAAl8yBAAAAAtkZXNjcmlwdGlvbgkAASwAAAACCQABLAAAAAICAAAADnsiZ2Vub3R5cGUiOiAiBQAAAAlGZWxpbmVHZW4CAAAAGSIsICJjcm9zc2JyZWVkaW5nIjogdHJ1ZX0EAAAABWFzc2V0CQAEQwAAAAcFAAAACUZlbGluZUdlbgUAAAALZGVzY3JpcHRpb24AAAAAAAAAAAEAAAAAAAAAAAAHBQAAAAR1bml0BQAAABRoYXRjaGluZ0ZpbmlzaEhlaWdodAQAAAAHYXNzZXRJZAkABDgAAAABBQAAAAVhc3NldAQAAAAGYW1vdW50CQAAZAAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkBAAAAC2dldFN0YXRzS2V5AAAAAQUAAAAJRmVsaW5lR2VuAAAAAAAAAAABCQAETgAAAAIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAARaGF0Y2hpbmdTdGF0dXNLZXkFAAAAEEhhdGNoaW5nRmluaXNoZWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAALRmVsaW5lSWRLZXkJAAJYAAAAAQUAAAAHYXNzZXRJZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQACWAAAAAEFAAAAB2Fzc2V0SWQFAAAAC0ZlbGluZUlkS2V5CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAALZ2V0U3RhdHNL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", "height": 3391812, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8AeX5kpNBxtX7giQS2PMtvposkGGqLJtNzqeW8Fpiunz Next: 6L5y4M6QATcjJhvjeqjeQkbrUceWaP1XnEFpKExEjYA2 Diff:
OldNewDifferences
287287 let firstPayment = value(i.payments[1])
288288 let leftToPay = if ((size(i.payments) == 3))
289289 then {
290- let boosterType = asString(invoke(getItemsAddress(), "checkArtefactDetails", [value(i.payments[2]).assetId], nil))
290+ let boosterType = asString(invoke(getItemsAddress(), "checkArtefactDetails", [toBase58String(value(value(i.payments[2]).assetId))], nil))
291291 if ((boosterType == boosterType))
292292 then if ((boosterType == "ART-FELCPN"))
293293 then ((eggsNeeded / 100) * 85)
335335 else if ((hatchingFinishHeight > height))
336336 then throw((((("Hatching is not finished yet " + toString((hatchingFinishHeight - height))) + " blocks remaining, it will take around ") + toString((hatchingFinishHeight - height))) + " minutes"))
337337 else {
338- let $t01276012835 = getRandomName(txId, hatchingFinishHeight, false)
339- let FelineGen = $t01276012835._1
340- let farmGen = $t01276012835._2
338+ let $t01278512860 = getRandomName(txId, hatchingFinishHeight, false)
339+ let FelineGen = $t01278512860._1
340+ let farmGen = $t01278512860._2
341341 let description = (("{\"genotype\": \"" + FelineGen) + "\", \"crossbreeding\": true}")
342342 let asset = Issue(FelineGen, description, 1, 0, false, unit, hatchingFinishHeight)
343343 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
99 }
1010
1111
1212 func isTestEnv () = getBool("TESTENV")
1313
1414
1515 func asString (value) = match value {
1616 case s: String =>
1717 s
1818 case s: Int =>
1919 throw("wrong type, expected: String, got: Int")
2020 case s: Unit =>
2121 throw("wrong type, expected: String, got: Unit")
2222 case _ =>
2323 throw("wrong type, expected: String")
2424 }
2525
2626
2727 func tryGetStringExternal (address,key) = match getString(address, key) {
2828 case a: String =>
2929 a
3030 case _ =>
3131 ""
3232 }
3333
3434
3535 func tryGetString (key) = tryGetStringExternal(this, key)
3636
3737
3838 func staticKey_oracleAddress () = "static_oracleAddress"
3939
4040
4141 func staticKey_extraFee () = "static_extraFee"
4242
4343
4444 func staticKey_feeAggregator () = "static_feeAggregator"
4545
4646
4747 func staticKey_peteAssetId () = "static_peteAssetId"
4848
4949
5050 func staticKey_refContractAddress () = "static_refContractAddress"
5151
5252
5353 func staticKey_felineRebirthAddress () = "static_felineRebirthAddress"
5454
5555
5656 func staticKey_felinesStakingAddress () = "static_felineStakingAddress"
5757
5858
5959 func staticKey_itemsAddress () = "static_itemsAddress"
6060
6161
6262 func getOracle () = Address(fromBase58String(tryGetString(staticKey_oracleAddress())))
6363
6464
6565 func getFeeAggregator () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_feeAggregator())))
6666
6767
6868 func getPeteAssetId () = fromBase58String(tryGetStringExternal(getOracle(), staticKey_peteAssetId()))
6969
7070
7171 func getBurnAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_burnAddress")))
7272
7373
7474 func getRefContractAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_refContractAddress())))
7575
7676
7777 func getFelineRebirthAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_felineRebirthAddress())))
7878
7979
8080 func getFelineStakingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_felinesStakingAddress())))
8181
8282
8383 func getItemsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_itemsAddress())))
8484
8585
8686 func checkAdditionalPayment (payment) = if (isDefined(payment.assetId))
8787 then throw("BDCAP: Please attach waves")
8888 else {
8989 let feeAmount = getIntegerValue(getOracle(), staticKey_extraFee())
9090 if ((payment.amount != feeAmount))
9191 then throw((("BDCAP: Please attach exactly " + toString(feeAmount)) + " amount of wavelets"))
9292 else [ScriptTransfer(getFeeAggregator(), feeAmount, unit)]
9393 }
9494
9595
9696 let delayForHatching = 2
9797
9898 let HatchingStarted = "HATCHING_STARTED"
9999
100100 let HatchingFinished = "HATCHING_FINISHED"
101101
102102 func isLocked () = {
103103 let masterAddress = Address(base58'3PEPftf2kWZDmAaWBjs6BUJa9957kiA2PkU')
104104 match getInteger(masterAddress, "egglock") {
105105 case b: Int =>
106106 b
107107 case _ =>
108108 0
109109 }
110110 }
111111
112112
113113 func getHatchingStatusKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_status")
114114
115115
116116 func getHatchingFinishHeightKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_fh")
117117
118118
119119 func getFelineIdKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_di")
120120
121121
122122 func getStatsKey (genString) = (("stats_" + genString) + "_amount")
123123
124124
125125 func tryGetInteger (key) = {
126126 let val = match getInteger(this, key) {
127127 case b: Int =>
128128 b
129129 case _ =>
130130 0
131131 }
132132 val
133133 }
134134
135135
136136 let discountCoefficient = tryGetInteger("discountCoefficient")
137137
138138 func getRandomNumber (variants,txId,hatchingFinishHeight,offset) = {
139139 let randomSeedBlock = value(blockInfoByHeight((hatchingFinishHeight - 1)))
140140 let randomHash = sha256((txId + value(randomSeedBlock.vrf)))
141141 (toInt(randomHash, (offset * 8)) % variants)
142142 }
143143
144144
145145 func select (color) = {
146146 let oldGenes = nil
147147 let newGenes = [$Tuple2(("FELI-AAAAAAAA-G" + color), "8A-G"), $Tuple2(("FELI-BBBBBBBB-G" + color), "8B-G"), $Tuple2(("FELI-CCCCCCCC-G" + color), "8C-G"), $Tuple2(("FELI-DDDDDDDD-G" + color), "8D-G")]
148148 $Tuple2((oldGenes ++ newGenes), newGenes)
149149 }
150150
151151
152152 func getRandomName (txId,hatchingFinishHeight,all) = {
153153 let colorRandom = getRandomNumber(4, txId, hatchingFinishHeight, 1)
154154 let color = ["A", "B", "C", "D"][colorRandom]
155155 let colorSelect = select(color)
156156 let toPickFrom = if (all)
157157 then colorSelect._1
158158 else colorSelect._2
159159 let typeRandom = getRandomNumber(size(toPickFrom), txId, hatchingFinishHeight, 0)
160160 toPickFrom[typeRandom]
161161 }
162162
163163
164164 let typesAmount = (size(select("R")._1) - 1)
165165
166166 func countEggsNeededAmount (totalFelinesAmount) = {
167167 let n = totalFelinesAmount
168168 let g = discountCoefficient
169169 let t = typesAmount
170170 let price = (pow((100 + ((n * g) / (10 * t))), 2, 5, 1, 2, DOWN) + 1000)
171171 (price * 1500000)
172172 }
173173
174174
175175 func asBoolean (value) = match value {
176176 case boolean: Boolean =>
177177 boolean
178178 case _ =>
179179 throw("TI: wrong type, expected: Boolean")
180180 }
181181
182182
183183 @Callable(i)
184184 func increaseRarity (assetId,farmGen) = {
185185 let asset = fromBase58String(assetId)
186186 if (if ((i.caller != getFelineRebirthAddress()))
187187 then (i.caller != this)
188188 else false)
189189 then throw("admin, items or rebirth only")
190190 else {
191191 let duckGen = value(assetInfo(asset)).name
192192 [IntegerEntry(getStatsKey(duckGen), (tryGetInteger(getStatsKey(duckGen)) + 1)), IntegerEntry((("stats_" + farmGen) + "_quantity"), (tryGetInteger((("stats_" + farmGen) + "_quantity")) + 1))]
193193 }
194194 }
195195
196196
197197
198198 @Callable(i)
199199 func configureOracle (oracle) = if ((i.caller != this))
200200 then throw("ICU: admin only")
201201 else [StringEntry("static_oracleAddress", oracle)]
202202
203203
204204
205205 @Callable(i)
206206 func reduceRarity (assetId,fGen) = {
207207 let asset = fromBase58String(assetId)
208208 if (if ((i.caller != getFelineRebirthAddress()))
209209 then (i.caller != this)
210210 else false)
211211 then throw("IRR: admin or rebirth only")
212212 else {
213213 let duckGen = value(assetInfo(asset)).name
214214 let letter = takeRight(take(duckGen, 6), 1)
215215 let farmGen = (("8" + letter) + "-G")
216216 [IntegerEntry(getStatsKey(duckGen), (tryGetInteger(getStatsKey(duckGen)) - 1)), IntegerEntry((("stats_" + farmGen) + "_quantity"), (tryGetInteger((("stats_" + farmGen) + "_quantity")) - 1))]
217217 }
218218 }
219219
220220
221221
222222 @Callable(i)
223223 func issueJackpot (address,txIdStr,gen) = if (if ((i.caller != getFelineRebirthAddress()))
224224 then (i.caller != this)
225225 else false)
226226 then throw("ISJ: admin or rebirth only")
227227 else {
228228 let txId = fromBase58String(txIdStr)
229229 let hatchingStatusKey = getHatchingStatusKey(address, txId)
230230 let finishHeightKey = getHatchingFinishHeightKey(address, txId)
231231 let totalDucksAmount = tryGetInteger("felines_amount")
232232 let eggsNeeded = countEggsNeededAmount(totalDucksAmount)
233233 let $t070287080 = $Tuple2((("FELI-" + gen) + "-JU"), "8W-J")
234234 let duckGen = $t070287080._1
235235 let farmGen = $t070287080._2
236236 let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}")
237237 let asset = Issue(duckGen, description, 1, 0, false, unit, height)
238238 let assetId = calculateAssetId(asset)
239239 let duckIdKey = getFelineIdKey(address, txId)
240240 let valueDuckIdKeyExits = tryGetString(duckIdKey)
241241 if ((valueDuckIdKeyExits != ""))
242242 then throw((("ISJ: You will override following duckId :" + duckIdKey) + " make sure that your txId is unique!"))
243243 else $Tuple2([IntegerEntry(getHatchingFinishHeightKey(address, txId), height), IntegerEntry("felines_amount", (totalDucksAmount + 1)), IntegerEntry("felines_last_price", (eggsNeeded / 1000000)), StringEntry(hatchingStatusKey, HatchingFinished), StringEntry(duckIdKey, toBase58String(assetId)), StringEntry(toBase58String(assetId), duckIdKey), IntegerEntry(getStatsKey(duckGen), (tryGetInteger(getStatsKey(duckGen)) + 1)), IntegerEntry((("stats_" + farmGen) + "_quantity"), (tryGetInteger((("stats_" + farmGen) + "_quantity")) + 1)), asset, ScriptTransfer(value(addressFromString(address)), 1, assetId)], toBase58String(assetId))
244244 }
245245
246246
247247
248248 @Callable(i)
249249 func issueFree (address,txIdStr) = if ((i.caller != getFelineRebirthAddress()))
250250 then throw("FISF: rebirth only")
251251 else {
252252 let txId = fromBase58String(txIdStr)
253253 let hatchingStatusKey = getHatchingStatusKey(address, txId)
254254 let finishHeightKey = getHatchingFinishHeightKey(address, txId)
255255 let totalDucksAmount = tryGetInteger("felines_amount")
256256 let eggsNeeded = countEggsNeededAmount(totalDucksAmount)
257257 let $t086688818 = getRandomName(txId, (valueOrErrorMessage(transactionHeightById(txId), ((txIdStr + " not found ") + toBase58String(txId))) + 1), true)
258258 let FelineGen = $t086688818._1
259259 let farmGen = $t086688818._2
260260 let description = (("{\"genotype\": \"" + FelineGen) + "\", \"crossbreeding\": true}")
261261 let asset = Issue(FelineGen, description, 1, 0, false, unit, height)
262262 let assetId = calculateAssetId(asset)
263263 let amount = (tryGetInteger(getStatsKey(FelineGen)) + 1)
264264 let duckIdKey = getFelineIdKey(address, txId)
265265 $Tuple2([IntegerEntry(getHatchingFinishHeightKey(address, txId), height), IntegerEntry("felines_amount", (totalDucksAmount + 1)), IntegerEntry("felines_last_price", (eggsNeeded / 1500000)), StringEntry(hatchingStatusKey, HatchingFinished), StringEntry(duckIdKey, toBase58String(assetId)), StringEntry(toBase58String(assetId), duckIdKey), IntegerEntry(getStatsKey(FelineGen), amount), IntegerEntry((("stats_" + farmGen) + "_quantity"), (tryGetInteger((("stats_" + farmGen) + "_quantity")) + 1)), asset, ScriptTransfer(value(addressFromString(address)), 1, assetId)], toBase58String(assetId))
266266 }
267267
268268
269269
270270 @Callable(i)
271271 func setDiscount (val) = if ((i.caller != this))
272272 then throw("admin_only")
273273 else [IntegerEntry("discountCoefficient", val)]
274274
275275
276276
277277 @Callable(i)
278278 func startHatching (refererAddress) = {
279279 let feeValidate = checkAdditionalPayment(i.payments[0])
280280 if ((feeValidate == feeValidate))
281281 then if ((isLocked() > 0))
282282 then throw("EGG operations are temporarily locked")
283283 else {
284284 let totalFelineAmount = tryGetInteger("felines_amount")
285285 let eggsNeeded = countEggsNeededAmount(totalFelineAmount)
286286 let results = [StringEntry(getHatchingStatusKey(toString(i.originCaller), i.transactionId), HatchingStarted), IntegerEntry(getHatchingFinishHeightKey(toString(i.originCaller), i.transactionId), (height + delayForHatching)), IntegerEntry("felines_amount", (totalFelineAmount + 1)), IntegerEntry("felines_last_price", (eggsNeeded / 1500000))]
287287 let firstPayment = value(i.payments[1])
288288 let leftToPay = if ((size(i.payments) == 3))
289289 then {
290- let boosterType = asString(invoke(getItemsAddress(), "checkArtefactDetails", [value(i.payments[2]).assetId], nil))
290+ let boosterType = asString(invoke(getItemsAddress(), "checkArtefactDetails", [toBase58String(value(value(i.payments[2]).assetId))], nil))
291291 if ((boosterType == boosterType))
292292 then if ((boosterType == "ART-FELCPN"))
293293 then ((eggsNeeded / 100) * 85)
294294 else 100
295295 else throw("Strict value is not equal to itself.")
296296 }
297297 else eggsNeeded
298298 if ((firstPayment.assetId != getPeteAssetId()))
299299 then throw(("TB: You can attach only EGG tokens with the following asset id: " + toBase58String(getPeteAssetId())))
300300 else if ((leftToPay > firstPayment.amount))
301301 then throw(((("TB: To breed a Feline you following amount of EGGlets: " + toString(leftToPay)) + " ") + toString(i.caller)))
302302 else {
303303 let addMore = invoke(getFelineStakingAddress(), "addPeteAndStakeMore", nil, [AttachedPayment(getPeteAssetId(), leftToPay)])
304304 if ((addMore == addMore))
305305 then {
306306 let refund = if ((size(i.payments) == 2))
307307 then [ScriptTransfer(i.caller, (i.payments[1].amount - leftToPay), getPeteAssetId())]
308308 else nil
309309 ((results ++ refund) ++ feeValidate)
310310 }
311311 else throw("Strict value is not equal to itself.")
312312 }
313313 }
314314 else throw("Strict value is not equal to itself.")
315315 }
316316
317317
318318
319319 @Callable(i)
320320 func finishHatching (txIdStr) = {
321321 let feeValidate = checkAdditionalPayment(i.payments[0])
322322 if ((feeValidate == feeValidate))
323323 then {
324324 let txId = fromBase58String(txIdStr)
325325 let hatchingStatusKey = getHatchingStatusKey(toString(i.caller), txId)
326326 let finishHeightKey = getHatchingFinishHeightKey(toString(i.caller), txId)
327327 let FelineIdKey = getFelineIdKey(toString(i.caller), txId)
328328 let hatchingTxStatus = getStringValue(this, hatchingStatusKey)
329329 let hatchingFinishHeight = getIntegerValue(this, finishHeightKey)
330330 if ((hatchingTxStatus == HatchingFinished))
331331 then {
332332 let FelineId = getStringValue(this, getFelineIdKey(toString(i.caller), txId))
333333 throw(("The Feline was hatched and claimed already, here is the folowing: " + FelineId))
334334 }
335335 else if ((hatchingFinishHeight > height))
336336 then throw((((("Hatching is not finished yet " + toString((hatchingFinishHeight - height))) + " blocks remaining, it will take around ") + toString((hatchingFinishHeight - height))) + " minutes"))
337337 else {
338- let $t01276012835 = getRandomName(txId, hatchingFinishHeight, false)
339- let FelineGen = $t01276012835._1
340- let farmGen = $t01276012835._2
338+ let $t01278512860 = getRandomName(txId, hatchingFinishHeight, false)
339+ let FelineGen = $t01278512860._1
340+ let farmGen = $t01278512860._2
341341 let description = (("{\"genotype\": \"" + FelineGen) + "\", \"crossbreeding\": true}")
342342 let asset = Issue(FelineGen, description, 1, 0, false, unit, hatchingFinishHeight)
343343 let assetId = calculateAssetId(asset)
344344 let amount = (tryGetInteger(getStatsKey(FelineGen)) + 1)
345345 ([StringEntry(hatchingStatusKey, HatchingFinished), StringEntry(FelineIdKey, toBase58String(assetId)), StringEntry(toBase58String(assetId), FelineIdKey), IntegerEntry(getStatsKey(FelineGen), amount), IntegerEntry((("stats_" + farmGen) + "_quantity"), (tryGetInteger((("stats_" + farmGen) + "_quantity")) + 1)), asset, ScriptTransfer(i.caller, 1, assetId)] ++ feeValidate)
346346 }
347347 }
348348 else throw("Strict value is not equal to itself.")
349349 }
350350
351351
352352 @Verifier(tx)
353353 func verify () = if (isTestEnv())
354354 then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
355355 else {
356356 let firstUser = base58'6TdaXEfhnjYquvPf3yV7MFxt2CbgFmaqsvGwkKfXtKi4'
357357 let secondUser = base58'7DsP2WaMLocbHuUxux7pbXRjTrrZ1TFQPsi5QumS3gr8'
358358 let thirdUser = base58'BpFWP3p3JgYrrP45xfrKzeMcWMEXoinj4FVPPkUiA8D3'
359359 let firstUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], firstUser))
360360 then 1
361361 else if (sigVerify(tx.bodyBytes, tx.proofs[1], firstUser))
362362 then 1
363363 else if (sigVerify(tx.bodyBytes, tx.proofs[2], firstUser))
364364 then 1
365365 else 0
366366 let secondUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], secondUser))
367367 then 1
368368 else if (sigVerify(tx.bodyBytes, tx.proofs[1], secondUser))
369369 then 1
370370 else if (sigVerify(tx.bodyBytes, tx.proofs[2], secondUser))
371371 then 1
372372 else 0
373373 let thirdUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], thirdUser))
374374 then 1
375375 else if (sigVerify(tx.bodyBytes, tx.proofs[1], thirdUser))
376376 then 1
377377 else if (sigVerify(tx.bodyBytes, tx.proofs[2], thirdUser))
378378 then 1
379379 else 0
380380 let signaturesCount = ((firstUserSigned + secondUserSigned) + thirdUserSigned)
381381 match tx {
382382 case _ =>
383383 (signaturesCount >= 2)
384384 }
385385 }
386386

github/deemru/w8io/169f3d6 
58.69 ms