tx · HvuQNpjYC9Qz1tyJoRiELRgvoLz6WfWdHj5AR9ArzZa5

3N74cvawpTtuuCbAasBo7oMJYrohgZYFCTj:  -0.01400000 Waves

2021.11.18 19:47 [1796729] smart account 3N74cvawpTtuuCbAasBo7oMJYrohgZYFCTj > SELF 0.00000000 Waves

{ "type": 13, "id": "HvuQNpjYC9Qz1tyJoRiELRgvoLz6WfWdHj5AR9ArzZa5", "fee": 1400000, "feeAssetId": null, "timestamp": 1637254083260, "version": 1, "sender": "3N74cvawpTtuuCbAasBo7oMJYrohgZYFCTj", "senderPublicKey": "BgnyKECwUvFW1ThWpgKbmHMmJXJRgg5K56jKHZwVMbXL", "proofs": [ "5Jq5cdpQWXPpuZrYUFUb2uPPyskLzXdsXqN5U1Hrpx4vLKrii8Yb5CrePZPPic5y68NejSfoVAQFPfsZuRoXCZhT" ], "script": "base64:AAIFAAAAAAAAAC4IAhIHCgUCAQEBARIAEgASBwoFAgEBAQESABIDCgEIEgUKAwEBARIGCgQICAgBAAAAJQAAAAALcmV2aXNpb25OdW0CAAAAAAAAAAADU0VQAgAAAAJfXwAAAAAITUFYREVQVEgAAAAAAAAAABEAAAAACVVTRVJERVBUSAAAAAAAAAAAGgAAAAAFU0NBTEUAAAAAAAAAA+gBAAAADmdldE51bWJlckJ5S2V5AAAAAQAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AAAAAAAAAAAAAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQIAAAAAAQAAAA9nZXRTdHJpbmdPckZhaWwAAAABAAAAA2tleQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEIgAAAAEFAAAAA2tleQkAASwAAAACCQABLAAAAAICAAAAD21hbmRhdG9yeSB0aGlzLgUAAAADa2V5AgAAAA8gaXMgbm90IGRlZmluZWQAAAAADUlkeENmZ0Fzc2V0SWQAAAAAAAAAAAEAAAAAFklkeENmZ1BhY2VtYWtlckFkZHJlc3MAAAAAAAAAAAIAAAAAFklkeENmZ0Jvb3N0aW5nQ29udHJhY3QAAAAAAAAAAAMAAAAADklkeENmZ01heERlcHRoAAAAAAAAAAAEAQAAAAlrZXlDb25maWcAAAAAAgAAAAolc19fY29uZmlnAQAAABVyZWFkQ29uZmlnQXJyYXlPckZhaWwAAAAACQAEtQAAAAIJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAABCQEAAAAJa2V5Q29uZmlnAAAAAAUAAAADU0VQAQAAAAxmb3JtYXRDb25maWcAAAAEAAAADHd4QXNzZXRJZFN0cgAAABptYXRjaGVyUGFjZW1ha2VyQWRkcmVzc1N0cgAAABpib29zdGluZ0NvbnRyYWN0QWRkcmVzc1N0cgAAAAhtYXhEZXB0aAkABLkAAAACCQAETAAAAAICAAAACCVzJXMlcyVkCQAETAAAAAIFAAAADHd4QXNzZXRJZFN0cgkABEwAAAACBQAAABptYXRjaGVyUGFjZW1ha2VyQWRkcmVzc1N0cgkABEwAAAACBQAAABpib29zdGluZ0NvbnRyYWN0QWRkcmVzc1N0cgkABEwAAAACCQABpAAAAAEFAAAACG1heERlcHRoBQAAAANuaWwFAAAAA1NFUAEAAAANa2V5VXNlcnNDb3VudAAAAAACAAAADyVzX19uZXh0VXNlck51bQEAAAAUa2V5TmV4dFByb2Nlc3NlZFVzZXIAAAAAAgAAABUlc19fbmV4dFByb2Nlc3NlZFVzZXIBAAAAD2tleUxhdGVzdFBlcmlvZAAAAAACAAAAECVzX19sYXRlc3RQZXJpb2QBAAAADWtleU5leHRQZXJpb2QAAAAAAgAAAA4lc19fbmV4dFBlcmlvZAEAAAAWa2V5TmV4dFByb2Nlc3NlZFBlcmlvZAAAAAACAAAAFyVzX19uZXh0UHJvY2Vzc2VkUGVyaW9kAQAAABtrZXlOZXh0VW5sYWltZWRQZXJpb2RPZlVzZXIAAAABAAAACXVzZXJJbmRleAkABLkAAAACCQAETAAAAAICAAAAFyVzJWRfX25leHRDbGFpbWVkUGVyaW9kCQAETAAAAAIJAAGkAAAAAQUAAAAJdXNlckluZGV4BQAAAANuaWwFAAAAA1NFUAEAAAAca2V5TGFzdFByb2Nlc3NlZFBlcmlvZE9mVXNlcgAAAAEAAAAJdXNlckluZGV4CQAEuQAAAAIJAARMAAAAAgIAAAAZJXMlZF9fbGFzdFByb2Nlc3NlZFBlcmlvZAkABEwAAAACCQABpAAAAAEFAAAACXVzZXJJbmRleAUAAAADbmlsBQAAAANTRVABAAAAEmtleUhlaWdodEZvclBlcmlvZAAAAAEAAAAGcGVyaW9kCQAEuQAAAAIJAARMAAAAAgIAAAAaJXMlZF9fc3RhcnRIZWlnaHRGb3JQZXJpb2QJAARMAAAAAgkAAaQAAAABBQAAAAZwZXJpb2QFAAAAA25pbAUAAAADU0VQAQAAABdrZXlUb3RhbEFtb3VudEZvclBlcmlvZAAAAAEAAAAGcGVyaW9kCQAEuQAAAAIJAARMAAAAAgIAAAAaJXMlZF9fdG90YWxBbW91bnRGb3JQZXJpb2QJAARMAAAAAgkAAaQAAAABBQAAAAZwZXJpb2QFAAAAA25pbAUAAAADU0VQAQAAABdrZXlUb3RhbFdlaWdodEZvclBlcmlvZAAAAAEAAAAGcGVyaW9kCQAEuQAAAAIJAARMAAAAAgIAAAAaJXMlZF9fdG90YWxXZWlnaHRGb3JQZXJpb2QJAARMAAAAAgkAAaQAAAABBQAAAAZwZXJpb2QFAAAAA25pbAUAAAADU0VQAQAAABZrZXlVc2VyS1ZhbHVlRm9yUGVyaW9kAAAAAgAAAAZwZXJpb2QAAAAJdXNlckluZGV4CQAEuQAAAAIJAARMAAAAAgIAAAAXJXMlZCVzJWRfX3BhcmFtQnlQZXJpb2QJAARMAAAAAgkAAaQAAAABBQAAAAl1c2VySW5kZXgJAARMAAAAAgIAAAABawkABEwAAAACCQABpAAAAAEFAAAABnBlcmlvZAUAAAADbmlsBQAAAANTRVABAAAAFmtleVVzZXJCVmFsdWVGb3JQZXJpb2QAAAACAAAABnBlcmlvZAAAAAl1c2VySW5kZXgJAAS5AAAAAgkABEwAAAACAgAAABclcyVkJXMlZF9fcGFyYW1CeVBlcmlvZAkABEwAAAACCQABpAAAAAEFAAAACXVzZXJJbmRleAkABEwAAAACAgAAAAFiCQAETAAAAAIJAAGkAAAAAQUAAAAGcGVyaW9kBQAAAANuaWwFAAAAA1NFUAEAAAAMSGlzdG9yeUVudHJ5AAAABgAAAAR0eXBlAAAABHVzZXIAAAAGYW1vdW50AAAADWN1cnJlbnRQZXJpb2QAAAAMbGF0ZXN0UGVyaW9kAAAAAWkEAAAACmhpc3RvcnlLRVkJAAS5AAAAAgkABEwAAAACAgAAABElcyVzJXMlc19faGlzdG9yeQkABEwAAAACBQAAAAR0eXBlCQAETAAAAAIFAAAABHVzZXIJAARMAAAAAgkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBQAAAANuaWwFAAAAA1NFUAQAAAALaGlzdG9yeURBVEEJAAS5AAAAAgkABEwAAAACAgAAAAolZCVkJWQlZCVkCQAETAAAAAIJAAGkAAAAAQgFAAAACWxhc3RCbG9jawAAAAZoZWlnaHQJAARMAAAAAgkAAaQAAAABCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAkABEwAAAACCQABpAAAAAEFAAAABmFtb3VudAkABEwAAAACCQABpAAAAAEFAAAADWN1cnJlbnRQZXJpb2QJAARMAAAAAgkAAaQAAAABBQAAAAxsYXRlc3RQZXJpb2QFAAAAA25pbAUAAAADU0VQCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAApoaXN0b3J5S0VZBQAAAAtoaXN0b3J5REFUQQEAAAAOY2FsY1VzZXJXZWlnaHQAAAAEAAAAF2Jvb3N0aW5nQ29udHJhY3RBZGRyZXNzAAAAD2hlaWdodEZvclBlcmlvZAAAAAZwZXJpb2QAAAAJdXNlckluZGV4BAAAAAVrTGFzdAkBAAAAHGtleUxhc3RQcm9jZXNzZWRQZXJpb2RPZlVzZXIAAAABBQAAAAl1c2VySW5kZXgEAAAABGtLZXkJAQAAABZrZXlVc2VyS1ZhbHVlRm9yUGVyaW9kAAAAAgUAAAAGcGVyaW9kBQAAAAl1c2VySW5kZXgEAAAABGtSYXcJAAQaAAAAAgUAAAAXYm9vc3RpbmdDb250cmFjdEFkZHJlc3MFAAAABGtLZXkDCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAAEa1JhdwQAAAABawkBAAAABXZhbHVlAAAAAQUAAAAEa1JhdwQAAAABYgkBAAAABXZhbHVlAAAAAQkABBoAAAACBQAAABdib29zdGluZ0NvbnRyYWN0QWRkcmVzcwkBAAAAFmtleVVzZXJCVmFsdWVGb3JQZXJpb2QAAAACBQAAAAZwZXJpb2QFAAAACXVzZXJJbmRleAQAAAABdwkAAGQAAAACCQAAaAAAAAIFAAAAAWsFAAAAD2hlaWdodEZvclBlcmlvZAUAAAABYgMJAABmAAAAAgUAAAABdwAAAAAAAAAAAAkABRQAAAACCQAAaQAAAAIFAAAAAXcFAAAABVNDQUxFCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAVrTGFzdAUAAAAGcGVyaW9kBQAAAANuaWwJAAUUAAAAAgAAAAAAAAAAAAUAAAADbmlsBAAAAAFwCQAEGgAAAAIFAAAABHRoaXMFAAAABWtMYXN0AwkBAAAACWlzRGVmaW5lZAAAAAEFAAAAAXAEAAAAAnB2CQEAAAAFdmFsdWUAAAABBQAAAAFwBAAAAAFrCQEAAAAFdmFsdWUAAAABCQAEGgAAAAIFAAAAF2Jvb3N0aW5nQ29udHJhY3RBZGRyZXNzCQEAAAAWa2V5VXNlcktWYWx1ZUZvclBlcmlvZAAAAAIFAAAAAnB2BQAAAAl1c2VySW5kZXgEAAAAAWIJAQAAAAV2YWx1ZQAAAAEJAAQaAAAAAgUAAAAXYm9vc3RpbmdDb250cmFjdEFkZHJlc3MJAQAAABZrZXlVc2VyQlZhbHVlRm9yUGVyaW9kAAAAAgUAAAACcHYFAAAACXVzZXJJbmRleAQAAAABdwkAAGQAAAACCQAAaAAAAAIFAAAAAWsFAAAAD2hlaWdodEZvclBlcmlvZAUAAAABYgMJAABmAAAAAgUAAAABdwAAAAAAAAAAAAkABRQAAAACCQAAaQAAAAIFAAAAAXcFAAAABVNDQUxFBQAAAANuaWwJAAUUAAAAAgAAAAAAAAAAAAUAAAADbmlsCQAFFAAAAAIAAAAAAAAAAAAFAAAAA25pbAEAAAAVZ2V0VXNlckluZGV4QnlBZGRyZXNzAAAAAgAAABpib29zdGluZ0NvbnRyYWN0QWRkcmVzc1N0cgAAAAt1c2VyQWRkcmVzcwQAAAADa2V5CQAEuQAAAAIJAARMAAAAAgIAAAAGJXMlcyVzCQAETAAAAAICAAAAB21hcHBpbmcJAARMAAAAAgIAAAAIdXNlcjJudW0JAARMAAAAAgUAAAALdXNlckFkZHJlc3MFAAAAA25pbAUAAAADU0VQCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAAaYm9vc3RpbmdDb250cmFjdEFkZHJlc3NTdHIFAAAAA2tleQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAANVXNlciBhZGRyZXNzIAUAAAALdXNlckFkZHJlc3MCAAAALSBpcyBub3QgZm91bmQgaW4gYm9vc3RpbmcgY29udHJhY3QgZGF0YSwga2V5PQUAAAADa2V5AQAAAApuZXh0UGVyaW9kAAAAAAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAADWtleU5leHRQZXJpb2QAAAAAAQAAAA1pbnZva2VQcm9jZXNzAAAABQAAABBib29zdGluZ0NvbnRyYWN0AAAABnBlcmlvZAAAAAR1c2VyAAAABWRlcHRoAAAABndlaWdodAQAAAAGcmVzdWx0CQAD/AAAAAQFAAAABHRoaXMCAAAAEHByb2Nlc3NOZXh0QmF0Y2gJAARMAAAAAgUAAAAQYm9vc3RpbmdDb250cmFjdAkABEwAAAACBQAAAAZwZXJpb2QJAARMAAAAAgUAAAAEdXNlcgkABEwAAAACBQAAAAVkZXB0aAkABEwAAAACBQAAAAZ3ZWlnaHQFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAAZyZXN1bHQFAAAABnJlc3VsdAQAAAAHJG1hdGNoMAUAAAAGcmVzdWx0AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAA8oSW50LCBJbnQsIEludCkEAAAAAXIFAAAAByRtYXRjaDAFAAAAAXIJAAACAAAAAQIAAAAXSW5jb3JyZWN0IGludm9rZSByZXN1bHQJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQAAABVjaGVja0xhc3RQYXJ0T2ZQZXJpb2QAAAAGAAAAEGJvb3N0aW5nQ29udHJhY3QAAAANY3VycmVudFBlcmlvZAAAAAxsYXRlc3RQZXJpb2QAAAAFZGVwdGgAAAAOdG90YWxXZWlnaHRLZXkAAAAGd2VpZ2h0AwkAAGcAAAACBQAAAAxsYXRlc3RQZXJpb2QJAABkAAAAAgUAAAANY3VycmVudFBlcmlvZAAAAAAAAAAAAQkBAAAADWludm9rZVByb2Nlc3MAAAAFBQAAABBib29zdGluZ0NvbnRyYWN0CQAAZAAAAAIFAAAADWN1cnJlbnRQZXJpb2QAAAAAAAAAAAEAAAAAAAAAAAAJAABlAAAAAgUAAAAFZGVwdGgAAAAAAAAAAAEAAAAAAAAAAAAJAAUVAAAAAwkAAGQAAAACBQAAAA1jdXJyZW50UGVyaW9kAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAABhwcm9jZXNzTmV4dEJhdGNoSW50ZXJuYWwAAAAFAAAAEGJvb3N0aW5nQ29udHJhY3QAAAANY3VycmVudFBlcmlvZAAAAAtjdXJyZW50VXNlcgAAAAVkZXB0aAAAAAt0b3RhbFdlaWdodAQAAAAXYm9vc3RpbmdDb250cmFjdEFkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQUAAAAQYm9vc3RpbmdDb250cmFjdAQAAAAMbGF0ZXN0UGVyaW9kCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAPa2V5TGF0ZXN0UGVyaW9kAAAAAAQAAAAKdXNlcnNDb3VudAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAABdib29zdGluZ0NvbnRyYWN0QWRkcmVzcwkBAAAADWtleVVzZXJzQ291bnQAAAAAAAAAAAAAAAAABAAAAA50b3RhbFdlaWdodEtleQkBAAAAF2tleVRvdGFsV2VpZ2h0Rm9yUGVyaW9kAAAAAQUAAAANY3VycmVudFBlcmlvZAQAAAAPaGVpZ2h0Rm9yUGVyaW9kCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAASa2V5SGVpZ2h0Rm9yUGVyaW9kAAAAAQUAAAANY3VycmVudFBlcmlvZAMDCQAAZgAAAAIFAAAABWRlcHRoAAAAAAAAAAAACQAAZwAAAAIFAAAADGxhdGVzdFBlcmlvZAUAAAANY3VycmVudFBlcmlvZAcEAAAAAnQwCQEAAAAOY2FsY1VzZXJXZWlnaHQAAAAEBQAAABdib29zdGluZ0NvbnRyYWN0QWRkcmVzcwUAAAAPaGVpZ2h0Rm9yUGVyaW9kBQAAAA1jdXJyZW50UGVyaW9kBQAAAAtjdXJyZW50VXNlcgQAAAAHd2VpZ2h0MAkAAGQAAAACBQAAAAt0b3RhbFdlaWdodAgFAAAAAnQwAAAAAl8xAwkAAGYAAAACBQAAAAp1c2Vyc0NvdW50CQAAZAAAAAIFAAAAC2N1cnJlbnRVc2VyAAAAAAAAAAABBAAAAAJ0MQkBAAAADmNhbGNVc2VyV2VpZ2h0AAAABAUAAAAXYm9vc3RpbmdDb250cmFjdEFkZHJlc3MFAAAAD2hlaWdodEZvclBlcmlvZAUAAAANY3VycmVudFBlcmlvZAkAAGQAAAACBQAAAAtjdXJyZW50VXNlcgAAAAAAAAAAAQQAAAAHd2VpZ2h0MQkAAGQAAAACBQAAAAd3ZWlnaHQwCAUAAAACdDEAAAACXzEDCQAAZgAAAAIFAAAACnVzZXJzQ291bnQJAABkAAAAAgUAAAALY3VycmVudFVzZXIAAAAAAAAAAAIEAAAAAnQyCQEAAAAOY2FsY1VzZXJXZWlnaHQAAAAE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CQAETAAAAAIFAAAABWRlcHRoCQAETAAAAAIFAAAABXRvdGFsBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAGcmVzdWx0BQAAAAZyZXN1bHQEAAAAByRtYXRjaDAFAAAABnJlc3VsdAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKKEludCwgSW50KQQAAAABcgUAAAAHJG1hdGNoMAUAAAABcgkAAAIAAAABAgAAABdJbmNvcnJlY3QgaW52b2tlIHJlc3VsdAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAAAADWNsYWltSW50ZXJuYWwAAAAFAAAAEGJvb3N0aW5nQ29udHJhY3QAAAANY3VycmVudFBlcmlvZAAAAAtjdXJyZW50VXNlcgAAAAVkZXB0aAAAAA91c2VyQWNjdW11bGF0ZWQEAAAAF2Jvb3N0aW5nQ29udHJhY3RBZGRyZXNzCQEAAAAHQWRkcmVzcwAAAAEFAAAAEGJvb3N0aW5nQ29udHJhY3QEAAAADGxhdGVzdFBlcmlvZAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFmtleU5leHRQcm9jZXNzZWRQZXJpb2QAAAAABAAAAAt0b3RhbFdlaWdodAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAF2tleVRvdGFsV2VpZ2h0Rm9yUGVyaW9kAAAAAQUAAAANY3VycmVudFBlcmlvZAQAAAAPaGVpZ2h0Rm9yUGVyaW9kCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAASa2V5SGVpZ2h0Rm9yUGVyaW9kAAAAAQUAAAANY3VycmVudFBlcmlvZAQAAAANJHQwMTA2OTkxMDgxMQkBAAAADmNhbGNVc2VyV2VpZ2h0AAAABAUAAAAXYm9vc3RpbmdDb250cmFjdEFkZHJlc3MFAAAAD2hlaWdodEZvclBlcmlvZAUAAAANY3VycmVudFBlcmlvZAUAAAALY3VycmVudFVzZXIEAAAACnVzZXJXZWlnaHQIBQAAAA0kdDAxMDY5OTEwODExAAAAAl8xBAAAAAdpZ25vcmVkCAUAAAANJHQwMTA2OTkxMDgxMQAAAAJfMgQAAAATdXNlckFtb3VudEZvclBlcmlvZAkAAGsAAAADCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAXa2V5VG90YWxBbW91bnRGb3JQZXJpb2QAAAABBQAAAA1jdXJyZW50UGVyaW9kBQAAAAp1c2VyV2VpZ2h0BQAAAAt0b3RhbFdlaWdodAMDCQAAZwAAAAIAAAAAAAAAAAAFAAAABWRlcHRoBgkAAGcAAAACCQAAZAAAAAIFAAAADWN1cnJlbnRQZXJpb2QAAAAAAAAAAAEFAAAADGxhdGVzdFBlcmlvZAkABRQAAAACCQAAZAAAAAIFAAAADWN1cnJlbnRQZXJpb2QAAAAAAAAAAAEJAABkAAAAAgUAAAAPdXNlckFjY3VtdWxhdGVkBQAAABN1c2VyQW1vdW50Rm9yUGVyaW9kCQEAAAALaW52b2tlQ2xhaW0AAAAFBQAAABBib29zdGluZ0NvbnRyYWN0CQAAZAAAAAIFAAAADWN1cnJlbnRQZXJpb2QAAAAAAAAAAAEFAAAAC2N1cnJlbnRVc2VyCQAAZQAAAAIFAAAABWRlcHRoAAAAAAAAAAABCQAAZAAAAAIFAAAAD3VzZXJBY2N1bXVsYXRlZAUAAAATdXNlckFtb3VudEZvclBlcmlvZAEAAAARY29tbW9uQ2xhaW1SZXdhcmQAAAABAAAAC3VzZXJBZGRyZXNzBAAAAAhjZmdBcnJheQkBAAAAFXJlYWRDb25maWdBcnJheU9yRmFpbAAAAAAEAAAAB3VzZXJJZHgJAQAAABVnZXRVc2VySW5kZXhCeUFkZHJlc3MAAAACCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABZJZHhDZmdCb29zdGluZ0NvbnRyYWN0BQAAAAt1c2VyQWRkcmVzcwQAAAANY3VycmVudFBlcmlvZAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAG2tleU5leHRVbmxhaW1lZFBlcmlvZE9mVXNlcgAAAAEFAAAAB3VzZXJJZHgEAAAADGxhdGVzdFBlcmlvZAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFmtleU5leHRQcm9jZXNzZWRQZXJpb2QAAAAAAwkAAGcAAAACBQAAAA1jdXJyZW50UGVyaW9kBQAAAAxsYXRlc3RQZXJpb2QJAAACAAAAAQIAAAAQTm90aGluZyB0byBjbGFpbQQAAAAQYm9vc3RpbmdDb250cmFjdAkAAlkAAAABCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABZJZHhDZmdCb29zdGluZ0NvbnRyYWN0BAAAAA0kdDAxMTczMjExODI0CQEAAAANY2xhaW1JbnRlcm5hbAAAAAUFAAAAEGJvb3N0aW5nQ29udHJhY3QFAAAADWN1cnJlbnRQZXJpb2QFAAAAB3VzZXJJZHgFAAAACVVTRVJERVBUSAAAAAAAAAAAAAQAAAAGcGVyaW9kCAUAAAANJHQwMTE3MzIxMTgyNAAAAAJfMQQAAAAGYW1vdW50CAUAAAANJHQwMTE3MzIxMTgyNAAAAAJfMgkABRcAAAAFBQAAAAZwZXJpb2QFAAAABmFtb3VudAUAAAAHdXNlcklkeAUAAAAIY2ZnQXJyYXkFAAAADGxhdGVzdFBlcmlvZAAAAAgAAAABaQEAAAAQcHJvY2Vzc05leHRCYXRjaAAAAAUAAAAQYm9vc3RpbmdDb250cmFjdAAAAA1jdXJyZW50UGVyaW9kAAAAC2N1cnJlbnRVc2VyAAAABWRlcHRoAAAAC3RvdGFsV2VpZ2h0AwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzCQAAAgAAAAECAAAAJFNob3VsZCBiZSBjYWxsZWQgYnkgdGhpcyBzY3JpcHQgb25seQQAAAADdHBsCQEAAAAYcHJvY2Vzc05leHRCYXRjaEludGVybmFsAAAABQUAAAAQYm9vc3RpbmdDb250cmFjdAUAAAANY3VycmVudFBlcmlvZAUAAAALY3VycmVudFVzZXIFAAAABWRlcHRoBQAAAAt0b3RhbFdlaWdodAkABRQAAAACCAUAAAADdHBsAAAAAl8xCQAFFQAAAAMIBQAAAAN0cGwAAAACXzIIBQAAAAN0cGwAAAACXzMIBQAAAAN0cGwAAAACXzQAAAABaQEAAAAdcHJvY2Vzc1BlbmRpbmdQZXJpb2RzQW5kVXNlcnMAAAAABAAAAA1jdXJyZW50UGVyaW9kCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAWa2V5TmV4dFByb2Nlc3NlZFBlcmlvZAAAAAADCQAAZgAAAAIFAAAADWN1cnJlbnRQZXJpb2QJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAAA9rZXlMYXRlc3RQZXJpb2QAAAAACQAAAgAAAAECAAAAEk5vdGhpbmcgdG8gcHJvY2VzcwQAAAAIY2ZnQXJyYXkJAQAAABVyZWFkQ29uZmlnQXJyYXlPckZhaWwAAAAABAAAAAVkZXB0aAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAAA5JZHhDZmdNYXhEZXB0aAMJAABmAAAAAgUAAAAFZGVwdGgFAAAACE1BWERFUFRICQAAAgAAAAECAAAAFkRlcHRoIGV4Y2VlZHMgTUFYREVQVEgEAAAAEGJvb3N0aW5nQ29udHJhY3QJAAJZAAAAAQkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAAWSWR4Q2ZnQm9vc3RpbmdDb250cmFjdAQAAAALY3VycmVudFVzZXIJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABRrZXlOZXh0UHJvY2Vzc2VkVXNlcgAAAAAEAAAAC3RvdGFsV2VpZ2h0CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAXa2V5VG90YWxXZWlnaHRGb3JQZXJpb2QAAAABBQAAAA1jdXJyZW50UGVyaW9kBAAAAAFyCQEAAAAYcHJvY2Vzc05leHRCYXRjaEludGVybmFsAAAABQUAAAAQYm9vc3RpbmdDb250cmFjdAUAAAANY3VycmVudFBlcmlvZAUAAAALY3VycmVudFVzZXIFAAAABWRlcHRoBQAAAAt0b3RhbFdlaWdodAkABE0AAAACCQAETQAAAAIIBQAAAAFyAAAAAl8xCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAFmtleU5leHRQcm9jZXNzZWRQZXJpb2QAAAAACAUAAAABcgAAAAJfMgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABRrZXlOZXh0UHJvY2Vzc2VkVXNlcgAAAAAIBQAAAAFyAAAAAl8zAAAAAWkBAAAAB2RlcG9zaXQAAAAABAAAAAhjZmdBcnJheQkBAAAAFXJlYWRDb25maWdBcnJheU9yRmFpbAAAAAADCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABZJZHhDZmdQYWNlbWFrZXJBZGRyZXNzCQAAAgAAAAECAAAAFFdyb25nIGNhbGxlciBhZGRyZXNzBAAAAAdhc3NldElkCQEAAAAFdmFsdWUAAAABCAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkAwkBAAAAAiE9AAAAAgUAAAAHYXNzZXRJZAkAAlkAAAABCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAAA1JZHhDZmdBc3NldElkCQAAAgAAAAECAAAAE1dyb25nIHBheW1lbnQgYXNzZXQEAAAABnBlcmlvZAkBAAAACm5leHRQZXJpb2QAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAPa2V5TGF0ZXN0UGVyaW9kAAAAAAUAAAAGcGVyaW9kCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAASa2V5SGVpZ2h0Rm9yUGVyaW9kAAAAAQUAAAAGcGVyaW9kBQAAAAZoZWlnaHQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABdrZXlUb3RhbEFtb3VudEZvclBlcmlvZAAAAAEFAAAABnBlcmlvZAgJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAANa2V5TmV4dFBlcmlvZAAAAAAJAABkAAAAAgUAAAAGcGVyaW9kAAAAAAAAAAABBQAAAANuaWwAAAABaQEAAAAOY2xhaW1OZXh0QmF0Y2gAAAAFAAAAEGJvb3N0aW5nQ29udHJhY3QAAAANY3VycmVudFBlcmlvZAAAAAtjdXJyZW50VXNlcgAAAAVkZXB0aAAAAAt0b3RhbFdlaWdodAMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwkAAAIAAAABAgAAACRTaG91bGQgYmUgY2FsbGVkIGJ5IHRoaXMgc2NyaXB0IG9ubHkEAAAADnBlcmlvZEFuZFRvdGFsCQEAAAANY2xhaW1JbnRlcm5hbAAAAAUFAAAAEGJvb3N0aW5nQ29udHJhY3QFAAAADWN1cnJlbnRQZXJpb2QFAAAAC2N1cnJlbnRVc2VyBQAAAAVkZXB0aAUAAAALdG90YWxXZWlnaHQJAAUUAAAAAgUAAAADbmlsBQAAAA5wZXJpb2RBbmRUb3RhbAAAAAFpAQAAAAtjbGFpbVJld2FyZAAAAAAEAAAAB2FkZHJlc3MJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAAxjbGFpbVJlc3VsdHMJAQAAABFjb21tb25DbGFpbVJld2FyZAAAAAEFAAAAB2FkZHJlc3MEAAAABnBlcmlvZAgFAAAADGNsYWltUmVzdWx0cwAAAAJfMQQAAAAGYW1vdW50CAUAAAAMY2xhaW1SZXN1bHRzAAAAAl8yBAAAAAd1c2VySWR4CAUAAAAMY2xhaW1SZXN1bHRzAAAAAl8zBAAAAAhjZmdBcnJheQgFAAAADGNsYWltUmVzdWx0cwAAAAJfNAQAAAAMbGF0ZXN0UGVyaW9kCAUAAAAMY2xhaW1SZXN1bHRzAAAAAl81CQAFFAAAAAIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABtrZXlOZXh0VW5sYWltZWRQZXJpb2RPZlVzZXIAAAABBQAAAAd1c2VySWR4BQAAAAZwZXJpb2QJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAZhbW91bnQJAAJZAAAAAQkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAANSWR4Q2ZnQXNzZXRJZAkABEwAAAACCQEAAAAMSGlzdG9yeUVudHJ5AAAABgIAAAAFY2xhaW0FAAAAB2FkZHJlc3MFAAAABmFtb3VudAUAAAAGcGVyaW9kBQAAAAxsYXRlc3RQZXJpb2QFAAAAAWkFAAAAA25pbAUAAAAGYW1vdW50AAAAAWkBAAAAE2NsYWltUmV3YXJkUkVBRE9OTFkAAAABAAAAB2FkZHJlc3MEAAAADGNsYWltUmVzdWx0cwkBAAAAEWNvbW1vbkNsYWltUmV3YXJkAAAAAQUAAAAHYWRkcmVzcwQAAAAGYW1vdW50CAUAAAAMY2xhaW1SZXN1bHRzAAAAAl8yCQAFFAAAAAIFAAAAA25pbAUAAAAGYW1vdW50AAAAAWkBAAAAFWNhbGNHd3hQYXJhbXNSRUFET05MWQAAAAMAAAAId3hBbW91bnQAAAAPbG9ja1N0YXJ0SGVpZ2h0AAAAEmxvY2tEdXJhdGlvbkJsb2NrcwQAAAANbG9ja0VuZEhlaWdodAkAAGQAAAACBQAAAA9sb2NrU3RhcnRIZWlnaHQFAAAAEmxvY2tEdXJhdGlvbkJsb2NrcwQAAAAMc2NhbGU4UGFyYW1LCQEAAAABLQAAAAEJAABrAAAAAwUAAAAId3hBbW91bnQFAAAABVNDQUxFBQAAABJsb2NrRHVyYXRpb25CbG9ja3MEAAAADHNjYWxlOFBhcmFtQgkAAGgAAAACCQAAawAAAAMFAAAACHd4QW1vdW50BQAAAAVTQ0FMRQUAAAASbG9ja0R1cmF0aW9uQmxvY2tzBQAAAA1sb2NrRW5kSGVpZ2h0CQAFFAAAAAIFAAAAA25pbAkABEwAAAACBQAAAAxzY2FsZThQYXJhbUsJAARMAAAAAgUAAAAMc2NhbGU4UGFyYW1CCQAETAAAAAIJAQAAAApuZXh0UGVyaW9kAAAAAAUAAAADbmlsAAAAAWkBAAAAC2NvbnN0cnVjdG9yAAAABAAAAAx3eEFzc2V0SWRTdHIAAAAabWF0Y2hlclBhY2VtYWtlckFkZHJlc3NTdHIAAAAaYm9vc3RpbmdDb250cmFjdEFkZHJlc3NTdHIAAAAIbWF4RGVwdGgDCQEAAAACIT0AAAACBQAAAAR0aGlzCAUAAAABaQAAAAZjYWxsZXIJAAACAAAAAQIAAAAObm90IGF1dGhvcml6ZWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAACWtleUNvbmZpZwAAAAAJAQAAAAxmb3JtYXRDb25maWcAAAAEBQAAAAx3eEFzc2V0SWRTdHIFAAAAGm1hdGNoZXJQYWNlbWFrZXJBZGRyZXNzU3RyBQAAABpib29zdGluZ0NvbnRyYWN0QWRkcmVzc1N0cgUAAAAIbWF4RGVwdGgFAAAAA25pbAAAAADiy0XY", "chainId": 84, "height": 1796729, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FsB89Pp8n6eSv2e2e2TKbPvR7MhkiF46SfS7yh7Tycor Next: D6GLY9gYQZkDJVecwJrXyrhsktQuPmBR1mzChqvVWbNM Diff:
OldNewDifferences
99
1010 let d = 26
1111
12-let e = 1000000
12+let e = 1000
1313
1414 func f (g) = valueOrElse(getInteger(this, g), 0)
1515
2626
2727 let l = 3
2828
29-func m () = "%s__config"
29+let m = 4
30+
31+func n () = "%s__config"
3032
3133
32-func n () = split(i(m()), b)
34+func o () = split(i(n()), b)
3335
3436
35-func o (p,q,r) = makeString(["%s%s%s", p, q, r], b)
37+func p (q,r,s,t) = makeString(["%s%s%s%d", q, r, s, toString(t)], b)
3638
3739
38-func s () = makeString(["%s", "nextUserNum"], b)
40+func u () = "%s__nextUserNum"
3941
4042
41-func t () = makeString(["%s", "nextProcessedUser"], b)
43+func v () = "%s__nextProcessedUser"
4244
4345
44-func u () = makeString(["%s", "latestPeriod"], b)
46+func w () = "%s__latestPeriod"
4547
4648
47-func v () = makeString(["%s", "nextPeriod"], b)
49+func x () = "%s__nextPeriod"
4850
4951
50-func w () = makeString(["%s", "nextProcessedPeriod"], b)
52+func y () = "%s__nextProcessedPeriod"
5153
5254
53-func x (y) = makeString(["%s%d", "nextClaimedPeriod", toString(y)], b)
55+func z (A) = makeString(["%s%d__nextClaimedPeriod", toString(A)], b)
5456
5557
56-func z (y) = makeString(["%s%d", "lastProcessedPeriod", toString(y)], b)
58+func B (A) = makeString(["%s%d__lastProcessedPeriod", toString(A)], b)
5759
5860
59-func A (B) = makeString(["%s%d", "startHeightForPeriod", toString(B)], b)
61+func C (D) = makeString(["%s%d__startHeightForPeriod", toString(D)], b)
6062
6163
62-func C (B) = makeString(["%s%d", "totalAmountForPeriod", toString(B)], b)
64+func E (D) = makeString(["%s%d__totalAmountForPeriod", toString(D)], b)
6365
6466
65-func D (B) = makeString(["%s%d", "totalWeightForPeriod", toString(B)], b)
67+func F (D) = makeString(["%s%d__totalWeightForPeriod", toString(D)], b)
6668
6769
68-func E (B,y) = makeString(["%s%d%s%d", "paramByPeriod", toString(y), "k", toString(B)], b)
70+func G (D,A) = makeString(["%s%d%s%d__paramByPeriod", toString(A), "k", toString(D)], b)
6971
7072
71-func F (B,y) = makeString(["%s%d%s%d", "paramByPeriod", toString(y), "b", toString(B)], b)
73+func H (D,A) = makeString(["%s%d%s%d__paramByPeriod", toString(A), "b", toString(D)], b)
7274
7375
74-func G (H,I,B,y) = {
75- let J = z(y)
76- let K = E(B, y)
77- let L = getInteger(H, K)
78- if (isDefined(L))
76+func I (J,K,L,M,N,O) = {
77+ let P = makeString(["%s%s%s%s__history", J, K, toBase58String(O.transactionId)], b)
78+ let Q = makeString(["%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(L), toString(M), toString(N)], b)
79+ StringEntry(P, Q)
80+ }
81+
82+
83+func R (S,T,D,A) = {
84+ let U = B(A)
85+ let V = G(D, A)
86+ let W = getInteger(S, V)
87+ if (isDefined(W))
7988 then {
80- let M = value(L)
81- let N = value(getInteger(H, F(B, y)))
82- let O = ((M * I) + N)
83- if ((O > 0))
84- then $Tuple2((O / e), [IntegerEntry(J, B)])
89+ let X = value(W)
90+ let Y = value(getInteger(S, H(D, A)))
91+ let Z = ((X * T) + Y)
92+ if ((Z > 0))
93+ then $Tuple2((Z / e), [IntegerEntry(U, D)])
8594 else $Tuple2(0, nil)
8695 }
8796 else {
88- let P = getInteger(this, J)
89- if (isDefined(P))
97+ let aa = getInteger(this, U)
98+ if (isDefined(aa))
9099 then {
91- let Q = value(P)
92- let M = value(getInteger(H, E(Q, y)))
93- let N = value(getInteger(H, F(Q, y)))
94- let O = ((M * I) + N)
95- if ((O > 0))
96- then $Tuple2((O / e), nil)
100+ let ab = value(aa)
101+ let X = value(getInteger(S, G(ab, A)))
102+ let Y = value(getInteger(S, H(ab, A)))
103+ let Z = ((X * T) + Y)
104+ if ((Z > 0))
105+ then $Tuple2((Z / e), nil)
97106 else $Tuple2(0, nil)
98107 }
99108 else $Tuple2(0, nil)
101110 }
102111
103112
104-func R (r,S) = {
105- let g = makeString(["%s%s%s", "mapping", "user2num", S], b)
106- parseIntValue(valueOrErrorMessage(getString(Address(fromBase58String(r)), g), ((("User address " + S) + " is not found in boosting contract data, key=") + g)))
113+func ac (s,ad) = {
114+ let g = makeString(["%s%s%s", "mapping", "user2num", ad], b)
115+ parseIntValue(valueOrErrorMessage(getString(Address(fromBase58String(s)), g), ((("User address " + ad) + " is not found in boosting contract data, key=") + g)))
107116 }
108117
109118
110-func T () = f(v())
119+func ae () = f(x())
111120
112121
113-func U (V,B,W,X,Y,Z) = {
114- let aa = invoke(this, "processNextBatch", [V, B, W, X, Y], nil)
115- if ((aa == aa))
122+func af (ag,D,K,ah,ai) = {
123+ let aj = invoke(this, "processNextBatch", [ag, D, K, ah, ai], nil)
124+ if ((aj == aj))
116125 then {
117- let ab = aa
118- if ($isInstanceOf(ab, "(Int, Int, Int)"))
126+ let ak = aj
127+ if ($isInstanceOf(ak, "(Int, Int, Int)"))
119128 then {
120- let ac = ab
121- $Tuple4(Z, ac._1, ac._2, ac._3)
129+ let al = ak
130+ al
122131 }
123132 else throw("Incorrect invoke result")
124133 }
126135 }
127136
128137
129-func ad (V,ae,af,X,ag,Y) = if ((af >= (ae + 1)))
130- then U(V, (ae + 1), 0, (X - 1), 0, [IntegerEntry(ag, Y)])
131- else $Tuple4([IntegerEntry(ag, Y)], (ae + 1), 0, 0)
138+func am (ag,M,N,ah,an,ai) = if ((N >= (M + 1)))
139+ then af(ag, (M + 1), 0, (ah - 1), 0)
140+ else $Tuple3((M + 1), 0, 0)
132141
133142
134-func ah (V,ae,ai,X,aj) = {
135- let H = Address(V)
136- let af = f(u())
137- let ak = valueOrElse(getInteger(H, s()), 0)
138- let ag = D(ae)
139- let I = f(A(ae))
140- if (if ((X > 0))
141- then (af >= ae)
143+func ao (ag,M,ap,ah,aq) = {
144+ let S = Address(ag)
145+ let N = f(w())
146+ let ar = valueOrElse(getInteger(S, u()), 0)
147+ let an = F(M)
148+ let T = f(C(M))
149+ if (if ((ah > 0))
150+ then (N >= M)
142151 else false)
143152 then {
144- let al = G(H, I, ae, ai)
145- let am = al._1
146- let an = al._2
147- let ao = (aj + am)
148- if ((ak > (ai + 1)))
153+ let as = R(S, T, M, ap)
154+ let at = (aq + as._1)
155+ if ((ar > (ap + 1)))
149156 then {
150- let ap = G(H, I, ae, (ai + 1))
151- let aq = ap._1
152- let ar = ap._2
153- if ((ak > (ai + 2)))
157+ let au = R(S, T, M, (ap + 1))
158+ let av = (at + au._1)
159+ if ((ar > (ap + 2)))
154160 then {
155- let as = G(H, I, ae, (ai + 2))
156- let at = as._1
157- let au = as._2
158- if ((ak > (ai + 3)))
161+ let aw = R(S, T, M, (ap + 2))
162+ let ax = (av + aw._1)
163+ if ((ar > (ap + 3)))
159164 then {
160- let av = G(H, I, ae, (ai + 3))
161- let aw = av._1
162- let ax = av._2
163- if ((ak > (ai + 4)))
165+ let ay = R(S, T, M, (ap + 3))
166+ let az = (ax + ay._1)
167+ if ((ar > (ap + 4)))
164168 then {
165- let ay = G(H, I, ae, (ai + 4))
166- let az = ay._1
167- let aA = ay._2
168- if ((ak > (ai + 5)))
169+ let aA = R(S, T, M, (ap + 4))
170+ let aB = (az + aA._1)
171+ if ((ar > (ap + 5)))
169172 then {
170- let aB = G(H, I, ae, (ai + 5))
171- let aC = aB._1
172- let aD = aB._2
173- if ((ak > (ai + 6)))
173+ let aC = R(S, T, M, (ap + 5))
174+ let aD = (aB + aC._1)
175+ if ((ar > (ap + 6)))
174176 then {
175- let aE = U(V, ae, (ai + 6), (X - 1), (((((ao + aq) + at) + aw) + az) + aC), nil)
176- let aF = aE._1
177- let P = aE._2
178- let aG = aE._3
179- let O = aE._4
180- $Tuple4(((((((aF ++ an) ++ ar) ++ au) ++ ax) ++ aA) ++ aD), P, aG, O)
177+ let aE = af(ag, M, (ap + 6), (ah - 1), aD)
178+ $Tuple4((((((as._2 ++ au._2) ++ aw._2) ++ ay._2) ++ aA._2) ++ aC._2), aE._1, aE._2, aE._3)
181179 }
182180 else {
183- let aH = ad(V, ae, af, X, ag, (((((ao + aq) + at) + aw) + az) + aC))
184- let aF = aH._1
185- let P = aH._2
186- let aG = aH._3
187- let O = aH._4
188- $Tuple4(((((((aF ++ an) ++ ar) ++ au) ++ ax) ++ aA) ++ aD), P, aG, O)
181+ let aE = am(ag, M, N, ah, an, aD)
182+ $Tuple4((((((([IntegerEntry(an, aD)] ++ as._2) ++ au._2) ++ aw._2) ++ ay._2) ++ aA._2) ++ aC._2), aE._1, aE._2, aE._3)
189183 }
190184 }
191185 else {
192- let aI = ad(V, ae, af, X, ag, ((((ao + aq) + at) + aw) + az))
193- let aF = aI._1
194- let P = aI._2
195- let aG = aI._3
196- let O = aI._4
197- $Tuple4((((((aF ++ an) ++ ar) ++ au) ++ ax) ++ aA), P, aG, O)
186+ let aF = am(ag, M, N, ah, an, aB)
187+ $Tuple4(((((([IntegerEntry(an, aB)] ++ as._2) ++ au._2) ++ aw._2) ++ ay._2) ++ aA._2), aF._1, aF._2, aF._3)
198188 }
199189 }
200190 else {
201- let aJ = ad(V, ae, af, X, ag, (((ao + aq) + at) + aw))
202- let aF = aJ._1
203- let P = aJ._2
204- let aG = aJ._3
205- let O = aJ._4
206- $Tuple4(((((aF ++ an) ++ ar) ++ au) ++ ax), P, aG, O)
191+ let aG = am(ag, M, N, ah, an, az)
192+ $Tuple4((((([IntegerEntry(an, az)] ++ as._2) ++ au._2) ++ aw._2) ++ ay._2), aG._1, aG._2, aG._3)
207193 }
208194 }
209195 else {
210- let aK = ad(V, ae, af, X, ag, ((ao + aq) + at))
211- let aF = aK._1
212- let P = aK._2
213- let aG = aK._3
214- let O = aK._4
215- $Tuple4((((aF ++ an) ++ ar) ++ au), P, aG, O)
196+ let aH = am(ag, M, N, ah, an, ax)
197+ $Tuple4(((([IntegerEntry(an, ax)] ++ as._2) ++ au._2) ++ aw._2), aH._1, aH._2, aH._3)
216198 }
217199 }
218200 else {
219- let aL = ad(V, ae, af, X, ag, (ao + aq))
220- let aF = aL._1
221- let P = aL._2
222- let aG = aL._3
223- let O = aL._4
224- $Tuple4(((aF ++ an) ++ ar), P, aG, O)
201+ let aI = am(ag, M, N, ah, an, av)
202+ $Tuple4((([IntegerEntry(an, av)] ++ as._2) ++ au._2), aI._1, aI._2, aI._3)
225203 }
226204 }
227205 else {
228- let aM = ad(V, ae, af, X, ag, ao)
229- let aF = aM._1
230- let P = aM._2
231- let aG = aM._3
232- let O = aM._4
233- $Tuple4((aF ++ an), P, aG, O)
206+ let aJ = am(ag, M, N, ah, an, at)
207+ $Tuple4(([IntegerEntry(an, at)] ++ as._2), aJ._1, aJ._2, aJ._3)
234208 }
235209 }
236- else if ((ai == 0))
237- then $Tuple4(nil, ae, 0, 0)
238- else $Tuple4([IntegerEntry(ag, aj)], ae, ai, 0)
210+ else if ((ap == 0))
211+ then $Tuple4(nil, M, 0, 0)
212+ else $Tuple4([IntegerEntry(an, aq)], M, ap, 0)
239213 }
240214
241215
242-func aN (V,B,W,X,aO) = {
243- let aa = invoke(this, "claimNextBatch", [V, B, W, X, aO], nil)
244- if ((aa == aa))
216+func aK (ag,D,K,ah,aL) = {
217+ let aj = invoke(this, "claimNextBatch", [ag, D, K, ah, aL], nil)
218+ if ((aj == aj))
245219 then {
246- let ab = aa
247- if ($isInstanceOf(ab, "(Int, Int)"))
220+ let ak = aj
221+ if ($isInstanceOf(ak, "(Int, Int)"))
248222 then {
249- let ac = ab
250- ac
223+ let al = ak
224+ al
251225 }
252226 else throw("Incorrect invoke result")
253227 }
255229 }
256230
257231
258-func aP (V,ae,ai,X,aQ) = {
259- let H = Address(V)
260- let af = f(w())
261- let aj = f(D(ae))
262- let I = f(A(ae))
263- let aR = G(H, I, ae, ai)
264- let aS = aR._1
265- let aT = aR._2
266- let aU = fraction(f(C(ae)), aS, aj)
267- if (if ((0 >= X))
232+func aM (ag,M,ap,ah,aN) = {
233+ let S = Address(ag)
234+ let N = f(y())
235+ let aq = f(F(M))
236+ let T = f(C(M))
237+ let aO = R(S, T, M, ap)
238+ let aP = aO._1
239+ let aQ = aO._2
240+ let aR = fraction(f(E(M)), aP, aq)
241+ if (if ((0 >= ah))
268242 then true
269- else ((ae + 1) >= af))
270- then $Tuple2((ae + 1), (aQ + aU))
271- else aN(V, (ae + 1), ai, (X - 1), (aQ + aU))
243+ else ((M + 1) >= N))
244+ then $Tuple2((M + 1), (aN + aR))
245+ else aK(ag, (M + 1), ap, (ah - 1), (aN + aR))
272246 }
273247
274248
275-func aV (S) = {
276- let aW = n()
277- let aX = R(aW[l], S)
278- let ae = f(x(aX))
279- if ((ae >= f(w())))
249+func aS (ad) = {
250+ let aT = o()
251+ let aU = ac(aT[l], ad)
252+ let M = f(z(aU))
253+ let N = f(y())
254+ if ((M >= N))
280255 then throw("Nothing to claim")
281256 else {
282- let V = fromBase58String(aW[l])
283- $Tuple3(aP(V, ae, aX, d, 0), aX, aW)
257+ let ag = fromBase58String(aT[l])
258+ let aV = aM(ag, M, aU, d, 0)
259+ let D = aV._1
260+ let L = aV._2
261+ $Tuple5(D, L, aU, aT, N)
284262 }
285263 }
286264
287265
288-@Callable(aY)
289-func processNextBatch (V,ae,ai,X,aj) = if ((aY.caller != this))
266+@Callable(O)
267+func processNextBatch (ag,M,ap,ah,aq) = if ((O.caller != this))
290268 then throw("Should be called by this script only")
291269 else {
292- let aZ = ah(V, ae, ai, X, aj)
293- $Tuple2(aZ._1, $Tuple3(aZ._2, aZ._3, aZ._4))
270+ let aW = ao(ag, M, ap, ah, aq)
271+ $Tuple2(aW._1, $Tuple3(aW._2, aW._3, aW._4))
294272 }
295273
296274
297275
298-@Callable(aY)
299-func processPendingPeriodsAndUsers (X) = if ((X > c))
300- then throw("Depth exceeds MAXDEPTH")
301- else {
302- let ae = f(w())
303- if ((ae > f(u())))
304- then throw("Nothing to process")
305- else {
306- let V = fromBase58String(n()[l])
307- let ai = f(t())
308- let aj = f(D(ae))
309- let ac = ah(V, ae, ai, X, aj)
310- ((ac._1 :+ IntegerEntry(w(), ac._2)) :+ IntegerEntry(t(), ac._3))
311- }
312- }
313-
314-
315-
316-@Callable(aY)
317-func deposit () = {
318- let aW = n()
319- let ba = value(value(aY.payments[0]).assetId)
320- if ((ba != fromBase58String(aW[j])))
321- then throw("Wrong payment asset")
276+@Callable(O)
277+func processPendingPeriodsAndUsers () = {
278+ let M = f(y())
279+ if ((M > f(w())))
280+ then throw("Nothing to process")
322281 else {
323- let B = T()
324-[IntegerEntry(u(), B), IntegerEntry(A(B), height), IntegerEntry(C(B), value(aY.payments[0]).amount), IntegerEntry(v(), (B + 1))]
282+ let aT = o()
283+ let ah = parseIntValue(aT[m])
284+ if ((ah > c))
285+ then throw("Depth exceeds MAXDEPTH")
286+ else {
287+ let ag = fromBase58String(aT[l])
288+ let ap = f(v())
289+ let aq = f(F(M))
290+ let al = ao(ag, M, ap, ah, aq)
291+ ((al._1 :+ IntegerEntry(y(), al._2)) :+ IntegerEntry(v(), al._3))
292+ }
325293 }
326294 }
327295
328296
329297
330-@Callable(aY)
331-func claimNextBatch (V,ae,ai,X,aj) = if ((aY.caller != this))
298+@Callable(O)
299+func deposit () = {
300+ let aT = o()
301+ if ((O.caller != Address(fromBase58String(aT[k]))))
302+ then throw("Wrong caller address")
303+ else {
304+ let aX = value(value(O.payments[0]).assetId)
305+ if ((aX != fromBase58String(aT[j])))
306+ then throw("Wrong payment asset")
307+ else {
308+ let D = ae()
309+[IntegerEntry(w(), D), IntegerEntry(C(D), height), IntegerEntry(E(D), value(O.payments[0]).amount), IntegerEntry(x(), (D + 1))]
310+ }
311+ }
312+ }
313+
314+
315+
316+@Callable(O)
317+func claimNextBatch (ag,M,ap,ah,aq) = if ((O.caller != this))
332318 then throw("Should be called by this script only")
333319 else {
334- let bb = aP(V, ae, ai, X, aj)
335- $Tuple2(nil, bb)
320+ let aY = aM(ag, M, ap, ah, aq)
321+ $Tuple2(nil, aY)
336322 }
337323
338324
339325
340-@Callable(aY)
326+@Callable(O)
341327 func claimReward () = {
342- let bc = toString(aY.caller)
343- let bd = aV(bc)
344- let ac = bd._1
345- let aX = bd._2
346- let aW = bd._3
347- $Tuple2([IntegerEntry(x(aX), ac._1), ScriptTransfer(aY.caller, ac._2, fromBase58String(aW[j]))], ac._2)
328+ let aZ = toString(O.caller)
329+ let ba = aS(aZ)
330+ let D = ba._1
331+ let L = ba._2
332+ let aU = ba._3
333+ let aT = ba._4
334+ let N = ba._5
335+ $Tuple2([IntegerEntry(z(aU), D), ScriptTransfer(O.caller, L, fromBase58String(aT[j])), I("claim", aZ, L, D, N, O)], L)
348336 }
349337
350338
351339
352-@Callable(aY)
353-func claimRewardREADONLY (S) = {
354- let bd = aV(S)
355- let ac = bd._1
356- let aX = bd._2
357- let aW = bd._3
358- $Tuple2(nil, ac._2)
340+@Callable(O)
341+func claimRewardREADONLY (aZ) = {
342+ let ba = aS(aZ)
343+ let L = ba._2
344+ $Tuple2(nil, L)
359345 }
360346
361347
362348
363-@Callable(aY)
364-func calcGwxParamsREADONLY (be,bf,bg) = {
365- let bh = (bf + bg)
366- let bi = -(fraction(be, e, bg))
367- let bj = (fraction(be, e, bg) * bh)
368- $Tuple2(nil, [bi, bj, T()])
349+@Callable(O)
350+func calcGwxParamsREADONLY (bb,bc,bd) = {
351+ let be = (bc + bd)
352+ let bf = -(fraction(bb, e, bd))
353+ let bg = (fraction(bb, e, bd) * be)
354+ $Tuple2(nil, [bf, bg, ae()])
369355 }
370356
371357
372358
373-@Callable(aY)
374-func constructor (p,q,r) = if ((this != aY.caller))
359+@Callable(O)
360+func constructor (q,r,s,t) = if ((this != O.caller))
375361 then throw("not authorized")
376- else [StringEntry(m(), o(p, q, r))]
362+ else [StringEntry(n(), p(q, r, s, t))]
377363
378364
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
12-let e = 1000000
12+let e = 1000
1313
1414 func f (g) = valueOrElse(getInteger(this, g), 0)
1515
1616
1717 func h (g) = valueOrElse(getString(this, g), "")
1818
1919
2020 func i (g) = valueOrErrorMessage(getString(g), (("mandatory this." + g) + " is not defined"))
2121
2222
2323 let j = 1
2424
2525 let k = 2
2626
2727 let l = 3
2828
29-func m () = "%s__config"
29+let m = 4
30+
31+func n () = "%s__config"
3032
3133
32-func n () = split(i(m()), b)
34+func o () = split(i(n()), b)
3335
3436
35-func o (p,q,r) = makeString(["%s%s%s", p, q, r], b)
37+func p (q,r,s,t) = makeString(["%s%s%s%d", q, r, s, toString(t)], b)
3638
3739
38-func s () = makeString(["%s", "nextUserNum"], b)
40+func u () = "%s__nextUserNum"
3941
4042
41-func t () = makeString(["%s", "nextProcessedUser"], b)
43+func v () = "%s__nextProcessedUser"
4244
4345
44-func u () = makeString(["%s", "latestPeriod"], b)
46+func w () = "%s__latestPeriod"
4547
4648
47-func v () = makeString(["%s", "nextPeriod"], b)
49+func x () = "%s__nextPeriod"
4850
4951
50-func w () = makeString(["%s", "nextProcessedPeriod"], b)
52+func y () = "%s__nextProcessedPeriod"
5153
5254
53-func x (y) = makeString(["%s%d", "nextClaimedPeriod", toString(y)], b)
55+func z (A) = makeString(["%s%d__nextClaimedPeriod", toString(A)], b)
5456
5557
56-func z (y) = makeString(["%s%d", "lastProcessedPeriod", toString(y)], b)
58+func B (A) = makeString(["%s%d__lastProcessedPeriod", toString(A)], b)
5759
5860
59-func A (B) = makeString(["%s%d", "startHeightForPeriod", toString(B)], b)
61+func C (D) = makeString(["%s%d__startHeightForPeriod", toString(D)], b)
6062
6163
62-func C (B) = makeString(["%s%d", "totalAmountForPeriod", toString(B)], b)
64+func E (D) = makeString(["%s%d__totalAmountForPeriod", toString(D)], b)
6365
6466
65-func D (B) = makeString(["%s%d", "totalWeightForPeriod", toString(B)], b)
67+func F (D) = makeString(["%s%d__totalWeightForPeriod", toString(D)], b)
6668
6769
68-func E (B,y) = makeString(["%s%d%s%d", "paramByPeriod", toString(y), "k", toString(B)], b)
70+func G (D,A) = makeString(["%s%d%s%d__paramByPeriod", toString(A), "k", toString(D)], b)
6971
7072
71-func F (B,y) = makeString(["%s%d%s%d", "paramByPeriod", toString(y), "b", toString(B)], b)
73+func H (D,A) = makeString(["%s%d%s%d__paramByPeriod", toString(A), "b", toString(D)], b)
7274
7375
74-func G (H,I,B,y) = {
75- let J = z(y)
76- let K = E(B, y)
77- let L = getInteger(H, K)
78- if (isDefined(L))
76+func I (J,K,L,M,N,O) = {
77+ let P = makeString(["%s%s%s%s__history", J, K, toBase58String(O.transactionId)], b)
78+ let Q = makeString(["%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(L), toString(M), toString(N)], b)
79+ StringEntry(P, Q)
80+ }
81+
82+
83+func R (S,T,D,A) = {
84+ let U = B(A)
85+ let V = G(D, A)
86+ let W = getInteger(S, V)
87+ if (isDefined(W))
7988 then {
80- let M = value(L)
81- let N = value(getInteger(H, F(B, y)))
82- let O = ((M * I) + N)
83- if ((O > 0))
84- then $Tuple2((O / e), [IntegerEntry(J, B)])
89+ let X = value(W)
90+ let Y = value(getInteger(S, H(D, A)))
91+ let Z = ((X * T) + Y)
92+ if ((Z > 0))
93+ then $Tuple2((Z / e), [IntegerEntry(U, D)])
8594 else $Tuple2(0, nil)
8695 }
8796 else {
88- let P = getInteger(this, J)
89- if (isDefined(P))
97+ let aa = getInteger(this, U)
98+ if (isDefined(aa))
9099 then {
91- let Q = value(P)
92- let M = value(getInteger(H, E(Q, y)))
93- let N = value(getInteger(H, F(Q, y)))
94- let O = ((M * I) + N)
95- if ((O > 0))
96- then $Tuple2((O / e), nil)
100+ let ab = value(aa)
101+ let X = value(getInteger(S, G(ab, A)))
102+ let Y = value(getInteger(S, H(ab, A)))
103+ let Z = ((X * T) + Y)
104+ if ((Z > 0))
105+ then $Tuple2((Z / e), nil)
97106 else $Tuple2(0, nil)
98107 }
99108 else $Tuple2(0, nil)
100109 }
101110 }
102111
103112
104-func R (r,S) = {
105- let g = makeString(["%s%s%s", "mapping", "user2num", S], b)
106- parseIntValue(valueOrErrorMessage(getString(Address(fromBase58String(r)), g), ((("User address " + S) + " is not found in boosting contract data, key=") + g)))
113+func ac (s,ad) = {
114+ let g = makeString(["%s%s%s", "mapping", "user2num", ad], b)
115+ parseIntValue(valueOrErrorMessage(getString(Address(fromBase58String(s)), g), ((("User address " + ad) + " is not found in boosting contract data, key=") + g)))
107116 }
108117
109118
110-func T () = f(v())
119+func ae () = f(x())
111120
112121
113-func U (V,B,W,X,Y,Z) = {
114- let aa = invoke(this, "processNextBatch", [V, B, W, X, Y], nil)
115- if ((aa == aa))
122+func af (ag,D,K,ah,ai) = {
123+ let aj = invoke(this, "processNextBatch", [ag, D, K, ah, ai], nil)
124+ if ((aj == aj))
116125 then {
117- let ab = aa
118- if ($isInstanceOf(ab, "(Int, Int, Int)"))
126+ let ak = aj
127+ if ($isInstanceOf(ak, "(Int, Int, Int)"))
119128 then {
120- let ac = ab
121- $Tuple4(Z, ac._1, ac._2, ac._3)
129+ let al = ak
130+ al
122131 }
123132 else throw("Incorrect invoke result")
124133 }
125134 else throw("Strict value is not equal to itself.")
126135 }
127136
128137
129-func ad (V,ae,af,X,ag,Y) = if ((af >= (ae + 1)))
130- then U(V, (ae + 1), 0, (X - 1), 0, [IntegerEntry(ag, Y)])
131- else $Tuple4([IntegerEntry(ag, Y)], (ae + 1), 0, 0)
138+func am (ag,M,N,ah,an,ai) = if ((N >= (M + 1)))
139+ then af(ag, (M + 1), 0, (ah - 1), 0)
140+ else $Tuple3((M + 1), 0, 0)
132141
133142
134-func ah (V,ae,ai,X,aj) = {
135- let H = Address(V)
136- let af = f(u())
137- let ak = valueOrElse(getInteger(H, s()), 0)
138- let ag = D(ae)
139- let I = f(A(ae))
140- if (if ((X > 0))
141- then (af >= ae)
143+func ao (ag,M,ap,ah,aq) = {
144+ let S = Address(ag)
145+ let N = f(w())
146+ let ar = valueOrElse(getInteger(S, u()), 0)
147+ let an = F(M)
148+ let T = f(C(M))
149+ if (if ((ah > 0))
150+ then (N >= M)
142151 else false)
143152 then {
144- let al = G(H, I, ae, ai)
145- let am = al._1
146- let an = al._2
147- let ao = (aj + am)
148- if ((ak > (ai + 1)))
153+ let as = R(S, T, M, ap)
154+ let at = (aq + as._1)
155+ if ((ar > (ap + 1)))
149156 then {
150- let ap = G(H, I, ae, (ai + 1))
151- let aq = ap._1
152- let ar = ap._2
153- if ((ak > (ai + 2)))
157+ let au = R(S, T, M, (ap + 1))
158+ let av = (at + au._1)
159+ if ((ar > (ap + 2)))
154160 then {
155- let as = G(H, I, ae, (ai + 2))
156- let at = as._1
157- let au = as._2
158- if ((ak > (ai + 3)))
161+ let aw = R(S, T, M, (ap + 2))
162+ let ax = (av + aw._1)
163+ if ((ar > (ap + 3)))
159164 then {
160- let av = G(H, I, ae, (ai + 3))
161- let aw = av._1
162- let ax = av._2
163- if ((ak > (ai + 4)))
165+ let ay = R(S, T, M, (ap + 3))
166+ let az = (ax + ay._1)
167+ if ((ar > (ap + 4)))
164168 then {
165- let ay = G(H, I, ae, (ai + 4))
166- let az = ay._1
167- let aA = ay._2
168- if ((ak > (ai + 5)))
169+ let aA = R(S, T, M, (ap + 4))
170+ let aB = (az + aA._1)
171+ if ((ar > (ap + 5)))
169172 then {
170- let aB = G(H, I, ae, (ai + 5))
171- let aC = aB._1
172- let aD = aB._2
173- if ((ak > (ai + 6)))
173+ let aC = R(S, T, M, (ap + 5))
174+ let aD = (aB + aC._1)
175+ if ((ar > (ap + 6)))
174176 then {
175- let aE = U(V, ae, (ai + 6), (X - 1), (((((ao + aq) + at) + aw) + az) + aC), nil)
176- let aF = aE._1
177- let P = aE._2
178- let aG = aE._3
179- let O = aE._4
180- $Tuple4(((((((aF ++ an) ++ ar) ++ au) ++ ax) ++ aA) ++ aD), P, aG, O)
177+ let aE = af(ag, M, (ap + 6), (ah - 1), aD)
178+ $Tuple4((((((as._2 ++ au._2) ++ aw._2) ++ ay._2) ++ aA._2) ++ aC._2), aE._1, aE._2, aE._3)
181179 }
182180 else {
183- let aH = ad(V, ae, af, X, ag, (((((ao + aq) + at) + aw) + az) + aC))
184- let aF = aH._1
185- let P = aH._2
186- let aG = aH._3
187- let O = aH._4
188- $Tuple4(((((((aF ++ an) ++ ar) ++ au) ++ ax) ++ aA) ++ aD), P, aG, O)
181+ let aE = am(ag, M, N, ah, an, aD)
182+ $Tuple4((((((([IntegerEntry(an, aD)] ++ as._2) ++ au._2) ++ aw._2) ++ ay._2) ++ aA._2) ++ aC._2), aE._1, aE._2, aE._3)
189183 }
190184 }
191185 else {
192- let aI = ad(V, ae, af, X, ag, ((((ao + aq) + at) + aw) + az))
193- let aF = aI._1
194- let P = aI._2
195- let aG = aI._3
196- let O = aI._4
197- $Tuple4((((((aF ++ an) ++ ar) ++ au) ++ ax) ++ aA), P, aG, O)
186+ let aF = am(ag, M, N, ah, an, aB)
187+ $Tuple4(((((([IntegerEntry(an, aB)] ++ as._2) ++ au._2) ++ aw._2) ++ ay._2) ++ aA._2), aF._1, aF._2, aF._3)
198188 }
199189 }
200190 else {
201- let aJ = ad(V, ae, af, X, ag, (((ao + aq) + at) + aw))
202- let aF = aJ._1
203- let P = aJ._2
204- let aG = aJ._3
205- let O = aJ._4
206- $Tuple4(((((aF ++ an) ++ ar) ++ au) ++ ax), P, aG, O)
191+ let aG = am(ag, M, N, ah, an, az)
192+ $Tuple4((((([IntegerEntry(an, az)] ++ as._2) ++ au._2) ++ aw._2) ++ ay._2), aG._1, aG._2, aG._3)
207193 }
208194 }
209195 else {
210- let aK = ad(V, ae, af, X, ag, ((ao + aq) + at))
211- let aF = aK._1
212- let P = aK._2
213- let aG = aK._3
214- let O = aK._4
215- $Tuple4((((aF ++ an) ++ ar) ++ au), P, aG, O)
196+ let aH = am(ag, M, N, ah, an, ax)
197+ $Tuple4(((([IntegerEntry(an, ax)] ++ as._2) ++ au._2) ++ aw._2), aH._1, aH._2, aH._3)
216198 }
217199 }
218200 else {
219- let aL = ad(V, ae, af, X, ag, (ao + aq))
220- let aF = aL._1
221- let P = aL._2
222- let aG = aL._3
223- let O = aL._4
224- $Tuple4(((aF ++ an) ++ ar), P, aG, O)
201+ let aI = am(ag, M, N, ah, an, av)
202+ $Tuple4((([IntegerEntry(an, av)] ++ as._2) ++ au._2), aI._1, aI._2, aI._3)
225203 }
226204 }
227205 else {
228- let aM = ad(V, ae, af, X, ag, ao)
229- let aF = aM._1
230- let P = aM._2
231- let aG = aM._3
232- let O = aM._4
233- $Tuple4((aF ++ an), P, aG, O)
206+ let aJ = am(ag, M, N, ah, an, at)
207+ $Tuple4(([IntegerEntry(an, at)] ++ as._2), aJ._1, aJ._2, aJ._3)
234208 }
235209 }
236- else if ((ai == 0))
237- then $Tuple4(nil, ae, 0, 0)
238- else $Tuple4([IntegerEntry(ag, aj)], ae, ai, 0)
210+ else if ((ap == 0))
211+ then $Tuple4(nil, M, 0, 0)
212+ else $Tuple4([IntegerEntry(an, aq)], M, ap, 0)
239213 }
240214
241215
242-func aN (V,B,W,X,aO) = {
243- let aa = invoke(this, "claimNextBatch", [V, B, W, X, aO], nil)
244- if ((aa == aa))
216+func aK (ag,D,K,ah,aL) = {
217+ let aj = invoke(this, "claimNextBatch", [ag, D, K, ah, aL], nil)
218+ if ((aj == aj))
245219 then {
246- let ab = aa
247- if ($isInstanceOf(ab, "(Int, Int)"))
220+ let ak = aj
221+ if ($isInstanceOf(ak, "(Int, Int)"))
248222 then {
249- let ac = ab
250- ac
223+ let al = ak
224+ al
251225 }
252226 else throw("Incorrect invoke result")
253227 }
254228 else throw("Strict value is not equal to itself.")
255229 }
256230
257231
258-func aP (V,ae,ai,X,aQ) = {
259- let H = Address(V)
260- let af = f(w())
261- let aj = f(D(ae))
262- let I = f(A(ae))
263- let aR = G(H, I, ae, ai)
264- let aS = aR._1
265- let aT = aR._2
266- let aU = fraction(f(C(ae)), aS, aj)
267- if (if ((0 >= X))
232+func aM (ag,M,ap,ah,aN) = {
233+ let S = Address(ag)
234+ let N = f(y())
235+ let aq = f(F(M))
236+ let T = f(C(M))
237+ let aO = R(S, T, M, ap)
238+ let aP = aO._1
239+ let aQ = aO._2
240+ let aR = fraction(f(E(M)), aP, aq)
241+ if (if ((0 >= ah))
268242 then true
269- else ((ae + 1) >= af))
270- then $Tuple2((ae + 1), (aQ + aU))
271- else aN(V, (ae + 1), ai, (X - 1), (aQ + aU))
243+ else ((M + 1) >= N))
244+ then $Tuple2((M + 1), (aN + aR))
245+ else aK(ag, (M + 1), ap, (ah - 1), (aN + aR))
272246 }
273247
274248
275-func aV (S) = {
276- let aW = n()
277- let aX = R(aW[l], S)
278- let ae = f(x(aX))
279- if ((ae >= f(w())))
249+func aS (ad) = {
250+ let aT = o()
251+ let aU = ac(aT[l], ad)
252+ let M = f(z(aU))
253+ let N = f(y())
254+ if ((M >= N))
280255 then throw("Nothing to claim")
281256 else {
282- let V = fromBase58String(aW[l])
283- $Tuple3(aP(V, ae, aX, d, 0), aX, aW)
257+ let ag = fromBase58String(aT[l])
258+ let aV = aM(ag, M, aU, d, 0)
259+ let D = aV._1
260+ let L = aV._2
261+ $Tuple5(D, L, aU, aT, N)
284262 }
285263 }
286264
287265
288-@Callable(aY)
289-func processNextBatch (V,ae,ai,X,aj) = if ((aY.caller != this))
266+@Callable(O)
267+func processNextBatch (ag,M,ap,ah,aq) = if ((O.caller != this))
290268 then throw("Should be called by this script only")
291269 else {
292- let aZ = ah(V, ae, ai, X, aj)
293- $Tuple2(aZ._1, $Tuple3(aZ._2, aZ._3, aZ._4))
270+ let aW = ao(ag, M, ap, ah, aq)
271+ $Tuple2(aW._1, $Tuple3(aW._2, aW._3, aW._4))
294272 }
295273
296274
297275
298-@Callable(aY)
299-func processPendingPeriodsAndUsers (X) = if ((X > c))
300- then throw("Depth exceeds MAXDEPTH")
301- else {
302- let ae = f(w())
303- if ((ae > f(u())))
304- then throw("Nothing to process")
305- else {
306- let V = fromBase58String(n()[l])
307- let ai = f(t())
308- let aj = f(D(ae))
309- let ac = ah(V, ae, ai, X, aj)
310- ((ac._1 :+ IntegerEntry(w(), ac._2)) :+ IntegerEntry(t(), ac._3))
311- }
312- }
313-
314-
315-
316-@Callable(aY)
317-func deposit () = {
318- let aW = n()
319- let ba = value(value(aY.payments[0]).assetId)
320- if ((ba != fromBase58String(aW[j])))
321- then throw("Wrong payment asset")
276+@Callable(O)
277+func processPendingPeriodsAndUsers () = {
278+ let M = f(y())
279+ if ((M > f(w())))
280+ then throw("Nothing to process")
322281 else {
323- let B = T()
324-[IntegerEntry(u(), B), IntegerEntry(A(B), height), IntegerEntry(C(B), value(aY.payments[0]).amount), IntegerEntry(v(), (B + 1))]
282+ let aT = o()
283+ let ah = parseIntValue(aT[m])
284+ if ((ah > c))
285+ then throw("Depth exceeds MAXDEPTH")
286+ else {
287+ let ag = fromBase58String(aT[l])
288+ let ap = f(v())
289+ let aq = f(F(M))
290+ let al = ao(ag, M, ap, ah, aq)
291+ ((al._1 :+ IntegerEntry(y(), al._2)) :+ IntegerEntry(v(), al._3))
292+ }
325293 }
326294 }
327295
328296
329297
330-@Callable(aY)
331-func claimNextBatch (V,ae,ai,X,aj) = if ((aY.caller != this))
298+@Callable(O)
299+func deposit () = {
300+ let aT = o()
301+ if ((O.caller != Address(fromBase58String(aT[k]))))
302+ then throw("Wrong caller address")
303+ else {
304+ let aX = value(value(O.payments[0]).assetId)
305+ if ((aX != fromBase58String(aT[j])))
306+ then throw("Wrong payment asset")
307+ else {
308+ let D = ae()
309+[IntegerEntry(w(), D), IntegerEntry(C(D), height), IntegerEntry(E(D), value(O.payments[0]).amount), IntegerEntry(x(), (D + 1))]
310+ }
311+ }
312+ }
313+
314+
315+
316+@Callable(O)
317+func claimNextBatch (ag,M,ap,ah,aq) = if ((O.caller != this))
332318 then throw("Should be called by this script only")
333319 else {
334- let bb = aP(V, ae, ai, X, aj)
335- $Tuple2(nil, bb)
320+ let aY = aM(ag, M, ap, ah, aq)
321+ $Tuple2(nil, aY)
336322 }
337323
338324
339325
340-@Callable(aY)
326+@Callable(O)
341327 func claimReward () = {
342- let bc = toString(aY.caller)
343- let bd = aV(bc)
344- let ac = bd._1
345- let aX = bd._2
346- let aW = bd._3
347- $Tuple2([IntegerEntry(x(aX), ac._1), ScriptTransfer(aY.caller, ac._2, fromBase58String(aW[j]))], ac._2)
328+ let aZ = toString(O.caller)
329+ let ba = aS(aZ)
330+ let D = ba._1
331+ let L = ba._2
332+ let aU = ba._3
333+ let aT = ba._4
334+ let N = ba._5
335+ $Tuple2([IntegerEntry(z(aU), D), ScriptTransfer(O.caller, L, fromBase58String(aT[j])), I("claim", aZ, L, D, N, O)], L)
348336 }
349337
350338
351339
352-@Callable(aY)
353-func claimRewardREADONLY (S) = {
354- let bd = aV(S)
355- let ac = bd._1
356- let aX = bd._2
357- let aW = bd._3
358- $Tuple2(nil, ac._2)
340+@Callable(O)
341+func claimRewardREADONLY (aZ) = {
342+ let ba = aS(aZ)
343+ let L = ba._2
344+ $Tuple2(nil, L)
359345 }
360346
361347
362348
363-@Callable(aY)
364-func calcGwxParamsREADONLY (be,bf,bg) = {
365- let bh = (bf + bg)
366- let bi = -(fraction(be, e, bg))
367- let bj = (fraction(be, e, bg) * bh)
368- $Tuple2(nil, [bi, bj, T()])
349+@Callable(O)
350+func calcGwxParamsREADONLY (bb,bc,bd) = {
351+ let be = (bc + bd)
352+ let bf = -(fraction(bb, e, bd))
353+ let bg = (fraction(bb, e, bd) * be)
354+ $Tuple2(nil, [bf, bg, ae()])
369355 }
370356
371357
372358
373-@Callable(aY)
374-func constructor (p,q,r) = if ((this != aY.caller))
359+@Callable(O)
360+func constructor (q,r,s,t) = if ((this != O.caller))
375361 then throw("not authorized")
376- else [StringEntry(m(), o(p, q, r))]
362+ else [StringEntry(n(), p(q, r, s, t))]
377363
378364

github/deemru/w8io/873ac7e 
99.07 ms