tx · CPsNQUsi7JHBHuThqPASgbSfCzU1kz2s2pyZ5Lw98Rjm

3PH75p2rmMKCV2nyW4TsAdFgFtmc61mJaqA:  -0.01400000 Waves

2022.05.28 10:24 [3136727] smart account 3PH75p2rmMKCV2nyW4TsAdFgFtmc61mJaqA > SELF 0.00000000 Waves

{ "type": 13, "id": "CPsNQUsi7JHBHuThqPASgbSfCzU1kz2s2pyZ5Lw98Rjm", "fee": 1400000, "feeAssetId": null, "timestamp": 1653722744155, "version": 2, "chainId": 87, "sender": "3PH75p2rmMKCV2nyW4TsAdFgFtmc61mJaqA", "senderPublicKey": "3GtkwhnMmG1yeozW51o4dJ1x3BDToPaLBXyBWKGdAc2e", "proofs": [ "3AcCNCpLkcGCZBeg7u62LfUahyzuBRhFyvgGoCrQomE9vo4FP3BHNrhEQ9muVUprkUMevhQbSf92BHosftfgT8zT" ], "script": "base64:AAIFAAAAAAAAAC0IAhIDCgEIEgASBAoCCAgSBAoCCAgSABIAEgMKAQgSAwoBCBIDCgEIEgMKAQgAAAAnAAAAAApwZXJjaFByaWNlCQAAaAAAAAIAAAAAAAAAAGQAAAAAAAAPQkAAAAAABXNjYWxlAAAAAAAAACcQAAAAAAZzY2FsZTIAAAAAAAAPQkABAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgAAAAdhZGRyZXNzAAAAA2tleQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAdhZGRyZXNzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQIAAAAAAQAAAAx0cnlHZXRTdHJpbmcAAAABAAAAA2tleQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgUAAAAEdGhpcwUAAAADa2V5AQAAAAlnZXRPcmFjbGUAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAADHRyeUdldFN0cmluZwAAAAECAAAAFHN0YXRpY19vcmFjbGVBZGRyZXNzAQAAAA1nZXRFZ2dBc3NldElkAAAAAAkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAARc3RhdGljX2VnZ0Fzc2V0SWQBAAAAE2dldEluY3ViYXRvckFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAF3N0YXRpY19pbmN1YmF0b3JBZGRyZXNzAQAAABFnZXRSZWJpcnRoQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAAVc3RhdGljX3JlYmlydGhBZGRyZXNzAQAAABNnZXRTd29wUHJvbW9BZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABdzdGF0aWNfc3dvcFByb21vQWRkcmVzcwEAAAARZ2V0QnJlZWRlckFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAFXN0YXRpY19icmVlZGVyQWRkcmVzcwEAAAAVZ2V0UmVmQ29udHJhY3RBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABlzdGF0aWNfcmVmQ29udHJhY3RBZGRyZXNzAQAAAA9nZXRJdGVtc0FkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAE3N0YXRpY19pdGVtc0FkZHJlc3MBAAAAEmdldE1ldGFyYWNlQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAAWc3RhdGljX21ldGFSYWNlQWRkcmVzcwEAAAAUZ2V0QWNjQm9vc3RlckFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAGHN0YXRpY19hY2NCb29zdGVyQWRkcmVzcwEAAAATZ2V0VHJ1c3RlZENvbnRyYWN0cwAAAAAJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABdzdGF0aWNfdHJ1c3RlZENvbnRyYWN0cwEAAAAOZ2V0TWFpbnRlbmFuY2UAAAAACQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAASc3RhdGljX21haW50ZW5hbmNlAQAAABJnZXRDZk1hc3RlckFk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AAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAdhc3NldElkAgAAAA1fZmFybWluZ1Bvd2VyAQAAAA5nZXRBc3NldHNCeUdlbgAAAAEAAAADZ2VuBAAAAAFzCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQkAASwAAAACAgAAAAdhc3NldHNfBQAAAANnZW4DCQAAAAAAAAIFAAAAAXMCAAAAAAUAAAADbmlsCQAEtQAAAAIFAAAAAXMCAAAAASwBAAAADGNhbGNJbnRlcmVzdAAAAAMAAAAQcHJldmlvdXNJbnRlcmVzdAAAABZwcmV2aW91c0ludGVyZXN0SGVpZ2h0AAAAEXRvdGFsRmFybWluZ1Bvd2VyCQAAZAAAAAIFAAAAEHByZXZpb3VzSW50ZXJlc3QJAABpAAAAAgkAAGgAAAACCQAAaAAAAAIFAAAABXNjYWxlCQEAAAARZ2V0UmV3YXJkUGVyQmxvY2sAAAAACQAAZQAAAAIFAAAABmhlaWdodAUAAAAWcHJldmlvdXNJbnRlcmVzdEhlaWdodAUAAAARdG90YWxGYXJtaW5nUG93ZXIBAAAAEmdldEN1cnJlbnRJbnRlcmVzdAAAAAADCQAAZgAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQIAAAASdG90YWxfZmFybWluZ1Bvd2VyAAAAAAAAAAAABAAAABBwcmV2aW91c0ludGVyZXN0CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAF3RvdGFsX2xhc3RDaGVja0ludGVyZXN0BAAAABZwcmV2aW91c0ludGVyZXN0SGVpZ2h0CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAHXRvdGFsX2xhc3RDaGVja0ludGVyZXN0SGVpZ2h0BAAAABF0b3RhbEZhcm1pbmdQb3dlcgkBAAAADXRyeUdldEludGVnZXIAAAABAgAAABJ0b3RhbF9mYXJtaW5nUG93ZXIJAQAAAAxjYWxjSW50ZXJlc3QAAAADBQAAABBwcmV2aW91c0ludGVyZXN0BQAAABZwcmV2aW91c0ludGVyZXN0SGVpZ2h0BQAAABF0b3RhbEZhcm1pbmdQb3dlcgMJAQAAAAIhPQAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQIAAAARdG90YWxfc3RhcnRIZWlnaHQAAAAAAAAAAAAJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQIAAAAXdG90YWxfbGFzdENoZWNrSW50ZXJlc3QJAAACAAAAAQIAAAAcZmFybWluZyBpcyBub3QgbGF1bmNoZWQsIHlldAEAAAAUY2FsY0Fzc2V0UmV3YXJkRGVsdGEAAAADAAAAB2FkZHJlc3MAAAAHYXNzZXRJZAAAABFhc3NldEZhcm1pbmdQb3dlcgQAAAAWbGFzdENoZWNrQXNzZXRJbnRlcmVzdAkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAdhc3NldElkAgAAABJfbGFzdENoZWNrSW50ZXJlc3QEAAAAD2N1cnJlbnRJbnRlcmVzdAkBAAAAEmdldEN1cnJlbnRJbnRlcmVzdAAAAAAJAABoAAAAAgUAAAARYXNzZXRGYXJtaW5nUG93ZXIJAABlAAAAAgUAAAAPY3VycmVudEludGVyZXN0BQAAABZsYXN0Q2hlY2tBc3NldEludGVyZXN0AQAAABRhZGRBc3NldElkVG9HZW5FbnRyeQAAAAIAAAAHYXNzZXRJZAAAAAhhc3NldEdlbgQAAAAMY3VycmVudFZhbHVlCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQkAASwAAAACCQABLAAAAAICAAAAB2Fzc2V0c18FAAAACGFzc2V0R2VuAgAAAAdfbG9ja2VkAwkAAAAAAAACBQAAAAxjdXJyZW50VmFsdWUCAAAAAAUAAAAHYXNzZXRJZAkAASwAAAACCQABLAAAAAIFAAAADGN1cnJlbnRWYWx1ZQIAAAABLAUAAAAHYXNzZXRJZAEAAAAOZ2V0U3Rha2VSZXN1bHQAAAAEAAAAB2FkZHJlc3MAAAAHYXNzZXRJZAAAABFhc3NldEZhcm1pbmdQb3dlcgAAAAh1bnN0YWtlcgQAAAAFYXNzZXQJAAJYAAAAAQUAAAAHYXNzZXRJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAASdG90YWxfZmFybWluZ1Bvd2VyCQAAZAAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQIAAAASdG90YWxfZmFybWluZ1Bvd2VyBQAAABFhc3NldEZhcm1pbmdQb3dlcgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAXdG90YWxfbGFzdENoZWNrSW50ZXJlc3QJAQAAABJnZXRDdXJyZW50SW50ZXJlc3QAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAB10b3RhbF9sYXN0Q2hlY2tJbnRlcmVzdEhlaWdodAUAAAAGaGVpZ2h0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAANX2Zhcm1pbmdQb3dlcgUAAAARYXNzZXRGYXJtaW5nUG93ZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAABWFzc2V0AgAAABJfbGFzdENoZWNrSW50ZXJlc3QJAQAAABJnZXRDdXJyZW50SW50ZXJlc3QAAAAACQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAABWFzc2V0AgAAAAlfdW5zdGFrZXIFAAAACHVuc3Rha2VyBQAAAANuaWwBAAAAEGdldFVuc3Rha2VSZXN1bHQAAAAFAAAAB2FkZHJlc3MAAAAHYXNzZXRJZAAAAAtyZXdhcmREZWx0YQAAAA93aXRoZHJhd25BbW91bnQAAAARYXNzZXRGYXJtaW5nUG93ZXIEAAAABWFzc2V0CQACWAAAAAEFAAAAB2Fzc2V0SWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAEnRvdGFsX2Zhcm1pbmdQb3dlcgkA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cwAAAAAIBQAAAAFpAAAABmNhbGxlcgYJAAAAAAAAAgkBAAAAEGdldER1Y2tXcmFwcGVyU2MAAAAACAUAAAABaQAAAAZjYWxsZXIFAAAACnJlYWxDYWxsZXIJAAQlAAAAAQgFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyAwkBAAAAEWlzVXNlckJsYWNrbGlzdGVkAAAAAQUAAAAHYWRkcmVzcwkAAAIAAAABAgAAANNPb29wcywgbG9va3MgbGlrZSB5b3UgbG9zdCBpbiBvbmUgb2YgdGhlIER1Y2tzcXVpZCBnYW1lcyEgQXMgeW91IGFscmVhZHkga25vdywgYW55IGxvc3MgaGFzIGl0cyBjb25zZXF1ZW5jZXMsIHNvIHlvdSB3aWxsIGJlIG5vdCBhYmxlIHRvIGNsYWltIHlvdXIgZmFybWluZyByZXdhcmRzIHRpbGwgdGhlIGVuZCBvZiBEdWNrU3F1aWQgZ2FtZS4gUXVhY2sgaW4gcGVhY2UhBAAAAAdhc3NldElkCQACWQAAAAEFAAAABWFzc2V0BAAAAAVjb2xvcgkBAAAADHRyeUdldFN0cmluZwAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAABWFzc2V0AgAAAAtfcGVyY2hDb2xvcgQAAAARYXNzZXRGYXJtaW5nUG93ZXIJAQAAAB1nZXRMYXN0S25vd25Bc3NldEZhcm1pbmdQb3dlcgAAAAIFAAAAB2FkZHJlc3MFAAAABWFzc2V0BAAAABBhc3NldFJld2FyZERlbHRhCQEAAAAUY2FsY0Fzc2V0UmV3YXJkRGVsdGEAAAADBQAAAAdhZGRyZXNzBQAAAAVhc3NldAUAAAARYXNzZXRGYXJtaW5nUG93ZXIEAAAADGZhcm1lZEFtb3VudAkAAGQAAAACBQAAABBhc3NldFJld2FyZERlbHRhCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAABWFzc2V0AgAAABZfbGFzdENoZWNrRmFybWVkQW1vdW50BAAAAA93aXRoZHJhd25BbW91bnQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAFYXNzZXQCAAAAEF93aXRoZHJhd25BbW91bnQEAAAABnJld2FyZAkAAGkAAAACCQAAZQAAAAIFAAAADGZhcm1lZEFtb3VudAUAAAAPd2l0aGRyYXduQW1vdW50CQAAaAAAAAIFAAAABXNjYWxlAAAAAAAAAABkBAAAAAh1bnN0YWtlcgkBAAAADHRyeUdldFN0cmluZwAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAABWFzc2V0AgAAAAlfdW5zdGFrZXIDAwkBAAAAAiE9AAAAAgUAAAAIdW5zdGFrZXICAAAAAAkBAAAAAiE9AAAAAgUAAAAIdW5zdGFrZXIFAAAACnJlYWxDYWxsZXIHCQAAAgAAAAECAAAAUkl0IHNlZW1zIGR1Y2sgd2FzIHN0YWtlZCB0aHJvdWggYSBkYXBwLCBub3QgZGlyZWN0bHksIHBsZWFzZSB1bnN0YWtlIHRocm91Z2ggZGFwcCEDCQEAAAACIT0AAAACCQEAAAAJdGFrZVJpZ2h0AAAAAgkBAAAABXZhbHVlAAAAAQgJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAAHYXNzZXRJZAAAAARuYW1lAAAAAAAAAAABAgAAAAFVCQAAAgAAAAECAAAADGphY2twb3Qgb25seQMJAABmAAAAAgUAAAARYXNzZXRGYXJtaW5nUG93ZXIAAAAAAAAAAAAEAAAABnJlc3VsdAkBAAAAEGdldFVuc3Rha2VSZXN1bHQAAAAFBQAAAAdhZGRyZXNzBQAAAAdhc3NldElkBQAAABBhc3NldFJld2FyZERlbHRhBQAAAAZyZXdhcmQFAAAAEWFzc2V0RmFybWluZ1Bvd2VyBAAAAA5pc1dpdGhvdXRQZXJjaAkBAAAADXRyeUdldEJvb2xlYW4AAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAAOX3dpdGhvdXRfcGVyY2gEAAAADWFwcGVuZFBlcmNoZXMDBQAAAA5pc1dpdGhvdXRQZXJjaAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAAOX3dpdGhvdXRfcGVyY2gFAAAAA25pbAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAEl9wZXJjaGVzQXZhaWxhYmxlXwUAAAAFY29sb3IJAABkAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAASX3BlcmNoZXNBdmFpbGFibGVfBQAAAAVjb2xvcgAAAAAAAAAAAQUAAAADbmlsCQAFFAAAAAIJAAROAAAAAgkABE4AAAACBQAAAAZyZXN1bHQFAAAADWFwcGVuZFBlcmNoZXMJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyCQAAaAAAAAIFAAAABnJld2FyZAAAAAAAAA9CQAkBAAAADWdldEVnZ0Fzc2V0SWQAAAAACQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgAAAAAAAAAAAQUAAAAHYXNzZXRJZAUAAAADbmlsCQAAaAAAAAIFAAAABnJld2FyZAAAAAAAAA9CQAkAAAIAAAABAgAAAAAJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAC2NsYWltUmV3YXJkAAAAAQAAAAVhc3NldAQAAAAGbG9ja2VkCQEAAAAIaXNMb2NrZWQAAAAAAwkAAAAAAAACBQAAAAZsb2NrZWQFAAAABmxvY2tlZAQAAAAHYWRkcmVzcwMJAAAAAAAAAggFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyCQEAAAASZ2V0Q2ZNYXN0ZXJBZGRyZXNzAAAAAAkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIJAAQlAAAAAQgFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyAwkBAAAAEWlzVXNlckJsYWNrbGlzdGVkAAAAAQUAAAAHYWRkcmVzcwkAAAIAAAABAgAAANNPb29wcywgbG9va3MgbGlrZSB5b3UgbG9zdCBpbiBvbmUgb2YgdGhlIER1Y2tzcXVpZCBnYW1lcyEgQXMgeW91IGFscmVhZHkga25vdywgYW55IGxvc3MgaGFzIGl0cyBjb25zZXF1ZW5jZXMsIHNvIHlvdSB3aWxsIGJlIG5vdCBhYmxlIHRvIGNsYWltIHlvdXIgZmFybWluZyByZXdhcmRzIHRpbGwgdGhlIGVuZCBvZiBEdWNrU3F1aWQgZ2FtZS4gUXVhY2sgaW4gcGVhY2UhBAAAAAdhc3NldElkCQACWQAAAAEFAAAABWFzc2V0BAAAABFhc3NldEZhcm1pbmdQb3dlcgkBAAAAHWdldExhc3RLbm93bkFzc2V0RmFybWluZ1Bvd2VyAAAAAgUAAAAHYWRkcmVzcwUAAAAFYXNzZXQEAAAAEGFzc2V0UmV3YXJkRGVsdGEJAQAAABRjYWxjQXNzZXRSZXdhcmREZWx0YQAAAAMFAAAAB2FkZHJlc3MFAAAABWFzc2V0BQAAABFhc3NldEZhcm1pbmdQb3dlcgQAAAAMZmFybWVkQW1vdW50CQAAZAAAAAIFAAAAEGFzc2V0UmV3YXJkRGVsdGEJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAFYXNzZXQCAAAAFl9sYXN0Q2hlY2tGYXJtZWRBbW91bnQEAAAAD3dpdGhkcmF3bkFtb3VudAkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAAQX3dpdGhkcmF3bkFtb3VudAQAAAAGcmV3YXJkCQAAaQAAAAIJAABlAAAAAgUAAAAMZmFybWVkQW1vdW50BQAAAA93aXRoZHJhd25BbW91bnQJAABoAAAAAgUAAAAFc2NhbGUAAAAAAAAAAGQDCQAAZwAAAAIAAAAAAAAAAAAFAAAABnJld2FyZAkAAAIAAAABAgAAABx5b3UgaGF2ZSBubyBFR0dzIHRvIHdpdGhkcmF3CQAFFAAAAAIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAABWFzc2V0AgAAABBfd2l0aGRyYXduQW1vdW50CQAAZAAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAFYXNzZXQCAAAAEF93aXRoZHJhd25BbW91bnQJAABoAAAAAgUAAAAGcmV3YXJkBQAAAAZzY2FsZTIJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAAB2FkZHJlc3MJAABoAAAAAgUAAAAGcmV3YXJkAAAAAAAAD0JACQEAAAANZ2V0RWdnQXNzZXRJZAAAAAAFAAAAA25pbAkAAGgAAAACBQAAAAZyZXdhcmQAAAAAAAAPQkAJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAGSdhDE=", "height": 3136727, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: G9AQL12BEAm3BY88dUPtArMGunLtJeCecTm9BeuhGrBe Next: FgUJZ93ou3BM56ppVCpMfzp4jQeX8zzQxjQjeYbq9Uwx Diff:
OldNewDifferences
6060 func v () = Address(fromBase58String(d(j(), "static_cfMasterAddress")))
6161
6262
63-let w = 5
64-
65-func x () = 684
63+func w () = Address(fromBase58String(d(j(), "static_duckWrapper")))
6664
6765
68-func y () = if ((u() != ""))
66+let x = 5
67+
68+func y () = 684
69+
70+
71+func z () = if ((u() != ""))
6972 then throw(u())
7073 else 0
7174
7275
73-func z (f) = {
76+func A (f) = {
7477 let g = getInteger(this, f)
7578 if ($isInstanceOf(g, "Int"))
7679 then {
77- let A = g
78- A
80+ let B = g
81+ B
7982 }
8083 else 0
8184 }
8285
8386
84-func B (f) = {
87+func C (f) = {
8588 let g = getBoolean(this, f)
8689 if ($isInstanceOf(g, "Boolean"))
8790 then {
88- let A = g
89- A
91+ let B = g
92+ B
9093 }
9194 else false
9295 }
9396
9497
95-func C (e) = false
98+func D (e) = false
9699
97100
98-func D (E) = if ((E == "G"))
101+func E (F) = if ((F == "G"))
99102 then l()
100103 else o()
101104
102105
103-func F (G,E) = {
104- let H = valueOrErrorMessage(getInteger(D(E), (("stats_" + G) + "_quantity")), (("stats_" + G) + "_quantity not found"))
105- let I = pow((10000 / H), 4, 5, 1, 2, FLOOR)
106- if ((I > 0))
107- then I
106+func G (H,F) = {
107+ let I = valueOrErrorMessage(getInteger(E(F), (("stats_" + H) + "_quantity")), (("stats_" + H) + "_quantity not found"))
108+ let J = pow((10000 / I), 4, 5, 1, 2, FLOOR)
109+ if ((J > 0))
110+ then J
108111 else 2
109112 }
110113
111114
112-func J (K) = {
113- let g = K
115+func K (L) = {
116+ let g = L
114117 if ($isInstanceOf(g, "String"))
115118 then {
116- let L = g
117- L
119+ let M = g
120+ M
118121 }
119122 else throw("wrong type, expected: String")
120123 }
121124
122125
123-func M (K) = {
124- let g = K
126+func N (L) = {
127+ let g = L
125128 if ($isInstanceOf(g, "Int"))
126129 then {
127- let N = g
128- N
130+ let O = g
131+ O
129132 }
130133 else throw("wrong type, expected: Int")
131134 }
132135
133136
134-func O (P,e) = if (if ((value(assetInfo(P)).issuer == o()))
137+func P (Q,e) = if (if ((value(assetInfo(Q)).issuer == o()))
135138 then true
136- else (value(assetInfo(P)).issuer == l()))
139+ else (value(assetInfo(Q)).issuer == l()))
137140 then {
138- let Q = value(assetInfo(P)).name
139- let E = take(takeRight(Q, 2), 1)
140- let R = J(invoke(o(), "getGenFromName", [Q], nil))
141+ let R = N(invoke(q(), "calculateFarmingPowerBoost", [toBase58String(Q), e], nil))
141142 if ((R == R))
142143 then {
143- let S = M(invoke(q(), "calculateFarmingPowerBoost", [toBase58String(P), e], nil))
144- if ((S == S))
144+ let S = value(assetInfo(Q)).name
145+ let T = (takeRight(value(S), 1) == "U")
146+ let U = if (T)
147+ then ""
148+ else K(invoke(o(), "getGenFromName", [S], nil))
149+ if ((U == U))
145150 then {
146- let T = F(R, E)
147- let U = (T + fraction(T, S, 100))
148- $Tuple2(R, U)
151+ let V = if (T)
152+ then 100
153+ else {
154+ let F = take(takeRight(S, 2), 1)
155+ G(U, F)
156+ }
157+ let W = (V + fraction(V, R, 100))
158+ $Tuple2(U, W)
149159 }
150160 else throw("Strict value is not equal to itself.")
151161 }
154164 else throw("not valid NFT")
155165
156166
157-func V (e,P) = z((((("address_" + e) + "_asset_") + P) + "_farmingPower"))
167+func X (e,Q) = A((((("address_" + e) + "_asset_") + Q) + "_farmingPower"))
158168
159169
160-func W (X) = {
161- let Y = i(("assets_" + X))
162- if ((Y == ""))
170+func Y (Z) = {
171+ let aa = i(("assets_" + Z))
172+ if ((aa == ""))
163173 then nil
164- else split(Y, ",")
174+ else split(aa, ",")
165175 }
166176
167177
168-func Z (aa,ab,U) = (aa + (((b * x()) * (height - ab)) / U))
178+func ab (ac,ad,W) = (ac + (((b * y()) * (height - ad)) / W))
169179
170180
171-func ac () = if ((z("total_farmingPower") > 0))
181+func ae () = if ((A("total_farmingPower") > 0))
172182 then {
173- let aa = z("total_lastCheckInterest")
174- let ab = z("total_lastCheckInterestHeight")
175- let U = z("total_farmingPower")
176- Z(aa, ab, U)
183+ let ac = A("total_lastCheckInterest")
184+ let ad = A("total_lastCheckInterestHeight")
185+ let W = A("total_farmingPower")
186+ ab(ac, ad, W)
177187 }
178- else if ((z("total_startHeight") != 0))
179- then z("total_lastCheckInterest")
188+ else if ((A("total_startHeight") != 0))
189+ then A("total_lastCheckInterest")
180190 else throw("farming is not launched, yet")
181191
182192
183-func ad (e,P,ae) = {
184- let af = z((((("address_" + e) + "_asset_") + P) + "_lastCheckInterest"))
185- let ag = ac()
186- (ae * (ag - af))
193+func af (e,Q,ag) = {
194+ let ah = A((((("address_" + e) + "_asset_") + Q) + "_lastCheckInterest"))
195+ let ai = ae()
196+ (ag * (ai - ah))
187197 }
188198
189199
190-func ah (P,ai) = {
191- let aj = i((("assets_" + ai) + "_locked"))
192- if ((aj == ""))
193- then P
194- else ((aj + ",") + P)
200+func aj (Q,ak) = {
201+ let al = i((("assets_" + ak) + "_locked"))
202+ if ((al == ""))
203+ then Q
204+ else ((al + ",") + Q)
195205 }
196206
197207
198-func ak (e,P,ae,al) = {
199- let am = toBase58String(P)
200-[IntegerEntry("total_farmingPower", (z("total_farmingPower") + ae)), IntegerEntry("total_lastCheckInterest", ac()), IntegerEntry("total_lastCheckInterestHeight", height), IntegerEntry((((("address_" + e) + "_asset_") + am) + "_farmingPower"), ae), IntegerEntry((((("address_" + e) + "_asset_") + am) + "_lastCheckInterest"), ac()), StringEntry((((("address_" + e) + "_asset_") + am) + "_unstaker"), al)]
208+func am (e,Q,ag,an) = {
209+ let ao = toBase58String(Q)
210+[IntegerEntry("total_farmingPower", (A("total_farmingPower") + ag)), IntegerEntry("total_lastCheckInterest", ae()), IntegerEntry("total_lastCheckInterestHeight", height), IntegerEntry((((("address_" + e) + "_asset_") + ao) + "_farmingPower"), ag), IntegerEntry((((("address_" + e) + "_asset_") + ao) + "_lastCheckInterest"), ae()), StringEntry((((("address_" + e) + "_asset_") + ao) + "_unstaker"), an)]
201211 }
202212
203213
204-func an (e,P,ao,ap,ae) = {
205- let am = toBase58String(P)
206-[IntegerEntry("total_farmingPower", (z("total_farmingPower") - ae)), IntegerEntry("total_lastCheckInterest", ac()), IntegerEntry("total_lastCheckInterestHeight", height), IntegerEntry((((("address_" + e) + "_asset_") + am) + "_farmingPower"), 0), IntegerEntry((((("address_" + e) + "_asset_") + am) + "_lastCheckInterest"), ac()), IntegerEntry((((("address_" + e) + "_asset_") + am) + "_withdrawnAmount"), (z((((("address_" + e) + "_asset_") + am) + "_withdrawnAmount")) + (ap * c))), IntegerEntry((((("address_" + e) + "_asset_") + am) + "_lastCheckFarmedAmount"), (z((((("address_" + e) + "_asset_") + am) + "_lastCheckFarmedAmount")) + ao))]
214+func ap (e,Q,aq,ar,ag) = {
215+ let ao = toBase58String(Q)
216+[IntegerEntry("total_farmingPower", (A("total_farmingPower") - ag)), IntegerEntry("total_lastCheckInterest", ae()), IntegerEntry("total_lastCheckInterestHeight", height), IntegerEntry((((("address_" + e) + "_asset_") + ao) + "_farmingPower"), 0), IntegerEntry((((("address_" + e) + "_asset_") + ao) + "_lastCheckInterest"), ae()), IntegerEntry((((("address_" + e) + "_asset_") + ao) + "_withdrawnAmount"), (A((((("address_" + e) + "_asset_") + ao) + "_withdrawnAmount")) + (ar * c))), IntegerEntry((((("address_" + e) + "_asset_") + ao) + "_lastCheckFarmedAmount"), (A((((("address_" + e) + "_asset_") + ao) + "_lastCheckFarmedAmount")) + aq))]
207217 }
208218
209219
210-func aq (e) = {
211- let ar = d(s(), (("ART-XMISTL_" + e) + "_owner"))
212- if ((ar == ""))
220+func as (e) = {
221+ let at = d(s(), (("ART-XMISTL_" + e) + "_owner"))
222+ if ((at == ""))
213223 then a
214224 else ((a / 10) * 9)
215225 }
216226
217227
218-@Callable(as)
219-func configureOracle (at) = if ((as.caller != this))
228+@Callable(au)
229+func configureOracle (av) = if ((au.caller != this))
220230 then throw("admin only")
221- else [StringEntry("static_oracleAddress", at)]
231+ else [StringEntry("static_oracleAddress", av)]
222232
223233
224234
225-@Callable(as)
226-func init () = if ((as.caller != this))
235+@Callable(au)
236+func init () = if ((au.caller != this))
227237 then throw("admin only")
228238 else [IntegerEntry("total_startHeight", height)]
229239
230240
231241
232-@Callable(as)
233-func buyPerch (au,av) = {
234- let aw = y()
235- if ((aw == aw))
236- then if ((0 > value(indexOf(["B", "R", "G", "Y"], au))))
242+@Callable(au)
243+func buyPerch (aw,ax) = {
244+ let ay = z()
245+ if ((ay == ay))
246+ then if ((0 > value(indexOf(["B", "R", "G", "Y"], aw))))
237247 then throw("you need to set color properly")
238248 else {
239- let ax = value(as.payments[0])
240- let ay = aq(toString(as.caller))
241- if ((ax.assetId != k()))
249+ let az = value(au.payments[0])
250+ let aA = as(toString(au.caller))
251+ if ((az.assetId != k()))
242252 then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(k())))
243- else if ((ax.amount != ay))
244- then throw(("To buy a perch you currently need the following amount of EGGlets: " + toString(ay)))
253+ else if ((az.amount != aA))
254+ then throw(("To buy a perch you currently need the following amount of EGGlets: " + toString(aA)))
245255 else {
246- let az = fraction(ax.amount, w, 100)
247- let aA = invoke(p(), "refPayment", [av], [AttachedPayment(k(), az)])
248- if ((aA == aA))
256+ let aB = fraction(az.amount, x, 100)
257+ let aC = invoke(p(), "refPayment", [ax], [AttachedPayment(k(), aB)])
258+ if ((aC == aC))
249259 then {
250- let aB = ((("address_" + toString(as.caller)) + "_perchesAvailable_") + au)
251- let aC = z(aB)
252-[IntegerEntry(aB, (aC + 1))]
260+ let aD = ((("address_" + toString(au.caller)) + "_perchesAvailable_") + aw)
261+ let aE = A(aD)
262+[IntegerEntry(aD, (aE + 1))]
253263 }
254264 else throw("Strict value is not equal to itself.")
255265 }
259269
260270
261271
262-@Callable(as)
263-func addFreePerch (e,au) = {
264- let aw = y()
265- if ((aw == aw))
266- then if ((0 > value(indexOf(["B", "R", "G", "Y"], au))))
272+@Callable(au)
273+func addFreePerch (e,aw) = {
274+ let ay = z()
275+ if ((ay == ay))
276+ then if ((0 > value(indexOf(["B", "R", "G", "Y"], aw))))
267277 then throw("you need to set color properly")
268- else if (if (if ((as.caller != m()))
269- then (as.caller != this)
278+ else if (if (if ((au.caller != m()))
279+ then (au.caller != this)
270280 else false)
271- then (as.caller != n())
281+ then (au.caller != n())
272282 else false)
273283 then throw("rebirth and swop promo only")
274284 else {
275- let aB = ((("address_" + e) + "_perchesAvailable_") + au)
276- let aC = z(aB)
277- $Tuple2([IntegerEntry(aB, (aC + 1))], "")
285+ let aD = ((("address_" + e) + "_perchesAvailable_") + aw)
286+ let aE = A(aD)
287+ $Tuple2([IntegerEntry(aD, (aE + 1))], "")
278288 }
279289 else throw("Strict value is not equal to itself.")
280290 }
281291
282292
283293
284-@Callable(as)
294+@Callable(au)
285295 func stakeNFT () = {
286- let aw = y()
287- if ((aw == aw))
296+ let ay = z()
297+ if ((ay == ay))
288298 then {
289- let aD = value(as.payments[0])
290- let P = value(value(as.payments[0]).assetId)
291- let aE = toString(as.caller)
292- let e = if ((r() == as.caller))
293- then aE
294- else toString(as.originCaller)
295- let au = takeRight(value(assetInfo(P)).name, 1)
296- let aF = z(((("address_" + e) + "_perchesAvailable_") + au))
297- if ((aD.amount != 1))
299+ let aF = value(au.payments[0])
300+ let Q = value(value(au.payments[0]).assetId)
301+ let aG = toString(au.caller)
302+ let e = if (if ((r() == au.caller))
303+ then true
304+ else (w() == au.caller))
305+ then aG
306+ else toString(au.originCaller)
307+ let aw = takeRight(value(assetInfo(Q)).name, 1)
308+ let aH = A(((("address_" + e) + "_perchesAvailable_") + aw))
309+ if ((aF.amount != 1))
298310 then throw("NFT is not attached")
299- else if ((0 >= aF))
300- then throw(("no perches available for the color " + au))
311+ else if ((0 >= aH))
312+ then throw(("no perches available for the color " + aw))
301313 else {
302- let aG = O(P, e)
303- let ai = aG._1
304- let ae = aG._2
305- (ak(e, P, ae, aE) ++ [IntegerEntry(((("address_" + e) + "_perchesAvailable_") + au), (aF - 1))])
314+ let aI = P(Q, e)
315+ let ak = aI._1
316+ let ag = aI._2
317+ (am(e, Q, ag, aG) ++ [IntegerEntry(((("address_" + e) + "_perchesAvailable_") + aw), (aH - 1))])
306318 }
307319 }
308320 else throw("Strict value is not equal to itself.")
310322
311323
312324
313-@Callable(as)
325+@Callable(au)
314326 func stakeNFTWithoutPerch () = {
315- let aw = y()
316- if ((aw == aw))
327+ let ay = z()
328+ if ((ay == ay))
317329 then {
318- let aH = t()
319- let aI = split(aH, ";")
320- let aJ = toString(as.caller)
321- if ((indexOf(aI, aJ) == unit))
330+ let aJ = t()
331+ let aK = split(aJ, ";")
332+ let aL = toString(au.caller)
333+ if ((indexOf(aK, aL) == unit))
322334 then throw("Only trusted smart contracts can stake without a perch!")
323335 else {
324- let aD = value(as.payments[0])
325- let P = value(value(as.payments[0]).assetId)
326- let e = toString(as.originCaller)
327- if ((aD.amount != 1))
336+ let aF = value(au.payments[0])
337+ let Q = value(value(au.payments[0]).assetId)
338+ let e = toString(au.originCaller)
339+ if ((aF.amount != 1))
328340 then throw("NFT is not attached")
329341 else {
330- let aK = O(P, e)
331- let ai = aK._1
332- let ae = aK._2
333- let am = toBase58String(P)
334- let aE = toString(as.caller)
335- (ak(e, P, ae, aE) ++ [BooleanEntry((((("address_" + e) + "_asset_") + am) + "_without_perch"), true)])
342+ let aM = P(Q, e)
343+ let ak = aM._1
344+ let ag = aM._2
345+ let ao = toBase58String(Q)
346+ let aG = toString(au.caller)
347+ (am(e, Q, ag, aG) ++ [BooleanEntry((((("address_" + e) + "_asset_") + ao) + "_without_perch"), true)])
336348 }
337349 }
338350 }
341353
342354
343355
344-@Callable(as)
345-func unstakeNFT (am) = {
346- let aw = y()
347- if ((aw == aw))
356+@Callable(au)
357+func unstakeNFT (ao) = {
358+ let ay = z()
359+ if ((ay == ay))
348360 then {
349- let aL = toString(as.originCaller)
350- if (C(aL))
361+ let aN = toString(au.originCaller)
362+ if (D(aN))
351363 then throw("Ooops, looks like you lost in one of the Ducksquid games! As you already know, any loss has its consequences, so you will be not able to claim your farming rewards till the end of DuckSquid game. Quack in peace!")
352364 else {
353- let P = fromBase58String(am)
354- let al = i((((("address_" + aL) + "_asset_") + am) + "_unstaker"))
355- let e = if ((r() == as.caller))
356- then toString(as.caller)
357- else aL
358- let ae = V(e, am)
359- let aM = ad(e, am, ae)
360- let aN = (aM + z((((("address_" + e) + "_asset_") + am) + "_lastCheckFarmedAmount")))
361- let ap = z((((("address_" + e) + "_asset_") + am) + "_withdrawnAmount"))
362- let aO = ((aN - ap) / (b * 100))
363- let au = takeRight(value(assetInfo(P)).name, 1)
364- let aE = toString(as.caller)
365- if (if ((al != ""))
366- then (al != aE)
365+ let Q = fromBase58String(ao)
366+ let an = i((((("address_" + aN) + "_asset_") + ao) + "_unstaker"))
367+ let e = if (if ((r() == au.caller))
368+ then true
369+ else (w() == au.caller))
370+ then toString(au.caller)
371+ else aN
372+ let ag = X(e, ao)
373+ let aO = af(e, ao, ag)
374+ let aP = (aO + A((((("address_" + e) + "_asset_") + ao) + "_lastCheckFarmedAmount")))
375+ let ar = A((((("address_" + e) + "_asset_") + ao) + "_withdrawnAmount"))
376+ let aQ = ((aP - ar) / (b * 100))
377+ let aw = takeRight(value(assetInfo(Q)).name, 1)
378+ let aG = toString(au.caller)
379+ if (if ((an != ""))
380+ then (an != aG)
367381 else false)
368382 then throw("It seems duck was staked throuh a dapp, not directly, please unstake through dapp!")
369- else if ((0 >= ae))
383+ else if ((0 >= ag))
370384 then throw("asset not available")
371385 else {
372- let aP = B((((("address_" + e) + "_asset_") + am) + "_without_perch"))
373- if ((au == "U"))
386+ let aR = C((((("address_" + e) + "_asset_") + ao) + "_without_perch"))
387+ if ((aw == "U"))
374388 then throw("use another function to unstake Jackpot NFT")
375389 else {
376- let aQ = an(e, P, aM, aO, ae)
377- let aR = if (aP)
378- then [DeleteEntry((((("address_" + e) + "_asset_") + am) + "_without_perch"))]
379- else [IntegerEntry(((("address_" + e) + "_perchesAvailable_") + au), (z(((("address_" + e) + "_perchesAvailable_") + au)) + 1))]
380- $Tuple2(((aQ ++ [ScriptTransfer(as.caller, (aO * 1000000), k()), ScriptTransfer(as.caller, 1, P)]) ++ aR), (aO * 1000000))
390+ let aS = ap(e, Q, aO, aQ, ag)
391+ let aT = if (aR)
392+ then [DeleteEntry((((("address_" + e) + "_asset_") + ao) + "_without_perch"))]
393+ else [IntegerEntry(((("address_" + e) + "_perchesAvailable_") + aw), (A(((("address_" + e) + "_perchesAvailable_") + aw)) + 1))]
394+ $Tuple2(((aS ++ [ScriptTransfer(au.caller, (aQ * 1000000), k()), ScriptTransfer(au.caller, 1, Q)]) ++ aT), (aQ * 1000000))
381395 }
382396 }
383397 }
387401
388402
389403
390-@Callable(as)
391-func stakeJackpot (au) = {
392- let aw = y()
393- if ((aw == aw))
404+@Callable(au)
405+func stakeJackpot (aw) = {
406+ let ay = z()
407+ if ((ay == ay))
394408 then {
395- let aD = value(as.payments[0])
396- let P = value(aD.assetId)
397- let aE = toString(as.caller)
398- let e = if ((r() == as.caller))
399- then aE
400- else toString(as.originCaller)
401- let aF = z(((("address_" + e) + "_perchesAvailable_") + au))
402- let aS = value(assetInfo(P)).issuer
403- if ((aD.amount != 1))
409+ let aF = value(au.payments[0])
410+ let Q = value(aF.assetId)
411+ let aG = toString(au.caller)
412+ let e = if (if ((r() == au.caller))
413+ then true
414+ else (w() == au.caller))
415+ then aG
416+ else toString(au.originCaller)
417+ let aH = A(((("address_" + e) + "_perchesAvailable_") + aw))
418+ let aU = value(assetInfo(Q)).issuer
419+ if ((aF.amount != 1))
404420 then throw("NFT is not attached")
405- else if (if ((aS == l()))
421+ else if (if ((aU == l()))
406422 then true
407- else (aS == o()))
408- then if ((takeRight(value(value(assetInfo(P)).name), 1) != "U"))
423+ else (aU == o()))
424+ then if ((takeRight(value(value(assetInfo(Q)).name), 1) != "U"))
409425 then throw("jackpot only")
410- else if ((0 >= aF))
411- then throw(("no perches available for the color " + au))
412- else (ak(e, P, 100, aE) ++ [IntegerEntry(((("address_" + e) + "_perchesAvailable_") + au), (aF - 1)), StringEntry((((("address_" + e) + "_asset_") + toBase58String(P)) + "_perchColor"), au)])
426+ else if ((0 >= aH))
427+ then throw(("no perches available for the color " + aw))
428+ else {
429+ let aV = P(Q, e)
430+ (am(e, Q, aV._2, aG) ++ [IntegerEntry(((("address_" + e) + "_perchesAvailable_") + aw), (aH - 1)), StringEntry((((("address_" + e) + "_asset_") + toBase58String(Q)) + "_perchColor"), aw)])
431+ }
413432 else throw("asset is not valid")
414433 }
415434 else throw("Strict value is not equal to itself.")
417436
418437
419438
420-@Callable(as)
421-func unstakeJackpot (am) = {
422- let aw = y()
423- if ((aw == aw))
439+@Callable(au)
440+func unstakeJackpot (ao) = {
441+ let ay = z()
442+ if ((ay == ay))
424443 then {
425- let aE = toString(as.caller)
426- let e = if ((r() == as.caller))
427- then aE
428- else toString(as.originCaller)
429- if (C(e))
444+ let aG = toString(au.caller)
445+ let e = if (if ((r() == au.caller))
446+ then true
447+ else (w() == au.caller))
448+ then aG
449+ else toString(au.originCaller)
450+ if (D(e))
430451 then throw("Ooops, looks like you lost in one of the Ducksquid games! As you already know, any loss has its consequences, so you will be not able to claim your farming rewards till the end of DuckSquid game. Quack in peace!")
431452 else {
432- let P = fromBase58String(am)
433- let au = i((((("address_" + e) + "_asset_") + am) + "_perchColor"))
434- let ae = V(e, am)
435- let aM = ad(e, am, ae)
436- let aN = (aM + z((((("address_" + e) + "_asset_") + am) + "_lastCheckFarmedAmount")))
437- let ap = z((((("address_" + e) + "_asset_") + am) + "_withdrawnAmount"))
438- let aO = ((aN - ap) / (b * 100))
439- let al = i((((("address_" + e) + "_asset_") + am) + "_unstaker"))
440- if (if ((al != ""))
441- then (al != aE)
453+ let Q = fromBase58String(ao)
454+ let aw = i((((("address_" + e) + "_asset_") + ao) + "_perchColor"))
455+ let ag = X(e, ao)
456+ let aO = af(e, ao, ag)
457+ let aP = (aO + A((((("address_" + e) + "_asset_") + ao) + "_lastCheckFarmedAmount")))
458+ let ar = A((((("address_" + e) + "_asset_") + ao) + "_withdrawnAmount"))
459+ let aQ = ((aP - ar) / (b * 100))
460+ let an = i((((("address_" + e) + "_asset_") + ao) + "_unstaker"))
461+ if (if ((an != ""))
462+ then (an != aG)
442463 else false)
443464 then throw("It seems duck was staked throuh a dapp, not directly, please unstake through dapp!")
444- else if ((takeRight(value(value(assetInfo(P)).name), 1) != "U"))
465+ else if ((takeRight(value(value(assetInfo(Q)).name), 1) != "U"))
445466 then throw("jackpot only")
446- else if ((ae > 0))
467+ else if ((ag > 0))
447468 then {
448- let aQ = an(e, P, aM, aO, ae)
449- let aP = B((((("address_" + e) + "_asset_") + am) + "_without_perch"))
450- let aR = if (aP)
451- then [DeleteEntry((((("address_" + e) + "_asset_") + am) + "_without_perch"))]
452- else [IntegerEntry(((("address_" + e) + "_perchesAvailable_") + au), (z(((("address_" + e) + "_perchesAvailable_") + au)) + 1))]
453- $Tuple2(((aQ ++ aR) ++ [ScriptTransfer(as.caller, (aO * 1000000), k()), ScriptTransfer(as.caller, 1, P)]), (aO * 1000000))
469+ let aS = ap(e, Q, aO, aQ, ag)
470+ let aR = C((((("address_" + e) + "_asset_") + ao) + "_without_perch"))
471+ let aT = if (aR)
472+ then [DeleteEntry((((("address_" + e) + "_asset_") + ao) + "_without_perch"))]
473+ else [IntegerEntry(((("address_" + e) + "_perchesAvailable_") + aw), (A(((("address_" + e) + "_perchesAvailable_") + aw)) + 1))]
474+ $Tuple2(((aS ++ aT) ++ [ScriptTransfer(au.caller, (aQ * 1000000), k()), ScriptTransfer(au.caller, 1, Q)]), (aQ * 1000000))
454475 }
455476 else throw("")
456477 }
460481
461482
462483
463-@Callable(as)
464-func claimReward (am) = {
465- let aw = y()
466- if ((aw == aw))
484+@Callable(au)
485+func claimReward (ao) = {
486+ let ay = z()
487+ if ((ay == ay))
467488 then {
468- let e = if ((as.originCaller == v()))
469- then toString(as.caller)
470- else toString(as.originCaller)
471- if (C(e))
489+ let e = if ((au.originCaller == v()))
490+ then toString(au.caller)
491+ else toString(au.originCaller)
492+ if (D(e))
472493 then throw("Ooops, looks like you lost in one of the Ducksquid games! As you already know, any loss has its consequences, so you will be not able to claim your farming rewards till the end of DuckSquid game. Quack in peace!")
473494 else {
474- let P = fromBase58String(am)
475- let ae = V(e, am)
476- let aM = ad(e, am, ae)
477- let aN = (aM + z((((("address_" + e) + "_asset_") + am) + "_lastCheckFarmedAmount")))
478- let ap = z((((("address_" + e) + "_asset_") + am) + "_withdrawnAmount"))
479- let aO = ((aN - ap) / (b * 100))
480- if ((0 >= aO))
495+ let Q = fromBase58String(ao)
496+ let ag = X(e, ao)
497+ let aO = af(e, ao, ag)
498+ let aP = (aO + A((((("address_" + e) + "_asset_") + ao) + "_lastCheckFarmedAmount")))
499+ let ar = A((((("address_" + e) + "_asset_") + ao) + "_withdrawnAmount"))
500+ let aQ = ((aP - ar) / (b * 100))
501+ if ((0 >= aQ))
481502 then throw("you have no EGGs to withdraw")
482- else $Tuple2([IntegerEntry((((("address_" + e) + "_asset_") + am) + "_withdrawnAmount"), (z((((("address_" + e) + "_asset_") + am) + "_withdrawnAmount")) + (aO * c))), ScriptTransfer(Address(fromBase58String(e)), (aO * 1000000), k())], (aO * 1000000))
503+ else $Tuple2([IntegerEntry((((("address_" + e) + "_asset_") + ao) + "_withdrawnAmount"), (A((((("address_" + e) + "_asset_") + ao) + "_withdrawnAmount")) + (aQ * c))), ScriptTransfer(Address(fromBase58String(e)), (aQ * 1000000), k())], (aQ * 1000000))
483504 }
484505 }
485506 else throw("Strict value is not equal to itself.")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = (100 * 1000000)
55
66 let b = 10000
77
88 let c = 1000000
99
1010 func d (e,f) = {
1111 let g = getString(e, f)
1212 if ($isInstanceOf(g, "String"))
1313 then {
1414 let h = g
1515 h
1616 }
1717 else ""
1818 }
1919
2020
2121 func i (f) = d(this, f)
2222
2323
2424 func j () = Address(fromBase58String(i("static_oracleAddress")))
2525
2626
2727 func k () = fromBase58String(d(j(), "static_eggAssetId"))
2828
2929
3030 func l () = Address(fromBase58String(d(j(), "static_incubatorAddress")))
3131
3232
3333 func m () = Address(fromBase58String(d(j(), "static_rebirthAddress")))
3434
3535
3636 func n () = Address(fromBase58String(d(j(), "static_swopPromoAddress")))
3737
3838
3939 func o () = Address(fromBase58String(d(j(), "static_breederAddress")))
4040
4141
4242 func p () = Address(fromBase58String(d(j(), "static_refContractAddress")))
4343
4444
4545 func q () = Address(fromBase58String(d(j(), "static_itemsAddress")))
4646
4747
4848 func r () = Address(fromBase58String(d(j(), "static_metaRaceAddress")))
4949
5050
5151 func s () = Address(fromBase58String(d(j(), "static_accBoosterAddress")))
5252
5353
5454 func t () = d(j(), "static_trustedContracts")
5555
5656
5757 func u () = d(j(), "static_maintenance")
5858
5959
6060 func v () = Address(fromBase58String(d(j(), "static_cfMasterAddress")))
6161
6262
63-let w = 5
64-
65-func x () = 684
63+func w () = Address(fromBase58String(d(j(), "static_duckWrapper")))
6664
6765
68-func y () = if ((u() != ""))
66+let x = 5
67+
68+func y () = 684
69+
70+
71+func z () = if ((u() != ""))
6972 then throw(u())
7073 else 0
7174
7275
73-func z (f) = {
76+func A (f) = {
7477 let g = getInteger(this, f)
7578 if ($isInstanceOf(g, "Int"))
7679 then {
77- let A = g
78- A
80+ let B = g
81+ B
7982 }
8083 else 0
8184 }
8285
8386
84-func B (f) = {
87+func C (f) = {
8588 let g = getBoolean(this, f)
8689 if ($isInstanceOf(g, "Boolean"))
8790 then {
88- let A = g
89- A
91+ let B = g
92+ B
9093 }
9194 else false
9295 }
9396
9497
95-func C (e) = false
98+func D (e) = false
9699
97100
98-func D (E) = if ((E == "G"))
101+func E (F) = if ((F == "G"))
99102 then l()
100103 else o()
101104
102105
103-func F (G,E) = {
104- let H = valueOrErrorMessage(getInteger(D(E), (("stats_" + G) + "_quantity")), (("stats_" + G) + "_quantity not found"))
105- let I = pow((10000 / H), 4, 5, 1, 2, FLOOR)
106- if ((I > 0))
107- then I
106+func G (H,F) = {
107+ let I = valueOrErrorMessage(getInteger(E(F), (("stats_" + H) + "_quantity")), (("stats_" + H) + "_quantity not found"))
108+ let J = pow((10000 / I), 4, 5, 1, 2, FLOOR)
109+ if ((J > 0))
110+ then J
108111 else 2
109112 }
110113
111114
112-func J (K) = {
113- let g = K
115+func K (L) = {
116+ let g = L
114117 if ($isInstanceOf(g, "String"))
115118 then {
116- let L = g
117- L
119+ let M = g
120+ M
118121 }
119122 else throw("wrong type, expected: String")
120123 }
121124
122125
123-func M (K) = {
124- let g = K
126+func N (L) = {
127+ let g = L
125128 if ($isInstanceOf(g, "Int"))
126129 then {
127- let N = g
128- N
130+ let O = g
131+ O
129132 }
130133 else throw("wrong type, expected: Int")
131134 }
132135
133136
134-func O (P,e) = if (if ((value(assetInfo(P)).issuer == o()))
137+func P (Q,e) = if (if ((value(assetInfo(Q)).issuer == o()))
135138 then true
136- else (value(assetInfo(P)).issuer == l()))
139+ else (value(assetInfo(Q)).issuer == l()))
137140 then {
138- let Q = value(assetInfo(P)).name
139- let E = take(takeRight(Q, 2), 1)
140- let R = J(invoke(o(), "getGenFromName", [Q], nil))
141+ let R = N(invoke(q(), "calculateFarmingPowerBoost", [toBase58String(Q), e], nil))
141142 if ((R == R))
142143 then {
143- let S = M(invoke(q(), "calculateFarmingPowerBoost", [toBase58String(P), e], nil))
144- if ((S == S))
144+ let S = value(assetInfo(Q)).name
145+ let T = (takeRight(value(S), 1) == "U")
146+ let U = if (T)
147+ then ""
148+ else K(invoke(o(), "getGenFromName", [S], nil))
149+ if ((U == U))
145150 then {
146- let T = F(R, E)
147- let U = (T + fraction(T, S, 100))
148- $Tuple2(R, U)
151+ let V = if (T)
152+ then 100
153+ else {
154+ let F = take(takeRight(S, 2), 1)
155+ G(U, F)
156+ }
157+ let W = (V + fraction(V, R, 100))
158+ $Tuple2(U, W)
149159 }
150160 else throw("Strict value is not equal to itself.")
151161 }
152162 else throw("Strict value is not equal to itself.")
153163 }
154164 else throw("not valid NFT")
155165
156166
157-func V (e,P) = z((((("address_" + e) + "_asset_") + P) + "_farmingPower"))
167+func X (e,Q) = A((((("address_" + e) + "_asset_") + Q) + "_farmingPower"))
158168
159169
160-func W (X) = {
161- let Y = i(("assets_" + X))
162- if ((Y == ""))
170+func Y (Z) = {
171+ let aa = i(("assets_" + Z))
172+ if ((aa == ""))
163173 then nil
164- else split(Y, ",")
174+ else split(aa, ",")
165175 }
166176
167177
168-func Z (aa,ab,U) = (aa + (((b * x()) * (height - ab)) / U))
178+func ab (ac,ad,W) = (ac + (((b * y()) * (height - ad)) / W))
169179
170180
171-func ac () = if ((z("total_farmingPower") > 0))
181+func ae () = if ((A("total_farmingPower") > 0))
172182 then {
173- let aa = z("total_lastCheckInterest")
174- let ab = z("total_lastCheckInterestHeight")
175- let U = z("total_farmingPower")
176- Z(aa, ab, U)
183+ let ac = A("total_lastCheckInterest")
184+ let ad = A("total_lastCheckInterestHeight")
185+ let W = A("total_farmingPower")
186+ ab(ac, ad, W)
177187 }
178- else if ((z("total_startHeight") != 0))
179- then z("total_lastCheckInterest")
188+ else if ((A("total_startHeight") != 0))
189+ then A("total_lastCheckInterest")
180190 else throw("farming is not launched, yet")
181191
182192
183-func ad (e,P,ae) = {
184- let af = z((((("address_" + e) + "_asset_") + P) + "_lastCheckInterest"))
185- let ag = ac()
186- (ae * (ag - af))
193+func af (e,Q,ag) = {
194+ let ah = A((((("address_" + e) + "_asset_") + Q) + "_lastCheckInterest"))
195+ let ai = ae()
196+ (ag * (ai - ah))
187197 }
188198
189199
190-func ah (P,ai) = {
191- let aj = i((("assets_" + ai) + "_locked"))
192- if ((aj == ""))
193- then P
194- else ((aj + ",") + P)
200+func aj (Q,ak) = {
201+ let al = i((("assets_" + ak) + "_locked"))
202+ if ((al == ""))
203+ then Q
204+ else ((al + ",") + Q)
195205 }
196206
197207
198-func ak (e,P,ae,al) = {
199- let am = toBase58String(P)
200-[IntegerEntry("total_farmingPower", (z("total_farmingPower") + ae)), IntegerEntry("total_lastCheckInterest", ac()), IntegerEntry("total_lastCheckInterestHeight", height), IntegerEntry((((("address_" + e) + "_asset_") + am) + "_farmingPower"), ae), IntegerEntry((((("address_" + e) + "_asset_") + am) + "_lastCheckInterest"), ac()), StringEntry((((("address_" + e) + "_asset_") + am) + "_unstaker"), al)]
208+func am (e,Q,ag,an) = {
209+ let ao = toBase58String(Q)
210+[IntegerEntry("total_farmingPower", (A("total_farmingPower") + ag)), IntegerEntry("total_lastCheckInterest", ae()), IntegerEntry("total_lastCheckInterestHeight", height), IntegerEntry((((("address_" + e) + "_asset_") + ao) + "_farmingPower"), ag), IntegerEntry((((("address_" + e) + "_asset_") + ao) + "_lastCheckInterest"), ae()), StringEntry((((("address_" + e) + "_asset_") + ao) + "_unstaker"), an)]
201211 }
202212
203213
204-func an (e,P,ao,ap,ae) = {
205- let am = toBase58String(P)
206-[IntegerEntry("total_farmingPower", (z("total_farmingPower") - ae)), IntegerEntry("total_lastCheckInterest", ac()), IntegerEntry("total_lastCheckInterestHeight", height), IntegerEntry((((("address_" + e) + "_asset_") + am) + "_farmingPower"), 0), IntegerEntry((((("address_" + e) + "_asset_") + am) + "_lastCheckInterest"), ac()), IntegerEntry((((("address_" + e) + "_asset_") + am) + "_withdrawnAmount"), (z((((("address_" + e) + "_asset_") + am) + "_withdrawnAmount")) + (ap * c))), IntegerEntry((((("address_" + e) + "_asset_") + am) + "_lastCheckFarmedAmount"), (z((((("address_" + e) + "_asset_") + am) + "_lastCheckFarmedAmount")) + ao))]
214+func ap (e,Q,aq,ar,ag) = {
215+ let ao = toBase58String(Q)
216+[IntegerEntry("total_farmingPower", (A("total_farmingPower") - ag)), IntegerEntry("total_lastCheckInterest", ae()), IntegerEntry("total_lastCheckInterestHeight", height), IntegerEntry((((("address_" + e) + "_asset_") + ao) + "_farmingPower"), 0), IntegerEntry((((("address_" + e) + "_asset_") + ao) + "_lastCheckInterest"), ae()), IntegerEntry((((("address_" + e) + "_asset_") + ao) + "_withdrawnAmount"), (A((((("address_" + e) + "_asset_") + ao) + "_withdrawnAmount")) + (ar * c))), IntegerEntry((((("address_" + e) + "_asset_") + ao) + "_lastCheckFarmedAmount"), (A((((("address_" + e) + "_asset_") + ao) + "_lastCheckFarmedAmount")) + aq))]
207217 }
208218
209219
210-func aq (e) = {
211- let ar = d(s(), (("ART-XMISTL_" + e) + "_owner"))
212- if ((ar == ""))
220+func as (e) = {
221+ let at = d(s(), (("ART-XMISTL_" + e) + "_owner"))
222+ if ((at == ""))
213223 then a
214224 else ((a / 10) * 9)
215225 }
216226
217227
218-@Callable(as)
219-func configureOracle (at) = if ((as.caller != this))
228+@Callable(au)
229+func configureOracle (av) = if ((au.caller != this))
220230 then throw("admin only")
221- else [StringEntry("static_oracleAddress", at)]
231+ else [StringEntry("static_oracleAddress", av)]
222232
223233
224234
225-@Callable(as)
226-func init () = if ((as.caller != this))
235+@Callable(au)
236+func init () = if ((au.caller != this))
227237 then throw("admin only")
228238 else [IntegerEntry("total_startHeight", height)]
229239
230240
231241
232-@Callable(as)
233-func buyPerch (au,av) = {
234- let aw = y()
235- if ((aw == aw))
236- then if ((0 > value(indexOf(["B", "R", "G", "Y"], au))))
242+@Callable(au)
243+func buyPerch (aw,ax) = {
244+ let ay = z()
245+ if ((ay == ay))
246+ then if ((0 > value(indexOf(["B", "R", "G", "Y"], aw))))
237247 then throw("you need to set color properly")
238248 else {
239- let ax = value(as.payments[0])
240- let ay = aq(toString(as.caller))
241- if ((ax.assetId != k()))
249+ let az = value(au.payments[0])
250+ let aA = as(toString(au.caller))
251+ if ((az.assetId != k()))
242252 then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(k())))
243- else if ((ax.amount != ay))
244- then throw(("To buy a perch you currently need the following amount of EGGlets: " + toString(ay)))
253+ else if ((az.amount != aA))
254+ then throw(("To buy a perch you currently need the following amount of EGGlets: " + toString(aA)))
245255 else {
246- let az = fraction(ax.amount, w, 100)
247- let aA = invoke(p(), "refPayment", [av], [AttachedPayment(k(), az)])
248- if ((aA == aA))
256+ let aB = fraction(az.amount, x, 100)
257+ let aC = invoke(p(), "refPayment", [ax], [AttachedPayment(k(), aB)])
258+ if ((aC == aC))
249259 then {
250- let aB = ((("address_" + toString(as.caller)) + "_perchesAvailable_") + au)
251- let aC = z(aB)
252-[IntegerEntry(aB, (aC + 1))]
260+ let aD = ((("address_" + toString(au.caller)) + "_perchesAvailable_") + aw)
261+ let aE = A(aD)
262+[IntegerEntry(aD, (aE + 1))]
253263 }
254264 else throw("Strict value is not equal to itself.")
255265 }
256266 }
257267 else throw("Strict value is not equal to itself.")
258268 }
259269
260270
261271
262-@Callable(as)
263-func addFreePerch (e,au) = {
264- let aw = y()
265- if ((aw == aw))
266- then if ((0 > value(indexOf(["B", "R", "G", "Y"], au))))
272+@Callable(au)
273+func addFreePerch (e,aw) = {
274+ let ay = z()
275+ if ((ay == ay))
276+ then if ((0 > value(indexOf(["B", "R", "G", "Y"], aw))))
267277 then throw("you need to set color properly")
268- else if (if (if ((as.caller != m()))
269- then (as.caller != this)
278+ else if (if (if ((au.caller != m()))
279+ then (au.caller != this)
270280 else false)
271- then (as.caller != n())
281+ then (au.caller != n())
272282 else false)
273283 then throw("rebirth and swop promo only")
274284 else {
275- let aB = ((("address_" + e) + "_perchesAvailable_") + au)
276- let aC = z(aB)
277- $Tuple2([IntegerEntry(aB, (aC + 1))], "")
285+ let aD = ((("address_" + e) + "_perchesAvailable_") + aw)
286+ let aE = A(aD)
287+ $Tuple2([IntegerEntry(aD, (aE + 1))], "")
278288 }
279289 else throw("Strict value is not equal to itself.")
280290 }
281291
282292
283293
284-@Callable(as)
294+@Callable(au)
285295 func stakeNFT () = {
286- let aw = y()
287- if ((aw == aw))
296+ let ay = z()
297+ if ((ay == ay))
288298 then {
289- let aD = value(as.payments[0])
290- let P = value(value(as.payments[0]).assetId)
291- let aE = toString(as.caller)
292- let e = if ((r() == as.caller))
293- then aE
294- else toString(as.originCaller)
295- let au = takeRight(value(assetInfo(P)).name, 1)
296- let aF = z(((("address_" + e) + "_perchesAvailable_") + au))
297- if ((aD.amount != 1))
299+ let aF = value(au.payments[0])
300+ let Q = value(value(au.payments[0]).assetId)
301+ let aG = toString(au.caller)
302+ let e = if (if ((r() == au.caller))
303+ then true
304+ else (w() == au.caller))
305+ then aG
306+ else toString(au.originCaller)
307+ let aw = takeRight(value(assetInfo(Q)).name, 1)
308+ let aH = A(((("address_" + e) + "_perchesAvailable_") + aw))
309+ if ((aF.amount != 1))
298310 then throw("NFT is not attached")
299- else if ((0 >= aF))
300- then throw(("no perches available for the color " + au))
311+ else if ((0 >= aH))
312+ then throw(("no perches available for the color " + aw))
301313 else {
302- let aG = O(P, e)
303- let ai = aG._1
304- let ae = aG._2
305- (ak(e, P, ae, aE) ++ [IntegerEntry(((("address_" + e) + "_perchesAvailable_") + au), (aF - 1))])
314+ let aI = P(Q, e)
315+ let ak = aI._1
316+ let ag = aI._2
317+ (am(e, Q, ag, aG) ++ [IntegerEntry(((("address_" + e) + "_perchesAvailable_") + aw), (aH - 1))])
306318 }
307319 }
308320 else throw("Strict value is not equal to itself.")
309321 }
310322
311323
312324
313-@Callable(as)
325+@Callable(au)
314326 func stakeNFTWithoutPerch () = {
315- let aw = y()
316- if ((aw == aw))
327+ let ay = z()
328+ if ((ay == ay))
317329 then {
318- let aH = t()
319- let aI = split(aH, ";")
320- let aJ = toString(as.caller)
321- if ((indexOf(aI, aJ) == unit))
330+ let aJ = t()
331+ let aK = split(aJ, ";")
332+ let aL = toString(au.caller)
333+ if ((indexOf(aK, aL) == unit))
322334 then throw("Only trusted smart contracts can stake without a perch!")
323335 else {
324- let aD = value(as.payments[0])
325- let P = value(value(as.payments[0]).assetId)
326- let e = toString(as.originCaller)
327- if ((aD.amount != 1))
336+ let aF = value(au.payments[0])
337+ let Q = value(value(au.payments[0]).assetId)
338+ let e = toString(au.originCaller)
339+ if ((aF.amount != 1))
328340 then throw("NFT is not attached")
329341 else {
330- let aK = O(P, e)
331- let ai = aK._1
332- let ae = aK._2
333- let am = toBase58String(P)
334- let aE = toString(as.caller)
335- (ak(e, P, ae, aE) ++ [BooleanEntry((((("address_" + e) + "_asset_") + am) + "_without_perch"), true)])
342+ let aM = P(Q, e)
343+ let ak = aM._1
344+ let ag = aM._2
345+ let ao = toBase58String(Q)
346+ let aG = toString(au.caller)
347+ (am(e, Q, ag, aG) ++ [BooleanEntry((((("address_" + e) + "_asset_") + ao) + "_without_perch"), true)])
336348 }
337349 }
338350 }
339351 else throw("Strict value is not equal to itself.")
340352 }
341353
342354
343355
344-@Callable(as)
345-func unstakeNFT (am) = {
346- let aw = y()
347- if ((aw == aw))
356+@Callable(au)
357+func unstakeNFT (ao) = {
358+ let ay = z()
359+ if ((ay == ay))
348360 then {
349- let aL = toString(as.originCaller)
350- if (C(aL))
361+ let aN = toString(au.originCaller)
362+ if (D(aN))
351363 then throw("Ooops, looks like you lost in one of the Ducksquid games! As you already know, any loss has its consequences, so you will be not able to claim your farming rewards till the end of DuckSquid game. Quack in peace!")
352364 else {
353- let P = fromBase58String(am)
354- let al = i((((("address_" + aL) + "_asset_") + am) + "_unstaker"))
355- let e = if ((r() == as.caller))
356- then toString(as.caller)
357- else aL
358- let ae = V(e, am)
359- let aM = ad(e, am, ae)
360- let aN = (aM + z((((("address_" + e) + "_asset_") + am) + "_lastCheckFarmedAmount")))
361- let ap = z((((("address_" + e) + "_asset_") + am) + "_withdrawnAmount"))
362- let aO = ((aN - ap) / (b * 100))
363- let au = takeRight(value(assetInfo(P)).name, 1)
364- let aE = toString(as.caller)
365- if (if ((al != ""))
366- then (al != aE)
365+ let Q = fromBase58String(ao)
366+ let an = i((((("address_" + aN) + "_asset_") + ao) + "_unstaker"))
367+ let e = if (if ((r() == au.caller))
368+ then true
369+ else (w() == au.caller))
370+ then toString(au.caller)
371+ else aN
372+ let ag = X(e, ao)
373+ let aO = af(e, ao, ag)
374+ let aP = (aO + A((((("address_" + e) + "_asset_") + ao) + "_lastCheckFarmedAmount")))
375+ let ar = A((((("address_" + e) + "_asset_") + ao) + "_withdrawnAmount"))
376+ let aQ = ((aP - ar) / (b * 100))
377+ let aw = takeRight(value(assetInfo(Q)).name, 1)
378+ let aG = toString(au.caller)
379+ if (if ((an != ""))
380+ then (an != aG)
367381 else false)
368382 then throw("It seems duck was staked throuh a dapp, not directly, please unstake through dapp!")
369- else if ((0 >= ae))
383+ else if ((0 >= ag))
370384 then throw("asset not available")
371385 else {
372- let aP = B((((("address_" + e) + "_asset_") + am) + "_without_perch"))
373- if ((au == "U"))
386+ let aR = C((((("address_" + e) + "_asset_") + ao) + "_without_perch"))
387+ if ((aw == "U"))
374388 then throw("use another function to unstake Jackpot NFT")
375389 else {
376- let aQ = an(e, P, aM, aO, ae)
377- let aR = if (aP)
378- then [DeleteEntry((((("address_" + e) + "_asset_") + am) + "_without_perch"))]
379- else [IntegerEntry(((("address_" + e) + "_perchesAvailable_") + au), (z(((("address_" + e) + "_perchesAvailable_") + au)) + 1))]
380- $Tuple2(((aQ ++ [ScriptTransfer(as.caller, (aO * 1000000), k()), ScriptTransfer(as.caller, 1, P)]) ++ aR), (aO * 1000000))
390+ let aS = ap(e, Q, aO, aQ, ag)
391+ let aT = if (aR)
392+ then [DeleteEntry((((("address_" + e) + "_asset_") + ao) + "_without_perch"))]
393+ else [IntegerEntry(((("address_" + e) + "_perchesAvailable_") + aw), (A(((("address_" + e) + "_perchesAvailable_") + aw)) + 1))]
394+ $Tuple2(((aS ++ [ScriptTransfer(au.caller, (aQ * 1000000), k()), ScriptTransfer(au.caller, 1, Q)]) ++ aT), (aQ * 1000000))
381395 }
382396 }
383397 }
384398 }
385399 else throw("Strict value is not equal to itself.")
386400 }
387401
388402
389403
390-@Callable(as)
391-func stakeJackpot (au) = {
392- let aw = y()
393- if ((aw == aw))
404+@Callable(au)
405+func stakeJackpot (aw) = {
406+ let ay = z()
407+ if ((ay == ay))
394408 then {
395- let aD = value(as.payments[0])
396- let P = value(aD.assetId)
397- let aE = toString(as.caller)
398- let e = if ((r() == as.caller))
399- then aE
400- else toString(as.originCaller)
401- let aF = z(((("address_" + e) + "_perchesAvailable_") + au))
402- let aS = value(assetInfo(P)).issuer
403- if ((aD.amount != 1))
409+ let aF = value(au.payments[0])
410+ let Q = value(aF.assetId)
411+ let aG = toString(au.caller)
412+ let e = if (if ((r() == au.caller))
413+ then true
414+ else (w() == au.caller))
415+ then aG
416+ else toString(au.originCaller)
417+ let aH = A(((("address_" + e) + "_perchesAvailable_") + aw))
418+ let aU = value(assetInfo(Q)).issuer
419+ if ((aF.amount != 1))
404420 then throw("NFT is not attached")
405- else if (if ((aS == l()))
421+ else if (if ((aU == l()))
406422 then true
407- else (aS == o()))
408- then if ((takeRight(value(value(assetInfo(P)).name), 1) != "U"))
423+ else (aU == o()))
424+ then if ((takeRight(value(value(assetInfo(Q)).name), 1) != "U"))
409425 then throw("jackpot only")
410- else if ((0 >= aF))
411- then throw(("no perches available for the color " + au))
412- else (ak(e, P, 100, aE) ++ [IntegerEntry(((("address_" + e) + "_perchesAvailable_") + au), (aF - 1)), StringEntry((((("address_" + e) + "_asset_") + toBase58String(P)) + "_perchColor"), au)])
426+ else if ((0 >= aH))
427+ then throw(("no perches available for the color " + aw))
428+ else {
429+ let aV = P(Q, e)
430+ (am(e, Q, aV._2, aG) ++ [IntegerEntry(((("address_" + e) + "_perchesAvailable_") + aw), (aH - 1)), StringEntry((((("address_" + e) + "_asset_") + toBase58String(Q)) + "_perchColor"), aw)])
431+ }
413432 else throw("asset is not valid")
414433 }
415434 else throw("Strict value is not equal to itself.")
416435 }
417436
418437
419438
420-@Callable(as)
421-func unstakeJackpot (am) = {
422- let aw = y()
423- if ((aw == aw))
439+@Callable(au)
440+func unstakeJackpot (ao) = {
441+ let ay = z()
442+ if ((ay == ay))
424443 then {
425- let aE = toString(as.caller)
426- let e = if ((r() == as.caller))
427- then aE
428- else toString(as.originCaller)
429- if (C(e))
444+ let aG = toString(au.caller)
445+ let e = if (if ((r() == au.caller))
446+ then true
447+ else (w() == au.caller))
448+ then aG
449+ else toString(au.originCaller)
450+ if (D(e))
430451 then throw("Ooops, looks like you lost in one of the Ducksquid games! As you already know, any loss has its consequences, so you will be not able to claim your farming rewards till the end of DuckSquid game. Quack in peace!")
431452 else {
432- let P = fromBase58String(am)
433- let au = i((((("address_" + e) + "_asset_") + am) + "_perchColor"))
434- let ae = V(e, am)
435- let aM = ad(e, am, ae)
436- let aN = (aM + z((((("address_" + e) + "_asset_") + am) + "_lastCheckFarmedAmount")))
437- let ap = z((((("address_" + e) + "_asset_") + am) + "_withdrawnAmount"))
438- let aO = ((aN - ap) / (b * 100))
439- let al = i((((("address_" + e) + "_asset_") + am) + "_unstaker"))
440- if (if ((al != ""))
441- then (al != aE)
453+ let Q = fromBase58String(ao)
454+ let aw = i((((("address_" + e) + "_asset_") + ao) + "_perchColor"))
455+ let ag = X(e, ao)
456+ let aO = af(e, ao, ag)
457+ let aP = (aO + A((((("address_" + e) + "_asset_") + ao) + "_lastCheckFarmedAmount")))
458+ let ar = A((((("address_" + e) + "_asset_") + ao) + "_withdrawnAmount"))
459+ let aQ = ((aP - ar) / (b * 100))
460+ let an = i((((("address_" + e) + "_asset_") + ao) + "_unstaker"))
461+ if (if ((an != ""))
462+ then (an != aG)
442463 else false)
443464 then throw("It seems duck was staked throuh a dapp, not directly, please unstake through dapp!")
444- else if ((takeRight(value(value(assetInfo(P)).name), 1) != "U"))
465+ else if ((takeRight(value(value(assetInfo(Q)).name), 1) != "U"))
445466 then throw("jackpot only")
446- else if ((ae > 0))
467+ else if ((ag > 0))
447468 then {
448- let aQ = an(e, P, aM, aO, ae)
449- let aP = B((((("address_" + e) + "_asset_") + am) + "_without_perch"))
450- let aR = if (aP)
451- then [DeleteEntry((((("address_" + e) + "_asset_") + am) + "_without_perch"))]
452- else [IntegerEntry(((("address_" + e) + "_perchesAvailable_") + au), (z(((("address_" + e) + "_perchesAvailable_") + au)) + 1))]
453- $Tuple2(((aQ ++ aR) ++ [ScriptTransfer(as.caller, (aO * 1000000), k()), ScriptTransfer(as.caller, 1, P)]), (aO * 1000000))
469+ let aS = ap(e, Q, aO, aQ, ag)
470+ let aR = C((((("address_" + e) + "_asset_") + ao) + "_without_perch"))
471+ let aT = if (aR)
472+ then [DeleteEntry((((("address_" + e) + "_asset_") + ao) + "_without_perch"))]
473+ else [IntegerEntry(((("address_" + e) + "_perchesAvailable_") + aw), (A(((("address_" + e) + "_perchesAvailable_") + aw)) + 1))]
474+ $Tuple2(((aS ++ aT) ++ [ScriptTransfer(au.caller, (aQ * 1000000), k()), ScriptTransfer(au.caller, 1, Q)]), (aQ * 1000000))
454475 }
455476 else throw("")
456477 }
457478 }
458479 else throw("Strict value is not equal to itself.")
459480 }
460481
461482
462483
463-@Callable(as)
464-func claimReward (am) = {
465- let aw = y()
466- if ((aw == aw))
484+@Callable(au)
485+func claimReward (ao) = {
486+ let ay = z()
487+ if ((ay == ay))
467488 then {
468- let e = if ((as.originCaller == v()))
469- then toString(as.caller)
470- else toString(as.originCaller)
471- if (C(e))
489+ let e = if ((au.originCaller == v()))
490+ then toString(au.caller)
491+ else toString(au.originCaller)
492+ if (D(e))
472493 then throw("Ooops, looks like you lost in one of the Ducksquid games! As you already know, any loss has its consequences, so you will be not able to claim your farming rewards till the end of DuckSquid game. Quack in peace!")
473494 else {
474- let P = fromBase58String(am)
475- let ae = V(e, am)
476- let aM = ad(e, am, ae)
477- let aN = (aM + z((((("address_" + e) + "_asset_") + am) + "_lastCheckFarmedAmount")))
478- let ap = z((((("address_" + e) + "_asset_") + am) + "_withdrawnAmount"))
479- let aO = ((aN - ap) / (b * 100))
480- if ((0 >= aO))
495+ let Q = fromBase58String(ao)
496+ let ag = X(e, ao)
497+ let aO = af(e, ao, ag)
498+ let aP = (aO + A((((("address_" + e) + "_asset_") + ao) + "_lastCheckFarmedAmount")))
499+ let ar = A((((("address_" + e) + "_asset_") + ao) + "_withdrawnAmount"))
500+ let aQ = ((aP - ar) / (b * 100))
501+ if ((0 >= aQ))
481502 then throw("you have no EGGs to withdraw")
482- else $Tuple2([IntegerEntry((((("address_" + e) + "_asset_") + am) + "_withdrawnAmount"), (z((((("address_" + e) + "_asset_") + am) + "_withdrawnAmount")) + (aO * c))), ScriptTransfer(Address(fromBase58String(e)), (aO * 1000000), k())], (aO * 1000000))
503+ else $Tuple2([IntegerEntry((((("address_" + e) + "_asset_") + ao) + "_withdrawnAmount"), (A((((("address_" + e) + "_asset_") + ao) + "_withdrawnAmount")) + (aQ * c))), ScriptTransfer(Address(fromBase58String(e)), (aQ * 1000000), k())], (aQ * 1000000))
483504 }
484505 }
485506 else throw("Strict value is not equal to itself.")
486507 }
487508
488509

github/deemru/w8io/873ac7e 
373.37 ms