tx · 37jRApP3K7dZ2UYb7CKEU2xdcwKTEP7yZZLhXyBmc2Ky

3N6Zcr1qjgomiWEe9a9smqF4oo5nVAv2Cy7:  -0.03700000 Waves

2023.04.17 20:05 [2538841] smart account 3N6Zcr1qjgomiWEe9a9smqF4oo5nVAv2Cy7 > SELF 0.00000000 Waves

{ "type": 13, "id": "37jRApP3K7dZ2UYb7CKEU2xdcwKTEP7yZZLhXyBmc2Ky", "fee": 3700000, "feeAssetId": null, "timestamp": 1681751182834, "version": 2, "chainId": 84, "sender": "3N6Zcr1qjgomiWEe9a9smqF4oo5nVAv2Cy7", "senderPublicKey": "28h5rtcro3AxHztuBMn6CFYrRv3hcdjgwkCdSytBSXUH", "proofs": [ "5ubL8NGv3DUvpatMCxUxibVt1HdpS1o9j7C9jdyXjvi1nhPGoQ1ymsu73D5kZH9gSDy5hUcZ5TS1LBTjECxAy8f4" ], "script": "base64:BgIXCAISAwoBCBIAEgMKAQESABIAEgMKAQg2AA1rX3RvdGFsU3VwcGx5Ag1rX3RvdGFsU3VwcGx5AA9rX3Jld2FyZEJhbGFuY2UCD2tfcmV3YXJkQmFsYW5jZQAOa19zd2FwX2FkZHJlc3MCDmtfc3dhcF9hZGRyZXNzABBrX2xhc3RVcGRhdGVUaW1lAhBrX2xhc3RVcGRhdGVUaW1lABZrX3Jld2FyZFBlclRva2VuU3RvcmVkAhZrX3Jld2FyZFBlclRva2VuU3RvcmVkAAxrX3Jld2FyZFJhdGUCDGtfcmV3YXJkUmF0ZQAOa19wZXJpb2RGaW5pc2gCDmtfcGVyaW9kRmluaXNoAAlrX2JhbGFuY2UCCWtfYmFsYW5jZQAUa191c2VyUmV3YXJkUGVyVG9rZW4CFGtfdXNlclJld2FyZFBlclRva2VuAAxrX3VzZXJSZXdhcmQCDGtfdXNlclJld2FyZAANa19pbml0aWFsaXplZAINa19pbml0aWFsaXplZAAUa19jb29yZGluYXRvckFkZHJlc3MCFGtfY29vcmRpbmF0b3JBZGRyZXNzABFrX3N0YWtpbmdfYWRkcmVzcwIRa19zdGFraW5nX2FkZHJlc3MAEmtfZ292ZXJuYW5jZV9hc3NldAILa19nb3ZfYXNzZXQADmtfcmV3YXJkX2Fzc2V0Ag5rX3Jld2FyZF9hc3NldAAPa19hZG1pbl9hZGRyZXNzAg9rX2FkbWluX2FkZHJlc3MBC2Nvb3JkaW5hdG9yAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBRRrX2Nvb3JkaW5hdG9yQWRkcmVzcwIbQ29vcmRpbmF0b3Igbm90IHNldCBGYXJtaW5nAhtDb29yZGluYXRvciBhZGRyZXNzIGludmFsaWQBDGFkbWluQWRkcmVzcwAJAKYIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIJAQtjb29yZGluYXRvcgAFD2tfYWRtaW5fYWRkcmVzcwIVQWRtaW4gYWRkcmVzcyBub3Qgc2V0AQ9nb3Zlcm5hbmNlQXNzZXQACQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCCQELY29vcmRpbmF0b3IABRJrX2dvdmVybmFuY2VfYXNzZXQCGEdvdmVybmFuY2UgYXNzZXQgbm90IHNldAELcmV3YXJkQXNzZXQACQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCCQELY29vcmRpbmF0b3IABQ5rX3Jld2FyZF9hc3NldAIUUmV3YXJkIGFzc2V0IG5vdCBzZXQBDnN0YWtpbmdBZGRyZXNzAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCCQELY29vcmRpbmF0b3IABRFrX3N0YWtpbmdfYWRkcmVzcwIXU3Rha2luZyBhZGRyZXNzIG5vdCBzZXQCF1N0YWtpbmcgYWRkcmVzcyBpbnZhbGlkAQtzd2FwQWRkcmVzcwAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgkBC2Nvb3JkaW5hdG9yAAUOa19zd2FwX2FkZHJlc3MCFFN3YXAgYWRkcmVzcyBub3Qgc2V0AhRTd2FwIGFkZHJlc3MgaW52YWxpZAAMREVDSU1BTF9VTklUCQBoAgABCQBoAgkAaAIJAGgCCQBoAgkAaAIJAGgCCQBoAgAKAAoACgAKAAoACgAKAAoACERVUkFUSU9OCQBoAgkAaAIAPAA8ABgACk5PX0FERFJFU1MCAAAJTk9fU1RBS0VSAAABBGRpdmQCAl94Al95CQBuBAUCX3gFDERFQ0lNQUxfVU5JVAUCX3kFCEhBTEZFVkVOAQRtdWxkAgJfeAJfeQkAbgQFAl94BQJfeQUMREVDSU1BTF9VTklUBQhIQUxGRVZFTgEDYWJzAQJfeAMJAGYCBQJfeAAABQJfeAkBAS0BBQJfeAEEbWludgICX3gCX3kDCQBmAgUCX3gFAl95BQJfeQUCX3gBDnRvQ29tcG9zaXRlS2V5AgRfa2V5CF9hZGRyZXNzCQCsAgIJAKwCAgUEX2tleQIBXwUIX2FkZHJlc3MBA2ludAEBawkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMFAWsJAKwCAgINbm8gdmFsdWUgZm9yIAUBawEEaW50MAEBawkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFrAAABC3RvdGFsU3VwcGx5AAkBBGludDABBQ1rX3RvdGFsU3VwcGx5ARRyZXdhcmRQZXJUb2tlblN0b3JlZAAJAQRpbnQwAQUWa19yZXdhcmRQZXJUb2tlblN0b3JlZAEObGFzdFVwZGF0ZVRpbWUACQEEaW50MAEFEGtfbGFzdFVwZGF0ZVRpbWUBCnJld2FyZFJhdGUACQEEaW50MAEFDGtfcmV3YXJkUmF0ZQEMcGVyaW9kRmluaXNoAAkBBGludDABBQ5rX3BlcmlvZEZpbmlzaAENcmV3YXJkQmFsYW5jZQAJAQRpbnQwAQUPa19yZXdhcmRCYWxhbmNlAQdyZXdhcmRzAQdfc3Rha2VyCQEEaW50MAEJAQ50b0NvbXBvc2l0ZUtleQIFDGtfdXNlclJld2FyZAUHX3N0YWtlcgEWdXNlclJld2FyZFBlclRva2VuUGFpZAEHX3N0YWtlcgkBBGludDABCQEOdG9Db21wb3NpdGVLZXkCBRRrX3VzZXJSZXdhcmRQZXJUb2tlbgUHX3N0YWtlcgEJYmFsYW5jZU9mAQdfc3Rha2VyCQEEaW50MAEJAQ50b0NvbXBvc2l0ZUtleQIFCWtfYmFsYW5jZQUHX3N0YWtlcgELaW5pdGlhbGl6ZWQACQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFDWtfaW5pdGlhbGl6ZWQHARN1cGRhdGVSZXdhcmRCYWxhbmNlAQZfZGVsdGEJAMwIAgkBDEludGVnZXJFbnRyeQIFD2tfcmV3YXJkQmFsYW5jZQkAZAIJAQ1yZXdhcmRCYWxhbmNlAAUGX2RlbHRhBQNuaWwBEHVwZGF0ZVJld2FyZFJhdGUBC19yZXdhcmRSYXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQxrX3Jld2FyZFJhdGUFC19yZXdhcmRSYXRlBQNuaWwBCnVwZGF0ZVRpbWUCD19sYXN0VXBkYXRlVGltZQ1fcGVyaW9kRmluaXNoCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBrX2xhc3RVcGRhdGVUaW1lBQ9fbGFzdFVwZGF0ZVRpbWUJAMwIAgkBDEludGVnZXJFbnRyeQIFDmtfcGVyaW9kRmluaXNoBQ1fcGVyaW9kRmluaXNoBQNuaWwBGnVwZGF0ZVJld2FyZFBlclRva2VuU3RvcmVkARVfcmV3YXJkUGVyVG9rZW5TdG9yZWQJAMwIAgkBDEludGVnZXJFbnRyeQIFFmtfcmV3YXJkUGVyVG9rZW5TdG9yZWQFFV9yZXdhcmRQZXJUb2tlblN0b3JlZAUDbmlsARF1cGRhdGVVc2VyUmV3YXJkcwMHX3N0YWtlcgdfcmV3YXJkE191c2VyUmV3YXJkUGVyVG9rZW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFDGtfdXNlclJld2FyZAUHX3N0YWtlcgUHX3Jld2FyZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUUa191c2VyUmV3YXJkUGVyVG9rZW4FB19zdGFrZXIFE191c2VyUmV3YXJkUGVyVG9rZW4FA25pbAENdXBkYXRlQmFsYW5jZQIHX3N0YWtlcgZfZGVsdGEJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFCWtfYmFsYW5jZQUHX3N0YWtlcgkAZAIJAQliYWxhbmNlT2YBBQdfc3Rha2VyBQZfZGVsdGEJAMwIAgkBDEludGVnZXJFbnRyeQIFDWtfdG90YWxTdXBwbHkJAGQCCQELdG90YWxTdXBwbHkABQZfZGVsdGEFA25pbAETY3VycmVudFRpbWVzdGFtcFNlYwAJAGkCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcADoBwEYbGFzdFRpbWVSZXdhcmRBcHBsaWNhYmxlAAkBBG1pbnYCCQETY3VycmVudFRpbWVzdGFtcFNlYwAJAQxwZXJpb2RGaW5pc2gAAQ5yZXdhcmRQZXJUb2tlbgENX2JhbGFuY2VEZWx0YQMJAAACCQBkAgkBC3RvdGFsU3VwcGx5AAUNX2JhbGFuY2VEZWx0YQAACQEUcmV3YXJkUGVyVG9rZW5TdG9yZWQABAx0aW1lSW50ZXJ2YWwJAGUCCQEYbGFzdFRpbWVSZXdhcmRBcHBsaWNhYmxlAAkBDmxhc3RVcGRhdGVUaW1lAAQSYWN0dWFsVGltZUludGVydmFsAwkAZgIAAAUMdGltZUludGVydmFsAAAFDHRpbWVJbnRlcnZhbAQEZGlmZgkBBGRpdmQCCQBoAgkBCnJld2FyZFJhdGUABRJhY3R1YWxUaW1lSW50ZXJ2YWwJAGQCCQELdG90YWxTdXBwbHkABQ1fYmFsYW5jZURlbHRhCQBkAgkBFHJld2FyZFBlclRva2VuU3RvcmVkAAUEZGlmZgEGZWFybmVkAgdfc3Rha2VyDV9iYWxhbmNlRGVsdGEEC3Jld2FyZERlbHRhCQBlAgkBDnJld2FyZFBlclRva2VuAQUNX2JhbGFuY2VEZWx0YQkBFnVzZXJSZXdhcmRQZXJUb2tlblBhaWQBBQdfc3Rha2VyCQBkAgkBBG11bGQCCQBkAgkBCWJhbGFuY2VPZgEFB19zdGFrZXIFDV9iYWxhbmNlRGVsdGEFC3Jld2FyZERlbHRhCQEHcmV3YXJkcwEFB19zdGFrZXIBDHVwZGF0ZVJld2FyZAIHX3N0YWtlcg1fYmFsYW5jZURlbHRhBBduZXdSZXdhcmRQZXJUb2tlblN0b3JlZAkBDnJld2FyZFBlclRva2VuAQUNX2JhbGFuY2VEZWx0YQQRbmV3TGFzdFVwZGF0ZVRpbWUJARNjdXJyZW50VGltZXN0YW1wU2VjAAQLJHQwNTMwODU1MDADCQECIT0CBQdfc3Rha2VyAgAJAJQKAgkBBmVhcm5lZAIFB19zdGFrZXIFDV9iYWxhbmNlRGVsdGEFF25ld1Jld2FyZFBlclRva2VuU3RvcmVkCQCUCgIAAAAABAxzdGFrZXJFYXJuZWQIBQskdDA1MzA4NTUwMAJfMQQYc3Rha2VyUmV3YXJkUGVyVG9rZW5QYWlkCAULJHQwNTMwODU1MDACXzIJAJYKBAUXbmV3UmV3YXJkUGVyVG9rZW5TdG9yZWQFEW5ld0xhc3RVcGRhdGVUaW1lBQxzdGFrZXJFYXJuZWQFGHN0YWtlclJld2FyZFBlclRva2VuUGFpZAYBaQEKaW5pdGlhbGl6ZQEMX2Nvb3JkaW5hdG9yAwMJAQtpbml0aWFsaXplZAAGCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhRVbmFibGUgdG8gaW5pdGlhbGl6ZQkAzAgCCQELU3RyaW5nRW50cnkCBRRrX2Nvb3JkaW5hdG9yQWRkcmVzcwkApQgBCQERQGV4dHJOYXRpdmUoMTA2MikBBQxfY29vcmRpbmF0b3IJAMwIAgkBDEJvb2xlYW5FbnRyeQIFDWtfaW5pdGlhbGl6ZWQGBQNuaWwBaQEFc3Rha2UABAdfc3Rha2VyCQClCAEIBQFpBmNhbGxlcgQHX2Ftb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQDAwkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCQEPZ292ZXJuYW5jZUFzc2V0AAYJAQEhAQkBC2luaXRpYWxpemVkAAkAAgECFkludmFsaWQgY2FsbCB0byAgc3Rha2UECyR0MDYyMTI2Mzc3CQEMdXBkYXRlUmV3YXJkAgUHX3N0YWtlcgAABBduZXdSZXdhcmRQZXJUb2tlblN0b3JlZAgFCyR0MDYyMTI2Mzc3Al8xBBFuZXdMYXN0VXBkYXRlVGltZQgFCyR0MDYyMTI2Mzc3Al8yBAxzdGFrZXJFYXJuZWQIBQskdDA2MjEyNjM3NwJfMwQYc3Rha2VyUmV3YXJkUGVyVG9rZW5QYWlkCAULJHQwNjIxMjYzNzcCXzQEB2RvU3Rha2UJAPwHBAkBDnN0YWtpbmdBZGRyZXNzAAIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBD2dvdmVybmFuY2VBc3NldAAFB19hbW91bnQFA25pbAMJAAACBQdkb1N0YWtlBQdkb1N0YWtlCQDOCAIJAM4IAgkAzggCCQERdXBkYXRlVXNlclJld2FyZHMDBQdfc3Rha2VyBQxzdGFrZXJFYXJuZWQFGHN0YWtlclJld2FyZFBlclRva2VuUGFpZAkBGnVwZGF0ZVJld2FyZFBlclRva2VuU3RvcmVkAQUXbmV3UmV3YXJkUGVyVG9rZW5TdG9yZWQJAQp1cGRhdGVUaW1lAgURbmV3TGFzdFVwZGF0ZVRpbWUJAQxwZXJpb2RGaW5pc2gACQENdXBkYXRlQmFsYW5jZQIFB19zdGFrZXIFB19hbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEHdW5TdGFrZQEHX2Ftb3VudAQMZG9BY2tSZXdhcmRzCQD8BwQFBHRoaXMCCmFja1Jld2FyZHMFA25pbAUDbmlsAwkAAAIFDGRvQWNrUmV3YXJkcwUMZG9BY2tSZXdhcmRzBAdfc3Rha2VyCQClCAEIBQFpBmNhbGxlcgMDCQECIT0CCAUBaQhwYXltZW50cwUDbmlsBgkBASEBCQELaW5pdGlhbGl6ZWQACQACAQIaSW52YWxpZCB1blN0YWtlIHBhcmFtZXRlcnMECyR0MDcxMjM3Mjg4CQEMdXBkYXRlUmV3YXJkAgUHX3N0YWtlcgAABBduZXdSZXdhcmRQZXJUb2tlblN0b3JlZAgFCyR0MDcxMjM3Mjg4Al8xBBFuZXdMYXN0VXBkYXRlVGltZQgFCyR0MDcxMjM3Mjg4Al8yBAxzdGFrZXJFYXJuZWQIBQskdDA3MTIzNzI4OAJfMwQYc3Rha2VyUmV3YXJkUGVyVG9rZW5QYWlkCAULJHQwNzEyMzcyODgCXzQDCQBmAgUHX2Ftb3VudAkAZAIJAQliYWxhbmNlT2YBBQdfc3Rha2VyBQxzdGFrZXJFYXJuZWQJAAIBAhpJbnZhbGlkIHVuU3Rha2UgcGFyYW1ldGVycwQJZG9VblN0YWtlCQD8BwQJAQ5zdGFraW5nQWRkcmVzcwACB3VuU3Rha2UJAMwIAgUHX2Ftb3VudAUDbmlsBQNuaWwDCQAAAgUJZG9VblN0YWtlBQlkb1VuU3Rha2UEDHJld2FyZENoYW5nZQMJAGcCCQEJYmFsYW5jZU9mAQUHX3N0YWtlcgUHX2Ftb3VudAAACQBlAgUHX2Ftb3VudAkBCWJhbGFuY2VPZgEFB19zdGFrZXIEDWJhbGFuY2VDaGFuZ2UDCQBnAgkBCWJhbGFuY2VPZgEFB19zdGFrZXIFB19hbW91bnQFB19hbW91bnQJAQliYWxhbmNlT2YBBQdfc3Rha2VyCQDOCAIJAM4IAgkAzggCCQDOCAIJAM4IAgkBEXVwZGF0ZVVzZXJSZXdhcmRzAwUHX3N0YWtlcgkAZQIFDHN0YWtlckVhcm5lZAUMcmV3YXJkQ2hhbmdlBRhzdGFrZXJSZXdhcmRQZXJUb2tlblBhaWQJARp1cGRhdGVSZXdhcmRQZXJUb2tlblN0b3JlZAEFF25ld1Jld2FyZFBlclRva2VuU3RvcmVkCQEKdXBkYXRlVGltZQIFEW5ld0xhc3RVcGRhdGVUaW1lCQEMcGVyaW9kRmluaXNoAAkBDXVwZGF0ZUJhbGFuY2UCBQdfc3Rha2VyCQEBLQEFDWJhbGFuY2VDaGFuZ2UJARN1cGRhdGVSZXdhcmRCYWxhbmNlAQkBAS0BBQxyZXdhcmRDaGFuZ2UJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQdfYW1vdW50CQEPZ292ZXJuYW5jZUFzc2V0AAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBD3dpdGhkcmF3UmV3YXJkcwAEDGRvQWNrUmV3YXJkcwkA/AcEBQR0aGlzAgphY2tSZXdhcmRzBQNuaWwFA25pbAMJAAACBQxkb0Fja1Jld2FyZHMFDGRvQWNrUmV3YXJkcwQHX3N0YWtlcgkApQgBCAUBaQZjYWxsZXIECyR0MDg2MjY4NzcxCQEMdXBkYXRlUmV3YXJkAgUHX3N0YWtlcgAABBduZXdSZXdhcmRQZXJUb2tlblN0b3JlZAgFCyR0MDg2MjY4NzcxAl8xBBFuZXdMYXN0VXBkYXRlVGltZQgFCyR0MDg2MjY4NzcxAl8yBAxzdGFrZXJFYXJuZWQIBQskdDA4NjI2ODc3MQJfMwQYc3Rha2VyUmV3YXJkUGVyVG9rZW5QYWlkCAULJHQwODYyNjg3NzECXzQDAwkAZwIAAAUMc3Rha2VyRWFybmVkBgkBASEBCQELaW5pdGlhbGl6ZWQACQACAQIRTm8gZmFybWluZyByZXdhcmQECWRvVW5TdGFrZQkA/AcECQEOc3Rha2luZ0FkZHJlc3MAAgd1blN0YWtlCQDMCAIFDHN0YWtlckVhcm5lZAUDbmlsBQNuaWwDCQAAAgUJZG9VblN0YWtlBQlkb1VuU3Rha2UJAM4IAgkAzggCCQDOCAIJAM4IAgkBEXVwZGF0ZVVzZXJSZXdhcmRzAwUHX3N0YWtlcgAABRhzdGFrZXJSZXdhcmRQZXJUb2tlblBhaWQJARp1cGRhdGVSZXdhcmRQZXJUb2tlblN0b3JlZAEFF25ld1Jld2FyZFBlclRva2VuU3RvcmVkCQEKdXBkYXRlVGltZQIFEW5ld0xhc3RVcGRhdGVUaW1lCQEMcGVyaW9kRmluaXNoAAkBE3VwZGF0ZVJld2FyZEJhbGFuY2UBCQEBLQEFDHN0YWtlckVhcm5lZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFDHN0YWtlckVhcm5lZAkBD2dvdmVybmFuY2VBc3NldAAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQphY2tSZXdhcmRzAAQNX3Jld2FyZEFtb3VudAkA/AcECQEOc3Rha2luZ0FkZHJlc3MAAg1jb21wdXRlUmV3YXJkCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQAAAgUNX3Jld2FyZEFtb3VudAUNX3Jld2FyZEFtb3VudAQMcmV3YXJkQW1vdW50BAckbWF0Y2gwBQ1fcmV3YXJkQW1vdW50AwkAAQIFByRtYXRjaDACA0ludAQBdAUHJG1hdGNoMAUBdAkAAgECGlJld2FyZCBhbW91bnQgbm90IGEgbnVtYmVyAwkAZgIJAGgCAAEFDERFQ0lNQUxfVU5JVAUMcmV3YXJkQW1vdW50BQNuaWwEDmRvQ2xhaW1SZXdhcmRzCQD8BwQJAQ5zdGFraW5nQWRkcmVzcwACD3dpdGhkcmF3UmV3YXJkcwUDbmlsBQNuaWwDCQAAAgUOZG9DbGFpbVJld2FyZHMFDmRvQ2xhaW1SZXdhcmRzBA1yZXdhcmRzQW1vdW50CQDwBwIFBHRoaXMJAQtyZXdhcmRBc3NldAAEBmRvU3dhcAkA/AcECQELc3dhcEFkZHJlc3MAAgRzd2FwCQDMCAIJANgEAQkBD2dvdmVybmFuY2VBc3NldAAJAMwIAgAABQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQtyZXdhcmRBc3NldAAFDXJld2FyZHNBbW91bnQFA25pbAMJAAACBQZkb1N3YXAFBmRvU3dhcAQLcmV3YXJkRGVsdGEJAPAHAgUEdGhpcwkBD2dvdmVybmFuY2VBc3NldAADCQAAAgULcmV3YXJkRGVsdGEFC3Jld2FyZERlbHRhAwkAZwIAAAULcmV3YXJkRGVsdGEJAAIBAhlJbnZhbGlkIGFja1Jld2FyZHMgcGFyYW1zBAdfcmV3YXJkBQtyZXdhcmREZWx0YQQXbmV3UmV3YXJkUGVyVG9rZW5TdG9yZWQICQEMdXBkYXRlUmV3YXJkAgUKTk9fQUREUkVTUwUJTk9fU1RBS0VSAl8xBAl0aW1lc3RhbXAJARNjdXJyZW50VGltZXN0YW1wU2VjAAQNbmV3UmV3YXJkUmF0ZQMJAGYCBQl0aW1lc3RhbXAJAQxwZXJpb2RGaW5pc2gACQBpAgUHX3Jld2FyZAUIRFVSQVRJT04EDXJlbWFpbmluZ1RpbWUJAGUCCQEMcGVyaW9kRmluaXNoAAUJdGltZXN0YW1wBAhsZWZ0b3ZlcgkAaAIJAQpyZXdhcmRSYXRlAAUNcmVtYWluaW5nVGltZQkAaQIJAGQCBQdfcmV3YXJkBQhsZWZ0b3ZlcgUIRFVSQVRJT04EB2RvU3Rha2UJAPwHBAkBDnN0YWtpbmdBZGRyZXNzAAIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBD2dvdmVybmFuY2VBc3NldAAFC3Jld2FyZERlbHRhBQNuaWwDCQAAAgUHZG9TdGFrZQUHZG9TdGFrZQkAzggCCQDOCAIJAM4IAgkBEHVwZGF0ZVJld2FyZFJhdGUBBQ1uZXdSZXdhcmRSYXRlCQEadXBkYXRlUmV3YXJkUGVyVG9rZW5TdG9yZWQBBRduZXdSZXdhcmRQZXJUb2tlblN0b3JlZAkBE3VwZGF0ZVJld2FyZEJhbGFuY2UBBQdfcmV3YXJkCQEKdXBkYXRlVGltZQIFCXRpbWVzdGFtcAkAZAIFCXRpbWVzdGFtcAUIRFVSQVRJT04JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQELdmlld19yZXdhcmQBB19zdGFrZXIEDHN0YWtlckVhcm5lZAgJAQx1cGRhdGVSZXdhcmQCBQdfc3Rha2VyAAACXzMJAAIBCQCkAwEFDHN0YWtlckVhcm5lZAECdHgBBnZlcmlmeQAEDmNvb3JkaW5hdG9yU3RyCQCdCAIFBHRoaXMFFGtfY29vcmRpbmF0b3JBZGRyZXNzAwkBCWlzRGVmaW5lZAEFDmNvb3JkaW5hdG9yU3RyBAVhZG1pbgkAnQgCCQERQGV4dHJOYXRpdmUoMTA2MikBCQEFdmFsdWUBBQ5jb29yZGluYXRvclN0cgUPa19hZG1pbl9hZGRyZXNzAwkBCWlzRGVmaW5lZAEFBWFkbWluCQELdmFsdWVPckVsc2UCCQCbCAIJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQV2YWx1ZQEFBWFkbWluCQCsAgIJAKwCAgkArAICAgdzdGF0dXNfCQClCAEFBHRoaXMCAV8JANgEAQgFAnR4AmlkBwkAAgECLnVuYWJsZSB0byB2ZXJpZnk6IGFkbWluIG5vdCBzZXQgaW4gY29vcmRpbmF0b3IJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXnydWbP", "height": 2538841, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3KbZYCQA36nnGQB2svDoNFeEq3eCLMqZJ5o1f4SJBCQV Next: none Diff:
OldNewDifferences
55
66 let b = "k_rewardBalance"
77
8-let c = "k_swapAddress"
8+let c = "k_swap_address"
99
1010 let d = "k_lastUpdateTime"
1111
2929
3030 let n = "k_gov_asset"
3131
32-let o = "k_quote_asset"
32+let o = "k_reward_asset"
3333
34-let p = "k_admin_public_key"
34+let p = "k_admin_address"
3535
36-let q = "k_admin_address"
37-
38-func r () = valueOrErrorMessage(addressFromString(getStringValue(this, l)), "Coordinator not set")
36+func q () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, l), "Coordinator not set Farming")), "Coordinator address invalid")
3937
4038
41-func s () = addressFromString(getStringValue(r(), q))
39+func r () = addressFromString(valueOrErrorMessage(getString(q(), p), "Admin address not set"))
4240
4341
44-func t () = fromBase58String(getStringValue(r(), p))
42+func s () = fromBase58String(valueOrErrorMessage(getString(q(), n), "Governance asset not set"))
4543
4644
47-func u () = fromBase58String(getStringValue(r(), n))
45+func t () = fromBase58String(valueOrErrorMessage(getString(q(), o), "Reward asset not set"))
4846
4947
50-func v () = fromBase58String(getStringValue(r(), o))
48+func u () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(q(), m), "Staking address not set")), "Staking address invalid")
5149
5250
53-func w () = valueOrErrorMessage(addressFromString(getStringValue(r(), m)), "Staking not set")
51+func v () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(q(), c), "Swap address not set")), "Swap address invalid")
5452
5553
56-let x = (1 * (((((((10 * 10) * 10) * 10) * 10) * 10) * 10) * 10))
54+let w = (1 * (((((((10 * 10) * 10) * 10) * 10) * 10) * 10) * 10))
5755
58-let y = ((60 * 60) * 24)
56+let x = ((60 * 60) * 24)
5957
60-let z = ""
58+let y = ""
6159
62-let A = 0
60+let z = 0
6361
64-func B (C,D) = fraction(C, x, D, HALFEVEN)
62+func A (B,C) = fraction(B, w, C, HALFEVEN)
6563
6664
67-func E (C,D) = fraction(C, D, x, HALFEVEN)
65+func D (B,C) = fraction(B, C, w, HALFEVEN)
6866
6967
70-func F (C) = if ((C > 0))
71- then C
72- else -(C)
68+func E (B) = if ((B > 0))
69+ then B
70+ else -(B)
7371
7472
75-func G (C,D) = if ((C > D))
76- then D
77- else C
73+func F (B,C) = if ((B > C))
74+ then C
75+ else B
7876
7977
80-func H (I,J) = ((I + "_") + J)
78+func G (H,I) = ((H + "_") + I)
8179
8280
83-func K (L) = valueOrErrorMessage(getInteger(this, L), ("no value for " + L))
81+func J (K) = valueOrErrorMessage(getInteger(this, K), ("no value for " + K))
8482
8583
86-func M (L) = valueOrElse(getInteger(this, L), 0)
84+func L (K) = valueOrElse(getInteger(this, K), 0)
8785
8886
89-func N () = M(a)
87+func M () = L(a)
9088
9189
92-func O () = M(e)
90+func N () = L(e)
9391
9492
95-func P () = M(d)
93+func O () = L(d)
9694
9795
98-func Q () = M(f)
96+func P () = L(f)
9997
10098
101-func R () = M(g)
99+func Q () = L(g)
102100
103101
104-func S () = M(b)
102+func R () = L(b)
105103
106104
107-func T () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, c), "Now swap address")), "Invalid swap address")
105+func S (T) = L(G(j, T))
108106
109107
110-func U (V) = M(H(j, V))
108+func U (T) = L(G(i, T))
111109
112110
113-func W (V) = M(H(i, V))
111+func V (T) = L(G(h, T))
114112
115113
116-func X (V) = M(H(h, V))
114+func W () = valueOrElse(getBoolean(this, k), false)
117115
118116
119-func Y () = valueOrElse(getBoolean(this, k), false)
117+func X (Y) = [IntegerEntry(b, (R() + Y))]
120118
121119
122-func Z (aa) = [IntegerEntry(b, (S() + aa))]
120+func Z (aa) = [IntegerEntry(f, aa)]
123121
124122
125-func ab (ac) = [IntegerEntry(f, ac)]
123+func ab (ac,ad) = [IntegerEntry(d, ac), IntegerEntry(g, ad)]
126124
127125
128-func ad (ae,af) = [IntegerEntry(d, ae), IntegerEntry(g, af)]
126+func ae (af) = [IntegerEntry(e, af)]
129127
130128
131-func ag (ah) = [IntegerEntry(e, ah)]
129+func ag (T,ah,ai) = [IntegerEntry(G(j, T), ah), IntegerEntry(G(i, T), ai)]
132130
133131
134-func ai (V,aj,ak) = [IntegerEntry(H(j, V), aj), IntegerEntry(H(i, V), ak)]
132+func aj (T,Y) = [IntegerEntry(G(h, T), (V(T) + Y)), IntegerEntry(a, (M() + Y))]
135133
136134
137-func al (V,aa) = [IntegerEntry(H(h, V), (X(V) + aa)), IntegerEntry(a, (N() + aa))]
135+func ak () = (lastBlock.timestamp / 1000)
138136
139137
140-func am () = (lastBlock.timestamp / 1000)
138+func al () = F(ak(), Q())
141139
142140
143-func an () = G(am(), R())
144-
145-
146-func ao (ap) = if (((N() + ap) == 0))
147- then O()
141+func am (an) = if (((M() + an) == 0))
142+ then N()
148143 else {
149- let aq = (an() - P())
150- let ar = if ((0 > aq))
144+ let ao = (al() - O())
145+ let ap = if ((0 > ao))
151146 then 0
152- else aq
153- let as = B((Q() * ar), (N() + ap))
154- (O() + as)
147+ else ao
148+ let aq = A((P() * ap), (M() + an))
149+ (N() + aq)
155150 }
156151
157152
158-func at (V,ap) = {
159- let au = (ao(ap) - W(V))
160- (E((X(V) + ap), au) + U(V))
153+func ar (T,an) = {
154+ let as = (am(an) - U(T))
155+ (D((V(T) + an), as) + S(T))
161156 }
162157
163158
164-func av (V,ap) = {
165- let aw = ao(ap)
166- let ax = am()
167- let ay = if ((V != ""))
168- then $Tuple2(at(V, ap), aw)
159+func at (T,an) = {
160+ let au = am(an)
161+ let av = ak()
162+ let aw = if ((T != ""))
163+ then $Tuple2(ar(T, an), au)
169164 else $Tuple2(0, 0)
170- let az = ay._1
171- let aA = ay._2
172- $Tuple4(aw, ax, az, aA)
165+ let ax = aw._1
166+ let ay = aw._2
167+ $Tuple4(au, av, ax, ay)
173168 }
174169
175170
176-@Callable(aB)
177-func initialize (aC,aD) = if (Y())
178- then throw("Already initialized")
179- else [StringEntry(l, aC), StringEntry(c, aD), BooleanEntry(k, true)]
171+@Callable(az)
172+func initialize (aA) = if (if (W())
173+ then true
174+ else (az.caller != this))
175+ then throw("Unable to initialize")
176+ else [StringEntry(l, toString(addressFromStringValue(aA))), BooleanEntry(k, true)]
180177
181178
182179
183-@Callable(aB)
184-func setSwap (aD) = if ((aB.caller != s()))
185- then throw("Invalid setSwap params")
186- else [StringEntry(c, aD)]
187-
188-
189-
190-@Callable(aB)
180+@Callable(az)
191181 func stake () = {
192- let V = toString(aB.caller)
193- let aE = aB.payments[0].amount
194- if (if ((aB.payments[0].assetId != u()))
182+ let T = toString(az.caller)
183+ let aB = az.payments[0].amount
184+ if (if ((az.payments[0].assetId != s()))
195185 then true
196- else !(Y()))
186+ else !(W()))
197187 then throw("Invalid call to stake")
198188 else {
199- let aF = av(V, 0)
200- let aw = aF._1
201- let ax = aF._2
202- let az = aF._3
203- let aA = aF._4
204- let aG = invoke(w(), "stake", nil, [AttachedPayment(u(), aE)])
205- if ((aG == aG))
206- then (((ai(V, az, aA) ++ ag(aw)) ++ ad(ax, R())) ++ al(V, aE))
189+ let aC = at(T, 0)
190+ let au = aC._1
191+ let av = aC._2
192+ let ax = aC._3
193+ let ay = aC._4
194+ let aD = invoke(u(), "stake", nil, [AttachedPayment(s(), aB)])
195+ if ((aD == aD))
196+ then (((ag(T, ax, ay) ++ ae(au)) ++ ab(av, Q())) ++ aj(T, aB))
207197 else throw("Strict value is not equal to itself.")
208198 }
209199 }
210200
211201
212202
213-@Callable(aB)
214-func unStake (aE) = {
215- let aH = invoke(this, "ackRewards", nil, nil)
216- if ((aH == aH))
203+@Callable(az)
204+func unStake (aB) = {
205+ let aE = invoke(this, "ackRewards", nil, nil)
206+ if ((aE == aE))
217207 then {
218- let V = toString(aB.caller)
219- if (if ((aB.payments != nil))
208+ let T = toString(az.caller)
209+ if (if ((az.payments != nil))
220210 then true
221- else !(Y()))
211+ else !(W()))
222212 then throw("Invalid unStake parameters")
223213 else {
224- let aI = av(V, 0)
225- let aw = aI._1
226- let ax = aI._2
227- let az = aI._3
228- let aA = aI._4
229- if ((aE > (X(V) + az)))
214+ let aF = at(T, 0)
215+ let au = aF._1
216+ let av = aF._2
217+ let ax = aF._3
218+ let ay = aF._4
219+ if ((aB > (V(T) + ax)))
230220 then throw("Invalid unStake parameters")
231221 else {
232- let aJ = invoke(w(), "unStake", [aE], nil)
233- if ((aJ == aJ))
222+ let aG = invoke(u(), "unStake", [aB], nil)
223+ if ((aG == aG))
234224 then {
235- let aK = if ((X(V) >= aE))
225+ let aH = if ((V(T) >= aB))
236226 then 0
237- else (aE - X(V))
238- let aL = if ((X(V) >= aE))
239- then aE
240- else X(V)
241- (((((ai(V, (az - aK), aA) ++ ag(aw)) ++ ad(ax, R())) ++ al(V, -(aL))) ++ Z(-(aK))) ++ [ScriptTransfer(aB.caller, aE, u())])
227+ else (aB - V(T))
228+ let aI = if ((V(T) >= aB))
229+ then aB
230+ else V(T)
231+ (((((ag(T, (ax - aH), ay) ++ ae(au)) ++ ab(av, Q())) ++ aj(T, -(aI))) ++ X(-(aH))) ++ [ScriptTransfer(az.caller, aB, s())])
242232 }
243233 else throw("Strict value is not equal to itself.")
244234 }
249239
250240
251241
252-@Callable(aB)
242+@Callable(az)
253243 func withdrawRewards () = {
254- let aH = invoke(this, "ackRewards", nil, nil)
255- if ((aH == aH))
244+ let aE = invoke(this, "ackRewards", nil, nil)
245+ if ((aE == aE))
256246 then {
257- let V = toString(aB.caller)
258- let aM = av(V, 0)
259- let aw = aM._1
260- let ax = aM._2
261- let az = aM._3
262- let aA = aM._4
263- if (if ((0 >= az))
247+ let T = toString(az.caller)
248+ let aJ = at(T, 0)
249+ let au = aJ._1
250+ let av = aJ._2
251+ let ax = aJ._3
252+ let ay = aJ._4
253+ if (if ((0 >= ax))
264254 then true
265- else !(Y()))
255+ else !(W()))
266256 then throw("No farming reward")
267257 else {
268- let aJ = invoke(w(), "unStake", [az], nil)
269- if ((aJ == aJ))
270- then ((((ai(V, 0, aA) ++ ag(aw)) ++ ad(ax, R())) ++ Z(-(az))) ++ [ScriptTransfer(aB.caller, az, u())])
258+ let aG = invoke(u(), "unStake", [ax], nil)
259+ if ((aG == aG))
260+ then ((((ag(T, 0, ay) ++ ae(au)) ++ ab(av, Q())) ++ X(-(ax))) ++ [ScriptTransfer(az.caller, ax, s())])
271261 else throw("Strict value is not equal to itself.")
272262 }
273263 }
276266
277267
278268
279-@Callable(aB)
269+@Callable(az)
280270 func ackRewards () = {
281- let aN = invoke(w(), "computeReward", [toString(this)], nil)
282- if ((aN == aN))
271+ let aK = invoke(u(), "computeReward", [toString(this)], nil)
272+ if ((aK == aK))
283273 then {
284- let aO = {
285- let aP = aN
286- if ($isInstanceOf(aP, "Int"))
274+ let aL = {
275+ let aM = aK
276+ if ($isInstanceOf(aM, "Int"))
287277 then {
288- let aQ = aP
289- aQ
278+ let aN = aM
279+ aN
290280 }
291281 else throw("Reward amount not a number")
292282 }
293- if (((1 * x) > aO))
283+ if (((1 * w) > aL))
294284 then nil
295285 else {
296- let aR = invoke(w(), "withdrawRewards", nil, nil)
297- if ((aR == aR))
286+ let aO = invoke(u(), "withdrawRewards", nil, nil)
287+ if ((aO == aO))
298288 then {
299- let aS = assetBalance(this, v())
300- let aT = invoke(T(), "swap", [toBase58String(u()), 0], [AttachedPayment(v(), aS)])
301- if ((aT == aT))
289+ let aP = assetBalance(this, t())
290+ let aQ = invoke(v(), "swap", [toBase58String(s()), 0], [AttachedPayment(t(), aP)])
291+ if ((aQ == aQ))
302292 then {
303- let au = assetBalance(this, u())
304- if ((au == au))
305- then if ((0 >= au))
293+ let as = assetBalance(this, s())
294+ if ((as == as))
295+ then if ((0 >= as))
306296 then throw("Invalid ackRewards params")
307297 else {
308- let aj = au
309- let aw = av(z, A)._1
310- let aU = am()
311- let aV = if ((aU > R()))
312- then (aj / y)
298+ let ah = as
299+ let au = at(y, z)._1
300+ let aR = ak()
301+ let aS = if ((aR > Q()))
302+ then (ah / x)
313303 else {
314- let aW = (R() - aU)
315- let aX = (Q() * aW)
316- ((aj + aX) / y)
304+ let aT = (Q() - aR)
305+ let aU = (P() * aT)
306+ ((ah + aU) / x)
317307 }
318- let aG = invoke(w(), "stake", nil, [AttachedPayment(u(), au)])
319- if ((aG == aG))
320- then (((ab(aV) ++ ag(aw)) ++ Z(aj)) ++ ad(aU, (aU + y)))
308+ let aD = invoke(u(), "stake", nil, [AttachedPayment(s(), as)])
309+ if ((aD == aD))
310+ then (((Z(aS) ++ ae(au)) ++ X(ah)) ++ ab(aR, (aR + x)))
321311 else throw("Strict value is not equal to itself.")
322312 }
323313 else throw("Strict value is not equal to itself.")
332322
333323
334324
335-@Callable(aB)
336-func view_reward (V) = {
337- let az = av(V, 0)._3
338- throw(toString(az))
325+@Callable(az)
326+func view_reward (T) = {
327+ let ax = at(T, 0)._3
328+ throw(toString(ax))
339329 }
340330
341331
342-@Verifier(aY)
343-func aZ () = sigVerify(aY.bodyBytes, aY.proofs[0], t())
332+@Verifier(aV)
333+func aW () = {
334+ let aX = getString(this, l)
335+ if (isDefined(aX))
336+ then {
337+ let aY = getString(addressFromStringValue(value(aX)), p)
338+ if (isDefined(aY))
339+ then valueOrElse(getBoolean(addressFromStringValue(value(aY)), ((("status_" + toString(this)) + "_") + toBase58String(aV.id))), false)
340+ else throw("unable to verify: admin not set in coordinator")
341+ }
342+ else sigVerify(aV.bodyBytes, aV.proofs[0], aV.senderPublicKey)
343+ }
344344
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "k_totalSupply"
55
66 let b = "k_rewardBalance"
77
8-let c = "k_swapAddress"
8+let c = "k_swap_address"
99
1010 let d = "k_lastUpdateTime"
1111
1212 let e = "k_rewardPerTokenStored"
1313
1414 let f = "k_rewardRate"
1515
1616 let g = "k_periodFinish"
1717
1818 let h = "k_balance"
1919
2020 let i = "k_userRewardPerToken"
2121
2222 let j = "k_userReward"
2323
2424 let k = "k_initialized"
2525
2626 let l = "k_coordinatorAddress"
2727
2828 let m = "k_staking_address"
2929
3030 let n = "k_gov_asset"
3131
32-let o = "k_quote_asset"
32+let o = "k_reward_asset"
3333
34-let p = "k_admin_public_key"
34+let p = "k_admin_address"
3535
36-let q = "k_admin_address"
37-
38-func r () = valueOrErrorMessage(addressFromString(getStringValue(this, l)), "Coordinator not set")
36+func q () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, l), "Coordinator not set Farming")), "Coordinator address invalid")
3937
4038
41-func s () = addressFromString(getStringValue(r(), q))
39+func r () = addressFromString(valueOrErrorMessage(getString(q(), p), "Admin address not set"))
4240
4341
44-func t () = fromBase58String(getStringValue(r(), p))
42+func s () = fromBase58String(valueOrErrorMessage(getString(q(), n), "Governance asset not set"))
4543
4644
47-func u () = fromBase58String(getStringValue(r(), n))
45+func t () = fromBase58String(valueOrErrorMessage(getString(q(), o), "Reward asset not set"))
4846
4947
50-func v () = fromBase58String(getStringValue(r(), o))
48+func u () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(q(), m), "Staking address not set")), "Staking address invalid")
5149
5250
53-func w () = valueOrErrorMessage(addressFromString(getStringValue(r(), m)), "Staking not set")
51+func v () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(q(), c), "Swap address not set")), "Swap address invalid")
5452
5553
56-let x = (1 * (((((((10 * 10) * 10) * 10) * 10) * 10) * 10) * 10))
54+let w = (1 * (((((((10 * 10) * 10) * 10) * 10) * 10) * 10) * 10))
5755
58-let y = ((60 * 60) * 24)
56+let x = ((60 * 60) * 24)
5957
60-let z = ""
58+let y = ""
6159
62-let A = 0
60+let z = 0
6361
64-func B (C,D) = fraction(C, x, D, HALFEVEN)
62+func A (B,C) = fraction(B, w, C, HALFEVEN)
6563
6664
67-func E (C,D) = fraction(C, D, x, HALFEVEN)
65+func D (B,C) = fraction(B, C, w, HALFEVEN)
6866
6967
70-func F (C) = if ((C > 0))
71- then C
72- else -(C)
68+func E (B) = if ((B > 0))
69+ then B
70+ else -(B)
7371
7472
75-func G (C,D) = if ((C > D))
76- then D
77- else C
73+func F (B,C) = if ((B > C))
74+ then C
75+ else B
7876
7977
80-func H (I,J) = ((I + "_") + J)
78+func G (H,I) = ((H + "_") + I)
8179
8280
83-func K (L) = valueOrErrorMessage(getInteger(this, L), ("no value for " + L))
81+func J (K) = valueOrErrorMessage(getInteger(this, K), ("no value for " + K))
8482
8583
86-func M (L) = valueOrElse(getInteger(this, L), 0)
84+func L (K) = valueOrElse(getInteger(this, K), 0)
8785
8886
89-func N () = M(a)
87+func M () = L(a)
9088
9189
92-func O () = M(e)
90+func N () = L(e)
9391
9492
95-func P () = M(d)
93+func O () = L(d)
9694
9795
98-func Q () = M(f)
96+func P () = L(f)
9997
10098
101-func R () = M(g)
99+func Q () = L(g)
102100
103101
104-func S () = M(b)
102+func R () = L(b)
105103
106104
107-func T () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, c), "Now swap address")), "Invalid swap address")
105+func S (T) = L(G(j, T))
108106
109107
110-func U (V) = M(H(j, V))
108+func U (T) = L(G(i, T))
111109
112110
113-func W (V) = M(H(i, V))
111+func V (T) = L(G(h, T))
114112
115113
116-func X (V) = M(H(h, V))
114+func W () = valueOrElse(getBoolean(this, k), false)
117115
118116
119-func Y () = valueOrElse(getBoolean(this, k), false)
117+func X (Y) = [IntegerEntry(b, (R() + Y))]
120118
121119
122-func Z (aa) = [IntegerEntry(b, (S() + aa))]
120+func Z (aa) = [IntegerEntry(f, aa)]
123121
124122
125-func ab (ac) = [IntegerEntry(f, ac)]
123+func ab (ac,ad) = [IntegerEntry(d, ac), IntegerEntry(g, ad)]
126124
127125
128-func ad (ae,af) = [IntegerEntry(d, ae), IntegerEntry(g, af)]
126+func ae (af) = [IntegerEntry(e, af)]
129127
130128
131-func ag (ah) = [IntegerEntry(e, ah)]
129+func ag (T,ah,ai) = [IntegerEntry(G(j, T), ah), IntegerEntry(G(i, T), ai)]
132130
133131
134-func ai (V,aj,ak) = [IntegerEntry(H(j, V), aj), IntegerEntry(H(i, V), ak)]
132+func aj (T,Y) = [IntegerEntry(G(h, T), (V(T) + Y)), IntegerEntry(a, (M() + Y))]
135133
136134
137-func al (V,aa) = [IntegerEntry(H(h, V), (X(V) + aa)), IntegerEntry(a, (N() + aa))]
135+func ak () = (lastBlock.timestamp / 1000)
138136
139137
140-func am () = (lastBlock.timestamp / 1000)
138+func al () = F(ak(), Q())
141139
142140
143-func an () = G(am(), R())
144-
145-
146-func ao (ap) = if (((N() + ap) == 0))
147- then O()
141+func am (an) = if (((M() + an) == 0))
142+ then N()
148143 else {
149- let aq = (an() - P())
150- let ar = if ((0 > aq))
144+ let ao = (al() - O())
145+ let ap = if ((0 > ao))
151146 then 0
152- else aq
153- let as = B((Q() * ar), (N() + ap))
154- (O() + as)
147+ else ao
148+ let aq = A((P() * ap), (M() + an))
149+ (N() + aq)
155150 }
156151
157152
158-func at (V,ap) = {
159- let au = (ao(ap) - W(V))
160- (E((X(V) + ap), au) + U(V))
153+func ar (T,an) = {
154+ let as = (am(an) - U(T))
155+ (D((V(T) + an), as) + S(T))
161156 }
162157
163158
164-func av (V,ap) = {
165- let aw = ao(ap)
166- let ax = am()
167- let ay = if ((V != ""))
168- then $Tuple2(at(V, ap), aw)
159+func at (T,an) = {
160+ let au = am(an)
161+ let av = ak()
162+ let aw = if ((T != ""))
163+ then $Tuple2(ar(T, an), au)
169164 else $Tuple2(0, 0)
170- let az = ay._1
171- let aA = ay._2
172- $Tuple4(aw, ax, az, aA)
165+ let ax = aw._1
166+ let ay = aw._2
167+ $Tuple4(au, av, ax, ay)
173168 }
174169
175170
176-@Callable(aB)
177-func initialize (aC,aD) = if (Y())
178- then throw("Already initialized")
179- else [StringEntry(l, aC), StringEntry(c, aD), BooleanEntry(k, true)]
171+@Callable(az)
172+func initialize (aA) = if (if (W())
173+ then true
174+ else (az.caller != this))
175+ then throw("Unable to initialize")
176+ else [StringEntry(l, toString(addressFromStringValue(aA))), BooleanEntry(k, true)]
180177
181178
182179
183-@Callable(aB)
184-func setSwap (aD) = if ((aB.caller != s()))
185- then throw("Invalid setSwap params")
186- else [StringEntry(c, aD)]
187-
188-
189-
190-@Callable(aB)
180+@Callable(az)
191181 func stake () = {
192- let V = toString(aB.caller)
193- let aE = aB.payments[0].amount
194- if (if ((aB.payments[0].assetId != u()))
182+ let T = toString(az.caller)
183+ let aB = az.payments[0].amount
184+ if (if ((az.payments[0].assetId != s()))
195185 then true
196- else !(Y()))
186+ else !(W()))
197187 then throw("Invalid call to stake")
198188 else {
199- let aF = av(V, 0)
200- let aw = aF._1
201- let ax = aF._2
202- let az = aF._3
203- let aA = aF._4
204- let aG = invoke(w(), "stake", nil, [AttachedPayment(u(), aE)])
205- if ((aG == aG))
206- then (((ai(V, az, aA) ++ ag(aw)) ++ ad(ax, R())) ++ al(V, aE))
189+ let aC = at(T, 0)
190+ let au = aC._1
191+ let av = aC._2
192+ let ax = aC._3
193+ let ay = aC._4
194+ let aD = invoke(u(), "stake", nil, [AttachedPayment(s(), aB)])
195+ if ((aD == aD))
196+ then (((ag(T, ax, ay) ++ ae(au)) ++ ab(av, Q())) ++ aj(T, aB))
207197 else throw("Strict value is not equal to itself.")
208198 }
209199 }
210200
211201
212202
213-@Callable(aB)
214-func unStake (aE) = {
215- let aH = invoke(this, "ackRewards", nil, nil)
216- if ((aH == aH))
203+@Callable(az)
204+func unStake (aB) = {
205+ let aE = invoke(this, "ackRewards", nil, nil)
206+ if ((aE == aE))
217207 then {
218- let V = toString(aB.caller)
219- if (if ((aB.payments != nil))
208+ let T = toString(az.caller)
209+ if (if ((az.payments != nil))
220210 then true
221- else !(Y()))
211+ else !(W()))
222212 then throw("Invalid unStake parameters")
223213 else {
224- let aI = av(V, 0)
225- let aw = aI._1
226- let ax = aI._2
227- let az = aI._3
228- let aA = aI._4
229- if ((aE > (X(V) + az)))
214+ let aF = at(T, 0)
215+ let au = aF._1
216+ let av = aF._2
217+ let ax = aF._3
218+ let ay = aF._4
219+ if ((aB > (V(T) + ax)))
230220 then throw("Invalid unStake parameters")
231221 else {
232- let aJ = invoke(w(), "unStake", [aE], nil)
233- if ((aJ == aJ))
222+ let aG = invoke(u(), "unStake", [aB], nil)
223+ if ((aG == aG))
234224 then {
235- let aK = if ((X(V) >= aE))
225+ let aH = if ((V(T) >= aB))
236226 then 0
237- else (aE - X(V))
238- let aL = if ((X(V) >= aE))
239- then aE
240- else X(V)
241- (((((ai(V, (az - aK), aA) ++ ag(aw)) ++ ad(ax, R())) ++ al(V, -(aL))) ++ Z(-(aK))) ++ [ScriptTransfer(aB.caller, aE, u())])
227+ else (aB - V(T))
228+ let aI = if ((V(T) >= aB))
229+ then aB
230+ else V(T)
231+ (((((ag(T, (ax - aH), ay) ++ ae(au)) ++ ab(av, Q())) ++ aj(T, -(aI))) ++ X(-(aH))) ++ [ScriptTransfer(az.caller, aB, s())])
242232 }
243233 else throw("Strict value is not equal to itself.")
244234 }
245235 }
246236 }
247237 else throw("Strict value is not equal to itself.")
248238 }
249239
250240
251241
252-@Callable(aB)
242+@Callable(az)
253243 func withdrawRewards () = {
254- let aH = invoke(this, "ackRewards", nil, nil)
255- if ((aH == aH))
244+ let aE = invoke(this, "ackRewards", nil, nil)
245+ if ((aE == aE))
256246 then {
257- let V = toString(aB.caller)
258- let aM = av(V, 0)
259- let aw = aM._1
260- let ax = aM._2
261- let az = aM._3
262- let aA = aM._4
263- if (if ((0 >= az))
247+ let T = toString(az.caller)
248+ let aJ = at(T, 0)
249+ let au = aJ._1
250+ let av = aJ._2
251+ let ax = aJ._3
252+ let ay = aJ._4
253+ if (if ((0 >= ax))
264254 then true
265- else !(Y()))
255+ else !(W()))
266256 then throw("No farming reward")
267257 else {
268- let aJ = invoke(w(), "unStake", [az], nil)
269- if ((aJ == aJ))
270- then ((((ai(V, 0, aA) ++ ag(aw)) ++ ad(ax, R())) ++ Z(-(az))) ++ [ScriptTransfer(aB.caller, az, u())])
258+ let aG = invoke(u(), "unStake", [ax], nil)
259+ if ((aG == aG))
260+ then ((((ag(T, 0, ay) ++ ae(au)) ++ ab(av, Q())) ++ X(-(ax))) ++ [ScriptTransfer(az.caller, ax, s())])
271261 else throw("Strict value is not equal to itself.")
272262 }
273263 }
274264 else throw("Strict value is not equal to itself.")
275265 }
276266
277267
278268
279-@Callable(aB)
269+@Callable(az)
280270 func ackRewards () = {
281- let aN = invoke(w(), "computeReward", [toString(this)], nil)
282- if ((aN == aN))
271+ let aK = invoke(u(), "computeReward", [toString(this)], nil)
272+ if ((aK == aK))
283273 then {
284- let aO = {
285- let aP = aN
286- if ($isInstanceOf(aP, "Int"))
274+ let aL = {
275+ let aM = aK
276+ if ($isInstanceOf(aM, "Int"))
287277 then {
288- let aQ = aP
289- aQ
278+ let aN = aM
279+ aN
290280 }
291281 else throw("Reward amount not a number")
292282 }
293- if (((1 * x) > aO))
283+ if (((1 * w) > aL))
294284 then nil
295285 else {
296- let aR = invoke(w(), "withdrawRewards", nil, nil)
297- if ((aR == aR))
286+ let aO = invoke(u(), "withdrawRewards", nil, nil)
287+ if ((aO == aO))
298288 then {
299- let aS = assetBalance(this, v())
300- let aT = invoke(T(), "swap", [toBase58String(u()), 0], [AttachedPayment(v(), aS)])
301- if ((aT == aT))
289+ let aP = assetBalance(this, t())
290+ let aQ = invoke(v(), "swap", [toBase58String(s()), 0], [AttachedPayment(t(), aP)])
291+ if ((aQ == aQ))
302292 then {
303- let au = assetBalance(this, u())
304- if ((au == au))
305- then if ((0 >= au))
293+ let as = assetBalance(this, s())
294+ if ((as == as))
295+ then if ((0 >= as))
306296 then throw("Invalid ackRewards params")
307297 else {
308- let aj = au
309- let aw = av(z, A)._1
310- let aU = am()
311- let aV = if ((aU > R()))
312- then (aj / y)
298+ let ah = as
299+ let au = at(y, z)._1
300+ let aR = ak()
301+ let aS = if ((aR > Q()))
302+ then (ah / x)
313303 else {
314- let aW = (R() - aU)
315- let aX = (Q() * aW)
316- ((aj + aX) / y)
304+ let aT = (Q() - aR)
305+ let aU = (P() * aT)
306+ ((ah + aU) / x)
317307 }
318- let aG = invoke(w(), "stake", nil, [AttachedPayment(u(), au)])
319- if ((aG == aG))
320- then (((ab(aV) ++ ag(aw)) ++ Z(aj)) ++ ad(aU, (aU + y)))
308+ let aD = invoke(u(), "stake", nil, [AttachedPayment(s(), as)])
309+ if ((aD == aD))
310+ then (((Z(aS) ++ ae(au)) ++ X(ah)) ++ ab(aR, (aR + x)))
321311 else throw("Strict value is not equal to itself.")
322312 }
323313 else throw("Strict value is not equal to itself.")
324314 }
325315 else throw("Strict value is not equal to itself.")
326316 }
327317 else throw("Strict value is not equal to itself.")
328318 }
329319 }
330320 else throw("Strict value is not equal to itself.")
331321 }
332322
333323
334324
335-@Callable(aB)
336-func view_reward (V) = {
337- let az = av(V, 0)._3
338- throw(toString(az))
325+@Callable(az)
326+func view_reward (T) = {
327+ let ax = at(T, 0)._3
328+ throw(toString(ax))
339329 }
340330
341331
342-@Verifier(aY)
343-func aZ () = sigVerify(aY.bodyBytes, aY.proofs[0], t())
332+@Verifier(aV)
333+func aW () = {
334+ let aX = getString(this, l)
335+ if (isDefined(aX))
336+ then {
337+ let aY = getString(addressFromStringValue(value(aX)), p)
338+ if (isDefined(aY))
339+ then valueOrElse(getBoolean(addressFromStringValue(value(aY)), ((("status_" + toString(this)) + "_") + toBase58String(aV.id))), false)
340+ else throw("unable to verify: admin not set in coordinator")
341+ }
342+ else sigVerify(aV.bodyBytes, aV.proofs[0], aV.senderPublicKey)
343+ }
344344

github/deemru/w8io/873ac7e 
144.19 ms