tx · 5vncU7wrQyM1wxXSLum3pFjFwQ2argRtnpbWBbNJxp4t

3N8n6BtTBKRZBoPuMzaPBH9FyJhfv9xDFJH:  -0.01400000 Waves

2022.07.26 14:09 [2156688] smart account 3N8n6BtTBKRZBoPuMzaPBH9FyJhfv9xDFJH > SELF 0.00000000 Waves

{ "type": 13, "id": "5vncU7wrQyM1wxXSLum3pFjFwQ2argRtnpbWBbNJxp4t", "fee": 1400000, "feeAssetId": null, "timestamp": 1658833816895, "version": 2, "chainId": 84, "sender": "3N8n6BtTBKRZBoPuMzaPBH9FyJhfv9xDFJH", "senderPublicKey": "4hcnYaYoB2XaCzyJ7wfePpG7EfTd6st6aCAhkskJ9cQ5", "proofs": [ "5vr16XC7gjRvFW5jbhMng7T172djYCKAxomRZgB616ZQYyZHx6nEtFDCHYZbbBEHX9tY5h9s5WgzSraX3YCbkiyM" ], "script": "base64:BgIaCAISABIAEgASABIAEgASABIAEgASABIAEgAdAAp1c2R0VXNkbkxQASDbTYM1ZEcblu+fDC+gz33VeZ2S6OGbNQ/BP8x7AnApCwANdXNkdFVzZG5MUFRDSQEgCoHNqe1AYR2YSrg62HoEaFMIJsDJmPFhwSl++h3eKvIACHd4VXNkbkxQASAbuaGPe85Mpc36zkfJCxaOTfZb3sLrk8HWxajRsaoLHAALd3hVc2RuTFBUQ0kBILfs3eYbAnvathOH/VXQ1jy2x6I3PUuIvcF7b0hEAJgvAAp1c2RjVXNkbkxQASADaQH8GwqYCojNj/4RWYWFJpEys1qS/CbpSF3Tn95cdgANdXNkY1VzZG5MUFRDSQEg9gI33dOf74ZFL1wjRw+VX9E6baErwqe0m1RBB1L1bsYACnVzZGNVc2R0TFABIMb4pHQbVkhWEJ+QfsIz9DFriwRKLCv9mUuH9YWbfOSMAA11c2RjVXNkdExQVENJASACxoV8BEszx+Lvh2eHUvtVgv2z34QjtqBaxTXdz1dK/gAMcHV6emxlVXNkbkxQASDDM8Z0ziOqpCLfSSTlxJlreASwd1aCdP+40R1KjRzRngAPcHV6emxlVXNkbkxQVENJASC8lPrPBwcBHVd/Y0eapg399QXXxsR7znNab3wpkohHtQAEd3hJZAEgkwEcq6nHbiVXzmaecba9qmv4POhYCyru2aBOuzzcFLEADmtleVNwb25zb3JzaGlwAhNTcG9uc29yc2hpcF9pbl9sb2NrAAlpc1N0b3BwZWQHAAlrZXlTdGFrZWQCCVNUQUtFRF9MUAALa2V5Q29tcG91bmQCDUZyb21fQ29tcG91bmQAEWtleXd4VXNkbkNvbXBvdW5kAhBXWF9VU0ROX2NvbXBvdW5kAAlrZXlXWFVTRE4CB1dYX1VTRE4AE2tleVVzZGNVc2RuQ29tcG91bmQCElVTRENfVVNETl9jb21wb3VuZAALa2V5VVNEQ1VTRE4CCVVTRENfVVNETgATa2V5VXNkY1VzZHRDb21wb3VuZAISVVNEQ19VU0RUX2NvbXBvdW5kAAtrZXlVU0RDVVNEVAIJVVNEQ19VU0RUABVrZXlQdXp6bGVVc2RuQ29tcG91bmQCFFBVWlpMRV9VU0ROX2NvbXBvdW5kAA1rZXlQVVpaTEVVU0ROAgtQVVpaTEVfVVNETgADZGVmAIDC1y8AB2ZlZVBlcmMAgMivoCUAAnR3ARoBVEQHWkBv4n+nI3+BiNPIbDgVCSkce8hAAgAGb3JhY2xlARoBVzWtH6QdsRVtUfPPQcg6qbN4lGqDirxviQAJc3Rha2VQb29sAiMzTXgzem1Yck1jTEZDYWZNdVB0WEF6UjRaUFZlWlliNnFMegEMY2hlY2tBZGRyZXNzAQZjYWxsZXIDCQECIT0CBQZjYWxsZXIFBm9yYWNsZQcGDAFpAQh3aXRoZHJhdwAEB3BheW1lbnQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQCYW0IBQdwYXltZW50BmFtb3VudAQCaWQIBQdwYXltZW50B2Fzc2V0SWQDCQAAAgUCaWQFCnVzZHRVc2RuTFAECVRDSUFtb3VudAQHJG1hdGNoMAkA7AcBBQ11c2R0VXNkbkxQVENJAwkAAQIFByRtYXRjaDACBUFzc2V0BAFxBQckbWF0Y2gwCAUBcQhxdWFudGl0eQAABA51c2RuVXNkdFN0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQlrZXlTdGFrZWQAAAQMZm9yU2luZ2xlVENJCQBrAwUOdXNkblVzZHRTdGFrZWQFA2RlZgUJVENJQW1vdW50BBB1c2RuTHBUb1dpdGhkcmF3CQBrAwUMZm9yU2luZ2xlVENJBQJhbQUDZGVmBANmZWUJAGsDBRB1c2RuTHBUb1dpdGhkcmF3BQNkZWYFB2ZlZVBlcmMEB3Vuc3Rha2UJAPwHBAkBB0FkZHJlc3MBARoBVFlAJ5NrSynuvrGhDubcQLjPpI16DOu1DwIHdW5zdGFrZQkAzAgCAixGbTRxY3p1NlBlcHo4S1VoaDNIZWI2TGVUVmZwU01YNXZ2Tmd3M3g3NjRDUwkAzAgCBQJhbQUDbmlsCQDMCAIFB3BheW1lbnQFA25pbAMJAAACBQd1bnN0YWtlBQd1bnN0YWtlBBF1c2RuTHBmZWVUcmFuc2ZlcgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQJ0dwUDZmVlBQp1c2R0VXNkbkxQBAh0cmFuc2ZlcgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQBlAgUQdXNkbkxwVG9XaXRoZHJhdwUDZmVlBQp1c2R0VXNkbkxQBBJ1cGRhdGVVc2RuTHBTdGFrZWQJAQxJbnRlZ2VyRW50cnkCBQlrZXlTdGFrZWQJAGUCBQ51c2RuVXNkdFN0YWtlZAUQdXNkbkxwVG9XaXRoZHJhdwQDYnJuCQEEQnVybgIFDXVzZHRVc2RuTFBUQ0kFAmFtAwkAAAIFA2JybgUDYnJuCQDMCAIFEXVzZG5McGZlZVRyYW5zZmVyCQDMCAIFCHRyYW5zZmVyCQDMCAIFEnVwZGF0ZVVzZG5McFN0YWtlZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFAmlkBQt3eFVzZG5MUFRDSQQHd3hUY2lBbQQHJG1hdGNoMAkA7AcBBQt3eFVzZG5MUFRDSQMJAAECBQckbWF0Y2gwAgVBc3NldAQBcQUHJG1hdGNoMAgFAXEIcXVhbnRpdHkAAAQMd3hVc2RuU3Rha2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFCWtleVdYVVNETgAABApzaW5nbGVXWExQCQBrAwUMd3hVc2RuU3Rha2VkBQNkZWYFB3d4VGNpQW0EDnd4THBUb1dpdGhkcmF3CQBrAwUKc2luZ2xlV1hMUAUCYW0FA2RlZgQDZmVlCQBrAwUOd3hMcFRvV2l0aGRyYXcFA2RlZgUHZmVlUGVyYwQHdW5zdGFrZQkA/AcECQEHQWRkcmVzcwEBGgFUWUAnk2tLKe6+saEO5txAuM+kjXoM67UPAgd1bnN0YWtlCQDMCAICLDJzRUJWY3lERksyTHVwQ2Y3TWVBNHZ6SGhHSzREQzFXamJLR1FDTFlEcWliCQDMCAIFAmFtBQNuaWwJAMwIAgUHcGF5bWVudAUDbmlsAwkAAAIFB3Vuc3Rha2UFB3Vuc3Rha2UED3d4THBGZWVUcmFuc2ZlcgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQJ0dwUDZmVlBQh3eFVzZG5MUAQMd3hMcFRyYW5zZmVyCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAGUCBQJhbQUDZmVlBQh3eFVzZG5MUAQQdXBkYXRlV3hMcFN0YWtlZAkBDEludGVnZXJFbnRyeQIFCWtleVdYVVNETgkAZQIFDHd4VXNkblN0YWtlZAUOd3hMcFRvV2l0aGRyYXcEC2J1cm5XeExwVGNpCQEEQnVybgIFCHd4VXNkbkxQBQJhbQMJAAACBQtidXJuV3hMcFRjaQULYnVybld4THBUY2kJAMwIAgUPd3hMcEZlZVRyYW5zZmVyCQDMCAIFDHd4THBUcmFuc2ZlcgkAzAgCBRB1cGRhdGVXeExwU3Rha2VkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUCaWQFDXVzZGNVc2RuTFBUQ0kEC3VzZGNVc2RuVENJBAckbWF0Y2gwCQDsBwEFDXVzZGNVc2RuTFBUQ0kDCQABAgUHJG1hdGNoMAIFQXNzZXQEAXEFByRtYXRjaDAIBQFxCHF1YW50aXR5AAAEDnVzZGNVc2RuU3Rha2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFC2tleVVTRENVU0ROAAAEDHNpbmdsZVVzZGNMUAkAawMFC3VzZGNVc2RuVENJBQNkZWYFDnVzZGNVc2RuU3Rha2VkBBB1c2RjTHBUb1dpdGhkcmF3CQBrAwUMc2luZ2xlVXNkY0xQBQJhbQUDZGVmBANmZWUJAGsDBRB1c2RjTHBUb1dpdGhkcmF3BQNkZWYFB2ZlZVBlcmMEDXVzZGNVc2RuTFBGZWUJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUCdHcFA2ZlZQUKdXNkY1VzZG5MUAQQdXNkY1VzZG5UcmFuc2ZlcgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQBlAgUCYW0FA2ZlZQUKdXNkY1VzZG5MUAQWdXBkYXRlVXNkY1VzZG5McFN0YWtlZAkBDEludGVnZXJFbnRyeQIFC2tleVVTRENVU0ROCQBlAgUOdXNkY1VzZG5TdGFrZWQFEHVzZGNMcFRvV2l0aGRyYXcEEWJ1cm5Vc2RjVXNkbkxwVGNpCQEEQnVybgIFDXVzZGNVc2RuTFBUQ0kFAmFtAwkAAAIFEWJ1cm5Vc2RjVXNkbkxwVGNpBRFidXJuVXNkY1VzZG5McFRjaQkAzAgCBQ11c2RjVXNkbkxQRmVlCQDMCAIFEHVzZGNVc2RuVHJhbnNmZXIJAMwIAgUWdXBkYXRlVXNkY1VzZG5McFN0YWtlZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFAmlkBQ11c2RjVXNkdExQVENJBAt1c2RjVXNkdFRjaQQHJG1hdGNoMAkA7AcBBQ11c2RjVXNkbkxQVENJAwkAAQIFByRtYXRjaDACBUFzc2V0BAFxBQckbWF0Y2gwCAUBcQhxdWFudGl0eQAABA51c2RjVXNkdFN0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQtrZXlVU0RDVVNEVAAABA5zaW5nbGVVc2RjVXNkdAkAawMFC3VzZGNVc2R0VGNpBQNkZWYFDnVzZGNVc2R0U3Rha2VkBBR1c2RjVXNkdExwVG9XaXRoZHJhdwkAawMFDnNpbmdsZVVzZGNVc2R0BQJhbQUDZGVmBANmZWUJAGsDBRR1c2RjVXNkdExwVG9XaXRoZHJhdwUDZGVmBQdmZWVQZXJjBA11c2RjVXNkdExQRmVlCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEFAnR3BQNmZWUFCnVzZGNVc2R0TFAEEHVzZGNVc2R0VHJhbnNmZXIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkAZQIFAmFtBQNmZWUFCnVzZGNVc2R0TFAEFnVwZGF0ZVVzZGNVc2R0THBTdGFrZWQJAQxJbnRlZ2VyRW50cnkCBQtrZXlVU0RDVVNEVAkAZQIFDnVzZGNVc2R0U3Rha2VkBRR1c2RjVXNkdExwVG9XaXRoZHJhdwQLYnVybld4THBUY2kJAQRCdXJuAgUNdXNkY1VzZG5MUFRDSQUCYW0DCQAAAgULYnVybld4THBUY2kFC2J1cm5XeExwVGNpCQDMCAIFDXVzZGNVc2R0TFBGZWUJAMwIAgUQdXNkY1VzZHRUcmFuc2ZlcgkAzAgCBRZ1cGRhdGVVc2RjVXNkdExwU3Rha2VkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUCaWQFD3B1enpsZVVzZG5MUFRDSQQNcHV6emxlVXNkblRjaQQHJG1hdGNoMAkA7AcBBQ9wdXp6bGVVc2RuTFBUQ0kDCQABAgUHJG1hdGNoMAIFQXNzZXQEAXEFByRtYXRjaDAIBQFxCHF1YW50aXR5AAAEDnB1enpsZUxQU3Rha2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDWtleVBVWlpMRVVTRE4AAAQQc2luZ2xlUHV6emxlVXNkbgkAawMFDXB1enpsZVVzZG5UY2kFA2RlZgUOcHV6emxlTFBTdGFrZWQEEnB1enpsZVVzZG5XaXRoZHJhdwkAawMFEHNpbmdsZVB1enpsZVVzZG4FAmFtBQNkZWYEA2ZlZQkAawMFEnB1enpsZVVzZG5XaXRoZHJhdwUDZGVmBQdmZWVQZXJjBA9wdXp6bGVVc2RuTFBGZWUJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUCdHcFA2ZlZQUMcHV6emxlVXNkbkxQBBJwdXp6bGVVc2RuVHJhbnNmZXIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkAZQIFAmFtBQNmZWUFDHB1enpsZVVzZG5MUAQYdXBkYXRlUHV6emxlVXNkbkxwU3Rha2VkCQEMSW50ZWdlckVudHJ5AgUNa2V5UFVaWkxFVVNETgkAZQIFDnB1enpsZUxQU3Rha2VkBRJwdXp6bGVVc2RuV2l0aGRyYXcEDWJ1cm5QdXp6bGVUQ0kJAQRCdXJuAgUPcHV6emxlVXNkbkxQVENJBQJhbQMJAAACBQ1idXJuUHV6emxlVENJBQ1idXJuUHV6emxlVENJCQDMCAIFD3B1enpsZVVzZG5MUEZlZQkAzAgCBRJwdXp6bGVVc2RuVHJhbnNmZXIJAMwIAgUYdXBkYXRlUHV6emxlVXNkbkxwU3Rha2VkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAg1JbnZhbGlkIGFzc2V0AWkBD2RlcG9zaXRXeFVzZG5MUAAEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAlwbXRBbW91bnQIBQNwbXQGYW1vdW50AwkBAiE9AggFA3BtdAdhc3NldElkBQh3eFVzZG5MUAkAAgECG2F0dGFjaCBXWFVTRE5MUCB0b2tlbnMgb25seQMFCWlzU3RvcHBlZAkAAgECGXNtYXJ0IGNvbnRyYWN0IGlzIG9uIGxvY2sECHRrU3Rha2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFCWtleVdYVVNETgAABAt0b3RhbElzc3VlZAQHJG1hdGNoMAkA7AcBBQt3eFVzZG5MUFRDSQMJAAECBQckbWF0Y2gwAgVBc3NldAQFYXNzZXQFByRtYXRjaDAIBQVhc3NldAhxdWFudGl0eQkAAgECEENhbid0IGZpbmQgYXNzZXQEA29uZQkAawMFC3RvdGFsSXNzdWVkAIDC1y8FCHRrU3Rha2VkBAd0b0lzc3VlCQBrAwUJcG10QW1vdW50BQNvbmUAgMLXLwQLdXBkYXRlU3RhdGUJAQxJbnRlZ2VyRW50cnkCBQlrZXlXWFVTRE4JAGQCBQh0a1N0YWtlZAUJcG10QW1vdW50BAdMUHN0YWtlCQD8BwQJAQdBZGRyZXNzAQEaAVfrO+d+bgUYwpGkmBYX4WbXRScg7iVJVqgCBXN0YWtlBQNuaWwJAMwIAgUDcG10BQNuaWwDCQAAAgUHTFBzdGFrZQUHTFBzdGFrZQQHTFBJc3N1ZQkBB1JlaXNzdWUDBQt3eFVzZG5MUFRDSQUHdG9Jc3N1ZQYECHRyYW5zZmVyCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFB3RvSXNzdWUFC3d4VXNkbkxQVENJCQDMCAIFB0xQSXNzdWUJAMwIAgUIdHJhbnNmZXIJAMwIAgULdXBkYXRlU3RhdGUFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARFkZXBvc2l0VXNkdFVzZG5MUAAEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAlwbXRBbW91bnQIBQNwbXQGYW1vdW50AwkBAiE9AggFA3BtdAdhc3NldElkBQp1c2R0VXNkbkxQCQACAQIdYXR0YWNoIFVTRFRVU0ROTFAgdG9rZW5zIG9ubHkDBQlpc1N0b3BwZWQJAAIBAhlzbWFydCBjb250cmFjdCBpcyBvbiBsb2NrBAh0a1N0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQlrZXlTdGFrZWQAAAQLdG90YWxJc3N1ZWQEByRtYXRjaDAJAOwHAQUNdXNkdFVzZG5MUFRDSQMJAAECBQckbWF0Y2gwAgVBc3NldAQFYXNzZXQFByRtYXRjaDAIBQVhc3NldAhxdWFudGl0eQkAAgECEENhbid0IGZpbmQgYXNzZXQEDGZyb21Db21wb3VuZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQtrZXlDb21wb3VuZAAABAZmb3JPbmUJAGsDBQt0b3RhbElzc3VlZACAwtcvBQh0a1N0YWtlZAQHdG9Jc3N1ZQkAawMFCXBtdEFtb3VudAUGZm9yT25lAIDC1y8EC3VwZGF0ZVN0YXRlCQEMSW50ZWdlckVudHJ5AgUJa2V5U3Rha2VkCQBkAgUIdGtTdGFrZWQFCXBtdEFtb3VudAQHTFBzdGFrZQkA/AcECQEHQWRkcmVzcwEBGgFX6zvnfm4FGMKRpJgWF+Fm10UnIO4lSVaoAgVzdGFrZQUDbmlsCQDMCAIFA3BtdAUDbmlsAwkAAAIFB0xQc3Rha2UFB0xQc3Rha2UEB0xQSXNzdWUJAQdSZWlzc3VlAwUNdXNkdFVzZG5MUFRDSQUHdG9Jc3N1ZQYECHRyYW5zZmVyCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFB3RvSXNzdWUFDXVzZHRVc2RuTFBUQ0kJAMwIAgUHTFBJc3N1ZQkAzAgCBQh0cmFuc2ZlcgkAzAgCBQt1cGRhdGVTdGF0ZQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEWRlcG9zaXRVc2RjVXNkbkxQAAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAECXBtdEFtb3VudAgFA3BtdAZhbW91bnQDCQECIT0CCAUDcG10B2Fzc2V0SWQFCnVzZGNVc2RuTFAJAAIBAh1hdHRhY2ggVVNEQ1VTRE5MUCB0b2tlbnMgb25seQMFCWlzU3RvcHBlZAkAAgECGXNtYXJ0IGNvbnRyYWN0IGlzIG9uIGxvY2sECHRrU3Rha2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFC2tleVVTRENVU0ROAAAEC3RvdGFsSXNzdWVkBAckbWF0Y2gwCQDsBwEFDXVzZGNVc2RuTFBUQ0kDCQABAgUHJG1hdGNoMAIFQXNzZXQEBWFzc2V0BQckbWF0Y2gwCAUFYXNzZXQIcXVhbnRpdHkJAAIBAhBDYW4ndCBmaW5kIGFzc2V0BAxmcm9tQ29tcG91bmQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUTa2V5VXNkY1VzZG5Db21wb3VuZAAABAZmb3JPbmUJAGsDBQt0b3RhbElzc3VlZACAwtcvBQh0a1N0YWtlZAQHdG9Jc3N1ZQkAawMFCXBtdEFtb3VudAUGZm9yT25lAIDC1y8EC3VwZGF0ZVN0YXRlCQEMSW50ZWdlckVudHJ5AgULa2V5VVNEQ1VTRE4JAGQCBQh0a1N0YWtlZAUJcG10QW1vdW50BAdMUHN0YWtlCQD8BwQJAQdBZGRyZXNzAQEaAVfrO+d+bgUYwpGkmBYX4WbXRScg7iVJVqgCBXN0YWtlBQNuaWwJAMwIAgUDcG10BQNuaWwDCQAAAgUHTFBzdGFrZQUHTFBzdGFrZQQHTFBJc3N1ZQkBB1JlaXNzdWUDBQ11c2RjVXNkbkxQVENJBQd0b0lzc3VlBgQIdHJhbnNmZXIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUHdG9Jc3N1ZQUNdXNkY1VzZG5MUFRDSQkAzAgCBQdMUElzc3VlCQDMCAIFCHRyYW5zZmVyCQDMCAIFC3VwZGF0ZVN0YXRlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQERZGVwb3NpdFVzZGNVc2R0TFAABANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQJcG10QW1vdW50CAUDcG10BmFtb3VudAMJAQIhPQIIBQNwbXQHYXNzZXRJZAUKdXNkY1VzZHRMUAkAAgECHWF0dGFjaCBVU0RDVVNEVExQIHRva2VucyBvbmx5AwUJaXNTdG9wcGVkCQACAQIZc21hcnQgY29udHJhY3QgaXMgb24gbG9jawQIdGtTdGFrZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwULa2V5VVNEQ1VTRFQAAAQLdG90YWxJc3N1ZWQEByRtYXRjaDAJAOwHAQUNdXNkY1VzZHRMUFRDSQMJAAECBQckbWF0Y2gwAgVBc3NldAQFYXNzZXQFByRtYXRjaDAIBQVhc3NldAhxdWFudGl0eQkAAgECEENhbid0IGZpbmQgYXNzZXQEDGZyb21Db21wb3VuZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRNrZXlVc2RjVXNkdENvbXBvdW5kAAAEBmZvck9uZQkAawMFC3RvdGFsSXNzdWVkAIDC1y8FCHRrU3Rha2VkBAd0b0lzc3VlCQBrAwUJcG10QW1vdW50BQZmb3JPbmUAgMLXLwQLdXBkYXRlU3RhdGUJAQxJbnRlZ2VyRW50cnkCBQtrZXlVU0RDVVNEVAkAZAIFCHRrU3Rha2VkBQlwbXRBbW91bnQEB0xQc3Rha2UJAPwHBAkBB0FkZHJlc3MBARoBV+s7535uBRjCkaSYFhfhZtdFJyDuJUlWqAIFc3Rha2UFA25pbAkAzAgCBQNwbXQFA25pbAMJAAACBQdMUHN0YWtlBQdMUHN0YWtlBAdMUElzc3VlCQEHUmVpc3N1ZQMFDXVzZGNVc2R0TFBUQ0kFB3RvSXNzdWUGBAh0cmFuc2ZlcgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQd0b0lzc3VlBQ11c2RjVXNkdExQVENJCQDMCAIFB0xQSXNzdWUJAMwIAgUIdHJhbnNmZXIJAMwIAgULdXBkYXRlU3RhdGUFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARNkZXBvc2l0UHV6emxlVXNkbkxQAAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAECXBtdEFtb3VudAgFA3BtdAZhbW91bnQDCQECIT0CCAUDcG10B2Fzc2V0SWQFDHB1enpsZVVzZG5MUAkAAgECH2F0dGFjaCBQVVpaTEVVRFNOTFAgdG9rZW5zIG9ubHkDBQlpc1N0b3BwZWQJAAIBAhlzbWFydCBjb250cmFjdCBpcyBvbiBsb2NrBAh0a1N0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ1rZXlQVVpaTEVVU0ROAAAEC3RvdGFsSXNzdWVkBAckbWF0Y2gwCQDsBwEFD3B1enpsZVVzZG5MUFRDSQMJAAECBQckbWF0Y2gwAgVBc3NldAQFYXNzZXQFByRtYXRjaDAIBQVhc3NldAhxdWFudGl0eQkAAgECEENhbid0IGZpbmQgYXNzZXQEDGZyb21Db21wb3VuZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRVrZXlQdXp6bGVVc2RuQ29tcG91bmQAAAQGZm9yT25lCQBrAwULdG90YWxJc3N1ZWQAgMLXLwUIdGtTdGFrZWQEB3RvSXNzdWUJAGsDBQlwbXRBbW91bnQFBmZvck9uZQCAwtcvBAt1cGRhdGVTdGF0ZQkBDEludGVnZXJFbnRyeQIFDWtleVBVWlpMRVVTRE4JAGQCBQh0a1N0YWtlZAUJcG10QW1vdW50BAdMUHN0YWtlCQD8BwQJAQdBZGRyZXNzAQEaAVfrO+d+bgUYwpGkmBYX4WbXRScg7iVJVqgCBXN0YWtlBQNuaWwJAMwIAgUDcG10BQNuaWwDCQAAAgUHTFBzdGFrZQUHTFBzdGFrZQQHTFBJc3N1ZQkBB1JlaXNzdWUDBQ9wdXp6bGVVc2RuTFBUQ0kFB3RvSXNzdWUGBAh0cmFuc2ZlcgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQd0b0lzc3VlBQ9wdXp6bGVVc2RuTFBUQ0kJAMwIAgUHTFBJc3N1ZQkAzAgCBQh0cmFuc2ZlcgkAzAgCBQt1cGRhdGVTdGF0ZQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEGNvbXBvdW5kV3hVc2RuTFAABAhjb21wb3VuZAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAJjYQgFCGNvbXBvdW5kBmFtb3VudAQIaXNPcmFjbGUJAQxjaGVja0FkZHJlc3MBCAgFAWkGY2FsbGVyBWJ5dGVzAwkBAiE9AggFCGNvbXBvdW5kB2Fzc2V0SWQFCHd4VXNkbkxQCQACAQIbYXR0YWNoIFdYVVNETkxQIHRva2VucyBvbmx5AwkBASEBBQhpc09yYWNsZQkAAgECLFlvdSBhcmUgbm90IGF1dGhvdGl6ZWQgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uBAxmcm9tQ29tcG91bmQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwURa2V5d3hVc2RuQ29tcG91bmQAAAQLdG90YWxTdGFrZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUJa2V5V1hVU0ROAAAEBnN0YWtlQwkA/AcECQEHQWRkcmVzcwEBGgFX6zvnfm4FGMKRpJgWF+Fm10UnIO4lSVaoAgVzdGFrZQUDbmlsCQDMCAIFCGNvbXBvdW5kBQNuaWwDCQAAAgUGc3Rha2VDBQZzdGFrZUMEC3VwZGF0ZVN0YXRlCQEMSW50ZWdlckVudHJ5AgUJa2V5V1hVU0ROCQBkAgULdG90YWxTdGFrZWQFAmNhBAJ0YwkBDEludGVnZXJFbnRyeQIFEWtleXd4VXNkbkNvbXBvdW5kCQBkAgUMZnJvbUNvbXBvdW5kBQJjYQkAzAgCBQt1cGRhdGVTdGF0ZQkAzAgCBQJ0YwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEmNvbXBvdW5kVXNkdFVzZG5MUAAECGNvbXBvdW5kCQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEAmNhCAUIY29tcG91bmQGYW1vdW50BAhpc09yYWNsZQkBDGNoZWNrQWRkcmVzcwEICAUBaQZjYWxsZXIFYnl0ZXMDCQECIT0CCAUIY29tcG91bmQHYXNzZXRJZAUKdXNkdFVzZG5MUAkAAgECHWF0dGFjaCBVU0RUVVNETkxQIHRva2VucyBvbmx5AwkBASEBBQhpc09yYWNsZQkAAgECLFlvdSBhcmUgbm90IGF1dGhvdGl6ZWQgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uBAxmcm9tQ29tcG91bmQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwULa2V5Q29tcG91bmQAAAQLdG90YWxTdGFrZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUJa2V5U3Rha2VkAAAEBnN0YWtlQwkA/AcECQEHQWRkcmVzcwEBGgFX6zvnfm4FGMKRpJgWF+Fm10UnIO4lSVaoAgVzdGFrZQUDbmlsCQDMCAIFCGNvbXBvdW5kBQNuaWwDCQAAAgUGc3Rha2VDBQZzdGFrZUMEC3VwZGF0ZVN0YXRlCQEMSW50ZWdlckVudHJ5AgUJa2V5U3Rha2VkCQBkAgULdG90YWxTdGFrZWQFAmNhBAJ0YwkBDEludGVnZXJFbnRyeQIFC2tleUNvbXBvdW5kCQBkAgUMZnJvbUNvbXBvdW5kBQJjYQkAzAgCBQt1cGRhdGVTdGF0ZQkAzAgCBQJ0YwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEmNvbXBvdW5kVXNkY1VzZG5MUAAECGNvbXBvdW5kCQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEAmNhCAUIY29tcG91bmQGYW1vdW50BAhpc09yYWNsZQkBDGNoZWNrQWRkcmVzcwEICAUBaQZjYWxsZXIFYnl0ZXMDCQECIT0CCAUIY29tcG91bmQHYXNzZXRJZAUKdXNkY1VzZG5MUAkAAgECHWF0dGFjaCBVU0RDVVNETkxQIHRva2VucyBvbmx5AwkBASEBBQhpc09yYWNsZQkAAgECLFlvdSBhcmUgbm90IGF1dGhvdGl6ZWQgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uBAxmcm9tQ29tcG91bmQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUTa2V5VXNkY1VzZG5Db21wb3VuZAAABAt0b3RhbFN0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQtrZXlVU0RDVVNETgAABAZzdGFrZUMJAPwHBAkBB0FkZHJlc3MBARoBV+s7535uBRjCkaSYFhfhZtdFJyDuJUlWqAIFc3Rha2UFA25pbAkAzAgCBQhjb21wb3VuZAUDbmlsAwkAAAIFBnN0YWtlQwUGc3Rha2VDBAt1cGRhdGVTdGF0ZQkBDEludGVnZXJFbnRyeQIFC2tleVVTRENVU0ROCQBkAgULdG90YWxTdGFrZWQFAmNhBAJ0YwkBDEludGVnZXJFbnRyeQIFE2tleVVzZGNVc2RuQ29tcG91bmQJAGQCBQxmcm9tQ29tcG91bmQFAmNhCQDMCAIFC3VwZGF0ZVN0YXRlCQDMCAIFAnRjBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQESY29tcG91bmRVc2RjVXNkdExQAAQIY29tcG91bmQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQCY2EIBQhjb21wb3VuZAZhbW91bnQECGlzT3JhY2xlCQEMY2hlY2tBZGRyZXNzAQgIBQFpBmNhbGxlcgVieXRlcwMJAQIhPQIIBQhjb21wb3VuZAdhc3NldElkBQp1c2RjVXNkdExQCQACAQIdYXR0YWNoIFVTRENVU0RUTFAgdG9rZW5zIG9ubHkDCQEBIQEFCGlzT3JhY2xlCQACAQIsWW91IGFyZSBub3QgYXV0aG90aXplZCB0byBjYWxsIHRoaXMgZnVuY3Rpb24EDGZyb21Db21wb3VuZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRNrZXlVc2RjVXNkdENvbXBvdW5kAAAEC3RvdGFsU3Rha2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFC2tleVVTRENVU0RUAAAEBnN0YWtlQwkA/AcECQEHQWRkcmVzcwEBGgFX6zvnfm4FGMKRpJgWF+Fm10UnIO4lSVaoAgVzdGFrZQUDbmlsCQDMCAIFCGNvbXBvdW5kBQNuaWwDCQAAAgUGc3Rha2VDBQZzdGFrZUMEC3VwZGF0ZVN0YXRlCQEMSW50ZWdlckVudHJ5AgULa2V5VVNEQ1VTRFQJAGQCBQt0b3RhbFN0YWtlZAUCY2EEAnRjCQEMSW50ZWdlckVudHJ5AgUTa2V5VXNkY1VzZHRDb21wb3VuZAkAZAIFDGZyb21Db21wb3VuZAUCY2EJAMwIAgULdXBkYXRlU3RhdGUJAMwIAgUCdGMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARRjb21wb3VuZFB1enpsZVVzZG5MUAAECGNvbXBvdW5kCQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEAmNhCAUIY29tcG91bmQGYW1vdW50BAhpc09yYWNsZQkBDGNoZWNrQWRkcmVzcwEICAUBaQZjYWxsZXIFYnl0ZXMDCQECIT0CCAUIY29tcG91bmQHYXNzZXRJZAUMcHV6emxlVXNkbkxQCQACAQIfYXR0YWNoIFBVWlpMRVVTRE5MUCB0b2tlbnMgb25seQMJAQEhAQUIaXNPcmFjbGUJAAIBAixZb3UgYXJlIG5vdCBhdXRob3RpemVkIHRvIGNhbGwgdGhpcyBmdW5jdGlvbgQMZnJvbUNvbXBvdW5kCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFFWtleVB1enpsZVVzZG5Db21wb3VuZAAABAt0b3RhbFN0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ1rZXlQVVpaTEVVU0ROAAAEBnN0YWtlQwkA/AcECQEHQWRkcmVzcwEBGgFX6zvnfm4FGMKRpJgWF+Fm10UnIO4lSVaoAgVzdGFrZQUDbmlsCQDMCAIFCGNvbXBvdW5kBQNuaWwDCQAAAgUGc3Rha2VDBQZzdGFrZUMEC3VwZGF0ZVN0YXRlCQEMSW50ZWdlckVudHJ5AgUNa2V5UFVaWkxFVVNETgkAZAIFC3RvdGFsU3Rha2VkBQJjYQQCdGMJAQxJbnRlZ2VyRW50cnkCBRVrZXlQdXp6bGVVc2RuQ29tcG91bmQJAGQCBQxmcm9tQ29tcG91bmQFAmNhCQDMCAIFC3VwZGF0ZVN0YXRlCQDMCAIFAnRjBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEMc3BvbnNvckJvb3N0AAQCcG0JAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQKbG9ja1BlcmlvZABkAwkBAiE9AggFAnBtB2Fzc2V0SWQFBHd4SWQJAAIBAgVFcnJvcgQJc3BvbnNvcmVkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDmtleVNwb25zb3JzaGlwAAAEBGxvY2sJAPwHBAkBB0FkZHJlc3MBARoBV7Pm5lUYEWmw5DMPiFFDpJyu1tVLA0sRWAIMaW5jcmVhc2VMb2NrCQDMCAIFCmxvY2tQZXJpb2QFA25pbAkAzAgCBQJwbQUDbmlsAwkAAAIFBGxvY2sFBGxvY2sEAXMJAQxJbnRlZ2VyRW50cnkCBQ5rZXlTcG9uc29yc2hpcAkAZAIIBQJwbQZhbW91bnQFCXNwb25zb3JlZAkAzAgCBQFzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkACQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5u1gRRA==", "height": 2156688, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: B353fZMBKiMBVyKfgc1g9G1EFYgFAR9U722FQG4R8Px8 Next: HAQKAEFhiSoZQBXd15RamwYJV5N3cu1SrC4fWtFLPenv Diff:
OldNewDifferences
7676 0
7777 }
7878 let usdnUsdtStaked = valueOrElse(getInteger(this, keyStaked), 0)
79- let forSingleTCI = fraction(TCIAmount, def, usdnUsdtStaked)
79+ let forSingleTCI = fraction(usdnUsdtStaked, def, TCIAmount)
8080 let usdnLpToWithdraw = fraction(forSingleTCI, am, def)
8181 let fee = fraction(usdnLpToWithdraw, def, feePerc)
8282 let unstake = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "unstake", ["Fm4qczu6Pepz8KUhh3Heb6LeTVfpSMX5vvNgw3x764CS", am], [payment])
101101 0
102102 }
103103 let wxUsdnStaked = valueOrElse(getInteger(this, keyWXUSDN), 0)
104- let singleWXLP = fraction(wxTciAm, def, wxUsdnStaked)
104+ let singleWXLP = fraction(wxUsdnStaked, def, wxTciAm)
105105 let wxLpToWithdraw = fraction(singleWXLP, am, def)
106106 let fee = fraction(wxLpToWithdraw, def, feePerc)
107107 let unstake = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "unstake", ["2sEBVcyDFK2LupCf7MeA4vzHhGK4DC1WjbKGQCLYDqib", am], [payment])
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let usdtUsdnLP = base58'Fm4qczu6Pepz8KUhh3Heb6LeTVfpSMX5vvNgw3x764CS'
55
66 let usdtUsdnLPTCI = base58'i1snzKxSEZVokh9TWj8hTJQEDBsocnL2hRWsSbsMPK7'
77
88 let wxUsdnLP = base58'2sEBVcyDFK2LupCf7MeA4vzHhGK4DC1WjbKGQCLYDqib'
99
1010 let wxUsdnLPTCI = base58'DNy6WBfhPE4y82RonGdHhZEunNotEDzmNfrBomWnsyGi'
1111
1212 let usdcUsdnLP = base58'EK6N7S38xbtBT3SxAqoGdDLCiX6rojX6G169CnSyuE5'
1313
1414 let usdcUsdnLPTCI = base58'HZKFpNfyPG5gt4D6Nfy1zQSg2Ptmqv932GjNTCyBEeKP'
1515
1616 let usdcUsdtLP = base58'EPhdEfmQaNcHyvDmRGhnLhgcJtKZ2a4k3ZBmKWtAEWyH'
1717
1818 let usdcUsdtLPTCI = base58'BqPYkaiz7Le6fFu1rjZ54anrpT57EpvyugZCUqrsjXj'
1919
2020 let puzzleUsdnLP = base58'E8zHu33GfcNyGLypX77gZiUXfvuZQeaYmiEfsy7VYNwP'
2121
2222 let puzzleUsdnLPTCI = base58'Dh9QXSSABE5V6aRfu3mCbDAUokbpE7ER7pbZV6cvyg1A'
2323
2424 let wxId = base58'Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on'
2525
2626 let keySponsorship = "Sponsorship_in_lock"
2727
2828 let isStopped = false
2929
3030 let keyStaked = "STAKED_LP"
3131
3232 let keyCompound = "From_Compound"
3333
3434 let keywxUsdnCompound = "WX_USDN_compound"
3535
3636 let keyWXUSDN = "WX_USDN"
3737
3838 let keyUsdcUsdnCompound = "USDC_USDN_compound"
3939
4040 let keyUSDCUSDN = "USDC_USDN"
4141
4242 let keyUsdcUsdtCompound = "USDC_USDT_compound"
4343
4444 let keyUSDCUSDT = "USDC_USDT"
4545
4646 let keyPuzzleUsdnCompound = "PUZZLE_USDN_compound"
4747
4848 let keyPUZZLEUSDN = "PUZZLE_USDN"
4949
5050 let def = 100000000
5151
5252 let feePerc = 10000000000
5353
5454 let tw = base58'3Mv7nXq2V2Dnn9oSkB5feRt6RxtqnPiAXNH'
5555
5656 let oracle = base58'3P6phwFZFQtZFuc9dvdXsgvtg8JEFVgECPA'
5757
5858 let stakePool = "3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz"
5959
6060 func checkAddress (caller) = if ((caller != oracle))
6161 then false
6262 else true
6363
6464
6565 @Callable(i)
6666 func withdraw () = {
6767 let payment = value(i.payments[0])
6868 let am = payment.amount
6969 let id = payment.assetId
7070 if ((id == usdtUsdnLP))
7171 then {
7272 let TCIAmount = match assetInfo(usdtUsdnLPTCI) {
7373 case q: Asset =>
7474 q.quantity
7575 case _ =>
7676 0
7777 }
7878 let usdnUsdtStaked = valueOrElse(getInteger(this, keyStaked), 0)
79- let forSingleTCI = fraction(TCIAmount, def, usdnUsdtStaked)
79+ let forSingleTCI = fraction(usdnUsdtStaked, def, TCIAmount)
8080 let usdnLpToWithdraw = fraction(forSingleTCI, am, def)
8181 let fee = fraction(usdnLpToWithdraw, def, feePerc)
8282 let unstake = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "unstake", ["Fm4qczu6Pepz8KUhh3Heb6LeTVfpSMX5vvNgw3x764CS", am], [payment])
8383 if ((unstake == unstake))
8484 then {
8585 let usdnLpfeeTransfer = ScriptTransfer(Address(tw), fee, usdtUsdnLP)
8686 let transfer = ScriptTransfer(i.caller, (usdnLpToWithdraw - fee), usdtUsdnLP)
8787 let updateUsdnLpStaked = IntegerEntry(keyStaked, (usdnUsdtStaked - usdnLpToWithdraw))
8888 let brn = Burn(usdtUsdnLPTCI, am)
8989 if ((brn == brn))
9090 then [usdnLpfeeTransfer, transfer, updateUsdnLpStaked]
9191 else throw("Strict value is not equal to itself.")
9292 }
9393 else throw("Strict value is not equal to itself.")
9494 }
9595 else if ((id == wxUsdnLPTCI))
9696 then {
9797 let wxTciAm = match assetInfo(wxUsdnLPTCI) {
9898 case q: Asset =>
9999 q.quantity
100100 case _ =>
101101 0
102102 }
103103 let wxUsdnStaked = valueOrElse(getInteger(this, keyWXUSDN), 0)
104- let singleWXLP = fraction(wxTciAm, def, wxUsdnStaked)
104+ let singleWXLP = fraction(wxUsdnStaked, def, wxTciAm)
105105 let wxLpToWithdraw = fraction(singleWXLP, am, def)
106106 let fee = fraction(wxLpToWithdraw, def, feePerc)
107107 let unstake = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "unstake", ["2sEBVcyDFK2LupCf7MeA4vzHhGK4DC1WjbKGQCLYDqib", am], [payment])
108108 if ((unstake == unstake))
109109 then {
110110 let wxLpFeeTransfer = ScriptTransfer(Address(tw), fee, wxUsdnLP)
111111 let wxLpTransfer = ScriptTransfer(i.caller, (am - fee), wxUsdnLP)
112112 let updateWxLpStaked = IntegerEntry(keyWXUSDN, (wxUsdnStaked - wxLpToWithdraw))
113113 let burnWxLpTci = Burn(wxUsdnLP, am)
114114 if ((burnWxLpTci == burnWxLpTci))
115115 then [wxLpFeeTransfer, wxLpTransfer, updateWxLpStaked]
116116 else throw("Strict value is not equal to itself.")
117117 }
118118 else throw("Strict value is not equal to itself.")
119119 }
120120 else if ((id == usdcUsdnLPTCI))
121121 then {
122122 let usdcUsdnTCI = match assetInfo(usdcUsdnLPTCI) {
123123 case q: Asset =>
124124 q.quantity
125125 case _ =>
126126 0
127127 }
128128 let usdcUsdnStaked = valueOrElse(getInteger(this, keyUSDCUSDN), 0)
129129 let singleUsdcLP = fraction(usdcUsdnTCI, def, usdcUsdnStaked)
130130 let usdcLpToWithdraw = fraction(singleUsdcLP, am, def)
131131 let fee = fraction(usdcLpToWithdraw, def, feePerc)
132132 let usdcUsdnLPFee = ScriptTransfer(Address(tw), fee, usdcUsdnLP)
133133 let usdcUsdnTransfer = ScriptTransfer(i.caller, (am - fee), usdcUsdnLP)
134134 let updateUsdcUsdnLpStaked = IntegerEntry(keyUSDCUSDN, (usdcUsdnStaked - usdcLpToWithdraw))
135135 let burnUsdcUsdnLpTci = Burn(usdcUsdnLPTCI, am)
136136 if ((burnUsdcUsdnLpTci == burnUsdcUsdnLpTci))
137137 then [usdcUsdnLPFee, usdcUsdnTransfer, updateUsdcUsdnLpStaked]
138138 else throw("Strict value is not equal to itself.")
139139 }
140140 else if ((id == usdcUsdtLPTCI))
141141 then {
142142 let usdcUsdtTci = match assetInfo(usdcUsdnLPTCI) {
143143 case q: Asset =>
144144 q.quantity
145145 case _ =>
146146 0
147147 }
148148 let usdcUsdtStaked = valueOrElse(getInteger(this, keyUSDCUSDT), 0)
149149 let singleUsdcUsdt = fraction(usdcUsdtTci, def, usdcUsdtStaked)
150150 let usdcUsdtLpToWithdraw = fraction(singleUsdcUsdt, am, def)
151151 let fee = fraction(usdcUsdtLpToWithdraw, def, feePerc)
152152 let usdcUsdtLPFee = ScriptTransfer(Address(tw), fee, usdcUsdtLP)
153153 let usdcUsdtTransfer = ScriptTransfer(i.caller, (am - fee), usdcUsdtLP)
154154 let updateUsdcUsdtLpStaked = IntegerEntry(keyUSDCUSDT, (usdcUsdtStaked - usdcUsdtLpToWithdraw))
155155 let burnWxLpTci = Burn(usdcUsdnLPTCI, am)
156156 if ((burnWxLpTci == burnWxLpTci))
157157 then [usdcUsdtLPFee, usdcUsdtTransfer, updateUsdcUsdtLpStaked]
158158 else throw("Strict value is not equal to itself.")
159159 }
160160 else if ((id == puzzleUsdnLPTCI))
161161 then {
162162 let puzzleUsdnTci = match assetInfo(puzzleUsdnLPTCI) {
163163 case q: Asset =>
164164 q.quantity
165165 case _ =>
166166 0
167167 }
168168 let puzzleLPStaked = valueOrElse(getInteger(this, keyPUZZLEUSDN), 0)
169169 let singlePuzzleUsdn = fraction(puzzleUsdnTci, def, puzzleLPStaked)
170170 let puzzleUsdnWithdraw = fraction(singlePuzzleUsdn, am, def)
171171 let fee = fraction(puzzleUsdnWithdraw, def, feePerc)
172172 let puzzleUsdnLPFee = ScriptTransfer(Address(tw), fee, puzzleUsdnLP)
173173 let puzzleUsdnTransfer = ScriptTransfer(i.caller, (am - fee), puzzleUsdnLP)
174174 let updatePuzzleUsdnLpStaked = IntegerEntry(keyPUZZLEUSDN, (puzzleLPStaked - puzzleUsdnWithdraw))
175175 let burnPuzzleTCI = Burn(puzzleUsdnLPTCI, am)
176176 if ((burnPuzzleTCI == burnPuzzleTCI))
177177 then [puzzleUsdnLPFee, puzzleUsdnTransfer, updatePuzzleUsdnLpStaked]
178178 else throw("Strict value is not equal to itself.")
179179 }
180180 else throw("Invalid asset")
181181 }
182182
183183
184184
185185 @Callable(i)
186186 func depositWxUsdnLP () = {
187187 let pmt = value(i.payments[0])
188188 let pmtAmount = pmt.amount
189189 if ((pmt.assetId != wxUsdnLP))
190190 then throw("attach WXUSDNLP tokens only")
191191 else if (isStopped)
192192 then throw("smart contract is on lock")
193193 else {
194194 let tkStaked = valueOrElse(getInteger(this, keyWXUSDN), 0)
195195 let totalIssued = match assetInfo(wxUsdnLPTCI) {
196196 case asset: Asset =>
197197 asset.quantity
198198 case _ =>
199199 throw("Can't find asset")
200200 }
201201 let one = fraction(totalIssued, 100000000, tkStaked)
202202 let toIssue = fraction(pmtAmount, one, 100000000)
203203 let updateState = IntegerEntry(keyWXUSDN, (tkStaked + pmtAmount))
204204 let LPstake = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [pmt])
205205 if ((LPstake == LPstake))
206206 then {
207207 let LPIssue = Reissue(wxUsdnLPTCI, toIssue, true)
208208 let transfer = ScriptTransfer(i.caller, toIssue, wxUsdnLPTCI)
209209 [LPIssue, transfer, updateState]
210210 }
211211 else throw("Strict value is not equal to itself.")
212212 }
213213 }
214214
215215
216216
217217 @Callable(i)
218218 func depositUsdtUsdnLP () = {
219219 let pmt = value(i.payments[0])
220220 let pmtAmount = pmt.amount
221221 if ((pmt.assetId != usdtUsdnLP))
222222 then throw("attach USDTUSDNLP tokens only")
223223 else if (isStopped)
224224 then throw("smart contract is on lock")
225225 else {
226226 let tkStaked = valueOrElse(getInteger(this, keyStaked), 0)
227227 let totalIssued = match assetInfo(usdtUsdnLPTCI) {
228228 case asset: Asset =>
229229 asset.quantity
230230 case _ =>
231231 throw("Can't find asset")
232232 }
233233 let fromCompound = valueOrElse(getInteger(this, keyCompound), 0)
234234 let forOne = fraction(totalIssued, 100000000, tkStaked)
235235 let toIssue = fraction(pmtAmount, forOne, 100000000)
236236 let updateState = IntegerEntry(keyStaked, (tkStaked + pmtAmount))
237237 let LPstake = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [pmt])
238238 if ((LPstake == LPstake))
239239 then {
240240 let LPIssue = Reissue(usdtUsdnLPTCI, toIssue, true)
241241 let transfer = ScriptTransfer(i.caller, toIssue, usdtUsdnLPTCI)
242242 [LPIssue, transfer, updateState]
243243 }
244244 else throw("Strict value is not equal to itself.")
245245 }
246246 }
247247
248248
249249
250250 @Callable(i)
251251 func depositUsdcUsdnLP () = {
252252 let pmt = value(i.payments[0])
253253 let pmtAmount = pmt.amount
254254 if ((pmt.assetId != usdcUsdnLP))
255255 then throw("attach USDCUSDNLP tokens only")
256256 else if (isStopped)
257257 then throw("smart contract is on lock")
258258 else {
259259 let tkStaked = valueOrElse(getInteger(this, keyUSDCUSDN), 0)
260260 let totalIssued = match assetInfo(usdcUsdnLPTCI) {
261261 case asset: Asset =>
262262 asset.quantity
263263 case _ =>
264264 throw("Can't find asset")
265265 }
266266 let fromCompound = valueOrElse(getInteger(this, keyUsdcUsdnCompound), 0)
267267 let forOne = fraction(totalIssued, 100000000, tkStaked)
268268 let toIssue = fraction(pmtAmount, forOne, 100000000)
269269 let updateState = IntegerEntry(keyUSDCUSDN, (tkStaked + pmtAmount))
270270 let LPstake = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [pmt])
271271 if ((LPstake == LPstake))
272272 then {
273273 let LPIssue = Reissue(usdcUsdnLPTCI, toIssue, true)
274274 let transfer = ScriptTransfer(i.caller, toIssue, usdcUsdnLPTCI)
275275 [LPIssue, transfer, updateState]
276276 }
277277 else throw("Strict value is not equal to itself.")
278278 }
279279 }
280280
281281
282282
283283 @Callable(i)
284284 func depositUsdcUsdtLP () = {
285285 let pmt = value(i.payments[0])
286286 let pmtAmount = pmt.amount
287287 if ((pmt.assetId != usdcUsdtLP))
288288 then throw("attach USDCUSDTLP tokens only")
289289 else if (isStopped)
290290 then throw("smart contract is on lock")
291291 else {
292292 let tkStaked = valueOrElse(getInteger(this, keyUSDCUSDT), 0)
293293 let totalIssued = match assetInfo(usdcUsdtLPTCI) {
294294 case asset: Asset =>
295295 asset.quantity
296296 case _ =>
297297 throw("Can't find asset")
298298 }
299299 let fromCompound = valueOrElse(getInteger(this, keyUsdcUsdtCompound), 0)
300300 let forOne = fraction(totalIssued, 100000000, tkStaked)
301301 let toIssue = fraction(pmtAmount, forOne, 100000000)
302302 let updateState = IntegerEntry(keyUSDCUSDT, (tkStaked + pmtAmount))
303303 let LPstake = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [pmt])
304304 if ((LPstake == LPstake))
305305 then {
306306 let LPIssue = Reissue(usdcUsdtLPTCI, toIssue, true)
307307 let transfer = ScriptTransfer(i.caller, toIssue, usdcUsdtLPTCI)
308308 [LPIssue, transfer, updateState]
309309 }
310310 else throw("Strict value is not equal to itself.")
311311 }
312312 }
313313
314314
315315
316316 @Callable(i)
317317 func depositPuzzleUsdnLP () = {
318318 let pmt = value(i.payments[0])
319319 let pmtAmount = pmt.amount
320320 if ((pmt.assetId != puzzleUsdnLP))
321321 then throw("attach PUZZLEUDSNLP tokens only")
322322 else if (isStopped)
323323 then throw("smart contract is on lock")
324324 else {
325325 let tkStaked = valueOrElse(getInteger(this, keyPUZZLEUSDN), 0)
326326 let totalIssued = match assetInfo(puzzleUsdnLPTCI) {
327327 case asset: Asset =>
328328 asset.quantity
329329 case _ =>
330330 throw("Can't find asset")
331331 }
332332 let fromCompound = valueOrElse(getInteger(this, keyPuzzleUsdnCompound), 0)
333333 let forOne = fraction(totalIssued, 100000000, tkStaked)
334334 let toIssue = fraction(pmtAmount, forOne, 100000000)
335335 let updateState = IntegerEntry(keyPUZZLEUSDN, (tkStaked + pmtAmount))
336336 let LPstake = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [pmt])
337337 if ((LPstake == LPstake))
338338 then {
339339 let LPIssue = Reissue(puzzleUsdnLPTCI, toIssue, true)
340340 let transfer = ScriptTransfer(i.caller, toIssue, puzzleUsdnLPTCI)
341341 [LPIssue, transfer, updateState]
342342 }
343343 else throw("Strict value is not equal to itself.")
344344 }
345345 }
346346
347347
348348
349349 @Callable(i)
350350 func compoundWxUsdnLP () = {
351351 let compound = value(i.payments[0])
352352 let ca = compound.amount
353353 let isOracle = checkAddress(i.caller.bytes)
354354 if ((compound.assetId != wxUsdnLP))
355355 then throw("attach WXUSDNLP tokens only")
356356 else if (!(isOracle))
357357 then throw("You are not authotized to call this function")
358358 else {
359359 let fromCompound = valueOrElse(getInteger(this, keywxUsdnCompound), 0)
360360 let totalStaked = valueOrElse(getInteger(this, keyWXUSDN), 0)
361361 let stakeC = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [compound])
362362 if ((stakeC == stakeC))
363363 then {
364364 let updateState = IntegerEntry(keyWXUSDN, (totalStaked + ca))
365365 let tc = IntegerEntry(keywxUsdnCompound, (fromCompound + ca))
366366 [updateState, tc]
367367 }
368368 else throw("Strict value is not equal to itself.")
369369 }
370370 }
371371
372372
373373
374374 @Callable(i)
375375 func compoundUsdtUsdnLP () = {
376376 let compound = value(i.payments[0])
377377 let ca = compound.amount
378378 let isOracle = checkAddress(i.caller.bytes)
379379 if ((compound.assetId != usdtUsdnLP))
380380 then throw("attach USDTUSDNLP tokens only")
381381 else if (!(isOracle))
382382 then throw("You are not authotized to call this function")
383383 else {
384384 let fromCompound = valueOrElse(getInteger(this, keyCompound), 0)
385385 let totalStaked = valueOrElse(getInteger(this, keyStaked), 0)
386386 let stakeC = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [compound])
387387 if ((stakeC == stakeC))
388388 then {
389389 let updateState = IntegerEntry(keyStaked, (totalStaked + ca))
390390 let tc = IntegerEntry(keyCompound, (fromCompound + ca))
391391 [updateState, tc]
392392 }
393393 else throw("Strict value is not equal to itself.")
394394 }
395395 }
396396
397397
398398
399399 @Callable(i)
400400 func compoundUsdcUsdnLP () = {
401401 let compound = value(i.payments[0])
402402 let ca = compound.amount
403403 let isOracle = checkAddress(i.caller.bytes)
404404 if ((compound.assetId != usdcUsdnLP))
405405 then throw("attach USDCUSDNLP tokens only")
406406 else if (!(isOracle))
407407 then throw("You are not authotized to call this function")
408408 else {
409409 let fromCompound = valueOrElse(getInteger(this, keyUsdcUsdnCompound), 0)
410410 let totalStaked = valueOrElse(getInteger(this, keyUSDCUSDN), 0)
411411 let stakeC = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [compound])
412412 if ((stakeC == stakeC))
413413 then {
414414 let updateState = IntegerEntry(keyUSDCUSDN, (totalStaked + ca))
415415 let tc = IntegerEntry(keyUsdcUsdnCompound, (fromCompound + ca))
416416 [updateState, tc]
417417 }
418418 else throw("Strict value is not equal to itself.")
419419 }
420420 }
421421
422422
423423
424424 @Callable(i)
425425 func compoundUsdcUsdtLP () = {
426426 let compound = value(i.payments[0])
427427 let ca = compound.amount
428428 let isOracle = checkAddress(i.caller.bytes)
429429 if ((compound.assetId != usdcUsdtLP))
430430 then throw("attach USDCUSDTLP tokens only")
431431 else if (!(isOracle))
432432 then throw("You are not authotized to call this function")
433433 else {
434434 let fromCompound = valueOrElse(getInteger(this, keyUsdcUsdtCompound), 0)
435435 let totalStaked = valueOrElse(getInteger(this, keyUSDCUSDT), 0)
436436 let stakeC = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [compound])
437437 if ((stakeC == stakeC))
438438 then {
439439 let updateState = IntegerEntry(keyUSDCUSDT, (totalStaked + ca))
440440 let tc = IntegerEntry(keyUsdcUsdtCompound, (fromCompound + ca))
441441 [updateState, tc]
442442 }
443443 else throw("Strict value is not equal to itself.")
444444 }
445445 }
446446
447447
448448
449449 @Callable(i)
450450 func compoundPuzzleUsdnLP () = {
451451 let compound = value(i.payments[0])
452452 let ca = compound.amount
453453 let isOracle = checkAddress(i.caller.bytes)
454454 if ((compound.assetId != puzzleUsdnLP))
455455 then throw("attach PUZZLEUSDNLP tokens only")
456456 else if (!(isOracle))
457457 then throw("You are not authotized to call this function")
458458 else {
459459 let fromCompound = valueOrElse(getInteger(this, keyPuzzleUsdnCompound), 0)
460460 let totalStaked = valueOrElse(getInteger(this, keyPUZZLEUSDN), 0)
461461 let stakeC = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [compound])
462462 if ((stakeC == stakeC))
463463 then {
464464 let updateState = IntegerEntry(keyPUZZLEUSDN, (totalStaked + ca))
465465 let tc = IntegerEntry(keyPuzzleUsdnCompound, (fromCompound + ca))
466466 [updateState, tc]
467467 }
468468 else throw("Strict value is not equal to itself.")
469469 }
470470 }
471471
472472
473473
474474 @Callable(i)
475475 func sponsorBoost () = {
476476 let pm = value(i.payments[0])
477477 let lockPeriod = 100
478478 if ((pm.assetId != wxId))
479479 then throw("Error")
480480 else {
481481 let sponsored = valueOrElse(getInteger(this, keySponsorship), 0)
482482 let lock = invoke(Address(base58'3PJL8Hn8LACaSBWLQ3UVhctA5cTQLBFwBAP'), "increaseLock", [lockPeriod], [pm])
483483 if ((lock == lock))
484484 then {
485485 let s = IntegerEntry(keySponsorship, (pm.amount + sponsored))
486486 [s]
487487 }
488488 else throw("Strict value is not equal to itself.")
489489 }
490490 }
491491
492492
493493 @Verifier(tx)
494494 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
495495

github/deemru/w8io/3ef1775 
72.44 ms