tx · CePWAsvbqcM4ypm1268t74p7MsF7Bo5GFNqxSfGUZCej

3NADcxHXbecCheinqFbvhDjfzZhsMFZJUuH:  -0.03700000 Waves

2022.11.28 14:22 [2336885] smart account 3NADcxHXbecCheinqFbvhDjfzZhsMFZJUuH > SELF 0.00000000 Waves

{ "type": 13, "id": "CePWAsvbqcM4ypm1268t74p7MsF7Bo5GFNqxSfGUZCej", "fee": 3700000, "feeAssetId": null, "timestamp": 1669634598015, "version": 2, "chainId": 84, "sender": "3NADcxHXbecCheinqFbvhDjfzZhsMFZJUuH", "senderPublicKey": "DKfzQgvVdTqPHgGbdZptWYA8G5xVfmSMAwL3UnhwQmdy", "proofs": [ "2Rw7p4gTGkNiqaoL5aY6aj8ndaih57dENX44XsGJX65TegRnz7FPexJvkoKfjoPUpEB2AJQbguwM7BDKAcPv6vTP" ], "script": "base64:BgImCAISAwoBCBIAEgMKAQESABIAEgMKAQESAwoBARIDCgEIEgMKAQg5AA1rX3RvdGFsU3VwcGx5Ag1rX3RvdGFsU3VwcGx5AA9rX2xvY2tlZEJhbGFuY2UCD2tfbG9ja2VkQmFsYW5jZQANa19mcmVlQmFsYW5jZQINa19mcmVlQmFsYW5jZQAGa19yYXRlAgZrX3JhdGUACWtfYmFsYW5jZQIJa19iYWxhbmNlAA5rX2F2ZXJhZ2VfcmF0ZQIOa19hdmVyYWdlX3JhdGUAEGtfd2l0aGRyYXdfbGltaXQCEGtfd2l0aGRyYXdfbGltaXQAFGtfbGFzdF93aXRoZHJhd19kYXRlAhRrX2xhc3Rfd2l0aGRyYXdfZGF0ZQAUa193aXRoZHJhd19pbl9wZXJpb2QCFGtfd2l0aGRyYXdfaW5fcGVyaW9kAA1rX2luaXRpYWxpemVkAg1rX2luaXRpYWxpemVkABRrX2Nvb3JkaW5hdG9yQWRkcmVzcwIUa19jb29yZGluYXRvckFkZHJlc3MABWtfYW1tAgVrX2FtbQANa19xdW90ZV9hc3NldAINa19xdW90ZV9hc3NldAASa19hZG1pbl9wdWJsaWNfa2V5AhJrX2FkbWluX3B1YmxpY19rZXkAD2tfYWRtaW5fYWRkcmVzcwIPa19hZG1pbl9hZGRyZXNzABFrX21hbmFnZXJfYWRkcmVzcwIRa19tYW5hZ2VyX2FkZHJlc3MBDnRvQ29tcG9zaXRlS2V5AgRfa2V5CF9hZGRyZXNzCQCsAgIJAKwCAgUEX2tleQIBXwUIX2FkZHJlc3MBC2Nvb3JkaW5hdG9yAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFFGtfY29vcmRpbmF0b3JBZGRyZXNzAhNDb29yZGluYXRvciBub3Qgc2V0AQtpc1doaXRlbGlzdAEIX2FkZHJlc3MJAQt2YWx1ZU9yRWxzZQIJAJsIAgkBC2Nvb3JkaW5hdG9yAAkBDnRvQ29tcG9zaXRlS2V5AgUFa19hbW0FCF9hZGRyZXNzBwEOYWRtaW5QdWJsaWNLZXkACQDZBAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFEmtfYWRtaW5fcHVibGljX2tleQEMYWRtaW5BZGRyZXNzAAkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgkBC2Nvb3JkaW5hdG9yAAUPa19hZG1pbl9hZGRyZXNzAhVBZG1pbiBhZGRyZXNzIG5vdCBzZXQBCnF1b3RlQXNzZXQACQDZBAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFDWtfcXVvdGVfYXNzZXQBDm1hbmFnZXJBZGRyZXNzAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFEWtfbWFuYWdlcl9hZGRyZXNzAg9NYW5hZ2VyIG5vdCBzZXQADERFQ0lNQUxfVU5JVAkAaAIAAQkAaAIJAGgCCQBoAgkAaAIJAGgCCQBoAgkAaAIACgAKAAoACgAKAAoACgAKAAhEVVJBVElPTgkAaAIJAGgCADwAPAAYAApOT19BRERSRVNTAgAACU5PX1NUQUtFUgAAARB1c2RuRnJvbURlY2ltYWxzAQdfYW1vdW50CQBpAgUHX2Ftb3VudABkAQ51c2RuVG9EZWNpbWFscwEHX2Ftb3VudAkAaAIFB19hbW91bnQAZAEEZGl2ZAICX3gCX3kJAG4EBQJfeAUMREVDSU1BTF9VTklUBQJfeQUISEFMRkVWRU4BBG11bGQCAl94Al95CQBuBAUCX3gFAl95BQxERUNJTUFMX1VOSVQFCEhBTEZFVkVOAQNhYnMBAl94AwkAZgIFAl94AAAFAl94CQEBLQEFAl94AQRtaW52AgJfeAJfeQMJAGYCBQJfeAUCX3kFAl95BQJfeAAPV0lUSERSQVdfUEVSSU9ECQBoAgCAowUA6AcAE1dJVEhEUkFXX1BFUl9QRVJJT0QJAQRkaXZkAgkAaAIAAQUMREVDSU1BTF9VTklUCQBoAgAEBQxERUNJTUFMX1VOSVQBA2ludAEBawkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMFAWsJAKwCAgINbm8gdmFsdWUgZm9yIAUBawEEaW50MAEBawkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFrAAABBGludDEBAWsJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUBawUMREVDSU1BTF9VTklUAQt0b3RhbFN1cHBseQAJAQRpbnQwAQUNa190b3RhbFN1cHBseQEEcmF0ZQAJAQRpbnQxAQUGa19yYXRlAQliYWxhbmNlT2YBB19zdGFrZXIJAQRpbnQwAQkBDnRvQ29tcG9zaXRlS2V5AgUJa19iYWxhbmNlBQdfc3Rha2VyAQthdmVyYWdlUmF0ZQEHX3N0YWtlcgkBBGludDABCQEOdG9Db21wb3NpdGVLZXkCBQ5rX2F2ZXJhZ2VfcmF0ZQUHX3N0YWtlcgENd2l0aGRyYXdMaW1pdAEHX3N0YWtlcgkBBGludDABCQEOdG9Db21wb3NpdGVLZXkCBRBrX3dpdGhkcmF3X2xpbWl0BQdfc3Rha2VyARF3aXRoZHJhd25JblBlcmlvZAEHX3N0YWtlcgkBBGludDABCQEOdG9Db21wb3NpdGVLZXkCBRRrX3dpdGhkcmF3X2luX3BlcmlvZAUHX3N0YWtlcgERbGFzdFdpdGhkcmF3bkRhdGUBB19zdGFrZXIJAQRpbnQwAQkBDnRvQ29tcG9zaXRlS2V5AgUUa19sYXN0X3dpdGhkcmF3X2RhdGUFB19zdGFrZXIBC2ZyZWVCYWxhbmNlAAkBBGludDABBQ1rX2ZyZWVCYWxhbmNlAQ1sb2NrZWRCYWxhbmNlAAkBBGludDABBQ9rX2xvY2tlZEJhbGFuY2UBC2luaXRpYWxpemVkAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQ1rX2luaXRpYWxpemVkBwEUZ2V0V2l0aGRyYXdMaW1pdExlZnQBB19zdGFrZXIEC2N1cnJlbnREYXRlCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQQbGFzdFdpdGhkcmF3RGF0ZQkBEWxhc3RXaXRoZHJhd25EYXRlAQUHX3N0YWtlcgQLJHQwNDMyNzQ1OTEDCQBmAgkAZQIFC2N1cnJlbnREYXRlBRBsYXN0V2l0aGRyYXdEYXRlBQ9XSVRIRFJBV19QRVJJT0QJAJQKAgULY3VycmVudERhdGUJAQ13aXRoZHJhd0xpbWl0AQUHX3N0YWtlcgkAlAoCBRBsYXN0V2l0aGRyYXdEYXRlCQBlAgkBDXdpdGhkcmF3TGltaXQBBQdfc3Rha2VyCQERd2l0aGRyYXduSW5QZXJpb2QBBQdfc3Rha2VyBBRuZXdMYXN0V2l0aGRyYXduRGF0ZQgFCyR0MDQzMjc0NTkxAl8xBBF3aXRoZHJhd0xpbWl0TGVmdAgFCyR0MDQzMjc0NTkxAl8yCQCUCgIFFG5ld0xhc3RXaXRoZHJhd25EYXRlBRF3aXRoZHJhd0xpbWl0TGVmdAERdXBkYXRlVXNlckJhbGFuY2UCBV91c2VyB19jaGFuZ2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFCWtfYmFsYW5jZQUFX3VzZXIJAGQCCQEJYmFsYW5jZU9mAQUFX3VzZXIFB19jaGFuZ2UFA25pbAEUc2V0VXNlcldpdGhkcmF3TGltaXQCBV91c2VyBV9yYXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBRBrX3dpdGhkcmF3X2xpbWl0BQVfdXNlcgUFX3JhdGUFA25pbAESc2V0VXNlckF2ZXJhZ2VSYXRlAgVfdXNlcgVfcmF0ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUOa19hdmVyYWdlX3JhdGUFBV91c2VyBQVfcmF0ZQUDbmlsARF1cGRhdGVGcmVlQmFsYW5jZQEHX2NoYW5nZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUNa19mcmVlQmFsYW5jZQkAZAIJAQtmcmVlQmFsYW5jZQAFB19jaGFuZ2UFA25pbAETdXBkYXRlTG9ja2VkQmFsYW5jZQEHX2NoYW5nZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUPa19sb2NrZWRCYWxhbmNlCQBkAgkBDWxvY2tlZEJhbGFuY2UABQdfY2hhbmdlBQNuaWwBEXVwZGF0ZVRvdGFsU3VwcGx5AQdfY2hhbmdlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rX3RvdGFsU3VwcGx5CQBkAgkBC3RvdGFsU3VwcGx5AAUHX2NoYW5nZQUDbmlsAQp1cGRhdGVSYXRlAQVfcmF0ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUGa19yYXRlBQVfcmF0ZQUDbmlsARVzZXRVc2VyV2l0aGRyYXdQYXJhbXMDBV91c2VyEV9sYXN0V2l0aGRyYXdEYXRlCl93aXRoZHJhd24JAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFFGtfbGFzdF93aXRoZHJhd19kYXRlBQVfdXNlcgURX2xhc3RXaXRoZHJhd0RhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFFGtfd2l0aGRyYXdfaW5fcGVyaW9kBQVfdXNlcgUKX3dpdGhkcmF3bgUDbmlsCQFpAQppbml0aWFsaXplAQxfY29vcmRpbmF0b3IDCQELaW5pdGlhbGl6ZWQACQACAQITQWxyZWFkeSBpbml0aWFsaXplZAkAzAgCCQELU3RyaW5nRW50cnkCBRRrX2Nvb3JkaW5hdG9yQWRkcmVzcwUMX2Nvb3JkaW5hdG9yCQDMCAIJAQxCb29sZWFuRW50cnkCBQ1rX2luaXRpYWxpemVkBgUDbmlsAWkBBXN0YWtlAAQHX3N0YWtlcgkApQgBCAUBaQZjYWxsZXIEB19hbW91bnQJAQ51c2RuVG9EZWNpbWFscwEICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50AwMJAQIhPQIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAkBCnF1b3RlQXNzZXQABgkBASEBCQELaW5pdGlhbGl6ZWQACQACAQIVSW52YWxpZCBjYWxsIHRvIHN0YWtlBAtjdXJyZW50UmF0ZQkBBHJhdGUABA9wcmV2QXZlcmFnZVJhdGUJAQthdmVyYWdlUmF0ZQEFB19zdGFrZXIEB3ZBbW91bnQJAQRkaXZkAgUHX2Ftb3VudAULY3VycmVudFJhdGUEDm5ld0F2ZXJhZ2VSYXRlCQEEZGl2ZAIJAGQCCQEEbXVsZAIFB3ZBbW91bnQFC2N1cnJlbnRSYXRlCQEEbXVsZAIJAQliYWxhbmNlT2YBBQdfc3Rha2VyBQ9wcmV2QXZlcmFnZVJhdGUJAGQCBQtjdXJyZW50UmF0ZQUPcHJldkF2ZXJhZ2VSYXRlBA9uZXdUb3RhbEJhbGFuY2UJAGQCBQd2QW1vdW50CQEJYmFsYW5jZU9mAQUHX3N0YWtlcgQQbmV3V2l0aGRyYXdMaW1pdAkBBG11bGQCBQ9uZXdUb3RhbEJhbGFuY2UFE1dJVEhEUkFXX1BFUl9QRVJJT0QEBXN0YWtlCQD8BwQJAQ5tYW5hZ2VyQWRkcmVzcwACB2RlcG9zaXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBCnF1b3RlQXNzZXQACQEQdXNkbkZyb21EZWNpbWFscwEFB19hbW91bnQFA25pbAMJAAACBQVzdGFrZQUFc3Rha2UJAM4IAgkAzggCCQDOCAIJAM4IAgkBEXVwZGF0ZUZyZWVCYWxhbmNlAQUHX2Ftb3VudAkBEXVwZGF0ZVVzZXJCYWxhbmNlAgUHX3N0YWtlcgUHdkFtb3VudAkBEnNldFVzZXJBdmVyYWdlUmF0ZQIFB19zdGFrZXIFDm5ld0F2ZXJhZ2VSYXRlCQEUc2V0VXNlcldpdGhkcmF3TGltaXQCBQdfc3Rha2VyBRBuZXdXaXRoZHJhd0xpbWl0CQERdXBkYXRlVG90YWxTdXBwbHkBBQd2QW1vdW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBB3VuU3Rha2UBB19hbW91bnQEB19zdGFrZXIJAKUIAQgFAWkGY2FsbGVyBBJhbW91bnRPZlF1b3RlQXNzZXQJAQ51c2RuVG9EZWNpbWFscwEFB19hbW91bnQDAwkBAiE9AggFAWkIcGF5bWVudHMFA25pbAYJAQEhAQkBC2luaXRpYWxpemVkAAkAAgECF0ludmFsaWQgY2FsbCB0byB1blN0YWtlBAskdDA3NjA0Nzc0NQkBFGdldFdpdGhkcmF3TGltaXRMZWZ0AQUHX3N0YWtlcgQUbmV3TGFzdFdpdGhkcmF3bkRhdGUIBQskdDA3NjA0Nzc0NQJfMQQRd2l0aGRyYXdMaW1pdExlZnQIBQskdDA3NjA0Nzc0NQJfMgQHdkFtb3VudAkBBGRpdmQCBRJhbW91bnRPZlF1b3RlQXNzZXQJAQRyYXRlAAMJAGYCBQd2QW1vdW50BRF3aXRoZHJhd0xpbWl0TGVmdAkAAgECLEludmFsaWQgY2FsbCB0byB1blN0YWtlOiB3aXRoZHJhdyBvdmVyIGxpbWl0BBRuZXdXaXRoZHJhd25JblBlcmlvZAkAZAIJARF3aXRoZHJhd25JblBlcmlvZAEFB19zdGFrZXIFB3ZBbW91bnQDCQBmAgUSYW1vdW50T2ZRdW90ZUFzc2V0CQELZnJlZUJhbGFuY2UACQACAQIoSW52YWxpZCBjYWxsIHRvIHVuU3Rha2U6IGJhbGFuY2UgdG9vIGxvdwQHdW5zdGFrZQkA/AcECQEObWFuYWdlckFkZHJlc3MAAgh3aXRoZHJhdwkAzAgCCQDYBAEJAQpxdW90ZUFzc2V0AAkAzAgCCQEQdXNkbkZyb21EZWNpbWFscwEFEmFtb3VudE9mUXVvdGVBc3NldAUDbmlsBQNuaWwDCQAAAgUHdW5zdGFrZQUHdW5zdGFrZQkAzggCCQDOCAIJAM4IAgkAzggCCQERdXBkYXRlRnJlZUJhbGFuY2UBCQEBLQEFEmFtb3VudE9mUXVvdGVBc3NldAkBEXVwZGF0ZVVzZXJCYWxhbmNlAgUHX3N0YWtlcgkBAS0BBQd2QW1vdW50CQERdXBkYXRlVG90YWxTdXBwbHkBCQEBLQEFB3ZBbW91bnQJARVzZXRVc2VyV2l0aGRyYXdQYXJhbXMDBQdfc3Rha2VyBRRuZXdMYXN0V2l0aGRyYXduRGF0ZQUUbmV3V2l0aGRyYXduSW5QZXJpb2QJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQEQdXNkbkZyb21EZWNpbWFscwEFEmFtb3VudE9mUXVvdGVBc3NldAkBCnF1b3RlQXNzZXQABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEHYWRkRnJlZQAEB19hbW91bnQJAQ51c2RuVG9EZWNpbWFscwEICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50AwMDCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQJAQpxdW90ZUFzc2V0AAYJAQEhAQkBC2luaXRpYWxpemVkAAYJAQEhAQMJAQtpc1doaXRlbGlzdAEJAKUIAQgFAWkGY2FsbGVyBgkAAAIIBQFpBmNhbGxlcgkBDGFkbWluQWRkcmVzcwAJAAIBAhZJbnZhbGlkIGFkZEZyZWUgcGFyYW1zBAduZXdSYXRlAwkAZgIJAQt0b3RhbFN1cHBseQAAAAkBBGRpdmQCCQBkAgkBC2ZyZWVCYWxhbmNlAAUHX2Ftb3VudAkBC3RvdGFsU3VwcGx5AAUMREVDSU1BTF9VTklUBAd1bnN0YWtlCQD8BwQJAQ5tYW5hZ2VyQWRkcmVzcwACB2RlcG9zaXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBCnF1b3RlQXNzZXQACQEQdXNkbkZyb21EZWNpbWFscwEFB19hbW91bnQFA25pbAMJAAACBQd1bnN0YWtlBQd1bnN0YWtlCQDOCAIJARF1cGRhdGVGcmVlQmFsYW5jZQEFB19hbW91bnQJAQp1cGRhdGVSYXRlAQUHbmV3UmF0ZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQlhZGRMb2NrZWQABAdfYW1vdW50CQEOdXNkblRvRGVjaW1hbHMBCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAMDAwkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCQEKcXVvdGVBc3NldAAGCQEBIQEJAQtpbml0aWFsaXplZAAGCQEBIQEDCQELaXNXaGl0ZWxpc3QBCQClCAEIBQFpBmNhbGxlcgYJAAACCAUBaQZjYWxsZXIJAQxhZG1pbkFkZHJlc3MACQACAQIYSW52YWxpZCBhZGRMb2NrZWQgcGFyYW1zBAd1bnN0YWtlCQD8BwQJAQ5tYW5hZ2VyQWRkcmVzcwACB2RlcG9zaXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBCnF1b3RlQXNzZXQACQEQdXNkbkZyb21EZWNpbWFscwEFB19hbW91bnQFA25pbAMJAAACBQd1bnN0YWtlBQd1bnN0YWtlCQETdXBkYXRlTG9ja2VkQmFsYW5jZQEFB19hbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEVZXhjaGFuZ2VGcmVlQW5kTG9ja2VkAQdfYW1vdW50AwMJAQEhAQkBC2luaXRpYWxpemVkAAYJAQEhAQMJAQtpc1doaXRlbGlzdAEJAKUIAQgFAWkGY2FsbGVyBgkAAAIIBQFpBmNhbGxlcgkBDGFkbWluQWRkcmVzcwAJAAIBAiRJbnZhbGlkIGV4Y2hhbmdlRnJlZUFuZExvY2tlZCBwYXJhbXMEEmFtb3VudE9mUXVvdGVBc3NldAkBDnVzZG5Ub0RlY2ltYWxzAQUHX2Ftb3VudAQHbmV3UmF0ZQMJAGYCCQELdG90YWxTdXBwbHkAAAAJAQRkaXZkAgkAZQIJAQtmcmVlQmFsYW5jZQAFEmFtb3VudE9mUXVvdGVBc3NldAkBC3RvdGFsU3VwcGx5AAUMREVDSU1BTF9VTklUCQDOCAIJAM4IAgkBE3VwZGF0ZUxvY2tlZEJhbGFuY2UBBRJhbW91bnRPZlF1b3RlQXNzZXQJARF1cGRhdGVGcmVlQmFsYW5jZQEJAQEtAQUSYW1vdW50T2ZRdW90ZUFzc2V0CQEKdXBkYXRlUmF0ZQEFB25ld1JhdGUBaQEOd2l0aGRyYXdMb2NrZWQBB19hbW91bnQDAwMJAQEhAQkBC2luaXRpYWxpemVkAAYJAGcCAAAFB19hbW91bnQGCQEBIQEJAQtpc1doaXRlbGlzdAEJAKUIAQgFAWkGY2FsbGVyCQACAQIdSW52YWxpZCB3aXRoZHJhd0xvY2tlZCBwYXJhbXMEEmFtb3VudE9mUXVvdGVBc3NldAkBDnVzZG5Ub0RlY2ltYWxzAQUHX2Ftb3VudAQHdW5zdGFrZQkA/AcECQEObWFuYWdlckFkZHJlc3MAAgh3aXRoZHJhdwkAzAgCCQDYBAEJAQpxdW90ZUFzc2V0AAkAzAgCCQEQdXNkbkZyb21EZWNpbWFscwEFEmFtb3VudE9mUXVvdGVBc3NldAUDbmlsBQNuaWwDCQAAAgUHdW5zdGFrZQUHdW5zdGFrZQkAzggCCQETdXBkYXRlTG9ja2VkQmFsYW5jZQEJAQEtAQUSYW1vdW50T2ZRdW90ZUFzc2V0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkBEHVzZG5Gcm9tRGVjaW1hbHMBBRJhbW91bnRPZlF1b3RlQXNzZXQJAQpxdW90ZUFzc2V0AAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBC3ZpZXdfcmV3YXJkAQdfc3Rha2VyBAdiYWxhbmNlCQEJYmFsYW5jZU9mAQUHX3N0YWtlcgQPZGVwb3NpdGVkQW1vdW50CQEEbXVsZAIJAQthdmVyYWdlUmF0ZQEFB19zdGFrZXIFB2JhbGFuY2UEDWN1cnJlbnRBbW91bnQJAQRtdWxkAgkBBHJhdGUABQdiYWxhbmNlBAZlYXJuZWQJAGUCBQ1jdXJyZW50QW1vdW50BQ9kZXBvc2l0ZWRBbW91bnQJAAIBCQCkAwEFBmVhcm5lZAFpARJ2aWV3X3dpdGhkcmF3TGltaXQBB19zdGFrZXIEEXdpdGhkcmF3TGltaXRMZWZ0CAkBFGdldFdpdGhkcmF3TGltaXRMZWZ0AQUHX3N0YWtlcgJfMgQLbGltaXRJblVzZG4JARB1c2RuRnJvbURlY2ltYWxzAQkBBG11bGQCBRF3aXRoZHJhd0xpbWl0TGVmdAkBBHJhdGUACQACAQkApAMBBQtsaW1pdEluVXNkbgECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAJAQ5hZG1pblB1YmxpY0tleQDc5+Ho", "height": 2336885, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: A23uyJcPFbSeJSK1YvxF1druv295S4vMd9oPuLYTUvMJ Next: 7Sn8aJWrWUwG7L5o8ps4qXkCqXcDXAsBujNT1dxt1J8j Diff:
OldNewDifferences
1313
1414 let f = "k_average_rate"
1515
16-let g = "k_withdraw_rate"
16+let g = "k_withdraw_limit"
1717
18-let h = "k_initialized"
18+let h = "k_last_withdraw_date"
1919
20-let i = "k_coordinatorAddress"
20+let i = "k_withdraw_in_period"
2121
22-let j = "k_amm"
22+let j = "k_initialized"
2323
24-let k = "k_quote_asset"
24+let k = "k_coordinatorAddress"
2525
26-let l = "k_admin_public_key"
26+let l = "k_amm"
2727
28-let m = "k_admin_address"
28+let m = "k_quote_asset"
2929
30-let n = "k_manager_address"
30+let n = "k_admin_public_key"
3131
32-func o (p,q) = ((p + "_") + q)
32+let o = "k_admin_address"
33+
34+let p = "k_manager_address"
35+
36+func q (r,s) = ((r + "_") + s)
3337
3438
35-func r () = valueOrErrorMessage(addressFromString(getStringValue(this, i)), "Coordinator not set")
39+func t () = valueOrErrorMessage(addressFromString(getStringValue(this, k)), "Coordinator not set")
3640
3741
38-func s (q) = valueOrElse(getBoolean(r(), o(j, q)), false)
42+func u (s) = valueOrElse(getBoolean(t(), q(l, s)), false)
3943
4044
41-func t () = fromBase58String(getStringValue(r(), l))
45+func v () = fromBase58String(getStringValue(t(), n))
4246
4347
44-func u () = addressFromString(valueOrErrorMessage(getString(r(), m), "Admin address not set"))
48+func w () = addressFromString(valueOrErrorMessage(getString(t(), o), "Admin address not set"))
4549
4650
47-func v () = fromBase58String(getStringValue(r(), k))
51+func x () = fromBase58String(getStringValue(t(), m))
4852
4953
50-func w () = valueOrErrorMessage(addressFromString(getStringValue(r(), n)), "Manager not set")
54+func y () = valueOrErrorMessage(addressFromString(getStringValue(t(), p)), "Manager not set")
5155
5256
53-let x = (1 * (((((((10 * 10) * 10) * 10) * 10) * 10) * 10) * 10))
57+let z = (1 * (((((((10 * 10) * 10) * 10) * 10) * 10) * 10) * 10))
5458
55-let y = ((60 * 60) * 24)
59+let A = ((60 * 60) * 24)
5660
57-let z = ""
61+let B = ""
5862
59-let A = 0
63+let C = 0
6064
61-func B (C) = (C / 100)
65+func D (E) = (E / 100)
6266
6367
64-func D (C) = (C * 100)
68+func F (E) = (E * 100)
6569
6670
67-func E (F,G) = fraction(F, x, G, HALFEVEN)
71+func G (H,I) = fraction(H, z, I, HALFEVEN)
6872
6973
70-func H (F,G) = fraction(F, G, x, HALFEVEN)
74+func J (H,I) = fraction(H, I, z, HALFEVEN)
7175
7276
73-func I (F) = if ((F > 0))
74- then F
75- else -(F)
77+func K (H) = if ((H > 0))
78+ then H
79+ else -(H)
7680
7781
78-func J (F,G) = if ((F > G))
79- then G
80- else F
82+func L (H,I) = if ((H > I))
83+ then I
84+ else H
8185
8286
83-func K (L) = valueOrErrorMessage(getInteger(this, L), ("no value for " + L))
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))
8492
8593
86-func M (L) = valueOrElse(getInteger(this, L), 0)
94+func Q (P) = valueOrElse(getInteger(this, P), 0)
8795
8896
89-func N (L) = valueOrElse(getInteger(this, L), x)
97+func R (P) = valueOrElse(getInteger(this, P), z)
9098
9199
92-func O () = M(a)
100+func S () = Q(a)
93101
94102
95-func P () = N(d)
103+func T () = R(d)
96104
97105
98-func Q (R) = M(o(e, R))
106+func U (V) = Q(q(e, V))
99107
100108
101-func S (R) = M(o(f, R))
109+func W (V) = Q(q(f, V))
102110
103111
104-func T () = M(c)
112+func X (V) = Q(q(g, V))
105113
106114
107-func U () = M(b)
115+func Y (V) = Q(q(i, V))
108116
109117
110-func V () = valueOrElse(getBoolean(this, h), false)
118+func Z (V) = Q(q(h, V))
111119
112120
113-func W (X,Y) = [IntegerEntry(o(e, X), (Q(X) + Y))]
121+func aa () = Q(c)
114122
115123
116-func Z (X,aa) = [IntegerEntry(o(f, X), aa)]
124+func ab () = Q(b)
117125
118126
119-func ab (Y) = [IntegerEntry(c, (T() + Y))]
127+func ac () = valueOrElse(getBoolean(this, j), false)
120128
121129
122-func ac (Y) = [IntegerEntry(b, (U() + Y))]
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)
139+ }
123140
124141
125-func ad (Y) = [IntegerEntry(a, (O() + Y))]
142+func aj (ak,al) = [IntegerEntry(q(e, ak), (U(ak) + al))]
126143
127144
128-func ae (aa) = [IntegerEntry(d, aa)]
145+func am (ak,an) = [IntegerEntry(q(g, ak), an)]
129146
130147
131-@Callable(af)
132-func initialize (ag) = if (V())
148+func ao (ak,an) = [IntegerEntry(q(f, ak), an)]
149+
150+
151+func ap (al) = [IntegerEntry(c, (aa() + al))]
152+
153+
154+func aq (al) = [IntegerEntry(b, (ab() + al))]
155+
156+
157+func ar (al) = [IntegerEntry(a, (S() + al))]
158+
159+
160+func as (an) = [IntegerEntry(d, an)]
161+
162+
163+func at (ak,au,av) = [IntegerEntry(q(h, ak), au), IntegerEntry(q(i, ak), av)]
164+
165+
166+@Callable(aw)
167+func initialize (ax) = if (ac())
133168 then throw("Already initialized")
134- else [StringEntry(i, ag), BooleanEntry(h, true)]
169+ else [StringEntry(k, ax), BooleanEntry(j, true)]
135170
136171
137172
138-@Callable(af)
173+@Callable(aw)
139174 func stake () = {
140- let R = toString(af.caller)
141- let C = af.payments[0].amount
142- if (if ((af.payments[0].assetId != v()))
175+ let V = toString(aw.caller)
176+ let E = F(aw.payments[0].amount)
177+ if (if ((aw.payments[0].assetId != x()))
143178 then true
144- else !(V()))
179+ else !(ac()))
145180 then throw("Invalid call to stake")
146181 else {
147- let ah = P()
148- let ai = S(R)
149- let aj = E(D(C), ah)
150- let ak = E((H(aj, ah) + H(Q(R), ai)), (ah + ai))
151- let al = invoke(w(), "deposit", nil, [AttachedPayment(v(), C)])
152- if ((al == al))
153- then (((ab(C) ++ W(R, aj)) ++ Z(R, ak)) ++ ad(aj))
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))
154191 else throw("Strict value is not equal to itself.")
155192 }
156193 }
157194
158195
159196
160-@Callable(af)
161-func unStake (am) = {
162- let R = toString(af.caller)
163- if (if (if ((am > Q(R)))
197+@Callable(aw)
198+func unStake (E) = {
199+ let V = toString(aw.caller)
200+ let aF = F(E)
201+ if (if ((aw.payments != nil))
164202 then true
165- else (af.payments != nil))
166- then true
167- else !(V()))
203+ else !(ac()))
168204 then throw("Invalid call to unStake")
169205 else {
170- let an = H(am, P())
171- if ((T() > an))
172- then throw("Balance to low")
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))
211+ then throw("Invalid call to unStake: withdraw over limit")
173212 else {
174- let al = invoke(w(), "withdraw", [toBase58String(v()), B(an)], nil)
175- if ((al == al))
176- then (((ab(-(an)) ++ W(R, -(am))) ++ ad(-(am))) ++ [ScriptTransfer(af.caller, B(an), v())])
177- else throw("Strict value is not equal to itself.")
213+ let aH = (Y(V) + aA)
214+ if ((aF > aa()))
215+ then throw("Invalid call to unStake: balance too low")
216+ 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())])
220+ else throw("Strict value is not equal to itself.")
221+ }
178222 }
179223 }
180224 }
181225
182226
183227
184-@Callable(af)
228+@Callable(aw)
185229 func addFree () = {
186- let C = af.payments[0].amount
187- if (if (if ((af.payments[0].assetId != v()))
230+ let E = F(aw.payments[0].amount)
231+ if (if (if ((aw.payments[0].assetId != x()))
188232 then true
189- else !(V()))
233+ else !(ac()))
190234 then true
191- else !(if (s(toString(af.caller)))
235+ else !(if (u(toString(aw.caller)))
192236 then true
193- else (af.caller == u())))
237+ else (aw.caller == w())))
194238 then throw("Invalid addFree params")
195239 else {
196- let an = D(C)
197- let ao = if ((O() > 0))
198- then E((T() + an), O())
199- else x
200- let al = invoke(w(), "deposit", nil, [AttachedPayment(v(), C)])
201- if ((al == al))
202- then (ab(an) ++ ae(ao))
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))
203246 else throw("Strict value is not equal to itself.")
204247 }
205248 }
206249
207250
208251
209-@Callable(af)
252+@Callable(aw)
210253 func addLocked () = {
211- let C = af.payments[0].amount
212- if (if (if ((af.payments[0].assetId != v()))
254+ let E = F(aw.payments[0].amount)
255+ if (if (if ((aw.payments[0].assetId != x()))
213256 then true
214- else !(V()))
257+ else !(ac()))
215258 then true
216- else !(if (s(toString(af.caller)))
259+ else !(if (u(toString(aw.caller)))
217260 then true
218- else (af.caller == u())))
261+ else (aw.caller == w())))
219262 then throw("Invalid addLocked params")
220263 else {
221- let an = D(C)
222- let al = invoke(w(), "deposit", nil, [AttachedPayment(v(), C)])
223- if ((al == al))
224- then ac(an)
264+ let aI = invoke(y(), "deposit", nil, [AttachedPayment(x(), D(E))])
265+ if ((aI == aI))
266+ then aq(E)
225267 else throw("Strict value is not equal to itself.")
226268 }
227269 }
228270
229271
230272
231-@Callable(af)
232-func exchangeFreeAndLocked (C) = if (if (!(V()))
273+@Callable(aw)
274+func exchangeFreeAndLocked (E) = if (if (!(ac()))
233275 then true
234- else !(if (s(toString(af.caller)))
276+ else !(if (u(toString(aw.caller)))
235277 then true
236- else (af.caller == u())))
278+ else (aw.caller == w())))
237279 then throw("Invalid exchangeFreeAndLocked params")
238280 else {
239- let an = D(C)
240- let ao = if ((O() > 0))
241- then E((T() - an), O())
242- else x
243- ((ac(an) ++ ab(-(an))) ++ ae(ao))
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))
244286 }
245287
246288
247289
248-@Callable(af)
249-func withdrawLocked (C) = if (if (if (!(V()))
290+@Callable(aw)
291+func withdrawLocked (E) = if (if (if (!(ac()))
250292 then true
251- else (0 >= C))
293+ else (0 >= E))
252294 then true
253- else !(s(toString(af.caller))))
295+ else !(u(toString(aw.caller))))
254296 then throw("Invalid withdrawLocked params")
255297 else {
256- let an = D(C)
257- let al = invoke(w(), "withdraw", [toBase58String(v()), C], nil)
258- if ((al == al))
259- then (ac(-(an)) ++ [ScriptTransfer(af.caller, C, v())])
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())])
260302 else throw("Strict value is not equal to itself.")
261303 }
262304
263305
264306
265-@Callable(af)
266-func view_reward (ap) = {
267- let aq = Q(ap)
268- let ar = H(S(ap), aq)
269- let as = H(P(), aq)
270- let at = (as - ar)
271- throw(toString(at))
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))
272314 }
273315
274316
275-@Verifier(au)
276-func av () = sigVerify(au.bodyBytes, au.proofs[0], t())
317+
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))
323+ }
324+
325+
326+@Verifier(aP)
327+func aQ () = sigVerify(aP.bodyBytes, aP.proofs[0], v())
277328
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
88 let c = "k_freeBalance"
99
1010 let d = "k_rate"
1111
1212 let e = "k_balance"
1313
1414 let f = "k_average_rate"
1515
16-let g = "k_withdraw_rate"
16+let g = "k_withdraw_limit"
1717
18-let h = "k_initialized"
18+let h = "k_last_withdraw_date"
1919
20-let i = "k_coordinatorAddress"
20+let i = "k_withdraw_in_period"
2121
22-let j = "k_amm"
22+let j = "k_initialized"
2323
24-let k = "k_quote_asset"
24+let k = "k_coordinatorAddress"
2525
26-let l = "k_admin_public_key"
26+let l = "k_amm"
2727
28-let m = "k_admin_address"
28+let m = "k_quote_asset"
2929
30-let n = "k_manager_address"
30+let n = "k_admin_public_key"
3131
32-func o (p,q) = ((p + "_") + q)
32+let o = "k_admin_address"
33+
34+let p = "k_manager_address"
35+
36+func q (r,s) = ((r + "_") + s)
3337
3438
35-func r () = valueOrErrorMessage(addressFromString(getStringValue(this, i)), "Coordinator not set")
39+func t () = valueOrErrorMessage(addressFromString(getStringValue(this, k)), "Coordinator not set")
3640
3741
38-func s (q) = valueOrElse(getBoolean(r(), o(j, q)), false)
42+func u (s) = valueOrElse(getBoolean(t(), q(l, s)), false)
3943
4044
41-func t () = fromBase58String(getStringValue(r(), l))
45+func v () = fromBase58String(getStringValue(t(), n))
4246
4347
44-func u () = addressFromString(valueOrErrorMessage(getString(r(), m), "Admin address not set"))
48+func w () = addressFromString(valueOrErrorMessage(getString(t(), o), "Admin address not set"))
4549
4650
47-func v () = fromBase58String(getStringValue(r(), k))
51+func x () = fromBase58String(getStringValue(t(), m))
4852
4953
50-func w () = valueOrErrorMessage(addressFromString(getStringValue(r(), n)), "Manager not set")
54+func y () = valueOrErrorMessage(addressFromString(getStringValue(t(), p)), "Manager not set")
5155
5256
53-let x = (1 * (((((((10 * 10) * 10) * 10) * 10) * 10) * 10) * 10))
57+let z = (1 * (((((((10 * 10) * 10) * 10) * 10) * 10) * 10) * 10))
5458
55-let y = ((60 * 60) * 24)
59+let A = ((60 * 60) * 24)
5660
57-let z = ""
61+let B = ""
5862
59-let A = 0
63+let C = 0
6064
61-func B (C) = (C / 100)
65+func D (E) = (E / 100)
6266
6367
64-func D (C) = (C * 100)
68+func F (E) = (E * 100)
6569
6670
67-func E (F,G) = fraction(F, x, G, HALFEVEN)
71+func G (H,I) = fraction(H, z, I, HALFEVEN)
6872
6973
70-func H (F,G) = fraction(F, G, x, HALFEVEN)
74+func J (H,I) = fraction(H, I, z, HALFEVEN)
7175
7276
73-func I (F) = if ((F > 0))
74- then F
75- else -(F)
77+func K (H) = if ((H > 0))
78+ then H
79+ else -(H)
7680
7781
78-func J (F,G) = if ((F > G))
79- then G
80- else F
82+func L (H,I) = if ((H > I))
83+ then I
84+ else H
8185
8286
83-func K (L) = valueOrErrorMessage(getInteger(this, L), ("no value for " + L))
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))
8492
8593
86-func M (L) = valueOrElse(getInteger(this, L), 0)
94+func Q (P) = valueOrElse(getInteger(this, P), 0)
8795
8896
89-func N (L) = valueOrElse(getInteger(this, L), x)
97+func R (P) = valueOrElse(getInteger(this, P), z)
9098
9199
92-func O () = M(a)
100+func S () = Q(a)
93101
94102
95-func P () = N(d)
103+func T () = R(d)
96104
97105
98-func Q (R) = M(o(e, R))
106+func U (V) = Q(q(e, V))
99107
100108
101-func S (R) = M(o(f, R))
109+func W (V) = Q(q(f, V))
102110
103111
104-func T () = M(c)
112+func X (V) = Q(q(g, V))
105113
106114
107-func U () = M(b)
115+func Y (V) = Q(q(i, V))
108116
109117
110-func V () = valueOrElse(getBoolean(this, h), false)
118+func Z (V) = Q(q(h, V))
111119
112120
113-func W (X,Y) = [IntegerEntry(o(e, X), (Q(X) + Y))]
121+func aa () = Q(c)
114122
115123
116-func Z (X,aa) = [IntegerEntry(o(f, X), aa)]
124+func ab () = Q(b)
117125
118126
119-func ab (Y) = [IntegerEntry(c, (T() + Y))]
127+func ac () = valueOrElse(getBoolean(this, j), false)
120128
121129
122-func ac (Y) = [IntegerEntry(b, (U() + Y))]
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)
139+ }
123140
124141
125-func ad (Y) = [IntegerEntry(a, (O() + Y))]
142+func aj (ak,al) = [IntegerEntry(q(e, ak), (U(ak) + al))]
126143
127144
128-func ae (aa) = [IntegerEntry(d, aa)]
145+func am (ak,an) = [IntegerEntry(q(g, ak), an)]
129146
130147
131-@Callable(af)
132-func initialize (ag) = if (V())
148+func ao (ak,an) = [IntegerEntry(q(f, ak), an)]
149+
150+
151+func ap (al) = [IntegerEntry(c, (aa() + al))]
152+
153+
154+func aq (al) = [IntegerEntry(b, (ab() + al))]
155+
156+
157+func ar (al) = [IntegerEntry(a, (S() + al))]
158+
159+
160+func as (an) = [IntegerEntry(d, an)]
161+
162+
163+func at (ak,au,av) = [IntegerEntry(q(h, ak), au), IntegerEntry(q(i, ak), av)]
164+
165+
166+@Callable(aw)
167+func initialize (ax) = if (ac())
133168 then throw("Already initialized")
134- else [StringEntry(i, ag), BooleanEntry(h, true)]
169+ else [StringEntry(k, ax), BooleanEntry(j, true)]
135170
136171
137172
138-@Callable(af)
173+@Callable(aw)
139174 func stake () = {
140- let R = toString(af.caller)
141- let C = af.payments[0].amount
142- if (if ((af.payments[0].assetId != v()))
175+ let V = toString(aw.caller)
176+ let E = F(aw.payments[0].amount)
177+ if (if ((aw.payments[0].assetId != x()))
143178 then true
144- else !(V()))
179+ else !(ac()))
145180 then throw("Invalid call to stake")
146181 else {
147- let ah = P()
148- let ai = S(R)
149- let aj = E(D(C), ah)
150- let ak = E((H(aj, ah) + H(Q(R), ai)), (ah + ai))
151- let al = invoke(w(), "deposit", nil, [AttachedPayment(v(), C)])
152- if ((al == al))
153- then (((ab(C) ++ W(R, aj)) ++ Z(R, ak)) ++ ad(aj))
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))
154191 else throw("Strict value is not equal to itself.")
155192 }
156193 }
157194
158195
159196
160-@Callable(af)
161-func unStake (am) = {
162- let R = toString(af.caller)
163- if (if (if ((am > Q(R)))
197+@Callable(aw)
198+func unStake (E) = {
199+ let V = toString(aw.caller)
200+ let aF = F(E)
201+ if (if ((aw.payments != nil))
164202 then true
165- else (af.payments != nil))
166- then true
167- else !(V()))
203+ else !(ac()))
168204 then throw("Invalid call to unStake")
169205 else {
170- let an = H(am, P())
171- if ((T() > an))
172- then throw("Balance to low")
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))
211+ then throw("Invalid call to unStake: withdraw over limit")
173212 else {
174- let al = invoke(w(), "withdraw", [toBase58String(v()), B(an)], nil)
175- if ((al == al))
176- then (((ab(-(an)) ++ W(R, -(am))) ++ ad(-(am))) ++ [ScriptTransfer(af.caller, B(an), v())])
177- else throw("Strict value is not equal to itself.")
213+ let aH = (Y(V) + aA)
214+ if ((aF > aa()))
215+ then throw("Invalid call to unStake: balance too low")
216+ 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())])
220+ else throw("Strict value is not equal to itself.")
221+ }
178222 }
179223 }
180224 }
181225
182226
183227
184-@Callable(af)
228+@Callable(aw)
185229 func addFree () = {
186- let C = af.payments[0].amount
187- if (if (if ((af.payments[0].assetId != v()))
230+ let E = F(aw.payments[0].amount)
231+ if (if (if ((aw.payments[0].assetId != x()))
188232 then true
189- else !(V()))
233+ else !(ac()))
190234 then true
191- else !(if (s(toString(af.caller)))
235+ else !(if (u(toString(aw.caller)))
192236 then true
193- else (af.caller == u())))
237+ else (aw.caller == w())))
194238 then throw("Invalid addFree params")
195239 else {
196- let an = D(C)
197- let ao = if ((O() > 0))
198- then E((T() + an), O())
199- else x
200- let al = invoke(w(), "deposit", nil, [AttachedPayment(v(), C)])
201- if ((al == al))
202- then (ab(an) ++ ae(ao))
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))
203246 else throw("Strict value is not equal to itself.")
204247 }
205248 }
206249
207250
208251
209-@Callable(af)
252+@Callable(aw)
210253 func addLocked () = {
211- let C = af.payments[0].amount
212- if (if (if ((af.payments[0].assetId != v()))
254+ let E = F(aw.payments[0].amount)
255+ if (if (if ((aw.payments[0].assetId != x()))
213256 then true
214- else !(V()))
257+ else !(ac()))
215258 then true
216- else !(if (s(toString(af.caller)))
259+ else !(if (u(toString(aw.caller)))
217260 then true
218- else (af.caller == u())))
261+ else (aw.caller == w())))
219262 then throw("Invalid addLocked params")
220263 else {
221- let an = D(C)
222- let al = invoke(w(), "deposit", nil, [AttachedPayment(v(), C)])
223- if ((al == al))
224- then ac(an)
264+ let aI = invoke(y(), "deposit", nil, [AttachedPayment(x(), D(E))])
265+ if ((aI == aI))
266+ then aq(E)
225267 else throw("Strict value is not equal to itself.")
226268 }
227269 }
228270
229271
230272
231-@Callable(af)
232-func exchangeFreeAndLocked (C) = if (if (!(V()))
273+@Callable(aw)
274+func exchangeFreeAndLocked (E) = if (if (!(ac()))
233275 then true
234- else !(if (s(toString(af.caller)))
276+ else !(if (u(toString(aw.caller)))
235277 then true
236- else (af.caller == u())))
278+ else (aw.caller == w())))
237279 then throw("Invalid exchangeFreeAndLocked params")
238280 else {
239- let an = D(C)
240- let ao = if ((O() > 0))
241- then E((T() - an), O())
242- else x
243- ((ac(an) ++ ab(-(an))) ++ ae(ao))
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))
244286 }
245287
246288
247289
248-@Callable(af)
249-func withdrawLocked (C) = if (if (if (!(V()))
290+@Callable(aw)
291+func withdrawLocked (E) = if (if (if (!(ac()))
250292 then true
251- else (0 >= C))
293+ else (0 >= E))
252294 then true
253- else !(s(toString(af.caller))))
295+ else !(u(toString(aw.caller))))
254296 then throw("Invalid withdrawLocked params")
255297 else {
256- let an = D(C)
257- let al = invoke(w(), "withdraw", [toBase58String(v()), C], nil)
258- if ((al == al))
259- then (ac(-(an)) ++ [ScriptTransfer(af.caller, C, v())])
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())])
260302 else throw("Strict value is not equal to itself.")
261303 }
262304
263305
264306
265-@Callable(af)
266-func view_reward (ap) = {
267- let aq = Q(ap)
268- let ar = H(S(ap), aq)
269- let as = H(P(), aq)
270- let at = (as - ar)
271- throw(toString(at))
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))
272314 }
273315
274316
275-@Verifier(au)
276-func av () = sigVerify(au.bodyBytes, au.proofs[0], t())
317+
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))
323+ }
324+
325+
326+@Verifier(aP)
327+func aQ () = sigVerify(aP.bodyBytes, aP.proofs[0], v())
277328

github/deemru/w8io/169f3d6 
101.60 ms