tx · 1yt2kgzCXv5ktzXtpnWBXUKTnBSWxoa8HFhtiAfaeJJ

3N8n6BtTBKRZBoPuMzaPBH9FyJhfv9xDFJH:  -0.01400000 Waves

2022.07.26 14:03 [2156683] smart account 3N8n6BtTBKRZBoPuMzaPBH9FyJhfv9xDFJH > SELF 0.00000000 Waves

{ "type": 13, "id": "1yt2kgzCXv5ktzXtpnWBXUKTnBSWxoa8HFhtiAfaeJJ", "fee": 1400000, "feeAssetId": null, "timestamp": 1658833391336, "version": 2, "chainId": 84, "sender": "3N8n6BtTBKRZBoPuMzaPBH9FyJhfv9xDFJH", "senderPublicKey": "4hcnYaYoB2XaCzyJ7wfePpG7EfTd6st6aCAhkskJ9cQ5", "proofs": [ "2mhKs84Q9oWJZa7coLV2xqwiJqqyorFtGSdvLJLvtdXAeeNDcaNvHX6Vt7mtV5YjXGaS5k5yfDwAC6nwmj3UEovQ" ], "script": "base64:BgIaCAISABIAEgASABIAEgASABIAEgASABIAEgAdAAp1c2R0VXNkbkxQASDbTYM1ZEcblu+fDC+gz33VeZ2S6OGbNQ/BP8x7AnApCwANdXNkdFVzZG5MUFRDSQEgCoHNqe1AYR2YSrg62HoEaFMIJsDJmPFhwSl++h3eKvIACHd4VXNkbkxQASAbuaGPe85Mpc36zkfJCxaOTfZb3sLrk8HWxajRsaoLHAALd3hVc2RuTFBUQ0kBILfs3eYbAnvathOH/VXQ1jy2x6I3PUuIvcF7b0hEAJgvAAp1c2RjVXNkbkxQASADaQH8GwqYCojNj/4RWYWFJpEys1qS/CbpSF3Tn95cdgANdXNkY1VzZG5MUFRDSQEg9gI33dOf74ZFL1wjRw+VX9E6baErwqe0m1RBB1L1bsYACnVzZGNVc2R0TFABIMb4pHQbVkhWEJ+QfsIz9DFriwRKLCv9mUuH9YWbfOSMAA11c2RjVXNkdExQVENJASACxoV8BEszx+Lvh2eHUvtVgv2z34QjtqBaxTXdz1dK/gAMcHV6emxlVXNkbkxQASDDM8Z0ziOqpCLfSSTlxJlreASwd1aCdP+40R1KjRzRngAPcHV6emxlVXNkbkxQVENJASC8lPrPBwcBHVd/Y0eapg399QXXxsR7znNab3wpkohHtQAEd3hJZAEgkwEcq6nHbiVXzmaecba9qmv4POhYCyru2aBOuzzcFLEADmtleVNwb25zb3JzaGlwAhNTcG9uc29yc2hpcF9pbl9sb2NrAAlpc1N0b3BwZWQHAAlrZXlTdGFrZWQCCVNUQUtFRF9MUAALa2V5Q29tcG91bmQCDUZyb21fQ29tcG91bmQAEWtleXd4VXNkbkNvbXBvdW5kAhBXWF9VU0ROX2NvbXBvdW5kAAlrZXlXWFVTRE4CB1dYX1VTRE4AE2tleVVzZGNVc2RuQ29tcG91bmQCElVTRENfVVNETl9jb21wb3VuZAALa2V5VVNEQ1VTRE4CCVVTRENfVVNETgATa2V5VXNkY1VzZHRDb21wb3VuZAISVVNEQ19VU0RUX2NvbXBvdW5kAAtrZXlVU0RDVVNEVAIJVVNEQ19VU0RUABVrZXlQdXp6bGVVc2RuQ29tcG91bmQCFFBVWlpMRV9VU0ROX2NvbXBvdW5kAA1rZXlQVVpaTEVVU0ROAgtQVVpaTEVfVVNETgADZGVmAIDC1y8AB2ZlZVBlcmMAgMivoCUAAnR3ARoBVEQHWkBv4n+nI3+BiNPIbDgVCSkce8hAAgAGb3JhY2xlARoBVzWtH6QdsRVtUfPPQcg6qbN4lGqDirxviQAJc3Rha2VQb29sAiMzTXgzem1Yck1jTEZDYWZNdVB0WEF6UjRaUFZlWlliNnFMegEMY2hlY2tBZGRyZXNzAQZjYWxsZXIDCQECIT0CBQZjYWxsZXIFBm9yYWNsZQcGDAFpAQh3aXRoZHJhdwAEB3BheW1lbnQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQCYW0IBQdwYXltZW50BmFtb3VudAQCaWQIBQdwYXltZW50B2Fzc2V0SWQDCQAAAgUCaWQFCnVzZHRVc2RuTFAECVRDSUFtb3VudAQHJG1hdGNoMAkA7AcBBQ11c2R0VXNkbkxQVENJAwkAAQIFByRtYXRjaDACBUFzc2V0BAFxBQckbWF0Y2gwCAUBcQhxdWFudGl0eQAABA51c2RuVXNkdFN0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQlrZXlTdGFrZWQAAAQMZm9yU2luZ2xlVENJCQBrAwUJVENJQW1vdW50BQNkZWYFDnVzZG5Vc2R0U3Rha2VkBBB1c2RuTHBUb1dpdGhkcmF3CQBrAwUMZm9yU2luZ2xlVENJBQJhbQUDZGVmBANmZWUJAGsDBRB1c2RuTHBUb1dpdGhkcmF3BQNkZWYFB2ZlZVBlcmMEB3Vuc3Rha2UJAPwHBAkBB0FkZHJlc3MBARoBVFlAJ5NrSynuvrGhDubcQLjPpI16DOu1DwIHdW5zdGFrZQkAzAgCBQp1c2R0VXNkbkxQCQDMCAIFAmFtBQNuaWwJAMwIAgUHcGF5bWVudAUDbmlsAwkAAAIFB3Vuc3Rha2UFB3Vuc3Rha2UEEXVzZG5McGZlZVRyYW5zZmVyCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEFAnR3BQNmZWUFCnVzZHRVc2RuTFAECHRyYW5zZmVyCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAGUCBRB1c2RuTHBUb1dpdGhkcmF3BQNmZWUFCnVzZHRVc2RuTFAEEnVwZGF0ZVVzZG5McFN0YWtlZAkBDEludGVnZXJFbnRyeQIFCWtleVN0YWtlZAkAZQIFDnVzZG5Vc2R0U3Rha2VkBRB1c2RuTHBUb1dpdGhkcmF3BANicm4JAQRCdXJuAgUNdXNkdFVzZG5MUFRDSQUCYW0DCQAAAgUDYnJuBQNicm4JAMwIAgURdXNkbkxwZmVlVHJhbnNmZXIJAMwIAgUIdHJhbnNmZXIJAMwIAgUSdXBkYXRlVXNkbkxwU3Rha2VkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUCaWQFC3d4VXNkbkxQVENJBAd3eFRjaUFtBAckbWF0Y2gwCQDsBwEFC3d4VXNkbkxQVENJAwkAAQIFByRtYXRjaDACBUFzc2V0BAFxBQckbWF0Y2gwCAUBcQhxdWFudGl0eQAABAx3eFVzZG5TdGFrZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUJa2V5V1hVU0ROAAAECnNpbmdsZVdYTFAJAGsDBQd3eFRjaUFtBQNkZWYFDHd4VXNkblN0YWtlZAQOd3hMcFRvV2l0aGRyYXcJAGsDBQpzaW5nbGVXWExQBQJhbQUDZGVmBANmZWUJAGsDBQ53eExwVG9XaXRoZHJhdwUDZGVmBQdmZWVQZXJjBAd1bnN0YWtlCQD8BwQJAQdBZGRyZXNzAQEaAVRZQCeTa0sp7r6xoQ7m3EC4z6SNegzrtQ8CB3Vuc3Rha2UJAMwIAgUId3hVc2RuTFAJAMwIAgUCYW0FA25pbAkAzAgCBQdwYXltZW50BQNuaWwDCQAAAgUHdW5zdGFrZQUHdW5zdGFrZQQPd3hMcEZlZVRyYW5zZmVyCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEFAnR3BQNmZWUFCHd4VXNkbkxQBAx3eExwVHJhbnNmZXIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkAZQIFAmFtBQNmZWUFCHd4VXNkbkxQBBB1cGRhdGVXeExwU3Rha2VkCQEMSW50ZWdlckVudHJ5AgUJa2V5V1hVU0ROCQBlAgUMd3hVc2RuU3Rha2VkBQ53eExwVG9XaXRoZHJhdwQLYnVybld4THBUY2kJAQRCdXJuAgUId3hVc2RuTFAFAmFtAwkAAAIFC2J1cm5XeExwVGNpBQtidXJuV3hMcFRjaQkAzAgCBQ93eExwRmVlVHJhbnNmZXIJAMwIAgUMd3hMcFRyYW5zZmVyCQDMCAIFEHVwZGF0ZVd4THBTdGFrZWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQJpZAUNdXNkY1VzZG5MUFRDSQQLdXNkY1VzZG5UQ0kEByRtYXRjaDAJAOwHAQUNdXNkY1VzZG5MUFRDSQMJAAECBQckbWF0Y2gwAgVBc3NldAQBcQUHJG1hdGNoMAgFAXEIcXVhbnRpdHkAAAQOdXNkY1VzZG5TdGFrZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwULa2V5VVNEQ1VTRE4AAAQMc2luZ2xlVXNkY0xQCQBrAwULdXNkY1VzZG5UQ0kFA2RlZgUOdXNkY1VzZG5TdGFrZWQEEHVzZGNMcFRvV2l0aGRyYXcJAGsDBQxzaW5nbGVVc2RjTFAFAmFtBQNkZWYEA2ZlZQkAawMFEHVzZGNMcFRvV2l0aGRyYXcFA2RlZgUHZmVlUGVyYwQNdXNkY1VzZG5MUEZlZQkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQJ0dwUDZmVlBQp1c2RjVXNkbkxQBBB1c2RjVXNkblRyYW5zZmVyCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAGUCBQJhbQUDZmVlBQp1c2RjVXNkbkxQBBZ1cGRhdGVVc2RjVXNkbkxwU3Rha2VkCQEMSW50ZWdlckVudHJ5AgULa2V5VVNEQ1VTRE4JAGUCBQ51c2RjVXNkblN0YWtlZAUQdXNkY0xwVG9XaXRoZHJhdwQRYnVyblVzZGNVc2RuTHBUY2kJAQRCdXJuAgUNdXNkY1VzZG5MUFRDSQUCYW0DCQAAAgURYnVyblVzZGNVc2RuTHBUY2kFEWJ1cm5Vc2RjVXNkbkxwVGNpCQDMCAIFDXVzZGNVc2RuTFBGZWUJAMwIAgUQdXNkY1VzZG5UcmFuc2ZlcgkAzAgCBRZ1cGRhdGVVc2RjVXNkbkxwU3Rha2VkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUCaWQFDXVzZGNVc2R0TFBUQ0kEC3VzZGNVc2R0VGNpBAckbWF0Y2gwCQDsBwEFDXVzZGNVc2RuTFBUQ0kDCQABAgUHJG1hdGNoMAIFQXNzZXQEAXEFByRtYXRjaDAIBQFxCHF1YW50aXR5AAAEDnVzZGNVc2R0U3Rha2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFC2tleVVTRENVU0RUAAAEDnNpbmdsZVVzZGNVc2R0CQBrAwULdXNkY1VzZHRUY2kFA2RlZgUOdXNkY1VzZHRTdGFrZWQEFHVzZGNVc2R0THBUb1dpdGhkcmF3CQBrAwUOc2luZ2xlVXNkY1VzZHQFAmFtBQNkZWYEA2ZlZQkAawMFFHVzZGNVc2R0THBUb1dpdGhkcmF3BQNkZWYFB2ZlZVBlcmMEDXVzZGNVc2R0TFBGZWUJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUCdHcFA2ZlZQUKdXNkY1VzZHRMUAQQdXNkY1VzZHRUcmFuc2ZlcgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQBlAgUCYW0FA2ZlZQUKdXNkY1VzZHRMUAQWdXBkYXRlVXNkY1VzZHRMcFN0YWtlZAkBDEludGVnZXJFbnRyeQIFC2tleVVTRENVU0RUCQBlAgUOdXNkY1VzZHRTdGFrZWQFFHVzZGNVc2R0THBUb1dpdGhkcmF3BAtidXJuV3hMcFRjaQkBBEJ1cm4CBQ11c2RjVXNkbkxQVENJBQJhbQMJAAACBQtidXJuV3hMcFRjaQULYnVybld4THBUY2kJAMwIAgUNdXNkY1VzZHRMUEZlZQkAzAgCBRB1c2RjVXNkdFRyYW5zZmVyCQDMCAIFFnVwZGF0ZVVzZGNVc2R0THBTdGFrZWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQJpZAUPcHV6emxlVXNkbkxQVENJBA1wdXp6bGVVc2RuVGNpBAckbWF0Y2gwCQDsBwEFD3B1enpsZVVzZG5MUFRDSQMJAAECBQckbWF0Y2gwAgVBc3NldAQBcQUHJG1hdGNoMAgFAXEIcXVhbnRpdHkAAAQOcHV6emxlTFBTdGFrZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUNa2V5UFVaWkxFVVNETgAABBBzaW5nbGVQdXp6bGVVc2RuCQBrAwUNcHV6emxlVXNkblRjaQUDZGVmBQ5wdXp6bGVMUFN0YWtlZAQScHV6emxlVXNkbldpdGhkcmF3CQBrAwUQc2luZ2xlUHV6emxlVXNkbgUCYW0FA2RlZgQDZmVlCQBrAwUScHV6emxlVXNkbldpdGhkcmF3BQNkZWYFB2ZlZVBlcmMED3B1enpsZVVzZG5MUEZlZQkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQJ0dwUDZmVlBQxwdXp6bGVVc2RuTFAEEnB1enpsZVVzZG5UcmFuc2ZlcgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQBlAgUCYW0FA2ZlZQUMcHV6emxlVXNkbkxQBBh1cGRhdGVQdXp6bGVVc2RuTHBTdGFrZWQJAQxJbnRlZ2VyRW50cnkCBQ1rZXlQVVpaTEVVU0ROCQBlAgUOcHV6emxlTFBTdGFrZWQFEnB1enpsZVVzZG5XaXRoZHJhdwQNYnVyblB1enpsZVRDSQkBBEJ1cm4CBQ9wdXp6bGVVc2RuTFBUQ0kFAmFtAwkAAAIFDWJ1cm5QdXp6bGVUQ0kFDWJ1cm5QdXp6bGVUQ0kJAMwIAgUPcHV6emxlVXNkbkxQRmVlCQDMCAIFEnB1enpsZVVzZG5UcmFuc2ZlcgkAzAgCBRh1cGRhdGVQdXp6bGVVc2RuTHBTdGFrZWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECDUludmFsaWQgYXNzZXQBaQEPZGVwb3NpdFd4VXNkbkxQAAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAECXBtdEFtb3VudAgFA3BtdAZhbW91bnQDCQECIT0CCAUDcG10B2Fzc2V0SWQFCHd4VXNkbkxQCQACAQIbYXR0YWNoIFdYVVNETkxQIHRva2VucyBvbmx5AwUJaXNTdG9wcGVkCQACAQIZc21hcnQgY29udHJhY3QgaXMgb24gbG9jawQIdGtTdGFrZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUJa2V5V1hVU0ROAAAEC3RvdGFsSXNzdWVkBAckbWF0Y2gwCQDsBwEFC3d4VXNkbkxQVENJAwkAAQIFByRtYXRjaDACBUFzc2V0BAVhc3NldAUHJG1hdGNoMAgFBWFzc2V0CHF1YW50aXR5CQACAQIQQ2FuJ3QgZmluZCBhc3NldAQDb25lCQBrAwULdG90YWxJc3N1ZWQAgMLXLwUIdGtTdGFrZWQEB3RvSXNzdWUJAGsDBQlwbXRBbW91bnQFA29uZQCAwtcvBAt1cGRhdGVTdGF0ZQkBDEludGVnZXJFbnRyeQIFCWtleVdYVVNETgkAZAIFCHRrU3Rha2VkBQlwbXRBbW91bnQEB0xQc3Rha2UJAPwHBAkBB0FkZHJlc3MBARoBV+s7535uBRjCkaSYFhfhZtdFJyDuJUlWqAIFc3Rha2UFA25pbAkAzAgCBQNwbXQFA25pbAMJAAACBQdMUHN0YWtlBQdMUHN0YWtlBAdMUElzc3VlCQEHUmVpc3N1ZQMFC3d4VXNkbkxQVENJBQd0b0lzc3VlBgQIdHJhbnNmZXIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUHdG9Jc3N1ZQULd3hVc2RuTFBUQ0kJAMwIAgUHTFBJc3N1ZQkAzAgCBQh0cmFuc2ZlcgkAzAgCBQt1cGRhdGVTdGF0ZQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEWRlcG9zaXRVc2R0VXNkbkxQAAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAECXBtdEFtb3VudAgFA3BtdAZhbW91bnQDCQECIT0CCAUDcG10B2Fzc2V0SWQFCnVzZHRVc2RuTFAJAAIBAh1hdHRhY2ggVVNEVFVTRE5MUCB0b2tlbnMgb25seQMFCWlzU3RvcHBlZAkAAgECGXNtYXJ0IGNvbnRyYWN0IGlzIG9uIGxvY2sECHRrU3Rha2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFCWtleVN0YWtlZAAABAt0b3RhbElzc3VlZAQHJG1hdGNoMAkA7AcBBQ11c2R0VXNkbkxQVENJAwkAAQIFByRtYXRjaDACBUFzc2V0BAVhc3NldAUHJG1hdGNoMAgFBWFzc2V0CHF1YW50aXR5CQACAQIQQ2FuJ3QgZmluZCBhc3NldAQMZnJvbUNvbXBvdW5kCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFC2tleUNvbXBvdW5kAAAEBmZvck9uZQkAawMFC3RvdGFsSXNzdWVkAIDC1y8FCHRrU3Rha2VkBAd0b0lzc3VlCQBrAwUJcG10QW1vdW50BQZmb3JPbmUAgMLXLwQLdXBkYXRlU3RhdGUJAQxJbnRlZ2VyRW50cnkCBQlrZXlTdGFrZWQJAGQCBQh0a1N0YWtlZAUJcG10QW1vdW50BAdMUHN0YWtlCQD8BwQJAQdBZGRyZXNzAQEaAVfrO+d+bgUYwpGkmBYX4WbXRScg7iVJVqgCBXN0YWtlBQNuaWwJAMwIAgUDcG10BQNuaWwDCQAAAgUHTFBzdGFrZQUHTFBzdGFrZQQHTFBJc3N1ZQkBB1JlaXNzdWUDBQ11c2R0VXNkbkxQVENJBQd0b0lzc3VlBgQIdHJhbnNmZXIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUHdG9Jc3N1ZQUNdXNkdFVzZG5MUFRDSQkAzAgCBQdMUElzc3VlCQDMCAIFCHRyYW5zZmVyCQDMCAIFC3VwZGF0ZVN0YXRlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQERZGVwb3NpdFVzZGNVc2RuTFAABANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQJcG10QW1vdW50CAUDcG10BmFtb3VudAMJAQIhPQIIBQNwbXQHYXNzZXRJZAUKdXNkY1VzZG5MUAkAAgECHWF0dGFjaCBVU0RDVVNETkxQIHRva2VucyBvbmx5AwUJaXNTdG9wcGVkCQACAQIZc21hcnQgY29udHJhY3QgaXMgb24gbG9jawQIdGtTdGFrZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwULa2V5VVNEQ1VTRE4AAAQLdG90YWxJc3N1ZWQEByRtYXRjaDAJAOwHAQUNdXNkY1VzZG5MUFRDSQMJAAECBQckbWF0Y2gwAgVBc3NldAQFYXNzZXQFByRtYXRjaDAIBQVhc3NldAhxdWFudGl0eQkAAgECEENhbid0IGZpbmQgYXNzZXQEDGZyb21Db21wb3VuZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRNrZXlVc2RjVXNkbkNvbXBvdW5kAAAEBmZvck9uZQkAawMFC3RvdGFsSXNzdWVkAIDC1y8FCHRrU3Rha2VkBAd0b0lzc3VlCQBrAwUJcG10QW1vdW50BQZmb3JPbmUAgMLXLwQLdXBkYXRlU3RhdGUJAQxJbnRlZ2VyRW50cnkCBQtrZXlVU0RDVVNETgkAZAIFCHRrU3Rha2VkBQlwbXRBbW91bnQEB0xQc3Rha2UJAPwHBAkBB0FkZHJlc3MBARoBV+s7535uBRjCkaSYFhfhZtdFJyDuJUlWqAIFc3Rha2UFA25pbAkAzAgCBQNwbXQFA25pbAMJAAACBQdMUHN0YWtlBQdMUHN0YWtlBAdMUElzc3VlCQEHUmVpc3N1ZQMFDXVzZGNVc2RuTFBUQ0kFB3RvSXNzdWUGBAh0cmFuc2ZlcgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQd0b0lzc3VlBQ11c2RjVXNkbkxQVENJCQDMCAIFB0xQSXNzdWUJAMwIAgUIdHJhbnNmZXIJAMwIAgULdXBkYXRlU3RhdGUFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARFkZXBvc2l0VXNkY1VzZHRMUAAEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAlwbXRBbW91bnQIBQNwbXQGYW1vdW50AwkBAiE9AggFA3BtdAdhc3NldElkBQp1c2RjVXNkdExQCQACAQIdYXR0YWNoIFVTRENVU0RUTFAgdG9rZW5zIG9ubHkDBQlpc1N0b3BwZWQJAAIBAhlzbWFydCBjb250cmFjdCBpcyBvbiBsb2NrBAh0a1N0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQtrZXlVU0RDVVNEVAAABAt0b3RhbElzc3VlZAQHJG1hdGNoMAkA7AcBBQ11c2RjVXNkdExQVENJAwkAAQIFByRtYXRjaDACBUFzc2V0BAVhc3NldAUHJG1hdGNoMAgFBWFzc2V0CHF1YW50aXR5CQACAQIQQ2FuJ3QgZmluZCBhc3NldAQMZnJvbUNvbXBvdW5kCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFE2tleVVzZGNVc2R0Q29tcG91bmQAAAQGZm9yT25lCQBrAwULdG90YWxJc3N1ZWQAgMLXLwUIdGtTdGFrZWQEB3RvSXNzdWUJAGsDBQlwbXRBbW91bnQFBmZvck9uZQCAwtcvBAt1cGRhdGVTdGF0ZQkBDEludGVnZXJFbnRyeQIFC2tleVVTRENVU0RUCQBkAgUIdGtTdGFrZWQFCXBtdEFtb3VudAQHTFBzdGFrZQkA/AcECQEHQWRkcmVzcwEBGgFX6zvnfm4FGMKRpJgWF+Fm10UnIO4lSVaoAgVzdGFrZQUDbmlsCQDMCAIFA3BtdAUDbmlsAwkAAAIFB0xQc3Rha2UFB0xQc3Rha2UEB0xQSXNzdWUJAQdSZWlzc3VlAwUNdXNkY1VzZHRMUFRDSQUHdG9Jc3N1ZQYECHRyYW5zZmVyCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFB3RvSXNzdWUFDXVzZGNVc2R0TFBUQ0kJAMwIAgUHTFBJc3N1ZQkAzAgCBQh0cmFuc2ZlcgkAzAgCBQt1cGRhdGVTdGF0ZQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBE2RlcG9zaXRQdXp6bGVVc2RuTFAABANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQJcG10QW1vdW50CAUDcG10BmFtb3VudAMJAQIhPQIIBQNwbXQHYXNzZXRJZAUMcHV6emxlVXNkbkxQCQACAQIfYXR0YWNoIFBVWlpMRVVEU05MUCB0b2tlbnMgb25seQMFCWlzU3RvcHBlZAkAAgECGXNtYXJ0IGNvbnRyYWN0IGlzIG9uIGxvY2sECHRrU3Rha2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDWtleVBVWlpMRVVTRE4AAAQLdG90YWxJc3N1ZWQEByRtYXRjaDAJAOwHAQUPcHV6emxlVXNkbkxQVENJAwkAAQIFByRtYXRjaDACBUFzc2V0BAVhc3NldAUHJG1hdGNoMAgFBWFzc2V0CHF1YW50aXR5CQACAQIQQ2FuJ3QgZmluZCBhc3NldAQMZnJvbUNvbXBvdW5kCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFFWtleVB1enpsZVVzZG5Db21wb3VuZAAABAZmb3JPbmUJAGsDBQt0b3RhbElzc3VlZACAwtcvBQh0a1N0YWtlZAQHdG9Jc3N1ZQkAawMFCXBtdEFtb3VudAUGZm9yT25lAIDC1y8EC3VwZGF0ZVN0YXRlCQEMSW50ZWdlckVudHJ5AgUNa2V5UFVaWkxFVVNETgkAZAIFCHRrU3Rha2VkBQlwbXRBbW91bnQEB0xQc3Rha2UJAPwHBAkBB0FkZHJlc3MBARoBV+s7535uBRjCkaSYFhfhZtdFJyDuJUlWqAIFc3Rha2UFA25pbAkAzAgCBQNwbXQFA25pbAMJAAACBQdMUHN0YWtlBQdMUHN0YWtlBAdMUElzc3VlCQEHUmVpc3N1ZQMFD3B1enpsZVVzZG5MUFRDSQUHdG9Jc3N1ZQYECHRyYW5zZmVyCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFB3RvSXNzdWUFD3B1enpsZVVzZG5MUFRDSQkAzAgCBQdMUElzc3VlCQDMCAIFCHRyYW5zZmVyCQDMCAIFC3VwZGF0ZVN0YXRlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEQY29tcG91bmRXeFVzZG5MUAAECGNvbXBvdW5kCQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEAmNhCAUIY29tcG91bmQGYW1vdW50BAhpc09yYWNsZQkBDGNoZWNrQWRkcmVzcwEICAUBaQZjYWxsZXIFYnl0ZXMDCQECIT0CCAUIY29tcG91bmQHYXNzZXRJZAUId3hVc2RuTFAJAAIBAhthdHRhY2ggV1hVU0ROTFAgdG9rZW5zIG9ubHkDCQEBIQEFCGlzT3JhY2xlCQACAQIsWW91IGFyZSBub3QgYXV0aG90aXplZCB0byBjYWxsIHRoaXMgZnVuY3Rpb24EDGZyb21Db21wb3VuZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRFrZXl3eFVzZG5Db21wb3VuZAAABAt0b3RhbFN0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQlrZXlXWFVTRE4AAAQGc3Rha2VDCQD8BwQJAQdBZGRyZXNzAQEaAVfrO+d+bgUYwpGkmBYX4WbXRScg7iVJVqgCBXN0YWtlBQNuaWwJAMwIAgUIY29tcG91bmQFA25pbAMJAAACBQZzdGFrZUMFBnN0YWtlQwQLdXBkYXRlU3RhdGUJAQxJbnRlZ2VyRW50cnkCBQlrZXlXWFVTRE4JAGQCBQt0b3RhbFN0YWtlZAUCY2EEAnRjCQEMSW50ZWdlckVudHJ5AgURa2V5d3hVc2RuQ29tcG91bmQJAGQCBQxmcm9tQ29tcG91bmQFAmNhCQDMCAIFC3VwZGF0ZVN0YXRlCQDMCAIFAnRjBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQESY29tcG91bmRVc2R0VXNkbkxQAAQIY29tcG91bmQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQCY2EIBQhjb21wb3VuZAZhbW91bnQECGlzT3JhY2xlCQEMY2hlY2tBZGRyZXNzAQgIBQFpBmNhbGxlcgVieXRlcwMJAQIhPQIIBQhjb21wb3VuZAdhc3NldElkBQp1c2R0VXNkbkxQCQACAQIdYXR0YWNoIFVTRFRVU0ROTFAgdG9rZW5zIG9ubHkDCQEBIQEFCGlzT3JhY2xlCQACAQIsWW91IGFyZSBub3QgYXV0aG90aXplZCB0byBjYWxsIHRoaXMgZnVuY3Rpb24EDGZyb21Db21wb3VuZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQtrZXlDb21wb3VuZAAABAt0b3RhbFN0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQlrZXlTdGFrZWQAAAQGc3Rha2VDCQD8BwQJAQdBZGRyZXNzAQEaAVfrO+d+bgUYwpGkmBYX4WbXRScg7iVJVqgCBXN0YWtlBQNuaWwJAMwIAgUIY29tcG91bmQFA25pbAMJAAACBQZzdGFrZUMFBnN0YWtlQwQLdXBkYXRlU3RhdGUJAQxJbnRlZ2VyRW50cnkCBQlrZXlTdGFrZWQJAGQCBQt0b3RhbFN0YWtlZAUCY2EEAnRjCQEMSW50ZWdlckVudHJ5AgULa2V5Q29tcG91bmQJAGQCBQxmcm9tQ29tcG91bmQFAmNhCQDMCAIFC3VwZGF0ZVN0YXRlCQDMCAIFAnRjBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQESY29tcG91bmRVc2RjVXNkbkxQAAQIY29tcG91bmQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQCY2EIBQhjb21wb3VuZAZhbW91bnQECGlzT3JhY2xlCQEMY2hlY2tBZGRyZXNzAQgIBQFpBmNhbGxlcgVieXRlcwMJAQIhPQIIBQhjb21wb3VuZAdhc3NldElkBQp1c2RjVXNkbkxQCQACAQIdYXR0YWNoIFVTRENVU0ROTFAgdG9rZW5zIG9ubHkDCQEBIQEFCGlzT3JhY2xlCQACAQIsWW91IGFyZSBub3QgYXV0aG90aXplZCB0byBjYWxsIHRoaXMgZnVuY3Rpb24EDGZyb21Db21wb3VuZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRNrZXlVc2RjVXNkbkNvbXBvdW5kAAAEC3RvdGFsU3Rha2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFC2tleVVTRENVU0ROAAAEBnN0YWtlQwkA/AcECQEHQWRkcmVzcwEBGgFX6zvnfm4FGMKRpJgWF+Fm10UnIO4lSVaoAgVzdGFrZQUDbmlsCQDMCAIFCGNvbXBvdW5kBQNuaWwDCQAAAgUGc3Rha2VDBQZzdGFrZUMEC3VwZGF0ZVN0YXRlCQEMSW50ZWdlckVudHJ5AgULa2V5VVNEQ1VTRE4JAGQCBQt0b3RhbFN0YWtlZAUCY2EEAnRjCQEMSW50ZWdlckVudHJ5AgUTa2V5VXNkY1VzZG5Db21wb3VuZAkAZAIFDGZyb21Db21wb3VuZAUCY2EJAMwIAgULdXBkYXRlU3RhdGUJAMwIAgUCdGMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARJjb21wb3VuZFVzZGNVc2R0TFAABAhjb21wb3VuZAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAJjYQgFCGNvbXBvdW5kBmFtb3VudAQIaXNPcmFjbGUJAQxjaGVja0FkZHJlc3MBCAgFAWkGY2FsbGVyBWJ5dGVzAwkBAiE9AggFCGNvbXBvdW5kB2Fzc2V0SWQFCnVzZGNVc2R0TFAJAAIBAh1hdHRhY2ggVVNEQ1VTRFRMUCB0b2tlbnMgb25seQMJAQEhAQUIaXNPcmFjbGUJAAIBAixZb3UgYXJlIG5vdCBhdXRob3RpemVkIHRvIGNhbGwgdGhpcyBmdW5jdGlvbgQMZnJvbUNvbXBvdW5kCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFE2tleVVzZGNVc2R0Q29tcG91bmQAAAQLdG90YWxTdGFrZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwULa2V5VVNEQ1VTRFQAAAQGc3Rha2VDCQD8BwQJAQdBZGRyZXNzAQEaAVfrO+d+bgUYwpGkmBYX4WbXRScg7iVJVqgCBXN0YWtlBQNuaWwJAMwIAgUIY29tcG91bmQFA25pbAMJAAACBQZzdGFrZUMFBnN0YWtlQwQLdXBkYXRlU3RhdGUJAQxJbnRlZ2VyRW50cnkCBQtrZXlVU0RDVVNEVAkAZAIFC3RvdGFsU3Rha2VkBQJjYQQCdGMJAQxJbnRlZ2VyRW50cnkCBRNrZXlVc2RjVXNkdENvbXBvdW5kCQBkAgUMZnJvbUNvbXBvdW5kBQJjYQkAzAgCBQt1cGRhdGVTdGF0ZQkAzAgCBQJ0YwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFGNvbXBvdW5kUHV6emxlVXNkbkxQAAQIY29tcG91bmQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQCY2EIBQhjb21wb3VuZAZhbW91bnQECGlzT3JhY2xlCQEMY2hlY2tBZGRyZXNzAQgIBQFpBmNhbGxlcgVieXRlcwMJAQIhPQIIBQhjb21wb3VuZAdhc3NldElkBQxwdXp6bGVVc2RuTFAJAAIBAh9hdHRhY2ggUFVaWkxFVVNETkxQIHRva2VucyBvbmx5AwkBASEBBQhpc09yYWNsZQkAAgECLFlvdSBhcmUgbm90IGF1dGhvdGl6ZWQgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uBAxmcm9tQ29tcG91bmQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUVa2V5UHV6emxlVXNkbkNvbXBvdW5kAAAEC3RvdGFsU3Rha2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDWtleVBVWlpMRVVTRE4AAAQGc3Rha2VDCQD8BwQJAQdBZGRyZXNzAQEaAVfrO+d+bgUYwpGkmBYX4WbXRScg7iVJVqgCBXN0YWtlBQNuaWwJAMwIAgUIY29tcG91bmQFA25pbAMJAAACBQZzdGFrZUMFBnN0YWtlQwQLdXBkYXRlU3RhdGUJAQxJbnRlZ2VyRW50cnkCBQ1rZXlQVVpaTEVVU0ROCQBkAgULdG90YWxTdGFrZWQFAmNhBAJ0YwkBDEludGVnZXJFbnRyeQIFFWtleVB1enpsZVVzZG5Db21wb3VuZAkAZAIFDGZyb21Db21wb3VuZAUCY2EJAMwIAgULdXBkYXRlU3RhdGUJAMwIAgUCdGMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQxzcG9uc29yQm9vc3QABAJwbQkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABApsb2NrUGVyaW9kAGQDCQECIT0CCAUCcG0HYXNzZXRJZAUEd3hJZAkAAgECBUVycm9yBAlzcG9uc29yZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUOa2V5U3BvbnNvcnNoaXAAAAQEbG9jawkA/AcECQEHQWRkcmVzcwEBGgFXs+bmVRgRabDkMw+IUUOknK7W1UsDSxFYAgxpbmNyZWFzZUxvY2sJAMwIAgUKbG9ja1BlcmlvZAUDbmlsCQDMCAIFAnBtBQNuaWwDCQAAAgUEbG9jawUEbG9jawQBcwkBDEludGVnZXJFbnRyeQIFDmtleVNwb25zb3JzaGlwCQBkAggFAnBtBmFtb3VudAUJc3BvbnNvcmVkCQDMCAIFAXMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXnGM9Zr", "height": 2156683, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: YPzjZC7jVphA318BsYAX55pN3zwcV4dJCPn4SAHoBfY Next: B353fZMBKiMBVyKfgc1g9G1EFYgFAR9U722FQG4R8Px8 Diff:
OldNewDifferences
104104 let singleWXLP = fraction(wxTciAm, def, wxUsdnStaked)
105105 let wxLpToWithdraw = fraction(singleWXLP, am, def)
106106 let fee = fraction(wxLpToWithdraw, def, feePerc)
107- let unstake = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "unstake", [stakePool, am], [payment])
107+ let unstake = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "unstake", [wxUsdnLP, am], [payment])
108108 if ((unstake == unstake))
109109 then {
110110 let wxLpFeeTransfer = ScriptTransfer(Address(tw), fee, wxUsdnLP)
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)
7979 let forSingleTCI = fraction(TCIAmount, def, usdnUsdtStaked)
8080 let usdnLpToWithdraw = fraction(forSingleTCI, am, def)
8181 let fee = fraction(usdnLpToWithdraw, def, feePerc)
8282 let unstake = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "unstake", [usdtUsdnLP, 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)
104104 let singleWXLP = fraction(wxTciAm, def, wxUsdnStaked)
105105 let wxLpToWithdraw = fraction(singleWXLP, am, def)
106106 let fee = fraction(wxLpToWithdraw, def, feePerc)
107- let unstake = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "unstake", [stakePool, am], [payment])
107+ let unstake = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "unstake", [wxUsdnLP, 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 
89.15 ms