tx · FWL2HwD6oRFLzo6F455UKyxYYhaPwpX4iTJF1DskdgTa

3Mp5kisFrqESzrXxAMEPk2k69zpeF41czEE:  -0.01800000 Waves

2023.04.17 15:15 [2538555] smart account 3Mp5kisFrqESzrXxAMEPk2k69zpeF41czEE > SELF 0.00000000 Waves

{ "type": 13, "id": "FWL2HwD6oRFLzo6F455UKyxYYhaPwpX4iTJF1DskdgTa", "fee": 1800000, "feeAssetId": null, "timestamp": 1681733768066, "version": 2, "chainId": 84, "sender": "3Mp5kisFrqESzrXxAMEPk2k69zpeF41czEE", "senderPublicKey": "G349Uq3FTox7dRNLeAfAQeoACvwZ9iEnVSaHcEYn6j8J", "proofs": [ "FkJYDpztZ2K6TrAmR11929pQCqxUNes5CRjxR2uUgEpx4AAPo4X2b3eXKMVPMQzrxFFTmeazbkG1tV27RSUzQ5i" ], "script": "base64:BgKXGggCEgQKAggBEgASAwoBARIAEgASABIDCgEIEgMKAQgSAwoBCBIFCgMBAQESBQoDAQEBEgASAwoBCBIHCgUICAgICBIDCgEIEgAiA1NFUCIFU0NBTEUiBU1VTFQ4Igp6ZXJvQmlnSW50IhRwcm9jZXNzaW5nU3RhZ2VUb3RhbCIVcHJvY2Vzc2luZ1N0YWdlU2hhcmVzIg5nZXROdW1iZXJCeUtleSIDa2V5Ig9nZXROdW1iZXJPckZhaWwiDmdldFN0cmluZ0J5S2V5Ig9nZXRTdHJpbmdPckZhaWwiA2FicyIDdmFsIglhYnNCaWdJbnQiC2tleU1heERlcHRoIg9tYXhEZXB0aERlZmF1bHQiCG1heERlcHRoIhFrZXlGYWN0b3J5QWRkcmVzcyIRZmFjdG9yeUFkZHJlc3NTdHIiD2ZhY3RvcnlDb250cmFjdCISa2V5RW1pc3Npb25BZGRyZXNzIhlrZXlWb3RpbmdFbWlzc2lvbkNvbnRyYWN0IhZ2b3RpbmdFbWlzc2lvbkNvbnRyYWN0IhNrZXlOdW1Ub1VzZXJNYXBwaW5nIgNudW0iFmtleVJlZmVycmFsUHJvZ3JhbU5hbWUiGnJlZmVycmFsUHJvZ3JhbU5hbWVEZWZhdWx0IhNyZWZlcnJhbFByb2dyYW1OYW1lIhdrZXlSZWZlcnJhbE1pbkdXeEFtb3VudCIbcmVmZXJyYWxNaW5HV3hBbW91bnREZWZhdWx0IhRyZWZlcnJhbE1pbkdXeEFtb3VudCIZa2V5UmVmZXJyZXJSZXdhcmRQZXJtaWxsZSIdcmVmZXJyZXJSZXdhcmRQZXJtaWxsZURlZmF1bHQiFnJlZmVycmVyUmV3YXJkUGVybWlsbGUiGWtleVJlZmVycmFsUmV3YXJkUGVybWlsbGUiHXJlZmVycmFsUmV3YXJkUGVybWlsbGVEZWZhdWx0IhZyZWZlcnJhbFJld2FyZFBlcm1pbGxlIgtrZXlSZWZlcnJlciIPcmVmZXJyYWxBZGRyZXNzIhRrZXlVbmNsYWltZWRSZWZlcnJhbCILcHJvZ3JhbU5hbWUiDmNsYWltZXJBZGRyZXNzIhJlbWlzc2lvbkFkZHJlc3NTdHIiEGVtaXNzaW9uQ29udHJhY3QiDUlkeENmZ0Fzc2V0SWQiFklkeENmZ1BhY2VtYWtlckFkZHJlc3MiFklkeENmZ0Jvb3N0aW5nQ29udHJhY3QiDklkeENmZ01heERlcHRoIglrZXlDb25maWciFXJlYWRDb25maWdBcnJheU9yRmFpbCIMZm9ybWF0Q29uZmlnIgx3eEFzc2V0SWRTdHIiGm1hdGNoZXJQYWNlbWFrZXJBZGRyZXNzU3RyIhpib29zdGluZ0NvbnRyYWN0QWRkcmVzc1N0ciIWYm9vc3RpbmdDb250cmFjdE9yRmFpbCIIY2ZnQXJyYXkiH2tleUd3eFJld2FyZEVtaXNzaW9uU3RhcnRIZWlnaHQiDWtleVVzZXJzQ291bnQiFmtleVJhdGVQZXJCbG9ja0N1cnJlbnQiGmtleUd3eEhvbGRlcnNSZXdhcmRDdXJyZW50IhdrZXlHd3hIb2xkZXJzUmV3YXJkTmV4dCIUa2V5UG9vbFdlaWdodFZpcnR1YWwiFGtleU5leHRQcm9jZXNzZWRVc2VyIg9rZXlMYXRlc3RQZXJpb2QiDWtleU5leHRQZXJpb2QiEmtleVByb2Nlc3NpbmdTdGFnZSIWa2V5TmV4dFByb2Nlc3NlZFBlcmlvZCIQa2V5VXNlclVuY2xhaW1lZCIJdXNlckluZGV4IhtrZXlOZXh0VW5sYWltZWRQZXJpb2RPZlVzZXIiHGtleUxhc3RQcm9jZXNzZWRQZXJpb2RPZlVzZXIiEmtleUhlaWdodEZvclBlcmlvZCIGcGVyaW9kIh1rZXlBdXhFbWlzc2lvblJld2FyZEZvclBlcmlvZCIXa2V5VG90YWxBbW91bnRGb3JQZXJpb2QiEWtleUxhc3RQYXlvdXRJbmZvIhBQZXJpb2RQYXlvdXRJbmZvIg1tYXRjaGVyUmV3YXJkIg5lbWlzc2lvblJld2FyZCIUa2V5UGF5b3V0SGlzdG9yeUluZm8iF2tleVRvdGFsV2VpZ2h0Rm9yUGVyaW9kIhZrZXlVc2VyS1ZhbHVlRm9yUGVyaW9kIhZrZXlVc2VyQlZhbHVlRm9yUGVyaW9kIhZrZXlVc2VyV2VpZ2h0Rm9yUGVyaW9kIhtrZXlSZWZlcnJhbHNDb250cmFjdEFkZHJlc3MiHnJlZmVycmFsc0NvbnRyYWN0QWRkcmVzc09yRmFpbCIMSGlzdG9yeUVudHJ5IgR0eXBlIgR1c2VyIgZhbW91bnQiAWkiCmhpc3RvcnlLRVkiC2hpc3RvcnlEQVRBIhNrZXlNYW5hZ2VyUHVibGljS2V5IhprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleSIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCIHJG1hdGNoMCIBcyIdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQiC211c3RNYW5hZ2VyIgJwZCICcGsiDmNhbGNVc2VyV2VpZ2h0Ihdib29zdGluZ0NvbnRyYWN0QWRkcmVzcyIPaGVpZ2h0Rm9yUGVyaW9kIgVrTGFzdCIEa0tleSIEa1JhdyILa1VzZXJXZWlnaHQiAWsiAWIiAXciAXAiAnB2IhZjYWxjVXNlcldlaWdodEZvckNsYWltIhB1c2VyV2VpZ2h0T3JVbml0IhVnZXRVc2VySW5kZXhCeUFkZHJlc3MiC3VzZXJBZGRyZXNzIgpuZXh0UGVyaW9kIhFjb21tb25DbGFpbVJld2FyZCIHdXNlcklkeCITdXNlclVuY2xhaW1lZE9wdGlvbiIBdSIOZ1d4QW1vdW50U3RhcnQiCHJlZmVycmVyIhFhY3RpdmVSZWZlcnJhbEludiIPcHJvY2Vzc2luZ1N0YWdlIg1jdXJyZW50UGVyaW9kIgtjdXJyZW50VXNlciIMbGF0ZXN0UGVyaW9kIgp1c2Vyc0NvdW50Ig50b3RhbFdlaWdodEtleSILdG90YWxXZWlnaHQiDSR0MDEyNDE1MTI1MzEiCnVzZXJXZWlnaHQiC3VzZXJBY3Rpb25zIg50b3RhbFdlaWdodE5ldyIRcHJvY2Vzc2luZ0FjdGlvbnMiGnVzZXJBbW91bnRNYXRjaGVyRm9yUGVyaW9kIht1c2VyQW1vdW50RW1pc3Npb25Gb3JQZXJpb2QiD3VzZXJUb3RhbEFtb3VudCILcmVmZXJyYWxJbnYiDnJlZmVycmVyUmV3YXJkIg5yZWZlcnJhbFJld2FyZCIQdW5jbGFpbWVkQWN0aW9ucyIHY291bnRlciIGcmVzdWx0IgFAIgtjaGVja0NhbGxlciIGZGVsdGFIIgxlbWlzc2lvblJhdGUiF2d3eEhvbGRlcnNSZXdhcmRDdXJyZW50IglhdXhBbW91bnQiAmVtIgttYXRjaGVyUGFydCIKcGF5b3V0SW5mbyIWZ3d4SG9sZGVyc1Jld2FyZFVwZGF0ZSIHYWRkcmVzcyINJHQwMTc1MjUxNzU3NSIHYWN0aW9ucyILY2hlY2tBbW91bnQiEmFtb3VudEZyb21FbWlzc2lvbiIPY2xhaW1lZFJlZmVycmFsIgt0b3RhbEFtb3VudCINJHQwMTgxNDgxODE5OCIRcmVmZXJyYWxVbmNsYWltZWQiDmd3eEFtb3VudFN0YXJ0Ig9sb2NrU3RhcnRIZWlnaHQiEmxvY2tEdXJhdGlvbkJsb2NrcyINbG9ja0VuZEhlaWdodCIMc2NhbGU4UGFyYW1LIgxzY2FsZThQYXJhbUIiDHd4TG9ja0Ftb3VudCIMbG9ja0R1cmF0aW9uIg9tYXhMb2NrRHVyYXRpb24iB2NvZWZmWDgiC3gxQmlnSW50U3RyIgt4MkJpZ0ludFN0ciIMYW1wQmlnSW50U3RyIhNhUHJlY2lzaW9uQmlnSW50U3RyIhh0YXJnZXRQcmVjaXNpb25CaWdJbnRTdHIiBm5Db2lucyIKYVByZWNpc2lvbiIPdGFyZ2V0UHJlY2lzaW9uIgJ4MSICeDIiA2FtcCIDYW5uIgNhcnIiBGNhbGMiA2FjYyIDY3VyIg0kdDAyMDgzMTIwODU4IgFkIgVkUHJldiIFZm91bmQiAmRwIgVkTmV4dCIFZERpZmYiDSR0MDIxNDU2MjE1MTkiAiRsIgIkcyIFJGFjYzAiBSRmMF8xIgIkYSICJGkiBSRmMF8yIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSIVY2hlY2tNYW5hZ2VyUHVibGljS2V5IgJwbSIFaGFzUE0iB2NoZWNrUE0iAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleVMAAWECAl9fAAFiAOgHAAFjAIDC1y8AAWQJALYCAQAAAAFlAAAAAWYAAQEBZwEBaAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFoAAABAWkBAWgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzBQFoCQCsAgIJAKwCAgIPbWFuZGF0b3J5IHRoaXMuBQFoAg8gaXMgbm90IGRlZmluZWQBAWoBAWgJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUBaAIAAQFrAQFoCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUBaAkArAICCQCsAgICD21hbmRhdG9yeSB0aGlzLgUBaAIPIGlzIG5vdCBkZWZpbmVkAQFsAQFtAwkAZgIAAAUBbQkBAS0BBQFtBQFtAQFuAQFtAwkAvwICBQFkBQFtCQC+AgEFAW0FAW0AAW8CDCVzX19tYXhEZXB0aAABcAAeAAFxCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAW8FAXABAXIAAhwlcyVzX19jb25maWdfX2ZhY3RvcnlBZGRyZXNzAAFzCQEBawEJAQFyAAABdAkBEUBleHRyTmF0aXZlKDEwNjIpAQUBcwEBdQACHSVzJXNfX2NvbmZpZ19fZW1pc3Npb25BZGRyZXNzAQF2AAkAuQkCCQDMCAICAiVzCQDMCAICFnZvdGluZ0VtaXNzaW9uQ29udHJhY3QFA25pbAUBYQABdwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUBdAkBAXYAAQF4AQF5CQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICB21hcHBpbmcJAMwIAgIIbnVtMnVzZXIJAMwIAgkApAMBBQF5BQNuaWwFAWEAAXoJALkJAgkAzAgCAgQlcyVzCQDMCAICCHJlZmVycmFsCQDMCAICC3Byb2dyYW1OYW1lBQNuaWwFAWEAAUECBnd4bG9jawABQgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQF6BQFBAAFDCQC5CQIJAMwIAgIEJXMlcwkAzAgCAghyZWZlcnJhbAkAzAgCAgxtaW5HV3hBbW91bnQFA25pbAUBYQABRAkAaAIA9AMFAWMAAUUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUBQwUBRAABRgkAuQkCCQDMCAICBCVzJXMJAMwIAgIIcmVmZXJyYWwJAMwIAgIWcmVmZXJyZXJSZXdhcmRQZXJtaWxsZQUDbmlsBQFhAAFHADIAAUgJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUBRgUBRwABSQkAuQkCCQDMCAICBCVzJXMJAMwIAgIIcmVmZXJyYWwJAMwIAgIWcmVmZXJyYWxSZXdhcmRQZXJtaWxsZQUDbmlsBQFhAAFKADIAAUsJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUBSQUBSgEBTAEBTQkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAghyZWZlcnJlcgkAzAgCBQFCCQDMCAIFAU0FA25pbAUBYQEBTgIBTwFQCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICEXVuY2xhaW1lZFJlZmVycmFsCQDMCAIFAU8JAMwIAgUBUAUDbmlsBQFhAAFRCQEBawEJAQF1AAABUgkBEUBleHRyTmF0aXZlKDEwNjIpAQUBUQABUwABAAFUAAIAAVUAAwABVgAEAQFXAAIKJXNfX2NvbmZpZwEBWAAJALUJAgkBAWsBCQEBVwAFAWEBAVkEAVoCYWECYWIBcQkAuQkCCQDMCAICCCVzJXMlcyVkCQDMCAIFAVoJAMwIAgUCYWEJAMwIAgUCYWIJAMwIAgkApAMBBQFxBQNuaWwFAWEBAmFjAAQCYWQJAQFYAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYWQFAVUCKGJvb3N0aW5nIGNvbnRyYWN0IGFkZHJlc3MgaXMgbm90IGRlZmluZWQBAmFlAAIoJXMlc19fZ3d4UmV3YXJkRW1pc3Npb25QYXJ0X19zdGFydEhlaWdodAECYWYAAg8lc19fbmV4dFVzZXJOdW0BAmFnAAIbJXMlc19fcmF0ZVBlckJsb2NrX19jdXJyZW50AQJhaAACHyVzJXNfX2d3eEhvbGRlcnNSZXdhcmRfX2N1cnJlbnQBAmFpAAIcJXMlc19fZ3d4SG9sZGVyc1Jld2FyZF9fbmV4dAECYWoAAiAlcyVzX19wb29sV2VpZ2h0X19HV1h2aXJ0dWFsUE9PTAECYWsAAhUlc19fbmV4dFByb2Nlc3NlZFVzZXIBAmFsAAIQJXNfX2xhdGVzdFBlcmlvZAECYW0AAg4lc19fbmV4dFBlcmlvZAECYW4AAhMlc19fcHJvY2Vzc2luZ1N0YWdlAQJhbwACFyVzX19uZXh0UHJvY2Vzc2VkUGVyaW9kAQJhcAECYXEJALkJAgkAzAgCAgQlcyVkCQDMCAICDXVzZXJVbmNsYWltZWQJAMwIAgkApAMBBQJhcQUDbmlsBQFhAQJhcgECYXEJALkJAgkAzAgCAhclcyVkX19uZXh0Q2xhaW1lZFBlcmlvZAkAzAgCCQCkAwEFAmFxBQNuaWwFAWEBAmFzAQJhcQkAuQkCCQDMCAICGSVzJWRfX2xhc3RQcm9jZXNzZWRQZXJpb2QJAMwIAgkApAMBBQJhcQUDbmlsBQFhAQJhdAECYXUJALkJAgkAzAgCAholcyVkX19zdGFydEhlaWdodEZvclBlcmlvZAkAzAgCCQCkAwEFAmF1BQNuaWwFAWEBAmF2AQJhdQkAuQkCCQDMCAICFyVzJWRfX2F1eEVtaXNzaW9uUmV3YXJkCQDMCAIJAKQDAQUCYXUFA25pbAUBYQECYXcBAmF1CQC5CQIJAMwIAgIaJXMlZF9fdG90YWxBbW91bnRGb3JQZXJpb2QJAMwIAgkApAMBBQJhdQUDbmlsBQFhAQJheAACEiVzX19sYXN0UGF5b3V0SW5mbwECYXkDAmF1AmF6AmFBCQC5CQIJAMwIAgIGJWQlZCVkCQDMCAIJAKQDAQUCYXUJAMwIAgkApAMBBQJhegkAzAgCCQCkAwEFAmFBBQNuaWwFAWEBAmFCAQJhdQkAuQkCCQDMCAICGCVzJXMlZF9fcGF5b3V0c19faGlzdG9yeQkAzAgCCQCkAwEFAmF1BQNuaWwFAWEBAmFDAQJhdQkAuQkCCQDMCAICGiVzJWRfX3RvdGFsV2VpZ2h0Rm9yUGVyaW9kCQDMCAIJAKQDAQUCYXUFA25pbAUBYQECYUQCAmF1AmFxCQC5CQIJAMwIAgIXJXMlZCVzJWRfX3BhcmFtQnlQZXJpb2QJAMwIAgkApAMBBQJhcQkAzAgCAgFrCQDMCAIJAKQDAQUCYXUFA25pbAUBYQECYUUCAmF1AmFxCQC5CQIJAMwIAgIXJXMlZCVzJWRfX3BhcmFtQnlQZXJpb2QJAMwIAgkApAMBBQJhcQkAzAgCAgFiCQDMCAIJAKQDAQUCYXUFA25pbAUBYQECYUYCAmF1AmFxCQC5CQIJAMwIAgIXJXMlZCVzJWRfX3BhcmFtQnlQZXJpb2QJAMwIAgkApAMBBQJhcQkAzAgCAgZ3ZWlnaHQJAMwIAgkApAMBBQJhdQUDbmlsBQFhAQJhRwAJALkJAgkAzAgCAgQlcyVzCQDMCAICBmNvbmZpZwkAzAgCAhhyZWZlcnJhbHNDb250cmFjdEFkZHJlc3MFA25pbAUBYQACYUgJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQFrAQkBAmFHAAECYUkEAmFKAmFLAmFMAmFNBAJhTgkAuQkCCQDMCAICESVzJXMlcyVzX19oaXN0b3J5CQDMCAIFAmFKCQDMCAIFAmFLCQDMCAIJANgEAQgFAmFNDXRyYW5zYWN0aW9uSWQFA25pbAUBYQQCYU8JALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBCAUJbGFzdEJsb2NrBmhlaWdodAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAKQDAQUCYUwFA25pbAUBYQkBC1N0cmluZ0VudHJ5AgUCYU4FAmFPAQJhUAACFCVzX19tYW5hZ2VyUHVibGljS2V5AQJhUQACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQECYVIABAJhUwkAoggBCQECYVAAAwkAAQIFAmFTAgZTdHJpbmcEAmFUBQJhUwkA2QQBBQJhVAMJAAECBQJhUwIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJhVQAEAmFTCQCiCAEJAQJhUQADCQABAgUCYVMCBlN0cmluZwQCYVQFAmFTCQDZBAEFAmFUAwkAAQIFAmFTAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmFWAQJhTQQCYVcJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQCYVMJAQJhUgADCQABAgUCYVMCCkJ5dGVWZWN0b3IEAmFYBQJhUwMJAAACCAUCYU0PY2FsbGVyUHVibGljS2V5BQJhWAYFAmFXAwkAAQIFAmFTAgRVbml0AwkAAAIIBQJhTQZjYWxsZXIFBHRoaXMGBQJhVwkAAgECC01hdGNoIGVycm9yAQJhWQQCYVoCYmECYXUCYXEEAmJiCQECYXMBBQJhcQQCYmMJAQJhRAIFAmF1BQJhcQQCYmQJAJoIAgUCYVoFAmJjBAJiZQkBAmFGAgUCYXUFAmFxAwkBCWlzRGVmaW5lZAEFAmJkBAJiZgkBBXZhbHVlAQUCYmQEAmJnCQEFdmFsdWUBCQCaCAIFAmFaCQECYUUCBQJhdQUCYXEEAmJoCQBkAgkAaAIFAmJmBQJiYQUCYmcDCQBmAgUCYmgAAAkAlAoCCQBpAgUCYmgFAWIJAMwIAgkBDEludGVnZXJFbnRyeQIFAmJiBQJhdQkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYmUFAmJoBQNuaWwJAJQKAgAABQNuaWwEAmJpCQCaCAIFBHRoaXMFAmJiAwMJAQlpc0RlZmluZWQBBQJiaQkAZwIFAmF1CQEFdmFsdWUBBQJiaQcEAmJqCQEFdmFsdWUBBQJiaQQCYmYJAQV2YWx1ZQEJAJoIAgUCYVoJAQJhRAIFAmJqBQJhcQQCYmcJAQV2YWx1ZQEJAJoIAgUCYVoJAQJhRQIFAmJqBQJhcQQCYmgJAGQCCQBoAgUCYmYFAmJhBQJiZwMJAGYCBQJiaAAACQCUCgIJAGkCBQJiaAUBYgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYmUFAmJoBQNuaWwJAJQKAgAABQNuaWwJAJQKAgAABQNuaWwBAmJrBAJhWgJiYQJhdQJhcQQCYmUJAQJhRgIFAmF1BQJhcQQCYmwJAJ8IAQUCYmUEAmFTBQJibAMJAAECBQJhUwIEVW5pdAAAAwkAAQIFAmFTAgNJbnQEAmJoBQJhUwkAaQIFAmJoBQFiCQACAQILTWF0Y2ggZXJyb3IBAmJtAgJhYgJibgQBaAkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgdtYXBwaW5nCQDMCAICCHVzZXIybnVtCQDMCAIFAmJuBQNuaWwFAWEJAQ1wYXJzZUludFZhbHVlAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIJAQdBZGRyZXNzAQkA2QQBBQJhYgUBaAkArAICCQCsAgIJAKwCAgINVXNlciBhZGRyZXNzIAUCYm4CLSBpcyBub3QgZm91bmQgaW4gYm9vc3RpbmcgY29udHJhY3QgZGF0YSwga2V5PQUBaAECYm8ACQEBZwEJAQJhbQABAmJwAQJibgQCYWQJAQFYAAQCYnEJAQJibQIJAJEDAgUCYWQFAVUFAmJuBAJicgkAnwgBCQECYXABBQJicQQCYVMFAmJyAwkAAQIFAmFTAgRVbml0CQCUCgIAAAUDbmlsAwkAAQIFAmFTAgNJbnQEAmJzBQJhUwkAlAoCBQJicwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFwAQUCYnEAAAUDbmlsCQACAQILTWF0Y2ggZXJyb3IQAmFNARZ1cGRhdGVSZWZlcnJhbEFjdGl2aXR5AgJibgJidAQCYnUJAJ0IAgUCYUgJAQFMAQUCYm4EAmJ2AwkAAAIFAmJ1BQR1bml0BQR1bml0CQD8BwQFAmFIAhZ1cGRhdGVSZWZlcnJhbEFjdGl2aXR5CQDMCAIFAUIJAMwIAgUCYm4JAMwIAgkAZwIFAmJ0BQFFBQNuaWwFA25pbAMJAAACBQJidgUCYnYJAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFNAQ5maW5hbGl6ZUhlbHBlcgAEAmJ3CQELdmFsdWVPckVsc2UCCQCfCAEJAQJhbgAFAWUEAmJ4CQEBZwEJAQJhbwAEAmJ5CQEBZwEJAQJhawAEAmJ6CQEBZwEJAQJhbAAEAmJBCQELdmFsdWVPckVsc2UCCQCaCAIJAQJhYwAJAQJhZgAAAAQCYkIJAQJhQwEFAmJ4BAJiQwkBAWcBCQECYUMBBQJieAQCYmEJAQFnAQkBAmF0AQUCYngDCQBmAgUCYngFAmJ6CQCUCgIFA25pbAcDCQAAAgUCYncFAWUEAmJECQECYVkECQECYWMABQJiYQUCYngFAmJ5BAJiRQgFAmJEAl8xBAJiRggFAmJEAl8yBAJiRwkAZAIFAmJDBQJiRQQCYkgDCQBmAgkAZQIFAmJBAAEFAmJ5CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWsACQBkAgUCYnkAAQUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYW4ABQFmCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWsAAAAFA25pbAkAlAoCCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYkIFAmJHBQNuaWwFAmJIBQJiRgYDCQAAAgUCYncFAWYEAmJFCQECYmsECQECYWMABQJiYQUCYngFAmJ5BAJiSQkAawMJAQFnAQkBAmF3AQUCYngFAmJFBQJiQwQCYkoJAGsDCQEBZwEJAQJhdgEFAmJ4BQJiRQUCYkMEAmJLCQBkAgUCYkoFAmJJBAJicgkAnwgBCQECYXABBQJieQQCYm4JARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQJhYwAJAQF4AQUCYnkEAmJ1CQCdCAIFAmFICQEBTAEFAmJuBAJidgMJAAACBQJidQUEdW5pdAUEdW5pdAkA/AcEBQJhSAIWdXBkYXRlUmVmZXJyYWxBY3Rpdml0eQkAzAgCBQFCCQDMCAIFAmJuCQDMCAIJAGcCBQJiRQUBRQUDbmlsBQNuaWwDCQAAAgUCYnYFAmJ2BAJiTAMDCQAAAgUCYnUFBHVuaXQGCQBmAgUBRQUCYkUFBHVuaXQEAmJNCQBrAwUCYksFAUgFAWIEAmJOCQBrAwUCYksFAUsFAWIJAPwHBAUCYUgCDGluY1VuY2xhaW1lZAkAzAgCBQFCCQDMCAIFAmJuCQDMCAIFAmJNCQDMCAIFAmJOBQNuaWwFA25pbAMJAAACBQJiTAUCYkwEAmJPCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYXABBQJieQkAZAIJAQt2YWx1ZU9yRWxzZQIFAmJyAAAFAmJLBQNuaWwEAmJIAwkAZgIJAGUCBQJiQQABBQJieQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFrAAkAZAIFAmJ5AAEFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFvAAkAZAIFAmJ4AAEJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhawAAAAkAzAgCCQELRGVsZXRlRW50cnkBCQECYW4ABQNuaWwJAJQKAgkAzggCBQJiTwUCYkgGCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIYaW52YWxpZCBwcm9jZXNzaW5nIHN0YWdlAmFNAQ9maW5hbGl6ZVdyYXBwZXIBAmJQBAJiUQoAAmJSCQD8BwQFBHRoaXMCDmZpbmFsaXplSGVscGVyBQNuaWwFA25pbAMJAAECBQJiUgIHQm9vbGVhbgUCYlIJAAIBCQCsAgIJAAMBBQJiUgIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgMJAAACBQJiUQUCYlEDCQEBIQEFAmJRAwkAAAIFAmJQBQFxCQACAQISTm90aGluZyB0byBwcm9jZXNzCQCUCgIFA25pbAUEdW5pdAMJAGYCBQJiUAAACQCUCgIFA25pbAkA/AcEBQR0aGlzAg9maW5hbGl6ZVdyYXBwZXIJAMwIAgkAZQIFAmJQAAEFA25pbAUDbmlsCQCUCgIFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhTQEdcHJvY2Vzc1BlbmRpbmdQZXJpb2RzQW5kVXNlcnMACQCUCgIFA25pbAkA/AcEBQR0aGlzAg9maW5hbGl6ZVdyYXBwZXIJAMwIAgUBcQUDbmlsBQNuaWwCYU0BB2RlcG9zaXQABAJiUwMJAAACCAUCYU0GY2FsbGVyBQF3BgkBAmFWAQUCYU0DCQAAAgUCYlMFAmJTBAJhdQkBAmJvAAQCYlQJAGUCBQZoZWlnaHQJAQFpAQkBAmFlAAQCYlUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQFSCQECYWcACQCsAgIJAKwCAgIcbWFuZGF0b3J5IGVtaXNzaW9uX2NvbnRyYWN0LgkBAmFnAAIPIGlzIG5vdCBkZWZpbmVkBAJiVgkBC3ZhbHVlT3JFbHNlAgkAmggCBQFSCQECYWgAAAAEAmJXCQBrAwkAaAIFAmJUBQJiVgUCYlUFAWMEAmJYCQD8BwQFAVICBGVtaXQJAMwIAgUCYlcFA25pbAUDbmlsAwkAAAIFAmJYBQJiWAQCYlkAAAQCYloJAQJheQMFAmF1BQJiWQUCYlcEAmNhCQD8BwQFAVICFmd3eEhvbGRlcnNSZXdhcmRVcGRhdGUFA25pbAUDbmlsAwkAAAIFAmNhBQJjYQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFsAAUCYXUJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhdAEFAmF1BQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhdgEFAmF1BQJiVwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFlAAUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYXcBBQJhdQUCYlkJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhbQAJAGQCBQJhdQABCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJheAAFAmJaCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhQgEFAmF1BQJiWgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFNAQtjbGFpbVJld2FyZAAEAmFkCQEBWAAEAmNiCQClCAEIBQJhTQZjYWxsZXIEAmNjCQECYnABBQJjYgQCYUwIBQJjYwJfMQQCY2QIBQJjYwJfMgQCY2UDCQBmAgUCYUwAAAYJAAIBAhBOb3RoaW5nIHRvIGNsYWltAwkAAAIFAmNlBQJjZQQCY2YAAAQCY2cKAAJiUgkA/AcEBQJhSAIFY2xhaW0JAMwIAgUBQgUDbmlsBQNuaWwDCQABAgUCYlICA0ludAUCYlIJAAIBCQCsAgIJAAMBBQJiUgIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50BAJjaAkAZAIFAmFMBQJjZwkAlAoCCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmFNBmNhbGxlcgUCY2gJANkEAQkAkQMCBQJhZAUBUwkAzAgCCQECYUkEAgVjbGFpbQUCY2IFAmFMBQJhTQUDbmlsBQJjZAkAzAgCBQJjaAkAzAgCBQJjZgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFNARNjbGFpbVJld2FyZFJFQURPTkxZAQJjYgQCY2kJAQJicAEFAmNiBAJhTAgFAmNpAl8xBAJjZAgFAmNpAl8yBAJjagkBC3ZhbHVlT3JFbHNlAgkAmggCBQJhSAkBAU4CBQFCBQJjYgAABAJjaAkAZAIFAmFMBQJjagkAlAoCBQNuaWwFAmNoAmFNAR1sYXRlc3RGaW5hbGl6ZWRQZXJpb2RSRUFET05MWQECY2IJAJQKAgUDbmlsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJhbAAA////////////AQJhTQEhbGF0ZXN0RmluYWxpemVkUGVyaW9kSW5mb1JFQURPTkxZAQJjYgkAlAoCBQNuaWwJAQFqAQkBAmF4AAJhTQEVY2FsY0d3eFBhcmFtc1JFQURPTkxZAwJjawJjbAJjbQQCY24JAGQCBQJjbAUCY20EAmNvCQEBLQEJAGsDBQJjawUBYgUCY20EAmNwCQBoAgkAawMFAmNrBQFiBQJjbQUCY24JAJQKAgUDbmlsCQDMCAIFAmNvCQDMCAIFAmNwCQDMCAIJAQJibwAFA25pbAJhTQEaY2FsY0d3eEFtb3VudFN0YXJ0UkVBRE9OTFkDAmNxAmNyAmNzBAJjdAkAawMFAmNyBQFjBQJjcwQCYnQJAGsDBQJjcQUCY3QFAWMJAJQKAgUDbmlsCQDMCAIFAmJ0BQNuaWwCYU0BFW9uRW1pc3Npb25Gb3JHd3hTdGFydAADCQECIT0CCAUCYU0GY2FsbGVyBQF0CQACAQIScGVybWlzc2lvbnMgZGVuaWVkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWUABQZoZWlnaHQFA25pbAJhTQEjbGF0ZXN0UGVyaW9kRW1pc3Npb25SZXdhcmRzUkVBRE9OTFkBAmNiBAJhdQkBAmJvAAkAlAoCBQNuaWwJAMwIAgkBAWcBCQECYXYBBQJhdQUDbmlsAmFNAQVjYWxjRAUCY3UCY3YCY3cCY3gCY3kEAmN6CQC2AgEAAgQCY0EJAKcDAQUCY3gEAmNCCQCnAwEFAmN5BAJjQwkApwMBBQJjdQQCY0QJAKcDAQUCY3YEAmNFCQC5AgIJAKcDAQUCY3cFAmNBBAJhVAkAtwICBQJjQwUCY0QDCQAAAgUCYVQFAWQJAJQKAgUDbmlsCQCmAwEFAWQEAmNGCQC5AgIFAmNFBQJjegQCY0cJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGBQNuaWwKAQJjSAICY0kCY0oEAmNLBQJjSQQCY0wIBQJjSwJfMQQCY00IBQJjSwJfMgQCY04IBQJjSwJfMwMJAQIhPQIFAmNOBQR1bml0BQJjSQQCY08JALoCAgkAuQICCQC5AgIFAmNMBQJjTAUCY0wJALkCAgkAuQICCQC5AgIFAmNDBQJjRAUCY3oFAmN6BAJjUAkAugICCQC5AgIJALcCAgkAugICCQC5AgIFAmNGBQJhVAUCY0EJALkCAgUCY08FAmN6BQJjTAkAtwICCQC6AgIJALkCAgkAuAICBQJjRgUCY0EFAmNMBQJjQQkAuQICCQC3AgIFAmN6CQC2AgEAAQUCY08EAmNRCQEBbgEJALgCAgUCY1AJAQV2YWx1ZQEFAmNMAwkAwAICBQJjQgUCY1EJAJUKAwUCY1AFAmNMBQJjSgkAlQoDBQJjUAUCY0wFBHVuaXQEAmNSCgACY1MFAmNHCgACY1QJAJADAQUCY1MKAAJjVQkAlQoDBQJhVAUEdW5pdAUEdW5pdAoBAmNWAgJjVwJjWAMJAGcCBQJjWAUCY1QFAmNXCQECY0gCBQJjVwkAkQMCBQJjUwUCY1gKAQJjWQICY1cCY1gDCQBnAgUCY1gFAmNUBQJjVwkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDcJAQJjWQIJAQJjVgIJAQJjVgIJAQJjVgIJAQJjVgIJAQJjVgIJAQJjVgIJAQJjVgIFAmNVAAAAAQACAAMABAAFAAYABwQCY1AIBQJjUgJfMQQCY00IBQJjUgJfMgQCY04IBQJjUgJfMwMJAQIhPQIFAmNOBQR1bml0CQCUCgIFA25pbAkApgMBBQJjUAQCY1EJAQFuAQkAuAICBQJjUAkBBXZhbHVlAQUCY00JAAIBCQCsAgICHUQgY2FsY3VsYXRpb24gZXJyb3IsIGREaWZmID0gCQCmAwEFAmNRAmFNAQpzZXRNYW5hZ2VyAQJjWgQCYlMJAQJhVgEFAmFNAwkAAAIFAmJTBQJiUwQCZGEJANkEAQUCY1oDCQAAAgUCZGEFAmRhCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhUQAFAmNaBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYU0BDmNvbmZpcm1NYW5hZ2VyAAQCZGIJAQJhVQAEAmRjAwkBCWlzRGVmaW5lZAEFAmRiBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJkYwUCZGMEAmRkAwkAAAIIBQJhTQ9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmRiBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJkZAUCZGQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFQAAkA2AQBCQEFdmFsdWUBBQJkYgkAzAgCCQELRGVsZXRlRW50cnkBCQECYVEABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmRlAQJkZgAEAmRnBAJhUwkBAmFSAAMJAAECBQJhUwIKQnl0ZVZlY3RvcgQCYVgFAmFTBQJhWAMJAAECBQJhUwIEVW5pdAgFAmRlD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yCQD0AwMIBQJkZQlib2R5Qnl0ZXMJAJEDAggFAmRlBnByb29mcwAABQJkZzab7I8=", "height": 2538555, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HysWtk6dUsvdzxkuVcGbWUjnrSxBno7eeyrT6GxNJx4E Next: HKn9V4yTsYDfTX1CSF7rMjUJ6LY25TfvoRJZ16xuPL1A Diff:
OldNewDifferences
5151 func u () = "%s%s__config__emissionAddress"
5252
5353
54-func v (w) = makeString(["%s%s%s", "mapping", "num2user", toString(w)], a)
54+func v () = makeString(["%s", "votingEmissionContract"], a)
5555
5656
57-let x = makeString(["%s%s", "referral", "programName"], a)
57+let w = addressFromStringValue(getStringValue(t, v()))
5858
59-let y = "wxlock"
60-
61-let z = valueOrElse(getString(this, x), y)
62-
63-let A = makeString(["%s%s", "referral", "minGWxAmount"], a)
64-
65-let B = (500 * c)
66-
67-let C = valueOrElse(getInteger(this, A), B)
68-
69-let D = makeString(["%s%s", "referral", "referrerRewardPermille"], a)
70-
71-let E = 50
72-
73-let F = valueOrElse(getInteger(this, D), E)
74-
75-let G = makeString(["%s%s", "referral", "referralRewardPermille"], a)
76-
77-let H = 50
78-
79-let I = valueOrElse(getInteger(this, G), H)
80-
81-func J (K) = makeString(["%s%s%s", "referrer", z, K], a)
59+func x (y) = makeString(["%s%s%s", "mapping", "num2user", toString(y)], a)
8260
8361
84-func L (M,N) = makeString(["%s%s%s", "unclaimedReferral", M, N], a)
62+let z = makeString(["%s%s", "referral", "programName"], a)
63+
64+let A = "wxlock"
65+
66+let B = valueOrElse(getString(this, z), A)
67+
68+let C = makeString(["%s%s", "referral", "minGWxAmount"], a)
69+
70+let D = (500 * c)
71+
72+let E = valueOrElse(getInteger(this, C), D)
73+
74+let F = makeString(["%s%s", "referral", "referrerRewardPermille"], a)
75+
76+let G = 50
77+
78+let H = valueOrElse(getInteger(this, F), G)
79+
80+let I = makeString(["%s%s", "referral", "referralRewardPermille"], a)
81+
82+let J = 50
83+
84+let K = valueOrElse(getInteger(this, I), J)
85+
86+func L (M) = makeString(["%s%s%s", "referrer", B, M], a)
8587
8688
87-let O = k(u())
88-
89-let P = addressFromStringValue(O)
90-
91-let Q = 1
92-
93-let R = 2
94-
95-let S = 3
96-
97-let T = 4
98-
99-func U () = "%s__config"
89+func N (O,P) = makeString(["%s%s%s", "unclaimedReferral", O, P], a)
10090
10191
102-func V () = split(k(U()), a)
92+let Q = k(u())
93+
94+let R = addressFromStringValue(Q)
95+
96+let S = 1
97+
98+let T = 2
99+
100+let U = 3
101+
102+let V = 4
103+
104+func W () = "%s__config"
103105
104106
105-func W (X,Y,Z,q) = makeString(["%s%s%s%d", X, Y, Z, toString(q)], a)
107+func X () = split(k(W()), a)
106108
107109
108-func aa () = {
109- let ab = V()
110- valueOrErrorMessage(addressFromString(ab[S]), "boosting contract address is not defined")
110+func Y (Z,aa,ab,q) = makeString(["%s%s%s%d", Z, aa, ab, toString(q)], a)
111+
112+
113+func ac () = {
114+ let ad = X()
115+ valueOrErrorMessage(addressFromString(ad[U]), "boosting contract address is not defined")
111116 }
112117
113118
114-func ac () = "%s%s__gwxRewardEmissionPart__startHeight"
119+func ae () = "%s%s__gwxRewardEmissionPart__startHeight"
115120
116121
117-func ad () = "%s__nextUserNum"
122+func af () = "%s__nextUserNum"
118123
119124
120-func ae () = "%s%s__ratePerBlock__current"
125+func ag () = "%s%s__ratePerBlock__current"
121126
122127
123-func af () = "%s%s__poolWeight__GWXvirtualPOOL"
128+func ah () = "%s%s__gwxHoldersReward__current"
124129
125130
126-func ag () = "%s__nextProcessedUser"
131+func ai () = "%s%s__gwxHoldersReward__next"
127132
128133
129-func ah () = "%s__latestPeriod"
134+func aj () = "%s%s__poolWeight__GWXvirtualPOOL"
130135
131136
132-func ai () = "%s__nextPeriod"
137+func ak () = "%s__nextProcessedUser"
133138
134139
135-func aj () = "%s__processingStage"
140+func al () = "%s__latestPeriod"
136141
137142
138-func ak () = "%s__nextProcessedPeriod"
143+func am () = "%s__nextPeriod"
139144
140145
141-func al (am) = makeString(["%s%d", "userUnclaimed", toString(am)], a)
146+func an () = "%s__processingStage"
142147
143148
144-func an (am) = makeString(["%s%d__nextClaimedPeriod", toString(am)], a)
149+func ao () = "%s__nextProcessedPeriod"
145150
146151
147-func ao (am) = makeString(["%s%d__lastProcessedPeriod", toString(am)], a)
152+func ap (aq) = makeString(["%s%d", "userUnclaimed", toString(aq)], a)
148153
149154
150-func ap (aq) = makeString(["%s%d__startHeightForPeriod", toString(aq)], a)
155+func ar (aq) = makeString(["%s%d__nextClaimedPeriod", toString(aq)], a)
151156
152157
153-func ar (aq) = makeString(["%s%d__auxEmissionReward", toString(aq)], a)
158+func as (aq) = makeString(["%s%d__lastProcessedPeriod", toString(aq)], a)
154159
155160
156-func as (aq) = makeString(["%s%d__totalAmountForPeriod", toString(aq)], a)
161+func at (au) = makeString(["%s%d__startHeightForPeriod", toString(au)], a)
157162
158163
159-func at () = "%s__lastPayoutInfo"
164+func av (au) = makeString(["%s%d__auxEmissionReward", toString(au)], a)
160165
161166
162-func au (aq,av,aw) = makeString(["%d%d%d", toString(aq), toString(av), toString(aw)], a)
167+func aw (au) = makeString(["%s%d__totalAmountForPeriod", toString(au)], a)
163168
164169
165-func ax (aq) = makeString(["%s%s%d__payouts__history", toString(aq)], a)
170+func ax () = "%s__lastPayoutInfo"
166171
167172
168-func ay (aq) = makeString(["%s%d__totalWeightForPeriod", toString(aq)], a)
173+func ay (au,az,aA) = makeString(["%d%d%d", toString(au), toString(az), toString(aA)], a)
169174
170175
171-func az (aq,am) = makeString(["%s%d%s%d__paramByPeriod", toString(am), "k", toString(aq)], a)
176+func aB (au) = makeString(["%s%s%d__payouts__history", toString(au)], a)
172177
173178
174-func aA (aq,am) = makeString(["%s%d%s%d__paramByPeriod", toString(am), "b", toString(aq)], a)
179+func aC (au) = makeString(["%s%d__totalWeightForPeriod", toString(au)], a)
175180
176181
177-func aB (aq,am) = makeString(["%s%d%s%d__paramByPeriod", toString(am), "weight", toString(aq)], a)
182+func aD (au,aq) = makeString(["%s%d%s%d__paramByPeriod", toString(aq), "k", toString(au)], a)
178183
179184
180-func aC () = makeString(["%s%s", "config", "referralsContractAddress"], a)
185+func aE (au,aq) = makeString(["%s%d%s%d__paramByPeriod", toString(aq), "b", toString(au)], a)
181186
182187
183-let aD = addressFromStringValue(k(aC()))
188+func aF (au,aq) = makeString(["%s%d%s%d__paramByPeriod", toString(aq), "weight", toString(au)], a)
184189
185-func aE (aF,aG,aH,aI) = {
186- let aJ = makeString(["%s%s%s%s__history", aF, aG, toBase58String(aI.transactionId)], a)
187- let aK = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aH)], a)
188- StringEntry(aJ, aK)
190+
191+func aG () = makeString(["%s%s", "config", "referralsContractAddress"], a)
192+
193+
194+let aH = addressFromStringValue(k(aG()))
195+
196+func aI (aJ,aK,aL,aM) = {
197+ let aN = makeString(["%s%s%s%s__history", aJ, aK, toBase58String(aM.transactionId)], a)
198+ let aO = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aL)], a)
199+ StringEntry(aN, aO)
189200 }
190201
191202
192-func aL () = "%s__managerPublicKey"
203+func aP () = "%s__managerPublicKey"
193204
194205
195-func aM () = "%s__pendingManagerPublicKey"
206+func aQ () = "%s__pendingManagerPublicKey"
196207
197208
198-func aN () = {
199- let aO = getString(aL())
200- if ($isInstanceOf(aO, "String"))
209+func aR () = {
210+ let aS = getString(aP())
211+ if ($isInstanceOf(aS, "String"))
201212 then {
202- let aP = aO
203- fromBase58String(aP)
213+ let aT = aS
214+ fromBase58String(aT)
204215 }
205- else if ($isInstanceOf(aO, "Unit"))
216+ else if ($isInstanceOf(aS, "Unit"))
206217 then unit
207218 else throw("Match error")
208219 }
209220
210221
211-func aQ () = {
212- let aO = getString(aM())
213- if ($isInstanceOf(aO, "String"))
222+func aU () = {
223+ let aS = getString(aQ())
224+ if ($isInstanceOf(aS, "String"))
214225 then {
215- let aP = aO
216- fromBase58String(aP)
226+ let aT = aS
227+ fromBase58String(aT)
217228 }
218- else if ($isInstanceOf(aO, "Unit"))
229+ else if ($isInstanceOf(aS, "Unit"))
219230 then unit
220231 else throw("Match error")
221232 }
222233
223234
224-func aR (aI) = {
225- let aS = throw("Permission denied")
226- let aO = aN()
227- if ($isInstanceOf(aO, "ByteVector"))
235+func aV (aM) = {
236+ let aW = throw("Permission denied")
237+ let aS = aR()
238+ if ($isInstanceOf(aS, "ByteVector"))
228239 then {
229- let aT = aO
230- if ((aI.callerPublicKey == aT))
240+ let aX = aS
241+ if ((aM.callerPublicKey == aX))
231242 then true
232- else aS
243+ else aW
233244 }
234- else if ($isInstanceOf(aO, "Unit"))
235- then if ((aI.caller == this))
245+ else if ($isInstanceOf(aS, "Unit"))
246+ then if ((aM.caller == this))
236247 then true
237- else aS
248+ else aW
238249 else throw("Match error")
239250 }
240251
241252
242-func aU (aV,aW,aq,am) = {
243- let aX = ao(am)
244- let aY = az(aq, am)
245- let aZ = getInteger(aV, aY)
246- let ba = aB(aq, am)
247- if (isDefined(aZ))
253+func aY (aZ,ba,au,aq) = {
254+ let bb = as(aq)
255+ let bc = aD(au, aq)
256+ let bd = getInteger(aZ, bc)
257+ let be = aF(au, aq)
258+ if (isDefined(bd))
248259 then {
249- let bb = value(aZ)
250- let bc = value(getInteger(aV, aA(aq, am)))
251- let bd = ((bb * aW) + bc)
252- if ((bd > 0))
253- then $Tuple2((bd / b), [IntegerEntry(aX, aq), IntegerEntry(ba, bd)])
260+ let bf = value(bd)
261+ let bg = value(getInteger(aZ, aE(au, aq)))
262+ let bh = ((bf * ba) + bg)
263+ if ((bh > 0))
264+ then $Tuple2((bh / b), [IntegerEntry(bb, au), IntegerEntry(be, bh)])
254265 else $Tuple2(0, nil)
255266 }
256267 else {
257- let be = getInteger(this, aX)
258- if (if (isDefined(be))
259- then (aq >= value(be))
268+ let bi = getInteger(this, bb)
269+ if (if (isDefined(bi))
270+ then (au >= value(bi))
260271 else false)
261272 then {
262- let bf = value(be)
263- let bb = value(getInteger(aV, az(bf, am)))
264- let bc = value(getInteger(aV, aA(bf, am)))
265- let bd = ((bb * aW) + bc)
266- if ((bd > 0))
267- then $Tuple2((bd / b), [IntegerEntry(ba, bd)])
273+ let bj = value(bi)
274+ let bf = value(getInteger(aZ, aD(bj, aq)))
275+ let bg = value(getInteger(aZ, aE(bj, aq)))
276+ let bh = ((bf * ba) + bg)
277+ if ((bh > 0))
278+ then $Tuple2((bh / b), [IntegerEntry(be, bh)])
268279 else $Tuple2(0, nil)
269280 }
270281 else $Tuple2(0, nil)
272283 }
273284
274285
275-func bg (aV,aW,aq,am) = {
276- let ba = aB(aq, am)
277- let bh = getInteger(ba)
278- let aO = bh
279- if ($isInstanceOf(aO, "Unit"))
286+func bk (aZ,ba,au,aq) = {
287+ let be = aF(au, aq)
288+ let bl = getInteger(be)
289+ let aS = bl
290+ if ($isInstanceOf(aS, "Unit"))
280291 then 0
281- else if ($isInstanceOf(aO, "Int"))
292+ else if ($isInstanceOf(aS, "Int"))
282293 then {
283- let bd = aO
284- (bd / b)
294+ let bh = aS
295+ (bh / b)
285296 }
286297 else throw("Match error")
287298 }
288299
289300
290-func bi (Z,bj) = {
291- let h = makeString(["%s%s%s", "mapping", "user2num", bj], a)
292- parseIntValue(valueOrErrorMessage(getString(Address(fromBase58String(Z)), h), ((("User address " + bj) + " is not found in boosting contract data, key=") + h)))
301+func bm (ab,bn) = {
302+ let h = makeString(["%s%s%s", "mapping", "user2num", bn], a)
303+ parseIntValue(valueOrErrorMessage(getString(Address(fromBase58String(ab)), h), ((("User address " + bn) + " is not found in boosting contract data, key=") + h)))
293304 }
294305
295306
296-func bk () = g(ai())
307+func bo () = g(am())
297308
298309
299-func bl (bj) = {
300- let ab = V()
301- let bm = bi(ab[S], bj)
302- let bn = getInteger(al(bm))
303- let aO = bn
304- if ($isInstanceOf(aO, "Unit"))
310+func bp (bn) = {
311+ let ad = X()
312+ let bq = bm(ad[U], bn)
313+ let br = getInteger(ap(bq))
314+ let aS = br
315+ if ($isInstanceOf(aS, "Unit"))
305316 then $Tuple2(0, nil)
306- else if ($isInstanceOf(aO, "Int"))
317+ else if ($isInstanceOf(aS, "Int"))
307318 then {
308- let bo = aO
309- $Tuple2(bo, [IntegerEntry(al(bm), 0)])
319+ let bs = aS
320+ $Tuple2(bs, [IntegerEntry(ap(bq), 0)])
310321 }
311322 else throw("Match error")
312323 }
313324
314325
315-@Callable(aI)
316-func updateReferralActivity (bj,bp) = {
317- let bq = getString(aD, J(bj))
318- let br = if ((bq == unit))
326+@Callable(aM)
327+func updateReferralActivity (bn,bt) = {
328+ let bu = getString(aH, L(bn))
329+ let bv = if ((bu == unit))
319330 then unit
320- else invoke(aD, "updateReferralActivity", [z, bj, (bp >= C)], nil)
321- if ((br == br))
331+ else invoke(aH, "updateReferralActivity", [B, bn, (bt >= E)], nil)
332+ if ((bv == bv))
322333 then $Tuple2(nil, unit)
323334 else throw("Strict value is not equal to itself.")
324335 }
325336
326337
327338
328-@Callable(aI)
339+@Callable(aM)
329340 func finalizeHelper () = {
330- let bs = valueOrElse(getInteger(aj()), e)
331- let bt = g(ak())
332- let bu = g(ag())
333- let bv = g(ah())
334- let bw = valueOrElse(getInteger(aa(), ad()), 0)
335- let bx = ay(bt)
336- let by = g(ay(bt))
337- let aW = g(ap(bt))
338- if ((bt > bv))
341+ let bw = valueOrElse(getInteger(an()), e)
342+ let bx = g(ao())
343+ let by = g(ak())
344+ let bz = g(al())
345+ let bA = valueOrElse(getInteger(ac(), af()), 0)
346+ let bB = aC(bx)
347+ let bC = g(aC(bx))
348+ let ba = g(at(bx))
349+ if ((bx > bz))
339350 then $Tuple2(nil, false)
340- else if ((bs == e))
351+ else if ((bw == e))
341352 then {
342- let bz = aU(aa(), aW, bt, bu)
343- let bA = bz._1
344- let bB = bz._2
345- let bC = (by + bA)
346- let bD = if (((bw - 1) > bu))
347- then [IntegerEntry(ag(), (bu + 1))]
348- else [IntegerEntry(aj(), f), IntegerEntry(ag(), 0)]
349- $Tuple2((([IntegerEntry(bx, bC)] ++ bD) ++ bB), true)
353+ let bD = aY(ac(), ba, bx, by)
354+ let bE = bD._1
355+ let bF = bD._2
356+ let bG = (bC + bE)
357+ let bH = if (((bA - 1) > by))
358+ then [IntegerEntry(ak(), (by + 1))]
359+ else [IntegerEntry(an(), f), IntegerEntry(ak(), 0)]
360+ $Tuple2((([IntegerEntry(bB, bG)] ++ bH) ++ bF), true)
350361 }
351- else if ((bs == f))
362+ else if ((bw == f))
352363 then {
353- let bA = bg(aa(), aW, bt, bu)
354- let bE = fraction(g(as(bt)), bA, by)
355- let bF = fraction(g(ar(bt)), bA, by)
356- let bG = (bF + bE)
357- let bn = getInteger(al(bu))
358- let bj = getStringValue(aa(), v(bu))
359- let bq = getString(aD, J(bj))
360- let br = if ((bq == unit))
364+ let bE = bk(ac(), ba, bx, by)
365+ let bI = fraction(g(aw(bx)), bE, bC)
366+ let bJ = fraction(g(av(bx)), bE, bC)
367+ let bK = (bJ + bI)
368+ let br = getInteger(ap(by))
369+ let bn = getStringValue(ac(), x(by))
370+ let bu = getString(aH, L(bn))
371+ let bv = if ((bu == unit))
361372 then unit
362- else invoke(aD, "updateReferralActivity", [z, bj, (bA >= C)], nil)
363- if ((br == br))
373+ else invoke(aH, "updateReferralActivity", [B, bn, (bE >= E)], nil)
374+ if ((bv == bv))
364375 then {
365- let bH = if (if ((bq == unit))
376+ let bL = if (if ((bu == unit))
366377 then true
367- else (C > bA))
378+ else (E > bE))
368379 then unit
369380 else {
370- let bI = fraction(bG, F, b)
371- let bJ = fraction(bG, I, b)
372- invoke(aD, "incUnclaimed", [z, bj, bI, bJ], nil)
381+ let bM = fraction(bK, H, b)
382+ let bN = fraction(bK, K, b)
383+ invoke(aH, "incUnclaimed", [B, bn, bM, bN], nil)
373384 }
374- if ((bH == bH))
385+ if ((bL == bL))
375386 then {
376- let bK = [IntegerEntry(al(bu), (valueOrElse(bn, 0) + bG))]
377- let bD = if (((bw - 1) > bu))
378- then [IntegerEntry(ag(), (bu + 1))]
379- else [IntegerEntry(ak(), (bt + 1)), IntegerEntry(ag(), 0), DeleteEntry(aj())]
380- $Tuple2((bK ++ bD), true)
387+ let bO = [IntegerEntry(ap(by), (valueOrElse(br, 0) + bK))]
388+ let bH = if (((bA - 1) > by))
389+ then [IntegerEntry(ak(), (by + 1))]
390+ else [IntegerEntry(ao(), (bx + 1)), IntegerEntry(ak(), 0), DeleteEntry(an())]
391+ $Tuple2((bO ++ bH), true)
381392 }
382393 else throw("Strict value is not equal to itself.")
383394 }
388399
389400
390401
391-@Callable(aI)
392-func finalizeWrapper (bL) = {
393- let bM = {
394- let bN = invoke(this, "finalizeHelper", nil, nil)
395- if ($isInstanceOf(bN, "Boolean"))
396- then bN
397- else throw(($getType(bN) + " couldn't be cast to Boolean"))
402+@Callable(aM)
403+func finalizeWrapper (bP) = {
404+ let bQ = {
405+ let bR = invoke(this, "finalizeHelper", nil, nil)
406+ if ($isInstanceOf(bR, "Boolean"))
407+ then bR
408+ else throw(($getType(bR) + " couldn't be cast to Boolean"))
398409 }
399- if ((bM == bM))
400- then if (!(bM))
401- then if ((bL == q))
410+ if ((bQ == bQ))
411+ then if (!(bQ))
412+ then if ((bP == q))
402413 then throw("Nothing to process")
403414 else $Tuple2(nil, unit)
404- else if ((bL > 0))
405- then $Tuple2(nil, invoke(this, "finalizeWrapper", [(bL - 1)], nil))
415+ else if ((bP > 0))
416+ then $Tuple2(nil, invoke(this, "finalizeWrapper", [(bP - 1)], nil))
406417 else $Tuple2(nil, unit)
407418 else throw("Strict value is not equal to itself.")
408419 }
409420
410421
411422
412-@Callable(aI)
423+@Callable(aM)
413424 func processPendingPeriodsAndUsers () = $Tuple2(nil, invoke(this, "finalizeWrapper", [q], nil))
414425
415426
416427
417-@Callable(aI)
428+@Callable(aM)
418429 func deposit () = {
419- let ab = V()
420- if ((aI.caller != Address(fromBase58String(ab[R]))))
421- then throw("Wrong caller address")
422- else {
423- let bO = value(value(aI.payments[0]).assetId)
424- if ((bO != fromBase58String(ab[Q])))
425- then throw("Wrong payment asset")
426- else {
427- let aq = bk()
428- let bP = (height - i(ac()))
429- let bQ = valueOrErrorMessage(getInteger(P, ae()), (("mandatory emission_contract." + ae()) + " is not defined"))
430- let bR = valueOrErrorMessage(getInteger(t, af()), (("mandatory factory_contract." + af()) + " is not defined"))
431- let bS = fraction((bP * bR), bQ, c)
432- let bT = invoke(P, "emit", [bS], nil)
433- if ((bT == bT))
434- then {
435- let bU = value(aI.payments[0]).amount
436- let bV = au(aq, bU, bS)
437-[IntegerEntry(ah(), aq), IntegerEntry(ap(aq), height), IntegerEntry(ar(aq), bS), IntegerEntry(ac(), height), IntegerEntry(as(aq), bU), IntegerEntry(ai(), (aq + 1)), StringEntry(at(), bV), StringEntry(ax(aq), bV)]
438- }
430+ let bS = if ((aM.caller == w))
431+ then true
432+ else aV(aM)
433+ if ((bS == bS))
434+ then {
435+ let au = bo()
436+ let bT = (height - i(ae()))
437+ let bU = valueOrErrorMessage(getInteger(R, ag()), (("mandatory emission_contract." + ag()) + " is not defined"))
438+ let bV = valueOrElse(getInteger(R, ah()), 0)
439+ let bW = fraction((bT * bV), bU, c)
440+ let bX = invoke(R, "emit", [bW], nil)
441+ if ((bX == bX))
442+ then {
443+ let bY = 0
444+ let bZ = ay(au, bY, bW)
445+ let ca = invoke(R, "gwxHoldersRewardUpdate", nil, nil)
446+ if ((ca == ca))
447+ then [IntegerEntry(al(), au), IntegerEntry(at(au), height), IntegerEntry(av(au), bW), IntegerEntry(ae(), height), IntegerEntry(aw(au), bY), IntegerEntry(am(), (au + 1)), StringEntry(ax(), bZ), StringEntry(aB(au), bZ)]
439448 else throw("Strict value is not equal to itself.")
440449 }
441- }
442- }
443-
444-
445-
446-@Callable(aI)
447-func claimReward () = {
448- let ab = V()
449- let bW = toString(aI.caller)
450- let bX = bl(bW)
451- let aH = bX._1
452- let bY = bX._2
453- let bZ = if ((aH > 0))
454- then true
455- else throw("Nothing to claim")
456- if ((bZ == bZ))
457- then {
458- let ca = 0
459- let cb = {
460- let bN = invoke(aD, "claim", [z], nil)
461- if ($isInstanceOf(bN, "Int"))
462- then bN
463- else throw(($getType(bN) + " couldn't be cast to Int"))
464- }
465- let cc = (aH + cb)
466- $Tuple2(([ScriptTransfer(aI.caller, cc, fromBase58String(ab[Q])), aE("claim", bW, aH, aI)] ++ bY), [cc, ca])
467- }
468- else throw("Strict value is not equal to itself.")
469- }
470-
471-
472-
473-@Callable(aI)
474-func claimRewardREADONLY (bW) = {
475- let cd = bl(bW)
476- let aH = cd._1
477- let bY = cd._2
478- let ce = valueOrElse(getInteger(aD, L(z, bW)), 0)
479- let cc = (aH + ce)
480- $Tuple2(nil, cc)
481- }
482-
483-
484-
485-@Callable(aI)
486-func latestFinalizedPeriodREADONLY (bW) = $Tuple2(nil, valueOrElse(getInteger(this, ah()), -1))
487-
488-
489-
490-@Callable(aI)
491-func latestFinalizedPeriodInfoREADONLY (bW) = $Tuple2(nil, j(at()))
492-
493-
494-
495-@Callable(aI)
496-func calcGwxParamsREADONLY (cf,cg,ch) = {
497- let ci = (cg + ch)
498- let cj = -(fraction(cf, b, ch))
499- let ck = (fraction(cf, b, ch) * ci)
500- $Tuple2(nil, [cj, ck, bk()])
501- }
502-
503-
504-
505-@Callable(aI)
506-func calcGwxAmountStartREADONLY (cl,cm,cn) = {
507- let co = fraction(cm, c, cn)
508- let bp = fraction(cl, co, c)
509- $Tuple2(nil, [bp])
510- }
511-
512-
513-
514-@Callable(aI)
515-func onEmissionForGwxStart () = if ((aI.caller != t))
516- then throw("permissions denied")
517- else [IntegerEntry(ac(), height)]
518-
519-
520-
521-@Callable(aI)
522-func latestPeriodEmissionRewardsREADONLY (bW) = {
523- let aq = bk()
524- $Tuple2(nil, [g(ar(aq))])
525- }
526-
527-
528-
529-@Callable(aI)
530-func calcD (cp,cq,cr,cs,ct) = {
531- let cu = toBigInt(2)
532- let cv = parseBigIntValue(cs)
533- let cw = parseBigIntValue(ct)
534- let cx = parseBigIntValue(cp)
535- let cy = parseBigIntValue(cq)
536- let cz = (parseBigIntValue(cr) * cv)
537- let aP = (cx + cy)
538- if ((aP == d))
539- then $Tuple2(nil, toString(d))
540- else {
541- let cA = (cz * cu)
542- let cB = [0, 1, 2, 3, 4, 5, 6]
543- func cC (cD,cE) = {
544- let cF = cD
545- let cG = cF._1
546- let cH = cF._2
547- let cI = cF._3
548- if ((cI != unit))
549- then cD
550- else {
551- let cJ = (((cG * cG) * cG) / (((cx * cy) * cu) * cu))
552- let cK = (((((cA * aP) / cv) + (cJ * cu)) * cG) / ((((cA - cv) * cG) / cv) + ((cu + toBigInt(1)) * cJ)))
553- let cL = n((cK - value(cG)))
554- if ((cw >= cL))
555- then $Tuple3(cK, cG, cE)
556- else $Tuple3(cK, cG, unit)
557- }
558- }
559-
560- let cM = {
561- let cN = cB
562- let cO = size(cN)
563- let cP = $Tuple3(aP, unit, unit)
564- func cQ (cR,cS) = if ((cS >= cO))
565- then cR
566- else cC(cR, cN[cS])
567-
568- func cT (cR,cS) = if ((cS >= cO))
569- then cR
570- else throw("List size exceeds 7")
571-
572- cT(cQ(cQ(cQ(cQ(cQ(cQ(cQ(cP, 0), 1), 2), 3), 4), 5), 6), 7)
573- }
574- let cK = cM._1
575- let cH = cM._2
576- let cI = cM._3
577- if ((cI != unit))
578- then $Tuple2(nil, toString(cK))
579- else {
580- let cL = n((cK - value(cH)))
581- throw(("D calculation error, dDiff = " + toString(cL)))
582- }
583- }
584- }
585-
586-
587-
588-@Callable(aI)
589-func setManager (cU) = {
590- let cV = aR(aI)
591- if ((cV == cV))
592- then {
593- let cW = fromBase58String(cU)
594- if ((cW == cW))
595- then [StringEntry(aM(), cU)]
596450 else throw("Strict value is not equal to itself.")
597451 }
598452 else throw("Strict value is not equal to itself.")
600454
601455
602456
603-@Callable(aI)
604-func confirmManager () = {
605- let cX = aQ()
606- let cY = if (isDefined(cX))
457+@Callable(aM)
458+func claimReward () = {
459+ let ad = X()
460+ let cb = toString(aM.caller)
461+ let cc = bp(cb)
462+ let aL = cc._1
463+ let cd = cc._2
464+ let ce = if ((aL > 0))
607465 then true
608- else throw("No pending manager")
609- if ((cY == cY))
466+ else throw("Nothing to claim")
467+ if ((ce == ce))
610468 then {
611- let cZ = if ((aI.callerPublicKey == value(cX)))
612- then true
613- else throw("You are not pending manager")
614- if ((cZ == cZ))
615- then [StringEntry(aL(), toBase58String(value(cX))), DeleteEntry(aM())]
469+ let cf = 0
470+ let cg = {
471+ let bR = invoke(aH, "claim", [B], nil)
472+ if ($isInstanceOf(bR, "Int"))
473+ then bR
474+ else throw(($getType(bR) + " couldn't be cast to Int"))
475+ }
476+ let ch = (aL + cg)
477+ $Tuple2(([ScriptTransfer(aM.caller, ch, fromBase58String(ad[S])), aI("claim", cb, aL, aM)] ++ cd), [ch, cf])
478+ }
479+ else throw("Strict value is not equal to itself.")
480+ }
481+
482+
483+
484+@Callable(aM)
485+func claimRewardREADONLY (cb) = {
486+ let ci = bp(cb)
487+ let aL = ci._1
488+ let cd = ci._2
489+ let cj = valueOrElse(getInteger(aH, N(B, cb)), 0)
490+ let ch = (aL + cj)
491+ $Tuple2(nil, ch)
492+ }
493+
494+
495+
496+@Callable(aM)
497+func latestFinalizedPeriodREADONLY (cb) = $Tuple2(nil, valueOrElse(getInteger(this, al()), -1))
498+
499+
500+
501+@Callable(aM)
502+func latestFinalizedPeriodInfoREADONLY (cb) = $Tuple2(nil, j(ax()))
503+
504+
505+
506+@Callable(aM)
507+func calcGwxParamsREADONLY (ck,cl,cm) = {
508+ let cn = (cl + cm)
509+ let co = -(fraction(ck, b, cm))
510+ let cp = (fraction(ck, b, cm) * cn)
511+ $Tuple2(nil, [co, cp, bo()])
512+ }
513+
514+
515+
516+@Callable(aM)
517+func calcGwxAmountStartREADONLY (cq,cr,cs) = {
518+ let ct = fraction(cr, c, cs)
519+ let bt = fraction(cq, ct, c)
520+ $Tuple2(nil, [bt])
521+ }
522+
523+
524+
525+@Callable(aM)
526+func onEmissionForGwxStart () = if ((aM.caller != t))
527+ then throw("permissions denied")
528+ else [IntegerEntry(ae(), height)]
529+
530+
531+
532+@Callable(aM)
533+func latestPeriodEmissionRewardsREADONLY (cb) = {
534+ let au = bo()
535+ $Tuple2(nil, [g(av(au))])
536+ }
537+
538+
539+
540+@Callable(aM)
541+func calcD (cu,cv,cw,cx,cy) = {
542+ let cz = toBigInt(2)
543+ let cA = parseBigIntValue(cx)
544+ let cB = parseBigIntValue(cy)
545+ let cC = parseBigIntValue(cu)
546+ let cD = parseBigIntValue(cv)
547+ let cE = (parseBigIntValue(cw) * cA)
548+ let aT = (cC + cD)
549+ if ((aT == d))
550+ then $Tuple2(nil, toString(d))
551+ else {
552+ let cF = (cE * cz)
553+ let cG = [0, 1, 2, 3, 4, 5, 6]
554+ func cH (cI,cJ) = {
555+ let cK = cI
556+ let cL = cK._1
557+ let cM = cK._2
558+ let cN = cK._3
559+ if ((cN != unit))
560+ then cI
561+ else {
562+ let cO = (((cL * cL) * cL) / (((cC * cD) * cz) * cz))
563+ let cP = (((((cF * aT) / cA) + (cO * cz)) * cL) / ((((cF - cA) * cL) / cA) + ((cz + toBigInt(1)) * cO)))
564+ let cQ = n((cP - value(cL)))
565+ if ((cB >= cQ))
566+ then $Tuple3(cP, cL, cJ)
567+ else $Tuple3(cP, cL, unit)
568+ }
569+ }
570+
571+ let cR = {
572+ let cS = cG
573+ let cT = size(cS)
574+ let cU = $Tuple3(aT, unit, unit)
575+ func cV (cW,cX) = if ((cX >= cT))
576+ then cW
577+ else cH(cW, cS[cX])
578+
579+ func cY (cW,cX) = if ((cX >= cT))
580+ then cW
581+ else throw("List size exceeds 7")
582+
583+ cY(cV(cV(cV(cV(cV(cV(cV(cU, 0), 1), 2), 3), 4), 5), 6), 7)
584+ }
585+ let cP = cR._1
586+ let cM = cR._2
587+ let cN = cR._3
588+ if ((cN != unit))
589+ then $Tuple2(nil, toString(cP))
590+ else {
591+ let cQ = n((cP - value(cM)))
592+ throw(("D calculation error, dDiff = " + toString(cQ)))
593+ }
594+ }
595+ }
596+
597+
598+
599+@Callable(aM)
600+func setManager (cZ) = {
601+ let bS = aV(aM)
602+ if ((bS == bS))
603+ then {
604+ let da = fromBase58String(cZ)
605+ if ((da == da))
606+ then [StringEntry(aQ(), cZ)]
616607 else throw("Strict value is not equal to itself.")
617608 }
618609 else throw("Strict value is not equal to itself.")
619610 }
620611
621612
622-@Verifier(da)
623-func db () = {
624- let dc = {
625- let aO = aN()
626- if ($isInstanceOf(aO, "ByteVector"))
613+
614+@Callable(aM)
615+func confirmManager () = {
616+ let db = aU()
617+ let dc = if (isDefined(db))
618+ then true
619+ else throw("No pending manager")
620+ if ((dc == dc))
621+ then {
622+ let dd = if ((aM.callerPublicKey == value(db)))
623+ then true
624+ else throw("You are not pending manager")
625+ if ((dd == dd))
626+ then [StringEntry(aP(), toBase58String(value(db))), DeleteEntry(aQ())]
627+ else throw("Strict value is not equal to itself.")
628+ }
629+ else throw("Strict value is not equal to itself.")
630+ }
631+
632+
633+@Verifier(de)
634+func df () = {
635+ let dg = {
636+ let aS = aR()
637+ if ($isInstanceOf(aS, "ByteVector"))
627638 then {
628- let aT = aO
629- aT
639+ let aX = aS
640+ aX
630641 }
631- else if ($isInstanceOf(aO, "Unit"))
632- then da.senderPublicKey
642+ else if ($isInstanceOf(aS, "Unit"))
643+ then de.senderPublicKey
633644 else throw("Match error")
634645 }
635- sigVerify(da.bodyBytes, da.proofs[0], dc)
646+ sigVerify(de.bodyBytes, de.proofs[0], dg)
636647 }
637648
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
1010 let d = toBigInt(0)
1111
1212 let e = 0
1313
1414 let f = 1
1515
1616 func g (h) = valueOrElse(getInteger(this, h), 0)
1717
1818
1919 func i (h) = valueOrErrorMessage(getInteger(this, h), (("mandatory this." + h) + " is not defined"))
2020
2121
2222 func j (h) = valueOrElse(getString(this, h), "")
2323
2424
2525 func k (h) = valueOrErrorMessage(getString(this, h), (("mandatory this." + h) + " is not defined"))
2626
2727
2828 func l (m) = if ((0 > m))
2929 then -(m)
3030 else m
3131
3232
3333 func n (m) = if ((d > m))
3434 then -(m)
3535 else m
3636
3737
3838 let o = "%s__maxDepth"
3939
4040 let p = 30
4141
4242 let q = valueOrElse(getInteger(this, o), p)
4343
4444 func r () = "%s%s__config__factoryAddress"
4545
4646
4747 let s = k(r())
4848
4949 let t = addressFromStringValue(s)
5050
5151 func u () = "%s%s__config__emissionAddress"
5252
5353
54-func v (w) = makeString(["%s%s%s", "mapping", "num2user", toString(w)], a)
54+func v () = makeString(["%s", "votingEmissionContract"], a)
5555
5656
57-let x = makeString(["%s%s", "referral", "programName"], a)
57+let w = addressFromStringValue(getStringValue(t, v()))
5858
59-let y = "wxlock"
60-
61-let z = valueOrElse(getString(this, x), y)
62-
63-let A = makeString(["%s%s", "referral", "minGWxAmount"], a)
64-
65-let B = (500 * c)
66-
67-let C = valueOrElse(getInteger(this, A), B)
68-
69-let D = makeString(["%s%s", "referral", "referrerRewardPermille"], a)
70-
71-let E = 50
72-
73-let F = valueOrElse(getInteger(this, D), E)
74-
75-let G = makeString(["%s%s", "referral", "referralRewardPermille"], a)
76-
77-let H = 50
78-
79-let I = valueOrElse(getInteger(this, G), H)
80-
81-func J (K) = makeString(["%s%s%s", "referrer", z, K], a)
59+func x (y) = makeString(["%s%s%s", "mapping", "num2user", toString(y)], a)
8260
8361
84-func L (M,N) = makeString(["%s%s%s", "unclaimedReferral", M, N], a)
62+let z = makeString(["%s%s", "referral", "programName"], a)
63+
64+let A = "wxlock"
65+
66+let B = valueOrElse(getString(this, z), A)
67+
68+let C = makeString(["%s%s", "referral", "minGWxAmount"], a)
69+
70+let D = (500 * c)
71+
72+let E = valueOrElse(getInteger(this, C), D)
73+
74+let F = makeString(["%s%s", "referral", "referrerRewardPermille"], a)
75+
76+let G = 50
77+
78+let H = valueOrElse(getInteger(this, F), G)
79+
80+let I = makeString(["%s%s", "referral", "referralRewardPermille"], a)
81+
82+let J = 50
83+
84+let K = valueOrElse(getInteger(this, I), J)
85+
86+func L (M) = makeString(["%s%s%s", "referrer", B, M], a)
8587
8688
87-let O = k(u())
88-
89-let P = addressFromStringValue(O)
90-
91-let Q = 1
92-
93-let R = 2
94-
95-let S = 3
96-
97-let T = 4
98-
99-func U () = "%s__config"
89+func N (O,P) = makeString(["%s%s%s", "unclaimedReferral", O, P], a)
10090
10191
102-func V () = split(k(U()), a)
92+let Q = k(u())
93+
94+let R = addressFromStringValue(Q)
95+
96+let S = 1
97+
98+let T = 2
99+
100+let U = 3
101+
102+let V = 4
103+
104+func W () = "%s__config"
103105
104106
105-func W (X,Y,Z,q) = makeString(["%s%s%s%d", X, Y, Z, toString(q)], a)
107+func X () = split(k(W()), a)
106108
107109
108-func aa () = {
109- let ab = V()
110- valueOrErrorMessage(addressFromString(ab[S]), "boosting contract address is not defined")
110+func Y (Z,aa,ab,q) = makeString(["%s%s%s%d", Z, aa, ab, toString(q)], a)
111+
112+
113+func ac () = {
114+ let ad = X()
115+ valueOrErrorMessage(addressFromString(ad[U]), "boosting contract address is not defined")
111116 }
112117
113118
114-func ac () = "%s%s__gwxRewardEmissionPart__startHeight"
119+func ae () = "%s%s__gwxRewardEmissionPart__startHeight"
115120
116121
117-func ad () = "%s__nextUserNum"
122+func af () = "%s__nextUserNum"
118123
119124
120-func ae () = "%s%s__ratePerBlock__current"
125+func ag () = "%s%s__ratePerBlock__current"
121126
122127
123-func af () = "%s%s__poolWeight__GWXvirtualPOOL"
128+func ah () = "%s%s__gwxHoldersReward__current"
124129
125130
126-func ag () = "%s__nextProcessedUser"
131+func ai () = "%s%s__gwxHoldersReward__next"
127132
128133
129-func ah () = "%s__latestPeriod"
134+func aj () = "%s%s__poolWeight__GWXvirtualPOOL"
130135
131136
132-func ai () = "%s__nextPeriod"
137+func ak () = "%s__nextProcessedUser"
133138
134139
135-func aj () = "%s__processingStage"
140+func al () = "%s__latestPeriod"
136141
137142
138-func ak () = "%s__nextProcessedPeriod"
143+func am () = "%s__nextPeriod"
139144
140145
141-func al (am) = makeString(["%s%d", "userUnclaimed", toString(am)], a)
146+func an () = "%s__processingStage"
142147
143148
144-func an (am) = makeString(["%s%d__nextClaimedPeriod", toString(am)], a)
149+func ao () = "%s__nextProcessedPeriod"
145150
146151
147-func ao (am) = makeString(["%s%d__lastProcessedPeriod", toString(am)], a)
152+func ap (aq) = makeString(["%s%d", "userUnclaimed", toString(aq)], a)
148153
149154
150-func ap (aq) = makeString(["%s%d__startHeightForPeriod", toString(aq)], a)
155+func ar (aq) = makeString(["%s%d__nextClaimedPeriod", toString(aq)], a)
151156
152157
153-func ar (aq) = makeString(["%s%d__auxEmissionReward", toString(aq)], a)
158+func as (aq) = makeString(["%s%d__lastProcessedPeriod", toString(aq)], a)
154159
155160
156-func as (aq) = makeString(["%s%d__totalAmountForPeriod", toString(aq)], a)
161+func at (au) = makeString(["%s%d__startHeightForPeriod", toString(au)], a)
157162
158163
159-func at () = "%s__lastPayoutInfo"
164+func av (au) = makeString(["%s%d__auxEmissionReward", toString(au)], a)
160165
161166
162-func au (aq,av,aw) = makeString(["%d%d%d", toString(aq), toString(av), toString(aw)], a)
167+func aw (au) = makeString(["%s%d__totalAmountForPeriod", toString(au)], a)
163168
164169
165-func ax (aq) = makeString(["%s%s%d__payouts__history", toString(aq)], a)
170+func ax () = "%s__lastPayoutInfo"
166171
167172
168-func ay (aq) = makeString(["%s%d__totalWeightForPeriod", toString(aq)], a)
173+func ay (au,az,aA) = makeString(["%d%d%d", toString(au), toString(az), toString(aA)], a)
169174
170175
171-func az (aq,am) = makeString(["%s%d%s%d__paramByPeriod", toString(am), "k", toString(aq)], a)
176+func aB (au) = makeString(["%s%s%d__payouts__history", toString(au)], a)
172177
173178
174-func aA (aq,am) = makeString(["%s%d%s%d__paramByPeriod", toString(am), "b", toString(aq)], a)
179+func aC (au) = makeString(["%s%d__totalWeightForPeriod", toString(au)], a)
175180
176181
177-func aB (aq,am) = makeString(["%s%d%s%d__paramByPeriod", toString(am), "weight", toString(aq)], a)
182+func aD (au,aq) = makeString(["%s%d%s%d__paramByPeriod", toString(aq), "k", toString(au)], a)
178183
179184
180-func aC () = makeString(["%s%s", "config", "referralsContractAddress"], a)
185+func aE (au,aq) = makeString(["%s%d%s%d__paramByPeriod", toString(aq), "b", toString(au)], a)
181186
182187
183-let aD = addressFromStringValue(k(aC()))
188+func aF (au,aq) = makeString(["%s%d%s%d__paramByPeriod", toString(aq), "weight", toString(au)], a)
184189
185-func aE (aF,aG,aH,aI) = {
186- let aJ = makeString(["%s%s%s%s__history", aF, aG, toBase58String(aI.transactionId)], a)
187- let aK = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aH)], a)
188- StringEntry(aJ, aK)
190+
191+func aG () = makeString(["%s%s", "config", "referralsContractAddress"], a)
192+
193+
194+let aH = addressFromStringValue(k(aG()))
195+
196+func aI (aJ,aK,aL,aM) = {
197+ let aN = makeString(["%s%s%s%s__history", aJ, aK, toBase58String(aM.transactionId)], a)
198+ let aO = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aL)], a)
199+ StringEntry(aN, aO)
189200 }
190201
191202
192-func aL () = "%s__managerPublicKey"
203+func aP () = "%s__managerPublicKey"
193204
194205
195-func aM () = "%s__pendingManagerPublicKey"
206+func aQ () = "%s__pendingManagerPublicKey"
196207
197208
198-func aN () = {
199- let aO = getString(aL())
200- if ($isInstanceOf(aO, "String"))
209+func aR () = {
210+ let aS = getString(aP())
211+ if ($isInstanceOf(aS, "String"))
201212 then {
202- let aP = aO
203- fromBase58String(aP)
213+ let aT = aS
214+ fromBase58String(aT)
204215 }
205- else if ($isInstanceOf(aO, "Unit"))
216+ else if ($isInstanceOf(aS, "Unit"))
206217 then unit
207218 else throw("Match error")
208219 }
209220
210221
211-func aQ () = {
212- let aO = getString(aM())
213- if ($isInstanceOf(aO, "String"))
222+func aU () = {
223+ let aS = getString(aQ())
224+ if ($isInstanceOf(aS, "String"))
214225 then {
215- let aP = aO
216- fromBase58String(aP)
226+ let aT = aS
227+ fromBase58String(aT)
217228 }
218- else if ($isInstanceOf(aO, "Unit"))
229+ else if ($isInstanceOf(aS, "Unit"))
219230 then unit
220231 else throw("Match error")
221232 }
222233
223234
224-func aR (aI) = {
225- let aS = throw("Permission denied")
226- let aO = aN()
227- if ($isInstanceOf(aO, "ByteVector"))
235+func aV (aM) = {
236+ let aW = throw("Permission denied")
237+ let aS = aR()
238+ if ($isInstanceOf(aS, "ByteVector"))
228239 then {
229- let aT = aO
230- if ((aI.callerPublicKey == aT))
240+ let aX = aS
241+ if ((aM.callerPublicKey == aX))
231242 then true
232- else aS
243+ else aW
233244 }
234- else if ($isInstanceOf(aO, "Unit"))
235- then if ((aI.caller == this))
245+ else if ($isInstanceOf(aS, "Unit"))
246+ then if ((aM.caller == this))
236247 then true
237- else aS
248+ else aW
238249 else throw("Match error")
239250 }
240251
241252
242-func aU (aV,aW,aq,am) = {
243- let aX = ao(am)
244- let aY = az(aq, am)
245- let aZ = getInteger(aV, aY)
246- let ba = aB(aq, am)
247- if (isDefined(aZ))
253+func aY (aZ,ba,au,aq) = {
254+ let bb = as(aq)
255+ let bc = aD(au, aq)
256+ let bd = getInteger(aZ, bc)
257+ let be = aF(au, aq)
258+ if (isDefined(bd))
248259 then {
249- let bb = value(aZ)
250- let bc = value(getInteger(aV, aA(aq, am)))
251- let bd = ((bb * aW) + bc)
252- if ((bd > 0))
253- then $Tuple2((bd / b), [IntegerEntry(aX, aq), IntegerEntry(ba, bd)])
260+ let bf = value(bd)
261+ let bg = value(getInteger(aZ, aE(au, aq)))
262+ let bh = ((bf * ba) + bg)
263+ if ((bh > 0))
264+ then $Tuple2((bh / b), [IntegerEntry(bb, au), IntegerEntry(be, bh)])
254265 else $Tuple2(0, nil)
255266 }
256267 else {
257- let be = getInteger(this, aX)
258- if (if (isDefined(be))
259- then (aq >= value(be))
268+ let bi = getInteger(this, bb)
269+ if (if (isDefined(bi))
270+ then (au >= value(bi))
260271 else false)
261272 then {
262- let bf = value(be)
263- let bb = value(getInteger(aV, az(bf, am)))
264- let bc = value(getInteger(aV, aA(bf, am)))
265- let bd = ((bb * aW) + bc)
266- if ((bd > 0))
267- then $Tuple2((bd / b), [IntegerEntry(ba, bd)])
273+ let bj = value(bi)
274+ let bf = value(getInteger(aZ, aD(bj, aq)))
275+ let bg = value(getInteger(aZ, aE(bj, aq)))
276+ let bh = ((bf * ba) + bg)
277+ if ((bh > 0))
278+ then $Tuple2((bh / b), [IntegerEntry(be, bh)])
268279 else $Tuple2(0, nil)
269280 }
270281 else $Tuple2(0, nil)
271282 }
272283 }
273284
274285
275-func bg (aV,aW,aq,am) = {
276- let ba = aB(aq, am)
277- let bh = getInteger(ba)
278- let aO = bh
279- if ($isInstanceOf(aO, "Unit"))
286+func bk (aZ,ba,au,aq) = {
287+ let be = aF(au, aq)
288+ let bl = getInteger(be)
289+ let aS = bl
290+ if ($isInstanceOf(aS, "Unit"))
280291 then 0
281- else if ($isInstanceOf(aO, "Int"))
292+ else if ($isInstanceOf(aS, "Int"))
282293 then {
283- let bd = aO
284- (bd / b)
294+ let bh = aS
295+ (bh / b)
285296 }
286297 else throw("Match error")
287298 }
288299
289300
290-func bi (Z,bj) = {
291- let h = makeString(["%s%s%s", "mapping", "user2num", bj], a)
292- parseIntValue(valueOrErrorMessage(getString(Address(fromBase58String(Z)), h), ((("User address " + bj) + " is not found in boosting contract data, key=") + h)))
301+func bm (ab,bn) = {
302+ let h = makeString(["%s%s%s", "mapping", "user2num", bn], a)
303+ parseIntValue(valueOrErrorMessage(getString(Address(fromBase58String(ab)), h), ((("User address " + bn) + " is not found in boosting contract data, key=") + h)))
293304 }
294305
295306
296-func bk () = g(ai())
307+func bo () = g(am())
297308
298309
299-func bl (bj) = {
300- let ab = V()
301- let bm = bi(ab[S], bj)
302- let bn = getInteger(al(bm))
303- let aO = bn
304- if ($isInstanceOf(aO, "Unit"))
310+func bp (bn) = {
311+ let ad = X()
312+ let bq = bm(ad[U], bn)
313+ let br = getInteger(ap(bq))
314+ let aS = br
315+ if ($isInstanceOf(aS, "Unit"))
305316 then $Tuple2(0, nil)
306- else if ($isInstanceOf(aO, "Int"))
317+ else if ($isInstanceOf(aS, "Int"))
307318 then {
308- let bo = aO
309- $Tuple2(bo, [IntegerEntry(al(bm), 0)])
319+ let bs = aS
320+ $Tuple2(bs, [IntegerEntry(ap(bq), 0)])
310321 }
311322 else throw("Match error")
312323 }
313324
314325
315-@Callable(aI)
316-func updateReferralActivity (bj,bp) = {
317- let bq = getString(aD, J(bj))
318- let br = if ((bq == unit))
326+@Callable(aM)
327+func updateReferralActivity (bn,bt) = {
328+ let bu = getString(aH, L(bn))
329+ let bv = if ((bu == unit))
319330 then unit
320- else invoke(aD, "updateReferralActivity", [z, bj, (bp >= C)], nil)
321- if ((br == br))
331+ else invoke(aH, "updateReferralActivity", [B, bn, (bt >= E)], nil)
332+ if ((bv == bv))
322333 then $Tuple2(nil, unit)
323334 else throw("Strict value is not equal to itself.")
324335 }
325336
326337
327338
328-@Callable(aI)
339+@Callable(aM)
329340 func finalizeHelper () = {
330- let bs = valueOrElse(getInteger(aj()), e)
331- let bt = g(ak())
332- let bu = g(ag())
333- let bv = g(ah())
334- let bw = valueOrElse(getInteger(aa(), ad()), 0)
335- let bx = ay(bt)
336- let by = g(ay(bt))
337- let aW = g(ap(bt))
338- if ((bt > bv))
341+ let bw = valueOrElse(getInteger(an()), e)
342+ let bx = g(ao())
343+ let by = g(ak())
344+ let bz = g(al())
345+ let bA = valueOrElse(getInteger(ac(), af()), 0)
346+ let bB = aC(bx)
347+ let bC = g(aC(bx))
348+ let ba = g(at(bx))
349+ if ((bx > bz))
339350 then $Tuple2(nil, false)
340- else if ((bs == e))
351+ else if ((bw == e))
341352 then {
342- let bz = aU(aa(), aW, bt, bu)
343- let bA = bz._1
344- let bB = bz._2
345- let bC = (by + bA)
346- let bD = if (((bw - 1) > bu))
347- then [IntegerEntry(ag(), (bu + 1))]
348- else [IntegerEntry(aj(), f), IntegerEntry(ag(), 0)]
349- $Tuple2((([IntegerEntry(bx, bC)] ++ bD) ++ bB), true)
353+ let bD = aY(ac(), ba, bx, by)
354+ let bE = bD._1
355+ let bF = bD._2
356+ let bG = (bC + bE)
357+ let bH = if (((bA - 1) > by))
358+ then [IntegerEntry(ak(), (by + 1))]
359+ else [IntegerEntry(an(), f), IntegerEntry(ak(), 0)]
360+ $Tuple2((([IntegerEntry(bB, bG)] ++ bH) ++ bF), true)
350361 }
351- else if ((bs == f))
362+ else if ((bw == f))
352363 then {
353- let bA = bg(aa(), aW, bt, bu)
354- let bE = fraction(g(as(bt)), bA, by)
355- let bF = fraction(g(ar(bt)), bA, by)
356- let bG = (bF + bE)
357- let bn = getInteger(al(bu))
358- let bj = getStringValue(aa(), v(bu))
359- let bq = getString(aD, J(bj))
360- let br = if ((bq == unit))
364+ let bE = bk(ac(), ba, bx, by)
365+ let bI = fraction(g(aw(bx)), bE, bC)
366+ let bJ = fraction(g(av(bx)), bE, bC)
367+ let bK = (bJ + bI)
368+ let br = getInteger(ap(by))
369+ let bn = getStringValue(ac(), x(by))
370+ let bu = getString(aH, L(bn))
371+ let bv = if ((bu == unit))
361372 then unit
362- else invoke(aD, "updateReferralActivity", [z, bj, (bA >= C)], nil)
363- if ((br == br))
373+ else invoke(aH, "updateReferralActivity", [B, bn, (bE >= E)], nil)
374+ if ((bv == bv))
364375 then {
365- let bH = if (if ((bq == unit))
376+ let bL = if (if ((bu == unit))
366377 then true
367- else (C > bA))
378+ else (E > bE))
368379 then unit
369380 else {
370- let bI = fraction(bG, F, b)
371- let bJ = fraction(bG, I, b)
372- invoke(aD, "incUnclaimed", [z, bj, bI, bJ], nil)
381+ let bM = fraction(bK, H, b)
382+ let bN = fraction(bK, K, b)
383+ invoke(aH, "incUnclaimed", [B, bn, bM, bN], nil)
373384 }
374- if ((bH == bH))
385+ if ((bL == bL))
375386 then {
376- let bK = [IntegerEntry(al(bu), (valueOrElse(bn, 0) + bG))]
377- let bD = if (((bw - 1) > bu))
378- then [IntegerEntry(ag(), (bu + 1))]
379- else [IntegerEntry(ak(), (bt + 1)), IntegerEntry(ag(), 0), DeleteEntry(aj())]
380- $Tuple2((bK ++ bD), true)
387+ let bO = [IntegerEntry(ap(by), (valueOrElse(br, 0) + bK))]
388+ let bH = if (((bA - 1) > by))
389+ then [IntegerEntry(ak(), (by + 1))]
390+ else [IntegerEntry(ao(), (bx + 1)), IntegerEntry(ak(), 0), DeleteEntry(an())]
391+ $Tuple2((bO ++ bH), true)
381392 }
382393 else throw("Strict value is not equal to itself.")
383394 }
384395 else throw("Strict value is not equal to itself.")
385396 }
386397 else throw("invalid processing stage")
387398 }
388399
389400
390401
391-@Callable(aI)
392-func finalizeWrapper (bL) = {
393- let bM = {
394- let bN = invoke(this, "finalizeHelper", nil, nil)
395- if ($isInstanceOf(bN, "Boolean"))
396- then bN
397- else throw(($getType(bN) + " couldn't be cast to Boolean"))
402+@Callable(aM)
403+func finalizeWrapper (bP) = {
404+ let bQ = {
405+ let bR = invoke(this, "finalizeHelper", nil, nil)
406+ if ($isInstanceOf(bR, "Boolean"))
407+ then bR
408+ else throw(($getType(bR) + " couldn't be cast to Boolean"))
398409 }
399- if ((bM == bM))
400- then if (!(bM))
401- then if ((bL == q))
410+ if ((bQ == bQ))
411+ then if (!(bQ))
412+ then if ((bP == q))
402413 then throw("Nothing to process")
403414 else $Tuple2(nil, unit)
404- else if ((bL > 0))
405- then $Tuple2(nil, invoke(this, "finalizeWrapper", [(bL - 1)], nil))
415+ else if ((bP > 0))
416+ then $Tuple2(nil, invoke(this, "finalizeWrapper", [(bP - 1)], nil))
406417 else $Tuple2(nil, unit)
407418 else throw("Strict value is not equal to itself.")
408419 }
409420
410421
411422
412-@Callable(aI)
423+@Callable(aM)
413424 func processPendingPeriodsAndUsers () = $Tuple2(nil, invoke(this, "finalizeWrapper", [q], nil))
414425
415426
416427
417-@Callable(aI)
428+@Callable(aM)
418429 func deposit () = {
419- let ab = V()
420- if ((aI.caller != Address(fromBase58String(ab[R]))))
421- then throw("Wrong caller address")
422- else {
423- let bO = value(value(aI.payments[0]).assetId)
424- if ((bO != fromBase58String(ab[Q])))
425- then throw("Wrong payment asset")
426- else {
427- let aq = bk()
428- let bP = (height - i(ac()))
429- let bQ = valueOrErrorMessage(getInteger(P, ae()), (("mandatory emission_contract." + ae()) + " is not defined"))
430- let bR = valueOrErrorMessage(getInteger(t, af()), (("mandatory factory_contract." + af()) + " is not defined"))
431- let bS = fraction((bP * bR), bQ, c)
432- let bT = invoke(P, "emit", [bS], nil)
433- if ((bT == bT))
434- then {
435- let bU = value(aI.payments[0]).amount
436- let bV = au(aq, bU, bS)
437-[IntegerEntry(ah(), aq), IntegerEntry(ap(aq), height), IntegerEntry(ar(aq), bS), IntegerEntry(ac(), height), IntegerEntry(as(aq), bU), IntegerEntry(ai(), (aq + 1)), StringEntry(at(), bV), StringEntry(ax(aq), bV)]
438- }
430+ let bS = if ((aM.caller == w))
431+ then true
432+ else aV(aM)
433+ if ((bS == bS))
434+ then {
435+ let au = bo()
436+ let bT = (height - i(ae()))
437+ let bU = valueOrErrorMessage(getInteger(R, ag()), (("mandatory emission_contract." + ag()) + " is not defined"))
438+ let bV = valueOrElse(getInteger(R, ah()), 0)
439+ let bW = fraction((bT * bV), bU, c)
440+ let bX = invoke(R, "emit", [bW], nil)
441+ if ((bX == bX))
442+ then {
443+ let bY = 0
444+ let bZ = ay(au, bY, bW)
445+ let ca = invoke(R, "gwxHoldersRewardUpdate", nil, nil)
446+ if ((ca == ca))
447+ then [IntegerEntry(al(), au), IntegerEntry(at(au), height), IntegerEntry(av(au), bW), IntegerEntry(ae(), height), IntegerEntry(aw(au), bY), IntegerEntry(am(), (au + 1)), StringEntry(ax(), bZ), StringEntry(aB(au), bZ)]
439448 else throw("Strict value is not equal to itself.")
440449 }
441- }
442- }
443-
444-
445-
446-@Callable(aI)
447-func claimReward () = {
448- let ab = V()
449- let bW = toString(aI.caller)
450- let bX = bl(bW)
451- let aH = bX._1
452- let bY = bX._2
453- let bZ = if ((aH > 0))
454- then true
455- else throw("Nothing to claim")
456- if ((bZ == bZ))
457- then {
458- let ca = 0
459- let cb = {
460- let bN = invoke(aD, "claim", [z], nil)
461- if ($isInstanceOf(bN, "Int"))
462- then bN
463- else throw(($getType(bN) + " couldn't be cast to Int"))
464- }
465- let cc = (aH + cb)
466- $Tuple2(([ScriptTransfer(aI.caller, cc, fromBase58String(ab[Q])), aE("claim", bW, aH, aI)] ++ bY), [cc, ca])
467- }
468- else throw("Strict value is not equal to itself.")
469- }
470-
471-
472-
473-@Callable(aI)
474-func claimRewardREADONLY (bW) = {
475- let cd = bl(bW)
476- let aH = cd._1
477- let bY = cd._2
478- let ce = valueOrElse(getInteger(aD, L(z, bW)), 0)
479- let cc = (aH + ce)
480- $Tuple2(nil, cc)
481- }
482-
483-
484-
485-@Callable(aI)
486-func latestFinalizedPeriodREADONLY (bW) = $Tuple2(nil, valueOrElse(getInteger(this, ah()), -1))
487-
488-
489-
490-@Callable(aI)
491-func latestFinalizedPeriodInfoREADONLY (bW) = $Tuple2(nil, j(at()))
492-
493-
494-
495-@Callable(aI)
496-func calcGwxParamsREADONLY (cf,cg,ch) = {
497- let ci = (cg + ch)
498- let cj = -(fraction(cf, b, ch))
499- let ck = (fraction(cf, b, ch) * ci)
500- $Tuple2(nil, [cj, ck, bk()])
501- }
502-
503-
504-
505-@Callable(aI)
506-func calcGwxAmountStartREADONLY (cl,cm,cn) = {
507- let co = fraction(cm, c, cn)
508- let bp = fraction(cl, co, c)
509- $Tuple2(nil, [bp])
510- }
511-
512-
513-
514-@Callable(aI)
515-func onEmissionForGwxStart () = if ((aI.caller != t))
516- then throw("permissions denied")
517- else [IntegerEntry(ac(), height)]
518-
519-
520-
521-@Callable(aI)
522-func latestPeriodEmissionRewardsREADONLY (bW) = {
523- let aq = bk()
524- $Tuple2(nil, [g(ar(aq))])
525- }
526-
527-
528-
529-@Callable(aI)
530-func calcD (cp,cq,cr,cs,ct) = {
531- let cu = toBigInt(2)
532- let cv = parseBigIntValue(cs)
533- let cw = parseBigIntValue(ct)
534- let cx = parseBigIntValue(cp)
535- let cy = parseBigIntValue(cq)
536- let cz = (parseBigIntValue(cr) * cv)
537- let aP = (cx + cy)
538- if ((aP == d))
539- then $Tuple2(nil, toString(d))
540- else {
541- let cA = (cz * cu)
542- let cB = [0, 1, 2, 3, 4, 5, 6]
543- func cC (cD,cE) = {
544- let cF = cD
545- let cG = cF._1
546- let cH = cF._2
547- let cI = cF._3
548- if ((cI != unit))
549- then cD
550- else {
551- let cJ = (((cG * cG) * cG) / (((cx * cy) * cu) * cu))
552- let cK = (((((cA * aP) / cv) + (cJ * cu)) * cG) / ((((cA - cv) * cG) / cv) + ((cu + toBigInt(1)) * cJ)))
553- let cL = n((cK - value(cG)))
554- if ((cw >= cL))
555- then $Tuple3(cK, cG, cE)
556- else $Tuple3(cK, cG, unit)
557- }
558- }
559-
560- let cM = {
561- let cN = cB
562- let cO = size(cN)
563- let cP = $Tuple3(aP, unit, unit)
564- func cQ (cR,cS) = if ((cS >= cO))
565- then cR
566- else cC(cR, cN[cS])
567-
568- func cT (cR,cS) = if ((cS >= cO))
569- then cR
570- else throw("List size exceeds 7")
571-
572- cT(cQ(cQ(cQ(cQ(cQ(cQ(cQ(cP, 0), 1), 2), 3), 4), 5), 6), 7)
573- }
574- let cK = cM._1
575- let cH = cM._2
576- let cI = cM._3
577- if ((cI != unit))
578- then $Tuple2(nil, toString(cK))
579- else {
580- let cL = n((cK - value(cH)))
581- throw(("D calculation error, dDiff = " + toString(cL)))
582- }
583- }
584- }
585-
586-
587-
588-@Callable(aI)
589-func setManager (cU) = {
590- let cV = aR(aI)
591- if ((cV == cV))
592- then {
593- let cW = fromBase58String(cU)
594- if ((cW == cW))
595- then [StringEntry(aM(), cU)]
596450 else throw("Strict value is not equal to itself.")
597451 }
598452 else throw("Strict value is not equal to itself.")
599453 }
600454
601455
602456
603-@Callable(aI)
604-func confirmManager () = {
605- let cX = aQ()
606- let cY = if (isDefined(cX))
457+@Callable(aM)
458+func claimReward () = {
459+ let ad = X()
460+ let cb = toString(aM.caller)
461+ let cc = bp(cb)
462+ let aL = cc._1
463+ let cd = cc._2
464+ let ce = if ((aL > 0))
607465 then true
608- else throw("No pending manager")
609- if ((cY == cY))
466+ else throw("Nothing to claim")
467+ if ((ce == ce))
610468 then {
611- let cZ = if ((aI.callerPublicKey == value(cX)))
612- then true
613- else throw("You are not pending manager")
614- if ((cZ == cZ))
615- then [StringEntry(aL(), toBase58String(value(cX))), DeleteEntry(aM())]
469+ let cf = 0
470+ let cg = {
471+ let bR = invoke(aH, "claim", [B], nil)
472+ if ($isInstanceOf(bR, "Int"))
473+ then bR
474+ else throw(($getType(bR) + " couldn't be cast to Int"))
475+ }
476+ let ch = (aL + cg)
477+ $Tuple2(([ScriptTransfer(aM.caller, ch, fromBase58String(ad[S])), aI("claim", cb, aL, aM)] ++ cd), [ch, cf])
478+ }
479+ else throw("Strict value is not equal to itself.")
480+ }
481+
482+
483+
484+@Callable(aM)
485+func claimRewardREADONLY (cb) = {
486+ let ci = bp(cb)
487+ let aL = ci._1
488+ let cd = ci._2
489+ let cj = valueOrElse(getInteger(aH, N(B, cb)), 0)
490+ let ch = (aL + cj)
491+ $Tuple2(nil, ch)
492+ }
493+
494+
495+
496+@Callable(aM)
497+func latestFinalizedPeriodREADONLY (cb) = $Tuple2(nil, valueOrElse(getInteger(this, al()), -1))
498+
499+
500+
501+@Callable(aM)
502+func latestFinalizedPeriodInfoREADONLY (cb) = $Tuple2(nil, j(ax()))
503+
504+
505+
506+@Callable(aM)
507+func calcGwxParamsREADONLY (ck,cl,cm) = {
508+ let cn = (cl + cm)
509+ let co = -(fraction(ck, b, cm))
510+ let cp = (fraction(ck, b, cm) * cn)
511+ $Tuple2(nil, [co, cp, bo()])
512+ }
513+
514+
515+
516+@Callable(aM)
517+func calcGwxAmountStartREADONLY (cq,cr,cs) = {
518+ let ct = fraction(cr, c, cs)
519+ let bt = fraction(cq, ct, c)
520+ $Tuple2(nil, [bt])
521+ }
522+
523+
524+
525+@Callable(aM)
526+func onEmissionForGwxStart () = if ((aM.caller != t))
527+ then throw("permissions denied")
528+ else [IntegerEntry(ae(), height)]
529+
530+
531+
532+@Callable(aM)
533+func latestPeriodEmissionRewardsREADONLY (cb) = {
534+ let au = bo()
535+ $Tuple2(nil, [g(av(au))])
536+ }
537+
538+
539+
540+@Callable(aM)
541+func calcD (cu,cv,cw,cx,cy) = {
542+ let cz = toBigInt(2)
543+ let cA = parseBigIntValue(cx)
544+ let cB = parseBigIntValue(cy)
545+ let cC = parseBigIntValue(cu)
546+ let cD = parseBigIntValue(cv)
547+ let cE = (parseBigIntValue(cw) * cA)
548+ let aT = (cC + cD)
549+ if ((aT == d))
550+ then $Tuple2(nil, toString(d))
551+ else {
552+ let cF = (cE * cz)
553+ let cG = [0, 1, 2, 3, 4, 5, 6]
554+ func cH (cI,cJ) = {
555+ let cK = cI
556+ let cL = cK._1
557+ let cM = cK._2
558+ let cN = cK._3
559+ if ((cN != unit))
560+ then cI
561+ else {
562+ let cO = (((cL * cL) * cL) / (((cC * cD) * cz) * cz))
563+ let cP = (((((cF * aT) / cA) + (cO * cz)) * cL) / ((((cF - cA) * cL) / cA) + ((cz + toBigInt(1)) * cO)))
564+ let cQ = n((cP - value(cL)))
565+ if ((cB >= cQ))
566+ then $Tuple3(cP, cL, cJ)
567+ else $Tuple3(cP, cL, unit)
568+ }
569+ }
570+
571+ let cR = {
572+ let cS = cG
573+ let cT = size(cS)
574+ let cU = $Tuple3(aT, unit, unit)
575+ func cV (cW,cX) = if ((cX >= cT))
576+ then cW
577+ else cH(cW, cS[cX])
578+
579+ func cY (cW,cX) = if ((cX >= cT))
580+ then cW
581+ else throw("List size exceeds 7")
582+
583+ cY(cV(cV(cV(cV(cV(cV(cV(cU, 0), 1), 2), 3), 4), 5), 6), 7)
584+ }
585+ let cP = cR._1
586+ let cM = cR._2
587+ let cN = cR._3
588+ if ((cN != unit))
589+ then $Tuple2(nil, toString(cP))
590+ else {
591+ let cQ = n((cP - value(cM)))
592+ throw(("D calculation error, dDiff = " + toString(cQ)))
593+ }
594+ }
595+ }
596+
597+
598+
599+@Callable(aM)
600+func setManager (cZ) = {
601+ let bS = aV(aM)
602+ if ((bS == bS))
603+ then {
604+ let da = fromBase58String(cZ)
605+ if ((da == da))
606+ then [StringEntry(aQ(), cZ)]
616607 else throw("Strict value is not equal to itself.")
617608 }
618609 else throw("Strict value is not equal to itself.")
619610 }
620611
621612
622-@Verifier(da)
623-func db () = {
624- let dc = {
625- let aO = aN()
626- if ($isInstanceOf(aO, "ByteVector"))
613+
614+@Callable(aM)
615+func confirmManager () = {
616+ let db = aU()
617+ let dc = if (isDefined(db))
618+ then true
619+ else throw("No pending manager")
620+ if ((dc == dc))
621+ then {
622+ let dd = if ((aM.callerPublicKey == value(db)))
623+ then true
624+ else throw("You are not pending manager")
625+ if ((dd == dd))
626+ then [StringEntry(aP(), toBase58String(value(db))), DeleteEntry(aQ())]
627+ else throw("Strict value is not equal to itself.")
628+ }
629+ else throw("Strict value is not equal to itself.")
630+ }
631+
632+
633+@Verifier(de)
634+func df () = {
635+ let dg = {
636+ let aS = aR()
637+ if ($isInstanceOf(aS, "ByteVector"))
627638 then {
628- let aT = aO
629- aT
639+ let aX = aS
640+ aX
630641 }
631- else if ($isInstanceOf(aO, "Unit"))
632- then da.senderPublicKey
642+ else if ($isInstanceOf(aS, "Unit"))
643+ then de.senderPublicKey
633644 else throw("Match error")
634645 }
635- sigVerify(da.bodyBytes, da.proofs[0], dc)
646+ sigVerify(de.bodyBytes, de.proofs[0], dg)
636647 }
637648

github/deemru/w8io/03bedc9 
157.63 ms