tx · 7ndq3f9PL2eFWJqEJGgEa97C7z7RLNTMUpuWAQ1ZYbFC

3N8n6BtTBKRZBoPuMzaPBH9FyJhfv9xDFJH:  -0.01400000 Waves

2022.07.26 13:57 [2156677] smart account 3N8n6BtTBKRZBoPuMzaPBH9FyJhfv9xDFJH > SELF 0.00000000 Waves

{ "type": 13, "id": "7ndq3f9PL2eFWJqEJGgEa97C7z7RLNTMUpuWAQ1ZYbFC", "fee": 1400000, "feeAssetId": null, "timestamp": 1658833119215, "version": 2, "chainId": 84, "sender": "3N8n6BtTBKRZBoPuMzaPBH9FyJhfv9xDFJH", "senderPublicKey": "4hcnYaYoB2XaCzyJ7wfePpG7EfTd6st6aCAhkskJ9cQ5", "proofs": [ "3xNiVFncp9cLk9ohnHsY6bmxow1GKjKxR6tbpujcs2jRCe1Yt1B4WDamFL8a16GigzmC3GaxxWT7Qk9HLtYeWP3B" ], "script": "base64:BgIaCAISABIAEgASABIAEgASABIAEgASABIAEgAdAAp1c2R0VXNkbkxQASDbTYM1ZEcblu+fDC+gz33VeZ2S6OGbNQ/BP8x7AnApCwANdXNkdFVzZG5MUFRDSQEgCoHNqe1AYR2YSrg62HoEaFMIJsDJmPFhwSl++h3eKvIACHd4VXNkbkxQASAbuaGPe85Mpc36zkfJCxaOTfZb3sLrk8HWxajRsaoLHAALd3hVc2RuTFBUQ0kBILfs3eYbAnvathOH/VXQ1jy2x6I3PUuIvcF7b0hEAJgvAAp1c2RjVXNkbkxQASADaQH8GwqYCojNj/4RWYWFJpEys1qS/CbpSF3Tn95cdgANdXNkY1VzZG5MUFRDSQEg9gI33dOf74ZFL1wjRw+VX9E6baErwqe0m1RBB1L1bsYACnVzZGNVc2R0TFABIMb4pHQbVkhWEJ+QfsIz9DFriwRKLCv9mUuH9YWbfOSMAA11c2RjVXNkdExQVENJASACxoV8BEszx+Lvh2eHUvtVgv2z34QjtqBaxTXdz1dK/gAMcHV6emxlVXNkbkxQASDDM8Z0ziOqpCLfSSTlxJlreASwd1aCdP+40R1KjRzRngAPcHV6emxlVXNkbkxQVENJASC8lPrPBwcBHVd/Y0eapg399QXXxsR7znNab3wpkohHtQAEd3hJZAEgkwEcq6nHbiVXzmaecba9qmv4POhYCyru2aBOuzzcFLEADmtleVNwb25zb3JzaGlwAhNTcG9uc29yc2hpcF9pbl9sb2NrAAlpc1N0b3BwZWQHAAlrZXlTdGFrZWQCCVNUQUtFRF9MUAALa2V5Q29tcG91bmQCDUZyb21fQ29tcG91bmQAEWtleXd4VXNkbkNvbXBvdW5kAhBXWF9VU0ROX2NvbXBvdW5kAAlrZXlXWFVTRE4CB1dYX1VTRE4AE2tleVVzZGNVc2RuQ29tcG91bmQCElVTRENfVVNETl9jb21wb3VuZAALa2V5VVNEQ1VTRE4CCVVTRENfVVNETgATa2V5VXNkY1VzZHRDb21wb3VuZAISVVNEQ19VU0RUX2NvbXBvdW5kAAtrZXlVU0RDVVNEVAIJVVNEQ19VU0RUABVrZXlQdXp6bGVVc2RuQ29tcG91bmQCFFBVWlpMRV9VU0ROX2NvbXBvdW5kAA1rZXlQVVpaTEVVU0ROAgtQVVpaTEVfVVNETgADZGVmAIDC1y8AB2ZlZVBlcmMAgMivoCUAAnR3ARoBVEQHWkBv4n+nI3+BiNPIbDgVCSkce8hAAgAGb3JhY2xlARoBVzWtH6QdsRVtUfPPQcg6qbN4lGqDirxviQAJc3Rha2VQb29sARoBVFlAJ5NrSynuvrGhDubcQLjPpI16DOu1DwEMY2hlY2tBZGRyZXNzAQZjYWxsZXIDCQECIT0CBQZjYWxsZXIFBm9yYWNsZQcGDAFpAQh3aXRoZHJhdwAEB3BheW1lbnQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQCYW0IBQdwYXltZW50BmFtb3VudAQCaWQIBQdwYXltZW50B2Fzc2V0SWQDCQAAAgUCaWQFCnVzZHRVc2RuTFAECVRDSUFtb3VudAQHJG1hdGNoMAkA7AcBBQ11c2R0VXNkbkxQVENJAwkAAQIFByRtYXRjaDACBUFzc2V0BAFxBQckbWF0Y2gwCAUBcQhxdWFudGl0eQAABA51c2RuVXNkdFN0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQlrZXlTdGFrZWQAAAQMZm9yU2luZ2xlVENJCQBrAwUJVENJQW1vdW50BQNkZWYFDnVzZG5Vc2R0U3Rha2VkBBB1c2RuTHBUb1dpdGhkcmF3CQBrAwUMZm9yU2luZ2xlVENJBQJhbQUDZGVmBANmZWUJAGsDBRB1c2RuTHBUb1dpdGhkcmF3BQNkZWYFB2ZlZVBlcmMEB3Vuc3Rha2UJAPwHBAkBB0FkZHJlc3MBBQlzdGFrZVBvb2wCB3Vuc3Rha2UJAMwIAgUKdXNkdFVzZG5MUAkAzAgCBQJhbQUDbmlsCQDMCAIFB3BheW1lbnQFA25pbAMJAAACBQd1bnN0YWtlBQd1bnN0YWtlBBF1c2RuTHBmZWVUcmFuc2ZlcgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQJ0dwUDZmVlBQp1c2R0VXNkbkxQBAh0cmFuc2ZlcgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQBlAgUQdXNkbkxwVG9XaXRoZHJhdwUDZmVlBQp1c2R0VXNkbkxQBBJ1cGRhdGVVc2RuTHBTdGFrZWQJAQxJbnRlZ2VyRW50cnkCBQlrZXlTdGFrZWQJAGUCBQ51c2RuVXNkdFN0YWtlZAUQdXNkbkxwVG9XaXRoZHJhdwQDYnJuCQEEQnVybgIFDXVzZHRVc2RuTFBUQ0kFAmFtAwkAAAIFA2JybgUDYnJuCQDMCAIFEXVzZG5McGZlZVRyYW5zZmVyCQDMCAIFCHRyYW5zZmVyCQDMCAIFEnVwZGF0ZVVzZG5McFN0YWtlZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFAmlkBQt3eFVzZG5MUFRDSQQHd3hUY2lBbQQHJG1hdGNoMAkA7AcBBQt3eFVzZG5MUFRDSQMJAAECBQckbWF0Y2gwAgVBc3NldAQBcQUHJG1hdGNoMAgFAXEIcXVhbnRpdHkAAAQMd3hVc2RuU3Rha2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFCWtleVdYVVNETgAABApzaW5nbGVXWExQCQBrAwUHd3hUY2lBbQUDZGVmBQx3eFVzZG5TdGFrZWQEDnd4THBUb1dpdGhkcmF3CQBrAwUKc2luZ2xlV1hMUAUCYW0FA2RlZgQDZmVlCQBrAwUOd3hMcFRvV2l0aGRyYXcFA2RlZgUHZmVlUGVyYwQHdW5zdGFrZQkA/AcECQEHQWRkcmVzcwEFCXN0YWtlUG9vbAIHdW5zdGFrZQkAzAgCBQh3eFVzZG5MUAkAzAgCBQJhbQUDbmlsCQDMCAIFB3BheW1lbnQFA25pbAMJAAACBQd1bnN0YWtlBQd1bnN0YWtlBA93eExwRmVlVHJhbnNmZXIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUCdHcFA2ZlZQUId3hVc2RuTFAEDHd4THBUcmFuc2ZlcgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQBlAgUCYW0FA2ZlZQUId3hVc2RuTFAEEHVwZGF0ZVd4THBTdGFrZWQJAQxJbnRlZ2VyRW50cnkCBQlrZXlXWFVTRE4JAGUCBQx3eFVzZG5TdGFrZWQFDnd4THBUb1dpdGhkcmF3BAtidXJuV3hMcFRjaQkBBEJ1cm4CBQh3eFVzZG5MUAUCYW0DCQAAAgULYnVybld4THBUY2kFC2J1cm5XeExwVGNpCQDMCAIFD3d4THBGZWVUcmFuc2ZlcgkAzAgCBQx3eExwVHJhbnNmZXIJAMwIAgUQdXBkYXRlV3hMcFN0YWtlZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFAmlkBQ11c2RjVXNkbkxQVENJBAt1c2RjVXNkblRDSQQHJG1hdGNoMAkA7AcBBQ11c2RjVXNkbkxQVENJAwkAAQIFByRtYXRjaDACBUFzc2V0BAFxBQckbWF0Y2gwCAUBcQhxdWFudGl0eQAABA51c2RjVXNkblN0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQtrZXlVU0RDVVNETgAABAxzaW5nbGVVc2RjTFAJAGsDBQt1c2RjVXNkblRDSQUDZGVmBQ51c2RjVXNkblN0YWtlZAQQdXNkY0xwVG9XaXRoZHJhdwkAawMFDHNpbmdsZVVzZGNMUAUCYW0FA2RlZgQDZmVlCQBrAwUQdXNkY0xwVG9XaXRoZHJhdwUDZGVmBQdmZWVQZXJjBA11c2RjVXNkbkxQRmVlCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEFAnR3BQNmZWUFCnVzZGNVc2RuTFAEEHVzZGNVc2RuVHJhbnNmZXIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkAZQIFAmFtBQNmZWUFCnVzZGNVc2RuTFAEFnVwZGF0ZVVzZGNVc2RuTHBTdGFrZWQJAQxJbnRlZ2VyRW50cnkCBQtrZXlVU0RDVVNETgkAZQIFDnVzZGNVc2RuU3Rha2VkBRB1c2RjTHBUb1dpdGhkcmF3BBFidXJuVXNkY1VzZG5McFRjaQkBBEJ1cm4CBQ11c2RjVXNkbkxQVENJBQJhbQMJAAACBRFidXJuVXNkY1VzZG5McFRjaQURYnVyblVzZGNVc2RuTHBUY2kJAMwIAgUNdXNkY1VzZG5MUEZlZQkAzAgCBRB1c2RjVXNkblRyYW5zZmVyCQDMCAIFFnVwZGF0ZVVzZGNVc2RuTHBTdGFrZWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQJpZAUNdXNkY1VzZHRMUFRDSQQLdXNkY1VzZHRUY2kEByRtYXRjaDAJAOwHAQUNdXNkY1VzZG5MUFRDSQMJAAECBQckbWF0Y2gwAgVBc3NldAQBcQUHJG1hdGNoMAgFAXEIcXVhbnRpdHkAAAQOdXNkY1VzZHRTdGFrZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwULa2V5VVNEQ1VTRFQAAAQOc2luZ2xlVXNkY1VzZHQJAGsDBQt1c2RjVXNkdFRjaQUDZGVmBQ51c2RjVXNkdFN0YWtlZAQUdXNkY1VzZHRMcFRvV2l0aGRyYXcJAGsDBQ5zaW5nbGVVc2RjVXNkdAUCYW0FA2RlZgQDZmVlCQBrAwUUdXNkY1VzZHRMcFRvV2l0aGRyYXcFA2RlZgUHZmVlUGVyYwQNdXNkY1VzZHRMUEZlZQkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQJ0dwUDZmVlBQp1c2RjVXNkdExQBBB1c2RjVXNkdFRyYW5zZmVyCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAGUCBQJhbQUDZmVlBQp1c2RjVXNkdExQBBZ1cGRhdGVVc2RjVXNkdExwU3Rha2VkCQEMSW50ZWdlckVudHJ5AgULa2V5VVNEQ1VTRFQJAGUCBQ51c2RjVXNkdFN0YWtlZAUUdXNkY1VzZHRMcFRvV2l0aGRyYXcEC2J1cm5XeExwVGNpCQEEQnVybgIFDXVzZGNVc2RuTFBUQ0kFAmFtAwkAAAIFC2J1cm5XeExwVGNpBQtidXJuV3hMcFRjaQkAzAgCBQ11c2RjVXNkdExQRmVlCQDMCAIFEHVzZGNVc2R0VHJhbnNmZXIJAMwIAgUWdXBkYXRlVXNkY1VzZHRMcFN0YWtlZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFAmlkBQ9wdXp6bGVVc2RuTFBUQ0kEDXB1enpsZVVzZG5UY2kEByRtYXRjaDAJAOwHAQUPcHV6emxlVXNkbkxQVENJAwkAAQIFByRtYXRjaDACBUFzc2V0BAFxBQckbWF0Y2gwCAUBcQhxdWFudGl0eQAABA5wdXp6bGVMUFN0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ1rZXlQVVpaTEVVU0ROAAAEEHNpbmdsZVB1enpsZVVzZG4JAGsDBQ1wdXp6bGVVc2RuVGNpBQNkZWYFDnB1enpsZUxQU3Rha2VkBBJwdXp6bGVVc2RuV2l0aGRyYXcJAGsDBRBzaW5nbGVQdXp6bGVVc2RuBQJhbQUDZGVmBANmZWUJAGsDBRJwdXp6bGVVc2RuV2l0aGRyYXcFA2RlZgUHZmVlUGVyYwQPcHV6emxlVXNkbkxQRmVlCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEFAnR3BQNmZWUFDHB1enpsZVVzZG5MUAQScHV6emxlVXNkblRyYW5zZmVyCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAGUCBQJhbQUDZmVlBQxwdXp6bGVVc2RuTFAEGHVwZGF0ZVB1enpsZVVzZG5McFN0YWtlZAkBDEludGVnZXJFbnRyeQIFDWtleVBVWlpMRVVTRE4JAGUCBQ5wdXp6bGVMUFN0YWtlZAUScHV6emxlVXNkbldpdGhkcmF3BA1idXJuUHV6emxlVENJCQEEQnVybgIFD3B1enpsZVVzZG5MUFRDSQUCYW0DCQAAAgUNYnVyblB1enpsZVRDSQUNYnVyblB1enpsZVRDSQkAzAgCBQ9wdXp6bGVVc2RuTFBGZWUJAMwIAgUScHV6emxlVXNkblRyYW5zZmVyCQDMCAIFGHVwZGF0ZVB1enpsZVVzZG5McFN0YWtlZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQINSW52YWxpZCBhc3NldAFpAQ9kZXBvc2l0V3hVc2RuTFAABANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQJcG10QW1vdW50CAUDcG10BmFtb3VudAMJAQIhPQIIBQNwbXQHYXNzZXRJZAUId3hVc2RuTFAJAAIBAhthdHRhY2ggV1hVU0ROTFAgdG9rZW5zIG9ubHkDBQlpc1N0b3BwZWQJAAIBAhlzbWFydCBjb250cmFjdCBpcyBvbiBsb2NrBAh0a1N0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQlrZXlXWFVTRE4AAAQLdG90YWxJc3N1ZWQEByRtYXRjaDAJAOwHAQULd3hVc2RuTFBUQ0kDCQABAgUHJG1hdGNoMAIFQXNzZXQEBWFzc2V0BQckbWF0Y2gwCAUFYXNzZXQIcXVhbnRpdHkJAAIBAhBDYW4ndCBmaW5kIGFzc2V0BANvbmUJAGsDBQt0b3RhbElzc3VlZACAwtcvBQh0a1N0YWtlZAQHdG9Jc3N1ZQkAawMFCXBtdEFtb3VudAUDb25lAIDC1y8EC3VwZGF0ZVN0YXRlCQEMSW50ZWdlckVudHJ5AgUJa2V5V1hVU0ROCQBkAgUIdGtTdGFrZWQFCXBtdEFtb3VudAQHTFBzdGFrZQkA/AcECQEHQWRkcmVzcwEBGgFX6zvnfm4FGMKRpJgWF+Fm10UnIO4lSVaoAgVzdGFrZQUDbmlsCQDMCAIFA3BtdAUDbmlsAwkAAAIFB0xQc3Rha2UFB0xQc3Rha2UEB0xQSXNzdWUJAQdSZWlzc3VlAwULd3hVc2RuTFBUQ0kFB3RvSXNzdWUGBAh0cmFuc2ZlcgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQd0b0lzc3VlBQt3eFVzZG5MUFRDSQkAzAgCBQdMUElzc3VlCQDMCAIFCHRyYW5zZmVyCQDMCAIFC3VwZGF0ZVN0YXRlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQERZGVwb3NpdFVzZHRVc2RuTFAABANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQJcG10QW1vdW50CAUDcG10BmFtb3VudAMJAQIhPQIIBQNwbXQHYXNzZXRJZAUKdXNkdFVzZG5MUAkAAgECHWF0dGFjaCBVU0RUVVNETkxQIHRva2VucyBvbmx5AwUJaXNTdG9wcGVkCQACAQIZc21hcnQgY29udHJhY3QgaXMgb24gbG9jawQIdGtTdGFrZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUJa2V5U3Rha2VkAAAEC3RvdGFsSXNzdWVkBAckbWF0Y2gwCQDsBwEFDXVzZHRVc2RuTFBUQ0kDCQABAgUHJG1hdGNoMAIFQXNzZXQEBWFzc2V0BQckbWF0Y2gwCAUFYXNzZXQIcXVhbnRpdHkJAAIBAhBDYW4ndCBmaW5kIGFzc2V0BAxmcm9tQ29tcG91bmQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwULa2V5Q29tcG91bmQAAAQGZm9yT25lCQBrAwULdG90YWxJc3N1ZWQAgMLXLwUIdGtTdGFrZWQEB3RvSXNzdWUJAGsDBQlwbXRBbW91bnQFBmZvck9uZQCAwtcvBAt1cGRhdGVTdGF0ZQkBDEludGVnZXJFbnRyeQIFCWtleVN0YWtlZAkAZAIFCHRrU3Rha2VkBQlwbXRBbW91bnQEB0xQc3Rha2UJAPwHBAkBB0FkZHJlc3MBARoBV+s7535uBRjCkaSYFhfhZtdFJyDuJUlWqAIFc3Rha2UFA25pbAkAzAgCBQNwbXQFA25pbAMJAAACBQdMUHN0YWtlBQdMUHN0YWtlBAdMUElzc3VlCQEHUmVpc3N1ZQMFDXVzZHRVc2RuTFBUQ0kFB3RvSXNzdWUGBAh0cmFuc2ZlcgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQd0b0lzc3VlBQ11c2R0VXNkbkxQVENJCQDMCAIFB0xQSXNzdWUJAMwIAgUIdHJhbnNmZXIJAMwIAgULdXBkYXRlU3RhdGUFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARFkZXBvc2l0VXNkY1VzZG5MUAAEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAlwbXRBbW91bnQIBQNwbXQGYW1vdW50AwkBAiE9AggFA3BtdAdhc3NldElkBQp1c2RjVXNkbkxQCQACAQIdYXR0YWNoIFVTRENVU0ROTFAgdG9rZW5zIG9ubHkDBQlpc1N0b3BwZWQJAAIBAhlzbWFydCBjb250cmFjdCBpcyBvbiBsb2NrBAh0a1N0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQtrZXlVU0RDVVNETgAABAt0b3RhbElzc3VlZAQHJG1hdGNoMAkA7AcBBQ11c2RjVXNkbkxQVENJAwkAAQIFByRtYXRjaDACBUFzc2V0BAVhc3NldAUHJG1hdGNoMAgFBWFzc2V0CHF1YW50aXR5CQACAQIQQ2FuJ3QgZmluZCBhc3NldAQMZnJvbUNvbXBvdW5kCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFE2tleVVzZGNVc2RuQ29tcG91bmQAAAQGZm9yT25lCQBrAwULdG90YWxJc3N1ZWQAgMLXLwUIdGtTdGFrZWQEB3RvSXNzdWUJAGsDBQlwbXRBbW91bnQFBmZvck9uZQCAwtcvBAt1cGRhdGVTdGF0ZQkBDEludGVnZXJFbnRyeQIFC2tleVVTRENVU0ROCQBkAgUIdGtTdGFrZWQFCXBtdEFtb3VudAQHTFBzdGFrZQkA/AcECQEHQWRkcmVzcwEBGgFX6zvnfm4FGMKRpJgWF+Fm10UnIO4lSVaoAgVzdGFrZQUDbmlsCQDMCAIFA3BtdAUDbmlsAwkAAAIFB0xQc3Rha2UFB0xQc3Rha2UEB0xQSXNzdWUJAQdSZWlzc3VlAwUNdXNkY1VzZG5MUFRDSQUHdG9Jc3N1ZQYECHRyYW5zZmVyCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFB3RvSXNzdWUFDXVzZGNVc2RuTFBUQ0kJAMwIAgUHTFBJc3N1ZQkAzAgCBQh0cmFuc2ZlcgkAzAgCBQt1cGRhdGVTdGF0ZQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEWRlcG9zaXRVc2RjVXNkdExQAAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAECXBtdEFtb3VudAgFA3BtdAZhbW91bnQDCQECIT0CCAUDcG10B2Fzc2V0SWQFCnVzZGNVc2R0TFAJAAIBAh1hdHRhY2ggVVNEQ1VTRFRMUCB0b2tlbnMgb25seQMFCWlzU3RvcHBlZAkAAgECGXNtYXJ0IGNvbnRyYWN0IGlzIG9uIGxvY2sECHRrU3Rha2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFC2tleVVTRENVU0RUAAAEC3RvdGFsSXNzdWVkBAckbWF0Y2gwCQDsBwEFDXVzZGNVc2R0TFBUQ0kDCQABAgUHJG1hdGNoMAIFQXNzZXQEBWFzc2V0BQckbWF0Y2gwCAUFYXNzZXQIcXVhbnRpdHkJAAIBAhBDYW4ndCBmaW5kIGFzc2V0BAxmcm9tQ29tcG91bmQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUTa2V5VXNkY1VzZHRDb21wb3VuZAAABAZmb3JPbmUJAGsDBQt0b3RhbElzc3VlZACAwtcvBQh0a1N0YWtlZAQHdG9Jc3N1ZQkAawMFCXBtdEFtb3VudAUGZm9yT25lAIDC1y8EC3VwZGF0ZVN0YXRlCQEMSW50ZWdlckVudHJ5AgULa2V5VVNEQ1VTRFQJAGQCBQh0a1N0YWtlZAUJcG10QW1vdW50BAdMUHN0YWtlCQD8BwQJAQdBZGRyZXNzAQEaAVfrO+d+bgUYwpGkmBYX4WbXRScg7iVJVqgCBXN0YWtlBQNuaWwJAMwIAgUDcG10BQNuaWwDCQAAAgUHTFBzdGFrZQUHTFBzdGFrZQQHTFBJc3N1ZQkBB1JlaXNzdWUDBQ11c2RjVXNkdExQVENJBQd0b0lzc3VlBgQIdHJhbnNmZXIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUHdG9Jc3N1ZQUNdXNkY1VzZHRMUFRDSQkAzAgCBQdMUElzc3VlCQDMCAIFCHRyYW5zZmVyCQDMCAIFC3VwZGF0ZVN0YXRlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQETZGVwb3NpdFB1enpsZVVzZG5MUAAEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAlwbXRBbW91bnQIBQNwbXQGYW1vdW50AwkBAiE9AggFA3BtdAdhc3NldElkBQxwdXp6bGVVc2RuTFAJAAIBAh9hdHRhY2ggUFVaWkxFVURTTkxQIHRva2VucyBvbmx5AwUJaXNTdG9wcGVkCQACAQIZc21hcnQgY29udHJhY3QgaXMgb24gbG9jawQIdGtTdGFrZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUNa2V5UFVaWkxFVVNETgAABAt0b3RhbElzc3VlZAQHJG1hdGNoMAkA7AcBBQ9wdXp6bGVVc2RuTFBUQ0kDCQABAgUHJG1hdGNoMAIFQXNzZXQEBWFzc2V0BQckbWF0Y2gwCAUFYXNzZXQIcXVhbnRpdHkJAAIBAhBDYW4ndCBmaW5kIGFzc2V0BAxmcm9tQ29tcG91bmQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUVa2V5UHV6emxlVXNkbkNvbXBvdW5kAAAEBmZvck9uZQkAawMFC3RvdGFsSXNzdWVkAIDC1y8FCHRrU3Rha2VkBAd0b0lzc3VlCQBrAwUJcG10QW1vdW50BQZmb3JPbmUAgMLXLwQLdXBkYXRlU3RhdGUJAQxJbnRlZ2VyRW50cnkCBQ1rZXlQVVpaTEVVU0ROCQBkAgUIdGtTdGFrZWQFCXBtdEFtb3VudAQHTFBzdGFrZQkA/AcECQEHQWRkcmVzcwEBGgFX6zvnfm4FGMKRpJgWF+Fm10UnIO4lSVaoAgVzdGFrZQUDbmlsCQDMCAIFA3BtdAUDbmlsAwkAAAIFB0xQc3Rha2UFB0xQc3Rha2UEB0xQSXNzdWUJAQdSZWlzc3VlAwUPcHV6emxlVXNkbkxQVENJBQd0b0lzc3VlBgQIdHJhbnNmZXIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUHdG9Jc3N1ZQUPcHV6emxlVXNkbkxQVENJCQDMCAIFB0xQSXNzdWUJAMwIAgUIdHJhbnNmZXIJAMwIAgULdXBkYXRlU3RhdGUFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARBjb21wb3VuZFd4VXNkbkxQAAQIY29tcG91bmQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQCY2EIBQhjb21wb3VuZAZhbW91bnQECGlzT3JhY2xlCQEMY2hlY2tBZGRyZXNzAQgIBQFpBmNhbGxlcgVieXRlcwMJAQIhPQIIBQhjb21wb3VuZAdhc3NldElkBQh3eFVzZG5MUAkAAgECG2F0dGFjaCBXWFVTRE5MUCB0b2tlbnMgb25seQMJAQEhAQUIaXNPcmFjbGUJAAIBAixZb3UgYXJlIG5vdCBhdXRob3RpemVkIHRvIGNhbGwgdGhpcyBmdW5jdGlvbgQMZnJvbUNvbXBvdW5kCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFEWtleXd4VXNkbkNvbXBvdW5kAAAEC3RvdGFsU3Rha2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFCWtleVdYVVNETgAABAZzdGFrZUMJAPwHBAkBB0FkZHJlc3MBARoBV+s7535uBRjCkaSYFhfhZtdFJyDuJUlWqAIFc3Rha2UFA25pbAkAzAgCBQhjb21wb3VuZAUDbmlsAwkAAAIFBnN0YWtlQwUGc3Rha2VDBAt1cGRhdGVTdGF0ZQkBDEludGVnZXJFbnRyeQIFCWtleVdYVVNETgkAZAIFC3RvdGFsU3Rha2VkBQJjYQQCdGMJAQxJbnRlZ2VyRW50cnkCBRFrZXl3eFVzZG5Db21wb3VuZAkAZAIFDGZyb21Db21wb3VuZAUCY2EJAMwIAgULdXBkYXRlU3RhdGUJAMwIAgUCdGMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARJjb21wb3VuZFVzZHRVc2RuTFAABAhjb21wb3VuZAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAJjYQgFCGNvbXBvdW5kBmFtb3VudAQIaXNPcmFjbGUJAQxjaGVja0FkZHJlc3MBCAgFAWkGY2FsbGVyBWJ5dGVzAwkBAiE9AggFCGNvbXBvdW5kB2Fzc2V0SWQFCnVzZHRVc2RuTFAJAAIBAh1hdHRhY2ggVVNEVFVTRE5MUCB0b2tlbnMgb25seQMJAQEhAQUIaXNPcmFjbGUJAAIBAixZb3UgYXJlIG5vdCBhdXRob3RpemVkIHRvIGNhbGwgdGhpcyBmdW5jdGlvbgQMZnJvbUNvbXBvdW5kCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFC2tleUNvbXBvdW5kAAAEC3RvdGFsU3Rha2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFCWtleVN0YWtlZAAABAZzdGFrZUMJAPwHBAkBB0FkZHJlc3MBARoBV+s7535uBRjCkaSYFhfhZtdFJyDuJUlWqAIFc3Rha2UFA25pbAkAzAgCBQhjb21wb3VuZAUDbmlsAwkAAAIFBnN0YWtlQwUGc3Rha2VDBAt1cGRhdGVTdGF0ZQkBDEludGVnZXJFbnRyeQIFCWtleVN0YWtlZAkAZAIFC3RvdGFsU3Rha2VkBQJjYQQCdGMJAQxJbnRlZ2VyRW50cnkCBQtrZXlDb21wb3VuZAkAZAIFDGZyb21Db21wb3VuZAUCY2EJAMwIAgULdXBkYXRlU3RhdGUJAMwIAgUCdGMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARJjb21wb3VuZFVzZGNVc2RuTFAABAhjb21wb3VuZAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAJjYQgFCGNvbXBvdW5kBmFtb3VudAQIaXNPcmFjbGUJAQxjaGVja0FkZHJlc3MBCAgFAWkGY2FsbGVyBWJ5dGVzAwkBAiE9AggFCGNvbXBvdW5kB2Fzc2V0SWQFCnVzZGNVc2RuTFAJAAIBAh1hdHRhY2ggVVNEQ1VTRE5MUCB0b2tlbnMgb25seQMJAQEhAQUIaXNPcmFjbGUJAAIBAixZb3UgYXJlIG5vdCBhdXRob3RpemVkIHRvIGNhbGwgdGhpcyBmdW5jdGlvbgQMZnJvbUNvbXBvdW5kCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFE2tleVVzZGNVc2RuQ29tcG91bmQAAAQLdG90YWxTdGFrZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwULa2V5VVNEQ1VTRE4AAAQGc3Rha2VDCQD8BwQJAQdBZGRyZXNzAQEaAVfrO+d+bgUYwpGkmBYX4WbXRScg7iVJVqgCBXN0YWtlBQNuaWwJAMwIAgUIY29tcG91bmQFA25pbAMJAAACBQZzdGFrZUMFBnN0YWtlQwQLdXBkYXRlU3RhdGUJAQxJbnRlZ2VyRW50cnkCBQtrZXlVU0RDVVNETgkAZAIFC3RvdGFsU3Rha2VkBQJjYQQCdGMJAQxJbnRlZ2VyRW50cnkCBRNrZXlVc2RjVXNkbkNvbXBvdW5kCQBkAgUMZnJvbUNvbXBvdW5kBQJjYQkAzAgCBQt1cGRhdGVTdGF0ZQkAzAgCBQJ0YwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEmNvbXBvdW5kVXNkY1VzZHRMUAAECGNvbXBvdW5kCQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEAmNhCAUIY29tcG91bmQGYW1vdW50BAhpc09yYWNsZQkBDGNoZWNrQWRkcmVzcwEICAUBaQZjYWxsZXIFYnl0ZXMDCQECIT0CCAUIY29tcG91bmQHYXNzZXRJZAUKdXNkY1VzZHRMUAkAAgECHWF0dGFjaCBVU0RDVVNEVExQIHRva2VucyBvbmx5AwkBASEBBQhpc09yYWNsZQkAAgECLFlvdSBhcmUgbm90IGF1dGhvdGl6ZWQgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uBAxmcm9tQ29tcG91bmQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUTa2V5VXNkY1VzZHRDb21wb3VuZAAABAt0b3RhbFN0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQtrZXlVU0RDVVNEVAAABAZzdGFrZUMJAPwHBAkBB0FkZHJlc3MBARoBV+s7535uBRjCkaSYFhfhZtdFJyDuJUlWqAIFc3Rha2UFA25pbAkAzAgCBQhjb21wb3VuZAUDbmlsAwkAAAIFBnN0YWtlQwUGc3Rha2VDBAt1cGRhdGVTdGF0ZQkBDEludGVnZXJFbnRyeQIFC2tleVVTRENVU0RUCQBkAgULdG90YWxTdGFrZWQFAmNhBAJ0YwkBDEludGVnZXJFbnRyeQIFE2tleVVzZGNVc2R0Q29tcG91bmQJAGQCBQxmcm9tQ29tcG91bmQFAmNhCQDMCAIFC3VwZGF0ZVN0YXRlCQDMCAIFAnRjBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEUY29tcG91bmRQdXp6bGVVc2RuTFAABAhjb21wb3VuZAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAJjYQgFCGNvbXBvdW5kBmFtb3VudAQIaXNPcmFjbGUJAQxjaGVja0FkZHJlc3MBCAgFAWkGY2FsbGVyBWJ5dGVzAwkBAiE9AggFCGNvbXBvdW5kB2Fzc2V0SWQFDHB1enpsZVVzZG5MUAkAAgECH2F0dGFjaCBQVVpaTEVVU0ROTFAgdG9rZW5zIG9ubHkDCQEBIQEFCGlzT3JhY2xlCQACAQIsWW91IGFyZSBub3QgYXV0aG90aXplZCB0byBjYWxsIHRoaXMgZnVuY3Rpb24EDGZyb21Db21wb3VuZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRVrZXlQdXp6bGVVc2RuQ29tcG91bmQAAAQLdG90YWxTdGFrZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUNa2V5UFVaWkxFVVNETgAABAZzdGFrZUMJAPwHBAkBB0FkZHJlc3MBARoBV+s7535uBRjCkaSYFhfhZtdFJyDuJUlWqAIFc3Rha2UFA25pbAkAzAgCBQhjb21wb3VuZAUDbmlsAwkAAAIFBnN0YWtlQwUGc3Rha2VDBAt1cGRhdGVTdGF0ZQkBDEludGVnZXJFbnRyeQIFDWtleVBVWlpMRVVTRE4JAGQCBQt0b3RhbFN0YWtlZAUCY2EEAnRjCQEMSW50ZWdlckVudHJ5AgUVa2V5UHV6emxlVXNkbkNvbXBvdW5kCQBkAgUMZnJvbUNvbXBvdW5kBQJjYQkAzAgCBQt1cGRhdGVTdGF0ZQkAzAgCBQJ0YwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDHNwb25zb3JCb29zdAAEAnBtCQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAECmxvY2tQZXJpb2QAZAMJAQIhPQIIBQJwbQdhc3NldElkBQR3eElkCQACAQIFRXJyb3IECXNwb25zb3JlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ5rZXlTcG9uc29yc2hpcAAABARsb2NrCQD8BwQJAQdBZGRyZXNzAQEaAVez5uZVGBFpsOQzD4hRQ6ScrtbVSwNLEVgCDGluY3JlYXNlTG9jawkAzAgCBQpsb2NrUGVyaW9kBQNuaWwJAMwIAgUCcG0FA25pbAMJAAACBQRsb2NrBQRsb2NrBAFzCQEMSW50ZWdlckVudHJ5AgUOa2V5U3BvbnNvcnNoaXAJAGQCCAUCcG0GYW1vdW50BQlzcG9uc29yZWQJAMwIAgUBcwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleThHGxI=", "height": 2156677, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5MRDXB6MyN2YMzpNRdgjqiJDUWLSikAgD4wjetuWuWm2 Next: YPzjZC7jVphA318BsYAX55pN3zwcV4dJCPn4SAHoBfY Diff:
OldNewDifferences
5555
5656 let oracle = base58'3P6phwFZFQtZFuc9dvdXsgvtg8JEFVgECPA'
5757
58+let stakePool = base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'
59+
5860 func checkAddress (caller) = if ((caller != oracle))
5961 then false
6062 else true
7779 let forSingleTCI = fraction(TCIAmount, def, usdnUsdtStaked)
7880 let usdnLpToWithdraw = fraction(forSingleTCI, am, def)
7981 let fee = fraction(usdnLpToWithdraw, def, feePerc)
80- let usdnLpfeeTransfer = ScriptTransfer(Address(tw), fee, usdtUsdnLP)
81- let transfer = ScriptTransfer(i.caller, (usdnLpToWithdraw - fee), usdtUsdnLP)
82- let updateUsdnLpStaked = IntegerEntry(keyStaked, (usdnUsdtStaked - usdnLpToWithdraw))
83- let brn = Burn(usdtUsdnLPTCI, am)
84- if ((brn == brn))
85- then [usdnLpfeeTransfer, transfer, updateUsdnLpStaked]
82+ let unstake = invoke(Address(stakePool), "unstake", [usdtUsdnLP, am], [payment])
83+ if ((unstake == unstake))
84+ then {
85+ let usdnLpfeeTransfer = ScriptTransfer(Address(tw), fee, usdtUsdnLP)
86+ let transfer = ScriptTransfer(i.caller, (usdnLpToWithdraw - fee), usdtUsdnLP)
87+ let updateUsdnLpStaked = IntegerEntry(keyStaked, (usdnUsdtStaked - usdnLpToWithdraw))
88+ let brn = Burn(usdtUsdnLPTCI, am)
89+ if ((brn == brn))
90+ then [usdnLpfeeTransfer, transfer, updateUsdnLpStaked]
91+ else throw("Strict value is not equal to itself.")
92+ }
8693 else throw("Strict value is not equal to itself.")
8794 }
8895 else if ((id == wxUsdnLPTCI))
97104 let singleWXLP = fraction(wxTciAm, def, wxUsdnStaked)
98105 let wxLpToWithdraw = fraction(singleWXLP, am, def)
99106 let fee = fraction(wxLpToWithdraw, def, feePerc)
100- let wxLpFeeTransfer = ScriptTransfer(Address(tw), fee, wxUsdnLP)
101- let wxLpTransfer = ScriptTransfer(i.caller, (am - fee), wxUsdnLP)
102- let updateWxLpStaked = IntegerEntry(keyWXUSDN, (wxUsdnStaked - wxLpToWithdraw))
103- let burnWxLpTci = Burn(wxUsdnLP, am)
104- if ((burnWxLpTci == burnWxLpTci))
105- then [wxLpFeeTransfer, wxLpTransfer, updateWxLpStaked]
107+ let unstake = invoke(Address(stakePool), "unstake", [wxUsdnLP, am], [payment])
108+ if ((unstake == unstake))
109+ then {
110+ let wxLpFeeTransfer = ScriptTransfer(Address(tw), fee, wxUsdnLP)
111+ let wxLpTransfer = ScriptTransfer(i.caller, (am - fee), wxUsdnLP)
112+ let updateWxLpStaked = IntegerEntry(keyWXUSDN, (wxUsdnStaked - wxLpToWithdraw))
113+ let burnWxLpTci = Burn(wxUsdnLP, am)
114+ if ((burnWxLpTci == burnWxLpTci))
115+ then [wxLpFeeTransfer, wxLpTransfer, updateWxLpStaked]
116+ else throw("Strict value is not equal to itself.")
117+ }
106118 else throw("Strict value is not equal to itself.")
107119 }
108120 else if ((id == usdcUsdnLPTCI))
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
58+let stakePool = base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'
59+
5860 func checkAddress (caller) = if ((caller != oracle))
5961 then false
6062 else true
6163
6264
6365 @Callable(i)
6466 func withdraw () = {
6567 let payment = value(i.payments[0])
6668 let am = payment.amount
6769 let id = payment.assetId
6870 if ((id == usdtUsdnLP))
6971 then {
7072 let TCIAmount = match assetInfo(usdtUsdnLPTCI) {
7173 case q: Asset =>
7274 q.quantity
7375 case _ =>
7476 0
7577 }
7678 let usdnUsdtStaked = valueOrElse(getInteger(this, keyStaked), 0)
7779 let forSingleTCI = fraction(TCIAmount, def, usdnUsdtStaked)
7880 let usdnLpToWithdraw = fraction(forSingleTCI, am, def)
7981 let fee = fraction(usdnLpToWithdraw, def, feePerc)
80- let usdnLpfeeTransfer = ScriptTransfer(Address(tw), fee, usdtUsdnLP)
81- let transfer = ScriptTransfer(i.caller, (usdnLpToWithdraw - fee), usdtUsdnLP)
82- let updateUsdnLpStaked = IntegerEntry(keyStaked, (usdnUsdtStaked - usdnLpToWithdraw))
83- let brn = Burn(usdtUsdnLPTCI, am)
84- if ((brn == brn))
85- then [usdnLpfeeTransfer, transfer, updateUsdnLpStaked]
82+ let unstake = invoke(Address(stakePool), "unstake", [usdtUsdnLP, am], [payment])
83+ if ((unstake == unstake))
84+ then {
85+ let usdnLpfeeTransfer = ScriptTransfer(Address(tw), fee, usdtUsdnLP)
86+ let transfer = ScriptTransfer(i.caller, (usdnLpToWithdraw - fee), usdtUsdnLP)
87+ let updateUsdnLpStaked = IntegerEntry(keyStaked, (usdnUsdtStaked - usdnLpToWithdraw))
88+ let brn = Burn(usdtUsdnLPTCI, am)
89+ if ((brn == brn))
90+ then [usdnLpfeeTransfer, transfer, updateUsdnLpStaked]
91+ else throw("Strict value is not equal to itself.")
92+ }
8693 else throw("Strict value is not equal to itself.")
8794 }
8895 else if ((id == wxUsdnLPTCI))
8996 then {
9097 let wxTciAm = match assetInfo(wxUsdnLPTCI) {
9198 case q: Asset =>
9299 q.quantity
93100 case _ =>
94101 0
95102 }
96103 let wxUsdnStaked = valueOrElse(getInteger(this, keyWXUSDN), 0)
97104 let singleWXLP = fraction(wxTciAm, def, wxUsdnStaked)
98105 let wxLpToWithdraw = fraction(singleWXLP, am, def)
99106 let fee = fraction(wxLpToWithdraw, def, feePerc)
100- let wxLpFeeTransfer = ScriptTransfer(Address(tw), fee, wxUsdnLP)
101- let wxLpTransfer = ScriptTransfer(i.caller, (am - fee), wxUsdnLP)
102- let updateWxLpStaked = IntegerEntry(keyWXUSDN, (wxUsdnStaked - wxLpToWithdraw))
103- let burnWxLpTci = Burn(wxUsdnLP, am)
104- if ((burnWxLpTci == burnWxLpTci))
105- then [wxLpFeeTransfer, wxLpTransfer, updateWxLpStaked]
107+ let unstake = invoke(Address(stakePool), "unstake", [wxUsdnLP, am], [payment])
108+ if ((unstake == unstake))
109+ then {
110+ let wxLpFeeTransfer = ScriptTransfer(Address(tw), fee, wxUsdnLP)
111+ let wxLpTransfer = ScriptTransfer(i.caller, (am - fee), wxUsdnLP)
112+ let updateWxLpStaked = IntegerEntry(keyWXUSDN, (wxUsdnStaked - wxLpToWithdraw))
113+ let burnWxLpTci = Burn(wxUsdnLP, am)
114+ if ((burnWxLpTci == burnWxLpTci))
115+ then [wxLpFeeTransfer, wxLpTransfer, updateWxLpStaked]
116+ else throw("Strict value is not equal to itself.")
117+ }
106118 else throw("Strict value is not equal to itself.")
107119 }
108120 else if ((id == usdcUsdnLPTCI))
109121 then {
110122 let usdcUsdnTCI = match assetInfo(usdcUsdnLPTCI) {
111123 case q: Asset =>
112124 q.quantity
113125 case _ =>
114126 0
115127 }
116128 let usdcUsdnStaked = valueOrElse(getInteger(this, keyUSDCUSDN), 0)
117129 let singleUsdcLP = fraction(usdcUsdnTCI, def, usdcUsdnStaked)
118130 let usdcLpToWithdraw = fraction(singleUsdcLP, am, def)
119131 let fee = fraction(usdcLpToWithdraw, def, feePerc)
120132 let usdcUsdnLPFee = ScriptTransfer(Address(tw), fee, usdcUsdnLP)
121133 let usdcUsdnTransfer = ScriptTransfer(i.caller, (am - fee), usdcUsdnLP)
122134 let updateUsdcUsdnLpStaked = IntegerEntry(keyUSDCUSDN, (usdcUsdnStaked - usdcLpToWithdraw))
123135 let burnUsdcUsdnLpTci = Burn(usdcUsdnLPTCI, am)
124136 if ((burnUsdcUsdnLpTci == burnUsdcUsdnLpTci))
125137 then [usdcUsdnLPFee, usdcUsdnTransfer, updateUsdcUsdnLpStaked]
126138 else throw("Strict value is not equal to itself.")
127139 }
128140 else if ((id == usdcUsdtLPTCI))
129141 then {
130142 let usdcUsdtTci = match assetInfo(usdcUsdnLPTCI) {
131143 case q: Asset =>
132144 q.quantity
133145 case _ =>
134146 0
135147 }
136148 let usdcUsdtStaked = valueOrElse(getInteger(this, keyUSDCUSDT), 0)
137149 let singleUsdcUsdt = fraction(usdcUsdtTci, def, usdcUsdtStaked)
138150 let usdcUsdtLpToWithdraw = fraction(singleUsdcUsdt, am, def)
139151 let fee = fraction(usdcUsdtLpToWithdraw, def, feePerc)
140152 let usdcUsdtLPFee = ScriptTransfer(Address(tw), fee, usdcUsdtLP)
141153 let usdcUsdtTransfer = ScriptTransfer(i.caller, (am - fee), usdcUsdtLP)
142154 let updateUsdcUsdtLpStaked = IntegerEntry(keyUSDCUSDT, (usdcUsdtStaked - usdcUsdtLpToWithdraw))
143155 let burnWxLpTci = Burn(usdcUsdnLPTCI, am)
144156 if ((burnWxLpTci == burnWxLpTci))
145157 then [usdcUsdtLPFee, usdcUsdtTransfer, updateUsdcUsdtLpStaked]
146158 else throw("Strict value is not equal to itself.")
147159 }
148160 else if ((id == puzzleUsdnLPTCI))
149161 then {
150162 let puzzleUsdnTci = match assetInfo(puzzleUsdnLPTCI) {
151163 case q: Asset =>
152164 q.quantity
153165 case _ =>
154166 0
155167 }
156168 let puzzleLPStaked = valueOrElse(getInteger(this, keyPUZZLEUSDN), 0)
157169 let singlePuzzleUsdn = fraction(puzzleUsdnTci, def, puzzleLPStaked)
158170 let puzzleUsdnWithdraw = fraction(singlePuzzleUsdn, am, def)
159171 let fee = fraction(puzzleUsdnWithdraw, def, feePerc)
160172 let puzzleUsdnLPFee = ScriptTransfer(Address(tw), fee, puzzleUsdnLP)
161173 let puzzleUsdnTransfer = ScriptTransfer(i.caller, (am - fee), puzzleUsdnLP)
162174 let updatePuzzleUsdnLpStaked = IntegerEntry(keyPUZZLEUSDN, (puzzleLPStaked - puzzleUsdnWithdraw))
163175 let burnPuzzleTCI = Burn(puzzleUsdnLPTCI, am)
164176 if ((burnPuzzleTCI == burnPuzzleTCI))
165177 then [puzzleUsdnLPFee, puzzleUsdnTransfer, updatePuzzleUsdnLpStaked]
166178 else throw("Strict value is not equal to itself.")
167179 }
168180 else throw("Invalid asset")
169181 }
170182
171183
172184
173185 @Callable(i)
174186 func depositWxUsdnLP () = {
175187 let pmt = value(i.payments[0])
176188 let pmtAmount = pmt.amount
177189 if ((pmt.assetId != wxUsdnLP))
178190 then throw("attach WXUSDNLP tokens only")
179191 else if (isStopped)
180192 then throw("smart contract is on lock")
181193 else {
182194 let tkStaked = valueOrElse(getInteger(this, keyWXUSDN), 0)
183195 let totalIssued = match assetInfo(wxUsdnLPTCI) {
184196 case asset: Asset =>
185197 asset.quantity
186198 case _ =>
187199 throw("Can't find asset")
188200 }
189201 let one = fraction(totalIssued, 100000000, tkStaked)
190202 let toIssue = fraction(pmtAmount, one, 100000000)
191203 let updateState = IntegerEntry(keyWXUSDN, (tkStaked + pmtAmount))
192204 let LPstake = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [pmt])
193205 if ((LPstake == LPstake))
194206 then {
195207 let LPIssue = Reissue(wxUsdnLPTCI, toIssue, true)
196208 let transfer = ScriptTransfer(i.caller, toIssue, wxUsdnLPTCI)
197209 [LPIssue, transfer, updateState]
198210 }
199211 else throw("Strict value is not equal to itself.")
200212 }
201213 }
202214
203215
204216
205217 @Callable(i)
206218 func depositUsdtUsdnLP () = {
207219 let pmt = value(i.payments[0])
208220 let pmtAmount = pmt.amount
209221 if ((pmt.assetId != usdtUsdnLP))
210222 then throw("attach USDTUSDNLP tokens only")
211223 else if (isStopped)
212224 then throw("smart contract is on lock")
213225 else {
214226 let tkStaked = valueOrElse(getInteger(this, keyStaked), 0)
215227 let totalIssued = match assetInfo(usdtUsdnLPTCI) {
216228 case asset: Asset =>
217229 asset.quantity
218230 case _ =>
219231 throw("Can't find asset")
220232 }
221233 let fromCompound = valueOrElse(getInteger(this, keyCompound), 0)
222234 let forOne = fraction(totalIssued, 100000000, tkStaked)
223235 let toIssue = fraction(pmtAmount, forOne, 100000000)
224236 let updateState = IntegerEntry(keyStaked, (tkStaked + pmtAmount))
225237 let LPstake = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [pmt])
226238 if ((LPstake == LPstake))
227239 then {
228240 let LPIssue = Reissue(usdtUsdnLPTCI, toIssue, true)
229241 let transfer = ScriptTransfer(i.caller, toIssue, usdtUsdnLPTCI)
230242 [LPIssue, transfer, updateState]
231243 }
232244 else throw("Strict value is not equal to itself.")
233245 }
234246 }
235247
236248
237249
238250 @Callable(i)
239251 func depositUsdcUsdnLP () = {
240252 let pmt = value(i.payments[0])
241253 let pmtAmount = pmt.amount
242254 if ((pmt.assetId != usdcUsdnLP))
243255 then throw("attach USDCUSDNLP tokens only")
244256 else if (isStopped)
245257 then throw("smart contract is on lock")
246258 else {
247259 let tkStaked = valueOrElse(getInteger(this, keyUSDCUSDN), 0)
248260 let totalIssued = match assetInfo(usdcUsdnLPTCI) {
249261 case asset: Asset =>
250262 asset.quantity
251263 case _ =>
252264 throw("Can't find asset")
253265 }
254266 let fromCompound = valueOrElse(getInteger(this, keyUsdcUsdnCompound), 0)
255267 let forOne = fraction(totalIssued, 100000000, tkStaked)
256268 let toIssue = fraction(pmtAmount, forOne, 100000000)
257269 let updateState = IntegerEntry(keyUSDCUSDN, (tkStaked + pmtAmount))
258270 let LPstake = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [pmt])
259271 if ((LPstake == LPstake))
260272 then {
261273 let LPIssue = Reissue(usdcUsdnLPTCI, toIssue, true)
262274 let transfer = ScriptTransfer(i.caller, toIssue, usdcUsdnLPTCI)
263275 [LPIssue, transfer, updateState]
264276 }
265277 else throw("Strict value is not equal to itself.")
266278 }
267279 }
268280
269281
270282
271283 @Callable(i)
272284 func depositUsdcUsdtLP () = {
273285 let pmt = value(i.payments[0])
274286 let pmtAmount = pmt.amount
275287 if ((pmt.assetId != usdcUsdtLP))
276288 then throw("attach USDCUSDTLP tokens only")
277289 else if (isStopped)
278290 then throw("smart contract is on lock")
279291 else {
280292 let tkStaked = valueOrElse(getInteger(this, keyUSDCUSDT), 0)
281293 let totalIssued = match assetInfo(usdcUsdtLPTCI) {
282294 case asset: Asset =>
283295 asset.quantity
284296 case _ =>
285297 throw("Can't find asset")
286298 }
287299 let fromCompound = valueOrElse(getInteger(this, keyUsdcUsdtCompound), 0)
288300 let forOne = fraction(totalIssued, 100000000, tkStaked)
289301 let toIssue = fraction(pmtAmount, forOne, 100000000)
290302 let updateState = IntegerEntry(keyUSDCUSDT, (tkStaked + pmtAmount))
291303 let LPstake = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [pmt])
292304 if ((LPstake == LPstake))
293305 then {
294306 let LPIssue = Reissue(usdcUsdtLPTCI, toIssue, true)
295307 let transfer = ScriptTransfer(i.caller, toIssue, usdcUsdtLPTCI)
296308 [LPIssue, transfer, updateState]
297309 }
298310 else throw("Strict value is not equal to itself.")
299311 }
300312 }
301313
302314
303315
304316 @Callable(i)
305317 func depositPuzzleUsdnLP () = {
306318 let pmt = value(i.payments[0])
307319 let pmtAmount = pmt.amount
308320 if ((pmt.assetId != puzzleUsdnLP))
309321 then throw("attach PUZZLEUDSNLP tokens only")
310322 else if (isStopped)
311323 then throw("smart contract is on lock")
312324 else {
313325 let tkStaked = valueOrElse(getInteger(this, keyPUZZLEUSDN), 0)
314326 let totalIssued = match assetInfo(puzzleUsdnLPTCI) {
315327 case asset: Asset =>
316328 asset.quantity
317329 case _ =>
318330 throw("Can't find asset")
319331 }
320332 let fromCompound = valueOrElse(getInteger(this, keyPuzzleUsdnCompound), 0)
321333 let forOne = fraction(totalIssued, 100000000, tkStaked)
322334 let toIssue = fraction(pmtAmount, forOne, 100000000)
323335 let updateState = IntegerEntry(keyPUZZLEUSDN, (tkStaked + pmtAmount))
324336 let LPstake = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [pmt])
325337 if ((LPstake == LPstake))
326338 then {
327339 let LPIssue = Reissue(puzzleUsdnLPTCI, toIssue, true)
328340 let transfer = ScriptTransfer(i.caller, toIssue, puzzleUsdnLPTCI)
329341 [LPIssue, transfer, updateState]
330342 }
331343 else throw("Strict value is not equal to itself.")
332344 }
333345 }
334346
335347
336348
337349 @Callable(i)
338350 func compoundWxUsdnLP () = {
339351 let compound = value(i.payments[0])
340352 let ca = compound.amount
341353 let isOracle = checkAddress(i.caller.bytes)
342354 if ((compound.assetId != wxUsdnLP))
343355 then throw("attach WXUSDNLP tokens only")
344356 else if (!(isOracle))
345357 then throw("You are not authotized to call this function")
346358 else {
347359 let fromCompound = valueOrElse(getInteger(this, keywxUsdnCompound), 0)
348360 let totalStaked = valueOrElse(getInteger(this, keyWXUSDN), 0)
349361 let stakeC = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [compound])
350362 if ((stakeC == stakeC))
351363 then {
352364 let updateState = IntegerEntry(keyWXUSDN, (totalStaked + ca))
353365 let tc = IntegerEntry(keywxUsdnCompound, (fromCompound + ca))
354366 [updateState, tc]
355367 }
356368 else throw("Strict value is not equal to itself.")
357369 }
358370 }
359371
360372
361373
362374 @Callable(i)
363375 func compoundUsdtUsdnLP () = {
364376 let compound = value(i.payments[0])
365377 let ca = compound.amount
366378 let isOracle = checkAddress(i.caller.bytes)
367379 if ((compound.assetId != usdtUsdnLP))
368380 then throw("attach USDTUSDNLP tokens only")
369381 else if (!(isOracle))
370382 then throw("You are not authotized to call this function")
371383 else {
372384 let fromCompound = valueOrElse(getInteger(this, keyCompound), 0)
373385 let totalStaked = valueOrElse(getInteger(this, keyStaked), 0)
374386 let stakeC = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [compound])
375387 if ((stakeC == stakeC))
376388 then {
377389 let updateState = IntegerEntry(keyStaked, (totalStaked + ca))
378390 let tc = IntegerEntry(keyCompound, (fromCompound + ca))
379391 [updateState, tc]
380392 }
381393 else throw("Strict value is not equal to itself.")
382394 }
383395 }
384396
385397
386398
387399 @Callable(i)
388400 func compoundUsdcUsdnLP () = {
389401 let compound = value(i.payments[0])
390402 let ca = compound.amount
391403 let isOracle = checkAddress(i.caller.bytes)
392404 if ((compound.assetId != usdcUsdnLP))
393405 then throw("attach USDCUSDNLP tokens only")
394406 else if (!(isOracle))
395407 then throw("You are not authotized to call this function")
396408 else {
397409 let fromCompound = valueOrElse(getInteger(this, keyUsdcUsdnCompound), 0)
398410 let totalStaked = valueOrElse(getInteger(this, keyUSDCUSDN), 0)
399411 let stakeC = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [compound])
400412 if ((stakeC == stakeC))
401413 then {
402414 let updateState = IntegerEntry(keyUSDCUSDN, (totalStaked + ca))
403415 let tc = IntegerEntry(keyUsdcUsdnCompound, (fromCompound + ca))
404416 [updateState, tc]
405417 }
406418 else throw("Strict value is not equal to itself.")
407419 }
408420 }
409421
410422
411423
412424 @Callable(i)
413425 func compoundUsdcUsdtLP () = {
414426 let compound = value(i.payments[0])
415427 let ca = compound.amount
416428 let isOracle = checkAddress(i.caller.bytes)
417429 if ((compound.assetId != usdcUsdtLP))
418430 then throw("attach USDCUSDTLP tokens only")
419431 else if (!(isOracle))
420432 then throw("You are not authotized to call this function")
421433 else {
422434 let fromCompound = valueOrElse(getInteger(this, keyUsdcUsdtCompound), 0)
423435 let totalStaked = valueOrElse(getInteger(this, keyUSDCUSDT), 0)
424436 let stakeC = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [compound])
425437 if ((stakeC == stakeC))
426438 then {
427439 let updateState = IntegerEntry(keyUSDCUSDT, (totalStaked + ca))
428440 let tc = IntegerEntry(keyUsdcUsdtCompound, (fromCompound + ca))
429441 [updateState, tc]
430442 }
431443 else throw("Strict value is not equal to itself.")
432444 }
433445 }
434446
435447
436448
437449 @Callable(i)
438450 func compoundPuzzleUsdnLP () = {
439451 let compound = value(i.payments[0])
440452 let ca = compound.amount
441453 let isOracle = checkAddress(i.caller.bytes)
442454 if ((compound.assetId != puzzleUsdnLP))
443455 then throw("attach PUZZLEUSDNLP tokens only")
444456 else if (!(isOracle))
445457 then throw("You are not authotized to call this function")
446458 else {
447459 let fromCompound = valueOrElse(getInteger(this, keyPuzzleUsdnCompound), 0)
448460 let totalStaked = valueOrElse(getInteger(this, keyPUZZLEUSDN), 0)
449461 let stakeC = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [compound])
450462 if ((stakeC == stakeC))
451463 then {
452464 let updateState = IntegerEntry(keyPUZZLEUSDN, (totalStaked + ca))
453465 let tc = IntegerEntry(keyPuzzleUsdnCompound, (fromCompound + ca))
454466 [updateState, tc]
455467 }
456468 else throw("Strict value is not equal to itself.")
457469 }
458470 }
459471
460472
461473
462474 @Callable(i)
463475 func sponsorBoost () = {
464476 let pm = value(i.payments[0])
465477 let lockPeriod = 100
466478 if ((pm.assetId != wxId))
467479 then throw("Error")
468480 else {
469481 let sponsored = valueOrElse(getInteger(this, keySponsorship), 0)
470482 let lock = invoke(Address(base58'3PJL8Hn8LACaSBWLQ3UVhctA5cTQLBFwBAP'), "increaseLock", [lockPeriod], [pm])
471483 if ((lock == lock))
472484 then {
473485 let s = IntegerEntry(keySponsorship, (pm.amount + sponsored))
474486 [s]
475487 }
476488 else throw("Strict value is not equal to itself.")
477489 }
478490 }
479491
480492
481493 @Verifier(tx)
482494 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
483495

github/deemru/w8io/3ef1775 
65.71 ms