tx · 5XUQ8XwGfMuAPs4McdvBAJAKsnoKQyN3BXUXYqoF97Ef

3NBEuUXKfGqe1ZKUfx8b8YsguJKYLhy2bTJ:  -0.03700000 Waves

2023.02.04 14:52 [2434846] smart account 3NBEuUXKfGqe1ZKUfx8b8YsguJKYLhy2bTJ > SELF 0.00000000 Waves

{ "type": 13, "id": "5XUQ8XwGfMuAPs4McdvBAJAKsnoKQyN3BXUXYqoF97Ef", "fee": 3700000, "feeAssetId": null, "timestamp": 1675511564829, "version": 2, "chainId": 84, "sender": "3NBEuUXKfGqe1ZKUfx8b8YsguJKYLhy2bTJ", "senderPublicKey": "2NgVCitn1k18yzwhrzdQXHDEygzSkjbXS4A1koTt14db", "proofs": [ "5qSBVmRxE5Pfxu1edoXgoaKWJJq9kjTxN1LZMrFCpGMoyjPex7HiAjhsSA8Zqs5BSudqwH3bDVJjMMwX7iBGgLiB" ], "script": "base64:BgIxCAISAwoBCBIAEgMKAQESABIAEgASAwoBARIDCgEBEgASABIDCgEIEgMKAQgSAwoBCFQADWtfdG90YWxTdXBwbHkCDWtfdG90YWxTdXBwbHkAD2tfcmV3YXJkQmFsYW5jZQIPa19yZXdhcmRCYWxhbmNlAA9rX2xvY2tlZEJhbGFuY2UCD2tfbG9ja2VkQmFsYW5jZQANa19mcmVlQmFsYW5jZQINa19mcmVlQmFsYW5jZQAGa19yYXRlAgZrX3JhdGUAEGtfbGFzdFVwZGF0ZVRpbWUCEGtfbGFzdFVwZGF0ZVRpbWUAFmtfcmV3YXJkUGVyVG9rZW5TdG9yZWQCFmtfcmV3YXJkUGVyVG9rZW5TdG9yZWQADGtfcmV3YXJkUmF0ZQIMa19yZXdhcmRSYXRlAA5rX3BlcmlvZEZpbmlzaAIOa19wZXJpb2RGaW5pc2gAFGtfdXNlclJld2FyZFBlclRva2VuAhRrX3VzZXJSZXdhcmRQZXJUb2tlbgAMa191c2VyUmV3YXJkAgxrX3VzZXJSZXdhcmQACWtfYmFsYW5jZQIJa19iYWxhbmNlAA5rX2F2ZXJhZ2VfcmF0ZQIOa19hdmVyYWdlX3JhdGUAEGtfd2l0aGRyYXdfbGltaXQCEGtfd2l0aGRyYXdfbGltaXQAFGtfbGFzdF93aXRoZHJhd19kYXRlAhRrX2xhc3Rfd2l0aGRyYXdfZGF0ZQAUa193aXRoZHJhd19pbl9wZXJpb2QCFGtfd2l0aGRyYXdfaW5fcGVyaW9kAA1rX2luaXRpYWxpemVkAg1rX2luaXRpYWxpemVkABRrX2Nvb3JkaW5hdG9yQWRkcmVzcwIUa19jb29yZGluYXRvckFkZHJlc3MABWtfYW1tAgVrX2FtbQASa19nb3Zlcm5hbmNlX2Fzc2V0AgtrX2dvdl9hc3NldAANa19xdW90ZV9hc3NldAINa19xdW90ZV9hc3NldAAPa19hZG1pbl9hZGRyZXNzAg9rX2FkbWluX2FkZHJlc3MAEWtfbWFuYWdlcl9hZGRyZXNzAhFrX21hbmFnZXJfYWRkcmVzcwAUa19jb2xsYXRlcmFsX2FkZHJlc3MCFGtfY29sbGF0ZXJhbF9hZGRyZXNzAQ50b0NvbXBvc2l0ZUtleQIEX2tleQhfYWRkcmVzcwkArAICCQCsAgIFBF9rZXkCAV8FCF9hZGRyZXNzAQtjb29yZGluYXRvcgAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBRRrX2Nvb3JkaW5hdG9yQWRkcmVzcwITQ29vcmRpbmF0b3Igbm90IHNldAELaXNXaGl0ZWxpc3QBCF9hZGRyZXNzCQELdmFsdWVPckVsc2UCCQCbCAIJAQtjb29yZGluYXRvcgAJAQ50b0NvbXBvc2l0ZUtleQIFBWtfYW1tBQhfYWRkcmVzcwcBD2dvdmVybmFuY2VBc3NldAAJANkEAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBC2Nvb3JkaW5hdG9yAAUSa19nb3Zlcm5hbmNlX2Fzc2V0AQxhZG1pbkFkZHJlc3MACQCmCAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCCQELY29vcmRpbmF0b3IABQ9rX2FkbWluX2FkZHJlc3MCFUFkbWluIGFkZHJlc3Mgbm90IHNldAEKcXVvdGVBc3NldAAJANkEAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBC2Nvb3JkaW5hdG9yAAUNa19xdW90ZV9hc3NldAEObWFuYWdlckFkZHJlc3MACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBC2Nvb3JkaW5hdG9yAAURa19tYW5hZ2VyX2FkZHJlc3MCD01hbmFnZXIgbm90IHNldAAMREVDSU1BTF9VTklUCQBoAgABCQBoAgkAaAIJAGgCCQBoAgkAaAIJAGgCCQBoAgAKAAoACgAKAAoACgAKAAoACERVUkFUSU9OCQBoAgkAaAIJAGgCAAcAPAA8ABgACk5PX0FERFJFU1MCAAAJTk9fU1RBS0VSAAABEHVzZG5Gcm9tRGVjaW1hbHMBB19hbW91bnQJAGkCBQdfYW1vdW50AGQBDnVzZG5Ub0RlY2ltYWxzAQdfYW1vdW50CQBoAgUHX2Ftb3VudABkAQRkaXZkAgJfeAJfeQkAbgQFAl94BQxERUNJTUFMX1VOSVQFAl95BQhIQUxGRVZFTgEEbXVsZAICX3gCX3kJAG4EBQJfeAUCX3kFDERFQ0lNQUxfVU5JVAUISEFMRkVWRU4BA2FicwECX3gDCQBmAgUCX3gAAAUCX3gJAQEtAQUCX3gBBG1pbnYCAl94Al95AwkAZgIFAl94BQJfeQUCX3kFAl94AA9XSVRIRFJBV19QRVJJT0QJAGgCAICjBQDoBwATV0lUSERSQVdfUEVSX1BFUklPRAkBBGRpdmQCCQBoAgABBQxERUNJTUFMX1VOSVQJAGgCAAQFDERFQ0lNQUxfVU5JVAEDaW50AQFrCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwUBawkArAICAg1ubyB2YWx1ZSBmb3IgBQFrAQRpbnQwAQFrCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAWsAAAEEaW50MQEBawkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFrBQxERUNJTUFMX1VOSVQBC3RvdGFsU3VwcGx5AAkBBGludDABBQ1rX3RvdGFsU3VwcGx5AQRyYXRlAAkBBGludDEBBQZrX3JhdGUBCWJhbGFuY2VPZgEHX3N0YWtlcgkBBGludDABCQEOdG9Db21wb3NpdGVLZXkCBQlrX2JhbGFuY2UFB19zdGFrZXIBC2F2ZXJhZ2VSYXRlAQdfc3Rha2VyCQEEaW50MAEJAQ50b0NvbXBvc2l0ZUtleQIFDmtfYXZlcmFnZV9yYXRlBQdfc3Rha2VyAQ13aXRoZHJhd0xpbWl0AQdfc3Rha2VyCQEEaW50MAEJAQ50b0NvbXBvc2l0ZUtleQIFEGtfd2l0aGRyYXdfbGltaXQFB19zdGFrZXIBEXdpdGhkcmF3bkluUGVyaW9kAQdfc3Rha2VyCQEEaW50MAEJAQ50b0NvbXBvc2l0ZUtleQIFFGtfd2l0aGRyYXdfaW5fcGVyaW9kBQdfc3Rha2VyARFsYXN0V2l0aGRyYXduRGF0ZQEHX3N0YWtlcgkBBGludDABCQEOdG9Db21wb3NpdGVLZXkCBRRrX2xhc3Rfd2l0aGRyYXdfZGF0ZQUHX3N0YWtlcgELZnJlZUJhbGFuY2UACQEEaW50MAEFDWtfZnJlZUJhbGFuY2UBDWxvY2tlZEJhbGFuY2UACQEEaW50MAEFD2tfbG9ja2VkQmFsYW5jZQEUcmV3YXJkUGVyVG9rZW5TdG9yZWQACQEEaW50MAEFFmtfcmV3YXJkUGVyVG9rZW5TdG9yZWQBDmxhc3RVcGRhdGVUaW1lAAkBBGludDABBRBrX2xhc3RVcGRhdGVUaW1lAQpyZXdhcmRSYXRlAAkBBGludDABBQxrX3Jld2FyZFJhdGUBDHBlcmlvZEZpbmlzaAAJAQRpbnQwAQUOa19wZXJpb2RGaW5pc2gBDXJld2FyZEJhbGFuY2UACQEEaW50MAEFD2tfcmV3YXJkQmFsYW5jZQEHcmV3YXJkcwEHX3N0YWtlcgkBBGludDABCQEOdG9Db21wb3NpdGVLZXkCBQxrX3VzZXJSZXdhcmQFB19zdGFrZXIBFnVzZXJSZXdhcmRQZXJUb2tlblBhaWQBB19zdGFrZXIJAQRpbnQwAQkBDnRvQ29tcG9zaXRlS2V5AgUUa191c2VyUmV3YXJkUGVyVG9rZW4FB19zdGFrZXIBC2luaXRpYWxpemVkAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQ1rX2luaXRpYWxpemVkBwEQY3VycmVudFRpbWVzdGFtcAAIBQlsYXN0QmxvY2sJdGltZXN0YW1wARNjdXJyZW50VGltZXN0YW1wU2VjAAkAaQIJARBjdXJyZW50VGltZXN0YW1wAADoBwEUZ2V0V2l0aGRyYXdMaW1pdExlZnQBB19zdGFrZXIEC2N1cnJlbnREYXRlCQEQY3VycmVudFRpbWVzdGFtcAAEEGxhc3RXaXRoZHJhd0RhdGUJARFsYXN0V2l0aGRyYXduRGF0ZQEFB19zdGFrZXIECyR0MDQ5NjQ1MjI4AwkAZgIJAGUCBQtjdXJyZW50RGF0ZQUQbGFzdFdpdGhkcmF3RGF0ZQUPV0lUSERSQVdfUEVSSU9ECQCUCgIFC2N1cnJlbnREYXRlCQENd2l0aGRyYXdMaW1pdAEFB19zdGFrZXIJAJQKAgUQbGFzdFdpdGhkcmF3RGF0ZQkAZQIJAQ13aXRoZHJhd0xpbWl0AQUHX3N0YWtlcgkBEXdpdGhkcmF3bkluUGVyaW9kAQUHX3N0YWtlcgQUbmV3TGFzdFdpdGhkcmF3bkRhdGUIBQskdDA0OTY0NTIyOAJfMQQRd2l0aGRyYXdMaW1pdExlZnQIBQskdDA0OTY0NTIyOAJfMgkAlAoCBRRuZXdMYXN0V2l0aGRyYXduRGF0ZQURd2l0aGRyYXdMaW1pdExlZnQBDmNvbXB1dGVOZXdSYXRlARNfYW1vdW50T2ZRdW90ZUFzc2V0BAduZXdSYXRlAwkAZgIJAQt0b3RhbFN1cHBseQAAAAkBBGRpdmQCCQBkAgkBC2ZyZWVCYWxhbmNlAAUTX2Ftb3VudE9mUXVvdGVBc3NldAkBC3RvdGFsU3VwcGx5AAUMREVDSU1BTF9VTklUBQduZXdSYXRlARhsYXN0VGltZVJld2FyZEFwcGxpY2FibGUACQEEbWludgIJARNjdXJyZW50VGltZXN0YW1wU2VjAAkBDHBlcmlvZEZpbmlzaAABDnJld2FyZFBlclRva2VuAQ1fYmFsYW5jZURlbHRhAwkAAAIJAGQCCQELdG90YWxTdXBwbHkABQ1fYmFsYW5jZURlbHRhAAAJARRyZXdhcmRQZXJUb2tlblN0b3JlZAAEDHRpbWVJbnRlcnZhbAkAZQIJARhsYXN0VGltZVJld2FyZEFwcGxpY2FibGUACQEObGFzdFVwZGF0ZVRpbWUABBJhY3R1YWxUaW1lSW50ZXJ2YWwDCQBmAgAABQx0aW1lSW50ZXJ2YWwAAAUMdGltZUludGVydmFsBARkaWZmCQEEZGl2ZAIJAGgCCQEKcmV3YXJkUmF0ZQAFEmFjdHVhbFRpbWVJbnRlcnZhbAkAZAIJAQt0b3RhbFN1cHBseQAFDV9iYWxhbmNlRGVsdGEJAGQCCQEUcmV3YXJkUGVyVG9rZW5TdG9yZWQABQRkaWZmAQZlYXJuZWQCB19zdGFrZXINX2JhbGFuY2VEZWx0YQQLcmV3YXJkRGVsdGEJAGUCCQEOcmV3YXJkUGVyVG9rZW4BBQ1fYmFsYW5jZURlbHRhCQEWdXNlclJld2FyZFBlclRva2VuUGFpZAEFB19zdGFrZXIJAGQCCQEEbXVsZAIJAGQCCQEJYmFsYW5jZU9mAQUHX3N0YWtlcgUNX2JhbGFuY2VEZWx0YQULcmV3YXJkRGVsdGEJAQdyZXdhcmRzAQUHX3N0YWtlcgEMdXBkYXRlUmV3YXJkAgdfc3Rha2VyDV9iYWxhbmNlRGVsdGEEF25ld1Jld2FyZFBlclRva2VuU3RvcmVkCQEOcmV3YXJkUGVyVG9rZW4BBQ1fYmFsYW5jZURlbHRhBBFuZXdMYXN0VXBkYXRlVGltZQkBE2N1cnJlbnRUaW1lc3RhbXBTZWMABAskdDA2NDI0NjYxNgMJAQIhPQIFB19zdGFrZXICAAkAlAoCCQEGZWFybmVkAgUHX3N0YWtlcgUNX2JhbGFuY2VEZWx0YQUXbmV3UmV3YXJkUGVyVG9rZW5TdG9yZWQJAJQKAgAAAAAEDHN0YWtlckVhcm5lZAgFCyR0MDY0MjQ2NjE2Al8xBBhzdGFrZXJSZXdhcmRQZXJUb2tlblBhaWQIBQskdDA2NDI0NjYxNgJfMgkAlgoEBRduZXdSZXdhcmRQZXJUb2tlblN0b3JlZAURbmV3TGFzdFVwZGF0ZVRpbWUFDHN0YWtlckVhcm5lZAUYc3Rha2VyUmV3YXJkUGVyVG9rZW5QYWlkARF1cGRhdGVVc2VyQmFsYW5jZQIFX3VzZXIHX2NoYW5nZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUJa19iYWxhbmNlBQVfdXNlcgkAZAIJAQliYWxhbmNlT2YBBQVfdXNlcgUHX2NoYW5nZQUDbmlsARRzZXRVc2VyV2l0aGRyYXdMaW1pdAIFX3VzZXIFX3JhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFEGtfd2l0aGRyYXdfbGltaXQFBV91c2VyBQVfcmF0ZQUDbmlsARJzZXRVc2VyQXZlcmFnZVJhdGUCBV91c2VyBV9yYXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBQ5rX2F2ZXJhZ2VfcmF0ZQUFX3VzZXIFBV9yYXRlBQNuaWwBEXVwZGF0ZUZyZWVCYWxhbmNlAQdfY2hhbmdlBAdiYWxhbmNlCQELZnJlZUJhbGFuY2UAAwkAZwIJAGQCBQdiYWxhbmNlBQdfY2hhbmdlAAAJAMwIAgkBDEludGVnZXJFbnRyeQIFDWtfZnJlZUJhbGFuY2UJAGQCBQdiYWxhbmNlBQdfY2hhbmdlBQNuaWwJAAIBCQCsAgIJAKwCAgkArAICAi1WYXVsdDogY2FuIG5vdCB1cGRhdGUgZnJlZSBiYWxhbmNlLiBCYWxhbmNlOiAJAKQDAQUHYmFsYW5jZQIJIGNoYW5nZTogCQCkAwEFB19jaGFuZ2UBE3VwZGF0ZUxvY2tlZEJhbGFuY2UBB19jaGFuZ2UEB2JhbGFuY2UJAQ1sb2NrZWRCYWxhbmNlAAMJAGcCCQBkAgUHYmFsYW5jZQUHX2NoYW5nZQAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9rX2xvY2tlZEJhbGFuY2UJAGQCBQdiYWxhbmNlBQdfY2hhbmdlBQNuaWwJAAIBCQCsAgIJAKwCAgkArAICAi9WYXVsdDogY2FuIG5vdCB1cGRhdGUgbG9ja2VkIGJhbGFuY2UuIEJhbGFuY2U6IAkApAMBBQdiYWxhbmNlAgkgY2hhbmdlOiAJAKQDAQUHX2NoYW5nZQERdXBkYXRlVG90YWxTdXBwbHkBB19jaGFuZ2UJAMwIAgkBDEludGVnZXJFbnRyeQIFDWtfdG90YWxTdXBwbHkJAGQCCQELdG90YWxTdXBwbHkABQdfY2hhbmdlBQNuaWwBCnVwZGF0ZVJhdGUBBV9yYXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQZrX3JhdGUFBV9yYXRlBQNuaWwBFXNldFVzZXJXaXRoZHJhd1BhcmFtcwMFX3VzZXIRX2xhc3RXaXRoZHJhd0RhdGUKX3dpdGhkcmF3bgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUUa19sYXN0X3dpdGhkcmF3X2RhdGUFBV91c2VyBRFfbGFzdFdpdGhkcmF3RGF0ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUUa193aXRoZHJhd19pbl9wZXJpb2QFBV91c2VyBQpfd2l0aGRyYXduBQNuaWwBE3VwZGF0ZVJld2FyZEJhbGFuY2UBBl9kZWx0YQkAzAgCCQEMSW50ZWdlckVudHJ5AgUPa19yZXdhcmRCYWxhbmNlCQBkAgkBDXJld2FyZEJhbGFuY2UABQZfZGVsdGEFA25pbAEQdXBkYXRlUmV3YXJkUmF0ZQELX3Jld2FyZFJhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIFDGtfcmV3YXJkUmF0ZQULX3Jld2FyZFJhdGUFA25pbAEKdXBkYXRlVGltZQIPX2xhc3RVcGRhdGVUaW1lDV9wZXJpb2RGaW5pc2gJAMwIAgkBDEludGVnZXJFbnRyeQIFEGtfbGFzdFVwZGF0ZVRpbWUFD19sYXN0VXBkYXRlVGltZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUOa19wZXJpb2RGaW5pc2gFDV9wZXJpb2RGaW5pc2gFA25pbAEadXBkYXRlUmV3YXJkUGVyVG9rZW5TdG9yZWQBFV9yZXdhcmRQZXJUb2tlblN0b3JlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUWa19yZXdhcmRQZXJUb2tlblN0b3JlZAUVX3Jld2FyZFBlclRva2VuU3RvcmVkBQNuaWwBEXVwZGF0ZVVzZXJSZXdhcmRzAwdfc3Rha2VyB19yZXdhcmQTX3VzZXJSZXdhcmRQZXJUb2tlbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUMa191c2VyUmV3YXJkBQdfc3Rha2VyBQdfcmV3YXJkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBRRrX3VzZXJSZXdhcmRQZXJUb2tlbgUHX3N0YWtlcgUTX3VzZXJSZXdhcmRQZXJUb2tlbgUDbmlsDQFpAQppbml0aWFsaXplAQxfY29vcmRpbmF0b3IDAwkBC2luaXRpYWxpemVkAAYJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECFFVuYWJsZSB0byBpbml0aWFsaXplCQDMCAIJAQtTdHJpbmdFbnRyeQIFFGtfY29vcmRpbmF0b3JBZGRyZXNzCQClCAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQxfY29vcmRpbmF0b3ICG0ludmFsaWQgY29vcmRpbmF0b3IgYWRkcmVzcwkAzAgCCQEMQm9vbGVhbkVudHJ5AgUNa19pbml0aWFsaXplZAYFA25pbAFpAQVzdGFrZQAEB19zdGFrZXIJAKUIAQgFAWkGY2FsbGVyBAdfYW1vdW50CQEOdXNkblRvRGVjaW1hbHMBCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAMDAwkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCQEKcXVvdGVBc3NldAAGCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEGCQEBIQEJAQtpbml0aWFsaXplZAAJAAIBAhVJbnZhbGlkIGNhbGwgdG8gc3Rha2UEDCR0MDk4NjkxMDA5OAkBDHVwZGF0ZVJld2FyZAIFB19zdGFrZXIAAAQXbmV3UmV3YXJkUGVyVG9rZW5TdG9yZWQIBQwkdDA5ODY5MTAwOTgCXzEEEW5ld0xhc3RVcGRhdGVUaW1lCAUMJHQwOTg2OTEwMDk4Al8yBAxzdGFrZXJFYXJuZWQIBQwkdDA5ODY5MTAwOTgCXzMEGHN0YWtlclJld2FyZFBlclRva2VuUGFpZAgFDCR0MDk4NjkxMDA5OAJfNAQLY3VycmVudFJhdGUJAQRyYXRlAAQPcHJldkF2ZXJhZ2VSYXRlCQELYXZlcmFnZVJhdGUBBQdfc3Rha2VyBAd2QW1vdW50CQEEZGl2ZAIFB19hbW91bnQFC2N1cnJlbnRSYXRlBA5uZXdBdmVyYWdlUmF0ZQkBBGRpdmQCCQBkAgkBBG11bGQCBQd2QW1vdW50BQtjdXJyZW50UmF0ZQkBBG11bGQCCQEJYmFsYW5jZU9mAQUHX3N0YWtlcgUPcHJldkF2ZXJhZ2VSYXRlCQBkAgUHdkFtb3VudAkBCWJhbGFuY2VPZgEFB19zdGFrZXIED25ld1RvdGFsQmFsYW5jZQkAZAIFB3ZBbW91bnQJAQliYWxhbmNlT2YBBQdfc3Rha2VyBBBuZXdXaXRoZHJhd0xpbWl0CQEEbXVsZAIFD25ld1RvdGFsQmFsYW5jZQUTV0lUSERSQVdfUEVSX1BFUklPRAQFc3Rha2UJAPwHBAkBDm1hbmFnZXJBZGRyZXNzAAIHZGVwb3NpdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKcXVvdGVBc3NldAAJARB1c2RuRnJvbURlY2ltYWxzAQUHX2Ftb3VudAUDbmlsAwkAAAIFBXN0YWtlBQVzdGFrZQkAzggCCQDOCAIJAM4IAgkAzggCCQDOCAIJAM4IAgkAzggCCQERdXBkYXRlVXNlclJld2FyZHMDBQdfc3Rha2VyBQxzdGFrZXJFYXJuZWQFGHN0YWtlclJld2FyZFBlclRva2VuUGFpZAkBGnVwZGF0ZVJld2FyZFBlclRva2VuU3RvcmVkAQUXbmV3UmV3YXJkUGVyVG9rZW5TdG9yZWQJAQp1cGRhdGVUaW1lAgURbmV3TGFzdFVwZGF0ZVRpbWUJAQxwZXJpb2RGaW5pc2gACQERdXBkYXRlRnJlZUJhbGFuY2UBBQdfYW1vdW50CQERdXBkYXRlVXNlckJhbGFuY2UCBQdfc3Rha2VyBQd2QW1vdW50CQESc2V0VXNlckF2ZXJhZ2VSYXRlAgUHX3N0YWtlcgUObmV3QXZlcmFnZVJhdGUJARRzZXRVc2VyV2l0aGRyYXdMaW1pdAIFB19zdGFrZXIFEG5ld1dpdGhkcmF3TGltaXQJARF1cGRhdGVUb3RhbFN1cHBseQEFB3ZBbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEHdW5TdGFrZQEHX2Ftb3VudAQHX3N0YWtlcgkApQgBCAUBaQZjYWxsZXIEEmFtb3VudE9mUXVvdGVBc3NldAkBDnVzZG5Ub0RlY2ltYWxzAQUHX2Ftb3VudAMDAwkBAiE9AggFAWkIcGF5bWVudHMFA25pbAYJAGcCAAAFEmFtb3VudE9mUXVvdGVBc3NldAYJAQEhAQkBC2luaXRpYWxpemVkAAkAAgECF0ludmFsaWQgY2FsbCB0byB1blN0YWtlBA0kdDAxMTQ1MTExNjY3CQEMdXBkYXRlUmV3YXJkAgUHX3N0YWtlcgAABBduZXdSZXdhcmRQZXJUb2tlblN0b3JlZAgFDSR0MDExNDUxMTE2NjcCXzEEEW5ld0xhc3RVcGRhdGVUaW1lCAUNJHQwMTE0NTExMTY2NwJfMgQMc3Rha2VyRWFybmVkCAUNJHQwMTE0NTExMTY2NwJfMwQYc3Rha2VyUmV3YXJkUGVyVG9rZW5QYWlkCAUNJHQwMTE0NTExMTY2NwJfNAQNJHQwMTE2NzQxMTgxNQkBFGdldFdpdGhkcmF3TGltaXRMZWZ0AQUHX3N0YWtlcgQUbmV3TGFzdFdpdGhkcmF3bkRhdGUIBQ0kdDAxMTY3NDExODE1Al8xBBF3aXRoZHJhd0xpbWl0TGVmdAgFDSR0MDExNjc0MTE4MTUCXzIEB3ZBbW91bnQJAQRkaXZkAgUSYW1vdW50T2ZRdW90ZUFzc2V0CQEEcmF0ZQADCQBmAgUHdkFtb3VudAURd2l0aGRyYXdMaW1pdExlZnQJAAIBAixJbnZhbGlkIGNhbGwgdG8gdW5TdGFrZTogd2l0aGRyYXcgb3ZlciBsaW1pdAQUbmV3V2l0aGRyYXduSW5QZXJpb2QJAGQCCQERd2l0aGRyYXduSW5QZXJpb2QBBQdfc3Rha2VyBQd2QW1vdW50AwkAZgIFEmFtb3VudE9mUXVvdGVBc3NldAkBC2ZyZWVCYWxhbmNlAAkAAgECKEludmFsaWQgY2FsbCB0byB1blN0YWtlOiBiYWxhbmNlIHRvbyBsb3cEB3Vuc3Rha2UJAPwHBAkBDm1hbmFnZXJBZGRyZXNzAAIId2l0aGRyYXcJAMwIAgkA2AQBCQEKcXVvdGVBc3NldAAJAMwIAgkBEHVzZG5Gcm9tRGVjaW1hbHMBBRJhbW91bnRPZlF1b3RlQXNzZXQFA25pbAUDbmlsAwkAAAIFB3Vuc3Rha2UFB3Vuc3Rha2UJAM4IAgkAzggCCQDOCAIJAM4IAgkAzggCCQDOCAIJAM4IAgkBEXVwZGF0ZVVzZXJSZXdhcmRzAwUHX3N0YWtlcgUMc3Rha2VyRWFybmVkBRhzdGFrZXJSZXdhcmRQZXJUb2tlblBhaWQJARp1cGRhdGVSZXdhcmRQZXJUb2tlblN0b3JlZAEFF25ld1Jld2FyZFBlclRva2VuU3RvcmVkCQEKdXBkYXRlVGltZQIFEW5ld0xhc3RVcGRhdGVUaW1lCQEMcGVyaW9kRmluaXNoAAkBEXVwZGF0ZUZyZWVCYWxhbmNlAQkBAS0BBRJhbW91bnRPZlF1b3RlQXNzZXQJARF1cGRhdGVVc2VyQmFsYW5jZQIFB19zdGFrZXIJAQEtAQUHdkFtb3VudAkBEXVwZGF0ZVRvdGFsU3VwcGx5AQkBAS0BBQd2QW1vdW50CQEVc2V0VXNlcldpdGhkcmF3UGFyYW1zAwUHX3N0YWtlcgUUbmV3TGFzdFdpdGhkcmF3bkRhdGUFFG5ld1dpdGhkcmF3bkluUGVyaW9kCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkBEHVzZG5Gcm9tRGVjaW1hbHMBBRJhbW91bnRPZlF1b3RlQXNzZXQJAQpxdW90ZUFzc2V0AAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBD3dpdGhkcmF3UmV3YXJkcwAEB19zdGFrZXIJAKUIAQgFAWkGY2FsbGVyBA0kdDAxMzE1MzEzMjk4CQEMdXBkYXRlUmV3YXJkAgUHX3N0YWtlcgAABBduZXdSZXdhcmRQZXJUb2tlblN0b3JlZAgFDSR0MDEzMTUzMTMyOTgCXzEEEW5ld0xhc3RVcGRhdGVUaW1lCAUNJHQwMTMxNTMxMzI5OAJfMgQMc3Rha2VyRWFybmVkCAUNJHQwMTMxNTMxMzI5OAJfMwQYc3Rha2VyUmV3YXJkUGVyVG9rZW5QYWlkCAUNJHQwMTMxNTMxMzI5OAJfNAMDCQBnAgAABQxzdGFrZXJFYXJuZWQGCQEBIQEJAQtpbml0aWFsaXplZAAJAAIBAhBObyByZXdhcmQ6IFZhdWx0CQDOCAIJAM4IAgkAzggCCQDOCAIJARF1cGRhdGVVc2VyUmV3YXJkcwMFB19zdGFrZXIAAAUYc3Rha2VyUmV3YXJkUGVyVG9rZW5QYWlkCQEadXBkYXRlUmV3YXJkUGVyVG9rZW5TdG9yZWQBBRduZXdSZXdhcmRQZXJUb2tlblN0b3JlZAkBCnVwZGF0ZVRpbWUCBRFuZXdMYXN0VXBkYXRlVGltZQkBDHBlcmlvZEZpbmlzaAAJARN1cGRhdGVSZXdhcmRCYWxhbmNlAQkBAS0BBQxzdGFrZXJFYXJuZWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQxzdGFrZXJFYXJuZWQJAQ9nb3Zlcm5hbmNlQXNzZXQABQNuaWwBaQEHYWRkRnJlZQAEB19hbW91bnQJAQ51c2RuVG9EZWNpbWFscwEICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50AwMDAwkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCQEKcXVvdGVBc3NldAAGCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEGCQEBIQEJAQtpbml0aWFsaXplZAAGCQEBIQEDCQELaXNXaGl0ZWxpc3QBCQClCAEIBQFpBmNhbGxlcgYJAAACCAUBaQZjYWxsZXIJAQxhZG1pbkFkZHJlc3MACQACAQIWSW52YWxpZCBhZGRGcmVlIHBhcmFtcwQHbmV3UmF0ZQkBDmNvbXB1dGVOZXdSYXRlAQUHX2Ftb3VudAQFc3Rha2UJAPwHBAkBDm1hbmFnZXJBZGRyZXNzAAIHZGVwb3NpdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKcXVvdGVBc3NldAAJARB1c2RuRnJvbURlY2ltYWxzAQUHX2Ftb3VudAUDbmlsAwkAAAIFBXN0YWtlBQVzdGFrZQkAzggCCQERdXBkYXRlRnJlZUJhbGFuY2UBBQdfYW1vdW50CQEKdXBkYXRlUmF0ZQEFB25ld1JhdGUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJYWRkTG9ja2VkAAQHX2Ftb3VudAkBDnVzZG5Ub0RlY2ltYWxzAQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQDAwMDCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQJAQpxdW90ZUFzc2V0AAYJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQYJAQEhAQkBC2luaXRpYWxpemVkAAYJAQEhAQMJAQtpc1doaXRlbGlzdAEJAKUIAQgFAWkGY2FsbGVyBgkAAAIIBQFpBmNhbGxlcgkBDGFkbWluQWRkcmVzcwAJAAIBAhhJbnZhbGlkIGFkZExvY2tlZCBwYXJhbXMEB3Vuc3Rha2UJAPwHBAkBDm1hbmFnZXJBZGRyZXNzAAIHZGVwb3NpdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKcXVvdGVBc3NldAAJARB1c2RuRnJvbURlY2ltYWxzAQUHX2Ftb3VudAUDbmlsAwkAAAIFB3Vuc3Rha2UFB3Vuc3Rha2UJARN1cGRhdGVMb2NrZWRCYWxhbmNlAQUHX2Ftb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARVleGNoYW5nZUZyZWVBbmRMb2NrZWQBB19hbW91bnQDAwkBASEBCQELaW5pdGlhbGl6ZWQABgkBASEBCQELaXNXaGl0ZWxpc3QBCQClCAEIBQFpBmNhbGxlcgkAAgECJEludmFsaWQgZXhjaGFuZ2VGcmVlQW5kTG9ja2VkIHBhcmFtcwQSYW1vdW50T2ZRdW90ZUFzc2V0CQEOdXNkblRvRGVjaW1hbHMBBQdfYW1vdW50BAduZXdSYXRlCQEOY29tcHV0ZU5ld1JhdGUBCQEBLQEFEmFtb3VudE9mUXVvdGVBc3NldAkAzggCCQDOCAIJARN1cGRhdGVMb2NrZWRCYWxhbmNlAQUSYW1vdW50T2ZRdW90ZUFzc2V0CQERdXBkYXRlRnJlZUJhbGFuY2UBCQEBLQEFEmFtb3VudE9mUXVvdGVBc3NldAkBCnVwZGF0ZVJhdGUBBQduZXdSYXRlAWkBDndpdGhkcmF3TG9ja2VkAQdfYW1vdW50AwMDCQEBIQEJAQtpbml0aWFsaXplZAAGCQBnAgAABQdfYW1vdW50BgkBASEBCQELaXNXaGl0ZWxpc3QBCQClCAEIBQFpBmNhbGxlcgkAAgECHUludmFsaWQgd2l0aGRyYXdMb2NrZWQgcGFyYW1zBBJhbW91bnRPZlF1b3RlQXNzZXQJAQ51c2RuVG9EZWNpbWFscwEFB19hbW91bnQEB3Vuc3Rha2UJAPwHBAkBDm1hbmFnZXJBZGRyZXNzAAIId2l0aGRyYXcJAMwIAgkA2AQBCQEKcXVvdGVBc3NldAAJAMwIAgkBEHVzZG5Gcm9tRGVjaW1hbHMBBRJhbW91bnRPZlF1b3RlQXNzZXQFA25pbAUDbmlsAwkAAAIFB3Vuc3Rha2UFB3Vuc3Rha2UJAM4IAgkBE3VwZGF0ZUxvY2tlZEJhbGFuY2UBCQEBLQEFEmFtb3VudE9mUXVvdGVBc3NldAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJARB1c2RuRnJvbURlY2ltYWxzAQUSYW1vdW50T2ZRdW90ZUFzc2V0CQEKcXVvdGVBc3NldAAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQphZGRSZXdhcmRzAAMDAwkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCQEPZ292ZXJuYW5jZUFzc2V0AAYJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQYJAQEhAQkBC2luaXRpYWxpemVkAAkAAgECGUludmFsaWQgYWRkUmV3YXJkcyBwYXJhbXMEB19yZXdhcmQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BBduZXdSZXdhcmRQZXJUb2tlblN0b3JlZAgJAQx1cGRhdGVSZXdhcmQCBQpOT19BRERSRVNTBQlOT19TVEFLRVICXzEECXRpbWVzdGFtcAkBE2N1cnJlbnRUaW1lc3RhbXBTZWMABA1uZXdSZXdhcmRSYXRlAwkAZgIFCXRpbWVzdGFtcAkBDHBlcmlvZEZpbmlzaAAJAGkCBQdfcmV3YXJkBQhEVVJBVElPTgQNcmVtYWluaW5nVGltZQkAZQIJAQxwZXJpb2RGaW5pc2gABQl0aW1lc3RhbXAECGxlZnRvdmVyCQBoAgkBCnJld2FyZFJhdGUABQ1yZW1haW5pbmdUaW1lCQBpAgkAZAIFB19yZXdhcmQFCGxlZnRvdmVyBQhEVVJBVElPTgkAzggCCQDOCAIJAM4IAgkBEHVwZGF0ZVJld2FyZFJhdGUBBQ1uZXdSZXdhcmRSYXRlCQEadXBkYXRlUmV3YXJkUGVyVG9rZW5TdG9yZWQBBRduZXdSZXdhcmRQZXJUb2tlblN0b3JlZAkBE3VwZGF0ZVJld2FyZEJhbGFuY2UBBQdfcmV3YXJkCQEKdXBkYXRlVGltZQIFCXRpbWVzdGFtcAkAZAIFCXRpbWVzdGFtcAUIRFVSQVRJT04BaQEKYWNrUmV3YXJkcwAECnByb2ZpdFJlc3AJAPwHBAkBDm1hbmFnZXJBZGRyZXNzAAILY2xhaW1Qcm9maXQJAMwIAgkA2AQBCQEKcXVvdGVBc3NldAAFA25pbAUDbmlsAwkAAAIFCnByb2ZpdFJlc3AFCnByb2ZpdFJlc3AEBnByb2ZpdAQHJG1hdGNoMAUKcHJvZml0UmVzcAMJAAECBQckbWF0Y2gwAgNJbnQEAXAFByRtYXRjaDAJAQ51c2RuVG9EZWNpbWFscwEFAXAJAAIBAhxJbnZhbGlkIGNsYWltUHJvZml0IHJlc3BvbnNlBAZyZXN1bHQDCQBmAgUGcHJvZml0AAAEB25ld1JhdGUJAQ5jb21wdXRlTmV3UmF0ZQEFBnByb2ZpdAQFc3Rha2UJAPwHBAkBDm1hbmFnZXJBZGRyZXNzAAIHZGVwb3NpdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKcXVvdGVBc3NldAAJARB1c2RuRnJvbURlY2ltYWxzAQUGcHJvZml0BQNuaWwDCQAAAgUFc3Rha2UFBXN0YWtlCQDOCAIJARF1cGRhdGVGcmVlQmFsYW5jZQEFBnByb2ZpdAkBCnVwZGF0ZVJhdGUBBQduZXdSYXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwDCQAAAgUGcmVzdWx0BQZyZXN1bHQFBnJlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQt2aWV3X3Jld2FyZAEHX3N0YWtlcgQHYmFsYW5jZQkBCWJhbGFuY2VPZgEFB19zdGFrZXIED2RlcG9zaXRlZEFtb3VudAkBBG11bGQCCQELYXZlcmFnZVJhdGUBBQdfc3Rha2VyBQdiYWxhbmNlBA1jdXJyZW50QW1vdW50CQEEbXVsZAIJAQRyYXRlAAUHYmFsYW5jZQQLZWFybmVkUXVvdGUJAGUCBQ1jdXJyZW50QW1vdW50BQ9kZXBvc2l0ZWRBbW91bnQJAAIBCQCkAwEFC2Vhcm5lZFF1b3RlAWkBEnZpZXdfc3Rha2luZ1Jld2FyZAEHX3N0YWtlcgQMc3Rha2VyRWFybmVkCAkBDHVwZGF0ZVJld2FyZAIFB19zdGFrZXIAAAJfMwkAAgEJAKQDAQkBEHVzZG5Gcm9tRGVjaW1hbHMBBQxzdGFrZXJFYXJuZWQBaQESdmlld193aXRoZHJhd0xpbWl0AQdfc3Rha2VyBBF3aXRoZHJhd0xpbWl0TGVmdAgJARRnZXRXaXRoZHJhd0xpbWl0TGVmdAEFB19zdGFrZXICXzIEC2xpbWl0SW5Vc2RuCQEQdXNkbkZyb21EZWNpbWFscwEJAQRtdWxkAgURd2l0aGRyYXdMaW1pdExlZnQJAQRyYXRlAAkAAgEJAKQDAQULbGltaXRJblVzZG4BAnR4AQZ2ZXJpZnkABA5jb29yZGluYXRvclN0cgkAnQgCBQR0aGlzBRRrX2Nvb3JkaW5hdG9yQWRkcmVzcwMJAQlpc0RlZmluZWQBBQ5jb29yZGluYXRvclN0cgQFYWRtaW4JAJ0IAgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQUOY29vcmRpbmF0b3JTdHIFD2tfYWRtaW5fYWRkcmVzcwMJAQlpc0RlZmluZWQBBQVhZG1pbgkBC3ZhbHVlT3JFbHNlAgkAmwgCCQERQGV4dHJOYXRpdmUoMTA2MikBCQEFdmFsdWUBBQVhZG1pbgkArAICCQCsAgIJAKwCAgIHc3RhdHVzXwkApQgBBQR0aGlzAgFfCQDYBAEIBQJ0eAJpZAcJAAIBAi51bmFibGUgdG8gdmVyaWZ5OiBhZG1pbiBub3Qgc2V0IGluIGNvb3JkaW5hdG9yCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V500Az4A==", "height": 2434846, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Bh8RgxmQUbRHiuegHa8RsXfW5ks4By6MtphUCMkrEokV Next: FZPZdns2cWgvkQjdyteNN77MTtKLjxnJosJeijrK53zZ Diff:
OldNewDifferences
4343
4444 let u = "k_quote_asset"
4545
46-let v = "k_admin_public_key"
46+let v = "k_admin_address"
4747
48-let w = "k_admin_address"
48+let w = "k_manager_address"
4949
50-let x = "k_manager_address"
50+let x = "k_collateral_address"
5151
52-let y = "k_collateral_address"
53-
54-func z (A,B) = ((A + "_") + B)
52+func y (z,A) = ((z + "_") + A)
5553
5654
57-func C () = valueOrErrorMessage(addressFromString(getStringValue(this, r)), "Coordinator not set")
55+func B () = valueOrErrorMessage(addressFromString(getStringValue(this, r)), "Coordinator not set")
5856
5957
60-func D (B) = valueOrElse(getBoolean(C(), z(s, B)), false)
58+func C (A) = valueOrElse(getBoolean(B(), y(s, A)), false)
6159
6260
63-func E () = fromBase58String(getStringValue(C(), v))
61+func D () = fromBase58String(getStringValue(B(), t))
6462
6563
66-func F () = fromBase58String(getStringValue(C(), t))
64+func E () = addressFromString(valueOrErrorMessage(getString(B(), v), "Admin address not set"))
6765
6866
69-func G () = addressFromString(valueOrErrorMessage(getString(C(), w), "Admin address not set"))
67+func F () = fromBase58String(getStringValue(B(), u))
7068
7169
72-func H () = fromBase58String(getStringValue(C(), u))
70+func G () = valueOrErrorMessage(addressFromString(getStringValue(B(), w)), "Manager not set")
7371
7472
75-func I () = valueOrErrorMessage(addressFromString(getStringValue(C(), x)), "Manager not set")
73+let H = (1 * (((((((10 * 10) * 10) * 10) * 10) * 10) * 10) * 10))
74+
75+let I = (((7 * 60) * 60) * 24)
76+
77+let J = ""
78+
79+let K = 0
80+
81+func L (M) = (M / 100)
7682
7783
78-let J = (1 * (((((((10 * 10) * 10) * 10) * 10) * 10) * 10) * 10))
79-
80-let K = (((7 * 60) * 60) * 24)
81-
82-let L = ""
83-
84-let M = 0
85-
86-func N (O) = (O / 100)
84+func N (M) = (M * 100)
8785
8886
89-func P (O) = (O * 100)
87+func O (P,Q) = fraction(P, H, Q, HALFEVEN)
9088
9189
92-func Q (R,S) = fraction(R, J, S, HALFEVEN)
90+func R (P,Q) = fraction(P, Q, H, HALFEVEN)
9391
9492
95-func T (R,S) = fraction(R, S, J, HALFEVEN)
93+func S (P) = if ((P > 0))
94+ then P
95+ else -(P)
9696
9797
98-func U (R) = if ((R > 0))
99- then R
100- else -(R)
98+func T (P,Q) = if ((P > Q))
99+ then Q
100+ else P
101101
102102
103-func V (R,S) = if ((R > S))
104- then S
105- else R
103+let U = (86400 * 1000)
104+
105+let V = O((1 * H), (4 * H))
106+
107+func W (X) = valueOrErrorMessage(getInteger(this, X), ("no value for " + X))
106108
107109
108-let W = (86400 * 1000)
109-
110-let X = Q((1 * J), (4 * J))
111-
112-func Y (Z) = valueOrErrorMessage(getInteger(this, Z), ("no value for " + Z))
110+func Y (X) = valueOrElse(getInteger(this, X), 0)
113111
114112
115-func aa (Z) = valueOrElse(getInteger(this, Z), 0)
113+func Z (X) = valueOrElse(getInteger(this, X), H)
116114
117115
118-func ab (Z) = valueOrElse(getInteger(this, Z), J)
116+func aa () = Y(a)
119117
120118
121-func ac () = aa(a)
119+func ab () = Z(e)
122120
123121
124-func ad () = ab(e)
122+func ac (ad) = Y(y(l, ad))
125123
126124
127-func ae (af) = aa(z(l, af))
125+func ae (ad) = Y(y(m, ad))
128126
129127
130-func ag (af) = aa(z(m, af))
128+func af (ad) = Y(y(n, ad))
131129
132130
133-func ah (af) = aa(z(n, af))
131+func ag (ad) = Y(y(p, ad))
134132
135133
136-func ai (af) = aa(z(p, af))
134+func ah (ad) = Y(y(o, ad))
137135
138136
139-func aj (af) = aa(z(o, af))
137+func ai () = Y(d)
140138
141139
142-func ak () = aa(d)
140+func aj () = Y(c)
143141
144142
145-func al () = aa(c)
143+func ak () = Y(g)
146144
147145
148-func am () = aa(g)
146+func al () = Y(f)
149147
150148
151-func an () = aa(f)
149+func am () = Y(h)
152150
153151
154-func ao () = aa(h)
152+func an () = Y(i)
155153
156154
157-func ap () = aa(i)
155+func ao () = Y(b)
158156
159157
160-func aq () = aa(b)
158+func ap (ad) = Y(y(k, ad))
161159
162160
163-func ar (af) = aa(z(k, af))
161+func aq (ad) = Y(y(j, ad))
164162
165163
166-func as (af) = aa(z(j, af))
164+func ar () = valueOrElse(getBoolean(this, q), false)
167165
168166
169-func at () = valueOrElse(getBoolean(this, q), false)
167+func as () = lastBlock.timestamp
170168
171169
172-func au () = lastBlock.timestamp
170+func at () = (as() / 1000)
173171
174172
175-func av () = (au() / 1000)
176-
177-
178-func aw (af) = {
179- let ax = au()
180- let ay = aj(af)
181- let az = if (((ax - ay) > W))
182- then $Tuple2(ax, ah(af))
183- else $Tuple2(ay, (ah(af) - ai(af)))
184- let aA = az._1
185- let aB = az._2
186- $Tuple2(aA, aB)
173+func au (ad) = {
174+ let av = as()
175+ let aw = ah(ad)
176+ let ax = if (((av - aw) > U))
177+ then $Tuple2(av, af(ad))
178+ else $Tuple2(aw, (af(ad) - ag(ad)))
179+ let ay = ax._1
180+ let az = ax._2
181+ $Tuple2(ay, az)
187182 }
188183
189184
190-func aC (aD) = {
191- let aE = if ((ac() > 0))
192- then Q((ak() + aD), ac())
193- else J
194- aE
185+func aA (aB) = {
186+ let aC = if ((aa() > 0))
187+ then O((ai() + aB), aa())
188+ else H
189+ aC
195190 }
196191
197192
198-func aF () = V(av(), ap())
193+func aD () = T(at(), an())
199194
200195
201-func aG (aH) = if (((ac() + aH) == 0))
202- then am()
196+func aE (aF) = if (((aa() + aF) == 0))
197+ then ak()
203198 else {
204- let aI = (aF() - an())
205- let aJ = if ((0 > aI))
199+ let aG = (aD() - al())
200+ let aH = if ((0 > aG))
206201 then 0
207- else aI
208- let aK = Q((ao() * aJ), (ac() + aH))
209- (am() + aK)
202+ else aG
203+ let aI = O((am() * aH), (aa() + aF))
204+ (ak() + aI)
210205 }
211206
212207
213-func aL (af,aH) = {
214- let aM = (aG(aH) - as(af))
215- (T((ae(af) + aH), aM) + ar(af))
208+func aJ (ad,aF) = {
209+ let aK = (aE(aF) - aq(ad))
210+ (R((ac(ad) + aF), aK) + ap(ad))
216211 }
217212
218213
219-func aN (af,aH) = {
220- let aO = aG(aH)
221- let aP = av()
222- let aQ = if ((af != ""))
223- then $Tuple2(aL(af, aH), aO)
214+func aL (ad,aF) = {
215+ let aM = aE(aF)
216+ let aN = at()
217+ let aO = if ((ad != ""))
218+ then $Tuple2(aJ(ad, aF), aM)
224219 else $Tuple2(0, 0)
225- let aR = aQ._1
226- let aS = aQ._2
227- $Tuple4(aO, aP, aR, aS)
220+ let aP = aO._1
221+ let aQ = aO._2
222+ $Tuple4(aM, aN, aP, aQ)
228223 }
229224
230225
231-func aT (aU,aV) = [IntegerEntry(z(l, aU), (ae(aU) + aV))]
226+func aR (aS,aT) = [IntegerEntry(y(l, aS), (ac(aS) + aT))]
232227
233228
234-func aW (aU,aX) = [IntegerEntry(z(n, aU), aX)]
229+func aU (aS,aV) = [IntegerEntry(y(n, aS), aV)]
235230
236231
237-func aY (aU,aX) = [IntegerEntry(z(m, aU), aX)]
232+func aW (aS,aV) = [IntegerEntry(y(m, aS), aV)]
238233
239234
240-func aZ (aV) = [IntegerEntry(d, (ak() + aV))]
241-
242-
243-func ba (aV) = {
244- let bb = al()
245- if (((bb + aV) >= 0))
246- then [IntegerEntry(c, (bb + aV))]
247- else throw(((("Vault: can not update locked balance. Balance: " + toString(bb)) + " change: ") + toString(aV)))
235+func aX (aT) = {
236+ let aY = ai()
237+ if (((aY + aT) >= 0))
238+ then [IntegerEntry(d, (aY + aT))]
239+ else throw(((("Vault: can not update free balance. Balance: " + toString(aY)) + " change: ") + toString(aT)))
248240 }
249241
250242
251-func bc (aV) = {
252- let bb = al()
253- if (((bb + aV) >= 0))
254- then [IntegerEntry(c, (bb + aV))]
255- else [IntegerEntry(c, 0)]
243+func aZ (aT) = {
244+ let aY = aj()
245+ if (((aY + aT) >= 0))
246+ then [IntegerEntry(c, (aY + aT))]
247+ else throw(((("Vault: can not update locked balance. Balance: " + toString(aY)) + " change: ") + toString(aT)))
256248 }
257249
258250
259-func bd (aV) = [IntegerEntry(a, (ac() + aV))]
251+func ba (aT) = [IntegerEntry(a, (aa() + aT))]
260252
261253
262-func be (aX) = [IntegerEntry(e, aX)]
254+func bb (aV) = [IntegerEntry(e, aV)]
263255
264256
265-func bf (aU,bg,bh) = [IntegerEntry(z(o, aU), bg), IntegerEntry(z(p, aU), bh)]
257+func bc (aS,bd,be) = [IntegerEntry(y(o, aS), bd), IntegerEntry(y(p, aS), be)]
266258
267259
268-func bi (bj) = [IntegerEntry(b, (aq() + bj))]
260+func bf (bg) = [IntegerEntry(b, (ao() + bg))]
269261
270262
271-func bk (bl) = [IntegerEntry(h, bl)]
263+func bh (bi) = [IntegerEntry(h, bi)]
272264
273265
274-func bm (bn,bo) = [IntegerEntry(f, bn), IntegerEntry(i, bo)]
266+func bj (bk,bl) = [IntegerEntry(f, bk), IntegerEntry(i, bl)]
275267
276268
277-func bp (bq) = [IntegerEntry(g, bq)]
269+func bm (bn) = [IntegerEntry(g, bn)]
278270
279271
280-func br (af,bs,bt) = [IntegerEntry(z(k, af), bs), IntegerEntry(z(j, af), bt)]
272+func bo (ad,bp,bq) = [IntegerEntry(y(k, ad), bp), IntegerEntry(y(j, ad), bq)]
281273
282274
283-@Callable(bu)
284-func initialize (bv) = if (at())
285- then throw("Already initialized")
286- else [StringEntry(r, bv), BooleanEntry(q, true)]
275+@Callable(br)
276+func initialize (bs) = if (if (ar())
277+ then true
278+ else (br.caller != this))
279+ then throw("Unable to initialize")
280+ else [StringEntry(r, toString(valueOrErrorMessage(addressFromString(bs), "Invalid coordinator address"))), BooleanEntry(q, true)]
287281
288282
289283
290-@Callable(bu)
284+@Callable(br)
291285 func stake () = {
292- let af = toString(bu.caller)
293- let O = P(bu.payments[0].amount)
294- if (if ((bu.payments[0].assetId != H()))
286+ let ad = toString(br.caller)
287+ let M = N(br.payments[0].amount)
288+ if (if (if ((br.payments[0].assetId != F()))
295289 then true
296- else !(at()))
290+ else (size(br.payments) != 1))
291+ then true
292+ else !(ar()))
297293 then throw("Invalid call to stake")
298294 else {
299- let bw = aN(af, 0)
300- let aO = bw._1
301- let aP = bw._2
302- let aR = bw._3
303- let aS = bw._4
304- let bx = ad()
305- let by = ag(af)
306- let bz = Q(O, bx)
307- let bA = Q((T(bz, bx) + T(ae(af), by)), (bz + ae(af)))
308- let bB = (bz + ae(af))
309- let bC = T(bB, X)
310- let bD = invoke(I(), "deposit", nil, [AttachedPayment(H(), N(O))])
311- if ((bD == bD))
312- then (((((((br(af, aR, aS) ++ bp(aO)) ++ bm(aP, ap())) ++ aZ(O)) ++ aT(af, bz)) ++ aY(af, bA)) ++ aW(af, bC)) ++ bd(bz))
295+ let bt = aL(ad, 0)
296+ let aM = bt._1
297+ let aN = bt._2
298+ let aP = bt._3
299+ let aQ = bt._4
300+ let bu = ab()
301+ let bv = ae(ad)
302+ let bw = O(M, bu)
303+ let bx = O((R(bw, bu) + R(ac(ad), bv)), (bw + ac(ad)))
304+ let by = (bw + ac(ad))
305+ let bz = R(by, V)
306+ let bA = invoke(G(), "deposit", nil, [AttachedPayment(F(), L(M))])
307+ if ((bA == bA))
308+ then (((((((bo(ad, aP, aQ) ++ bm(aM)) ++ bj(aN, an())) ++ aX(M)) ++ aR(ad, bw)) ++ aW(ad, bx)) ++ aU(ad, bz)) ++ ba(bw))
313309 else throw("Strict value is not equal to itself.")
314310 }
315311 }
316312
317313
318314
319-@Callable(bu)
320-func unStake (O) = {
321- let af = toString(bu.caller)
322- let bE = P(O)
323- if (if ((bu.payments != nil))
315+@Callable(br)
316+func unStake (M) = {
317+ let ad = toString(br.caller)
318+ let bB = N(M)
319+ if (if (if ((br.payments != nil))
324320 then true
325- else !(at()))
321+ else (0 >= bB))
322+ then true
323+ else !(ar()))
326324 then throw("Invalid call to unStake")
327325 else {
328- let bF = aN(af, 0)
329- let aO = bF._1
330- let aP = bF._2
331- let aR = bF._3
332- let aS = bF._4
333- let bG = aw(af)
334- let aA = bG._1
335- let aB = bG._2
336- let bz = Q(bE, ad())
337- if ((bz > aB))
326+ let bC = aL(ad, 0)
327+ let aM = bC._1
328+ let aN = bC._2
329+ let aP = bC._3
330+ let aQ = bC._4
331+ let bD = au(ad)
332+ let ay = bD._1
333+ let az = bD._2
334+ let bw = O(bB, ab())
335+ if ((bw > az))
338336 then throw("Invalid call to unStake: withdraw over limit")
339337 else {
340- let bH = (ai(af) + bz)
341- if ((bE > ak()))
338+ let bE = (ag(ad) + bw)
339+ if ((bB > ai()))
342340 then throw("Invalid call to unStake: balance too low")
343341 else {
344- let bI = invoke(I(), "withdraw", [toBase58String(H()), N(bE)], nil)
345- if ((bI == bI))
346- then (((((((br(af, aR, aS) ++ bp(aO)) ++ bm(aP, ap())) ++ aZ(-(bE))) ++ aT(af, -(bz))) ++ bd(-(bz))) ++ bf(af, aA, bH)) ++ [ScriptTransfer(bu.caller, N(bE), H())])
342+ let bF = invoke(G(), "withdraw", [toBase58String(F()), L(bB)], nil)
343+ if ((bF == bF))
344+ then (((((((bo(ad, aP, aQ) ++ bm(aM)) ++ bj(aN, an())) ++ aX(-(bB))) ++ aR(ad, -(bw))) ++ ba(-(bw))) ++ bc(ad, ay, bE)) ++ [ScriptTransfer(br.caller, L(bB), F())])
347345 else throw("Strict value is not equal to itself.")
348346 }
349347 }
352350
353351
354352
355-@Callable(bu)
353+@Callable(br)
356354 func withdrawRewards () = {
357- let af = toString(bu.caller)
358- let bJ = aN(af, 0)
359- let aO = bJ._1
360- let aP = bJ._2
361- let aR = bJ._3
362- let aS = bJ._4
363- if (if ((0 >= aR))
355+ let ad = toString(br.caller)
356+ let bG = aL(ad, 0)
357+ let aM = bG._1
358+ let aN = bG._2
359+ let aP = bG._3
360+ let aQ = bG._4
361+ if (if ((0 >= aP))
364362 then true
365- else !(at()))
363+ else !(ar()))
366364 then throw("No reward: Vault")
367- else ((((br(af, 0, aS) ++ bp(aO)) ++ bm(aP, ap())) ++ bi(-(aR))) ++ [ScriptTransfer(bu.caller, aR, F())])
365+ else ((((bo(ad, 0, aQ) ++ bm(aM)) ++ bj(aN, an())) ++ bf(-(aP))) ++ [ScriptTransfer(br.caller, aP, D())])
368366 }
369367
370368
371369
372-@Callable(bu)
370+@Callable(br)
373371 func addFree () = {
374- let O = P(bu.payments[0].amount)
375- if (if (if ((bu.payments[0].assetId != H()))
372+ let M = N(br.payments[0].amount)
373+ if (if (if (if ((br.payments[0].assetId != F()))
376374 then true
377- else !(at()))
375+ else (size(br.payments) != 1))
378376 then true
379- else !(if (D(toString(bu.caller)))
377+ else !(ar()))
378+ then true
379+ else !(if (C(toString(br.caller)))
380380 then true
381- else (bu.caller == G())))
381+ else (br.caller == E())))
382382 then throw("Invalid addFree params")
383383 else {
384- let aE = if ((ac() > 0))
385- then Q((ak() + O), ac())
386- else J
387- let bI = invoke(I(), "deposit", nil, [AttachedPayment(H(), N(O))])
388- if ((bI == bI))
389- then (aZ(O) ++ be(aE))
384+ let aC = aA(M)
385+ let bA = invoke(G(), "deposit", nil, [AttachedPayment(F(), L(M))])
386+ if ((bA == bA))
387+ then (aX(M) ++ bb(aC))
390388 else throw("Strict value is not equal to itself.")
391389 }
392390 }
393391
394392
395393
396-@Callable(bu)
394+@Callable(br)
397395 func addLocked () = {
398- let O = P(bu.payments[0].amount)
399- if (if (if ((bu.payments[0].assetId != H()))
396+ let M = N(br.payments[0].amount)
397+ if (if (if (if ((br.payments[0].assetId != F()))
400398 then true
401- else !(at()))
399+ else (size(br.payments) != 1))
402400 then true
403- else !(if (D(toString(bu.caller)))
401+ else !(ar()))
402+ then true
403+ else !(if (C(toString(br.caller)))
404404 then true
405- else (bu.caller == G())))
405+ else (br.caller == E())))
406406 then throw("Invalid addLocked params")
407407 else {
408- let bI = invoke(I(), "deposit", nil, [AttachedPayment(H(), N(O))])
409- if ((bI == bI))
410- then ba(O)
408+ let bF = invoke(G(), "deposit", nil, [AttachedPayment(F(), L(M))])
409+ if ((bF == bF))
410+ then aZ(M)
411411 else throw("Strict value is not equal to itself.")
412412 }
413413 }
414414
415415
416416
417-@Callable(bu)
418-func exchangeFreeAndLocked (O) = if (if (!(at()))
417+@Callable(br)
418+func exchangeFreeAndLocked (M) = if (if (!(ar()))
419419 then true
420- else !(if (D(toString(bu.caller)))
421- then true
422- else (bu.caller == G())))
420+ else !(C(toString(br.caller))))
423421 then throw("Invalid exchangeFreeAndLocked params")
424422 else {
425- let bE = P(O)
426- let bK = -(bE)
427- let aE = aC(bK)
428- ((bc(bE) ++ aZ(bK)) ++ be(aE))
423+ let bB = N(M)
424+ let aC = aA(-(bB))
425+ ((aZ(bB) ++ aX(-(bB))) ++ bb(aC))
429426 }
430427
431428
432429
433-@Callable(bu)
434-func withdrawLocked (O) = if (if (if (!(at()))
430+@Callable(br)
431+func withdrawLocked (M) = if (if (if (!(ar()))
435432 then true
436- else (0 >= O))
433+ else (0 >= M))
437434 then true
438- else !(D(toString(bu.caller))))
435+ else !(C(toString(br.caller))))
439436 then throw("Invalid withdrawLocked params")
440437 else {
441- let bE = P(O)
442- let bI = invoke(I(), "withdraw", [toBase58String(H()), N(bE)], nil)
443- if ((bI == bI))
444- then {
445- let bL = al()
446- let bM = if ((bE > bL))
447- then $Tuple2(bL, (bE - bL))
448- else $Tuple2(bE, 0)
449- let bN = bM._1
450- let bO = bM._2
451- (((if ((bO > 0))
452- then {
453- let aE = aC(-(bO))
454- (aZ(-(bO)) ++ be(aE))
455- }
456- else nil) ++ ba(-(bN))) ++ [ScriptTransfer(bu.caller, N(bE), H())])
457- }
438+ let bB = N(M)
439+ let bF = invoke(G(), "withdraw", [toBase58String(F()), L(bB)], nil)
440+ if ((bF == bF))
441+ then (aZ(-(bB)) ++ [ScriptTransfer(br.caller, L(bB), F())])
458442 else throw("Strict value is not equal to itself.")
459443 }
460444
461445
462446
463-@Callable(bu)
464-func addRewards () = if (if ((bu.payments[0].assetId != F()))
447+@Callable(br)
448+func addRewards () = if (if (if ((br.payments[0].assetId != D()))
465449 then true
466- else !(at()))
450+ else (size(br.payments) != 1))
451+ then true
452+ else !(ar()))
467453 then throw("Invalid addRewards params")
468454 else {
469- let bs = bu.payments[0].amount
470- let aO = aN(L, M)._1
471- let bP = av()
472- let bQ = if ((bP > ap()))
473- then (bs / K)
455+ let bp = br.payments[0].amount
456+ let aM = aL(J, K)._1
457+ let bH = at()
458+ let bI = if ((bH > an()))
459+ then (bp / I)
474460 else {
475- let bR = (ap() - bP)
476- let bS = (ao() * bR)
477- ((bs + bS) / K)
461+ let bJ = (an() - bH)
462+ let bK = (am() * bJ)
463+ ((bp + bK) / I)
478464 }
479- (((bk(bQ) ++ bp(aO)) ++ bi(bs)) ++ bm(bP, (bP + K)))
465+ (((bh(bI) ++ bm(aM)) ++ bf(bp)) ++ bj(bH, (bH + I)))
480466 }
481467
482468
483469
484-@Callable(bu)
485-func view_reward (af) = {
486- let bb = ae(af)
487- let bT = T(ag(af), bb)
488- let bU = T(ad(), bb)
489- let bV = (bU - bT)
490- throw(toString(bV))
470+@Callable(br)
471+func ackRewards () = {
472+ let bL = invoke(G(), "claimProfit", [toBase58String(F())], nil)
473+ if ((bL == bL))
474+ then {
475+ let bM = {
476+ let bN = bL
477+ if ($isInstanceOf(bN, "Int"))
478+ then {
479+ let bO = bN
480+ N(bO)
481+ }
482+ else throw("Invalid claimProfit response")
483+ }
484+ let bP = if ((bM > 0))
485+ then {
486+ let aC = aA(bM)
487+ let bA = invoke(G(), "deposit", nil, [AttachedPayment(F(), L(bM))])
488+ if ((bA == bA))
489+ then (aX(bM) ++ bb(aC))
490+ else throw("Strict value is not equal to itself.")
491+ }
492+ else nil
493+ if ((bP == bP))
494+ then bP
495+ else throw("Strict value is not equal to itself.")
496+ }
497+ else throw("Strict value is not equal to itself.")
491498 }
492499
493500
494501
495-@Callable(bu)
496-func view_stakingReward (af) = {
497- let aR = aN(af, 0)._3
498- throw(toString(N(aR)))
502+@Callable(br)
503+func view_reward (ad) = {
504+ let aY = ac(ad)
505+ let bQ = R(ae(ad), aY)
506+ let bR = R(ab(), aY)
507+ let bS = (bR - bQ)
508+ throw(toString(bS))
499509 }
500510
501511
502512
503-@Callable(bu)
504-func view_withdrawLimit (af) = {
505- let aB = aw(af)._2
506- let bW = N(T(aB, ad()))
507- throw(toString(bW))
513+@Callable(br)
514+func view_stakingReward (ad) = {
515+ let aP = aL(ad, 0)._3
516+ throw(toString(L(aP)))
508517 }
509518
510519
511-@Verifier(bX)
512-func bY () = sigVerify(bX.bodyBytes, bX.proofs[0], E())
520+
521+@Callable(br)
522+func view_withdrawLimit (ad) = {
523+ let az = au(ad)._2
524+ let bT = L(R(az, ab()))
525+ throw(toString(bT))
526+ }
527+
528+
529+@Verifier(bU)
530+func bV () = {
531+ let bW = getString(this, r)
532+ if (isDefined(bW))
533+ then {
534+ let bX = getString(addressFromStringValue(value(bW)), v)
535+ if (isDefined(bX))
536+ then valueOrElse(getBoolean(addressFromStringValue(value(bX)), ((("status_" + toString(this)) + "_") + toBase58String(bU.id))), false)
537+ else throw("unable to verify: admin not set in coordinator")
538+ }
539+ else sigVerify(bU.bodyBytes, bU.proofs[0], bU.senderPublicKey)
540+ }
513541
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
88 let c = "k_lockedBalance"
99
1010 let d = "k_freeBalance"
1111
1212 let e = "k_rate"
1313
1414 let f = "k_lastUpdateTime"
1515
1616 let g = "k_rewardPerTokenStored"
1717
1818 let h = "k_rewardRate"
1919
2020 let i = "k_periodFinish"
2121
2222 let j = "k_userRewardPerToken"
2323
2424 let k = "k_userReward"
2525
2626 let l = "k_balance"
2727
2828 let m = "k_average_rate"
2929
3030 let n = "k_withdraw_limit"
3131
3232 let o = "k_last_withdraw_date"
3333
3434 let p = "k_withdraw_in_period"
3535
3636 let q = "k_initialized"
3737
3838 let r = "k_coordinatorAddress"
3939
4040 let s = "k_amm"
4141
4242 let t = "k_gov_asset"
4343
4444 let u = "k_quote_asset"
4545
46-let v = "k_admin_public_key"
46+let v = "k_admin_address"
4747
48-let w = "k_admin_address"
48+let w = "k_manager_address"
4949
50-let x = "k_manager_address"
50+let x = "k_collateral_address"
5151
52-let y = "k_collateral_address"
53-
54-func z (A,B) = ((A + "_") + B)
52+func y (z,A) = ((z + "_") + A)
5553
5654
57-func C () = valueOrErrorMessage(addressFromString(getStringValue(this, r)), "Coordinator not set")
55+func B () = valueOrErrorMessage(addressFromString(getStringValue(this, r)), "Coordinator not set")
5856
5957
60-func D (B) = valueOrElse(getBoolean(C(), z(s, B)), false)
58+func C (A) = valueOrElse(getBoolean(B(), y(s, A)), false)
6159
6260
63-func E () = fromBase58String(getStringValue(C(), v))
61+func D () = fromBase58String(getStringValue(B(), t))
6462
6563
66-func F () = fromBase58String(getStringValue(C(), t))
64+func E () = addressFromString(valueOrErrorMessage(getString(B(), v), "Admin address not set"))
6765
6866
69-func G () = addressFromString(valueOrErrorMessage(getString(C(), w), "Admin address not set"))
67+func F () = fromBase58String(getStringValue(B(), u))
7068
7169
72-func H () = fromBase58String(getStringValue(C(), u))
70+func G () = valueOrErrorMessage(addressFromString(getStringValue(B(), w)), "Manager not set")
7371
7472
75-func I () = valueOrErrorMessage(addressFromString(getStringValue(C(), x)), "Manager not set")
73+let H = (1 * (((((((10 * 10) * 10) * 10) * 10) * 10) * 10) * 10))
74+
75+let I = (((7 * 60) * 60) * 24)
76+
77+let J = ""
78+
79+let K = 0
80+
81+func L (M) = (M / 100)
7682
7783
78-let J = (1 * (((((((10 * 10) * 10) * 10) * 10) * 10) * 10) * 10))
79-
80-let K = (((7 * 60) * 60) * 24)
81-
82-let L = ""
83-
84-let M = 0
85-
86-func N (O) = (O / 100)
84+func N (M) = (M * 100)
8785
8886
89-func P (O) = (O * 100)
87+func O (P,Q) = fraction(P, H, Q, HALFEVEN)
9088
9189
92-func Q (R,S) = fraction(R, J, S, HALFEVEN)
90+func R (P,Q) = fraction(P, Q, H, HALFEVEN)
9391
9492
95-func T (R,S) = fraction(R, S, J, HALFEVEN)
93+func S (P) = if ((P > 0))
94+ then P
95+ else -(P)
9696
9797
98-func U (R) = if ((R > 0))
99- then R
100- else -(R)
98+func T (P,Q) = if ((P > Q))
99+ then Q
100+ else P
101101
102102
103-func V (R,S) = if ((R > S))
104- then S
105- else R
103+let U = (86400 * 1000)
104+
105+let V = O((1 * H), (4 * H))
106+
107+func W (X) = valueOrErrorMessage(getInteger(this, X), ("no value for " + X))
106108
107109
108-let W = (86400 * 1000)
109-
110-let X = Q((1 * J), (4 * J))
111-
112-func Y (Z) = valueOrErrorMessage(getInteger(this, Z), ("no value for " + Z))
110+func Y (X) = valueOrElse(getInteger(this, X), 0)
113111
114112
115-func aa (Z) = valueOrElse(getInteger(this, Z), 0)
113+func Z (X) = valueOrElse(getInteger(this, X), H)
116114
117115
118-func ab (Z) = valueOrElse(getInteger(this, Z), J)
116+func aa () = Y(a)
119117
120118
121-func ac () = aa(a)
119+func ab () = Z(e)
122120
123121
124-func ad () = ab(e)
122+func ac (ad) = Y(y(l, ad))
125123
126124
127-func ae (af) = aa(z(l, af))
125+func ae (ad) = Y(y(m, ad))
128126
129127
130-func ag (af) = aa(z(m, af))
128+func af (ad) = Y(y(n, ad))
131129
132130
133-func ah (af) = aa(z(n, af))
131+func ag (ad) = Y(y(p, ad))
134132
135133
136-func ai (af) = aa(z(p, af))
134+func ah (ad) = Y(y(o, ad))
137135
138136
139-func aj (af) = aa(z(o, af))
137+func ai () = Y(d)
140138
141139
142-func ak () = aa(d)
140+func aj () = Y(c)
143141
144142
145-func al () = aa(c)
143+func ak () = Y(g)
146144
147145
148-func am () = aa(g)
146+func al () = Y(f)
149147
150148
151-func an () = aa(f)
149+func am () = Y(h)
152150
153151
154-func ao () = aa(h)
152+func an () = Y(i)
155153
156154
157-func ap () = aa(i)
155+func ao () = Y(b)
158156
159157
160-func aq () = aa(b)
158+func ap (ad) = Y(y(k, ad))
161159
162160
163-func ar (af) = aa(z(k, af))
161+func aq (ad) = Y(y(j, ad))
164162
165163
166-func as (af) = aa(z(j, af))
164+func ar () = valueOrElse(getBoolean(this, q), false)
167165
168166
169-func at () = valueOrElse(getBoolean(this, q), false)
167+func as () = lastBlock.timestamp
170168
171169
172-func au () = lastBlock.timestamp
170+func at () = (as() / 1000)
173171
174172
175-func av () = (au() / 1000)
176-
177-
178-func aw (af) = {
179- let ax = au()
180- let ay = aj(af)
181- let az = if (((ax - ay) > W))
182- then $Tuple2(ax, ah(af))
183- else $Tuple2(ay, (ah(af) - ai(af)))
184- let aA = az._1
185- let aB = az._2
186- $Tuple2(aA, aB)
173+func au (ad) = {
174+ let av = as()
175+ let aw = ah(ad)
176+ let ax = if (((av - aw) > U))
177+ then $Tuple2(av, af(ad))
178+ else $Tuple2(aw, (af(ad) - ag(ad)))
179+ let ay = ax._1
180+ let az = ax._2
181+ $Tuple2(ay, az)
187182 }
188183
189184
190-func aC (aD) = {
191- let aE = if ((ac() > 0))
192- then Q((ak() + aD), ac())
193- else J
194- aE
185+func aA (aB) = {
186+ let aC = if ((aa() > 0))
187+ then O((ai() + aB), aa())
188+ else H
189+ aC
195190 }
196191
197192
198-func aF () = V(av(), ap())
193+func aD () = T(at(), an())
199194
200195
201-func aG (aH) = if (((ac() + aH) == 0))
202- then am()
196+func aE (aF) = if (((aa() + aF) == 0))
197+ then ak()
203198 else {
204- let aI = (aF() - an())
205- let aJ = if ((0 > aI))
199+ let aG = (aD() - al())
200+ let aH = if ((0 > aG))
206201 then 0
207- else aI
208- let aK = Q((ao() * aJ), (ac() + aH))
209- (am() + aK)
202+ else aG
203+ let aI = O((am() * aH), (aa() + aF))
204+ (ak() + aI)
210205 }
211206
212207
213-func aL (af,aH) = {
214- let aM = (aG(aH) - as(af))
215- (T((ae(af) + aH), aM) + ar(af))
208+func aJ (ad,aF) = {
209+ let aK = (aE(aF) - aq(ad))
210+ (R((ac(ad) + aF), aK) + ap(ad))
216211 }
217212
218213
219-func aN (af,aH) = {
220- let aO = aG(aH)
221- let aP = av()
222- let aQ = if ((af != ""))
223- then $Tuple2(aL(af, aH), aO)
214+func aL (ad,aF) = {
215+ let aM = aE(aF)
216+ let aN = at()
217+ let aO = if ((ad != ""))
218+ then $Tuple2(aJ(ad, aF), aM)
224219 else $Tuple2(0, 0)
225- let aR = aQ._1
226- let aS = aQ._2
227- $Tuple4(aO, aP, aR, aS)
220+ let aP = aO._1
221+ let aQ = aO._2
222+ $Tuple4(aM, aN, aP, aQ)
228223 }
229224
230225
231-func aT (aU,aV) = [IntegerEntry(z(l, aU), (ae(aU) + aV))]
226+func aR (aS,aT) = [IntegerEntry(y(l, aS), (ac(aS) + aT))]
232227
233228
234-func aW (aU,aX) = [IntegerEntry(z(n, aU), aX)]
229+func aU (aS,aV) = [IntegerEntry(y(n, aS), aV)]
235230
236231
237-func aY (aU,aX) = [IntegerEntry(z(m, aU), aX)]
232+func aW (aS,aV) = [IntegerEntry(y(m, aS), aV)]
238233
239234
240-func aZ (aV) = [IntegerEntry(d, (ak() + aV))]
241-
242-
243-func ba (aV) = {
244- let bb = al()
245- if (((bb + aV) >= 0))
246- then [IntegerEntry(c, (bb + aV))]
247- else throw(((("Vault: can not update locked balance. Balance: " + toString(bb)) + " change: ") + toString(aV)))
235+func aX (aT) = {
236+ let aY = ai()
237+ if (((aY + aT) >= 0))
238+ then [IntegerEntry(d, (aY + aT))]
239+ else throw(((("Vault: can not update free balance. Balance: " + toString(aY)) + " change: ") + toString(aT)))
248240 }
249241
250242
251-func bc (aV) = {
252- let bb = al()
253- if (((bb + aV) >= 0))
254- then [IntegerEntry(c, (bb + aV))]
255- else [IntegerEntry(c, 0)]
243+func aZ (aT) = {
244+ let aY = aj()
245+ if (((aY + aT) >= 0))
246+ then [IntegerEntry(c, (aY + aT))]
247+ else throw(((("Vault: can not update locked balance. Balance: " + toString(aY)) + " change: ") + toString(aT)))
256248 }
257249
258250
259-func bd (aV) = [IntegerEntry(a, (ac() + aV))]
251+func ba (aT) = [IntegerEntry(a, (aa() + aT))]
260252
261253
262-func be (aX) = [IntegerEntry(e, aX)]
254+func bb (aV) = [IntegerEntry(e, aV)]
263255
264256
265-func bf (aU,bg,bh) = [IntegerEntry(z(o, aU), bg), IntegerEntry(z(p, aU), bh)]
257+func bc (aS,bd,be) = [IntegerEntry(y(o, aS), bd), IntegerEntry(y(p, aS), be)]
266258
267259
268-func bi (bj) = [IntegerEntry(b, (aq() + bj))]
260+func bf (bg) = [IntegerEntry(b, (ao() + bg))]
269261
270262
271-func bk (bl) = [IntegerEntry(h, bl)]
263+func bh (bi) = [IntegerEntry(h, bi)]
272264
273265
274-func bm (bn,bo) = [IntegerEntry(f, bn), IntegerEntry(i, bo)]
266+func bj (bk,bl) = [IntegerEntry(f, bk), IntegerEntry(i, bl)]
275267
276268
277-func bp (bq) = [IntegerEntry(g, bq)]
269+func bm (bn) = [IntegerEntry(g, bn)]
278270
279271
280-func br (af,bs,bt) = [IntegerEntry(z(k, af), bs), IntegerEntry(z(j, af), bt)]
272+func bo (ad,bp,bq) = [IntegerEntry(y(k, ad), bp), IntegerEntry(y(j, ad), bq)]
281273
282274
283-@Callable(bu)
284-func initialize (bv) = if (at())
285- then throw("Already initialized")
286- else [StringEntry(r, bv), BooleanEntry(q, true)]
275+@Callable(br)
276+func initialize (bs) = if (if (ar())
277+ then true
278+ else (br.caller != this))
279+ then throw("Unable to initialize")
280+ else [StringEntry(r, toString(valueOrErrorMessage(addressFromString(bs), "Invalid coordinator address"))), BooleanEntry(q, true)]
287281
288282
289283
290-@Callable(bu)
284+@Callable(br)
291285 func stake () = {
292- let af = toString(bu.caller)
293- let O = P(bu.payments[0].amount)
294- if (if ((bu.payments[0].assetId != H()))
286+ let ad = toString(br.caller)
287+ let M = N(br.payments[0].amount)
288+ if (if (if ((br.payments[0].assetId != F()))
295289 then true
296- else !(at()))
290+ else (size(br.payments) != 1))
291+ then true
292+ else !(ar()))
297293 then throw("Invalid call to stake")
298294 else {
299- let bw = aN(af, 0)
300- let aO = bw._1
301- let aP = bw._2
302- let aR = bw._3
303- let aS = bw._4
304- let bx = ad()
305- let by = ag(af)
306- let bz = Q(O, bx)
307- let bA = Q((T(bz, bx) + T(ae(af), by)), (bz + ae(af)))
308- let bB = (bz + ae(af))
309- let bC = T(bB, X)
310- let bD = invoke(I(), "deposit", nil, [AttachedPayment(H(), N(O))])
311- if ((bD == bD))
312- then (((((((br(af, aR, aS) ++ bp(aO)) ++ bm(aP, ap())) ++ aZ(O)) ++ aT(af, bz)) ++ aY(af, bA)) ++ aW(af, bC)) ++ bd(bz))
295+ let bt = aL(ad, 0)
296+ let aM = bt._1
297+ let aN = bt._2
298+ let aP = bt._3
299+ let aQ = bt._4
300+ let bu = ab()
301+ let bv = ae(ad)
302+ let bw = O(M, bu)
303+ let bx = O((R(bw, bu) + R(ac(ad), bv)), (bw + ac(ad)))
304+ let by = (bw + ac(ad))
305+ let bz = R(by, V)
306+ let bA = invoke(G(), "deposit", nil, [AttachedPayment(F(), L(M))])
307+ if ((bA == bA))
308+ then (((((((bo(ad, aP, aQ) ++ bm(aM)) ++ bj(aN, an())) ++ aX(M)) ++ aR(ad, bw)) ++ aW(ad, bx)) ++ aU(ad, bz)) ++ ba(bw))
313309 else throw("Strict value is not equal to itself.")
314310 }
315311 }
316312
317313
318314
319-@Callable(bu)
320-func unStake (O) = {
321- let af = toString(bu.caller)
322- let bE = P(O)
323- if (if ((bu.payments != nil))
315+@Callable(br)
316+func unStake (M) = {
317+ let ad = toString(br.caller)
318+ let bB = N(M)
319+ if (if (if ((br.payments != nil))
324320 then true
325- else !(at()))
321+ else (0 >= bB))
322+ then true
323+ else !(ar()))
326324 then throw("Invalid call to unStake")
327325 else {
328- let bF = aN(af, 0)
329- let aO = bF._1
330- let aP = bF._2
331- let aR = bF._3
332- let aS = bF._4
333- let bG = aw(af)
334- let aA = bG._1
335- let aB = bG._2
336- let bz = Q(bE, ad())
337- if ((bz > aB))
326+ let bC = aL(ad, 0)
327+ let aM = bC._1
328+ let aN = bC._2
329+ let aP = bC._3
330+ let aQ = bC._4
331+ let bD = au(ad)
332+ let ay = bD._1
333+ let az = bD._2
334+ let bw = O(bB, ab())
335+ if ((bw > az))
338336 then throw("Invalid call to unStake: withdraw over limit")
339337 else {
340- let bH = (ai(af) + bz)
341- if ((bE > ak()))
338+ let bE = (ag(ad) + bw)
339+ if ((bB > ai()))
342340 then throw("Invalid call to unStake: balance too low")
343341 else {
344- let bI = invoke(I(), "withdraw", [toBase58String(H()), N(bE)], nil)
345- if ((bI == bI))
346- then (((((((br(af, aR, aS) ++ bp(aO)) ++ bm(aP, ap())) ++ aZ(-(bE))) ++ aT(af, -(bz))) ++ bd(-(bz))) ++ bf(af, aA, bH)) ++ [ScriptTransfer(bu.caller, N(bE), H())])
342+ let bF = invoke(G(), "withdraw", [toBase58String(F()), L(bB)], nil)
343+ if ((bF == bF))
344+ then (((((((bo(ad, aP, aQ) ++ bm(aM)) ++ bj(aN, an())) ++ aX(-(bB))) ++ aR(ad, -(bw))) ++ ba(-(bw))) ++ bc(ad, ay, bE)) ++ [ScriptTransfer(br.caller, L(bB), F())])
347345 else throw("Strict value is not equal to itself.")
348346 }
349347 }
350348 }
351349 }
352350
353351
354352
355-@Callable(bu)
353+@Callable(br)
356354 func withdrawRewards () = {
357- let af = toString(bu.caller)
358- let bJ = aN(af, 0)
359- let aO = bJ._1
360- let aP = bJ._2
361- let aR = bJ._3
362- let aS = bJ._4
363- if (if ((0 >= aR))
355+ let ad = toString(br.caller)
356+ let bG = aL(ad, 0)
357+ let aM = bG._1
358+ let aN = bG._2
359+ let aP = bG._3
360+ let aQ = bG._4
361+ if (if ((0 >= aP))
364362 then true
365- else !(at()))
363+ else !(ar()))
366364 then throw("No reward: Vault")
367- else ((((br(af, 0, aS) ++ bp(aO)) ++ bm(aP, ap())) ++ bi(-(aR))) ++ [ScriptTransfer(bu.caller, aR, F())])
365+ else ((((bo(ad, 0, aQ) ++ bm(aM)) ++ bj(aN, an())) ++ bf(-(aP))) ++ [ScriptTransfer(br.caller, aP, D())])
368366 }
369367
370368
371369
372-@Callable(bu)
370+@Callable(br)
373371 func addFree () = {
374- let O = P(bu.payments[0].amount)
375- if (if (if ((bu.payments[0].assetId != H()))
372+ let M = N(br.payments[0].amount)
373+ if (if (if (if ((br.payments[0].assetId != F()))
376374 then true
377- else !(at()))
375+ else (size(br.payments) != 1))
378376 then true
379- else !(if (D(toString(bu.caller)))
377+ else !(ar()))
378+ then true
379+ else !(if (C(toString(br.caller)))
380380 then true
381- else (bu.caller == G())))
381+ else (br.caller == E())))
382382 then throw("Invalid addFree params")
383383 else {
384- let aE = if ((ac() > 0))
385- then Q((ak() + O), ac())
386- else J
387- let bI = invoke(I(), "deposit", nil, [AttachedPayment(H(), N(O))])
388- if ((bI == bI))
389- then (aZ(O) ++ be(aE))
384+ let aC = aA(M)
385+ let bA = invoke(G(), "deposit", nil, [AttachedPayment(F(), L(M))])
386+ if ((bA == bA))
387+ then (aX(M) ++ bb(aC))
390388 else throw("Strict value is not equal to itself.")
391389 }
392390 }
393391
394392
395393
396-@Callable(bu)
394+@Callable(br)
397395 func addLocked () = {
398- let O = P(bu.payments[0].amount)
399- if (if (if ((bu.payments[0].assetId != H()))
396+ let M = N(br.payments[0].amount)
397+ if (if (if (if ((br.payments[0].assetId != F()))
400398 then true
401- else !(at()))
399+ else (size(br.payments) != 1))
402400 then true
403- else !(if (D(toString(bu.caller)))
401+ else !(ar()))
402+ then true
403+ else !(if (C(toString(br.caller)))
404404 then true
405- else (bu.caller == G())))
405+ else (br.caller == E())))
406406 then throw("Invalid addLocked params")
407407 else {
408- let bI = invoke(I(), "deposit", nil, [AttachedPayment(H(), N(O))])
409- if ((bI == bI))
410- then ba(O)
408+ let bF = invoke(G(), "deposit", nil, [AttachedPayment(F(), L(M))])
409+ if ((bF == bF))
410+ then aZ(M)
411411 else throw("Strict value is not equal to itself.")
412412 }
413413 }
414414
415415
416416
417-@Callable(bu)
418-func exchangeFreeAndLocked (O) = if (if (!(at()))
417+@Callable(br)
418+func exchangeFreeAndLocked (M) = if (if (!(ar()))
419419 then true
420- else !(if (D(toString(bu.caller)))
421- then true
422- else (bu.caller == G())))
420+ else !(C(toString(br.caller))))
423421 then throw("Invalid exchangeFreeAndLocked params")
424422 else {
425- let bE = P(O)
426- let bK = -(bE)
427- let aE = aC(bK)
428- ((bc(bE) ++ aZ(bK)) ++ be(aE))
423+ let bB = N(M)
424+ let aC = aA(-(bB))
425+ ((aZ(bB) ++ aX(-(bB))) ++ bb(aC))
429426 }
430427
431428
432429
433-@Callable(bu)
434-func withdrawLocked (O) = if (if (if (!(at()))
430+@Callable(br)
431+func withdrawLocked (M) = if (if (if (!(ar()))
435432 then true
436- else (0 >= O))
433+ else (0 >= M))
437434 then true
438- else !(D(toString(bu.caller))))
435+ else !(C(toString(br.caller))))
439436 then throw("Invalid withdrawLocked params")
440437 else {
441- let bE = P(O)
442- let bI = invoke(I(), "withdraw", [toBase58String(H()), N(bE)], nil)
443- if ((bI == bI))
444- then {
445- let bL = al()
446- let bM = if ((bE > bL))
447- then $Tuple2(bL, (bE - bL))
448- else $Tuple2(bE, 0)
449- let bN = bM._1
450- let bO = bM._2
451- (((if ((bO > 0))
452- then {
453- let aE = aC(-(bO))
454- (aZ(-(bO)) ++ be(aE))
455- }
456- else nil) ++ ba(-(bN))) ++ [ScriptTransfer(bu.caller, N(bE), H())])
457- }
438+ let bB = N(M)
439+ let bF = invoke(G(), "withdraw", [toBase58String(F()), L(bB)], nil)
440+ if ((bF == bF))
441+ then (aZ(-(bB)) ++ [ScriptTransfer(br.caller, L(bB), F())])
458442 else throw("Strict value is not equal to itself.")
459443 }
460444
461445
462446
463-@Callable(bu)
464-func addRewards () = if (if ((bu.payments[0].assetId != F()))
447+@Callable(br)
448+func addRewards () = if (if (if ((br.payments[0].assetId != D()))
465449 then true
466- else !(at()))
450+ else (size(br.payments) != 1))
451+ then true
452+ else !(ar()))
467453 then throw("Invalid addRewards params")
468454 else {
469- let bs = bu.payments[0].amount
470- let aO = aN(L, M)._1
471- let bP = av()
472- let bQ = if ((bP > ap()))
473- then (bs / K)
455+ let bp = br.payments[0].amount
456+ let aM = aL(J, K)._1
457+ let bH = at()
458+ let bI = if ((bH > an()))
459+ then (bp / I)
474460 else {
475- let bR = (ap() - bP)
476- let bS = (ao() * bR)
477- ((bs + bS) / K)
461+ let bJ = (an() - bH)
462+ let bK = (am() * bJ)
463+ ((bp + bK) / I)
478464 }
479- (((bk(bQ) ++ bp(aO)) ++ bi(bs)) ++ bm(bP, (bP + K)))
465+ (((bh(bI) ++ bm(aM)) ++ bf(bp)) ++ bj(bH, (bH + I)))
480466 }
481467
482468
483469
484-@Callable(bu)
485-func view_reward (af) = {
486- let bb = ae(af)
487- let bT = T(ag(af), bb)
488- let bU = T(ad(), bb)
489- let bV = (bU - bT)
490- throw(toString(bV))
470+@Callable(br)
471+func ackRewards () = {
472+ let bL = invoke(G(), "claimProfit", [toBase58String(F())], nil)
473+ if ((bL == bL))
474+ then {
475+ let bM = {
476+ let bN = bL
477+ if ($isInstanceOf(bN, "Int"))
478+ then {
479+ let bO = bN
480+ N(bO)
481+ }
482+ else throw("Invalid claimProfit response")
483+ }
484+ let bP = if ((bM > 0))
485+ then {
486+ let aC = aA(bM)
487+ let bA = invoke(G(), "deposit", nil, [AttachedPayment(F(), L(bM))])
488+ if ((bA == bA))
489+ then (aX(bM) ++ bb(aC))
490+ else throw("Strict value is not equal to itself.")
491+ }
492+ else nil
493+ if ((bP == bP))
494+ then bP
495+ else throw("Strict value is not equal to itself.")
496+ }
497+ else throw("Strict value is not equal to itself.")
491498 }
492499
493500
494501
495-@Callable(bu)
496-func view_stakingReward (af) = {
497- let aR = aN(af, 0)._3
498- throw(toString(N(aR)))
502+@Callable(br)
503+func view_reward (ad) = {
504+ let aY = ac(ad)
505+ let bQ = R(ae(ad), aY)
506+ let bR = R(ab(), aY)
507+ let bS = (bR - bQ)
508+ throw(toString(bS))
499509 }
500510
501511
502512
503-@Callable(bu)
504-func view_withdrawLimit (af) = {
505- let aB = aw(af)._2
506- let bW = N(T(aB, ad()))
507- throw(toString(bW))
513+@Callable(br)
514+func view_stakingReward (ad) = {
515+ let aP = aL(ad, 0)._3
516+ throw(toString(L(aP)))
508517 }
509518
510519
511-@Verifier(bX)
512-func bY () = sigVerify(bX.bodyBytes, bX.proofs[0], E())
520+
521+@Callable(br)
522+func view_withdrawLimit (ad) = {
523+ let az = au(ad)._2
524+ let bT = L(R(az, ab()))
525+ throw(toString(bT))
526+ }
527+
528+
529+@Verifier(bU)
530+func bV () = {
531+ let bW = getString(this, r)
532+ if (isDefined(bW))
533+ then {
534+ let bX = getString(addressFromStringValue(value(bW)), v)
535+ if (isDefined(bX))
536+ then valueOrElse(getBoolean(addressFromStringValue(value(bX)), ((("status_" + toString(this)) + "_") + toBase58String(bU.id))), false)
537+ else throw("unable to verify: admin not set in coordinator")
538+ }
539+ else sigVerify(bU.bodyBytes, bU.proofs[0], bU.senderPublicKey)
540+ }
513541

github/deemru/w8io/c3f4982 
147.35 ms