tx · 8sxpqpajxTzmu2ixUVi5Xn3m3GMR93vUaCUCcfrLV31G

3Mp5kisFrqESzrXxAMEPk2k69zpeF41czEE:  -0.01400000 Waves

2022.04.04 17:01 [1993932] smart account 3Mp5kisFrqESzrXxAMEPk2k69zpeF41czEE > SELF 0.00000000 Waves

{ "type": 13, "id": "8sxpqpajxTzmu2ixUVi5Xn3m3GMR93vUaCUCcfrLV31G", "fee": 1400000, "feeAssetId": null, "timestamp": 1649080906695, "version": 1, "sender": "3Mp5kisFrqESzrXxAMEPk2k69zpeF41czEE", "senderPublicKey": "G349Uq3FTox7dRNLeAfAQeoACvwZ9iEnVSaHcEYn6j8J", "proofs": [ "4xzspTrCrv111C3BkqsfcPvzxU9jEBTbjADrMxkdop2WwS6SuTjas4btpqrJsd1KWaUSKUXYxqkTpvWQS8qXWsfy" ], "script": "base64:AAIFAAAAAAAAAGYIAhIECgIIARIHCgUCAQEBARIAEgASCQoHAgEBAQEBBBIAEgMKAQgSAwoBCBIDCgEIEgMKAQgSBQoDAQEBEgUKAwEBARIGCgQICAgBEgMKAQgSAwoBCBIAEgMKAQgSBwoFCAgICAgAAAA4AAAAAAtyZXZpc2lvbk51bQIAAAAAAAAAAANTRVACAAAAAl9fAAAAAAhNQVhERVBUSAAAAAAAAAAAEQAAAAAJVVNFUkRFUFRIAAAAAAAAAAAaAAAAAAVTQ0FMRQAAAAAAAAAD6AAAAAAFTVVMVDgAAAAAAAX14QAAAAAACnplcm9CaWdJbnQJAAE2AAAAAQAAAAAAAAAAAAEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkAAAAAAAAAAAABAAAAD2dldE51bWJlck9yRmFpbAAAAAEAAAADa2V5CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5CQABLAAAAAIJAAEsAAAAAgIAAAAPbWFuZGF0b3J5IHRoaXMuBQAAAANrZXkCAAAADyBpcyBub3QgZGVmaW5lZAEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkCAAAAAAEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAQAAAANrZXkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCIAAAABBQAAAANrZXkJAAEsAAAAAgkAASwAAAACAgAAAA9tYW5kYXRvcnkgdGhpcy4FAAAAA2tleQIAAAAPIGlzIG5vdCBkZWZpbmVkAQAAAANhYnMAAAABAAAAA3ZhbAMJAAE/AAAAAgUAAAAKemVyb0JpZ0ludAUAAAADdmFsCQABPgAAAAEFAAAAA3ZhbAUAAAADdmFsAQAAABFrZXlGYWN0b3J5QWRkcmVzcwAAAAACAAAAHCVzJXNfX2NvbmZpZ19fZmFjdG9yeUFkZHJlc3MAAAAAEWZhY3RvcnlBZGRyZXNzU3RyCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAQkBAAAAEWtleUZhY3RvcnlBZGRyZXNzAAAAAAAAAAAPZmFjdG9yeUNvbnRyYWN0CQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAABFmYWN0b3J5QWRkcmVzc1N0cgEAAAASa2V5RW1pc3Npb25BZGRyZXNzAAAAAAIAAAAdJXMlc19fY29uZmlnX19lbWlzc2lvbkFkZHJlc3MAAAAAEmVtaXNzaW9uQWRkcmVzc1N0cgkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAEJAQAAABJrZXlFbWlzc2lvbkFkZHJlc3MAAAAAAAAAABBlbWlzc2lvbkNvbnRyYWN0CQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAABJlbWlzc2lvbkFkZHJlc3NTdHIAAAAADUlkeENmZ0Fzc2V0SWQAAAAAAAAAAAEAAAAAFklkeENmZ1BhY2VtYWtlckFkZHJlc3MAAAAAAAAAAAIAAAAAFklkeENmZ0Jvb3N0aW5nQ29udHJhY3QAAAAAAAAAAAMAAAAADklkeENmZ01heERlcHRoAAAAAAAAAAAEAQAAAAlrZXlDb25maWcAAAAAAgAAAAolc19fY29uZmlnAQAAABVyZWFkQ29uZmlnQXJyYXlPckZhaWwAAAAACQAEtQAAAAIJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAABCQEAAAAJa2V5Q29uZmlnAAAAAAUAAAADU0VQAQAAAAxmb3JtYXRDb25maWcAAAAEAAAADHd4QXNzZXRJZFN0cgAAABptYXRjaGVyUGFjZW1ha2VyQWRkcmVzc1N0cgAAABpib29zdGluZ0NvbnRyYWN0QWRkcmVzc1N0cgAAAAhtYXhEZXB0aAkABLkAAAACCQAETAAAAAICAAAACCVzJXMlcyVkCQAETAAAAAIFAAAADHd4QXNzZXRJZFN0cgkABEwAAAACBQAAABptYXRjaGVyUGFjZW1ha2VyQWRkcmVzc1N0cgkABEwAAAACBQAAABpib29zdGluZ0NvbnRyYWN0QWRkcmVzc1N0cgkABEwAAAACCQABpAAAAAEFAAAACG1heERlcHRoBQAAAANuaWwFAAAAA1NFUAEAAAAfa2V5R3d4UmV3YXJkRW1pc3Npb25TdGFydEhlaWdodAAAAAACAAAAKCVzJXNfX2d3eFJld2FyZEVtaXNzaW9uUGFydF9fc3RhcnRIZWlnaHQBAAAADWtleVVzZXJzQ291bnQAAAAAAgAAAA8lc19fbmV4dFVzZXJOdW0BAAAAFmtleVJhdGVQZXJCbG9ja0N1cnJlbnQAAAAAAgAAABslcyVzX19yYXRlUGVyQmxvY2tfX2N1cnJlbnQBAAAAFGtleVBvb2xXZWlnaHRWaXJ0dWFsAAAAAAIAAAAgJXMlc19fcG9vbFdlaWdodF9fR1dYdmlydHVhbFBPT0wBAAAAFGtleU5leHRQcm9jZXNzZWRVc2VyAAAAAAIAAAAVJXNfX25leHRQcm9jZXNzZWRVc2VyAQAAAA9rZXlMYXRlc3RQZXJpb2QAAAAAAgAAABAlc19fbGF0ZXN0UGVyaW9kAQAAAA1rZXlOZXh0UGVyaW9kAAAAAAIAAAAOJXNfX25leHRQZXJpb2QBAAAAFmtleU5leHRQcm9jZXNzZWRQZXJpb2QAAAAAAgAAABclc19fbmV4dFByb2Nlc3NlZFBlcmlvZAEAAAAea2V5TmV4dFVubGFpbWVkUGVyaW9kT2ZVc2VyT2xkAAAAAQAAAAl1c2VySW5kZXgJAAS5AAAAAgkABEwAAAACAgAAABclcyVkX19uZXh0Q2xhaW1lZFBlcmlvZAkABEwAAAACCQABpAAAAAEFAAAACXVzZXJJbmRleAUAAAADbmlsBQAAAANTRVABAAAAG2tleU5leHRVbmxhaW1lZFBlcmlvZE9mVXNlcgAAAAEAAAAJdXNlckluZGV4CQAEuQAAAAIJAARMAAAAAgIAAAAaJXMlZF9fbmV4dENsYWltZWRQZXJpb2ROZXcJAARMAAAAAgkAAaQAAAABBQAAAAl1c2VySW5kZXgFAAAAA25pbAUAAAADU0VQAQAAABxrZXlMYXN0UHJvY2Vzc2VkUGVyaW9kT2ZVc2VyAAAAAQAAAAl1c2VySW5kZXgJAAS5AAAAAgkABEwAAAACAgAAABklcyVkX19sYXN0UHJvY2Vzc2VkUGVyaW9kCQAETAAAAAIJAAGkAAAAAQUAAAAJdXNlckluZGV4BQAAAANuaWwFAAAAA1NFUAEAAAAka2V5TGFzdFByb2Nlc3NlZFBlcmlvZE9mVXNlckZvckNsYWltAAAAAQAAAAl1c2VySW5kZXgJAAS5AAAAAgkABEwAAAAC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BAAAAAFrCQEAAAAFdmFsdWUAAAABCQAEGgAAAAIFAAAAF2Jvb3N0aW5nQ29udHJhY3RBZGRyZXNzCQEAAAAWa2V5VXNlcktWYWx1ZUZvclBlcmlvZAAAAAIFAAAAAnB2BQAAAAl1c2VySW5kZXgEAAAAAWIJAQAAAAV2YWx1ZQAAAAEJAAQaAAAAAgUAAAAXYm9vc3RpbmdDb250cmFjdEFkZHJlc3MJAQAAABZrZXlVc2VyQlZhbHVlRm9yUGVyaW9kAAAAAgUAAAACcHYFAAAACXVzZXJJbmRleAQAAAABdwkAAGQAAAACCQAAaAAAAAIFAAAAAWsFAAAAD2hlaWdodEZvclBlcmlvZAUAAAABYgMJAABmAAAAAgUAAAABdwAAAAAAAAAAAAkABRQAAAACCQAAaQAAAAIFAAAAAXcFAAAABVNDQUxFBQAAAANuaWwJAAUUAAAAAgAAAAAAAAAAAAUAAAADbmlsCQAFFAAAAAIAAAAAAAAAAAAFAAAAA25pbAEAAAAWY2FsY1VzZXJXZWlnaHRGb3JDbGFpbQAAAAUAAAAXYm9vc3RpbmdDb250cmFjdEFkZHJlc3MAAAAPaGVpZ2h0Rm9yUGVyaW9kAAAABnBlcmlvZAAAAAl1c2VySW5kZXgAAAAIcmVhZG9ubHkEAAAABWtMYXN0CQEAAAAka2V5TGFzdFByb2Nlc3NlZFBlcmlvZE9mVXNlckZvckNsYWltAAAAAQUAAAAJdXNlckluZGV4BAAAAARrS2V5CQEAAAAWa2V5VXNlcktWYWx1ZUZvclBlcmlvZAAAAAIFAAAABnBlcmlvZAUAAAAJdXNlckluZGV4BAAAAARrUmF3CQAEGgAAAAIFAAAAF2Jvb3N0aW5nQ29udHJhY3RBZGRyZXNzBQAAAARrS2V5BAAAABtuZXh0VW5sYWltZWRQZXJpb2RPZlVzZXJPbGQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAAB5rZXlOZXh0VW5sYWltZWRQZXJpb2RPZlVzZXJPbGQAAAABBQAAAAl1c2VySW5kZXgEAAAADGlzTm90Q2xhaW1lZAMJAABnAAAAAgUAAAAGcGVyaW9kBQAAABtuZXh0VW5sYWltZWRQZXJpb2RPZlVzZXJPbGQJAABmAAAAAgUAAAAbbmV4dFVubGFpbWVkUGVyaW9k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AXIFAAAAByRtYXRjaDAFAAAAAXIJAAACAAAAAQIAAAAXSW5jb3JyZWN0IGludm9rZSByZXN1bHQJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQAAABhwcm9jZXNzTmV4dEJhdGNoSW50ZXJuYWwAAAAFAAAAEGJvb3N0aW5nQ29udHJhY3QAAAANY3VycmVudFBlcmlvZAAAAAtjdXJyZW50VXNlcgAAAAVkZXB0aAAAAAt0b3RhbFdlaWdodAQAAAAXYm9vc3RpbmdDb250cmFjdEFkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQUAAAAQYm9vc3RpbmdDb250cmFjdAQAAAAMbGF0ZXN0UGVyaW9kCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAPa2V5TGF0ZXN0UGVyaW9kAAAAAAQAAAAKdXNlcnNDb3VudAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAABdib29zdGluZ0NvbnRyYWN0QWRkcmVzcwkBAAAADWtleVVzZXJzQ291bnQAAAAAAAAAAAAAAAAABAAAAA50b3RhbFdlaWdodEtleQkBAAAAF2tleVRvdGFsV2VpZ2h0Rm9yUGVyaW9kAAAAAQUAAAANY3VycmVudFBlcmlvZAQAAAAPaGVpZ2h0Rm9yUGVyaW9kCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAASa2V5SGVpZ2h0Rm9yUGVyaW9kAAAAAQUAAAANY3VycmVudFBlcmlvZAMDCQAAZgAAAAIFAAAABWRlcHRoAAAAAAAAAAAACQAAZwAAAAIFAAAADGxhdGVzdFBlcmlvZAUAAAANY3VycmVudFBlcmlvZAcEAAAAAnQwCQEAAAAOY2FsY1VzZXJXZWlnaHQAAAAEBQAAABdib29zdGluZ0NvbnRyYWN0QWRkcmVzcwUAAAAPaGVpZ2h0Rm9yUGVyaW9kBQAAAA1jdXJyZW50UGVyaW9kBQAAAAtjdXJyZW50VXNlcgQAAAAHd2VpZ2h0MAkAAGQAAAACBQAAAAt0b3RhbFdlaWdodAgFAAAAAnQwAAAAAl8xAwkAAGYAAAACBQAAAAp1c2Vyc0NvdW50CQAAZAAAAAIFAAAAC2N1cnJlbnRVc2VyAAAAAAAA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ZXJBY2N1bXVsYXRlZEVtaXNzaW9uAAAACHJlYWRvbmx5BAAAABdib29zdGluZ0NvbnRyYWN0QWRkcmVzcwkBAAAAB0FkZHJlc3MAAAABBQAAABBib29zdGluZ0NvbnRyYWN0BAAAAAxsYXRlc3RQZXJpb2QJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABZrZXlOZXh0UHJvY2Vzc2VkUGVyaW9kAAAAAAQAAAALdG90YWxXZWlnaHQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABdrZXlUb3RhbFdlaWdodEZvclBlcmlvZAAAAAEFAAAADWN1cnJlbnRQZXJpb2QEAAAAD2hlaWdodEZvclBlcmlvZAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAEmtleUhlaWdodEZvclBlcmlvZAAAAAEFAAAADWN1cnJlbnRQZXJpb2QEAAAACnVzZXJXZWlnaHQJAQAAABZjYWxjVXNlcldlaWdodEZvckNsYWltAAAABQUAAAAXYm9vc3RpbmdDb250cmFjdEFkZHJlc3MFAAAAD2hlaWdodEZvclBlcmlvZAUAAAANY3VycmVudFBlcmlvZAUAAAALY3VycmVudFVzZXIFAAAACHJlYWRvbmx5BAAAABp1c2VyQW1vdW50TWF0Y2hlckZvclBlcmlvZAkAAGsAAAADCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAXa2V5VG90YWxBbW91bnRGb3JQZXJpb2QAAAABBQAAAA1jdXJyZW50UGVyaW9kBQAAAAp1c2VyV2VpZ2h0BQAAAAt0b3RhbFdlaWdodAQAAAAbdXNlckFtb3VudEVtaXNzaW9uRm9yUGVyaW9kCQAAawAAAAMJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAAB1rZXlBdXhFbWlzc2lvblJld2FyZEZvclBlcmlvZAAAAAEFAAAADWN1cnJlbnRQZXJpb2QFAAAACnVzZXJXZWlnaHQFAAAAC3RvdGFsV2VpZ2h0AwMJAABnAAAAAgAAAAAAAAAAAAUAAAAFZGVwdGgGCQAAZwAAAAIJAABkAAAAAgUAAAANY3VycmVudFBlcmlvZAAAAAAAAAAAAQUAAAAMbGF0ZXN0UGVyaW9kCQAFFQAAAAMJAABkAAAAAgUAAAANY3VycmVudFBlcmlvZAAAAAAAAAAAAQkAAGQAAAACBQAAABZ1c2VyQWNjdW11bGF0ZWRNYXRjaGVyBQAAABp1c2VyQW1vdW50TWF0Y2hlckZvclBlcmlvZAkAAGQAAAACBQAAABd1c2VyQWNjdW11bGF0ZWRFbWlzc2lvbgUAAAAbdXNlckFtb3VudEVtaXNzaW9uRm9yUGVyaW9kCQEAAAALaW52b2tlQ2xhaW0AAAAHBQAAABBib29zdGluZ0NvbnRyYWN0CQAAZAAAAAIFAAAADWN1cnJlbnRQZXJpb2QAAAAAAAAAAAEFAAAAC2N1cnJlbnRVc2VyCQAAZQAAAAIFAAAABWRlcHRoAAAAAAAAAAABCQAAZAAAAAIFAAAAFnVzZXJBY2N1bXVsYXRlZE1hdGNoZXIFAAAAGnVzZXJBbW91bnRNYXRjaGVyRm9yUGVyaW9kCQAAZAAAAAIFAAAAF3VzZXJBY2N1bXVsYXRlZEVtaXNzaW9uBQAAABt1c2VyQW1vdW50RW1pc3Npb25Gb3JQZXJpb2QFAAAACHJlYWRvbmx5AQAAABFjb21tb25DbGFpbVJld2FyZAAAAAIAAAALdXNlckFkZHJlc3MAAAAIcmVhZG9ubHkEAAAACGNmZ0FycmF5CQEAAAAVcmVhZENvbmZpZ0FycmF5T3JGYWlsAAAAAAQAAAAHdXNlcklkeAkBAAAAFWdldFVzZXJJbmRleEJ5QWRkcmVzcwAAAAIJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAFklkeENmZ0Jvb3N0aW5nQ29udHJhY3QFAAAAC3VzZXJBZGRyZXNzBAAAAA1jdXJyZW50UGVyaW9kCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAba2V5TmV4dFVubGFpbWVkUGVyaW9kT2ZVc2VyAAAAAQUAAAAHdXNlcklkeAQAAAATbmV4dFByb2Nlc3NlZFBlcmlvZAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFmtleU5leHRQcm9jZXNzZWRQZXJpb2QAAAAAAwkAAGcAAAACBQAAAA1jdXJyZW50UGVyaW9kBQAAABNuZXh0UHJvY2Vzc2VkUGVyaW9kCQAAAgAAAAECAAAAEE5vdGhpbmcgdG8gY2xhaW0EAAAAEGJvb3N0aW5nQ29udHJhY3QJAAJZAAAAAQkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAAWSWR4Q2ZnQm9vc3RpbmdDb250cmFjdAQAAAANJHQwMTQ2NTYxNDc5MgkBAAAADWNsYWltSW50ZXJuYWwAAAAHBQAAABBib29zdGluZ0NvbnRyYWN0BQAAAA1jdXJyZW50UGVyaW9kBQAAAAd1c2VySWR4BQAAAAlVU0VSREVQVEgAAAAAAAAAAAAAAAAAAAAAAAAFAAAACHJlYWRvbmx5BAAAAAZwZXJpb2QIBQAAAA0kdDAxNDY1NjE0NzkyAAAAAl8xBAAAABFhbW91bnRGcm9tTWF0Y2hlcggFAAAADSR0MDE0NjU2MTQ3OTIAAAACXzIEAAAAEmFtb3VudEZyb21FbWlzc2lvbggFAAAADSR0MDE0NjU2MTQ3OTIAAAACXzMJAAUYAAAABgUAAAAGcGVyaW9kBQAAABFhbW91bnRGcm9tTWF0Y2hlcgUAAAASYW1vdW50RnJvbUVtaXNzaW9uBQAAAAd1c2VySWR4BQAAAAhjZmdBcnJheQUAAAATbmV4dFByb2Nlc3NlZFBlcmlvZAAAABIAAAABaQEAAAAKc2V0SW50ZWdlcgAAAAIAAAABawAAAAF2BAAAAAtjaGVja0NhbGxlcgMJAAAAAAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzBgkAAAIAAAABAgAAACRTaG91bGQgYmUgY2FsbGVkIGJ5IHRoaXMgc2NyaXB0IG9ubHkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgQAAAALZGF0YUVudHJpZXMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAAWsFAAAAAXYFAAAAA25pbAkABRQAAAACBQAAAAtkYXRhRW50cmllcwUAAAALZGF0YUVudHJpZXMJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAEHByb2Nlc3NOZXh0QmF0Y2gAAAAFAAAAEGJvb3N0aW5nQ29udHJhY3QAAAANY3VycmVudFBlcmlvZAAAAAtjdXJyZW50VXNlcgAAAAVkZXB0aAAAAAt0b3RhbFdlaWdodAMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwkAAAIAAAABAgAAACRTaG91bGQgYmUgY2FsbGVkIGJ5IHRoaXMgc2NyaXB0IG9ubHkEAAAAA3RwbAkBAAAAGHByb2Nlc3NOZXh0QmF0Y2hJbnRlcm5hbAAAAAUFAAAAEGJvb3N0aW5nQ29udHJhY3QFAAAADWN1cnJlbnRQZXJpb2QFAAAAC2N1cnJlbnRVc2VyBQAAAAVkZXB0aAUAAAALdG90YWxXZWlnaHQJAAUUAAAAAggFAAAAA3RwbAAAAAJfMQkABRUAAAADCAUAAAADdHBsAAAAAl8yCAUAAAADdHBsAAAAAl8zCAUAAAADdHBsAAAAAl80AAAAAWkBAAAAHXByb2Nlc3NQZW5kaW5nUGVyaW9kc0FuZFVzZXJzAAAAAAQAAAANY3VycmVudFBlcmlvZAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFmtleU5leHRQcm9jZXNzZWRQZXJpb2QAAAAAAwkAAGYAAAACBQAAAA1jdXJyZW50UGVyaW9kCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAPa2V5TGF0ZXN0UGVyaW9kAAAAAAkAAAIAAAABAgAAABJOb3RoaW5nIHRvIHByb2Nlc3MEAAAACGNmZ0FycmF5CQEAAAAVcmVhZENvbmZpZ0FycmF5T3JGYWlsAAAAAAQAAAAFZGVwdGgJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAAOSWR4Q2ZnTWF4RGVwdGgDCQAAZgAAAAIFAAAABWRlcHRoBQAAAAhNQVhERVBUSAkAAAIAAAABAgAAABZEZXB0aCBleGNlZWRzIE1BWERFUFRIBAAAABBib29zdGluZ0NvbnRyYWN0CQACWQAAAAEJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAFklkeENmZ0Jvb3N0aW5nQ29udHJhY3QEAAAAC2N1cnJlbnRVc2VyCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAUa2V5TmV4dFByb2Nlc3NlZFVzZXIAAAAABAAAAAt0b3RhbFdlaWdodAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAF2tleVRvdGFsV2VpZ2h0Rm9yUGVyaW9kAAAAAQUAAAANY3VycmVudFBlcmlvZAQAAAABcgkBAAAAGHByb2Nlc3NOZXh0QmF0Y2hJbnRlcm5hbAAAAAUFAAAAEGJvb3N0aW5nQ29udHJhY3QFAAAADWN1cnJlbnRQZXJpb2QFAAAAC2N1cnJlbnRVc2VyBQAAAAVkZXB0aAUAAAALdG90YWxXZWlnaHQJAARNAAAAAgkABE0AAAACCAUAAAABcgAAAAJfMQkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABZrZXlOZXh0UHJvY2Vzc2VkUGVyaW9kAAAAAAgFAAAAAXIAAAACXzIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAUa2V5TmV4dFByb2Nlc3NlZFVzZXIAAAAACAUAAAABcgAAAAJfMwAAAAFpAQAAAAdkZXBvc2l0AAAAAAQAAAAIY2ZnQXJyYXkJAQAAABVyZWFkQ29uZmlnQXJyYXlPckZhaWwAAAAAAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAAWSWR4Q2ZnUGFjZW1ha2VyQWRkcmVzcwkAAAIAAAABAgAAABRXcm9uZyBjYWxsZXIgYWRkcmVzcwQAAAAHYXNzZXRJZAkBAAAABXZhbHVlAAAAAQgJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAMJAQAAAAIhPQAAAAIFAAAAB2Fzc2V0SWQJAAJZAAAAAQkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAANSWR4Q2ZnQXNzZXRJZAkAAAIAAAABAgAAABNXcm9uZyBwYXltZW50IGFzc2V0BAAAAAZwZXJpb2QJAQAAAApuZXh0UGVyaW9kAAAAAAQAAAAGZGVsdGFICQAAZQAAAAIFAAAABmhlaWdodAkBAAAAD2dldE51bWJlck9yRmFpbAAAAAEJAQAAAB9rZXlHd3hSZXdhcmRFbWlzc2lvblN0YXJ0SGVpZ2h0AAAAAAQAAAAMZW1pc3Npb25SYXRlCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAQZW1pc3Npb25Db250cmFjdAkBAAAAFmtleVJhdGVQZXJCbG9ja0N1cnJlbnQAAAAACQABLAAAAAIJAAEsAAAAAgIAAAAcbWFuZGF0b3J5IGVtaXNzaW9uX2NvbnRyYWN0LgkBAAAAFmtleVJhdGVQZXJCbG9ja0N1cnJlbnQAAAAAAgAAAA8gaXMgbm90IGRlZmluZWQEAAAABndlaWdodAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAFGtleVBvb2xXZWlnaHRWaXJ0dWFsAAAAAAkAASwAAAACCQABLAAAAAICAAAAG21hbmRhdG9yeSBmYWN0b3J5X2NvbnRyYWN0LgkBAAAAFGtleVBvb2xXZWlnaHRWaXJ0dWFsAAAAAAIAAAAPIGlzIG5vdCBkZWZpbmVkBAAAAAlhdXhBbW91bnQJAABrAAAAAwkAAGgAAAACBQAAAAZkZWx0YUgFAAAABndlaWdodAUAAAAMZW1pc3Npb25SYXRlBQAAAAVNVUxUOAQAAAACZW0JAAP8AAAABAUAAAAQZW1pc3Npb25Db250cmFjdAIAAAAEZW1pdAkABEwAAAACBQAAAAlhdXhBbW91bnQFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAAJlbQUAAAACZW0EAAAAC21hdGNoZXJQYXJ0CAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQEAAAACnBheW91dEluZm8JAQAAABBQZXJpb2RQYXlvdXRJbmZvAAAAAwUAAAAGcGVyaW9kBQAAAAttYXRjaGVyUGFydAUAAAAJYXV4QW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAPa2V5TGF0ZXN0UGVyaW9kAAAAAAUAAAAGcGVyaW9kCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAASa2V5SGVpZ2h0Rm9yUGVyaW9kAAAAAQUAAAAGcGVyaW9kBQAAAAZoZWlnaHQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAB1rZXlBdXhFbWlzc2lvblJld2FyZEZvclBlcmlvZAAAAAEFAAAABnBlcmlvZAUAAAAJYXV4QW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAfa2V5R3d4UmV3YXJkRW1pc3Npb25TdGFydEhlaWdodAAAAAAFAAAABmhlaWdodAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAF2tleVRvdGFsQW1vdW50Rm9yUGVyaW9kAAAAAQUAAAAGcGVyaW9kBQAAAAttYXRjaGVyUGFydAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAADWtleU5leHRQZXJpb2QAAAAACQAAZAAAAAIFAAAABnBlcmlvZAAAAAAAAAAAAQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAARa2V5TGFzdFBheW91dEluZm8AAAAABQAAAApwYXlvdXRJbmZvCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABRrZXlQYXlvdXRIaXN0b3J5SW5mbwAAAAEFAAAABnBlcmlvZAUAAAAKcGF5b3V0SW5mbwUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAA5jbGFpbU5leHRCYXRjaAAAAAcAAAAQYm9vc3RpbmdDb250cmFjdAAAAA1jdXJyZW50UGVyaW9kAAAAC2N1cnJlbnRVc2VyAAAABWRlcHRoAAAAEHRvdGFsRnJvbU1hdGNoZXIAAAARdG90YWxGcm9tRW1pc3Npb24AAAAIcmVhZG9ubHkDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMJAAACAAAAAQIAAAAkU2hvdWxkIGJlIGNhbGxlZCBieSB0aGlzIHNjcmlwdCBvbmx5BAAAAA9wZXJpb2RBbmRUb3RhbHMJAQAAAA1jbGFpbUludGVybmFsAAAABwUAAAAQYm9vc3RpbmdDb250cmFjdAUAAAANY3VycmVudFBlcmlvZAUAAAALY3VycmVudFVzZXIFAAAABWRlcHRoBQAAABB0b3RhbEZyb21NYXRjaGVyBQAAABF0b3RhbEZyb21FbWlzc2lvbgUAAAAIcmVhZG9ubHkJAAUUAAAAAgUAAAADbmlsBQAAAA9wZXJpb2RBbmRUb3RhbHMAAAABaQEAAAALY2xhaW1SZXdhcmQAAAAABAAAAAdhZGRyZXNzCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAANJHQwMTkzMjIxOTQ0OQkBAAAAEWNvbW1vbkNsYWltUmV3YXJkAAAAAgUAAAAHYWRkcmVzcwcEAAAABnBlcmlvZAgFAAAADSR0MDE5MzIyMTk0NDkAAAACXzEEAAAAEWFtb3VudEZyb21NYXRjaGVyCAUAAAANJHQwMTkzMjIxOTQ0OQAAAAJfMgQAAAASYW1vdW50RnJvbUVtaXNzaW9uCAUAAAANJHQwMTkzMjIxOTQ0OQAAAAJfMwQAAAAHdXNlcklkeAgFAAAADSR0MDE5MzIyMTk0NDkAAAACXzQEAAAACGNmZ0FycmF5CAUAAAANJHQwMTkzMjIxOTQ0OQAAAAJfNQQAAAATbmV4dFByb2Nlc3NlZFBlcmlvZAgFAAAADSR0MDE5MzIyMTk0NDkAAAACXzYJAAUUAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAG2tleU5leHRVbmxhaW1lZFBlcmlvZE9mVXNlcgAAAAEFAAAAB3VzZXJJZHgFAAAABnBlcmlvZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIJAABkAAAAAgUAAAARYW1vdW50RnJvbU1hdGNoZXIFAAAAEmFtb3VudEZyb21FbWlzc2lvbgkAAlkAAAABCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAAA1JZHhDZmdBc3NldElkCQAETAAAAAIJAQAAAAxIaXN0b3J5RW50cnkAAAAHAgAAAAVjbGFpbQUAAAAHYWRkcmVzcwUAAAARYW1vdW50RnJvbU1hdGNoZXIFAAAAEmFtb3VudEZyb21FbWlzc2lvbgUAAAAGcGVyaW9kBQAAABNuZXh0UHJvY2Vzc2VkUGVyaW9kBQAAAAFpBQAAAANuaWwJAARMAAAAAgUAAAARYW1vdW50RnJvbU1hdGNoZXIJAARMAAAAAgUAAAASYW1vdW50RnJvbUVtaXNzaW9uBQAAAANuaWwAAAABaQEAAAATY2xhaW1SZXdhcmRSRUFET05MWQAAAAEAAAAHYWRkcmVzcwQAAAAMY2xhaW1SZXN1bHRzCQEAAAARY29tbW9uQ2xhaW1SZXdhcmQAAAACBQAAAAdhZGRyZXNzBgQAAAAGYW1vdW50CQAAZAAAAAIIBQAAAAxjbGFpbVJlc3VsdHMAAAACXzIIBQAAAAxjbGFpbVJlc3VsdHMAAAACXzMJAAUUAAAAAgUAAAADbmlsBQAAAAZhbW91bnQAAAABaQEAAAAbY2xhaW1SZXdhcmREZXRhaWxlZFJFQURPTkxZAAAAAQAAAAdhZGRyZXNzBAAAAA0kdDAyMDE5NzIwMjcyCQEAAAARY29tbW9uQ2xhaW1SZXdhcmQAAAACBQAAAAdhZGRyZXNzBgQAAAAHaWdub3JlZAgFAAAADSR0MDIwMTk3MjAyNzIAAAACXzEEAAAAC2Zyb21NYXRjaGVyCAUAAAANJHQwMjAxOTcyMDI3MgAAAAJfMgQAAAAMZnJvbUVtaXNzaW9uCAUAAAANJHQwMjAxOTcyMDI3MgAAAAJfMwkABRQAAAACBQAAAANuaWwJAAS5AAAAAgkABEwAAAACAgAAAAYlZCVkJWQJAARMAAAAAgkAAaQAAAABCQAAZAAAAAIFAAAAC2Zyb21NYXRjaGVyBQAAAAxmcm9tRW1pc3Npb24JAARMAAAAAgkAAaQAAAABBQAAAAtmcm9tTWF0Y2hlcgkABEwAAAACCQABpAAAAAEFAAAADGZyb21FbWlzc2lvbgUAAAADbmlsBQAAAANTRVAAAAABaQEAAAAdbGF0ZXN0RmluYWxpemVkUGVyaW9kUkVBRE9OTFkAAAABAAAAB2FkZHJlc3MJAAUUAAAAAgUAAAADbmlsCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAAA9rZXlMYXRlc3RQZXJpb2QAAAAAAP//////////AAAAAWkBAAAAIWxhdGVzdEZpbmFsaXplZFBlcmlvZEluZm9SRUFET05MWQAAAAEAAAAHYWRkcmVzcwkABRQAAAACBQAAAANuaWwJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABFrZXlMYXN0UGF5b3V0SW5mbwAAAAAAAAABaQEAAAAVY2FsY0d3eFBhcmFtc1JFQURPTkxZAAAAAwAAAA5nd3hBbW91bnRTdGFydAAAAA9sb2NrU3RhcnRIZWlnaHQAAAASbG9ja0R1cmF0aW9uQmxvY2tzBAAAAA1sb2NrRW5kSGVpZ2h0CQAAZAAAAAIFAAAAD2xvY2tTdGFydEhlaWdodAUAAAASbG9ja0R1cmF0aW9uQmxvY2tzBAAAAAxzY2FsZThQYXJhbUsJAQAAAAEtAAAAAQkAAGsAAAADBQAAAA5nd3hBbW91bnRTdGFydAUAAAAFU0NBTEUFAAAAEmxvY2tEdXJhdGlvbkJsb2NrcwQAAAAMc2NhbGU4UGFyYW1CCQAAaAAAAAIJAABrAAAAAwUAAAAOZ3d4QW1vdW50U3RhcnQFAAAABVNDQUxFBQAAABJsb2NrRHVyYXRpb25CbG9ja3MFAAAADWxvY2tFbmRIZWlnaHQJAAUUAAAAAgUAAAADbmlsCQAETAAAAAIFAAAADHNjYWxlOFBhcmFtSwkABEwAAAACBQAAAAxzY2FsZThQYXJhbUIJAARMAAAAAgkBAAAACm5leHRQZXJpb2QAAAAABQAAAANuaWwAAAABaQEAAAAaY2FsY0d3eEFtb3VudFN0YXJ0UkVBRE9OTFkAAAADAAAADHd4TG9ja0Ftb3VudAAAAAxsb2NrRHVyYXRpb24AAAAPbWF4TG9ja0R1cmF0aW9uBAAAAAdjb2VmZlg4CQAAawAAAAMFAAAADGxvY2tEdXJhdGlvbgUAAAAFTVVMVDgFAAAAD21heExvY2tEdXJhdGlvbgQAAAAOZ1d4QW1vdW50U3RhcnQJAABrAAAAAwUAAAAMd3hMb2NrQW1vdW50BQAAAAdjb2VmZlg4BQAAAAVNVUxUOAkABRQAAAACBQAAAANuaWwJAARMAAAAAgUAAAAOZ1d4QW1vdW50U3RhcnQFAAAAA25pbAAAAAFpAQAAAAtjb25zdHJ1Y3RvcgAAAAQAAAAMd3hBc3NldElkU3RyAAAAGm1hdGNoZXJQYWNlbWFrZXJBZGRyZXNzU3RyAAAAGmJvb3N0aW5nQ29udHJhY3RBZGRyZXNzU3RyAAAACG1heERlcHRoAwkBAAAAAiE9AAAAAgUAAAAEdGhpcwgFAAAAAWkAAAAGY2FsbGVyCQAAAgAAAAECAAAADm5vdCBhdXRob3JpemVkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAlrZXlDb25maWcAAAAACQEAAAAMZm9ybWF0Q29uZmlnAAAABAUAAAAMd3hBc3NldElkU3RyBQAAABptYXRjaGVyUGFjZW1ha2VyQWRkcmVzc1N0cgUAAAAaYm9vc3RpbmdDb250cmFjdEFkZHJlc3NTdHIFAAAACG1heERlcHRoBQAAAANuaWwAAAABaQEAAAANY29uc3RydWN0b3JWMgAAAAEAAAAOZmFjdG9yeUFkZHJlc3MDCQEAAAACIT0AAAACBQAAAAR0aGlzCAUAAAABaQAAAAZjYWxsZXIJAAACAAAAAQIAAAAObm90IGF1dGhvcml6ZWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEWtleUZhY3RvcnlBZGRyZXNzAAAAAAUAAAAOZmFjdG9yeUFkZHJlc3MFAAAAA25pbAAAAAFpAQAAAA1jb25zdHJ1Y3RvclYzAAAAAQAAAA9lbWlzc2lvbkFkZHJlc3MDCQEAAAACIT0AAAACBQAAAAR0aGlzCAUAAAABaQAAAAZjYWxsZXIJAAACAAAAAQIAAAAObm90IGF1dGhvcml6ZWQEAAAAEGluaXRMYXRlc3RQZXJpb2QDCQEAAAAJaXNEZWZpbmVkAAAAAQkABBoAAAACBQAAAAR0aGlzCQEAAAAPa2V5TGF0ZXN0UGVyaW9kAAAAAAUAAAADbmlsCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAPa2V5TGF0ZXN0UGVyaW9kAAAAAAD//////////wUAAAADbmlsCQAETQAAAAIFAAAAEGluaXRMYXRlc3RQZXJpb2QJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABJrZXlFbWlzc2lvbkFkZHJlc3MAAAAABQAAAA9lbWlzc2lvbkFkZHJlc3MAAAABaQEAAAAVb25FbWlzc2lvbkZvckd3eFN0YXJ0AAAAAAMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAPZmFjdG9yeUNvbnRyYWN0CQAAAgAAAAECAAAAEnBlcm1pc3Npb25zIGRlbmllZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAH2tleUd3eFJld2FyZEVtaXNzaW9uU3RhcnRIZWlnaHQAAAAABQAAAAZoZWlnaHQFAAAAA25pbAAAAAFpAQAAACNsYXRlc3RQZXJpb2RFbWlzc2lvblJld2Fy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", "chainId": 84, "height": 1993932, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GoXZZEcVuWBh2rTvBiqZ55BCVqE39ZX66mu9sM5NVL83 Next: BCd1s1aDPdqi8XjCh63aVqXMxvfK9xpLUvs8yeEgWjFt Diff:
OldNewDifferences
9090 func N (O) = makeString(["%s%d__nextClaimedPeriod", toString(O)], b)
9191
9292
93-func P (O) = makeString(["%s%d__lastProcessedPeriod", toString(O)], b)
93+func P (O) = makeString(["%s%d__nextClaimedPeriodNew", toString(O)], b)
9494
9595
96-func Q (R) = makeString(["%s%d__startHeightForPeriod", toString(R)], b)
96+func Q (O) = makeString(["%s%d__lastProcessedPeriod", toString(O)], b)
9797
9898
99-func S (R) = makeString(["%s%d__auxEmissionReward", toString(R)], b)
99+func R (O) = makeString(["%s%d__lastProcessedPeriodForClaim", toString(O)], b)
100100
101101
102-func T (R) = makeString(["%s%d__totalAmountForPeriod", toString(R)], b)
102+func S (T) = makeString(["%s%d__startHeightForPeriod", toString(T)], b)
103103
104104
105-func U () = "%s__lastPayoutInfo"
105+func U (T) = makeString(["%s%d__auxEmissionReward", toString(T)], b)
106106
107107
108-func V (R,W,X) = makeString(["%d%d%d", toString(R), toString(W), toString(X)], b)
108+func V (T) = makeString(["%s%d__totalAmountForPeriod", toString(T)], b)
109109
110110
111-func Y (R) = makeString(["%s%s%d__payouts__history", toString(R)], b)
111+func W () = "%s__lastPayoutInfo"
112112
113113
114-func Z (R) = makeString(["%s%d__totalWeightForPeriod", toString(R)], b)
114+func X (T,Y,Z) = makeString(["%d%d%d", toString(T), toString(Y), toString(Z)], b)
115115
116116
117-func aa (R,O) = makeString(["%s%d%s%d__paramByPeriod", toString(O), "k", toString(R)], b)
117+func aa (T) = makeString(["%s%s%d__payouts__history", toString(T)], b)
118118
119119
120-func ab (R,O) = makeString(["%s%d%s%d__paramByPeriod", toString(O), "b", toString(R)], b)
120+func ab (T) = makeString(["%s%d__totalWeightForPeriod", toString(T)], b)
121121
122122
123-func ac (ad,ae,af,ag,ah,ai,aj) = {
124- let ak = makeString(["%s%s%s%s__history", ad, ae, toBase58String(aj.transactionId)], b)
125- let al = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(af), toString(ag), toString(ah), toString(ai)], b)
126- StringEntry(ak, al)
123+func ac (T,O) = makeString(["%s%d%s%d__paramByPeriod", toString(O), "k", toString(T)], b)
124+
125+
126+func ad (T,O) = makeString(["%s%d%s%d__paramByPeriod", toString(O), "b", toString(T)], b)
127+
128+
129+func ae (af,ag,ah,ai,aj,ak,al) = {
130+ let am = makeString(["%s%s%s%s__history", af, ag, toBase58String(al.transactionId)], b)
131+ let an = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(ah), toString(ai), toString(aj), toString(ak)], b)
132+ StringEntry(am, an)
127133 }
128134
129135
130-func am (an,ao,R,O) = {
131- let ap = P(O)
132- let aq = aa(R, O)
133- let ar = getInteger(an, aq)
134- if (isDefined(ar))
136+func ao (ap,aq,T,O) = {
137+ let ar = Q(O)
138+ let as = ac(T, O)
139+ let at = getInteger(ap, as)
140+ if (isDefined(at))
135141 then {
136- let as = value(ar)
137- let at = value(getInteger(an, ab(R, O)))
138- let au = ((as * ao) + at)
139- if ((au > 0))
140- then $Tuple2((au / e), [IntegerEntry(ap, R)])
142+ let au = value(at)
143+ let av = value(getInteger(ap, ad(T, O)))
144+ let aw = ((au * aq) + av)
145+ if ((aw > 0))
146+ then $Tuple2((aw / e), [IntegerEntry(ar, T)])
141147 else $Tuple2(0, nil)
142148 }
143149 else {
144- let av = getInteger(this, ap)
145- if (if (isDefined(av))
146- then (R >= value(av))
147- else false)
150+ let ax = getInteger(this, ar)
151+ if (isDefined(ax))
148152 then {
149- let aw = value(av)
150- let as = value(getInteger(an, aa(aw, O)))
151- let at = value(getInteger(an, ab(aw, O)))
152- let au = ((as * ao) + at)
153- if ((au > 0))
154- then $Tuple2((au / e), nil)
153+ let ay = value(ax)
154+ let au = value(getInteger(ap, ac(ay, O)))
155+ let av = value(getInteger(ap, ad(ay, O)))
156+ let aw = ((au * aq) + av)
157+ if ((aw > 0))
158+ then $Tuple2((aw / e), nil)
155159 else $Tuple2(0, nil)
156160 }
157161 else $Tuple2(0, nil)
159163 }
160164
161165
162-func ax (D,ay) = {
163- let i = makeString(["%s%s%s", "mapping", "user2num", ay], b)
164- parseIntValue(valueOrErrorMessage(getString(Address(fromBase58String(D)), i), ((("User address " + ay) + " is not found in boosting contract data, key=") + i)))
166+func az (ap,aq,T,O,aA) = {
167+ let ar = R(O)
168+ let as = ac(T, O)
169+ let at = getInteger(ap, as)
170+ let aB = h(N(O))
171+ let aC = if ((T >= aB))
172+ then (aB > 0)
173+ else false
174+ if (isDefined(at))
175+ then {
176+ let au = value(at)
177+ let av = value(getInteger(ap, ad(T, O)))
178+ let aw = ((au * aq) + av)
179+ let aD = if (aA)
180+ then unit
181+ else invoke(this, "setInteger", [ar, T], nil)
182+ if ((aD == aD))
183+ then if (if ((aw > 0))
184+ then aC
185+ else false)
186+ then (aw / e)
187+ else 0
188+ else throw("Strict value is not equal to itself.")
189+ }
190+ else {
191+ let ax = getInteger(this, ar)
192+ if (isDefined(ax))
193+ then {
194+ let ay = value(ax)
195+ let au = value(getInteger(ap, ac(ay, O)))
196+ let av = value(getInteger(ap, ad(ay, O)))
197+ let aw = ((au * aq) + av)
198+ if (if ((aw > 0))
199+ then aC
200+ else false)
201+ then (aw / e)
202+ else 0
203+ }
204+ else 0
205+ }
165206 }
166207
167208
168-func az () = h(L())
209+func aE (D,aF) = {
210+ let i = makeString(["%s%s%s", "mapping", "user2num", aF], b)
211+ parseIntValue(valueOrErrorMessage(getString(Address(fromBase58String(D)), i), ((("User address " + aF) + " is not found in boosting contract data, key=") + i)))
212+ }
169213
170214
171-func aA (aB,R,ae,aC,aD) = {
172- let aE = invoke(this, "processNextBatch", [aB, R, ae, aC, aD], nil)
173- if ((aE == aE))
215+func aG () = h(L())
216+
217+
218+func aH (aI,T,ag,aJ,aK) = {
219+ let aL = invoke(this, "processNextBatch", [aI, T, ag, aJ, aK], nil)
220+ if ((aL == aL))
174221 then {
175- let aF = aE
176- if ($isInstanceOf(aF, "(Int, Int, Int)"))
222+ let aM = aL
223+ if ($isInstanceOf(aM, "(Int, Int, Int)"))
177224 then {
178- let aG = aF
179- aG
225+ let aN = aM
226+ aN
180227 }
181228 else throw("Incorrect invoke result")
182229 }
184231 }
185232
186233
187-func aH (aB,ah,aI,aC,aJ) = {
188- let an = Address(aB)
189- let ai = h(K())
190- let aK = valueOrElse(getInteger(an, G()), 0)
191- let aL = Z(ah)
192- let ao = h(Q(ah))
193- if (if ((aC > 0))
194- then (ai >= ah)
234+func aO (aI,aj,aP,aJ,aQ) = {
235+ let ap = Address(aI)
236+ let ak = h(K())
237+ let aR = valueOrElse(getInteger(ap, G()), 0)
238+ let aS = ab(aj)
239+ let aq = h(S(aj))
240+ if (if ((aJ > 0))
241+ then (ak >= aj)
195242 else false)
196243 then {
197- let aM = am(an, ao, ah, aI)
198- let aN = (aJ + aM._1)
199- if ((aK > (aI + 1)))
244+ let aT = ao(ap, aq, aj, aP)
245+ let aU = (aQ + aT._1)
246+ if ((aR > (aP + 1)))
200247 then {
201- let aO = am(an, ao, ah, (aI + 1))
202- let aP = (aN + aO._1)
203- if ((aK > (aI + 2)))
248+ let aV = ao(ap, aq, aj, (aP + 1))
249+ let aW = (aU + aV._1)
250+ if ((aR > (aP + 2)))
204251 then {
205- let aQ = am(an, ao, ah, (aI + 2))
206- let aR = (aP + aQ._1)
207- if ((aK > (aI + 3)))
252+ let aX = ao(ap, aq, aj, (aP + 2))
253+ let aY = (aW + aX._1)
254+ if ((aR > (aP + 3)))
208255 then {
209- let aS = am(an, ao, ah, (aI + 3))
210- let aT = (aR + aS._1)
211- if ((aK > (aI + 4)))
256+ let aZ = ao(ap, aq, aj, (aP + 3))
257+ let ba = (aY + aZ._1)
258+ if ((aR > (aP + 4)))
212259 then {
213- let aU = am(an, ao, ah, (aI + 4))
214- let aV = (aT + aU._1)
215- if ((aK > (aI + 5)))
260+ let bb = ao(ap, aq, aj, (aP + 4))
261+ let bc = (ba + bb._1)
262+ if ((aR > (aP + 5)))
216263 then {
217- let aW = am(an, ao, ah, (aI + 5))
218- let aX = (aV + aW._1)
219- if ((aK > (aI + 6)))
264+ let bd = ao(ap, aq, aj, (aP + 5))
265+ let be = (bc + bd._1)
266+ if ((aR > (aP + 6)))
220267 then {
221- let aY = aA(aB, ah, (aI + 6), (aC - 1), aX)
222- $Tuple4((((((aM._2 ++ aO._2) ++ aQ._2) ++ aS._2) ++ aU._2) ++ aW._2), aY._1, aY._2, aY._3)
268+ let bf = aH(aI, aj, (aP + 6), (aJ - 1), be)
269+ $Tuple4((((((aT._2 ++ aV._2) ++ aX._2) ++ aZ._2) ++ bb._2) ++ bd._2), bf._1, bf._2, bf._3)
223270 }
224- else $Tuple4((((((([IntegerEntry(aL, aX)] ++ aM._2) ++ aO._2) ++ aQ._2) ++ aS._2) ++ aU._2) ++ aW._2), (ah + 1), 0, 0)
271+ else $Tuple4((((((([IntegerEntry(aS, be)] ++ aT._2) ++ aV._2) ++ aX._2) ++ aZ._2) ++ bb._2) ++ bd._2), (aj + 1), 0, 0)
225272 }
226- else $Tuple4(((((([IntegerEntry(aL, aV)] ++ aM._2) ++ aO._2) ++ aQ._2) ++ aS._2) ++ aU._2), (ah + 1), 0, 0)
273+ else $Tuple4(((((([IntegerEntry(aS, bc)] ++ aT._2) ++ aV._2) ++ aX._2) ++ aZ._2) ++ bb._2), (aj + 1), 0, 0)
227274 }
228- else $Tuple4((((([IntegerEntry(aL, aT)] ++ aM._2) ++ aO._2) ++ aQ._2) ++ aS._2), (ah + 1), 0, 0)
275+ else $Tuple4((((([IntegerEntry(aS, ba)] ++ aT._2) ++ aV._2) ++ aX._2) ++ aZ._2), (aj + 1), 0, 0)
229276 }
230- else $Tuple4(((([IntegerEntry(aL, aR)] ++ aM._2) ++ aO._2) ++ aQ._2), (ah + 1), 0, 0)
277+ else $Tuple4(((([IntegerEntry(aS, aY)] ++ aT._2) ++ aV._2) ++ aX._2), (aj + 1), 0, 0)
231278 }
232- else $Tuple4((([IntegerEntry(aL, aP)] ++ aM._2) ++ aO._2), (ah + 1), 0, 0)
279+ else $Tuple4((([IntegerEntry(aS, aW)] ++ aT._2) ++ aV._2), (aj + 1), 0, 0)
233280 }
234- else $Tuple4(([IntegerEntry(aL, aN)] ++ aM._2), (ah + 1), 0, 0)
281+ else $Tuple4(([IntegerEntry(aS, aU)] ++ aT._2), (aj + 1), 0, 0)
235282 }
236- else if ((aI == 0))
237- then $Tuple4(nil, ah, 0, 0)
238- else $Tuple4([IntegerEntry(aL, aJ)], ah, aI, 0)
283+ else if ((aP == 0))
284+ then $Tuple4(nil, aj, 0, 0)
285+ else $Tuple4([IntegerEntry(aS, aQ)], aj, aP, 0)
239286 }
240287
241288
242-func aZ (aB,R,ae,aC,ba,bb) = {
243- let aE = invoke(this, "claimNextBatch", [aB, R, ae, aC, ba, bb], nil)
244- if ((aE == aE))
289+func bg (aI,T,ag,aJ,bh,bi,aA) = {
290+ let aL = invoke(this, "claimNextBatch", [aI, T, ag, aJ, bh, bi, aA], nil)
291+ if ((aL == aL))
245292 then {
246- let aF = aE
247- if ($isInstanceOf(aF, "(Int, Int, Int)"))
293+ let aM = aL
294+ if ($isInstanceOf(aM, "(Int, Int, Int)"))
248295 then {
249- let aG = aF
250- aG
296+ let aN = aM
297+ aN
251298 }
252299 else throw("Incorrect invoke result")
253300 }
255302 }
256303
257304
258-func bc (aB,ah,aI,aC,bd,be) = {
259- let an = Address(aB)
260- let ai = h(M())
261- let aJ = h(Z(ah))
262- let ao = h(Q(ah))
263- let bf = am(an, ao, ah, aI)
264- let bg = bf._1
265- let bh = bf._2
266- let bi = fraction(h(T(ah)), bg, aJ)
267- let bj = fraction(h(S(ah)), bg, aJ)
268- if (if ((0 >= aC))
305+func bj (aI,aj,aP,aJ,bk,bl,aA) = {
306+ let ap = Address(aI)
307+ let ak = h(M())
308+ let aQ = h(ab(aj))
309+ let aq = h(S(aj))
310+ let bm = az(ap, aq, aj, aP, aA)
311+ let bn = fraction(h(V(aj)), bm, aQ)
312+ let bo = fraction(h(U(aj)), bm, aQ)
313+ if (if ((0 >= aJ))
269314 then true
270- else ((ah + 1) >= ai))
271- then $Tuple3((ah + 1), (bd + bi), (be + bj))
272- else aZ(aB, (ah + 1), aI, (aC - 1), (bd + bi), (be + bj))
315+ else ((aj + 1) >= ak))
316+ then $Tuple3((aj + 1), (bk + bn), (bl + bo))
317+ else bg(aI, (aj + 1), aP, (aJ - 1), (bk + bn), (bl + bo), aA)
273318 }
274319
275320
276-func bk (ay) = {
277- let bl = z()
278- let bm = ax(bl[w], ay)
279- let ah = h(N(bm))
280- let bn = h(M())
281- if ((ah >= bn))
321+func bp (aF,aA) = {
322+ let bq = z()
323+ let br = aE(bq[w], aF)
324+ let aj = h(P(br))
325+ let bs = h(M())
326+ if ((aj >= bs))
282327 then throw("Nothing to claim")
283328 else {
284- let aB = fromBase58String(bl[w])
285- let bo = bc(aB, ah, bm, d, 0, 0)
286- let R = bo._1
287- let af = bo._2
288- let ag = bo._3
289- $Tuple6(R, af, ag, bm, bl, bn)
329+ let aI = fromBase58String(bq[w])
330+ let bt = bj(aI, aj, br, d, 0, 0, aA)
331+ let T = bt._1
332+ let ah = bt._2
333+ let ai = bt._3
334+ $Tuple6(T, ah, ai, br, bq, bs)
290335 }
291336 }
292337
293338
294-@Callable(aj)
295-func processNextBatch (aB,ah,aI,aC,aJ) = if ((aj.caller != this))
339+@Callable(al)
340+func setInteger (au,bu) = {
341+ let bv = if ((al.caller == this))
342+ then true
343+ else throw("Should be called by this script only")
344+ if ((bv == bv))
345+ then {
346+ let bw = [IntegerEntry(au, bu)]
347+ $Tuple2(bw, bw)
348+ }
349+ else throw("Strict value is not equal to itself.")
350+ }
351+
352+
353+
354+@Callable(al)
355+func processNextBatch (aI,aj,aP,aJ,aQ) = if ((al.caller != this))
296356 then throw("Should be called by this script only")
297357 else {
298- let bp = aH(aB, ah, aI, aC, aJ)
299- $Tuple2(bp._1, $Tuple3(bp._2, bp._3, bp._4))
358+ let bx = aO(aI, aj, aP, aJ, aQ)
359+ $Tuple2(bx._1, $Tuple3(bx._2, bx._3, bx._4))
300360 }
301361
302362
303363
304-@Callable(aj)
364+@Callable(al)
305365 func processPendingPeriodsAndUsers () = {
306- let ah = h(M())
307- if ((ah > h(K())))
366+ let aj = h(M())
367+ if ((aj > h(K())))
308368 then throw("Nothing to process")
309369 else {
310- let bl = z()
311- let aC = parseIntValue(bl[x])
312- if ((aC > c))
370+ let bq = z()
371+ let aJ = parseIntValue(bq[x])
372+ if ((aJ > c))
313373 then throw("Depth exceeds MAXDEPTH")
314374 else {
315- let aB = fromBase58String(bl[w])
316- let aI = h(J())
317- let aJ = h(Z(ah))
318- let aG = aH(aB, ah, aI, aC, aJ)
319- ((aG._1 :+ IntegerEntry(M(), aG._2)) :+ IntegerEntry(J(), aG._3))
375+ let aI = fromBase58String(bq[w])
376+ let aP = h(J())
377+ let aQ = h(ab(aj))
378+ let aN = aO(aI, aj, aP, aJ, aQ)
379+ ((aN._1 :+ IntegerEntry(M(), aN._2)) :+ IntegerEntry(J(), aN._3))
320380 }
321381 }
322382 }
323383
324384
325385
326-@Callable(aj)
386+@Callable(al)
327387 func deposit () = {
328- let bl = z()
329- if ((aj.caller != Address(fromBase58String(bl[v]))))
388+ let bq = z()
389+ if ((al.caller != Address(fromBase58String(bq[v]))))
330390 then throw("Wrong caller address")
331391 else {
332- let bq = value(value(aj.payments[0]).assetId)
333- if ((bq != fromBase58String(bl[u])))
392+ let by = value(value(al.payments[0]).assetId)
393+ if ((by != fromBase58String(bq[u])))
334394 then throw("Wrong payment asset")
335395 else {
336- let R = az()
337- let br = (height - j(F()))
338- let bs = valueOrErrorMessage(getInteger(t, H()), (("mandatory emission_contract." + H()) + " is not defined"))
339- let aD = valueOrErrorMessage(getInteger(q, I()), (("mandatory factory_contract." + I()) + " is not defined"))
340- let bt = fraction((br * aD), bs, f)
341- let bu = invoke(t, "emit", [bt], nil)
342- if ((bu == bu))
396+ let T = aG()
397+ let bz = (height - j(F()))
398+ let bA = valueOrErrorMessage(getInteger(t, H()), (("mandatory emission_contract." + H()) + " is not defined"))
399+ let aK = valueOrErrorMessage(getInteger(q, I()), (("mandatory factory_contract." + I()) + " is not defined"))
400+ let bB = fraction((bz * aK), bA, f)
401+ let bC = invoke(t, "emit", [bB], nil)
402+ if ((bC == bC))
343403 then {
344- let bv = value(aj.payments[0]).amount
345- let bw = V(R, bv, bt)
346-[IntegerEntry(K(), R), IntegerEntry(Q(R), height), IntegerEntry(S(R), bt), IntegerEntry(F(), height), IntegerEntry(T(R), bv), IntegerEntry(L(), (R + 1)), StringEntry(U(), bw), StringEntry(Y(R), bw)]
404+ let bD = value(al.payments[0]).amount
405+ let bE = X(T, bD, bB)
406+[IntegerEntry(K(), T), IntegerEntry(S(T), height), IntegerEntry(U(T), bB), IntegerEntry(F(), height), IntegerEntry(V(T), bD), IntegerEntry(L(), (T + 1)), StringEntry(W(), bE), StringEntry(aa(T), bE)]
347407 }
348408 else throw("Strict value is not equal to itself.")
349409 }
352412
353413
354414
355-@Callable(aj)
356-func claimNextBatch (aB,ah,aI,aC,ba,bb) = if ((aj.caller != this))
415+@Callable(al)
416+func claimNextBatch (aI,aj,aP,aJ,bh,bi,aA) = if ((al.caller != this))
357417 then throw("Should be called by this script only")
358418 else {
359- let bx = bc(aB, ah, aI, aC, ba, bb)
360- $Tuple2(nil, bx)
419+ let bF = bj(aI, aj, aP, aJ, bh, bi, aA)
420+ $Tuple2(nil, bF)
361421 }
362422
363423
364424
365-@Callable(aj)
425+@Callable(al)
366426 func claimReward () = {
367- let by = toString(aj.caller)
368- let bz = bk(by)
369- let R = bz._1
370- let af = bz._2
371- let ag = bz._3
372- let bm = bz._4
373- let bl = bz._5
374- let bn = bz._6
375- $Tuple2([IntegerEntry(N(bm), R), ScriptTransfer(aj.caller, (af + ag), fromBase58String(bl[u])), ac("claim", by, af, ag, R, bn, aj)], [af, ag])
427+ let bG = toString(al.caller)
428+ let bH = bp(bG, false)
429+ let T = bH._1
430+ let ah = bH._2
431+ let ai = bH._3
432+ let br = bH._4
433+ let bq = bH._5
434+ let bs = bH._6
435+ $Tuple2([IntegerEntry(P(br), T), ScriptTransfer(al.caller, (ah + ai), fromBase58String(bq[u])), ae("claim", bG, ah, ai, T, bs, al)], [ah, ai])
376436 }
377437
378438
379439
380-@Callable(aj)
381-func claimRewardREADONLY (by) = {
382- let bA = bk(by)
383- let bB = (bA._2 + bA._3)
384- $Tuple2(nil, bB)
440+@Callable(al)
441+func claimRewardREADONLY (bG) = {
442+ let bI = bp(bG, true)
443+ let bJ = (bI._2 + bI._3)
444+ $Tuple2(nil, bJ)
385445 }
386446
387447
388448
389-@Callable(aj)
390-func claimRewardDetailedREADONLY (by) = {
391- let bC = bk(by)
392- let bh = bC._1
393- let bD = bC._2
394- let bE = bC._3
395- $Tuple2(nil, makeString(["%d%d%d", toString((bD + bE)), toString(bD), toString(bE)], b))
449+@Callable(al)
450+func claimRewardDetailedREADONLY (bG) = {
451+ let bK = bp(bG, true)
452+ let bL = bK._1
453+ let bM = bK._2
454+ let bN = bK._3
455+ $Tuple2(nil, makeString(["%d%d%d", toString((bM + bN)), toString(bM), toString(bN)], b))
396456 }
397457
398458
399459
400-@Callable(aj)
401-func latestFinalizedPeriodREADONLY (by) = $Tuple2(nil, valueOrElse(getInteger(this, K()), -1))
460+@Callable(al)
461+func latestFinalizedPeriodREADONLY (bG) = $Tuple2(nil, valueOrElse(getInteger(this, K()), -1))
402462
403463
404464
405-@Callable(aj)
406-func latestFinalizedPeriodInfoREADONLY (by) = $Tuple2(nil, k(U()))
465+@Callable(al)
466+func latestFinalizedPeriodInfoREADONLY (bG) = $Tuple2(nil, k(W()))
407467
408468
409469
410-@Callable(aj)
411-func calcGwxParamsREADONLY (bF,bG,bH) = {
412- let bI = (bG + bH)
413- let bJ = -(fraction(bF, e, bH))
414- let bK = (fraction(bF, e, bH) * bI)
415- $Tuple2(nil, [bJ, bK, az()])
470+@Callable(al)
471+func calcGwxParamsREADONLY (bO,bP,bQ) = {
472+ let bR = (bP + bQ)
473+ let bS = -(fraction(bO, e, bQ))
474+ let bT = (fraction(bO, e, bQ) * bR)
475+ $Tuple2(nil, [bS, bT, aG()])
416476 }
417477
418478
419479
420-@Callable(aj)
421-func calcGwxAmountStartREADONLY (bL,bM,bN) = {
422- let bO = fraction(bM, f, bN)
423- let bP = fraction(bL, bO, f)
424- $Tuple2(nil, [bP])
480+@Callable(al)
481+func calcGwxAmountStartREADONLY (bU,bV,bW) = {
482+ let bX = fraction(bV, f, bW)
483+ let bY = fraction(bU, bX, f)
484+ $Tuple2(nil, [bY])
425485 }
426486
427487
428488
429-@Callable(aj)
430-func constructor (B,C,D,E) = if ((this != aj.caller))
489+@Callable(al)
490+func constructor (B,C,D,E) = if ((this != al.caller))
431491 then throw("not authorized")
432492 else [StringEntry(y(), A(B, C, D, E))]
433493
434494
435495
436-@Callable(aj)
437-func constructorV2 (bQ) = if ((this != aj.caller))
496+@Callable(al)
497+func constructorV2 (bZ) = if ((this != al.caller))
438498 then throw("not authorized")
439- else [StringEntry(o(), bQ)]
499+ else [StringEntry(o(), bZ)]
440500
441501
442502
443-@Callable(aj)
444-func constructorV3 (bR) = if ((this != aj.caller))
503+@Callable(al)
504+func constructorV3 (ca) = if ((this != al.caller))
445505 then throw("not authorized")
446506 else {
447- let bS = if (isDefined(getInteger(this, K())))
507+ let cb = if (isDefined(getInteger(this, K())))
448508 then nil
449509 else [IntegerEntry(K(), -1)]
450- (bS :+ StringEntry(r(), bR))
510+ (cb :+ StringEntry(r(), ca))
451511 }
452512
453513
454514
455-@Callable(aj)
456-func onEmissionForGwxStart () = if ((aj.caller != q))
515+@Callable(al)
516+func onEmissionForGwxStart () = if ((al.caller != q))
457517 then throw("permissions denied")
458518 else [IntegerEntry(F(), height)]
459519
460520
461521
462-@Callable(aj)
463-func latestPeriodEmissionRewardsREADONLY (by) = {
464- let R = az()
465- $Tuple2(nil, [h(S(R))])
522+@Callable(al)
523+func latestPeriodEmissionRewardsREADONLY (bG) = {
524+ let T = aG()
525+ $Tuple2(nil, [h(U(T))])
466526 }
467527
468528
469529
470-@Callable(aj)
471-func calcD (bT,bU,bV,bW,bX) = {
472- let bY = toBigInt(2)
473- let bZ = parseBigIntValue(bW)
474- let ca = parseBigIntValue(bX)
475- let cb = parseBigIntValue(bT)
476- let cc = parseBigIntValue(bU)
477- let cd = (parseBigIntValue(bV) * bZ)
478- let ce = (cb + cc)
479- if ((ce == g))
530+@Callable(al)
531+func calcD (cc,cd,ce,cf,cg) = {
532+ let ch = toBigInt(2)
533+ let ci = parseBigIntValue(cf)
534+ let cj = parseBigIntValue(cg)
535+ let ck = parseBigIntValue(cc)
536+ let cl = parseBigIntValue(cd)
537+ let cm = (parseBigIntValue(ce) * ci)
538+ let cn = (ck + cl)
539+ if ((cn == g))
480540 then $Tuple2(nil, toString(g))
481541 else {
482- let cf = (cd * bY)
483- let cg = [1, 2, 3, 4, 5, 6, 7]
484- func ch (ci,cj) = {
485- let ck = ci
486- let cl = ck._1
487- let cm = ck._2
488- let cn = (((cl * cl) * cl) / (((cb * cc) * bY) * bY))
489- let co = (((((cf * ce) / bZ) + (cn * bY)) * cl) / ((((cf - bZ) * cl) / bZ) + ((bY + toBigInt(1)) * cn)))
490- $Tuple2(co, cl)
542+ let co = (cm * ch)
543+ let cp = [1, 2, 3, 4, 5, 6, 7]
544+ func cq (cr,cs) = {
545+ let ct = cr
546+ let cu = ct._1
547+ let cv = ct._2
548+ let cw = (((cu * cu) * cu) / (((ck * cl) * ch) * ch))
549+ let cx = (((((co * cn) / ci) + (cw * ch)) * cu) / ((((co - ci) * cu) / ci) + ((ch + toBigInt(1)) * cw)))
550+ $Tuple2(cx, cu)
491551 }
492552
493- let cp = {
494- let cq = cg
495- let cr = size(cq)
496- let cs = $Tuple2(ce, unit)
497- func ct (cu,cv) = if ((cv >= cr))
498- then cu
499- else ch(cu, cq[cv])
553+ let cy = {
554+ let cz = cp
555+ let cA = size(cz)
556+ let cB = $Tuple2(cn, unit)
557+ func cC (cD,cE) = if ((cE >= cA))
558+ then cD
559+ else cq(cD, cz[cE])
500560
501- func cw (cu,cv) = if ((cv >= cr))
502- then cu
561+ func cF (cD,cE) = if ((cE >= cA))
562+ then cD
503563 else throw("List size exceeds 7")
504564
505- cw(ct(ct(ct(ct(ct(ct(ct(cs, 0), 1), 2), 3), 4), 5), 6), 7)
565+ cF(cC(cC(cC(cC(cC(cC(cC(cB, 0), 1), 2), 3), 4), 5), 6), 7)
506566 }
507- let co = cp._1
508- let cm = cp._2
509- let cx = m((co - value(cm)))
510- if ((ca >= cx))
511- then $Tuple2(nil, toString(co))
512- else throw(("D calculation error, dDiff = " + toString(cx)))
567+ let cx = cy._1
568+ let cv = cy._2
569+ let cG = m((cx - value(cv)))
570+ if ((cj >= cG))
571+ then $Tuple2(nil, toString(cx))
572+ else throw(("D calculation error, dDiff = " + toString(cG)))
513573 }
514574 }
515575
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = ""
55
66 let b = "__"
77
88 let c = 17
99
1010 let d = 26
1111
1212 let e = 1000
1313
1414 let f = 100000000
1515
1616 let g = toBigInt(0)
1717
1818 func h (i) = valueOrElse(getInteger(this, i), 0)
1919
2020
2121 func j (i) = valueOrErrorMessage(getInteger(this, i), (("mandatory this." + i) + " is not defined"))
2222
2323
2424 func k (i) = valueOrElse(getString(this, i), "")
2525
2626
2727 func l (i) = valueOrErrorMessage(getString(i), (("mandatory this." + i) + " is not defined"))
2828
2929
3030 func m (n) = if ((g > n))
3131 then -(n)
3232 else n
3333
3434
3535 func o () = "%s%s__config__factoryAddress"
3636
3737
3838 let p = l(o())
3939
4040 let q = addressFromStringValue(p)
4141
4242 func r () = "%s%s__config__emissionAddress"
4343
4444
4545 let s = l(r())
4646
4747 let t = addressFromStringValue(s)
4848
4949 let u = 1
5050
5151 let v = 2
5252
5353 let w = 3
5454
5555 let x = 4
5656
5757 func y () = "%s__config"
5858
5959
6060 func z () = split(l(y()), b)
6161
6262
6363 func A (B,C,D,E) = makeString(["%s%s%s%d", B, C, D, toString(E)], b)
6464
6565
6666 func F () = "%s%s__gwxRewardEmissionPart__startHeight"
6767
6868
6969 func G () = "%s__nextUserNum"
7070
7171
7272 func H () = "%s%s__ratePerBlock__current"
7373
7474
7575 func I () = "%s%s__poolWeight__GWXvirtualPOOL"
7676
7777
7878 func J () = "%s__nextProcessedUser"
7979
8080
8181 func K () = "%s__latestPeriod"
8282
8383
8484 func L () = "%s__nextPeriod"
8585
8686
8787 func M () = "%s__nextProcessedPeriod"
8888
8989
9090 func N (O) = makeString(["%s%d__nextClaimedPeriod", toString(O)], b)
9191
9292
93-func P (O) = makeString(["%s%d__lastProcessedPeriod", toString(O)], b)
93+func P (O) = makeString(["%s%d__nextClaimedPeriodNew", toString(O)], b)
9494
9595
96-func Q (R) = makeString(["%s%d__startHeightForPeriod", toString(R)], b)
96+func Q (O) = makeString(["%s%d__lastProcessedPeriod", toString(O)], b)
9797
9898
99-func S (R) = makeString(["%s%d__auxEmissionReward", toString(R)], b)
99+func R (O) = makeString(["%s%d__lastProcessedPeriodForClaim", toString(O)], b)
100100
101101
102-func T (R) = makeString(["%s%d__totalAmountForPeriod", toString(R)], b)
102+func S (T) = makeString(["%s%d__startHeightForPeriod", toString(T)], b)
103103
104104
105-func U () = "%s__lastPayoutInfo"
105+func U (T) = makeString(["%s%d__auxEmissionReward", toString(T)], b)
106106
107107
108-func V (R,W,X) = makeString(["%d%d%d", toString(R), toString(W), toString(X)], b)
108+func V (T) = makeString(["%s%d__totalAmountForPeriod", toString(T)], b)
109109
110110
111-func Y (R) = makeString(["%s%s%d__payouts__history", toString(R)], b)
111+func W () = "%s__lastPayoutInfo"
112112
113113
114-func Z (R) = makeString(["%s%d__totalWeightForPeriod", toString(R)], b)
114+func X (T,Y,Z) = makeString(["%d%d%d", toString(T), toString(Y), toString(Z)], b)
115115
116116
117-func aa (R,O) = makeString(["%s%d%s%d__paramByPeriod", toString(O), "k", toString(R)], b)
117+func aa (T) = makeString(["%s%s%d__payouts__history", toString(T)], b)
118118
119119
120-func ab (R,O) = makeString(["%s%d%s%d__paramByPeriod", toString(O), "b", toString(R)], b)
120+func ab (T) = makeString(["%s%d__totalWeightForPeriod", toString(T)], b)
121121
122122
123-func ac (ad,ae,af,ag,ah,ai,aj) = {
124- let ak = makeString(["%s%s%s%s__history", ad, ae, toBase58String(aj.transactionId)], b)
125- let al = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(af), toString(ag), toString(ah), toString(ai)], b)
126- StringEntry(ak, al)
123+func ac (T,O) = makeString(["%s%d%s%d__paramByPeriod", toString(O), "k", toString(T)], b)
124+
125+
126+func ad (T,O) = makeString(["%s%d%s%d__paramByPeriod", toString(O), "b", toString(T)], b)
127+
128+
129+func ae (af,ag,ah,ai,aj,ak,al) = {
130+ let am = makeString(["%s%s%s%s__history", af, ag, toBase58String(al.transactionId)], b)
131+ let an = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(ah), toString(ai), toString(aj), toString(ak)], b)
132+ StringEntry(am, an)
127133 }
128134
129135
130-func am (an,ao,R,O) = {
131- let ap = P(O)
132- let aq = aa(R, O)
133- let ar = getInteger(an, aq)
134- if (isDefined(ar))
136+func ao (ap,aq,T,O) = {
137+ let ar = Q(O)
138+ let as = ac(T, O)
139+ let at = getInteger(ap, as)
140+ if (isDefined(at))
135141 then {
136- let as = value(ar)
137- let at = value(getInteger(an, ab(R, O)))
138- let au = ((as * ao) + at)
139- if ((au > 0))
140- then $Tuple2((au / e), [IntegerEntry(ap, R)])
142+ let au = value(at)
143+ let av = value(getInteger(ap, ad(T, O)))
144+ let aw = ((au * aq) + av)
145+ if ((aw > 0))
146+ then $Tuple2((aw / e), [IntegerEntry(ar, T)])
141147 else $Tuple2(0, nil)
142148 }
143149 else {
144- let av = getInteger(this, ap)
145- if (if (isDefined(av))
146- then (R >= value(av))
147- else false)
150+ let ax = getInteger(this, ar)
151+ if (isDefined(ax))
148152 then {
149- let aw = value(av)
150- let as = value(getInteger(an, aa(aw, O)))
151- let at = value(getInteger(an, ab(aw, O)))
152- let au = ((as * ao) + at)
153- if ((au > 0))
154- then $Tuple2((au / e), nil)
153+ let ay = value(ax)
154+ let au = value(getInteger(ap, ac(ay, O)))
155+ let av = value(getInteger(ap, ad(ay, O)))
156+ let aw = ((au * aq) + av)
157+ if ((aw > 0))
158+ then $Tuple2((aw / e), nil)
155159 else $Tuple2(0, nil)
156160 }
157161 else $Tuple2(0, nil)
158162 }
159163 }
160164
161165
162-func ax (D,ay) = {
163- let i = makeString(["%s%s%s", "mapping", "user2num", ay], b)
164- parseIntValue(valueOrErrorMessage(getString(Address(fromBase58String(D)), i), ((("User address " + ay) + " is not found in boosting contract data, key=") + i)))
166+func az (ap,aq,T,O,aA) = {
167+ let ar = R(O)
168+ let as = ac(T, O)
169+ let at = getInteger(ap, as)
170+ let aB = h(N(O))
171+ let aC = if ((T >= aB))
172+ then (aB > 0)
173+ else false
174+ if (isDefined(at))
175+ then {
176+ let au = value(at)
177+ let av = value(getInteger(ap, ad(T, O)))
178+ let aw = ((au * aq) + av)
179+ let aD = if (aA)
180+ then unit
181+ else invoke(this, "setInteger", [ar, T], nil)
182+ if ((aD == aD))
183+ then if (if ((aw > 0))
184+ then aC
185+ else false)
186+ then (aw / e)
187+ else 0
188+ else throw("Strict value is not equal to itself.")
189+ }
190+ else {
191+ let ax = getInteger(this, ar)
192+ if (isDefined(ax))
193+ then {
194+ let ay = value(ax)
195+ let au = value(getInteger(ap, ac(ay, O)))
196+ let av = value(getInteger(ap, ad(ay, O)))
197+ let aw = ((au * aq) + av)
198+ if (if ((aw > 0))
199+ then aC
200+ else false)
201+ then (aw / e)
202+ else 0
203+ }
204+ else 0
205+ }
165206 }
166207
167208
168-func az () = h(L())
209+func aE (D,aF) = {
210+ let i = makeString(["%s%s%s", "mapping", "user2num", aF], b)
211+ parseIntValue(valueOrErrorMessage(getString(Address(fromBase58String(D)), i), ((("User address " + aF) + " is not found in boosting contract data, key=") + i)))
212+ }
169213
170214
171-func aA (aB,R,ae,aC,aD) = {
172- let aE = invoke(this, "processNextBatch", [aB, R, ae, aC, aD], nil)
173- if ((aE == aE))
215+func aG () = h(L())
216+
217+
218+func aH (aI,T,ag,aJ,aK) = {
219+ let aL = invoke(this, "processNextBatch", [aI, T, ag, aJ, aK], nil)
220+ if ((aL == aL))
174221 then {
175- let aF = aE
176- if ($isInstanceOf(aF, "(Int, Int, Int)"))
222+ let aM = aL
223+ if ($isInstanceOf(aM, "(Int, Int, Int)"))
177224 then {
178- let aG = aF
179- aG
225+ let aN = aM
226+ aN
180227 }
181228 else throw("Incorrect invoke result")
182229 }
183230 else throw("Strict value is not equal to itself.")
184231 }
185232
186233
187-func aH (aB,ah,aI,aC,aJ) = {
188- let an = Address(aB)
189- let ai = h(K())
190- let aK = valueOrElse(getInteger(an, G()), 0)
191- let aL = Z(ah)
192- let ao = h(Q(ah))
193- if (if ((aC > 0))
194- then (ai >= ah)
234+func aO (aI,aj,aP,aJ,aQ) = {
235+ let ap = Address(aI)
236+ let ak = h(K())
237+ let aR = valueOrElse(getInteger(ap, G()), 0)
238+ let aS = ab(aj)
239+ let aq = h(S(aj))
240+ if (if ((aJ > 0))
241+ then (ak >= aj)
195242 else false)
196243 then {
197- let aM = am(an, ao, ah, aI)
198- let aN = (aJ + aM._1)
199- if ((aK > (aI + 1)))
244+ let aT = ao(ap, aq, aj, aP)
245+ let aU = (aQ + aT._1)
246+ if ((aR > (aP + 1)))
200247 then {
201- let aO = am(an, ao, ah, (aI + 1))
202- let aP = (aN + aO._1)
203- if ((aK > (aI + 2)))
248+ let aV = ao(ap, aq, aj, (aP + 1))
249+ let aW = (aU + aV._1)
250+ if ((aR > (aP + 2)))
204251 then {
205- let aQ = am(an, ao, ah, (aI + 2))
206- let aR = (aP + aQ._1)
207- if ((aK > (aI + 3)))
252+ let aX = ao(ap, aq, aj, (aP + 2))
253+ let aY = (aW + aX._1)
254+ if ((aR > (aP + 3)))
208255 then {
209- let aS = am(an, ao, ah, (aI + 3))
210- let aT = (aR + aS._1)
211- if ((aK > (aI + 4)))
256+ let aZ = ao(ap, aq, aj, (aP + 3))
257+ let ba = (aY + aZ._1)
258+ if ((aR > (aP + 4)))
212259 then {
213- let aU = am(an, ao, ah, (aI + 4))
214- let aV = (aT + aU._1)
215- if ((aK > (aI + 5)))
260+ let bb = ao(ap, aq, aj, (aP + 4))
261+ let bc = (ba + bb._1)
262+ if ((aR > (aP + 5)))
216263 then {
217- let aW = am(an, ao, ah, (aI + 5))
218- let aX = (aV + aW._1)
219- if ((aK > (aI + 6)))
264+ let bd = ao(ap, aq, aj, (aP + 5))
265+ let be = (bc + bd._1)
266+ if ((aR > (aP + 6)))
220267 then {
221- let aY = aA(aB, ah, (aI + 6), (aC - 1), aX)
222- $Tuple4((((((aM._2 ++ aO._2) ++ aQ._2) ++ aS._2) ++ aU._2) ++ aW._2), aY._1, aY._2, aY._3)
268+ let bf = aH(aI, aj, (aP + 6), (aJ - 1), be)
269+ $Tuple4((((((aT._2 ++ aV._2) ++ aX._2) ++ aZ._2) ++ bb._2) ++ bd._2), bf._1, bf._2, bf._3)
223270 }
224- else $Tuple4((((((([IntegerEntry(aL, aX)] ++ aM._2) ++ aO._2) ++ aQ._2) ++ aS._2) ++ aU._2) ++ aW._2), (ah + 1), 0, 0)
271+ else $Tuple4((((((([IntegerEntry(aS, be)] ++ aT._2) ++ aV._2) ++ aX._2) ++ aZ._2) ++ bb._2) ++ bd._2), (aj + 1), 0, 0)
225272 }
226- else $Tuple4(((((([IntegerEntry(aL, aV)] ++ aM._2) ++ aO._2) ++ aQ._2) ++ aS._2) ++ aU._2), (ah + 1), 0, 0)
273+ else $Tuple4(((((([IntegerEntry(aS, bc)] ++ aT._2) ++ aV._2) ++ aX._2) ++ aZ._2) ++ bb._2), (aj + 1), 0, 0)
227274 }
228- else $Tuple4((((([IntegerEntry(aL, aT)] ++ aM._2) ++ aO._2) ++ aQ._2) ++ aS._2), (ah + 1), 0, 0)
275+ else $Tuple4((((([IntegerEntry(aS, ba)] ++ aT._2) ++ aV._2) ++ aX._2) ++ aZ._2), (aj + 1), 0, 0)
229276 }
230- else $Tuple4(((([IntegerEntry(aL, aR)] ++ aM._2) ++ aO._2) ++ aQ._2), (ah + 1), 0, 0)
277+ else $Tuple4(((([IntegerEntry(aS, aY)] ++ aT._2) ++ aV._2) ++ aX._2), (aj + 1), 0, 0)
231278 }
232- else $Tuple4((([IntegerEntry(aL, aP)] ++ aM._2) ++ aO._2), (ah + 1), 0, 0)
279+ else $Tuple4((([IntegerEntry(aS, aW)] ++ aT._2) ++ aV._2), (aj + 1), 0, 0)
233280 }
234- else $Tuple4(([IntegerEntry(aL, aN)] ++ aM._2), (ah + 1), 0, 0)
281+ else $Tuple4(([IntegerEntry(aS, aU)] ++ aT._2), (aj + 1), 0, 0)
235282 }
236- else if ((aI == 0))
237- then $Tuple4(nil, ah, 0, 0)
238- else $Tuple4([IntegerEntry(aL, aJ)], ah, aI, 0)
283+ else if ((aP == 0))
284+ then $Tuple4(nil, aj, 0, 0)
285+ else $Tuple4([IntegerEntry(aS, aQ)], aj, aP, 0)
239286 }
240287
241288
242-func aZ (aB,R,ae,aC,ba,bb) = {
243- let aE = invoke(this, "claimNextBatch", [aB, R, ae, aC, ba, bb], nil)
244- if ((aE == aE))
289+func bg (aI,T,ag,aJ,bh,bi,aA) = {
290+ let aL = invoke(this, "claimNextBatch", [aI, T, ag, aJ, bh, bi, aA], nil)
291+ if ((aL == aL))
245292 then {
246- let aF = aE
247- if ($isInstanceOf(aF, "(Int, Int, Int)"))
293+ let aM = aL
294+ if ($isInstanceOf(aM, "(Int, Int, Int)"))
248295 then {
249- let aG = aF
250- aG
296+ let aN = aM
297+ aN
251298 }
252299 else throw("Incorrect invoke result")
253300 }
254301 else throw("Strict value is not equal to itself.")
255302 }
256303
257304
258-func bc (aB,ah,aI,aC,bd,be) = {
259- let an = Address(aB)
260- let ai = h(M())
261- let aJ = h(Z(ah))
262- let ao = h(Q(ah))
263- let bf = am(an, ao, ah, aI)
264- let bg = bf._1
265- let bh = bf._2
266- let bi = fraction(h(T(ah)), bg, aJ)
267- let bj = fraction(h(S(ah)), bg, aJ)
268- if (if ((0 >= aC))
305+func bj (aI,aj,aP,aJ,bk,bl,aA) = {
306+ let ap = Address(aI)
307+ let ak = h(M())
308+ let aQ = h(ab(aj))
309+ let aq = h(S(aj))
310+ let bm = az(ap, aq, aj, aP, aA)
311+ let bn = fraction(h(V(aj)), bm, aQ)
312+ let bo = fraction(h(U(aj)), bm, aQ)
313+ if (if ((0 >= aJ))
269314 then true
270- else ((ah + 1) >= ai))
271- then $Tuple3((ah + 1), (bd + bi), (be + bj))
272- else aZ(aB, (ah + 1), aI, (aC - 1), (bd + bi), (be + bj))
315+ else ((aj + 1) >= ak))
316+ then $Tuple3((aj + 1), (bk + bn), (bl + bo))
317+ else bg(aI, (aj + 1), aP, (aJ - 1), (bk + bn), (bl + bo), aA)
273318 }
274319
275320
276-func bk (ay) = {
277- let bl = z()
278- let bm = ax(bl[w], ay)
279- let ah = h(N(bm))
280- let bn = h(M())
281- if ((ah >= bn))
321+func bp (aF,aA) = {
322+ let bq = z()
323+ let br = aE(bq[w], aF)
324+ let aj = h(P(br))
325+ let bs = h(M())
326+ if ((aj >= bs))
282327 then throw("Nothing to claim")
283328 else {
284- let aB = fromBase58String(bl[w])
285- let bo = bc(aB, ah, bm, d, 0, 0)
286- let R = bo._1
287- let af = bo._2
288- let ag = bo._3
289- $Tuple6(R, af, ag, bm, bl, bn)
329+ let aI = fromBase58String(bq[w])
330+ let bt = bj(aI, aj, br, d, 0, 0, aA)
331+ let T = bt._1
332+ let ah = bt._2
333+ let ai = bt._3
334+ $Tuple6(T, ah, ai, br, bq, bs)
290335 }
291336 }
292337
293338
294-@Callable(aj)
295-func processNextBatch (aB,ah,aI,aC,aJ) = if ((aj.caller != this))
339+@Callable(al)
340+func setInteger (au,bu) = {
341+ let bv = if ((al.caller == this))
342+ then true
343+ else throw("Should be called by this script only")
344+ if ((bv == bv))
345+ then {
346+ let bw = [IntegerEntry(au, bu)]
347+ $Tuple2(bw, bw)
348+ }
349+ else throw("Strict value is not equal to itself.")
350+ }
351+
352+
353+
354+@Callable(al)
355+func processNextBatch (aI,aj,aP,aJ,aQ) = if ((al.caller != this))
296356 then throw("Should be called by this script only")
297357 else {
298- let bp = aH(aB, ah, aI, aC, aJ)
299- $Tuple2(bp._1, $Tuple3(bp._2, bp._3, bp._4))
358+ let bx = aO(aI, aj, aP, aJ, aQ)
359+ $Tuple2(bx._1, $Tuple3(bx._2, bx._3, bx._4))
300360 }
301361
302362
303363
304-@Callable(aj)
364+@Callable(al)
305365 func processPendingPeriodsAndUsers () = {
306- let ah = h(M())
307- if ((ah > h(K())))
366+ let aj = h(M())
367+ if ((aj > h(K())))
308368 then throw("Nothing to process")
309369 else {
310- let bl = z()
311- let aC = parseIntValue(bl[x])
312- if ((aC > c))
370+ let bq = z()
371+ let aJ = parseIntValue(bq[x])
372+ if ((aJ > c))
313373 then throw("Depth exceeds MAXDEPTH")
314374 else {
315- let aB = fromBase58String(bl[w])
316- let aI = h(J())
317- let aJ = h(Z(ah))
318- let aG = aH(aB, ah, aI, aC, aJ)
319- ((aG._1 :+ IntegerEntry(M(), aG._2)) :+ IntegerEntry(J(), aG._3))
375+ let aI = fromBase58String(bq[w])
376+ let aP = h(J())
377+ let aQ = h(ab(aj))
378+ let aN = aO(aI, aj, aP, aJ, aQ)
379+ ((aN._1 :+ IntegerEntry(M(), aN._2)) :+ IntegerEntry(J(), aN._3))
320380 }
321381 }
322382 }
323383
324384
325385
326-@Callable(aj)
386+@Callable(al)
327387 func deposit () = {
328- let bl = z()
329- if ((aj.caller != Address(fromBase58String(bl[v]))))
388+ let bq = z()
389+ if ((al.caller != Address(fromBase58String(bq[v]))))
330390 then throw("Wrong caller address")
331391 else {
332- let bq = value(value(aj.payments[0]).assetId)
333- if ((bq != fromBase58String(bl[u])))
392+ let by = value(value(al.payments[0]).assetId)
393+ if ((by != fromBase58String(bq[u])))
334394 then throw("Wrong payment asset")
335395 else {
336- let R = az()
337- let br = (height - j(F()))
338- let bs = valueOrErrorMessage(getInteger(t, H()), (("mandatory emission_contract." + H()) + " is not defined"))
339- let aD = valueOrErrorMessage(getInteger(q, I()), (("mandatory factory_contract." + I()) + " is not defined"))
340- let bt = fraction((br * aD), bs, f)
341- let bu = invoke(t, "emit", [bt], nil)
342- if ((bu == bu))
396+ let T = aG()
397+ let bz = (height - j(F()))
398+ let bA = valueOrErrorMessage(getInteger(t, H()), (("mandatory emission_contract." + H()) + " is not defined"))
399+ let aK = valueOrErrorMessage(getInteger(q, I()), (("mandatory factory_contract." + I()) + " is not defined"))
400+ let bB = fraction((bz * aK), bA, f)
401+ let bC = invoke(t, "emit", [bB], nil)
402+ if ((bC == bC))
343403 then {
344- let bv = value(aj.payments[0]).amount
345- let bw = V(R, bv, bt)
346-[IntegerEntry(K(), R), IntegerEntry(Q(R), height), IntegerEntry(S(R), bt), IntegerEntry(F(), height), IntegerEntry(T(R), bv), IntegerEntry(L(), (R + 1)), StringEntry(U(), bw), StringEntry(Y(R), bw)]
404+ let bD = value(al.payments[0]).amount
405+ let bE = X(T, bD, bB)
406+[IntegerEntry(K(), T), IntegerEntry(S(T), height), IntegerEntry(U(T), bB), IntegerEntry(F(), height), IntegerEntry(V(T), bD), IntegerEntry(L(), (T + 1)), StringEntry(W(), bE), StringEntry(aa(T), bE)]
347407 }
348408 else throw("Strict value is not equal to itself.")
349409 }
350410 }
351411 }
352412
353413
354414
355-@Callable(aj)
356-func claimNextBatch (aB,ah,aI,aC,ba,bb) = if ((aj.caller != this))
415+@Callable(al)
416+func claimNextBatch (aI,aj,aP,aJ,bh,bi,aA) = if ((al.caller != this))
357417 then throw("Should be called by this script only")
358418 else {
359- let bx = bc(aB, ah, aI, aC, ba, bb)
360- $Tuple2(nil, bx)
419+ let bF = bj(aI, aj, aP, aJ, bh, bi, aA)
420+ $Tuple2(nil, bF)
361421 }
362422
363423
364424
365-@Callable(aj)
425+@Callable(al)
366426 func claimReward () = {
367- let by = toString(aj.caller)
368- let bz = bk(by)
369- let R = bz._1
370- let af = bz._2
371- let ag = bz._3
372- let bm = bz._4
373- let bl = bz._5
374- let bn = bz._6
375- $Tuple2([IntegerEntry(N(bm), R), ScriptTransfer(aj.caller, (af + ag), fromBase58String(bl[u])), ac("claim", by, af, ag, R, bn, aj)], [af, ag])
427+ let bG = toString(al.caller)
428+ let bH = bp(bG, false)
429+ let T = bH._1
430+ let ah = bH._2
431+ let ai = bH._3
432+ let br = bH._4
433+ let bq = bH._5
434+ let bs = bH._6
435+ $Tuple2([IntegerEntry(P(br), T), ScriptTransfer(al.caller, (ah + ai), fromBase58String(bq[u])), ae("claim", bG, ah, ai, T, bs, al)], [ah, ai])
376436 }
377437
378438
379439
380-@Callable(aj)
381-func claimRewardREADONLY (by) = {
382- let bA = bk(by)
383- let bB = (bA._2 + bA._3)
384- $Tuple2(nil, bB)
440+@Callable(al)
441+func claimRewardREADONLY (bG) = {
442+ let bI = bp(bG, true)
443+ let bJ = (bI._2 + bI._3)
444+ $Tuple2(nil, bJ)
385445 }
386446
387447
388448
389-@Callable(aj)
390-func claimRewardDetailedREADONLY (by) = {
391- let bC = bk(by)
392- let bh = bC._1
393- let bD = bC._2
394- let bE = bC._3
395- $Tuple2(nil, makeString(["%d%d%d", toString((bD + bE)), toString(bD), toString(bE)], b))
449+@Callable(al)
450+func claimRewardDetailedREADONLY (bG) = {
451+ let bK = bp(bG, true)
452+ let bL = bK._1
453+ let bM = bK._2
454+ let bN = bK._3
455+ $Tuple2(nil, makeString(["%d%d%d", toString((bM + bN)), toString(bM), toString(bN)], b))
396456 }
397457
398458
399459
400-@Callable(aj)
401-func latestFinalizedPeriodREADONLY (by) = $Tuple2(nil, valueOrElse(getInteger(this, K()), -1))
460+@Callable(al)
461+func latestFinalizedPeriodREADONLY (bG) = $Tuple2(nil, valueOrElse(getInteger(this, K()), -1))
402462
403463
404464
405-@Callable(aj)
406-func latestFinalizedPeriodInfoREADONLY (by) = $Tuple2(nil, k(U()))
465+@Callable(al)
466+func latestFinalizedPeriodInfoREADONLY (bG) = $Tuple2(nil, k(W()))
407467
408468
409469
410-@Callable(aj)
411-func calcGwxParamsREADONLY (bF,bG,bH) = {
412- let bI = (bG + bH)
413- let bJ = -(fraction(bF, e, bH))
414- let bK = (fraction(bF, e, bH) * bI)
415- $Tuple2(nil, [bJ, bK, az()])
470+@Callable(al)
471+func calcGwxParamsREADONLY (bO,bP,bQ) = {
472+ let bR = (bP + bQ)
473+ let bS = -(fraction(bO, e, bQ))
474+ let bT = (fraction(bO, e, bQ) * bR)
475+ $Tuple2(nil, [bS, bT, aG()])
416476 }
417477
418478
419479
420-@Callable(aj)
421-func calcGwxAmountStartREADONLY (bL,bM,bN) = {
422- let bO = fraction(bM, f, bN)
423- let bP = fraction(bL, bO, f)
424- $Tuple2(nil, [bP])
480+@Callable(al)
481+func calcGwxAmountStartREADONLY (bU,bV,bW) = {
482+ let bX = fraction(bV, f, bW)
483+ let bY = fraction(bU, bX, f)
484+ $Tuple2(nil, [bY])
425485 }
426486
427487
428488
429-@Callable(aj)
430-func constructor (B,C,D,E) = if ((this != aj.caller))
489+@Callable(al)
490+func constructor (B,C,D,E) = if ((this != al.caller))
431491 then throw("not authorized")
432492 else [StringEntry(y(), A(B, C, D, E))]
433493
434494
435495
436-@Callable(aj)
437-func constructorV2 (bQ) = if ((this != aj.caller))
496+@Callable(al)
497+func constructorV2 (bZ) = if ((this != al.caller))
438498 then throw("not authorized")
439- else [StringEntry(o(), bQ)]
499+ else [StringEntry(o(), bZ)]
440500
441501
442502
443-@Callable(aj)
444-func constructorV3 (bR) = if ((this != aj.caller))
503+@Callable(al)
504+func constructorV3 (ca) = if ((this != al.caller))
445505 then throw("not authorized")
446506 else {
447- let bS = if (isDefined(getInteger(this, K())))
507+ let cb = if (isDefined(getInteger(this, K())))
448508 then nil
449509 else [IntegerEntry(K(), -1)]
450- (bS :+ StringEntry(r(), bR))
510+ (cb :+ StringEntry(r(), ca))
451511 }
452512
453513
454514
455-@Callable(aj)
456-func onEmissionForGwxStart () = if ((aj.caller != q))
515+@Callable(al)
516+func onEmissionForGwxStart () = if ((al.caller != q))
457517 then throw("permissions denied")
458518 else [IntegerEntry(F(), height)]
459519
460520
461521
462-@Callable(aj)
463-func latestPeriodEmissionRewardsREADONLY (by) = {
464- let R = az()
465- $Tuple2(nil, [h(S(R))])
522+@Callable(al)
523+func latestPeriodEmissionRewardsREADONLY (bG) = {
524+ let T = aG()
525+ $Tuple2(nil, [h(U(T))])
466526 }
467527
468528
469529
470-@Callable(aj)
471-func calcD (bT,bU,bV,bW,bX) = {
472- let bY = toBigInt(2)
473- let bZ = parseBigIntValue(bW)
474- let ca = parseBigIntValue(bX)
475- let cb = parseBigIntValue(bT)
476- let cc = parseBigIntValue(bU)
477- let cd = (parseBigIntValue(bV) * bZ)
478- let ce = (cb + cc)
479- if ((ce == g))
530+@Callable(al)
531+func calcD (cc,cd,ce,cf,cg) = {
532+ let ch = toBigInt(2)
533+ let ci = parseBigIntValue(cf)
534+ let cj = parseBigIntValue(cg)
535+ let ck = parseBigIntValue(cc)
536+ let cl = parseBigIntValue(cd)
537+ let cm = (parseBigIntValue(ce) * ci)
538+ let cn = (ck + cl)
539+ if ((cn == g))
480540 then $Tuple2(nil, toString(g))
481541 else {
482- let cf = (cd * bY)
483- let cg = [1, 2, 3, 4, 5, 6, 7]
484- func ch (ci,cj) = {
485- let ck = ci
486- let cl = ck._1
487- let cm = ck._2
488- let cn = (((cl * cl) * cl) / (((cb * cc) * bY) * bY))
489- let co = (((((cf * ce) / bZ) + (cn * bY)) * cl) / ((((cf - bZ) * cl) / bZ) + ((bY + toBigInt(1)) * cn)))
490- $Tuple2(co, cl)
542+ let co = (cm * ch)
543+ let cp = [1, 2, 3, 4, 5, 6, 7]
544+ func cq (cr,cs) = {
545+ let ct = cr
546+ let cu = ct._1
547+ let cv = ct._2
548+ let cw = (((cu * cu) * cu) / (((ck * cl) * ch) * ch))
549+ let cx = (((((co * cn) / ci) + (cw * ch)) * cu) / ((((co - ci) * cu) / ci) + ((ch + toBigInt(1)) * cw)))
550+ $Tuple2(cx, cu)
491551 }
492552
493- let cp = {
494- let cq = cg
495- let cr = size(cq)
496- let cs = $Tuple2(ce, unit)
497- func ct (cu,cv) = if ((cv >= cr))
498- then cu
499- else ch(cu, cq[cv])
553+ let cy = {
554+ let cz = cp
555+ let cA = size(cz)
556+ let cB = $Tuple2(cn, unit)
557+ func cC (cD,cE) = if ((cE >= cA))
558+ then cD
559+ else cq(cD, cz[cE])
500560
501- func cw (cu,cv) = if ((cv >= cr))
502- then cu
561+ func cF (cD,cE) = if ((cE >= cA))
562+ then cD
503563 else throw("List size exceeds 7")
504564
505- cw(ct(ct(ct(ct(ct(ct(ct(cs, 0), 1), 2), 3), 4), 5), 6), 7)
565+ cF(cC(cC(cC(cC(cC(cC(cC(cB, 0), 1), 2), 3), 4), 5), 6), 7)
506566 }
507- let co = cp._1
508- let cm = cp._2
509- let cx = m((co - value(cm)))
510- if ((ca >= cx))
511- then $Tuple2(nil, toString(co))
512- else throw(("D calculation error, dDiff = " + toString(cx)))
567+ let cx = cy._1
568+ let cv = cy._2
569+ let cG = m((cx - value(cv)))
570+ if ((cj >= cG))
571+ then $Tuple2(nil, toString(cx))
572+ else throw(("D calculation error, dDiff = " + toString(cG)))
513573 }
514574 }
515575
516576

github/deemru/w8io/169f3d6 
194.78 ms