tx · D2pxJxcYEhJxxbt4AsasHmgTGpcAJvxVodqyJx2TZXBD

3Mp5kisFrqESzrXxAMEPk2k69zpeF41czEE:  -0.01600000 Waves

2023.09.07 12:25 [2744785] smart account 3Mp5kisFrqESzrXxAMEPk2k69zpeF41czEE > SELF 0.00000000 Waves

{ "type": 13, "id": "D2pxJxcYEhJxxbt4AsasHmgTGpcAJvxVodqyJx2TZXBD", "fee": 1600000, "feeAssetId": null, "timestamp": 1694078812478, "version": 2, "chainId": 84, "sender": "3Mp5kisFrqESzrXxAMEPk2k69zpeF41czEE", "senderPublicKey": "G349Uq3FTox7dRNLeAfAQeoACvwZ9iEnVSaHcEYn6j8J", "proofs": [ "3uxQKyizDEDPg1X3FktAVJ16dNAjZUTMbAYSF8RuokES6exmNpmUo1EXoniJ4HGYL8YmTSChEnAZzK1QSvPct6HF" ], "script": "base64:BgLZFggCEgQKAgIBEgYKBAEYEQESBAoCCAESABIAEgMKAQgSABIECgIYERIAEgMKAQgSAwoBBCIDU0VQIgVTQ0FMRSIFTVVMVDgiB01VTFQ4QkkiCnplcm9CaWdJbnQiFHByb2Nlc3NpbmdTdGFnZVRvdGFsIhVwcm9jZXNzaW5nU3RhZ2VTaGFyZXMiBk1VTFQxOCIITVVMVDE4QkkiC3dhdmVzU3RyaW5nIgd3cmFwRXJyIgNtc2ciCHRocm93RXJyIg5nZXROdW1iZXJCeUtleSIDa2V5Ig9nZXROdW1iZXJPckZhaWwiDmdldFN0cmluZ0J5S2V5Ig9nZXRTdHJpbmdPckZhaWwiDHBhcnNlQXNzZXRJZCIFaW5wdXQiA2FicyIDdmFsIglhYnNCaWdJbnQiC2tleU1heERlcHRoIg9tYXhEZXB0aERlZmF1bHQiCG1heERlcHRoIhFrZXlGYWN0b3J5QWRkcmVzcyIRZmFjdG9yeUFkZHJlc3NTdHIiD2ZhY3RvcnlDb250cmFjdCISa2V5RW1pc3Npb25BZGRyZXNzIhlrZXlWb3RpbmdFbWlzc2lvbkNvbnRyYWN0IhZ2b3RpbmdFbWlzc2lvbkNvbnRyYWN0IhNrZXlOdW1Ub1VzZXJNYXBwaW5nIgNudW0iFmtleVJlZmVycmFsUHJvZ3JhbU5hbWUiGnJlZmVycmFsUHJvZ3JhbU5hbWVEZWZhdWx0IhNyZWZlcnJhbFByb2dyYW1OYW1lIhdrZXlSZWZlcnJhbE1pbkdXeEFtb3VudCIbcmVmZXJyYWxNaW5HV3hBbW91bnREZWZhdWx0IhRyZWZlcnJhbE1pbkdXeEFtb3VudCIZa2V5UmVmZXJyZXJSZXdhcmRQZXJtaWxsZSIdcmVmZXJyZXJSZXdhcmRQZXJtaWxsZURlZmF1bHQiFnJlZmVycmVyUmV3YXJkUGVybWlsbGUiGWtleVJlZmVycmFsUmV3YXJkUGVybWlsbGUiHXJlZmVycmFsUmV3YXJkUGVybWlsbGVEZWZhdWx0IhZyZWZlcnJhbFJld2FyZFBlcm1pbGxlIgtrZXlSZWZlcnJlciIPcmVmZXJyYWxBZGRyZXNzIhRrZXlVbmNsYWltZWRSZWZlcnJhbCILcHJvZ3JhbU5hbWUiDmNsYWltZXJBZGRyZXNzIhJlbWlzc2lvbkFkZHJlc3NTdHIiEGVtaXNzaW9uQ29udHJhY3QiDUlkeENmZ0Fzc2V0SWQiFklkeENmZ1BhY2VtYWtlckFkZHJlc3MiFklkeENmZ0Jvb3N0aW5nQ29udHJhY3QiDklkeENmZ01heERlcHRoIglrZXlDb25maWciEmdldEVtaXNzaW9uQWRkcmVzcyIPZW1pc3Npb25BZGRyZXNzIgx3eEFzc2V0SWRTdHIiCXd4QXNzZXRJZCIVcmVhZENvbmZpZ0FycmF5T3JGYWlsIgxmb3JtYXRDb25maWciGm1hdGNoZXJQYWNlbWFrZXJBZGRyZXNzU3RyIhpib29zdGluZ0NvbnRyYWN0QWRkcmVzc1N0ciIWYm9vc3RpbmdDb250cmFjdE9yRmFpbCIIY2ZnQXJyYXkiDWtleVN1c3BlbnNpb24iC2lzU3VzcGVuZGVkIhB0aHJvd0lmU3VzcGVuZGVkIh9rZXlHd3hSZXdhcmRFbWlzc2lvblN0YXJ0SGVpZ2h0Ig1rZXlVc2Vyc0NvdW50IhJrZXlVc2VyMk51bU1hcHBpbmciC3VzZXJBZGRyZXNzIhZrZXlSYXRlUGVyQmxvY2tDdXJyZW50IhprZXlHd3hIb2xkZXJzUmV3YXJkQ3VycmVudCIXa2V5R3d4SG9sZGVyc1Jld2FyZE5leHQiFGtleVBvb2xXZWlnaHRWaXJ0dWFsIhBrZXlVc2VyVW5jbGFpbWVkIgl1c2VySW5kZXgiG2tleVJlZmVycmFsc0NvbnRyYWN0QWRkcmVzcyIecmVmZXJyYWxzQ29udHJhY3RBZGRyZXNzT3JGYWlsIhdrZXlUcmFkaW5nUmV3YXJkSGlzdG9yeSIEdXNlciIBaSIQa2V5VHJhZGluZ1Jld2FyZCIQa2V5TWF4UmVjaXBpZW50cyIMSGlzdG9yeUVudHJ5IgR0eXBlIgZhbW91bnQiCmhpc3RvcnlLRVkiC2hpc3RvcnlEQVRBIhNrZXlNYW5hZ2VyUHVibGljS2V5IhZrZXlNYW5hZ2VyVmF1bHRBZGRyZXNzIhxnZXRNYW5hZ2VyVmF1bHRBZGRyZXNzT3JUaGlzIgckbWF0Y2gwIgFzIhZtYW5hZ2VyUHVibGljS2V5T3JVbml0IhNtYW5hZ2VyVmF1bHRBZGRyZXNzIgttdXN0TWFuYWdlciICcGQiAnBrIhVnZXRVc2VySW5kZXhCeUFkZHJlc3MiEGdldFRyYWRpbmdSZXdhcmQiF2tleVJld2FyZFBlckd3eEludGVncmFsIhdnZXRHd3hBbW91bnRUb3RhbE9wdGlvbiILa2V5R3d4VG90YWwiG2dldFVzZXJHd3hBbW91bnRUb3RhbE9wdGlvbiIVa2V5VXNlckd3eEFtb3VudFRvdGFsIhxfcmVmcmVzaFJld2FyZFBlckd3eEludGVncmFsIhxyZXdhcmRQZXJHd3hJbnRlZ3JhbFByZXZpb3VzIh5yZXdhcmRQZXJHd3hJbnRlZ3JhbExhc3RIZWlnaHQiDGVtaXNzaW9uUmF0ZSIXZ3d4SG9sZGVyc1Jld2FyZEN1cnJlbnQiDmd3eEFtb3VudFRvdGFsIgJkaCIQZ3d4QW1vdW50VG90YWxCSSIUcmV3YXJkUGVyR3d4SW50ZWdyYWwiH2tleVJld2FyZFBlckd3eEludGVncmFsVXNlckxhc3QiEl9yZWZyZXNoVXNlclJld2FyZCIHdXNlck51bSINJHQwMTAyOTIxMDM4MCIbcmV3YXJkUGVyR3d4SW50ZWdyYWxBY3Rpb25zIhxyZXdhcmRQZXJHd3hJbnRlZ3JhbFVzZXJMYXN0Ig11c2VySWR4T3B0aW9uIg11c2VyVW5jbGFpbWVkIg11c2VyR3d4QW1vdW50Igp1c2VyUmV3YXJkIhFjb21tb25DbGFpbVJld2FyZCIOdXNlckFkZHJlc3NTdHIiDSR0MDExNjcxMTE3MzUiB2FjdGlvbnMiBnJld2FyZCIQdXNlckFkZHJlc3NCeXRlcyIPc3VzcGVuc2lvbkNoZWNrIgtjaGVja0NhbGxlciINJHQwMTIwNjExMjEzOSIVcGF5bWVudEFtb3VudExlZnRPdmVyIg11c2VyQWRkcmVzc2VzIgdyZXdhcmRzIgtjdXJyZW50SXRlciIGY2hlY2tzIhN0cmFkZVJld2FyZEludGVybmFsIhd0cmFkaW5nUmV3YXJkSGlzdG9yeUtleSIOZ1d4QW1vdW50U3RhcnQiCHJlZmVycmVyIhFhY3RpdmVSZWZlcnJhbEludiINJHQwMTQwMDkxNDA2NiILY2hlY2tBbW91bnQiAUAiC3JlZmVycmFsSW52Ig5yZWZlcnJlclJld2FyZCIOcmVmZXJyYWxSZXdhcmQiBGVtaXQiD2NsYWltZWRSZWZlcnJhbCILdG90YWxBbW91bnQiB2FkZHJlc3MiDSR0MDE1NDIzMTU0NzMiEXJlZmVycmFsVW5jbGFpbWVkIg5hcmdzQ29tcGFyaXNvbiINbWF4UmVjaXBpZW50cyIHcGF5bWVudCIOcGF5bWVudEFzc2V0SWQiDXBheW1lbnRBbW91bnQiEXVzZXJBZGRyZXNzU3RyaW5nIgF2IgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXlYAAFhAgJfXwABYgDoBwABYwCAwtcvAAFkCQC2AgEFAWMAAWUJALYCAQAAAAFmAAAAAWcAAQABaACAgJC7utat8A0AAWkJALYCAQUBaAABagIFV0FWRVMBAWsBAWwJALkJAgkAzAgCAhBnd3hfcmV3YXJkLnJpZGU6CQDMCAIFAWwFA25pbAIBIAEBbQEBbAkAAgEJAQFrAQUBbAEBbgEBbwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFvAAABAXABAW8JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzBQFvCQEBawEJAKwCAgkArAICAg9tYW5kYXRvcnkgdGhpcy4FAW8CDyBpcyBub3QgZGVmaW5lZAEBcQEBbwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQFvAgABAXIBAW8JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQFvCQEBawEJAKwCAgkArAICAg9tYW5kYXRvcnkgdGhpcy4FAW8CDyBpcyBub3QgZGVmaW5lZAEBcwEBdAMJAAACBQF0BQFqBQR1bml0CQDZBAEFAXQBAXUBAXYDCQBmAgAABQF2CQEBLQEFAXYFAXYBAXcBAXYDCQC/AgIFAWUFAXYJAL4CAQUBdgUBdgABeAIMJXNfX21heERlcHRoAAF5AB4AAXoJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUBeAUBeQEBQQACHCVzJXNfX2NvbmZpZ19fZmFjdG9yeUFkZHJlc3MAAUIJAQFyAQkBAUEAAAFDCQERQGV4dHJOYXRpdmUoMTA2MikBBQFCAQFEAAIdJXMlc19fY29uZmlnX19lbWlzc2lvbkFkZHJlc3MBAUUACQC5CQIJAMwIAgICJXMJAMwIAgIWdm90aW5nRW1pc3Npb25Db250cmFjdAUDbmlsBQFhAAFGCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQFDCQEBRQABAUcBAUgJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIHbWFwcGluZwkAzAgCAghudW0ydXNlcgkAzAgCCQCkAwEFAUgFA25pbAUBYQABSQkAuQkCCQDMCAICBCVzJXMJAMwIAgIIcmVmZXJyYWwJAMwIAgILcHJvZ3JhbU5hbWUFA25pbAUBYQABSgIGd3hsb2NrAAFLCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAUkFAUoAAUwJALkJAgkAzAgCAgQlcyVzCQDMCAICCHJlZmVycmFsCQDMCAICDG1pbkdXeEFtb3VudAUDbmlsBQFhAAFNCQBoAgD0AwUBYwABTgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFMBQFNAAFPCQC5CQIJAMwIAgIEJXMlcwkAzAgCAghyZWZlcnJhbAkAzAgCAhZyZWZlcnJlclJld2FyZFBlcm1pbGxlBQNuaWwFAWEAAVAAMgABUQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFPBQFQAAFSCQC5CQIJAMwIAgIEJXMlcwkAzAgCAghyZWZlcnJhbAkAzAgCAhZyZWZlcnJhbFJld2FyZFBlcm1pbGxlBQNuaWwFAWEAAVMAMgABVAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFSBQFTAQFVAQFWCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICCHJlZmVycmVyCQDMCAIFAUsJAMwIAgUBVgUDbmlsBQFhAQFXAgFYAVkJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIRdW5jbGFpbWVkUmVmZXJyYWwJAMwIAgUBWAkAzAgCBQFZBQNuaWwFAWEAAVoJAQFyAQkBAUQAAAJhYQkBEUBleHRyTmF0aXZlKDEwNjIpAQUBWgACYWIAAQACYWMAAgACYWQAAwACYWUABAECYWYAAgolc19fY29uZmlnAQJhZwAJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQEBRAAJAKwCAgkArAICAg9tYW5kYXRvcnkgdGhpcy4JAQFEAAIPIGlzIG5vdCBkZWZpbmVkAAJhaAkBAmFnAAACYWkJAJEDAgkAtQkCCQEFdmFsdWUBCQCdCAIFAmFoCQECYWYABQFhAAEAAmFqCQDZBAEFAmFpAQJhawAJALUJAgkBAXIBCQECYWYABQFhAQJhbAQCYWkCYW0CYW4BegkAuQkCCQDMCAICCCVzJXMlcyVkCQDMCAIFAmFpCQDMCAIFAmFtCQDMCAIFAmFuCQDMCAIJAKQDAQUBegUDbmlsBQFhAQJhbwAEAmFwCQECYWsACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJhcAUCYWQCKGJvb3N0aW5nIGNvbnRyYWN0IGFkZHJlc3MgaXMgbm90IGRlZmluZWQAAmFxAg4lc19fc3VzcGVuc2lvbgACYXIJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUCYXEHAQJhcwADCQEBIQEFAmFyBgkBAW0BAglzdXNwZW5kZWQBAmF0AAIoJXMlc19fZ3d4UmV3YXJkRW1pc3Npb25QYXJ0X19zdGFydEhlaWdodAECYXUAAg8lc19fbmV4dFVzZXJOdW0BAmF2AQJhdwkAuQkCCQDMCAICGSVzJXMlc19fbWFwcGluZ19fdXNlcjJudW0JAMwIAgkApQgBBQJhdwUDbmlsBQFhAQJheAACGyVzJXNfX3JhdGVQZXJCbG9ja19fY3VycmVudAECYXkAAh8lcyVzX19nd3hIb2xkZXJzUmV3YXJkX19jdXJyZW50AQJhegACHCVzJXNfX2d3eEhvbGRlcnNSZXdhcmRfX25leHQBAmFBAAIgJXMlc19fcG9vbFdlaWdodF9fR1dYdmlydHVhbFBPT0wBAmFCAQJhQwkAuQkCCQDMCAICBCVzJWQJAMwIAgINdXNlclVuY2xhaW1lZAkAzAgCCQCkAwEFAmFDBQNuaWwFAWEBAmFEAAkAuQkCCQDMCAICBCVzJXMJAMwIAgIGY29uZmlnCQDMCAICGHJlZmVycmFsc0NvbnRyYWN0QWRkcmVzcwUDbmlsBQFhAAJhRQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAXIBCQECYUQAAQJhRgICYUcCYUgJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCAg10cmFkaW5nUmV3YXJkCQDMCAICB2hpc3RvcnkJAMwIAgUCYUcJAMwIAgkA2AQBCAUCYUgNdHJhbnNhY3Rpb25JZAUDbmlsBQFhAQJhSQECYXcJALkJAgkAzAgCAgQlcyVzCQDMCAICDXRyYWRpbmdSZXdhcmQJAMwIAgUCYXcFA25pbAUBYQECYUoACQC5CQIJAMwIAgICJXMJAMwIAgINbWF4UmVjaXBpZW50cwUDbmlsBQFhAQJhSwQCYUwCYUcCYU0CYUgEAmFOCQC5CQIJAMwIAgIRJXMlcyVzJXNfX2hpc3RvcnkJAMwIAgUCYUwJAMwIAgUCYUcJAMwIAgkA2AQBCAUCYUgNdHJhbnNhY3Rpb25JZAUDbmlsBQFhBAJhTwkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sGaGVpZ2h0CQDMCAIJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkApAMBBQJhTQUDbmlsBQFhCQELU3RyaW5nRW50cnkCBQJhTgUCYU8BAmFQAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAmFRAAIXJXNfX21hbmFnZXJWYXVsdEFkZHJlc3MBAmFSAAQCYVMJAKIIAQkBAmFRAAMJAAECBQJhUwIGU3RyaW5nBAJhVAUCYVMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmFUBQR0aGlzAQJhVQAEAmFWCQECYVIABAJhUwkAnQgCBQJhVgkBAmFQAAMJAAECBQJhUwIGU3RyaW5nBAJhVAUCYVMJANkEAQUCYVQDCQABAgUCYVMCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECYVcBAmFIBAJhWAkAAgECEVBlcm1pc3Npb24gZGVuaWVkBAJhUwkBAmFVAAMJAAECBQJhUwIKQnl0ZVZlY3RvcgQCYVkFAmFTAwkAAAIIBQJhSA9jYWxsZXJQdWJsaWNLZXkFAmFZBgUCYVgDCQABAgUCYVMCBFVuaXQDCQAAAggFAmFIBmNhbGxlcgUEdGhpcwYFAmFYCQACAQILTWF0Y2ggZXJyb3IBAmFaAgJhbgJhdwQBbwkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgdtYXBwaW5nCQDMCAICCHVzZXIybnVtCQDMCAIFAmF3BQNuaWwFAWEJAQ1wYXJzZUludFZhbHVlAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIJAQdBZGRyZXNzAQkA2QQBBQJhbgUBbwkArAICCQCsAgIJAKwCAgINVXNlciBhZGRyZXNzIAUCYXcCLSBpcyBub3QgZm91bmQgaW4gYm9vc3RpbmcgY29udHJhY3QgZGF0YSwga2V5PQUBbwECYmEBAmF3CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJhSQEFAmF3AAABAmJiAAkAuQkCCQDMCAICAiVzCQDMCAICFHJld2FyZFBlckd3eEludGVncmFsBQNuaWwFAWEBAmJjAAQCYmQCECVzJXNfX2d3eF9fdG90YWwJAJoIAgkBAmFvAAUCYmQBAmJlAQJhdwoBAmJmAQJhdwkAuQkCCQDMCAICFCVzJXNfX2d3eEFtb3VudFRvdGFsCQDMCAIJAKUIAQUCYXcFA25pbAUBYQkAmggCCQECYW8ACQECYmYBBQJhdwECYmcABAJiaAkBC3ZhbHVlT3JFbHNlAgQCYVMJAJ0IAgUEdGhpcwkBAmJiAAMJAAECBQJhUwIGU3RyaW5nBAJhVAUCYVMJAKgDAQUCYVQDCQABAgUCYVMCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgUBZQQCYmkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzCQECYXQACQEBawEJAKwCAgIIaW52YWxpZCAJAQJhdAAEAmJqCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYWEJAQJheAAJAQFrAQkArAICAghpbnZhbGlkIAkBAmF4AAQCYmsJAQt2YWx1ZU9yRWxzZQIJAJoIAgUCYWEJAQJheQAAAAQCYmwJAQt2YWx1ZU9yRWxzZQIJAQJiYwAAAAQCYm0JALYCAQkAZQIFBmhlaWdodAUCYmkEAmJuCQC2AgEFAmJsBAJibwkAtwICBQJiaAMJAAACBQJibgUBZQUBZQkAvAIDBQJibQkAuQICCQC5AgIJALYCAQUCYmoJALYCAQUCYmsFAWkJALkCAgUCYm4FAWQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmF0AAUGaGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJiYgAJAKYDAQUCYm8FA25pbAUCYm8BAmJwAQJhdwkAuQkCCQDMCAICBCVzJXMJAMwIAgIccmV3YXJkUGVyR3d4SW50ZWdyYWxVc2VyTGFzdAkAzAgCCQClCAEFAmF3BQNuaWwFAWEBAmJxAgJhdwJicgQCYnMJAQJiZwAEAmJ0CAUCYnMCXzEEAmJvCAUCYnMCXzIEAmJ1BAJhUwkAnQgCBQR0aGlzCQECYnABBQJhdwMJAAECBQJhUwIGU3RyaW5nBAJhVAUCYVMJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBBQJhVAkBAWsBAhppbnZhbGlkIHVzZXIgbGFzdCBpbnRlZ3JhbAMJAAECBQJhUwIEVW5pdAUCYm8JAAIBAgtNYXRjaCBlcnJvcgQCYnYJAJ0IAgkBAmFvAAkBAmF2AQUCYXcEAmJ3CQELdmFsdWVPckVsc2UCCQCfCAEJAQJhQgEFAmJyAAAEAmJ4CQELdmFsdWVPckVsc2UCCQECYmUBBQJhdwAABAJieQkAZAIJAKADAQkAvAIDCQC2AgEFAmJ4CQC4AgIFAmJvBQJidQUBaQUCYncJAJQKAgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJicAEFAmF3CQCmAwEFAmJvBQNuaWwFAmJ0BQJieQECYnoBAmJBBAJhdwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFAmJBCQEBawECFGludmFsaWQgdXNlciBhZGRyZXNzBAJhcAkBAmFrAAQCYnIJAQJhWgIJAJEDAgUCYXAFAmFkBQJiQQQCYkIJAQJicQIFAmF3BQJicgQCYkMIBQJiQgJfMQQCYkQIBQJiQgJfMgkAlAoCBQJiRAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYUIBBQJicgAABQNuaWwFAmJDCwJhSAERcmVmcmVzaFVzZXJSZXdhcmQCAmJFAmJyBAJiRgkBAmFzAAMJAAACBQJiRgUCYkYEAmJHAwkAAAIIBQJhSAZjYWxsZXIJAQJhbwAGCQEBbQECEXBlcm1pc3Npb24gZGVuaWVkAwkAAAIFAmJHBQJiRwQCYkgJAQJicQIJAQdBZGRyZXNzAQUCYkUFAmJyBAJiQwgFAmJIAl8xBAJiRAgFAmJIAl8yCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFCAQUCYnIFAmJEBQNuaWwFAmJDBQJiRAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhSAETdHJhZGVSZXdhcmRJbnRlcm5hbAQCYkkCYkoCYksCYkwEAmJGCQECYXMAAwkAAAIFAmJGBQJiRgMJAAACBQJiTAkAkAMBBQJiSgUDbmlsBAJiTQkAzAgCAwkAAAIIBQJhSAZjYWxsZXIFBHRoaXMGCQEBbQECEVBlcm1pc3Npb24gZGVuaWVkCQDMCAIDCQBnAgUCYkkJAJEDAgUCYksFAmJMBgkBAW0BAhxpbnN1ZmZpY2llbnQgcGF5bWVudCBhc3NldElkBQNuaWwDCQAAAgUCYk0FAmJNBAJiTgkA/AcEBQR0aGlzAhN0cmFkZVJld2FyZEludGVybmFsCQDMCAIJAGUCBQJiSQkAkQMCBQJiSwUCYkwJAMwIAgUCYkoJAMwIAgUCYksJAMwIAgkAZAIFAmJMAAEFA25pbAUDbmlsAwkAAAIFAmJOBQJiTgQCYk8JAQJhRgIJAJEDAgUCYkoFAmJMBQJhSAQCYXcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYkoFAmJMCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFAmJPCQCRAwIFAmJLBQJiTAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFJAQkAkQMCBQJiSgUCYkwJAJEDAgUCYksFAmJMBQNuaWwFAmJOCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFIARZ1cGRhdGVSZWZlcnJhbEFjdGl2aXR5AgJhdwJiUAQCYkYJAQJhcwADCQAAAgUCYkYFAmJGBAJiUQkAnQgCBQJhRQkBAVUBBQJhdwQCYlIDCQAAAgUCYlEFBHVuaXQFBHVuaXQJAPwHBAUCYUUCFnVwZGF0ZVJlZmVycmFsQWN0aXZpdHkJAMwIAgUBSwkAzAgCBQJhdwkAzAgCCQBnAgUCYlAFAU4FA25pbAUDbmlsAwkAAAIFAmJSBQJiUgkAlAoCBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYUgBHXByb2Nlc3NQZW5kaW5nUGVyaW9kc0FuZFVzZXJzAAkAlAoCBQNuaWwJAQFtAQIKZGVwcmVjYXRlZAJhSAELY2xhaW1SZXdhcmQABAJiRgkBAmFzAAMJAAACBQJiRgUCYkYEAmFwCQECYWsABAJhdwgFAmFIBmNhbGxlcgQCYkEJAKUIAQUCYXcEAmJTCQECYnoBBQJiQQQCYU0IBQJiUwJfMQQCYkMIBQJiUwJfMgQCYlQDCQBmAgUCYU0AAAYJAAIBAhBub3RoaW5nIHRvIGNsYWltAwkAAAIFAmJUBQJiVAQCYngKAAJiVQkA/AcECQECYW8AAhBnZXRVc2VyR3d4QW1vdW50CQDMCAIFAmJBBQNuaWwFA25pbAMJAAECBQJiVQIDSW50BQJiVQkAAgEJAKwCAgkAAwEFAmJVAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQEAmJRCQCdCAIFAmFFCQEBVQEFAmJBBAJiUgMJAAACBQJiUQUEdW5pdAUEdW5pdAkA/AcEBQJhRQIWdXBkYXRlUmVmZXJyYWxBY3Rpdml0eQkAzAgCBQFLCQDMCAIFAmF3CQDMCAIJAGcCBQJieAUBTgUDbmlsBQNuaWwDCQAAAgUCYlIFAmJSBAJiVgMDCQAAAgUCYlEFBHVuaXQGCQBmAgUBTgUCYngFBHVuaXQEAmJXCQBrAwUCYU0FAVEFAWIEAmJYCQBrAwUCYU0FAVQFAWIJAPwHBAUCYUUCDGluY1VuY2xhaW1lZAkAzAgCBQFLCQDMCAIFAmF3CQDMCAIFAmJXCQDMCAIFAmJYBQNuaWwFA25pbAMJAAACBQJiVgUCYlYEAmJZCQD8BwQFAmFhAgRlbWl0CQDMCAIFAmFNBQNuaWwFA25pbAMJAAACBQJiWQUCYlkEAmJaCgACYlUJAPwHBAUCYUUCBWNsYWltCQDMCAIFAUsFA25pbAUDbmlsAwkAAQIFAmJVAgNJbnQFAmJVCQACAQkArAICCQADAQUCYlUCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAMJAAACBQJiWgUCYloEAmNhCQBkAgUCYU0FAmJaCQCUCgIJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCYUgGY2FsbGVyBQJhTQUCYWoJAMwIAgkBAmFLBAIFY2xhaW0FAmJBBQJjYQUCYUgFA25pbAUCYkMFAmNhCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFIARNjbGFpbVJld2FyZFJFQURPTkxZAQJjYgQCY2MJAQJiegEFAmNiBAJhTQgFAmNjAl8xBAJiQwgFAmNjAl8yBAJjZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQJhRQkBAVcCBQFLBQJjYgAABAJjYQkAZAIFAmFNBQJjZAkAlAoCBQNuaWwFAmNhAmFIARVvbkVtaXNzaW9uRm9yR3d4U3RhcnQABAJiRgkBAmFzAAMJAAACBQJiRgUCYkYDCQECIT0CCAUCYUgGY2FsbGVyBQFDCQACAQIScGVybWlzc2lvbnMgZGVuaWVkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYXQABQZoZWlnaHQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhSAELdHJhZGVSZXdhcmQCAmJKAmJLBAJiRgkBAmFzAAMJAAACBQJiRgUCYkYEAmNlCQAAAgkAkAMBBQJiSgkAkAMBBQJiSwQCY2YJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBAmFKAAAABAJjZwkAkQMCCAUCYUgIcGF5bWVudHMAAAQCY2gIBQJjZwdhc3NldElkBAJjaQgFAmNnBmFtb3VudAQCYk0JAMwIAgMJAGcCBQJjZgkAkAMBBQJiSgYJAQFtAQITVG9vIG1hbnkgcmVjaXBpZW50cwkAzAgCAwUCY2UGCQEBbQECF0FyZ3VtZW50cyBzaXplIG1pc21hdGNoCQDMCAIDCQAAAgUCY2gFAmFqBgkBAW0BAhNXcm9uZyBhc3NldCBwYXltZW50BQNuaWwDCQAAAgUCYk0FAmJNBAJiTgkA/AcEBQR0aGlzAhN0cmFkZVJld2FyZEludGVybmFsCQDMCAIFAmNpCQDMCAIFAmJKCQDMCAIFAmJLCQDMCAIAAAUDbmlsBQNuaWwDCQAAAgUCYk4FAmJOCQCUCgIFA25pbAUCYk4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYUgBEmNsYWltVHJhZGluZ1Jld2FyZAAEAmJGCQECYXMAAwkAAAIFAmJGBQJiRgQCYXcIBQJhSAZjYWxsZXIEAmNqCQClCAEFAmF3BAJiRAkBAmJhAQUCY2oDCQBmAgUCYkQAAAkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmF3BQJiRAUCYWoJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhSQEFAmNqAAAFA25pbAUCYkQJAQFtAQIQbm90aGluZyB0byBjbGFpbQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhSAEaY2xhaW1UcmFkaW5nUmV3YXJkUkVBRE9OTFkBAmF3CQCUCgIFA25pbAkBAmJhAQUCYXcCYUgBB3N1c3BlbmQBAmNrBAJiRwkBAmFXAQUCYUgDCQAAAgUCYkcFAmJHCQCUCgIJAMwIAgkBDEJvb2xlYW5FbnRyeQIFAmFxBQJjawUDbmlsBQJjawkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECY2wBAmNtAAQCY24EAmFTCQECYVUAAwkAAQIFAmFTAgpCeXRlVmVjdG9yBAJhWQUCYVMFAmFZAwkAAQIFAmFTAgRVbml0CAUCY2wPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IJAPQDAwgFAmNsCWJvZHlCeXRlcwkAkQMCCAUCY2wGcHJvb2ZzAAAFAmNuZJQbEQ==", "height": 2744785, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: F4PAPxf4h7YMvKLURBZ1CyHMnE6S2NX29goD5Cu16nES Next: 46yv6uQ4T326oMZV2cvv4KdAjfKR9MQNGh3dZ7nGhYR7 Diff:
OldNewDifferences
77
88 let c = 100000000
99
10-let d = toBigInt(0)
10+let d = toBigInt(c)
1111
12-let e = 0
12+let e = toBigInt(0)
1313
14-let f = 1
14+let f = 0
1515
16-let g = "WAVES"
16+let g = 1
1717
18-func h (i) = valueOrElse(getInteger(this, i), 0)
18+let h = 1000000000000000000
19+
20+let i = toBigInt(h)
21+
22+let j = "WAVES"
23+
24+func k (l) = makeString(["gwx_reward.ride:", l], " ")
1925
2026
21-func j (i) = valueOrErrorMessage(getInteger(this, i), (("mandatory this." + i) + " is not defined"))
27+func m (l) = throw(k(l))
2228
2329
24-func k (i) = valueOrElse(getString(this, i), "")
30+func n (o) = valueOrElse(getInteger(this, o), 0)
2531
2632
27-func l (i) = valueOrErrorMessage(getString(this, i), (("mandatory this." + i) + " is not defined"))
33+func p (o) = valueOrErrorMessage(getInteger(this, o), k((("mandatory this." + o) + " is not defined")))
2834
2935
30-func m (n) = if ((n == g))
31- then unit
32- else fromBase58String(n)
36+func q (o) = valueOrElse(getString(this, o), "")
3337
3438
35-func o (p) = makeString(["gwx_reward.ride:", p], " ")
39+func r (o) = valueOrErrorMessage(getString(this, o), k((("mandatory this." + o) + " is not defined")))
3640
3741
38-func q (p) = throw(o(p))
42+func s (t) = if ((t == j))
43+ then unit
44+ else fromBase58String(t)
3945
4046
41-func r (s) = if ((0 > s))
42- then -(s)
43- else s
47+func u (v) = if ((0 > v))
48+ then -(v)
49+ else v
4450
4551
46-func t (s) = if ((d > s))
47- then -(s)
48- else s
52+func w (v) = if ((e > v))
53+ then -(v)
54+ else v
4955
5056
51-let u = "%s__maxDepth"
57+let x = "%s__maxDepth"
5258
53-let v = 30
59+let y = 30
5460
55-let w = valueOrElse(getInteger(this, u), v)
61+let z = valueOrElse(getInteger(this, x), y)
5662
57-func x () = "%s%s__config__factoryAddress"
63+func A () = "%s%s__config__factoryAddress"
5864
5965
60-let y = l(x())
66+let B = r(A())
6167
62-let z = addressFromStringValue(y)
68+let C = addressFromStringValue(B)
6369
64-func A () = "%s%s__config__emissionAddress"
70+func D () = "%s%s__config__emissionAddress"
6571
6672
67-func B () = makeString(["%s", "votingEmissionContract"], a)
73+func E () = makeString(["%s", "votingEmissionContract"], a)
6874
6975
70-let C = addressFromStringValue(getStringValue(z, B()))
76+let F = addressFromStringValue(getStringValue(C, E()))
7177
72-func D (E) = makeString(["%s%s%s", "mapping", "num2user", toString(E)], a)
78+func G (H) = makeString(["%s%s%s", "mapping", "num2user", toString(H)], a)
7379
7480
75-let F = makeString(["%s%s", "referral", "programName"], a)
81+let I = makeString(["%s%s", "referral", "programName"], a)
7682
77-let G = "wxlock"
83+let J = "wxlock"
7884
79-let H = valueOrElse(getString(this, F), G)
85+let K = valueOrElse(getString(this, I), J)
8086
81-let I = makeString(["%s%s", "referral", "minGWxAmount"], a)
87+let L = makeString(["%s%s", "referral", "minGWxAmount"], a)
8288
83-let J = (500 * c)
84-
85-let K = valueOrElse(getInteger(this, I), J)
86-
87-let L = makeString(["%s%s", "referral", "referrerRewardPermille"], a)
88-
89-let M = 50
89+let M = (500 * c)
9090
9191 let N = valueOrElse(getInteger(this, L), M)
9292
93-let O = makeString(["%s%s", "referral", "referralRewardPermille"], a)
93+let O = makeString(["%s%s", "referral", "referrerRewardPermille"], a)
9494
9595 let P = 50
9696
9797 let Q = valueOrElse(getInteger(this, O), P)
9898
99-func R (S) = makeString(["%s%s%s", "referrer", H, S], a)
99+let R = makeString(["%s%s", "referral", "referralRewardPermille"], a)
100+
101+let S = 50
102+
103+let T = valueOrElse(getInteger(this, R), S)
104+
105+func U (V) = makeString(["%s%s%s", "referrer", K, V], a)
100106
101107
102-func T (U,V) = makeString(["%s%s%s", "unclaimedReferral", U, V], a)
108+func W (X,Y) = makeString(["%s%s%s", "unclaimedReferral", X, Y], a)
103109
104110
105-let W = l(A())
111+let Z = r(D())
106112
107-let X = addressFromStringValue(W)
113+let aa = addressFromStringValue(Z)
108114
109-let Y = 1
115+let ab = 1
110116
111-let Z = 2
117+let ac = 2
112118
113-let aa = 3
119+let ad = 3
114120
115-let ab = 4
121+let ae = 4
116122
117-func ac () = "%s__config"
123+func af () = "%s__config"
118124
119125
120-func ad () = addressFromStringValue(valueOrErrorMessage(getString(this, A()), (("mandatory this." + A()) + " is not defined")))
126+func ag () = addressFromStringValue(valueOrErrorMessage(getString(this, D()), (("mandatory this." + D()) + " is not defined")))
121127
122128
123-let ae = ad()
129+let ah = ag()
124130
125-let af = split(value(getString(ae, ac())), a)[1]
131+let ai = split(value(getString(ah, af())), a)[1]
126132
127-let ag = fromBase58String(af)
133+let aj = fromBase58String(ai)
128134
129-func ah () = split(l(ac()), a)
135+func ak () = split(r(af()), a)
130136
131137
132-func ai (af,aj,ak,w) = makeString(["%s%s%s%d", af, aj, ak, toString(w)], a)
138+func al (ai,am,an,z) = makeString(["%s%s%s%d", ai, am, an, toString(z)], a)
133139
134140
135-func al () = {
136- let am = ah()
137- valueOrErrorMessage(addressFromString(am[aa]), "boosting contract address is not defined")
141+func ao () = {
142+ let ap = ak()
143+ valueOrErrorMessage(addressFromString(ap[ad]), "boosting contract address is not defined")
138144 }
139145
140146
141-func an () = "%s%s__gwxRewardEmissionPart__startHeight"
147+let aq = "%s__suspension"
148+
149+let ar = valueOrElse(getBoolean(this, aq), false)
150+
151+func as () = if (!(ar))
152+ then true
153+ else m("suspended")
142154
143155
144-func ao () = "%s__nextUserNum"
156+func at () = "%s%s__gwxRewardEmissionPart__startHeight"
145157
146158
147-func ap () = "%s%s__ratePerBlock__current"
159+func au () = "%s__nextUserNum"
148160
149161
150-func aq () = "%s%s__gwxHoldersReward__current"
162+func av (aw) = makeString(["%s%s%s__mapping__user2num", toString(aw)], a)
151163
152164
153-func ar () = "%s%s__gwxHoldersReward__next"
165+func ax () = "%s%s__ratePerBlock__current"
154166
155167
156-func as () = "%s%s__poolWeight__GWXvirtualPOOL"
168+func ay () = "%s%s__gwxHoldersReward__current"
157169
158170
159-func at () = "%s__nextProcessedUser"
171+func az () = "%s%s__gwxHoldersReward__next"
160172
161173
162-func au () = "%s__latestPeriod"
174+func aA () = "%s%s__poolWeight__GWXvirtualPOOL"
163175
164176
165-func av () = "%s__nextPeriod"
177+func aB (aC) = makeString(["%s%d", "userUnclaimed", toString(aC)], a)
166178
167179
168-func aw () = "%s__processingStage"
180+func aD () = makeString(["%s%s", "config", "referralsContractAddress"], a)
169181
170182
171-func ax () = "%s__nextProcessedPeriod"
183+let aE = addressFromStringValue(r(aD()))
184+
185+func aF (aG,aH) = makeString(["%s%s%s%s", "tradingReward", "history", aG, toBase58String(aH.transactionId)], a)
172186
173187
174-func ay (az) = makeString(["%s%d", "userUnclaimed", toString(az)], a)
188+func aI (aw) = makeString(["%s%s", "tradingReward", aw], a)
175189
176190
177-func aA (az) = makeString(["%s%d__nextClaimedPeriod", toString(az)], a)
191+func aJ () = makeString(["%s", "maxRecipients"], a)
178192
179193
180-func aB (az) = makeString(["%s%d__lastProcessedPeriod", toString(az)], a)
181-
182-
183-func aC (aD) = makeString(["%s%d__startHeightForPeriod", toString(aD)], a)
184-
185-
186-func aE (aD) = makeString(["%s%d__auxEmissionReward", toString(aD)], a)
187-
188-
189-func aF (aD) = makeString(["%s%d__totalAmountForPeriod", toString(aD)], a)
190-
191-
192-func aG () = "%s__lastPayoutInfo"
193-
194-
195-func aH (aD,aI,aJ) = makeString(["%d%d%d", toString(aD), toString(aI), toString(aJ)], a)
196-
197-
198-func aK (aD) = makeString(["%s%s%d__payouts__history", toString(aD)], a)
199-
200-
201-func aL (aD) = makeString(["%s%d__totalWeightForPeriod", toString(aD)], a)
202-
203-
204-func aM (aD,az) = makeString(["%s%d%s%d__paramByPeriod", toString(az), "k", toString(aD)], a)
205-
206-
207-func aN (aD,az) = makeString(["%s%d%s%d__paramByPeriod", toString(az), "b", toString(aD)], a)
208-
209-
210-func aO (aD,az) = makeString(["%s%d%s%d__paramByPeriod", toString(az), "weight", toString(aD)], a)
211-
212-
213-func aP () = makeString(["%s%s", "config", "referralsContractAddress"], a)
214-
215-
216-let aQ = addressFromStringValue(l(aP()))
217-
218-func aR (aS,aT) = makeString(["%s%s%s%s", "tradingReward", "history", aS, toBase58String(aT.transactionId)], a)
219-
220-
221-func aU (aV) = makeString(["%s%s", "tradingReward", aV], a)
222-
223-
224-func aW () = makeString(["%s", "maxRecipients"], a)
225-
226-
227-func aX (aY,aS,aZ,aT) = {
228- let ba = makeString(["%s%s%s%s__history", aY, aS, toBase58String(aT.transactionId)], a)
229- let bb = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aZ)], a)
230- StringEntry(ba, bb)
194+func aK (aL,aG,aM,aH) = {
195+ let aN = makeString(["%s%s%s%s__history", aL, aG, toBase58String(aH.transactionId)], a)
196+ let aO = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aM)], a)
197+ StringEntry(aN, aO)
231198 }
232199
233200
234-func bc () = "%s__managerPublicKey"
201+func aP () = "%s__managerPublicKey"
235202
236203
237-func bd () = "%s__managerVaultAddress"
204+func aQ () = "%s__managerVaultAddress"
238205
239206
240-func be () = {
241- let bf = getString(bd())
242- if ($isInstanceOf(bf, "String"))
207+func aR () = {
208+ let aS = getString(aQ())
209+ if ($isInstanceOf(aS, "String"))
243210 then {
244- let bg = bf
245- addressFromStringValue(bg)
211+ let aT = aS
212+ addressFromStringValue(aT)
246213 }
247214 else this
248215 }
249216
250217
251-func bh () = {
252- let bi = be()
253- let bf = getString(bi, bc())
254- if ($isInstanceOf(bf, "String"))
218+func aU () = {
219+ let aV = aR()
220+ let aS = getString(aV, aP())
221+ if ($isInstanceOf(aS, "String"))
255222 then {
256- let bg = bf
257- fromBase58String(bg)
223+ let aT = aS
224+ fromBase58String(aT)
258225 }
259- else if ($isInstanceOf(bf, "Unit"))
226+ else if ($isInstanceOf(aS, "Unit"))
260227 then unit
261228 else throw("Match error")
262229 }
263230
264231
265-func bj (aT) = {
266- let bk = throw("Permission denied")
267- let bf = bh()
268- if ($isInstanceOf(bf, "ByteVector"))
232+func aW (aH) = {
233+ let aX = throw("Permission denied")
234+ let aS = aU()
235+ if ($isInstanceOf(aS, "ByteVector"))
269236 then {
270- let bl = bf
271- if ((aT.callerPublicKey == bl))
237+ let aY = aS
238+ if ((aH.callerPublicKey == aY))
272239 then true
273- else bk
240+ else aX
274241 }
275- else if ($isInstanceOf(bf, "Unit"))
276- then if ((aT.caller == this))
242+ else if ($isInstanceOf(aS, "Unit"))
243+ then if ((aH.caller == this))
277244 then true
278- else bk
245+ else aX
279246 else throw("Match error")
280247 }
281248
282249
283-func bm (bn,bo,aD,az) = {
284- let bp = aB(az)
285- let bq = aM(aD, az)
286- let br = getInteger(bn, bq)
287- let bs = aO(aD, az)
288- if (isDefined(br))
289- then {
290- let bt = value(br)
291- let bu = value(getInteger(bn, aN(aD, az)))
292- let bv = ((bt * bo) + bu)
293- if ((bv > 0))
294- then $Tuple2((bv / b), [IntegerEntry(bp, aD), IntegerEntry(bs, bv)])
295- else $Tuple2(0, nil)
296- }
297- else {
298- let bw = getInteger(this, bp)
299- if (if (isDefined(bw))
300- then (aD >= value(bw))
301- else false)
302- then {
303- let bx = value(bw)
304- let bt = value(getInteger(bn, aM(bx, az)))
305- let bu = value(getInteger(bn, aN(bx, az)))
306- let bv = ((bt * bo) + bu)
307- if ((bv > 0))
308- then $Tuple2((bv / b), [IntegerEntry(bs, bv)])
309- else $Tuple2(0, nil)
310- }
311- else $Tuple2(0, nil)
312- }
250+func aZ (an,aw) = {
251+ let o = makeString(["%s%s%s", "mapping", "user2num", aw], a)
252+ parseIntValue(valueOrErrorMessage(getString(Address(fromBase58String(an)), o), ((("User address " + aw) + " is not found in boosting contract data, key=") + o)))
313253 }
314254
315255
316-func by (bn,bo,aD,az) = {
317- let bs = aO(aD, az)
318- let bz = getInteger(bs)
319- let bf = bz
320- if ($isInstanceOf(bf, "Unit"))
321- then 0
322- else if ($isInstanceOf(bf, "Int"))
323- then {
324- let bv = bf
325- (bv / b)
326- }
327- else throw("Match error")
256+func ba (aw) = valueOrElse(getInteger(this, aI(aw)), 0)
257+
258+
259+func bb () = makeString(["%s", "rewardPerGwxIntegral"], a)
260+
261+
262+func bc () = {
263+ let bd = "%s%s__gwx__total"
264+ getInteger(ao(), bd)
328265 }
329266
330267
331-func bA (ak,aV) = {
332- let i = makeString(["%s%s%s", "mapping", "user2num", aV], a)
333- parseIntValue(valueOrErrorMessage(getString(Address(fromBase58String(ak)), i), ((("User address " + aV) + " is not found in boosting contract data, key=") + i)))
268+func be (aw) = {
269+ func bf (aw) = makeString(["%s%s__gwxAmountTotal", toString(aw)], a)
270+
271+ getInteger(ao(), bf(aw))
334272 }
335273
336274
337-func bB () = h(av())
338-
339-
340-func bC (aV) = {
341- let am = ah()
342- let bD = bA(am[aa], aV)
343- let bE = getInteger(ay(bD))
344- let bf = bE
345- if ($isInstanceOf(bf, "Unit"))
346- then $Tuple2(0, nil)
347- else if ($isInstanceOf(bf, "Int"))
275+func bg () = {
276+ let bh = valueOrElse({
277+ let aS = getString(this, bb())
278+ if ($isInstanceOf(aS, "String"))
348279 then {
349- let bF = bf
350- $Tuple2(bF, [IntegerEntry(ay(bD), 0)])
280+ let aT = aS
281+ parseBigInt(aT)
351282 }
352- else throw("Match error")
283+ else if ($isInstanceOf(aS, "Unit"))
284+ then unit
285+ else throw("Match error")
286+ }, e)
287+ let bi = valueOrErrorMessage(getInteger(this, at()), k(("invalid " + at())))
288+ let bj = valueOrErrorMessage(getInteger(aa, ax()), k(("invalid " + ax())))
289+ let bk = valueOrElse(getInteger(aa, ay()), 0)
290+ let bl = valueOrElse(bc(), 0)
291+ let bm = toBigInt((height - bi))
292+ let bn = toBigInt(bl)
293+ let bo = (bh + (if ((bn == e))
294+ then e
295+ else fraction(bm, ((toBigInt(bj) * toBigInt(bk)) * i), (bn * d))))
296+ $Tuple2([IntegerEntry(at(), height), StringEntry(bb(), toString(bo))], bo)
353297 }
354298
355299
356-func bG (aV) = valueOrElse(getInteger(this, aU(aV)), 0)
300+func bp (aw) = makeString(["%s%s", "rewardPerGwxIntegralUserLast", toString(aw)], a)
357301
358302
359-@Callable(aT)
360-func tradeRewardInternal (bH,bI,bJ,bK) = if ((bK == size(bI)))
361- then nil
362- else {
363- let bL = [if ((aT.caller == this))
364- then true
365- else q("Permission denied"), if ((bH >= bJ[bK]))
366- then true
367- else q("insufficient payment assetId")]
368- if ((bL == bL))
303+func bq (aw,br) = {
304+ let bs = bg()
305+ let bt = bs._1
306+ let bo = bs._2
307+ let bu = {
308+ let aS = getString(this, bp(aw))
309+ if ($isInstanceOf(aS, "String"))
369310 then {
370- let bM = invoke(this, "tradeRewardInternal", [(bH - bJ[bK]), bI, bJ, (bK + 1)], nil)
371- if ((bM == bM))
372- then {
373- let bN = aR(bI[bK], aT)
374- let aV = addressFromStringValue(bI[bK])
375- $Tuple2([IntegerEntry(bN, bJ[bK]), IntegerEntry(aU(bI[bK]), bJ[bK])], bM)
376- }
377- else throw("Strict value is not equal to itself.")
311+ let aT = aS
312+ valueOrErrorMessage(parseBigInt(aT), k("invalid user last integral"))
378313 }
379- else throw("Strict value is not equal to itself.")
314+ else if ($isInstanceOf(aS, "Unit"))
315+ then bo
316+ else throw("Match error")
380317 }
318+ let bv = getString(ao(), av(aw))
319+ let bw = valueOrElse(getInteger(aB(br)), 0)
320+ let bx = valueOrElse(be(aw), 0)
321+ let by = (toInt(fraction(toBigInt(bx), (bo - bu), i)) + bw)
322+ $Tuple2(([StringEntry(bp(aw), toString(bo))] ++ bt), by)
323+ }
381324
382325
326+func bz (bA) = {
327+ let aw = valueOrErrorMessage(addressFromString(bA), k("invalid user address"))
328+ let ap = ak()
329+ let br = aZ(ap[ad], bA)
330+ let bB = bq(aw, br)
331+ let bC = bB._1
332+ let bD = bB._2
333+ $Tuple2(bD, ([IntegerEntry(aB(br), 0)] ++ bC))
334+ }
383335
384-@Callable(aT)
385-func updateReferralActivity (aV,bO) = {
386- let bP = getString(aQ, R(aV))
387- let bQ = if ((bP == unit))
388- then unit
389- else invoke(aQ, "updateReferralActivity", [H, aV, (bO >= K)], nil)
390- if ((bQ == bQ))
391- then $Tuple2(nil, unit)
336+
337+@Callable(aH)
338+func refreshUserReward (bE,br) = {
339+ let bF = as()
340+ if ((bF == bF))
341+ then {
342+ let bG = if ((aH.caller == ao()))
343+ then true
344+ else m("permission denied")
345+ if ((bG == bG))
346+ then {
347+ let bH = bq(Address(bE), br)
348+ let bC = bH._1
349+ let bD = bH._2
350+ $Tuple2(([IntegerEntry(aB(br), bD)] ++ bC), bD)
351+ }
352+ else throw("Strict value is not equal to itself.")
353+ }
392354 else throw("Strict value is not equal to itself.")
393355 }
394356
395357
396358
397-@Callable(aT)
398-func finalizeHelper () = {
399- let bR = valueOrElse(getInteger(aw()), e)
400- let bS = h(ax())
401- let bT = h(at())
402- let bU = h(au())
403- let bV = valueOrElse(getInteger(al(), ao()), 0)
404- let bW = aL(bS)
405- let bX = h(aL(bS))
406- let bo = h(aC(bS))
407- if ((bS > bU))
408- then $Tuple2(nil, false)
409- else if ((bR == e))
410- then {
411- let bY = bm(al(), bo, bS, bT)
412- let bZ = bY._1
413- let ca = bY._2
414- let cb = (bX + bZ)
415- let cc = if (((bV - 1) > bT))
416- then [IntegerEntry(at(), (bT + 1))]
417- else [IntegerEntry(aw(), f), IntegerEntry(at(), 0)]
418- $Tuple2((([IntegerEntry(bW, cb)] ++ cc) ++ ca), true)
359+@Callable(aH)
360+func tradeRewardInternal (bI,bJ,bK,bL) = {
361+ let bF = as()
362+ if ((bF == bF))
363+ then if ((bL == size(bJ)))
364+ then nil
365+ else {
366+ let bM = [if ((aH.caller == this))
367+ then true
368+ else m("Permission denied"), if ((bI >= bK[bL]))
369+ then true
370+ else m("insufficient payment assetId")]
371+ if ((bM == bM))
372+ then {
373+ let bN = invoke(this, "tradeRewardInternal", [(bI - bK[bL]), bJ, bK, (bL + 1)], nil)
374+ if ((bN == bN))
375+ then {
376+ let bO = aF(bJ[bL], aH)
377+ let aw = addressFromStringValue(bJ[bL])
378+ $Tuple2([IntegerEntry(bO, bK[bL]), IntegerEntry(aI(bJ[bL]), bK[bL])], bN)
379+ }
380+ else throw("Strict value is not equal to itself.")
381+ }
382+ else throw("Strict value is not equal to itself.")
419383 }
420- else if ((bR == f))
421- then {
422- let bZ = by(al(), bo, bS, bT)
423- let cd = fraction(h(aF(bS)), bZ, bX)
424- let ce = fraction(h(aE(bS)), bZ, bX)
425- let cf = (ce + cd)
426- let bE = getInteger(ay(bT))
427- let aV = getStringValue(al(), D(bT))
428- let bP = getString(aQ, R(aV))
429- let bQ = if ((bP == unit))
430- then unit
431- else invoke(aQ, "updateReferralActivity", [H, aV, (bZ >= K)], nil)
432- if ((bQ == bQ))
433- then {
434- let cg = if (if ((bP == unit))
435- then true
436- else (K > bZ))
437- then unit
438- else {
439- let ch = fraction(cf, N, b)
440- let ci = fraction(cf, Q, b)
441- invoke(aQ, "incUnclaimed", [H, aV, ch, ci], nil)
442- }
443- if ((cg == cg))
444- then {
445- let cj = [IntegerEntry(ay(bT), (valueOrElse(bE, 0) + cf))]
446- let cc = if (((bV - 1) > bT))
447- then [IntegerEntry(at(), (bT + 1))]
448- else [IntegerEntry(ax(), (bS + 1)), IntegerEntry(at(), 0), DeleteEntry(aw())]
449- $Tuple2((cj ++ cc), true)
450- }
451- else throw("Strict value is not equal to itself.")
452- }
453- else throw("Strict value is not equal to itself.")
454- }
455- else throw("invalid processing stage")
456- }
457-
458-
459-
460-@Callable(aT)
461-func finalizeWrapper (ck) = {
462- let cl = {
463- let cm = invoke(this, "finalizeHelper", nil, nil)
464- if ($isInstanceOf(cm, "Boolean"))
465- then cm
466- else throw(($getType(cm) + " couldn't be cast to Boolean"))
467- }
468- if ((cl == cl))
469- then if (!(cl))
470- then if ((ck == w))
471- then throw("Nothing to process")
472- else $Tuple2(nil, unit)
473- else if ((ck > 0))
474- then $Tuple2(nil, invoke(this, "finalizeWrapper", [(ck - 1)], nil))
475- else $Tuple2(nil, unit)
476384 else throw("Strict value is not equal to itself.")
477385 }
478386
479387
480388
481-@Callable(aT)
482-func processPendingPeriodsAndUsers () = $Tuple2(nil, invoke(this, "finalizeWrapper", [w], nil))
389+@Callable(aH)
390+func updateReferralActivity (aw,bP) = {
391+ let bF = as()
392+ if ((bF == bF))
393+ then {
394+ let bQ = getString(aE, U(aw))
395+ let bR = if ((bQ == unit))
396+ then unit
397+ else invoke(aE, "updateReferralActivity", [K, aw, (bP >= N)], nil)
398+ if ((bR == bR))
399+ then $Tuple2(nil, unit)
400+ else throw("Strict value is not equal to itself.")
401+ }
402+ else throw("Strict value is not equal to itself.")
403+ }
483404
484405
485406
486-@Callable(aT)
487-func deposit () = {
488- let cn = if ((aT.caller == C))
489- then true
490- else bj(aT)
491- if ((cn == cn))
407+@Callable(aH)
408+func processPendingPeriodsAndUsers () = $Tuple2(nil, m("deprecated"))
409+
410+
411+
412+@Callable(aH)
413+func claimReward () = {
414+ let bF = as()
415+ if ((bF == bF))
492416 then {
493- let aD = bB()
494- let co = (height - j(an()))
495- let cp = valueOrErrorMessage(getInteger(X, ap()), (("mandatory emission_contract." + ap()) + " is not defined"))
496- let cq = valueOrElse(getInteger(X, aq()), 0)
497- if ((cq == cq))
417+ let ap = ak()
418+ let aw = aH.caller
419+ let bA = toString(aw)
420+ let bS = bz(bA)
421+ let aM = bS._1
422+ let bC = bS._2
423+ let bT = if ((aM > 0))
424+ then true
425+ else throw("nothing to claim")
426+ if ((bT == bT))
498427 then {
499- let cr = fraction((co * cq), cp, c)
500- let cs = if ((cr > 0))
501- then invoke(X, "emit", [cr], nil)
502- else unit
503- if ((cs == cs))
428+ let bx = {
429+ let bU = invoke(ao(), "getUserGwxAmount", [bA], nil)
430+ if ($isInstanceOf(bU, "Int"))
431+ then bU
432+ else throw(($getType(bU) + " couldn't be cast to Int"))
433+ }
434+ let bQ = getString(aE, U(bA))
435+ let bR = if ((bQ == unit))
436+ then unit
437+ else invoke(aE, "updateReferralActivity", [K, aw, (bx >= N)], nil)
438+ if ((bR == bR))
504439 then {
505- let ct = 0
506- let cu = aH(aD, ct, cr)
507- let cv = {
508- let cm = invoke(X, "gwxHoldersRewardUpdate", nil, nil)
509- if ($isInstanceOf(cm, "Boolean"))
510- then cm
511- else throw(($getType(cm) + " couldn't be cast to Boolean"))
512- }
513- if ((cv == cv))
440+ let bV = if (if ((bQ == unit))
441+ then true
442+ else (N > bx))
443+ then unit
444+ else {
445+ let bW = fraction(aM, Q, b)
446+ let bX = fraction(aM, T, b)
447+ invoke(aE, "incUnclaimed", [K, aw, bW, bX], nil)
448+ }
449+ if ((bV == bV))
514450 then {
515- let cw = (ct + cr)
516- let cx = if (if ((cw == 0))
517- then !(cv)
518- else false)
519- then nil
520- else [IntegerEntry(au(), aD), IntegerEntry(aC(aD), height), IntegerEntry(aE(aD), cr), IntegerEntry(an(), height), IntegerEntry(aF(aD), ct), IntegerEntry(av(), (aD + 1)), StringEntry(aG(), cu), StringEntry(aK(aD), cu)]
521- $Tuple2(cx, unit)
451+ let bY = invoke(aa, "emit", [aM], nil)
452+ if ((bY == bY))
453+ then {
454+ let bZ = {
455+ let bU = invoke(aE, "claim", [K], nil)
456+ if ($isInstanceOf(bU, "Int"))
457+ then bU
458+ else throw(($getType(bU) + " couldn't be cast to Int"))
459+ }
460+ if ((bZ == bZ))
461+ then {
462+ let ca = (aM + bZ)
463+ $Tuple2(([ScriptTransfer(aH.caller, aM, aj), aK("claim", bA, ca, aH)] ++ bC), ca)
464+ }
465+ else throw("Strict value is not equal to itself.")
466+ }
467+ else throw("Strict value is not equal to itself.")
522468 }
523469 else throw("Strict value is not equal to itself.")
524470 }
531477
532478
533479
534-@Callable(aT)
535-func claimReward () = {
536- let am = ah()
537- let cy = toString(aT.caller)
538- let cz = bC(cy)
539- let aZ = cz._1
540- let cx = cz._2
541- let cA = if ((aZ > 0))
542- then true
543- else throw("Nothing to claim")
544- if ((cA == cA))
545- then {
546- let cB = 0
547- let cC = {
548- let cm = invoke(aQ, "claim", [H], nil)
549- if ($isInstanceOf(cm, "Int"))
550- then cm
551- else throw(($getType(cm) + " couldn't be cast to Int"))
552- }
553- let cD = (aZ + cC)
554- $Tuple2(([ScriptTransfer(aT.caller, cD, fromBase58String(am[Y])), aX("claim", cy, aZ, aT)] ++ cx), [cD, cB])
555- }
480+@Callable(aH)
481+func claimRewardREADONLY (cb) = {
482+ let cc = bz(cb)
483+ let aM = cc._1
484+ let bC = cc._2
485+ let cd = valueOrElse(getInteger(aE, W(K, cb)), 0)
486+ let ca = (aM + cd)
487+ $Tuple2(nil, ca)
488+ }
489+
490+
491+
492+@Callable(aH)
493+func onEmissionForGwxStart () = {
494+ let bF = as()
495+ if ((bF == bF))
496+ then if ((aH.caller != C))
497+ then throw("permissions denied")
498+ else [IntegerEntry(at(), height)]
556499 else throw("Strict value is not equal to itself.")
557500 }
558501
559502
560503
561-@Callable(aT)
562-func claimRewardREADONLY (cy) = {
563- let cE = bC(cy)
564- let aZ = cE._1
565- let cx = cE._2
566- let cF = valueOrElse(getInteger(aQ, T(H, cy)), 0)
567- let cD = (aZ + cF)
568- $Tuple2(nil, cD)
569- }
570-
571-
572-
573-@Callable(aT)
574-func latestFinalizedPeriodREADONLY (cy) = $Tuple2(nil, valueOrElse(getInteger(this, au()), -1))
575-
576-
577-
578-@Callable(aT)
579-func latestFinalizedPeriodInfoREADONLY (cy) = $Tuple2(nil, k(aG()))
580-
581-
582-
583-@Callable(aT)
584-func calcGwxParamsREADONLY (cG,cH,cI) = {
585- let cJ = (cH + cI)
586- let cK = -(fraction(cG, b, cI))
587- let cL = (fraction(cG, b, cI) * cJ)
588- $Tuple2(nil, [cK, cL, bB()])
589- }
590-
591-
592-
593-@Callable(aT)
594-func calcGwxAmountStartREADONLY (cM,cN,cO) = {
595- let cP = fraction(cN, c, cO)
596- let bO = fraction(cM, cP, c)
597- $Tuple2(nil, [bO])
598- }
599-
600-
601-
602-@Callable(aT)
603-func onEmissionForGwxStart () = if ((aT.caller != z))
604- then throw("permissions denied")
605- else [IntegerEntry(an(), height)]
606-
607-
608-
609-@Callable(aT)
610-func latestPeriodEmissionRewardsREADONLY (cy) = {
611- let aD = bB()
612- $Tuple2(nil, [h(aE(aD))])
613- }
614-
615-
616-
617-@Callable(aT)
618-func calcD (cQ,cR,cS,cT,cU) = {
619- let cV = toBigInt(2)
620- let cW = parseBigIntValue(cT)
621- let cX = parseBigIntValue(cU)
622- let cY = parseBigIntValue(cQ)
623- let cZ = parseBigIntValue(cR)
624- let da = (parseBigIntValue(cS) * cW)
625- let bg = (cY + cZ)
626- if ((bg == d))
627- then $Tuple2(nil, toString(d))
628- else {
629- let db = (da * cV)
630- let dc = [0, 1, 2, 3, 4, 5, 6]
631- func dd (de,df) = {
632- let dg = de
633- let dh = dg._1
634- let di = dg._2
635- let dj = dg._3
636- if ((dj != unit))
637- then de
638- else {
639- let dk = (((dh * dh) * dh) / (((cY * cZ) * cV) * cV))
640- let dl = (((((db * bg) / cW) + (dk * cV)) * dh) / ((((db - cW) * dh) / cW) + ((cV + toBigInt(1)) * dk)))
641- let dm = t((dl - value(dh)))
642- if ((cX >= dm))
643- then $Tuple3(dl, dh, df)
644- else $Tuple3(dl, dh, unit)
645- }
646- }
647-
648- let dn = {
649- let do = dc
650- let dp = size(do)
651- let dq = $Tuple3(bg, unit, unit)
652- func dr (ds,dt) = if ((dt >= dp))
653- then ds
654- else dd(ds, do[dt])
655-
656- func du (ds,dt) = if ((dt >= dp))
657- then ds
658- else throw("List size exceeds 7")
659-
660- du(dr(dr(dr(dr(dr(dr(dr(dq, 0), 1), 2), 3), 4), 5), 6), 7)
661- }
662- let dl = dn._1
663- let di = dn._2
664- let dj = dn._3
665- if ((dj != unit))
666- then $Tuple2(nil, toString(dl))
667- else {
668- let dm = t((dl - value(di)))
669- throw(("D calculation error, dDiff = " + toString(dm)))
504+@Callable(aH)
505+func tradeReward (bJ,bK) = {
506+ let bF = as()
507+ if ((bF == bF))
508+ then {
509+ let ce = (size(bJ) == size(bK))
510+ let cf = valueOrElse(getInteger(aJ()), 0)
511+ let cg = aH.payments[0]
512+ let ch = cg.assetId
513+ let ci = cg.amount
514+ let bM = [if ((cf >= size(bJ)))
515+ then true
516+ else m("Too many recipients"), if (ce)
517+ then true
518+ else m("Arguments size mismatch"), if ((ch == aj))
519+ then true
520+ else m("Wrong asset payment")]
521+ if ((bM == bM))
522+ then {
523+ let bN = invoke(this, "tradeRewardInternal", [ci, bJ, bK, 0], nil)
524+ if ((bN == bN))
525+ then $Tuple2(nil, bN)
526+ else throw("Strict value is not equal to itself.")
670527 }
671- }
672- }
673-
674-
675-
676-@Callable(aT)
677-func tradeReward (bI,bJ) = {
678- let dv = (size(bI) == size(bJ))
679- let dw = valueOrElse(getInteger(aW()), 0)
680- let dx = aT.payments[0]
681- let dy = dx.assetId
682- let dz = dx.amount
683- let bL = [if ((dw >= size(bI)))
684- then true
685- else q("Too many recipients"), if (dv)
686- then true
687- else q("Arguments size mismatch"), if ((dy == ag))
688- then true
689- else q("Wrong asset payment")]
690- if ((bL == bL))
691- then {
692- let bM = invoke(this, "tradeRewardInternal", [dz, bI, bJ, 0], nil)
693- if ((bM == bM))
694- then $Tuple2(nil, bM)
695528 else throw("Strict value is not equal to itself.")
696529 }
697530 else throw("Strict value is not equal to itself.")
699532
700533
701534
702-@Callable(aT)
535+@Callable(aH)
703536 func claimTradingReward () = {
704- let aV = aT.caller
705- let dA = toString(aV)
706- let dB = bG(dA)
707- if ((dB > 0))
708- then $Tuple2([ScriptTransfer(aV, dB, ag), IntegerEntry(aU(dA), 0)], dB)
709- else q("nothing to claim")
537+ let bF = as()
538+ if ((bF == bF))
539+ then {
540+ let aw = aH.caller
541+ let cj = toString(aw)
542+ let bD = ba(cj)
543+ if ((bD > 0))
544+ then $Tuple2([ScriptTransfer(aw, bD, aj), IntegerEntry(aI(cj), 0)], bD)
545+ else m("nothing to claim")
546+ }
547+ else throw("Strict value is not equal to itself.")
710548 }
711549
712550
713551
714-@Callable(aT)
715-func claimTradingRewardREADONLY (aV) = $Tuple2(nil, bG(aV))
552+@Callable(aH)
553+func claimTradingRewardREADONLY (aw) = $Tuple2(nil, ba(aw))
716554
717555
718-@Verifier(dC)
719-func dD () = {
720- let dE = {
721- let bf = bh()
722- if ($isInstanceOf(bf, "ByteVector"))
556+
557+@Callable(aH)
558+func suspend (ck) = {
559+ let bG = aW(aH)
560+ if ((bG == bG))
561+ then $Tuple2([BooleanEntry(aq, ck)], ck)
562+ else throw("Strict value is not equal to itself.")
563+ }
564+
565+
566+@Verifier(cl)
567+func cm () = {
568+ let cn = {
569+ let aS = aU()
570+ if ($isInstanceOf(aS, "ByteVector"))
723571 then {
724- let bl = bf
725- bl
572+ let aY = aS
573+ aY
726574 }
727- else if ($isInstanceOf(bf, "Unit"))
728- then dC.senderPublicKey
575+ else if ($isInstanceOf(aS, "Unit"))
576+ then cl.senderPublicKey
729577 else throw("Match error")
730578 }
731- sigVerify(dC.bodyBytes, dC.proofs[0], dE)
579+ sigVerify(cl.bodyBytes, cl.proofs[0], cn)
732580 }
733581
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 1000
77
88 let c = 100000000
99
10-let d = toBigInt(0)
10+let d = toBigInt(c)
1111
12-let e = 0
12+let e = toBigInt(0)
1313
14-let f = 1
14+let f = 0
1515
16-let g = "WAVES"
16+let g = 1
1717
18-func h (i) = valueOrElse(getInteger(this, i), 0)
18+let h = 1000000000000000000
19+
20+let i = toBigInt(h)
21+
22+let j = "WAVES"
23+
24+func k (l) = makeString(["gwx_reward.ride:", l], " ")
1925
2026
21-func j (i) = valueOrErrorMessage(getInteger(this, i), (("mandatory this." + i) + " is not defined"))
27+func m (l) = throw(k(l))
2228
2329
24-func k (i) = valueOrElse(getString(this, i), "")
30+func n (o) = valueOrElse(getInteger(this, o), 0)
2531
2632
27-func l (i) = valueOrErrorMessage(getString(this, i), (("mandatory this." + i) + " is not defined"))
33+func p (o) = valueOrErrorMessage(getInteger(this, o), k((("mandatory this." + o) + " is not defined")))
2834
2935
30-func m (n) = if ((n == g))
31- then unit
32- else fromBase58String(n)
36+func q (o) = valueOrElse(getString(this, o), "")
3337
3438
35-func o (p) = makeString(["gwx_reward.ride:", p], " ")
39+func r (o) = valueOrErrorMessage(getString(this, o), k((("mandatory this." + o) + " is not defined")))
3640
3741
38-func q (p) = throw(o(p))
42+func s (t) = if ((t == j))
43+ then unit
44+ else fromBase58String(t)
3945
4046
41-func r (s) = if ((0 > s))
42- then -(s)
43- else s
47+func u (v) = if ((0 > v))
48+ then -(v)
49+ else v
4450
4551
46-func t (s) = if ((d > s))
47- then -(s)
48- else s
52+func w (v) = if ((e > v))
53+ then -(v)
54+ else v
4955
5056
51-let u = "%s__maxDepth"
57+let x = "%s__maxDepth"
5258
53-let v = 30
59+let y = 30
5460
55-let w = valueOrElse(getInteger(this, u), v)
61+let z = valueOrElse(getInteger(this, x), y)
5662
57-func x () = "%s%s__config__factoryAddress"
63+func A () = "%s%s__config__factoryAddress"
5864
5965
60-let y = l(x())
66+let B = r(A())
6167
62-let z = addressFromStringValue(y)
68+let C = addressFromStringValue(B)
6369
64-func A () = "%s%s__config__emissionAddress"
70+func D () = "%s%s__config__emissionAddress"
6571
6672
67-func B () = makeString(["%s", "votingEmissionContract"], a)
73+func E () = makeString(["%s", "votingEmissionContract"], a)
6874
6975
70-let C = addressFromStringValue(getStringValue(z, B()))
76+let F = addressFromStringValue(getStringValue(C, E()))
7177
72-func D (E) = makeString(["%s%s%s", "mapping", "num2user", toString(E)], a)
78+func G (H) = makeString(["%s%s%s", "mapping", "num2user", toString(H)], a)
7379
7480
75-let F = makeString(["%s%s", "referral", "programName"], a)
81+let I = makeString(["%s%s", "referral", "programName"], a)
7682
77-let G = "wxlock"
83+let J = "wxlock"
7884
79-let H = valueOrElse(getString(this, F), G)
85+let K = valueOrElse(getString(this, I), J)
8086
81-let I = makeString(["%s%s", "referral", "minGWxAmount"], a)
87+let L = makeString(["%s%s", "referral", "minGWxAmount"], a)
8288
83-let J = (500 * c)
84-
85-let K = valueOrElse(getInteger(this, I), J)
86-
87-let L = makeString(["%s%s", "referral", "referrerRewardPermille"], a)
88-
89-let M = 50
89+let M = (500 * c)
9090
9191 let N = valueOrElse(getInteger(this, L), M)
9292
93-let O = makeString(["%s%s", "referral", "referralRewardPermille"], a)
93+let O = makeString(["%s%s", "referral", "referrerRewardPermille"], a)
9494
9595 let P = 50
9696
9797 let Q = valueOrElse(getInteger(this, O), P)
9898
99-func R (S) = makeString(["%s%s%s", "referrer", H, S], a)
99+let R = makeString(["%s%s", "referral", "referralRewardPermille"], a)
100+
101+let S = 50
102+
103+let T = valueOrElse(getInteger(this, R), S)
104+
105+func U (V) = makeString(["%s%s%s", "referrer", K, V], a)
100106
101107
102-func T (U,V) = makeString(["%s%s%s", "unclaimedReferral", U, V], a)
108+func W (X,Y) = makeString(["%s%s%s", "unclaimedReferral", X, Y], a)
103109
104110
105-let W = l(A())
111+let Z = r(D())
106112
107-let X = addressFromStringValue(W)
113+let aa = addressFromStringValue(Z)
108114
109-let Y = 1
115+let ab = 1
110116
111-let Z = 2
117+let ac = 2
112118
113-let aa = 3
119+let ad = 3
114120
115-let ab = 4
121+let ae = 4
116122
117-func ac () = "%s__config"
123+func af () = "%s__config"
118124
119125
120-func ad () = addressFromStringValue(valueOrErrorMessage(getString(this, A()), (("mandatory this." + A()) + " is not defined")))
126+func ag () = addressFromStringValue(valueOrErrorMessage(getString(this, D()), (("mandatory this." + D()) + " is not defined")))
121127
122128
123-let ae = ad()
129+let ah = ag()
124130
125-let af = split(value(getString(ae, ac())), a)[1]
131+let ai = split(value(getString(ah, af())), a)[1]
126132
127-let ag = fromBase58String(af)
133+let aj = fromBase58String(ai)
128134
129-func ah () = split(l(ac()), a)
135+func ak () = split(r(af()), a)
130136
131137
132-func ai (af,aj,ak,w) = makeString(["%s%s%s%d", af, aj, ak, toString(w)], a)
138+func al (ai,am,an,z) = makeString(["%s%s%s%d", ai, am, an, toString(z)], a)
133139
134140
135-func al () = {
136- let am = ah()
137- valueOrErrorMessage(addressFromString(am[aa]), "boosting contract address is not defined")
141+func ao () = {
142+ let ap = ak()
143+ valueOrErrorMessage(addressFromString(ap[ad]), "boosting contract address is not defined")
138144 }
139145
140146
141-func an () = "%s%s__gwxRewardEmissionPart__startHeight"
147+let aq = "%s__suspension"
148+
149+let ar = valueOrElse(getBoolean(this, aq), false)
150+
151+func as () = if (!(ar))
152+ then true
153+ else m("suspended")
142154
143155
144-func ao () = "%s__nextUserNum"
156+func at () = "%s%s__gwxRewardEmissionPart__startHeight"
145157
146158
147-func ap () = "%s%s__ratePerBlock__current"
159+func au () = "%s__nextUserNum"
148160
149161
150-func aq () = "%s%s__gwxHoldersReward__current"
162+func av (aw) = makeString(["%s%s%s__mapping__user2num", toString(aw)], a)
151163
152164
153-func ar () = "%s%s__gwxHoldersReward__next"
165+func ax () = "%s%s__ratePerBlock__current"
154166
155167
156-func as () = "%s%s__poolWeight__GWXvirtualPOOL"
168+func ay () = "%s%s__gwxHoldersReward__current"
157169
158170
159-func at () = "%s__nextProcessedUser"
171+func az () = "%s%s__gwxHoldersReward__next"
160172
161173
162-func au () = "%s__latestPeriod"
174+func aA () = "%s%s__poolWeight__GWXvirtualPOOL"
163175
164176
165-func av () = "%s__nextPeriod"
177+func aB (aC) = makeString(["%s%d", "userUnclaimed", toString(aC)], a)
166178
167179
168-func aw () = "%s__processingStage"
180+func aD () = makeString(["%s%s", "config", "referralsContractAddress"], a)
169181
170182
171-func ax () = "%s__nextProcessedPeriod"
183+let aE = addressFromStringValue(r(aD()))
184+
185+func aF (aG,aH) = makeString(["%s%s%s%s", "tradingReward", "history", aG, toBase58String(aH.transactionId)], a)
172186
173187
174-func ay (az) = makeString(["%s%d", "userUnclaimed", toString(az)], a)
188+func aI (aw) = makeString(["%s%s", "tradingReward", aw], a)
175189
176190
177-func aA (az) = makeString(["%s%d__nextClaimedPeriod", toString(az)], a)
191+func aJ () = makeString(["%s", "maxRecipients"], a)
178192
179193
180-func aB (az) = makeString(["%s%d__lastProcessedPeriod", toString(az)], a)
181-
182-
183-func aC (aD) = makeString(["%s%d__startHeightForPeriod", toString(aD)], a)
184-
185-
186-func aE (aD) = makeString(["%s%d__auxEmissionReward", toString(aD)], a)
187-
188-
189-func aF (aD) = makeString(["%s%d__totalAmountForPeriod", toString(aD)], a)
190-
191-
192-func aG () = "%s__lastPayoutInfo"
193-
194-
195-func aH (aD,aI,aJ) = makeString(["%d%d%d", toString(aD), toString(aI), toString(aJ)], a)
196-
197-
198-func aK (aD) = makeString(["%s%s%d__payouts__history", toString(aD)], a)
199-
200-
201-func aL (aD) = makeString(["%s%d__totalWeightForPeriod", toString(aD)], a)
202-
203-
204-func aM (aD,az) = makeString(["%s%d%s%d__paramByPeriod", toString(az), "k", toString(aD)], a)
205-
206-
207-func aN (aD,az) = makeString(["%s%d%s%d__paramByPeriod", toString(az), "b", toString(aD)], a)
208-
209-
210-func aO (aD,az) = makeString(["%s%d%s%d__paramByPeriod", toString(az), "weight", toString(aD)], a)
211-
212-
213-func aP () = makeString(["%s%s", "config", "referralsContractAddress"], a)
214-
215-
216-let aQ = addressFromStringValue(l(aP()))
217-
218-func aR (aS,aT) = makeString(["%s%s%s%s", "tradingReward", "history", aS, toBase58String(aT.transactionId)], a)
219-
220-
221-func aU (aV) = makeString(["%s%s", "tradingReward", aV], a)
222-
223-
224-func aW () = makeString(["%s", "maxRecipients"], a)
225-
226-
227-func aX (aY,aS,aZ,aT) = {
228- let ba = makeString(["%s%s%s%s__history", aY, aS, toBase58String(aT.transactionId)], a)
229- let bb = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aZ)], a)
230- StringEntry(ba, bb)
194+func aK (aL,aG,aM,aH) = {
195+ let aN = makeString(["%s%s%s%s__history", aL, aG, toBase58String(aH.transactionId)], a)
196+ let aO = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aM)], a)
197+ StringEntry(aN, aO)
231198 }
232199
233200
234-func bc () = "%s__managerPublicKey"
201+func aP () = "%s__managerPublicKey"
235202
236203
237-func bd () = "%s__managerVaultAddress"
204+func aQ () = "%s__managerVaultAddress"
238205
239206
240-func be () = {
241- let bf = getString(bd())
242- if ($isInstanceOf(bf, "String"))
207+func aR () = {
208+ let aS = getString(aQ())
209+ if ($isInstanceOf(aS, "String"))
243210 then {
244- let bg = bf
245- addressFromStringValue(bg)
211+ let aT = aS
212+ addressFromStringValue(aT)
246213 }
247214 else this
248215 }
249216
250217
251-func bh () = {
252- let bi = be()
253- let bf = getString(bi, bc())
254- if ($isInstanceOf(bf, "String"))
218+func aU () = {
219+ let aV = aR()
220+ let aS = getString(aV, aP())
221+ if ($isInstanceOf(aS, "String"))
255222 then {
256- let bg = bf
257- fromBase58String(bg)
223+ let aT = aS
224+ fromBase58String(aT)
258225 }
259- else if ($isInstanceOf(bf, "Unit"))
226+ else if ($isInstanceOf(aS, "Unit"))
260227 then unit
261228 else throw("Match error")
262229 }
263230
264231
265-func bj (aT) = {
266- let bk = throw("Permission denied")
267- let bf = bh()
268- if ($isInstanceOf(bf, "ByteVector"))
232+func aW (aH) = {
233+ let aX = throw("Permission denied")
234+ let aS = aU()
235+ if ($isInstanceOf(aS, "ByteVector"))
269236 then {
270- let bl = bf
271- if ((aT.callerPublicKey == bl))
237+ let aY = aS
238+ if ((aH.callerPublicKey == aY))
272239 then true
273- else bk
240+ else aX
274241 }
275- else if ($isInstanceOf(bf, "Unit"))
276- then if ((aT.caller == this))
242+ else if ($isInstanceOf(aS, "Unit"))
243+ then if ((aH.caller == this))
277244 then true
278- else bk
245+ else aX
279246 else throw("Match error")
280247 }
281248
282249
283-func bm (bn,bo,aD,az) = {
284- let bp = aB(az)
285- let bq = aM(aD, az)
286- let br = getInteger(bn, bq)
287- let bs = aO(aD, az)
288- if (isDefined(br))
289- then {
290- let bt = value(br)
291- let bu = value(getInteger(bn, aN(aD, az)))
292- let bv = ((bt * bo) + bu)
293- if ((bv > 0))
294- then $Tuple2((bv / b), [IntegerEntry(bp, aD), IntegerEntry(bs, bv)])
295- else $Tuple2(0, nil)
296- }
297- else {
298- let bw = getInteger(this, bp)
299- if (if (isDefined(bw))
300- then (aD >= value(bw))
301- else false)
302- then {
303- let bx = value(bw)
304- let bt = value(getInteger(bn, aM(bx, az)))
305- let bu = value(getInteger(bn, aN(bx, az)))
306- let bv = ((bt * bo) + bu)
307- if ((bv > 0))
308- then $Tuple2((bv / b), [IntegerEntry(bs, bv)])
309- else $Tuple2(0, nil)
310- }
311- else $Tuple2(0, nil)
312- }
250+func aZ (an,aw) = {
251+ let o = makeString(["%s%s%s", "mapping", "user2num", aw], a)
252+ parseIntValue(valueOrErrorMessage(getString(Address(fromBase58String(an)), o), ((("User address " + aw) + " is not found in boosting contract data, key=") + o)))
313253 }
314254
315255
316-func by (bn,bo,aD,az) = {
317- let bs = aO(aD, az)
318- let bz = getInteger(bs)
319- let bf = bz
320- if ($isInstanceOf(bf, "Unit"))
321- then 0
322- else if ($isInstanceOf(bf, "Int"))
323- then {
324- let bv = bf
325- (bv / b)
326- }
327- else throw("Match error")
256+func ba (aw) = valueOrElse(getInteger(this, aI(aw)), 0)
257+
258+
259+func bb () = makeString(["%s", "rewardPerGwxIntegral"], a)
260+
261+
262+func bc () = {
263+ let bd = "%s%s__gwx__total"
264+ getInteger(ao(), bd)
328265 }
329266
330267
331-func bA (ak,aV) = {
332- let i = makeString(["%s%s%s", "mapping", "user2num", aV], a)
333- parseIntValue(valueOrErrorMessage(getString(Address(fromBase58String(ak)), i), ((("User address " + aV) + " is not found in boosting contract data, key=") + i)))
268+func be (aw) = {
269+ func bf (aw) = makeString(["%s%s__gwxAmountTotal", toString(aw)], a)
270+
271+ getInteger(ao(), bf(aw))
334272 }
335273
336274
337-func bB () = h(av())
338-
339-
340-func bC (aV) = {
341- let am = ah()
342- let bD = bA(am[aa], aV)
343- let bE = getInteger(ay(bD))
344- let bf = bE
345- if ($isInstanceOf(bf, "Unit"))
346- then $Tuple2(0, nil)
347- else if ($isInstanceOf(bf, "Int"))
275+func bg () = {
276+ let bh = valueOrElse({
277+ let aS = getString(this, bb())
278+ if ($isInstanceOf(aS, "String"))
348279 then {
349- let bF = bf
350- $Tuple2(bF, [IntegerEntry(ay(bD), 0)])
280+ let aT = aS
281+ parseBigInt(aT)
351282 }
352- else throw("Match error")
283+ else if ($isInstanceOf(aS, "Unit"))
284+ then unit
285+ else throw("Match error")
286+ }, e)
287+ let bi = valueOrErrorMessage(getInteger(this, at()), k(("invalid " + at())))
288+ let bj = valueOrErrorMessage(getInteger(aa, ax()), k(("invalid " + ax())))
289+ let bk = valueOrElse(getInteger(aa, ay()), 0)
290+ let bl = valueOrElse(bc(), 0)
291+ let bm = toBigInt((height - bi))
292+ let bn = toBigInt(bl)
293+ let bo = (bh + (if ((bn == e))
294+ then e
295+ else fraction(bm, ((toBigInt(bj) * toBigInt(bk)) * i), (bn * d))))
296+ $Tuple2([IntegerEntry(at(), height), StringEntry(bb(), toString(bo))], bo)
353297 }
354298
355299
356-func bG (aV) = valueOrElse(getInteger(this, aU(aV)), 0)
300+func bp (aw) = makeString(["%s%s", "rewardPerGwxIntegralUserLast", toString(aw)], a)
357301
358302
359-@Callable(aT)
360-func tradeRewardInternal (bH,bI,bJ,bK) = if ((bK == size(bI)))
361- then nil
362- else {
363- let bL = [if ((aT.caller == this))
364- then true
365- else q("Permission denied"), if ((bH >= bJ[bK]))
366- then true
367- else q("insufficient payment assetId")]
368- if ((bL == bL))
303+func bq (aw,br) = {
304+ let bs = bg()
305+ let bt = bs._1
306+ let bo = bs._2
307+ let bu = {
308+ let aS = getString(this, bp(aw))
309+ if ($isInstanceOf(aS, "String"))
369310 then {
370- let bM = invoke(this, "tradeRewardInternal", [(bH - bJ[bK]), bI, bJ, (bK + 1)], nil)
371- if ((bM == bM))
372- then {
373- let bN = aR(bI[bK], aT)
374- let aV = addressFromStringValue(bI[bK])
375- $Tuple2([IntegerEntry(bN, bJ[bK]), IntegerEntry(aU(bI[bK]), bJ[bK])], bM)
376- }
377- else throw("Strict value is not equal to itself.")
311+ let aT = aS
312+ valueOrErrorMessage(parseBigInt(aT), k("invalid user last integral"))
378313 }
379- else throw("Strict value is not equal to itself.")
314+ else if ($isInstanceOf(aS, "Unit"))
315+ then bo
316+ else throw("Match error")
380317 }
318+ let bv = getString(ao(), av(aw))
319+ let bw = valueOrElse(getInteger(aB(br)), 0)
320+ let bx = valueOrElse(be(aw), 0)
321+ let by = (toInt(fraction(toBigInt(bx), (bo - bu), i)) + bw)
322+ $Tuple2(([StringEntry(bp(aw), toString(bo))] ++ bt), by)
323+ }
381324
382325
326+func bz (bA) = {
327+ let aw = valueOrErrorMessage(addressFromString(bA), k("invalid user address"))
328+ let ap = ak()
329+ let br = aZ(ap[ad], bA)
330+ let bB = bq(aw, br)
331+ let bC = bB._1
332+ let bD = bB._2
333+ $Tuple2(bD, ([IntegerEntry(aB(br), 0)] ++ bC))
334+ }
383335
384-@Callable(aT)
385-func updateReferralActivity (aV,bO) = {
386- let bP = getString(aQ, R(aV))
387- let bQ = if ((bP == unit))
388- then unit
389- else invoke(aQ, "updateReferralActivity", [H, aV, (bO >= K)], nil)
390- if ((bQ == bQ))
391- then $Tuple2(nil, unit)
336+
337+@Callable(aH)
338+func refreshUserReward (bE,br) = {
339+ let bF = as()
340+ if ((bF == bF))
341+ then {
342+ let bG = if ((aH.caller == ao()))
343+ then true
344+ else m("permission denied")
345+ if ((bG == bG))
346+ then {
347+ let bH = bq(Address(bE), br)
348+ let bC = bH._1
349+ let bD = bH._2
350+ $Tuple2(([IntegerEntry(aB(br), bD)] ++ bC), bD)
351+ }
352+ else throw("Strict value is not equal to itself.")
353+ }
392354 else throw("Strict value is not equal to itself.")
393355 }
394356
395357
396358
397-@Callable(aT)
398-func finalizeHelper () = {
399- let bR = valueOrElse(getInteger(aw()), e)
400- let bS = h(ax())
401- let bT = h(at())
402- let bU = h(au())
403- let bV = valueOrElse(getInteger(al(), ao()), 0)
404- let bW = aL(bS)
405- let bX = h(aL(bS))
406- let bo = h(aC(bS))
407- if ((bS > bU))
408- then $Tuple2(nil, false)
409- else if ((bR == e))
410- then {
411- let bY = bm(al(), bo, bS, bT)
412- let bZ = bY._1
413- let ca = bY._2
414- let cb = (bX + bZ)
415- let cc = if (((bV - 1) > bT))
416- then [IntegerEntry(at(), (bT + 1))]
417- else [IntegerEntry(aw(), f), IntegerEntry(at(), 0)]
418- $Tuple2((([IntegerEntry(bW, cb)] ++ cc) ++ ca), true)
359+@Callable(aH)
360+func tradeRewardInternal (bI,bJ,bK,bL) = {
361+ let bF = as()
362+ if ((bF == bF))
363+ then if ((bL == size(bJ)))
364+ then nil
365+ else {
366+ let bM = [if ((aH.caller == this))
367+ then true
368+ else m("Permission denied"), if ((bI >= bK[bL]))
369+ then true
370+ else m("insufficient payment assetId")]
371+ if ((bM == bM))
372+ then {
373+ let bN = invoke(this, "tradeRewardInternal", [(bI - bK[bL]), bJ, bK, (bL + 1)], nil)
374+ if ((bN == bN))
375+ then {
376+ let bO = aF(bJ[bL], aH)
377+ let aw = addressFromStringValue(bJ[bL])
378+ $Tuple2([IntegerEntry(bO, bK[bL]), IntegerEntry(aI(bJ[bL]), bK[bL])], bN)
379+ }
380+ else throw("Strict value is not equal to itself.")
381+ }
382+ else throw("Strict value is not equal to itself.")
419383 }
420- else if ((bR == f))
421- then {
422- let bZ = by(al(), bo, bS, bT)
423- let cd = fraction(h(aF(bS)), bZ, bX)
424- let ce = fraction(h(aE(bS)), bZ, bX)
425- let cf = (ce + cd)
426- let bE = getInteger(ay(bT))
427- let aV = getStringValue(al(), D(bT))
428- let bP = getString(aQ, R(aV))
429- let bQ = if ((bP == unit))
430- then unit
431- else invoke(aQ, "updateReferralActivity", [H, aV, (bZ >= K)], nil)
432- if ((bQ == bQ))
433- then {
434- let cg = if (if ((bP == unit))
435- then true
436- else (K > bZ))
437- then unit
438- else {
439- let ch = fraction(cf, N, b)
440- let ci = fraction(cf, Q, b)
441- invoke(aQ, "incUnclaimed", [H, aV, ch, ci], nil)
442- }
443- if ((cg == cg))
444- then {
445- let cj = [IntegerEntry(ay(bT), (valueOrElse(bE, 0) + cf))]
446- let cc = if (((bV - 1) > bT))
447- then [IntegerEntry(at(), (bT + 1))]
448- else [IntegerEntry(ax(), (bS + 1)), IntegerEntry(at(), 0), DeleteEntry(aw())]
449- $Tuple2((cj ++ cc), true)
450- }
451- else throw("Strict value is not equal to itself.")
452- }
453- else throw("Strict value is not equal to itself.")
454- }
455- else throw("invalid processing stage")
456- }
457-
458-
459-
460-@Callable(aT)
461-func finalizeWrapper (ck) = {
462- let cl = {
463- let cm = invoke(this, "finalizeHelper", nil, nil)
464- if ($isInstanceOf(cm, "Boolean"))
465- then cm
466- else throw(($getType(cm) + " couldn't be cast to Boolean"))
467- }
468- if ((cl == cl))
469- then if (!(cl))
470- then if ((ck == w))
471- then throw("Nothing to process")
472- else $Tuple2(nil, unit)
473- else if ((ck > 0))
474- then $Tuple2(nil, invoke(this, "finalizeWrapper", [(ck - 1)], nil))
475- else $Tuple2(nil, unit)
476384 else throw("Strict value is not equal to itself.")
477385 }
478386
479387
480388
481-@Callable(aT)
482-func processPendingPeriodsAndUsers () = $Tuple2(nil, invoke(this, "finalizeWrapper", [w], nil))
389+@Callable(aH)
390+func updateReferralActivity (aw,bP) = {
391+ let bF = as()
392+ if ((bF == bF))
393+ then {
394+ let bQ = getString(aE, U(aw))
395+ let bR = if ((bQ == unit))
396+ then unit
397+ else invoke(aE, "updateReferralActivity", [K, aw, (bP >= N)], nil)
398+ if ((bR == bR))
399+ then $Tuple2(nil, unit)
400+ else throw("Strict value is not equal to itself.")
401+ }
402+ else throw("Strict value is not equal to itself.")
403+ }
483404
484405
485406
486-@Callable(aT)
487-func deposit () = {
488- let cn = if ((aT.caller == C))
489- then true
490- else bj(aT)
491- if ((cn == cn))
407+@Callable(aH)
408+func processPendingPeriodsAndUsers () = $Tuple2(nil, m("deprecated"))
409+
410+
411+
412+@Callable(aH)
413+func claimReward () = {
414+ let bF = as()
415+ if ((bF == bF))
492416 then {
493- let aD = bB()
494- let co = (height - j(an()))
495- let cp = valueOrErrorMessage(getInteger(X, ap()), (("mandatory emission_contract." + ap()) + " is not defined"))
496- let cq = valueOrElse(getInteger(X, aq()), 0)
497- if ((cq == cq))
417+ let ap = ak()
418+ let aw = aH.caller
419+ let bA = toString(aw)
420+ let bS = bz(bA)
421+ let aM = bS._1
422+ let bC = bS._2
423+ let bT = if ((aM > 0))
424+ then true
425+ else throw("nothing to claim")
426+ if ((bT == bT))
498427 then {
499- let cr = fraction((co * cq), cp, c)
500- let cs = if ((cr > 0))
501- then invoke(X, "emit", [cr], nil)
502- else unit
503- if ((cs == cs))
428+ let bx = {
429+ let bU = invoke(ao(), "getUserGwxAmount", [bA], nil)
430+ if ($isInstanceOf(bU, "Int"))
431+ then bU
432+ else throw(($getType(bU) + " couldn't be cast to Int"))
433+ }
434+ let bQ = getString(aE, U(bA))
435+ let bR = if ((bQ == unit))
436+ then unit
437+ else invoke(aE, "updateReferralActivity", [K, aw, (bx >= N)], nil)
438+ if ((bR == bR))
504439 then {
505- let ct = 0
506- let cu = aH(aD, ct, cr)
507- let cv = {
508- let cm = invoke(X, "gwxHoldersRewardUpdate", nil, nil)
509- if ($isInstanceOf(cm, "Boolean"))
510- then cm
511- else throw(($getType(cm) + " couldn't be cast to Boolean"))
512- }
513- if ((cv == cv))
440+ let bV = if (if ((bQ == unit))
441+ then true
442+ else (N > bx))
443+ then unit
444+ else {
445+ let bW = fraction(aM, Q, b)
446+ let bX = fraction(aM, T, b)
447+ invoke(aE, "incUnclaimed", [K, aw, bW, bX], nil)
448+ }
449+ if ((bV == bV))
514450 then {
515- let cw = (ct + cr)
516- let cx = if (if ((cw == 0))
517- then !(cv)
518- else false)
519- then nil
520- else [IntegerEntry(au(), aD), IntegerEntry(aC(aD), height), IntegerEntry(aE(aD), cr), IntegerEntry(an(), height), IntegerEntry(aF(aD), ct), IntegerEntry(av(), (aD + 1)), StringEntry(aG(), cu), StringEntry(aK(aD), cu)]
521- $Tuple2(cx, unit)
451+ let bY = invoke(aa, "emit", [aM], nil)
452+ if ((bY == bY))
453+ then {
454+ let bZ = {
455+ let bU = invoke(aE, "claim", [K], nil)
456+ if ($isInstanceOf(bU, "Int"))
457+ then bU
458+ else throw(($getType(bU) + " couldn't be cast to Int"))
459+ }
460+ if ((bZ == bZ))
461+ then {
462+ let ca = (aM + bZ)
463+ $Tuple2(([ScriptTransfer(aH.caller, aM, aj), aK("claim", bA, ca, aH)] ++ bC), ca)
464+ }
465+ else throw("Strict value is not equal to itself.")
466+ }
467+ else throw("Strict value is not equal to itself.")
522468 }
523469 else throw("Strict value is not equal to itself.")
524470 }
525471 else throw("Strict value is not equal to itself.")
526472 }
527473 else throw("Strict value is not equal to itself.")
528474 }
529475 else throw("Strict value is not equal to itself.")
530476 }
531477
532478
533479
534-@Callable(aT)
535-func claimReward () = {
536- let am = ah()
537- let cy = toString(aT.caller)
538- let cz = bC(cy)
539- let aZ = cz._1
540- let cx = cz._2
541- let cA = if ((aZ > 0))
542- then true
543- else throw("Nothing to claim")
544- if ((cA == cA))
545- then {
546- let cB = 0
547- let cC = {
548- let cm = invoke(aQ, "claim", [H], nil)
549- if ($isInstanceOf(cm, "Int"))
550- then cm
551- else throw(($getType(cm) + " couldn't be cast to Int"))
552- }
553- let cD = (aZ + cC)
554- $Tuple2(([ScriptTransfer(aT.caller, cD, fromBase58String(am[Y])), aX("claim", cy, aZ, aT)] ++ cx), [cD, cB])
555- }
480+@Callable(aH)
481+func claimRewardREADONLY (cb) = {
482+ let cc = bz(cb)
483+ let aM = cc._1
484+ let bC = cc._2
485+ let cd = valueOrElse(getInteger(aE, W(K, cb)), 0)
486+ let ca = (aM + cd)
487+ $Tuple2(nil, ca)
488+ }
489+
490+
491+
492+@Callable(aH)
493+func onEmissionForGwxStart () = {
494+ let bF = as()
495+ if ((bF == bF))
496+ then if ((aH.caller != C))
497+ then throw("permissions denied")
498+ else [IntegerEntry(at(), height)]
556499 else throw("Strict value is not equal to itself.")
557500 }
558501
559502
560503
561-@Callable(aT)
562-func claimRewardREADONLY (cy) = {
563- let cE = bC(cy)
564- let aZ = cE._1
565- let cx = cE._2
566- let cF = valueOrElse(getInteger(aQ, T(H, cy)), 0)
567- let cD = (aZ + cF)
568- $Tuple2(nil, cD)
569- }
570-
571-
572-
573-@Callable(aT)
574-func latestFinalizedPeriodREADONLY (cy) = $Tuple2(nil, valueOrElse(getInteger(this, au()), -1))
575-
576-
577-
578-@Callable(aT)
579-func latestFinalizedPeriodInfoREADONLY (cy) = $Tuple2(nil, k(aG()))
580-
581-
582-
583-@Callable(aT)
584-func calcGwxParamsREADONLY (cG,cH,cI) = {
585- let cJ = (cH + cI)
586- let cK = -(fraction(cG, b, cI))
587- let cL = (fraction(cG, b, cI) * cJ)
588- $Tuple2(nil, [cK, cL, bB()])
589- }
590-
591-
592-
593-@Callable(aT)
594-func calcGwxAmountStartREADONLY (cM,cN,cO) = {
595- let cP = fraction(cN, c, cO)
596- let bO = fraction(cM, cP, c)
597- $Tuple2(nil, [bO])
598- }
599-
600-
601-
602-@Callable(aT)
603-func onEmissionForGwxStart () = if ((aT.caller != z))
604- then throw("permissions denied")
605- else [IntegerEntry(an(), height)]
606-
607-
608-
609-@Callable(aT)
610-func latestPeriodEmissionRewardsREADONLY (cy) = {
611- let aD = bB()
612- $Tuple2(nil, [h(aE(aD))])
613- }
614-
615-
616-
617-@Callable(aT)
618-func calcD (cQ,cR,cS,cT,cU) = {
619- let cV = toBigInt(2)
620- let cW = parseBigIntValue(cT)
621- let cX = parseBigIntValue(cU)
622- let cY = parseBigIntValue(cQ)
623- let cZ = parseBigIntValue(cR)
624- let da = (parseBigIntValue(cS) * cW)
625- let bg = (cY + cZ)
626- if ((bg == d))
627- then $Tuple2(nil, toString(d))
628- else {
629- let db = (da * cV)
630- let dc = [0, 1, 2, 3, 4, 5, 6]
631- func dd (de,df) = {
632- let dg = de
633- let dh = dg._1
634- let di = dg._2
635- let dj = dg._3
636- if ((dj != unit))
637- then de
638- else {
639- let dk = (((dh * dh) * dh) / (((cY * cZ) * cV) * cV))
640- let dl = (((((db * bg) / cW) + (dk * cV)) * dh) / ((((db - cW) * dh) / cW) + ((cV + toBigInt(1)) * dk)))
641- let dm = t((dl - value(dh)))
642- if ((cX >= dm))
643- then $Tuple3(dl, dh, df)
644- else $Tuple3(dl, dh, unit)
645- }
646- }
647-
648- let dn = {
649- let do = dc
650- let dp = size(do)
651- let dq = $Tuple3(bg, unit, unit)
652- func dr (ds,dt) = if ((dt >= dp))
653- then ds
654- else dd(ds, do[dt])
655-
656- func du (ds,dt) = if ((dt >= dp))
657- then ds
658- else throw("List size exceeds 7")
659-
660- du(dr(dr(dr(dr(dr(dr(dr(dq, 0), 1), 2), 3), 4), 5), 6), 7)
661- }
662- let dl = dn._1
663- let di = dn._2
664- let dj = dn._3
665- if ((dj != unit))
666- then $Tuple2(nil, toString(dl))
667- else {
668- let dm = t((dl - value(di)))
669- throw(("D calculation error, dDiff = " + toString(dm)))
504+@Callable(aH)
505+func tradeReward (bJ,bK) = {
506+ let bF = as()
507+ if ((bF == bF))
508+ then {
509+ let ce = (size(bJ) == size(bK))
510+ let cf = valueOrElse(getInteger(aJ()), 0)
511+ let cg = aH.payments[0]
512+ let ch = cg.assetId
513+ let ci = cg.amount
514+ let bM = [if ((cf >= size(bJ)))
515+ then true
516+ else m("Too many recipients"), if (ce)
517+ then true
518+ else m("Arguments size mismatch"), if ((ch == aj))
519+ then true
520+ else m("Wrong asset payment")]
521+ if ((bM == bM))
522+ then {
523+ let bN = invoke(this, "tradeRewardInternal", [ci, bJ, bK, 0], nil)
524+ if ((bN == bN))
525+ then $Tuple2(nil, bN)
526+ else throw("Strict value is not equal to itself.")
670527 }
671- }
672- }
673-
674-
675-
676-@Callable(aT)
677-func tradeReward (bI,bJ) = {
678- let dv = (size(bI) == size(bJ))
679- let dw = valueOrElse(getInteger(aW()), 0)
680- let dx = aT.payments[0]
681- let dy = dx.assetId
682- let dz = dx.amount
683- let bL = [if ((dw >= size(bI)))
684- then true
685- else q("Too many recipients"), if (dv)
686- then true
687- else q("Arguments size mismatch"), if ((dy == ag))
688- then true
689- else q("Wrong asset payment")]
690- if ((bL == bL))
691- then {
692- let bM = invoke(this, "tradeRewardInternal", [dz, bI, bJ, 0], nil)
693- if ((bM == bM))
694- then $Tuple2(nil, bM)
695528 else throw("Strict value is not equal to itself.")
696529 }
697530 else throw("Strict value is not equal to itself.")
698531 }
699532
700533
701534
702-@Callable(aT)
535+@Callable(aH)
703536 func claimTradingReward () = {
704- let aV = aT.caller
705- let dA = toString(aV)
706- let dB = bG(dA)
707- if ((dB > 0))
708- then $Tuple2([ScriptTransfer(aV, dB, ag), IntegerEntry(aU(dA), 0)], dB)
709- else q("nothing to claim")
537+ let bF = as()
538+ if ((bF == bF))
539+ then {
540+ let aw = aH.caller
541+ let cj = toString(aw)
542+ let bD = ba(cj)
543+ if ((bD > 0))
544+ then $Tuple2([ScriptTransfer(aw, bD, aj), IntegerEntry(aI(cj), 0)], bD)
545+ else m("nothing to claim")
546+ }
547+ else throw("Strict value is not equal to itself.")
710548 }
711549
712550
713551
714-@Callable(aT)
715-func claimTradingRewardREADONLY (aV) = $Tuple2(nil, bG(aV))
552+@Callable(aH)
553+func claimTradingRewardREADONLY (aw) = $Tuple2(nil, ba(aw))
716554
717555
718-@Verifier(dC)
719-func dD () = {
720- let dE = {
721- let bf = bh()
722- if ($isInstanceOf(bf, "ByteVector"))
556+
557+@Callable(aH)
558+func suspend (ck) = {
559+ let bG = aW(aH)
560+ if ((bG == bG))
561+ then $Tuple2([BooleanEntry(aq, ck)], ck)
562+ else throw("Strict value is not equal to itself.")
563+ }
564+
565+
566+@Verifier(cl)
567+func cm () = {
568+ let cn = {
569+ let aS = aU()
570+ if ($isInstanceOf(aS, "ByteVector"))
723571 then {
724- let bl = bf
725- bl
572+ let aY = aS
573+ aY
726574 }
727- else if ($isInstanceOf(bf, "Unit"))
728- then dC.senderPublicKey
575+ else if ($isInstanceOf(aS, "Unit"))
576+ then cl.senderPublicKey
729577 else throw("Match error")
730578 }
731- sigVerify(dC.bodyBytes, dC.proofs[0], dE)
579+ sigVerify(cl.bodyBytes, cl.proofs[0], cn)
732580 }
733581

github/deemru/w8io/169f3d6 
133.13 ms