tx · 7Sn8aJWrWUwG7L5o8ps4qXkCqXcDXAsBujNT1dxt1J8j

3NADcxHXbecCheinqFbvhDjfzZhsMFZJUuH:  -0.03700000 Waves

2022.12.12 16:42 [2357198] smart account 3NADcxHXbecCheinqFbvhDjfzZhsMFZJUuH > SELF 0.00000000 Waves

{ "type": 13, "id": "7Sn8aJWrWUwG7L5o8ps4qXkCqXcDXAsBujNT1dxt1J8j", "fee": 3700000, "feeAssetId": null, "timestamp": 1670852621373, "version": 2, "chainId": 84, "sender": "3NADcxHXbecCheinqFbvhDjfzZhsMFZJUuH", "senderPublicKey": "DKfzQgvVdTqPHgGbdZptWYA8G5xVfmSMAwL3UnhwQmdy", "proofs": [ "3mJpkjgcqGtFyqYpcQN9RuNGB19hpP8k22dkDeTUjgjbmmziZb4N7fKgRdPPQixptSBbTpsZeEfzNvvHd7wi8j8d" ], "script": "base64:BgIzCAISAwoBCBIAEgMKAQESABIDCgEEEgMKAQESAwoBARIDCgEBEgMKAQESAwoBCBIDCgEIQgANa190b3RhbFN1cHBseQINa190b3RhbFN1cHBseQAPa19sb2NrZWRCYWxhbmNlAg9rX2xvY2tlZEJhbGFuY2UAEGtfdkxvY2tlZEJhbGFuY2UCEGtfdkxvY2tlZEJhbGFuY2UADWtfZnJlZUJhbGFuY2UCDWtfZnJlZUJhbGFuY2UAFWtfZnJlZUJhbGFuY2VCb3Jyb3dlZAIVa19mcmVlQmFsYW5jZUJvcnJvd2VkAAZrX3JhdGUCBmtfcmF0ZQAJa19iYWxhbmNlAglrX2JhbGFuY2UADmtfYXZlcmFnZV9yYXRlAg5rX2F2ZXJhZ2VfcmF0ZQAQa193aXRoZHJhd19saW1pdAIQa193aXRoZHJhd19saW1pdAAUa19sYXN0X3dpdGhkcmF3X2RhdGUCFGtfbGFzdF93aXRoZHJhd19kYXRlABRrX3dpdGhkcmF3X2luX3BlcmlvZAIUa193aXRoZHJhd19pbl9wZXJpb2QADWtfaW5pdGlhbGl6ZWQCDWtfaW5pdGlhbGl6ZWQAFGtfY29vcmRpbmF0b3JBZGRyZXNzAhRrX2Nvb3JkaW5hdG9yQWRkcmVzcwAFa19hbW0CBWtfYW1tAA1rX3F1b3RlX2Fzc2V0Ag1rX3F1b3RlX2Fzc2V0ABJrX2FkbWluX3B1YmxpY19rZXkCEmtfYWRtaW5fcHVibGljX2tleQAPa19hZG1pbl9hZGRyZXNzAg9rX2FkbWluX2FkZHJlc3MAEWtfbWFuYWdlcl9hZGRyZXNzAhFrX21hbmFnZXJfYWRkcmVzcwAUa19jb2xsYXRlcmFsX2FkZHJlc3MCFGtfY29sbGF0ZXJhbF9hZGRyZXNzAQ50b0NvbXBvc2l0ZUtleQIEX2tleQhfYWRkcmVzcwkArAICCQCsAgIFBF9rZXkCAV8FCF9hZGRyZXNzAQtjb29yZGluYXRvcgAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBRRrX2Nvb3JkaW5hdG9yQWRkcmVzcwITQ29vcmRpbmF0b3Igbm90IHNldAELaXNXaGl0ZWxpc3QBCF9hZGRyZXNzCQELdmFsdWVPckVsc2UCCQCbCAIJAQtjb29yZGluYXRvcgAJAQ50b0NvbXBvc2l0ZUtleQIFBWtfYW1tBQhfYWRkcmVzcwcBDmFkbWluUHVibGljS2V5AAkA2QQBCQERQGV4dHJOYXRpdmUoMTA1MykCCQELY29vcmRpbmF0b3IABRJrX2FkbWluX3B1YmxpY19rZXkBDGFkbWluQWRkcmVzcwAJAKYIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIJAQtjb29yZGluYXRvcgAFD2tfYWRtaW5fYWRkcmVzcwIVQWRtaW4gYWRkcmVzcyBub3Qgc2V0AQpxdW90ZUFzc2V0AAkA2QQBCQERQGV4dHJOYXRpdmUoMTA1MykCCQELY29vcmRpbmF0b3IABQ1rX3F1b3RlX2Fzc2V0AQ5tYW5hZ2VyQWRkcmVzcwAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCCQELY29vcmRpbmF0b3IABRFrX21hbmFnZXJfYWRkcmVzcwIPTWFuYWdlciBub3Qgc2V0ARFjb2xsYXRlcmFsQWRkcmVzcwAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCCQELY29vcmRpbmF0b3IABRRrX2NvbGxhdGVyYWxfYWRkcmVzcwIaQ29sbGF0ZXJhbCBNYW5hZ2VyIG5vdCBzZXQADERFQ0lNQUxfVU5JVAkAaAIAAQkAaAIJAGgCCQBoAgkAaAIJAGgCCQBoAgkAaAIACgAKAAoACgAKAAoACgAKAAhEVVJBVElPTgkAaAIJAGgCADwAPAAYAApOT19BRERSRVNTAgAACU5PX1NUQUtFUgAAARB1c2RuRnJvbURlY2ltYWxzAQdfYW1vdW50CQBpAgUHX2Ftb3VudABkAQ51c2RuVG9EZWNpbWFscwEHX2Ftb3VudAkAaAIFB19hbW91bnQAZAEEZGl2ZAICX3gCX3kJAG4EBQJfeAUMREVDSU1BTF9VTklUBQJfeQUISEFMRkVWRU4BBG11bGQCAl94Al95CQBuBAUCX3gFAl95BQxERUNJTUFMX1VOSVQFCEhBTEZFVkVOAQNhYnMBAl94AwkAZgIFAl94AAAFAl94CQEBLQEFAl94AQRtaW52AgJfeAJfeQMJAGYCBQJfeAUCX3kFAl95BQJfeAAPV0lUSERSQVdfUEVSSU9ECQBoAgCAowUA6AcAE1dJVEhEUkFXX1BFUl9QRVJJT0QJAQRkaXZkAgkAaAIAAQUMREVDSU1BTF9VTklUCQBoAgAEBQxERUNJTUFMX1VOSVQBA2ludAEBawkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMFAWsJAKwCAgINbm8gdmFsdWUgZm9yIAUBawEEaW50MAEBawkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFrAAABBGludDEBAWsJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUBawUMREVDSU1BTF9VTklUAQt0b3RhbFN1cHBseQAJAQRpbnQwAQUNa190b3RhbFN1cHBseQEEcmF0ZQAJAQRpbnQxAQUGa19yYXRlAQliYWxhbmNlT2YBB19zdGFrZXIJAQRpbnQwAQkBDnRvQ29tcG9zaXRlS2V5AgUJa19iYWxhbmNlBQdfc3Rha2VyAQthdmVyYWdlUmF0ZQEHX3N0YWtlcgkBBGludDABCQEOdG9Db21wb3NpdGVLZXkCBQ5rX2F2ZXJhZ2VfcmF0ZQUHX3N0YWtlcgENd2l0aGRyYXdMaW1pdAEHX3N0YWtlcgkBBGludDABCQEOdG9Db21wb3NpdGVLZXkCBRBrX3dpdGhkcmF3X2xpbWl0BQdfc3Rha2VyARF3aXRoZHJhd25JblBlcmlvZAEHX3N0YWtlcgkBBGludDABCQEOdG9Db21wb3NpdGVLZXkCBRRrX3dpdGhkcmF3X2luX3BlcmlvZAUHX3N0YWtlcgERbGFzdFdpdGhkcmF3bkRhdGUBB19zdGFrZXIJAQRpbnQwAQkBDnRvQ29tcG9zaXRlS2V5AgUUa19sYXN0X3dpdGhkcmF3X2RhdGUFB19zdGFrZXIBC2ZyZWVCYWxhbmNlAAkBBGludDABBQ1rX2ZyZWVCYWxhbmNlARNmcmVlQmFsYW5jZUJvcnJvd2VkAAkBBGludDABBRVrX2ZyZWVCYWxhbmNlQm9ycm93ZWQBDWxvY2tlZEJhbGFuY2UACQEEaW50MAEFD2tfbG9ja2VkQmFsYW5jZQEOdkxvY2tlZEJhbGFuY2UACQEEaW50MAEFEGtfdkxvY2tlZEJhbGFuY2UBC2luaXRpYWxpemVkAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQ1rX2luaXRpYWxpemVkBwEUZ2V0V2l0aGRyYXdMaW1pdExlZnQBB19zdGFrZXIEC2N1cnJlbnREYXRlCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQQbGFzdFdpdGhkcmF3RGF0ZQkBEWxhc3RXaXRoZHJhd25EYXRlAQUHX3N0YWtlcgQLJHQwNDQ1NjQ3MjADCQBmAgkAZQIFC2N1cnJlbnREYXRlBRBsYXN0V2l0aGRyYXdEYXRlBQ9XSVRIRFJBV19QRVJJT0QJAJQKAgULY3VycmVudERhdGUJAQ13aXRoZHJhd0xpbWl0AQUHX3N0YWtlcgkAlAoCBRBsYXN0V2l0aGRyYXdEYXRlCQBlAgkBDXdpdGhkcmF3TGltaXQBBQdfc3Rha2VyCQERd2l0aGRyYXduSW5QZXJpb2QBBQdfc3Rha2VyBBRuZXdMYXN0V2l0aGRyYXduRGF0ZQgFCyR0MDQ0NTY0NzIwAl8xBBF3aXRoZHJhd0xpbWl0TGVmdAgFCyR0MDQ0NTY0NzIwAl8yCQCUCgIFFG5ld0xhc3RXaXRoZHJhd25EYXRlBRF3aXRoZHJhd0xpbWl0TGVmdAEOY29tcHV0ZU5ld1JhdGUBE19hbW91bnRPZlF1b3RlQXNzZXQEB25ld1JhdGUDCQBmAgkBC3RvdGFsU3VwcGx5AAAACQEEZGl2ZAIJAGQCCQELZnJlZUJhbGFuY2UABRNfYW1vdW50T2ZRdW90ZUFzc2V0CQELdG90YWxTdXBwbHkABQxERUNJTUFMX1VOSVQFB25ld1JhdGUBEXVwZGF0ZVVzZXJCYWxhbmNlAgVfdXNlcgdfY2hhbmdlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBQlrX2JhbGFuY2UFBV91c2VyCQBkAgkBCWJhbGFuY2VPZgEFBV91c2VyBQdfY2hhbmdlBQNuaWwBFHNldFVzZXJXaXRoZHJhd0xpbWl0AgVfdXNlcgVfcmF0ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUQa193aXRoZHJhd19saW1pdAUFX3VzZXIFBV9yYXRlBQNuaWwBEnNldFVzZXJBdmVyYWdlUmF0ZQIFX3VzZXIFX3JhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFDmtfYXZlcmFnZV9yYXRlBQVfdXNlcgUFX3JhdGUFA25pbAERdXBkYXRlRnJlZUJhbGFuY2UBB19jaGFuZ2UJAMwIAgkBDEludGVnZXJFbnRyeQIFDWtfZnJlZUJhbGFuY2UJAGQCCQELZnJlZUJhbGFuY2UABQdfY2hhbmdlBQNuaWwBGXVwZGF0ZUZyZWVCb3Jyb3dlZEJhbGFuY2UBB19jaGFuZ2UED2JvcnJvd2VkQmFsYW5jZQkBE2ZyZWVCYWxhbmNlQm9ycm93ZWQAAwkAZwIJAGQCBQ9ib3Jyb3dlZEJhbGFuY2UFB19jaGFuZ2UAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUVa19mcmVlQmFsYW5jZUJvcnJvd2VkCQBkAgUPYm9ycm93ZWRCYWxhbmNlBQdfY2hhbmdlBQNuaWwJAAIBCQCsAgIJAKwCAgkArAICAjZWYXVsdDogY2FuIG5vdCB1cGRhdGUgYm9ycm93ZWQgZnJlZSBiYWxhbmNlLiBCYWxhbmNlOiAJAKQDAQUPYm9ycm93ZWRCYWxhbmNlAgkgY2hhbmdlOiAJAKQDAQUHX2NoYW5nZQETdXBkYXRlTG9ja2VkQmFsYW5jZQEHX2NoYW5nZQQHYmFsYW5jZQkBDWxvY2tlZEJhbGFuY2UAAwkAZwIJAGQCBQdiYWxhbmNlBQdfY2hhbmdlAAAJAMwIAgkBDEludGVnZXJFbnRyeQIFD2tfbG9ja2VkQmFsYW5jZQkAZAIFB2JhbGFuY2UFB19jaGFuZ2UFA25pbAkAAgEJAKwCAgkArAICCQCsAgICL1ZhdWx0OiBjYW4gbm90IHVwZGF0ZSBsb2NrZWQgYmFsYW5jZS4gQmFsYW5jZTogCQCkAwEFB2JhbGFuY2UCCSBjaGFuZ2U6IAkApAMBBQdfY2hhbmdlARR1cGRhdGVWTG9ja2VkQmFsYW5jZQEHX2NoYW5nZQQHYmFsYW5jZQkBDnZMb2NrZWRCYWxhbmNlAAMJAGcCCQBkAgUHYmFsYW5jZQUHX2NoYW5nZQAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBrX3ZMb2NrZWRCYWxhbmNlCQBkAgUHYmFsYW5jZQUHX2NoYW5nZQUDbmlsCQACAQkArAICCQCsAgIJAKwCAgIxVmF1bHQ6IGNhbiBub3QgdXBkYXRlIHYtbG9ja2VkIGJhbGFuY2UuIEJhbGFuY2U6IAkApAMBBQdiYWxhbmNlAgkgY2hhbmdlOiAJAKQDAQUHX2NoYW5nZQERdXBkYXRlVG90YWxTdXBwbHkBB19jaGFuZ2UJAMwIAgkBDEludGVnZXJFbnRyeQIFDWtfdG90YWxTdXBwbHkJAGQCCQELdG90YWxTdXBwbHkABQdfY2hhbmdlBQNuaWwBCnVwZGF0ZVJhdGUBBV9yYXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQZrX3JhdGUFBV9yYXRlBQNuaWwBFXNldFVzZXJXaXRoZHJhd1BhcmFtcwMFX3VzZXIRX2xhc3RXaXRoZHJhd0RhdGUKX3dpdGhkcmF3bgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUUa19sYXN0X3dpdGhkcmF3X2RhdGUFBV91c2VyBRFfbGFzdFdpdGhkcmF3RGF0ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUUa193aXRoZHJhd19pbl9wZXJpb2QFBV91c2VyBQpfd2l0aGRyYXduBQNuaWwLAWkBCmluaXRpYWxpemUBDF9jb29yZGluYXRvcgMJAQtpbml0aWFsaXplZAAJAAIBAhNBbHJlYWR5IGluaXRpYWxpemVkCQDMCAIJAQtTdHJpbmdFbnRyeQIFFGtfY29vcmRpbmF0b3JBZGRyZXNzBQxfY29vcmRpbmF0b3IJAMwIAgkBDEJvb2xlYW5FbnRyeQIFDWtfaW5pdGlhbGl6ZWQGBQNuaWwBaQEFc3Rha2UABAdfc3Rha2VyCQClCAEIBQFpBmNhbGxlcgQHX2Ftb3VudAkBDnVzZG5Ub0RlY2ltYWxzAQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQDAwkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCQEKcXVvdGVBc3NldAAGCQEBIQEJAQtpbml0aWFsaXplZAAJAAIBAhVJbnZhbGlkIGNhbGwgdG8gc3Rha2UEC2N1cnJlbnRSYXRlCQEEcmF0ZQAED3ByZXZBdmVyYWdlUmF0ZQkBC2F2ZXJhZ2VSYXRlAQUHX3N0YWtlcgQHdkFtb3VudAkBBGRpdmQCBQdfYW1vdW50BQtjdXJyZW50UmF0ZQQObmV3QXZlcmFnZVJhdGUJAQRkaXZkAgkAZAIJAQRtdWxkAgUHdkFtb3VudAULY3VycmVudFJhdGUJAQRtdWxkAgkBCWJhbGFuY2VPZgEFB19zdGFrZXIFD3ByZXZBdmVyYWdlUmF0ZQkAZAIFC2N1cnJlbnRSYXRlBQ9wcmV2QXZlcmFnZVJhdGUED25ld1RvdGFsQmFsYW5jZQkAZAIFB3ZBbW91bnQJAQliYWxhbmNlT2YBBQdfc3Rha2VyBBBuZXdXaXRoZHJhd0xpbWl0CQEEbXVsZAIFD25ld1RvdGFsQmFsYW5jZQUTV0lUSERSQVdfUEVSX1BFUklPRAQFc3Rha2UJAPwHBAkBDm1hbmFnZXJBZGRyZXNzAAIHZGVwb3NpdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKcXVvdGVBc3NldAAJARB1c2RuRnJvbURlY2ltYWxzAQUHX2Ftb3VudAUDbmlsAwkAAAIFBXN0YWtlBQVzdGFrZQkAzggCCQDOCAIJAM4IAgkAzggCCQERdXBkYXRlRnJlZUJhbGFuY2UBBQdfYW1vdW50CQERdXBkYXRlVXNlckJhbGFuY2UCBQdfc3Rha2VyBQd2QW1vdW50CQESc2V0VXNlckF2ZXJhZ2VSYXRlAgUHX3N0YWtlcgUObmV3QXZlcmFnZVJhdGUJARRzZXRVc2VyV2l0aGRyYXdMaW1pdAIFB19zdGFrZXIFEG5ld1dpdGhkcmF3TGltaXQJARF1cGRhdGVUb3RhbFN1cHBseQEFB3ZBbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEHdW5TdGFrZQEHX2Ftb3VudAQHX3N0YWtlcgkApQgBCAUBaQZjYWxsZXIEEmFtb3VudE9mUXVvdGVBc3NldAkBDnVzZG5Ub0RlY2ltYWxzAQUHX2Ftb3VudAMDCQECIT0CCAUBaQhwYXltZW50cwUDbmlsBgkBASEBCQELaW5pdGlhbGl6ZWQACQACAQIXSW52YWxpZCBjYWxsIHRvIHVuU3Rha2UECyR0MDg4OTM5MDM0CQEUZ2V0V2l0aGRyYXdMaW1pdExlZnQBBQdfc3Rha2VyBBRuZXdMYXN0V2l0aGRyYXduRGF0ZQgFCyR0MDg4OTM5MDM0Al8xBBF3aXRoZHJhd0xpbWl0TGVmdAgFCyR0MDg4OTM5MDM0Al8yBAd2QW1vdW50CQEEZGl2ZAIFEmFtb3VudE9mUXVvdGVBc3NldAkBBHJhdGUAAwkAZgIFB3ZBbW91bnQFEXdpdGhkcmF3TGltaXRMZWZ0CQACAQIsSW52YWxpZCBjYWxsIHRvIHVuU3Rha2U6IHdpdGhkcmF3IG92ZXIgbGltaXQEFG5ld1dpdGhkcmF3bkluUGVyaW9kCQBkAgkBEXdpdGhkcmF3bkluUGVyaW9kAQUHX3N0YWtlcgUHdkFtb3VudAMJAGYCBRJhbW91bnRPZlF1b3RlQXNzZXQJAQtmcmVlQmFsYW5jZQAJAAIBAihJbnZhbGlkIGNhbGwgdG8gdW5TdGFrZTogYmFsYW5jZSB0b28gbG93BAd1bnN0YWtlCQD8BwQJAQ5tYW5hZ2VyQWRkcmVzcwACCHdpdGhkcmF3CQDMCAIJANgEAQkBCnF1b3RlQXNzZXQACQDMCAIJARB1c2RuRnJvbURlY2ltYWxzAQUSYW1vdW50T2ZRdW90ZUFzc2V0BQNuaWwFA25pbAMJAAACBQd1bnN0YWtlBQd1bnN0YWtlCQDOCAIJAM4IAgkAzggCCQDOCAIJARF1cGRhdGVGcmVlQmFsYW5jZQEJAQEtAQUSYW1vdW50T2ZRdW90ZUFzc2V0CQERdXBkYXRlVXNlckJhbGFuY2UCBQdfc3Rha2VyCQEBLQEFB3ZBbW91bnQJARF1cGRhdGVUb3RhbFN1cHBseQEJAQEtAQUHdkFtb3VudAkBFXNldFVzZXJXaXRoZHJhd1BhcmFtcwMFB19zdGFrZXIFFG5ld0xhc3RXaXRoZHJhd25EYXRlBRRuZXdXaXRoZHJhd25JblBlcmlvZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJARB1c2RuRnJvbURlY2ltYWxzAQUSYW1vdW50T2ZRdW90ZUFzc2V0CQEKcXVvdGVBc3NldAAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQdhZGRGcmVlAAQHX2Ftb3VudAkBDnVzZG5Ub0RlY2ltYWxzAQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQDAwMJAQIhPQIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAkBCnF1b3RlQXNzZXQABgkBASEBCQELaW5pdGlhbGl6ZWQABgkBASEBAwkBC2lzV2hpdGVsaXN0AQkApQgBCAUBaQZjYWxsZXIGCQAAAggFAWkGY2FsbGVyCQEMYWRtaW5BZGRyZXNzAAkAAgECFkludmFsaWQgYWRkRnJlZSBwYXJhbXMEB25ld1JhdGUDCQBmAgkBC3RvdGFsU3VwcGx5AAAACQEEZGl2ZAIJAGQCCQELZnJlZUJhbGFuY2UABQdfYW1vdW50CQELdG90YWxTdXBwbHkABQxERUNJTUFMX1VOSVQEB3Vuc3Rha2UJAPwHBAkBDm1hbmFnZXJBZGRyZXNzAAIHZGVwb3NpdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKcXVvdGVBc3NldAAJARB1c2RuRnJvbURlY2ltYWxzAQUHX2Ftb3VudAUDbmlsAwkAAAIFB3Vuc3Rha2UFB3Vuc3Rha2UJAM4IAgkBEXVwZGF0ZUZyZWVCYWxhbmNlAQUHX2Ftb3VudAkBCnVwZGF0ZVJhdGUBBQduZXdSYXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCWFkZExvY2tlZAEGX3JlcGF5BAdfYW1vdW50CQEOdXNkblRvRGVjaW1hbHMBCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAMDAwkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCQEKcXVvdGVBc3NldAAGCQEBIQEJAQtpbml0aWFsaXplZAAGCQEBIQEDAwkBC2lzV2hpdGVsaXN0AQkApQgBCAUBaQZjYWxsZXIGCQAAAggFAWkGY2FsbGVyCQERY29sbGF0ZXJhbEFkZHJlc3MABgkAAAIIBQFpBmNhbGxlcgkBDGFkbWluQWRkcmVzcwAJAAIBAhhJbnZhbGlkIGFkZExvY2tlZCBwYXJhbXMEB3Vuc3Rha2UJAPwHBAkBDm1hbmFnZXJBZGRyZXNzAAIHZGVwb3NpdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKcXVvdGVBc3NldAAJARB1c2RuRnJvbURlY2ltYWxzAQUHX2Ftb3VudAUDbmlsAwkAAAIFB3Vuc3Rha2UFB3Vuc3Rha2UEDGZyZWVCb3Jyb3dlZAkBE2ZyZWVCYWxhbmNlQm9ycm93ZWQACQDOCAIDAwUGX3JlcGF5CQBmAgUMZnJlZUJvcnJvd2VkAAAHCQEZdXBkYXRlRnJlZUJvcnJvd2VkQmFsYW5jZQEJAQEtAQkBBG1pbnYCBQxmcmVlQm9ycm93ZWQFB19hbW91bnQFA25pbAkBE3VwZGF0ZUxvY2tlZEJhbGFuY2UBBQdfYW1vdW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCmFkZExvY2tlZFYBC19hbW91bnRVc2RuBAdfYW1vdW50CQEOdXNkblRvRGVjaW1hbHMBBQtfYW1vdW50VXNkbgMDCQEBIQEJAQtpbml0aWFsaXplZAAGCQEBIQEDCQAAAggFAWkGY2FsbGVyCQERY29sbGF0ZXJhbEFkZHJlc3MABgkAAAIIBQFpBmNhbGxlcgkBDGFkbWluQWRkcmVzcwAJAAIBAhlJbnZhbGlkIGFkZExvY2tlZFYgcGFyYW1zCQDOCAIJARN1cGRhdGVMb2NrZWRCYWxhbmNlAQUHX2Ftb3VudAkBFHVwZGF0ZVZMb2NrZWRCYWxhbmNlAQUHX2Ftb3VudAFpARVleGNoYW5nZUZyZWVBbmRMb2NrZWQBB19hbW91bnQDAwkBASEBCQELaW5pdGlhbGl6ZWQABgkBASEBAwkBC2lzV2hpdGVsaXN0AQkApQgBCAUBaQZjYWxsZXIGCQAAAggFAWkGY2FsbGVyCQEMYWRtaW5BZGRyZXNzAAkAAgECJEludmFsaWQgZXhjaGFuZ2VGcmVlQW5kTG9ja2VkIHBhcmFtcwQSYW1vdW50T2ZRdW90ZUFzc2V0CQEOdXNkblRvRGVjaW1hbHMBBQdfYW1vdW50BA9ib3Jyb3dlZEJhbGFuY2UJARNmcmVlQmFsYW5jZUJvcnJvd2VkAAQNJHQwMTI0NDUxMjkzMgMDCQBmAgUSYW1vdW50T2ZRdW90ZUFzc2V0AAAJAGYCBQ9ib3Jyb3dlZEJhbGFuY2UAAAcJAJQKAgkBAS0BBRJhbW91bnRPZlF1b3RlQXNzZXQJAQEtAQkBBG1pbnYCBRJhbW91bnRPZlF1b3RlQXNzZXQFD2JvcnJvd2VkQmFsYW5jZQkAlAoCCQEBLQEFEmFtb3VudE9mUXVvdGVBc3NldAAABApmcmVlVXBkYXRlCAUNJHQwMTI0NDUxMjkzMgJfMQQSZnJlZUJvcnJvd2VkVXBkYXRlCAUNJHQwMTI0NDUxMjkzMgJfMgQHbmV3UmF0ZQkBDmNvbXB1dGVOZXdSYXRlAQUKZnJlZVVwZGF0ZQkAzggCCQDOCAIJAM4IAgkBE3VwZGF0ZUxvY2tlZEJhbGFuY2UBBRJhbW91bnRPZlF1b3RlQXNzZXQJARF1cGRhdGVGcmVlQmFsYW5jZQEFCmZyZWVVcGRhdGUJARl1cGRhdGVGcmVlQm9ycm93ZWRCYWxhbmNlAQUSZnJlZUJvcnJvd2VkVXBkYXRlCQEKdXBkYXRlUmF0ZQEFB25ld1JhdGUBaQEOd2l0aGRyYXdMb2NrZWQBB19hbW91bnQDAwMJAQEhAQkBC2luaXRpYWxpemVkAAYJAGcCAAAFB19hbW91bnQGCQEBIQEJAQtpc1doaXRlbGlzdAEJAKUIAQgFAWkGY2FsbGVyCQACAQIdSW52YWxpZCB3aXRoZHJhd0xvY2tlZCBwYXJhbXMEEmFtb3VudE9mUXVvdGVBc3NldAkBDnVzZG5Ub0RlY2ltYWxzAQUHX2Ftb3VudAQHdW5zdGFrZQkA/AcECQEObWFuYWdlckFkZHJlc3MAAgh3aXRoZHJhdwkAzAgCCQDYBAEJAQpxdW90ZUFzc2V0AAkAzAgCCQEQdXNkbkZyb21EZWNpbWFscwEFEmFtb3VudE9mUXVvdGVBc3NldAUDbmlsBQNuaWwDCQAAAgUHdW5zdGFrZQUHdW5zdGFrZQQObG9ja0JhbGFuY2VOb3cJAQ1sb2NrZWRCYWxhbmNlAAQNJHQwMTM3MTYxMzkwOQMJAGYCBRJhbW91bnRPZlF1b3RlQXNzZXQFDmxvY2tCYWxhbmNlTm93CQCUCgIFDmxvY2tCYWxhbmNlTm93CQBlAgUSYW1vdW50T2ZRdW90ZUFzc2V0BQ5sb2NrQmFsYW5jZU5vdwkAlAoCBRJhbW91bnRPZlF1b3RlQXNzZXQAAAQKZnJvbUxvY2tlZAgFDSR0MDEzNzE2MTM5MDkCXzEECGZyb21GcmVlCAUNJHQwMTM3MTYxMzkwOQJfMgQPdkxvY2tCYWxhbmNlTm93CQEOdkxvY2tlZEJhbGFuY2UABBJyZWFsTG9ja0JhbGFuY2VOb3cJAGUCBQ5sb2NrQmFsYW5jZU5vdwUPdkxvY2tCYWxhbmNlTm93BA0kdDAxNDAyNzE0MjE1AwkAZgIFCmZyb21Mb2NrZWQFEnJlYWxMb2NrQmFsYW5jZU5vdwkAlAoCBRJyZWFsTG9ja0JhbGFuY2VOb3cJAGUCBQpmcm9tTG9ja2VkBRJyZWFsTG9ja0JhbGFuY2VOb3cJAJQKAgUKZnJvbUxvY2tlZAAABA5mcm9tUmVhbExvY2tlZAgFDSR0MDE0MDI3MTQyMTUCXzEEC2Zyb21WTG9ja2VkCAUNJHQwMTQwMjcxNDIxNQJfMgkAzggCCQDOCAIJAM4IAgMJAGYCBQtmcm9tVkxvY2tlZAAACQEZdXBkYXRlRnJlZUJvcnJvd2VkQmFsYW5jZQEFC2Zyb21WTG9ja2VkBQNuaWwDCQBmAgUIZnJvbUZyZWUAAAQHbmV3UmF0ZQkBDmNvbXB1dGVOZXdSYXRlAQkBAS0BBQhmcm9tRnJlZQkAzggCCQERdXBkYXRlRnJlZUJhbGFuY2UBCQEBLQEFCGZyb21GcmVlCQEKdXBkYXRlUmF0ZQEFB25ld1JhdGUFA25pbAkBE3VwZGF0ZUxvY2tlZEJhbGFuY2UBCQEBLQEFCmZyb21Mb2NrZWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQEQdXNkbkZyb21EZWNpbWFscwEFEmFtb3VudE9mUXVvdGVBc3NldAkBCnF1b3RlQXNzZXQABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEPd2l0aGRyYXdMb2NrZWRWAQtfYW1vdW50VXNkbgMDAwkBASEBCQELaW5pdGlhbGl6ZWQABgkAZwIAAAULX2Ftb3VudFVzZG4GCQEBIQEJAAACCAUBaQZjYWxsZXIJARFjb2xsYXRlcmFsQWRkcmVzcwAJAAIBAh5JbnZhbGlkIHdpdGhkcmF3TG9ja2VkViBwYXJhbXMEEmFtb3VudE9mUXVvdGVBc3NldAkBDnVzZG5Ub0RlY2ltYWxzAQULX2Ftb3VudFVzZG4EDmxvY2tCYWxhbmNlTm93CQENbG9ja2VkQmFsYW5jZQAEDSR0MDE1MDcyMTUyNjUDCQBmAgUSYW1vdW50T2ZRdW90ZUFzc2V0BQ5sb2NrQmFsYW5jZU5vdwkAlAoCBQ5sb2NrQmFsYW5jZU5vdwkAZQIFEmFtb3VudE9mUXVvdGVBc3NldAUObG9ja0JhbGFuY2VOb3cJAJQKAgUSYW1vdW50T2ZRdW90ZUFzc2V0AAAECmZyb21Mb2NrZWQIBQ0kdDAxNTA3MjE1MjY1Al8xBAhmcm9tRnJlZQgFDSR0MDE1MDcyMTUyNjUCXzIJAM4IAgkAzggCAwkAZgIFCGZyb21GcmVlAAAEB25ld1JhdGUJAQ5jb21wdXRlTmV3UmF0ZQEJAQEtAQUIZnJvbUZyZWUJAM4IAgkBEXVwZGF0ZUZyZWVCYWxhbmNlAQkBAS0BBQhmcm9tRnJlZQkBCnVwZGF0ZVJhdGUBBQduZXdSYXRlBQNuaWwJARN1cGRhdGVMb2NrZWRCYWxhbmNlAQkBAS0BBQpmcm9tTG9ja2VkCQEUdXBkYXRlVkxvY2tlZEJhbGFuY2UBCQEBLQEFEmFtb3VudE9mUXVvdGVBc3NldAFpAQt2aWV3X3Jld2FyZAEHX3N0YWtlcgQHYmFsYW5jZQkBCWJhbGFuY2VPZgEFB19zdGFrZXIED2RlcG9zaXRlZEFtb3VudAkBBG11bGQCCQELYXZlcmFnZVJhdGUBBQdfc3Rha2VyBQdiYWxhbmNlBA1jdXJyZW50QW1vdW50CQEEbXVsZAIJAQRyYXRlAAUHYmFsYW5jZQQGZWFybmVkCQBlAgUNY3VycmVudEFtb3VudAUPZGVwb3NpdGVkQW1vdW50CQACAQkApAMBBQZlYXJuZWQBaQESdmlld193aXRoZHJhd0xpbWl0AQdfc3Rha2VyBBF3aXRoZHJhd0xpbWl0TGVmdAgJARRnZXRXaXRoZHJhd0xpbWl0TGVmdAEFB19zdGFrZXICXzIEC2xpbWl0SW5Vc2RuCQEQdXNkbkZyb21EZWNpbWFscwEJAQRtdWxkAgURd2l0aGRyYXdMaW1pdExlZnQJAQRyYXRlAAkAAgEJAKQDAQULbGltaXRJblVzZG4BAnR4AQZ2ZXJpZnkACQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACQEOYWRtaW5QdWJsaWNLZXkAw/0oEA==", "height": 2357198, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: CePWAsvbqcM4ypm1268t74p7MsF7Bo5GFNqxSfGUZCej Next: AedhUzzEoxMx1HxeTKckrhCuTAEmKim9aXjm3pQM6qip Diff:
OldNewDifferences
55
66 let b = "k_lockedBalance"
77
8-let c = "k_freeBalance"
8+let c = "k_vLockedBalance"
99
10-let d = "k_rate"
10+let d = "k_freeBalance"
1111
12-let e = "k_balance"
12+let e = "k_freeBalanceBorrowed"
1313
14-let f = "k_average_rate"
14+let f = "k_rate"
1515
16-let g = "k_withdraw_limit"
16+let g = "k_balance"
1717
18-let h = "k_last_withdraw_date"
18+let h = "k_average_rate"
1919
20-let i = "k_withdraw_in_period"
20+let i = "k_withdraw_limit"
2121
22-let j = "k_initialized"
22+let j = "k_last_withdraw_date"
2323
24-let k = "k_coordinatorAddress"
24+let k = "k_withdraw_in_period"
2525
26-let l = "k_amm"
26+let l = "k_initialized"
2727
28-let m = "k_quote_asset"
28+let m = "k_coordinatorAddress"
2929
30-let n = "k_admin_public_key"
30+let n = "k_amm"
3131
32-let o = "k_admin_address"
32+let o = "k_quote_asset"
3333
34-let p = "k_manager_address"
34+let p = "k_admin_public_key"
3535
36-func q (r,s) = ((r + "_") + s)
36+let q = "k_admin_address"
37+
38+let r = "k_manager_address"
39+
40+let s = "k_collateral_address"
41+
42+func t (u,v) = ((u + "_") + v)
3743
3844
39-func t () = valueOrErrorMessage(addressFromString(getStringValue(this, k)), "Coordinator not set")
45+func w () = valueOrErrorMessage(addressFromString(getStringValue(this, m)), "Coordinator not set")
4046
4147
42-func u (s) = valueOrElse(getBoolean(t(), q(l, s)), false)
48+func x (v) = valueOrElse(getBoolean(w(), t(n, v)), false)
4349
4450
45-func v () = fromBase58String(getStringValue(t(), n))
51+func y () = fromBase58String(getStringValue(w(), p))
4652
4753
48-func w () = addressFromString(valueOrErrorMessage(getString(t(), o), "Admin address not set"))
54+func z () = addressFromString(valueOrErrorMessage(getString(w(), q), "Admin address not set"))
4955
5056
51-func x () = fromBase58String(getStringValue(t(), m))
57+func A () = fromBase58String(getStringValue(w(), o))
5258
5359
54-func y () = valueOrErrorMessage(addressFromString(getStringValue(t(), p)), "Manager not set")
60+func B () = valueOrErrorMessage(addressFromString(getStringValue(w(), r)), "Manager not set")
5561
5662
57-let z = (1 * (((((((10 * 10) * 10) * 10) * 10) * 10) * 10) * 10))
58-
59-let A = ((60 * 60) * 24)
60-
61-let B = ""
62-
63-let C = 0
64-
65-func D (E) = (E / 100)
63+func C () = valueOrErrorMessage(addressFromString(getStringValue(w(), s)), "Collateral Manager not set")
6664
6765
68-func F (E) = (E * 100)
66+let D = (1 * (((((((10 * 10) * 10) * 10) * 10) * 10) * 10) * 10))
67+
68+let E = ((60 * 60) * 24)
69+
70+let F = ""
71+
72+let G = 0
73+
74+func H (I) = (I / 100)
6975
7076
71-func G (H,I) = fraction(H, z, I, HALFEVEN)
77+func J (I) = (I * 100)
7278
7379
74-func J (H,I) = fraction(H, I, z, HALFEVEN)
80+func K (L,M) = fraction(L, D, M, HALFEVEN)
7581
7682
77-func K (H) = if ((H > 0))
78- then H
79- else -(H)
83+func N (L,M) = fraction(L, M, D, HALFEVEN)
8084
8185
82-func L (H,I) = if ((H > I))
83- then I
84- else H
86+func O (L) = if ((L > 0))
87+ then L
88+ else -(L)
8589
8690
87-let M = (86400 * 1000)
88-
89-let N = G((1 * z), (4 * z))
90-
91-func O (P) = valueOrErrorMessage(getInteger(this, P), ("no value for " + P))
91+func P (L,M) = if ((L > M))
92+ then M
93+ else L
9294
9395
94-func Q (P) = valueOrElse(getInteger(this, P), 0)
96+let Q = (86400 * 1000)
97+
98+let R = K((1 * D), (4 * D))
99+
100+func S (T) = valueOrErrorMessage(getInteger(this, T), ("no value for " + T))
95101
96102
97-func R (P) = valueOrElse(getInteger(this, P), z)
103+func U (T) = valueOrElse(getInteger(this, T), 0)
98104
99105
100-func S () = Q(a)
106+func V (T) = valueOrElse(getInteger(this, T), D)
101107
102108
103-func T () = R(d)
109+func W () = U(a)
104110
105111
106-func U (V) = Q(q(e, V))
112+func X () = V(f)
107113
108114
109-func W (V) = Q(q(f, V))
115+func Y (Z) = U(t(g, Z))
110116
111117
112-func X (V) = Q(q(g, V))
118+func aa (Z) = U(t(h, Z))
113119
114120
115-func Y (V) = Q(q(i, V))
121+func ab (Z) = U(t(i, Z))
116122
117123
118-func Z (V) = Q(q(h, V))
124+func ac (Z) = U(t(k, Z))
119125
120126
121-func aa () = Q(c)
127+func ad (Z) = U(t(j, Z))
122128
123129
124-func ab () = Q(b)
130+func ae () = U(d)
125131
126132
127-func ac () = valueOrElse(getBoolean(this, j), false)
133+func af () = U(e)
128134
129135
130-func ad (V) = {
131- let ae = lastBlock.timestamp
132- let af = Z(V)
133- let ag = if (((ae - af) > M))
134- then $Tuple2(ae, X(V))
135- else $Tuple2(af, (X(V) - Y(V)))
136- let ah = ag._1
137- let ai = ag._2
138- $Tuple2(ah, ai)
136+func ag () = U(b)
137+
138+
139+func ah () = U(c)
140+
141+
142+func ai () = valueOrElse(getBoolean(this, l), false)
143+
144+
145+func aj (Z) = {
146+ let ak = lastBlock.timestamp
147+ let al = ad(Z)
148+ let am = if (((ak - al) > Q))
149+ then $Tuple2(ak, ab(Z))
150+ else $Tuple2(al, (ab(Z) - ac(Z)))
151+ let an = am._1
152+ let ao = am._2
153+ $Tuple2(an, ao)
139154 }
140155
141156
142-func aj (ak,al) = [IntegerEntry(q(e, ak), (U(ak) + al))]
157+func ap (aq) = {
158+ let ar = if ((W() > 0))
159+ then K((ae() + aq), W())
160+ else D
161+ ar
162+ }
143163
144164
145-func am (ak,an) = [IntegerEntry(q(g, ak), an)]
165+func as (at,au) = [IntegerEntry(t(g, at), (Y(at) + au))]
146166
147167
148-func ao (ak,an) = [IntegerEntry(q(f, ak), an)]
168+func av (at,aw) = [IntegerEntry(t(i, at), aw)]
149169
150170
151-func ap (al) = [IntegerEntry(c, (aa() + al))]
171+func ax (at,aw) = [IntegerEntry(t(h, at), aw)]
152172
153173
154-func aq (al) = [IntegerEntry(b, (ab() + al))]
174+func ay (au) = [IntegerEntry(d, (ae() + au))]
155175
156176
157-func ar (al) = [IntegerEntry(a, (S() + al))]
177+func az (au) = {
178+ let aA = af()
179+ if (((aA + au) >= 0))
180+ then [IntegerEntry(e, (aA + au))]
181+ else throw(((("Vault: can not update borrowed free balance. Balance: " + toString(aA)) + " change: ") + toString(au)))
182+ }
158183
159184
160-func as (an) = [IntegerEntry(d, an)]
185+func aB (au) = {
186+ let aC = ag()
187+ if (((aC + au) >= 0))
188+ then [IntegerEntry(b, (aC + au))]
189+ else throw(((("Vault: can not update locked balance. Balance: " + toString(aC)) + " change: ") + toString(au)))
190+ }
161191
162192
163-func at (ak,au,av) = [IntegerEntry(q(h, ak), au), IntegerEntry(q(i, ak), av)]
193+func aD (au) = {
194+ let aC = ah()
195+ if (((aC + au) >= 0))
196+ then [IntegerEntry(c, (aC + au))]
197+ else throw(((("Vault: can not update v-locked balance. Balance: " + toString(aC)) + " change: ") + toString(au)))
198+ }
164199
165200
166-@Callable(aw)
167-func initialize (ax) = if (ac())
201+func aE (au) = [IntegerEntry(a, (W() + au))]
202+
203+
204+func aF (aw) = [IntegerEntry(f, aw)]
205+
206+
207+func aG (at,aH,aI) = [IntegerEntry(t(j, at), aH), IntegerEntry(t(k, at), aI)]
208+
209+
210+@Callable(aJ)
211+func initialize (aK) = if (ai())
168212 then throw("Already initialized")
169- else [StringEntry(k, ax), BooleanEntry(j, true)]
213+ else [StringEntry(m, aK), BooleanEntry(l, true)]
170214
171215
172216
173-@Callable(aw)
217+@Callable(aJ)
174218 func stake () = {
175- let V = toString(aw.caller)
176- let E = F(aw.payments[0].amount)
177- if (if ((aw.payments[0].assetId != x()))
219+ let Z = toString(aJ.caller)
220+ let I = J(aJ.payments[0].amount)
221+ if (if ((aJ.payments[0].assetId != A()))
178222 then true
179- else !(ac()))
223+ else !(ai()))
180224 then throw("Invalid call to stake")
181225 else {
182- let ay = T()
183- let az = W(V)
184- let aA = G(E, ay)
185- let aB = G((J(aA, ay) + J(U(V), az)), (ay + az))
186- let aC = (aA + U(V))
187- let aD = J(aC, N)
188- let aE = invoke(y(), "deposit", nil, [AttachedPayment(x(), D(E))])
189- if ((aE == aE))
190- then ((((ap(E) ++ aj(V, aA)) ++ ao(V, aB)) ++ am(V, aD)) ++ ar(aA))
226+ let aL = X()
227+ let aM = aa(Z)
228+ let aN = K(I, aL)
229+ let aO = K((N(aN, aL) + N(Y(Z), aM)), (aL + aM))
230+ let aP = (aN + Y(Z))
231+ let aQ = N(aP, R)
232+ let aR = invoke(B(), "deposit", nil, [AttachedPayment(A(), H(I))])
233+ if ((aR == aR))
234+ then ((((ay(I) ++ as(Z, aN)) ++ ax(Z, aO)) ++ av(Z, aQ)) ++ aE(aN))
191235 else throw("Strict value is not equal to itself.")
192236 }
193237 }
194238
195239
196240
197-@Callable(aw)
198-func unStake (E) = {
199- let V = toString(aw.caller)
200- let aF = F(E)
201- if (if ((aw.payments != nil))
241+@Callable(aJ)
242+func unStake (I) = {
243+ let Z = toString(aJ.caller)
244+ let aS = J(I)
245+ if (if ((aJ.payments != nil))
202246 then true
203- else !(ac()))
247+ else !(ai()))
204248 then throw("Invalid call to unStake")
205249 else {
206- let aG = ad(V)
207- let ah = aG._1
208- let ai = aG._2
209- let aA = G(aF, T())
210- if ((aA > ai))
250+ let aT = aj(Z)
251+ let an = aT._1
252+ let ao = aT._2
253+ let aN = K(aS, X())
254+ if ((aN > ao))
211255 then throw("Invalid call to unStake: withdraw over limit")
212256 else {
213- let aH = (Y(V) + aA)
214- if ((aF > aa()))
257+ let aU = (ac(Z) + aN)
258+ if ((aS > ae()))
215259 then throw("Invalid call to unStake: balance too low")
216260 else {
217- let aI = invoke(y(), "withdraw", [toBase58String(x()), D(aF)], nil)
218- if ((aI == aI))
219- then ((((ap(-(aF)) ++ aj(V, -(aA))) ++ ar(-(aA))) ++ at(V, ah, aH)) ++ [ScriptTransfer(aw.caller, D(aF), x())])
261+ let aV = invoke(B(), "withdraw", [toBase58String(A()), H(aS)], nil)
262+ if ((aV == aV))
263+ then ((((ay(-(aS)) ++ as(Z, -(aN))) ++ aE(-(aN))) ++ aG(Z, an, aU)) ++ [ScriptTransfer(aJ.caller, H(aS), A())])
220264 else throw("Strict value is not equal to itself.")
221265 }
222266 }
225269
226270
227271
228-@Callable(aw)
272+@Callable(aJ)
229273 func addFree () = {
230- let E = F(aw.payments[0].amount)
231- if (if (if ((aw.payments[0].assetId != x()))
274+ let I = J(aJ.payments[0].amount)
275+ if (if (if ((aJ.payments[0].assetId != A()))
232276 then true
233- else !(ac()))
277+ else !(ai()))
234278 then true
235- else !(if (u(toString(aw.caller)))
279+ else !(if (x(toString(aJ.caller)))
236280 then true
237- else (aw.caller == w())))
281+ else (aJ.caller == z())))
238282 then throw("Invalid addFree params")
239283 else {
240- let aJ = if ((S() > 0))
241- then G((aa() + E), S())
242- else z
243- let aI = invoke(y(), "deposit", nil, [AttachedPayment(x(), D(E))])
244- if ((aI == aI))
245- then (ap(E) ++ as(aJ))
284+ let ar = if ((W() > 0))
285+ then K((ae() + I), W())
286+ else D
287+ let aV = invoke(B(), "deposit", nil, [AttachedPayment(A(), H(I))])
288+ if ((aV == aV))
289+ then (ay(I) ++ aF(ar))
246290 else throw("Strict value is not equal to itself.")
247291 }
248292 }
249293
250294
251295
252-@Callable(aw)
253-func addLocked () = {
254- let E = F(aw.payments[0].amount)
255- if (if (if ((aw.payments[0].assetId != x()))
296+@Callable(aJ)
297+func addLocked (aW) = {
298+ let I = J(aJ.payments[0].amount)
299+ if (if (if ((aJ.payments[0].assetId != A()))
256300 then true
257- else !(ac()))
301+ else !(ai()))
258302 then true
259- else !(if (u(toString(aw.caller)))
303+ else !(if (if (x(toString(aJ.caller)))
260304 then true
261- else (aw.caller == w())))
305+ else (aJ.caller == C()))
306+ then true
307+ else (aJ.caller == z())))
262308 then throw("Invalid addLocked params")
263309 else {
264- let aI = invoke(y(), "deposit", nil, [AttachedPayment(x(), D(E))])
265- if ((aI == aI))
266- then aq(E)
310+ let aV = invoke(B(), "deposit", nil, [AttachedPayment(A(), H(I))])
311+ if ((aV == aV))
312+ then {
313+ let aX = af()
314+ ((if (if (aW)
315+ then (aX > 0)
316+ else false)
317+ then az(-(P(aX, I)))
318+ else nil) ++ aB(I))
319+ }
267320 else throw("Strict value is not equal to itself.")
268321 }
269322 }
270323
271324
272325
273-@Callable(aw)
274-func exchangeFreeAndLocked (E) = if (if (!(ac()))
326+@Callable(aJ)
327+func addLockedV (aY) = {
328+ let I = J(aY)
329+ if (if (!(ai()))
330+ then true
331+ else !(if ((aJ.caller == C()))
332+ then true
333+ else (aJ.caller == z())))
334+ then throw("Invalid addLockedV params")
335+ else (aB(I) ++ aD(I))
336+ }
337+
338+
339+
340+@Callable(aJ)
341+func exchangeFreeAndLocked (I) = if (if (!(ai()))
275342 then true
276- else !(if (u(toString(aw.caller)))
343+ else !(if (x(toString(aJ.caller)))
277344 then true
278- else (aw.caller == w())))
345+ else (aJ.caller == z())))
279346 then throw("Invalid exchangeFreeAndLocked params")
280347 else {
281- let aF = F(E)
282- let aJ = if ((S() > 0))
283- then G((aa() - aF), S())
284- else z
285- ((aq(aF) ++ ap(-(aF))) ++ as(aJ))
348+ let aS = J(I)
349+ let aA = af()
350+ let aZ = if (if ((aS > 0))
351+ then (aA > 0)
352+ else false)
353+ then $Tuple2(-(aS), -(P(aS, aA)))
354+ else $Tuple2(-(aS), 0)
355+ let ba = aZ._1
356+ let bb = aZ._2
357+ let ar = ap(ba)
358+ (((aB(aS) ++ ay(ba)) ++ az(bb)) ++ aF(ar))
286359 }
287360
288361
289362
290-@Callable(aw)
291-func withdrawLocked (E) = if (if (if (!(ac()))
363+@Callable(aJ)
364+func withdrawLocked (I) = if (if (if (!(ai()))
292365 then true
293- else (0 >= E))
366+ else (0 >= I))
294367 then true
295- else !(u(toString(aw.caller))))
368+ else !(x(toString(aJ.caller))))
296369 then throw("Invalid withdrawLocked params")
297370 else {
298- let aF = F(E)
299- let aI = invoke(y(), "withdraw", [toBase58String(x()), D(aF)], nil)
300- if ((aI == aI))
301- then (aq(-(aF)) ++ [ScriptTransfer(aw.caller, D(aF), x())])
371+ let aS = J(I)
372+ let aV = invoke(B(), "withdraw", [toBase58String(A()), H(aS)], nil)
373+ if ((aV == aV))
374+ then {
375+ let bc = ag()
376+ let bd = if ((aS > bc))
377+ then $Tuple2(bc, (aS - bc))
378+ else $Tuple2(aS, 0)
379+ let be = bd._1
380+ let bf = bd._2
381+ let bg = ah()
382+ let bh = (bc - bg)
383+ let bi = if ((be > bh))
384+ then $Tuple2(bh, (be - bh))
385+ else $Tuple2(be, 0)
386+ let bj = bi._1
387+ let bk = bi._2
388+ ((((if ((bk > 0))
389+ then az(bk)
390+ else nil) ++ (if ((bf > 0))
391+ then {
392+ let ar = ap(-(bf))
393+ (ay(-(bf)) ++ aF(ar))
394+ }
395+ else nil)) ++ aB(-(be))) ++ [ScriptTransfer(aJ.caller, H(aS), A())])
396+ }
302397 else throw("Strict value is not equal to itself.")
303398 }
304399
305400
306401
307-@Callable(aw)
308-func view_reward (V) = {
309- let aK = U(V)
310- let aL = J(W(V), aK)
311- let aM = J(T(), aK)
312- let aN = (aM - aL)
313- throw(toString(aN))
402+@Callable(aJ)
403+func withdrawLockedV (aY) = if (if (if (!(ai()))
404+ then true
405+ else (0 >= aY))
406+ then true
407+ else !((aJ.caller == C())))
408+ then throw("Invalid withdrawLockedV params")
409+ else {
410+ let aS = J(aY)
411+ let bc = ag()
412+ let bl = if ((aS > bc))
413+ then $Tuple2(bc, (aS - bc))
414+ else $Tuple2(aS, 0)
415+ let be = bl._1
416+ let bf = bl._2
417+ (((if ((bf > 0))
418+ then {
419+ let ar = ap(-(bf))
420+ (ay(-(bf)) ++ aF(ar))
421+ }
422+ else nil) ++ aB(-(be))) ++ aD(-(aS)))
423+ }
424+
425+
426+
427+@Callable(aJ)
428+func view_reward (Z) = {
429+ let aC = Y(Z)
430+ let bm = N(aa(Z), aC)
431+ let bn = N(X(), aC)
432+ let bo = (bn - bm)
433+ throw(toString(bo))
314434 }
315435
316436
317437
318-@Callable(aw)
319-func view_withdrawLimit (V) = {
320- let ai = ad(V)._2
321- let aO = D(J(ai, T()))
322- throw(toString(aO))
438+@Callable(aJ)
439+func view_withdrawLimit (Z) = {
440+ let ao = aj(Z)._2
441+ let bp = H(N(ao, X()))
442+ throw(toString(bp))
323443 }
324444
325445
326-@Verifier(aP)
327-func aQ () = sigVerify(aP.bodyBytes, aP.proofs[0], v())
446+@Verifier(bq)
447+func br () = sigVerify(bq.bodyBytes, bq.proofs[0], y())
328448
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "k_totalSupply"
55
66 let b = "k_lockedBalance"
77
8-let c = "k_freeBalance"
8+let c = "k_vLockedBalance"
99
10-let d = "k_rate"
10+let d = "k_freeBalance"
1111
12-let e = "k_balance"
12+let e = "k_freeBalanceBorrowed"
1313
14-let f = "k_average_rate"
14+let f = "k_rate"
1515
16-let g = "k_withdraw_limit"
16+let g = "k_balance"
1717
18-let h = "k_last_withdraw_date"
18+let h = "k_average_rate"
1919
20-let i = "k_withdraw_in_period"
20+let i = "k_withdraw_limit"
2121
22-let j = "k_initialized"
22+let j = "k_last_withdraw_date"
2323
24-let k = "k_coordinatorAddress"
24+let k = "k_withdraw_in_period"
2525
26-let l = "k_amm"
26+let l = "k_initialized"
2727
28-let m = "k_quote_asset"
28+let m = "k_coordinatorAddress"
2929
30-let n = "k_admin_public_key"
30+let n = "k_amm"
3131
32-let o = "k_admin_address"
32+let o = "k_quote_asset"
3333
34-let p = "k_manager_address"
34+let p = "k_admin_public_key"
3535
36-func q (r,s) = ((r + "_") + s)
36+let q = "k_admin_address"
37+
38+let r = "k_manager_address"
39+
40+let s = "k_collateral_address"
41+
42+func t (u,v) = ((u + "_") + v)
3743
3844
39-func t () = valueOrErrorMessage(addressFromString(getStringValue(this, k)), "Coordinator not set")
45+func w () = valueOrErrorMessage(addressFromString(getStringValue(this, m)), "Coordinator not set")
4046
4147
42-func u (s) = valueOrElse(getBoolean(t(), q(l, s)), false)
48+func x (v) = valueOrElse(getBoolean(w(), t(n, v)), false)
4349
4450
45-func v () = fromBase58String(getStringValue(t(), n))
51+func y () = fromBase58String(getStringValue(w(), p))
4652
4753
48-func w () = addressFromString(valueOrErrorMessage(getString(t(), o), "Admin address not set"))
54+func z () = addressFromString(valueOrErrorMessage(getString(w(), q), "Admin address not set"))
4955
5056
51-func x () = fromBase58String(getStringValue(t(), m))
57+func A () = fromBase58String(getStringValue(w(), o))
5258
5359
54-func y () = valueOrErrorMessage(addressFromString(getStringValue(t(), p)), "Manager not set")
60+func B () = valueOrErrorMessage(addressFromString(getStringValue(w(), r)), "Manager not set")
5561
5662
57-let z = (1 * (((((((10 * 10) * 10) * 10) * 10) * 10) * 10) * 10))
58-
59-let A = ((60 * 60) * 24)
60-
61-let B = ""
62-
63-let C = 0
64-
65-func D (E) = (E / 100)
63+func C () = valueOrErrorMessage(addressFromString(getStringValue(w(), s)), "Collateral Manager not set")
6664
6765
68-func F (E) = (E * 100)
66+let D = (1 * (((((((10 * 10) * 10) * 10) * 10) * 10) * 10) * 10))
67+
68+let E = ((60 * 60) * 24)
69+
70+let F = ""
71+
72+let G = 0
73+
74+func H (I) = (I / 100)
6975
7076
71-func G (H,I) = fraction(H, z, I, HALFEVEN)
77+func J (I) = (I * 100)
7278
7379
74-func J (H,I) = fraction(H, I, z, HALFEVEN)
80+func K (L,M) = fraction(L, D, M, HALFEVEN)
7581
7682
77-func K (H) = if ((H > 0))
78- then H
79- else -(H)
83+func N (L,M) = fraction(L, M, D, HALFEVEN)
8084
8185
82-func L (H,I) = if ((H > I))
83- then I
84- else H
86+func O (L) = if ((L > 0))
87+ then L
88+ else -(L)
8589
8690
87-let M = (86400 * 1000)
88-
89-let N = G((1 * z), (4 * z))
90-
91-func O (P) = valueOrErrorMessage(getInteger(this, P), ("no value for " + P))
91+func P (L,M) = if ((L > M))
92+ then M
93+ else L
9294
9395
94-func Q (P) = valueOrElse(getInteger(this, P), 0)
96+let Q = (86400 * 1000)
97+
98+let R = K((1 * D), (4 * D))
99+
100+func S (T) = valueOrErrorMessage(getInteger(this, T), ("no value for " + T))
95101
96102
97-func R (P) = valueOrElse(getInteger(this, P), z)
103+func U (T) = valueOrElse(getInteger(this, T), 0)
98104
99105
100-func S () = Q(a)
106+func V (T) = valueOrElse(getInteger(this, T), D)
101107
102108
103-func T () = R(d)
109+func W () = U(a)
104110
105111
106-func U (V) = Q(q(e, V))
112+func X () = V(f)
107113
108114
109-func W (V) = Q(q(f, V))
115+func Y (Z) = U(t(g, Z))
110116
111117
112-func X (V) = Q(q(g, V))
118+func aa (Z) = U(t(h, Z))
113119
114120
115-func Y (V) = Q(q(i, V))
121+func ab (Z) = U(t(i, Z))
116122
117123
118-func Z (V) = Q(q(h, V))
124+func ac (Z) = U(t(k, Z))
119125
120126
121-func aa () = Q(c)
127+func ad (Z) = U(t(j, Z))
122128
123129
124-func ab () = Q(b)
130+func ae () = U(d)
125131
126132
127-func ac () = valueOrElse(getBoolean(this, j), false)
133+func af () = U(e)
128134
129135
130-func ad (V) = {
131- let ae = lastBlock.timestamp
132- let af = Z(V)
133- let ag = if (((ae - af) > M))
134- then $Tuple2(ae, X(V))
135- else $Tuple2(af, (X(V) - Y(V)))
136- let ah = ag._1
137- let ai = ag._2
138- $Tuple2(ah, ai)
136+func ag () = U(b)
137+
138+
139+func ah () = U(c)
140+
141+
142+func ai () = valueOrElse(getBoolean(this, l), false)
143+
144+
145+func aj (Z) = {
146+ let ak = lastBlock.timestamp
147+ let al = ad(Z)
148+ let am = if (((ak - al) > Q))
149+ then $Tuple2(ak, ab(Z))
150+ else $Tuple2(al, (ab(Z) - ac(Z)))
151+ let an = am._1
152+ let ao = am._2
153+ $Tuple2(an, ao)
139154 }
140155
141156
142-func aj (ak,al) = [IntegerEntry(q(e, ak), (U(ak) + al))]
157+func ap (aq) = {
158+ let ar = if ((W() > 0))
159+ then K((ae() + aq), W())
160+ else D
161+ ar
162+ }
143163
144164
145-func am (ak,an) = [IntegerEntry(q(g, ak), an)]
165+func as (at,au) = [IntegerEntry(t(g, at), (Y(at) + au))]
146166
147167
148-func ao (ak,an) = [IntegerEntry(q(f, ak), an)]
168+func av (at,aw) = [IntegerEntry(t(i, at), aw)]
149169
150170
151-func ap (al) = [IntegerEntry(c, (aa() + al))]
171+func ax (at,aw) = [IntegerEntry(t(h, at), aw)]
152172
153173
154-func aq (al) = [IntegerEntry(b, (ab() + al))]
174+func ay (au) = [IntegerEntry(d, (ae() + au))]
155175
156176
157-func ar (al) = [IntegerEntry(a, (S() + al))]
177+func az (au) = {
178+ let aA = af()
179+ if (((aA + au) >= 0))
180+ then [IntegerEntry(e, (aA + au))]
181+ else throw(((("Vault: can not update borrowed free balance. Balance: " + toString(aA)) + " change: ") + toString(au)))
182+ }
158183
159184
160-func as (an) = [IntegerEntry(d, an)]
185+func aB (au) = {
186+ let aC = ag()
187+ if (((aC + au) >= 0))
188+ then [IntegerEntry(b, (aC + au))]
189+ else throw(((("Vault: can not update locked balance. Balance: " + toString(aC)) + " change: ") + toString(au)))
190+ }
161191
162192
163-func at (ak,au,av) = [IntegerEntry(q(h, ak), au), IntegerEntry(q(i, ak), av)]
193+func aD (au) = {
194+ let aC = ah()
195+ if (((aC + au) >= 0))
196+ then [IntegerEntry(c, (aC + au))]
197+ else throw(((("Vault: can not update v-locked balance. Balance: " + toString(aC)) + " change: ") + toString(au)))
198+ }
164199
165200
166-@Callable(aw)
167-func initialize (ax) = if (ac())
201+func aE (au) = [IntegerEntry(a, (W() + au))]
202+
203+
204+func aF (aw) = [IntegerEntry(f, aw)]
205+
206+
207+func aG (at,aH,aI) = [IntegerEntry(t(j, at), aH), IntegerEntry(t(k, at), aI)]
208+
209+
210+@Callable(aJ)
211+func initialize (aK) = if (ai())
168212 then throw("Already initialized")
169- else [StringEntry(k, ax), BooleanEntry(j, true)]
213+ else [StringEntry(m, aK), BooleanEntry(l, true)]
170214
171215
172216
173-@Callable(aw)
217+@Callable(aJ)
174218 func stake () = {
175- let V = toString(aw.caller)
176- let E = F(aw.payments[0].amount)
177- if (if ((aw.payments[0].assetId != x()))
219+ let Z = toString(aJ.caller)
220+ let I = J(aJ.payments[0].amount)
221+ if (if ((aJ.payments[0].assetId != A()))
178222 then true
179- else !(ac()))
223+ else !(ai()))
180224 then throw("Invalid call to stake")
181225 else {
182- let ay = T()
183- let az = W(V)
184- let aA = G(E, ay)
185- let aB = G((J(aA, ay) + J(U(V), az)), (ay + az))
186- let aC = (aA + U(V))
187- let aD = J(aC, N)
188- let aE = invoke(y(), "deposit", nil, [AttachedPayment(x(), D(E))])
189- if ((aE == aE))
190- then ((((ap(E) ++ aj(V, aA)) ++ ao(V, aB)) ++ am(V, aD)) ++ ar(aA))
226+ let aL = X()
227+ let aM = aa(Z)
228+ let aN = K(I, aL)
229+ let aO = K((N(aN, aL) + N(Y(Z), aM)), (aL + aM))
230+ let aP = (aN + Y(Z))
231+ let aQ = N(aP, R)
232+ let aR = invoke(B(), "deposit", nil, [AttachedPayment(A(), H(I))])
233+ if ((aR == aR))
234+ then ((((ay(I) ++ as(Z, aN)) ++ ax(Z, aO)) ++ av(Z, aQ)) ++ aE(aN))
191235 else throw("Strict value is not equal to itself.")
192236 }
193237 }
194238
195239
196240
197-@Callable(aw)
198-func unStake (E) = {
199- let V = toString(aw.caller)
200- let aF = F(E)
201- if (if ((aw.payments != nil))
241+@Callable(aJ)
242+func unStake (I) = {
243+ let Z = toString(aJ.caller)
244+ let aS = J(I)
245+ if (if ((aJ.payments != nil))
202246 then true
203- else !(ac()))
247+ else !(ai()))
204248 then throw("Invalid call to unStake")
205249 else {
206- let aG = ad(V)
207- let ah = aG._1
208- let ai = aG._2
209- let aA = G(aF, T())
210- if ((aA > ai))
250+ let aT = aj(Z)
251+ let an = aT._1
252+ let ao = aT._2
253+ let aN = K(aS, X())
254+ if ((aN > ao))
211255 then throw("Invalid call to unStake: withdraw over limit")
212256 else {
213- let aH = (Y(V) + aA)
214- if ((aF > aa()))
257+ let aU = (ac(Z) + aN)
258+ if ((aS > ae()))
215259 then throw("Invalid call to unStake: balance too low")
216260 else {
217- let aI = invoke(y(), "withdraw", [toBase58String(x()), D(aF)], nil)
218- if ((aI == aI))
219- then ((((ap(-(aF)) ++ aj(V, -(aA))) ++ ar(-(aA))) ++ at(V, ah, aH)) ++ [ScriptTransfer(aw.caller, D(aF), x())])
261+ let aV = invoke(B(), "withdraw", [toBase58String(A()), H(aS)], nil)
262+ if ((aV == aV))
263+ then ((((ay(-(aS)) ++ as(Z, -(aN))) ++ aE(-(aN))) ++ aG(Z, an, aU)) ++ [ScriptTransfer(aJ.caller, H(aS), A())])
220264 else throw("Strict value is not equal to itself.")
221265 }
222266 }
223267 }
224268 }
225269
226270
227271
228-@Callable(aw)
272+@Callable(aJ)
229273 func addFree () = {
230- let E = F(aw.payments[0].amount)
231- if (if (if ((aw.payments[0].assetId != x()))
274+ let I = J(aJ.payments[0].amount)
275+ if (if (if ((aJ.payments[0].assetId != A()))
232276 then true
233- else !(ac()))
277+ else !(ai()))
234278 then true
235- else !(if (u(toString(aw.caller)))
279+ else !(if (x(toString(aJ.caller)))
236280 then true
237- else (aw.caller == w())))
281+ else (aJ.caller == z())))
238282 then throw("Invalid addFree params")
239283 else {
240- let aJ = if ((S() > 0))
241- then G((aa() + E), S())
242- else z
243- let aI = invoke(y(), "deposit", nil, [AttachedPayment(x(), D(E))])
244- if ((aI == aI))
245- then (ap(E) ++ as(aJ))
284+ let ar = if ((W() > 0))
285+ then K((ae() + I), W())
286+ else D
287+ let aV = invoke(B(), "deposit", nil, [AttachedPayment(A(), H(I))])
288+ if ((aV == aV))
289+ then (ay(I) ++ aF(ar))
246290 else throw("Strict value is not equal to itself.")
247291 }
248292 }
249293
250294
251295
252-@Callable(aw)
253-func addLocked () = {
254- let E = F(aw.payments[0].amount)
255- if (if (if ((aw.payments[0].assetId != x()))
296+@Callable(aJ)
297+func addLocked (aW) = {
298+ let I = J(aJ.payments[0].amount)
299+ if (if (if ((aJ.payments[0].assetId != A()))
256300 then true
257- else !(ac()))
301+ else !(ai()))
258302 then true
259- else !(if (u(toString(aw.caller)))
303+ else !(if (if (x(toString(aJ.caller)))
260304 then true
261- else (aw.caller == w())))
305+ else (aJ.caller == C()))
306+ then true
307+ else (aJ.caller == z())))
262308 then throw("Invalid addLocked params")
263309 else {
264- let aI = invoke(y(), "deposit", nil, [AttachedPayment(x(), D(E))])
265- if ((aI == aI))
266- then aq(E)
310+ let aV = invoke(B(), "deposit", nil, [AttachedPayment(A(), H(I))])
311+ if ((aV == aV))
312+ then {
313+ let aX = af()
314+ ((if (if (aW)
315+ then (aX > 0)
316+ else false)
317+ then az(-(P(aX, I)))
318+ else nil) ++ aB(I))
319+ }
267320 else throw("Strict value is not equal to itself.")
268321 }
269322 }
270323
271324
272325
273-@Callable(aw)
274-func exchangeFreeAndLocked (E) = if (if (!(ac()))
326+@Callable(aJ)
327+func addLockedV (aY) = {
328+ let I = J(aY)
329+ if (if (!(ai()))
330+ then true
331+ else !(if ((aJ.caller == C()))
332+ then true
333+ else (aJ.caller == z())))
334+ then throw("Invalid addLockedV params")
335+ else (aB(I) ++ aD(I))
336+ }
337+
338+
339+
340+@Callable(aJ)
341+func exchangeFreeAndLocked (I) = if (if (!(ai()))
275342 then true
276- else !(if (u(toString(aw.caller)))
343+ else !(if (x(toString(aJ.caller)))
277344 then true
278- else (aw.caller == w())))
345+ else (aJ.caller == z())))
279346 then throw("Invalid exchangeFreeAndLocked params")
280347 else {
281- let aF = F(E)
282- let aJ = if ((S() > 0))
283- then G((aa() - aF), S())
284- else z
285- ((aq(aF) ++ ap(-(aF))) ++ as(aJ))
348+ let aS = J(I)
349+ let aA = af()
350+ let aZ = if (if ((aS > 0))
351+ then (aA > 0)
352+ else false)
353+ then $Tuple2(-(aS), -(P(aS, aA)))
354+ else $Tuple2(-(aS), 0)
355+ let ba = aZ._1
356+ let bb = aZ._2
357+ let ar = ap(ba)
358+ (((aB(aS) ++ ay(ba)) ++ az(bb)) ++ aF(ar))
286359 }
287360
288361
289362
290-@Callable(aw)
291-func withdrawLocked (E) = if (if (if (!(ac()))
363+@Callable(aJ)
364+func withdrawLocked (I) = if (if (if (!(ai()))
292365 then true
293- else (0 >= E))
366+ else (0 >= I))
294367 then true
295- else !(u(toString(aw.caller))))
368+ else !(x(toString(aJ.caller))))
296369 then throw("Invalid withdrawLocked params")
297370 else {
298- let aF = F(E)
299- let aI = invoke(y(), "withdraw", [toBase58String(x()), D(aF)], nil)
300- if ((aI == aI))
301- then (aq(-(aF)) ++ [ScriptTransfer(aw.caller, D(aF), x())])
371+ let aS = J(I)
372+ let aV = invoke(B(), "withdraw", [toBase58String(A()), H(aS)], nil)
373+ if ((aV == aV))
374+ then {
375+ let bc = ag()
376+ let bd = if ((aS > bc))
377+ then $Tuple2(bc, (aS - bc))
378+ else $Tuple2(aS, 0)
379+ let be = bd._1
380+ let bf = bd._2
381+ let bg = ah()
382+ let bh = (bc - bg)
383+ let bi = if ((be > bh))
384+ then $Tuple2(bh, (be - bh))
385+ else $Tuple2(be, 0)
386+ let bj = bi._1
387+ let bk = bi._2
388+ ((((if ((bk > 0))
389+ then az(bk)
390+ else nil) ++ (if ((bf > 0))
391+ then {
392+ let ar = ap(-(bf))
393+ (ay(-(bf)) ++ aF(ar))
394+ }
395+ else nil)) ++ aB(-(be))) ++ [ScriptTransfer(aJ.caller, H(aS), A())])
396+ }
302397 else throw("Strict value is not equal to itself.")
303398 }
304399
305400
306401
307-@Callable(aw)
308-func view_reward (V) = {
309- let aK = U(V)
310- let aL = J(W(V), aK)
311- let aM = J(T(), aK)
312- let aN = (aM - aL)
313- throw(toString(aN))
402+@Callable(aJ)
403+func withdrawLockedV (aY) = if (if (if (!(ai()))
404+ then true
405+ else (0 >= aY))
406+ then true
407+ else !((aJ.caller == C())))
408+ then throw("Invalid withdrawLockedV params")
409+ else {
410+ let aS = J(aY)
411+ let bc = ag()
412+ let bl = if ((aS > bc))
413+ then $Tuple2(bc, (aS - bc))
414+ else $Tuple2(aS, 0)
415+ let be = bl._1
416+ let bf = bl._2
417+ (((if ((bf > 0))
418+ then {
419+ let ar = ap(-(bf))
420+ (ay(-(bf)) ++ aF(ar))
421+ }
422+ else nil) ++ aB(-(be))) ++ aD(-(aS)))
423+ }
424+
425+
426+
427+@Callable(aJ)
428+func view_reward (Z) = {
429+ let aC = Y(Z)
430+ let bm = N(aa(Z), aC)
431+ let bn = N(X(), aC)
432+ let bo = (bn - bm)
433+ throw(toString(bo))
314434 }
315435
316436
317437
318-@Callable(aw)
319-func view_withdrawLimit (V) = {
320- let ai = ad(V)._2
321- let aO = D(J(ai, T()))
322- throw(toString(aO))
438+@Callable(aJ)
439+func view_withdrawLimit (Z) = {
440+ let ao = aj(Z)._2
441+ let bp = H(N(ao, X()))
442+ throw(toString(bp))
323443 }
324444
325445
326-@Verifier(aP)
327-func aQ () = sigVerify(aP.bodyBytes, aP.proofs[0], v())
446+@Verifier(bq)
447+func br () = sigVerify(bq.bodyBytes, bq.proofs[0], y())
328448

github/deemru/w8io/c3f4982 
102.72 ms