tx · DZB78RqGgzkfkm6tsoCEG5d76MQn9bJi1pqxUiqTPzGW

3N8n6BtTBKRZBoPuMzaPBH9FyJhfv9xDFJH:  -0.01400000 Waves

2022.07.26 15:26 [2156763] smart account 3N8n6BtTBKRZBoPuMzaPBH9FyJhfv9xDFJH > SELF 0.00000000 Waves

{ "type": 13, "id": "DZB78RqGgzkfkm6tsoCEG5d76MQn9bJi1pqxUiqTPzGW", "fee": 1400000, "feeAssetId": null, "timestamp": 1658838518016, "version": 2, "chainId": 84, "sender": "3N8n6BtTBKRZBoPuMzaPBH9FyJhfv9xDFJH", "senderPublicKey": "4hcnYaYoB2XaCzyJ7wfePpG7EfTd6st6aCAhkskJ9cQ5", "proofs": [ "2UzVoxoe5RYjxicnLAEGeSXcM2wbEgTzUkZnLKEuzt3bb2iHD5zc3gFsmMfHhXux26ytVE6VWRAYYh7rhbfP86MQ" ], "script": "base64:BgIeCAISABIAEgASABIAEgASABIAEgASABIAEgASABIAHQAKdXNkdFVzZG5MUAEg202DNWRHG5bvnwwvoM991XmdkujhmzUPwT/MewJwKQsADXVzZHRVc2RuTFBUQ0kBIAqBzantQGEdmEq4Oth6BGhTCCbAyZjxYcEpfvod3iryAAh3eFVzZG5MUAEgG7mhj3vOTKXN+s5HyQsWjk32W97C65PB1sWo0bGqCxwAC3d4VXNkbkxQVENJASC37N3mGwJ72rYTh/1V0NY8tseiNz1LiL3Be29IRACYLwAKdXNkY1VzZG5MUAEgA2kB/BsKmAqIzY/+EVmFhSaRMrNakvwm6Uhd05/eXHYADXVzZGNVc2RuTFBUQ0kBIPYCN93Tn++GRS9cI0cPlV/ROm2hK8KntJtUQQdS9W7GAAp1c2RjVXNkdExQASDG+KR0G1ZIVhCfkH7CM/Qxa4sESiwr/ZlLh/WFm3zkjAANdXNkY1VzZHRMUFRDSQEgAsaFfARLM8fi74dnh1L7VYL9s9+EI7agWsU13c9XSv4ADHB1enpsZVVzZG5MUAEgwzPGdM4jqqQi30kk5cSZa3gEsHdWgnT/uNEdSo0c0Z4AD3B1enpsZVVzZG5MUFRDSQEgvJT6zwcHAR1Xf2NHmqYN/fUF18bEe85zWm98KZKIR7UABHd4SWQBIJMBHKupx24lV85mnnG2vapr+DzoWAsq7tmgTrs83BSxAA5rZXlTcG9uc29yc2hpcAITU3BvbnNvcnNoaXBfaW5fbG9jawAJaXNTdG9wcGVkBwAJa2V5U3Rha2VkAglTVEFLRURfTFAAC2tleUNvbXBvdW5kAg1Gcm9tX0NvbXBvdW5kABFrZXl3eFVzZG5Db21wb3VuZAIQV1hfVVNETl9jb21wb3VuZAAJa2V5V1hVU0ROAgdXWF9VU0ROABNrZXlVc2RjVXNkbkNvbXBvdW5kAhJVU0RDX1VTRE5fY29tcG91bmQAC2tleVVTRENVU0ROAglVU0RDX1VTRE4AE2tleVVzZGNVc2R0Q29tcG91bmQCElVTRENfVVNEVF9jb21wb3VuZAALa2V5VVNEQ1VTRFQCCVVTRENfVVNEVAAVa2V5UHV6emxlVXNkbkNvbXBvdW5kAhRQVVpaTEVfVVNETl9jb21wb3VuZAANa2V5UFVaWkxFVVNETgILUFVaWkxFX1VTRE4AA2RlZgCAwtcvAAdmZWVQZXJjAIDIr6AlAAJ0dwEaAVREB1pAb+J/pyN/gYjTyGw4FQkpHHvIQAIABm9yYWNsZQEaAVThpQZGwrspHkLD7S7yKY9anhD69jC7CuAACXN0YWtlUG9vbAIjM014M3ptWHJNY0xGQ2FmTXVQdFhBelI0WlBWZVpZYjZxTHoBDGNoZWNrQWRkcmVzcwEGY2FsbGVyAwkBAiE9AgUGY2FsbGVyBQZvcmFjbGUHBg4BaQEMaW5pdFVzZHRVc2RuAAQCcG0JAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQCYW0IBQJwbQZhbW91bnQDCQECIT0CCAUCcG0HYXNzZXRJZAUKdXNkdFVzZG5MUAkAAgECEFVuZXhwZWN0ZWQgdG9rZW4EAXMJAPwHBAkBB0FkZHJlc3MBARoBVFlAJ5NrSynuvrGhDubcQLjPpI16DOu1DwIFc3Rha2UFA25pbAkAzAgCBQJwbQUDbmlsAwkAAAIFAXMFAXMEA3VwZAkBDEludGVnZXJFbnRyeQIFCWtleVN0YWtlZAUCYW0EBHVwZEsJAQxJbnRlZ2VyRW50cnkCBQtrZXlDb21wb3VuZAAACQDMCAIFA3VwZAkAzAgCBQR1cGRLBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEId2l0aGRyYXcABAdwYXltZW50CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEAmFtCAUHcGF5bWVudAZhbW91bnQEAmlkCAUHcGF5bWVudAdhc3NldElkAwkAAAIFAmlkBQ11c2R0VXNkbkxQVENJBAlUQ0lBbW91bnQEByRtYXRjaDAJAOwHAQUNdXNkdFVzZG5MUFRDSQMJAAECBQckbWF0Y2gwAgVBc3NldAQBcQUHJG1hdGNoMAgFAXEIcXVhbnRpdHkAAAQOdXNkblVzZHRTdGFrZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUJa2V5U3Rha2VkAAAEDGZvclNpbmdsZVRDSQkAawMFDnVzZG5Vc2R0U3Rha2VkBQNkZWYFCVRDSUFtb3VudAQQdXNkbkxwVG9XaXRoZHJhdwkAawMFDGZvclNpbmdsZVRDSQUCYW0FA2RlZgQDZmVlCQBrAwUQdXNkbkxwVG9XaXRoZHJhdwUDZGVmBQdmZWVQZXJjBAd1bnN0YWtlCQD8BwQJAQdBZGRyZXNzAQEaAVRZQCeTa0sp7r6xoQ7m3EC4z6SNegzrtQ8CB3Vuc3Rha2UJAMwIAgIsRm00cWN6dTZQZXB6OEtVaGgzSGViNkxlVFZmcFNNWDV2dk5ndzN4NzY0Q1MJAMwIAgUCYW0FA25pbAkAzAgCBQdwYXltZW50BQNuaWwEEXVzZG5McGZlZVRyYW5zZmVyCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEFAnR3BQNmZWUFCnVzZHRVc2RuTFAECHRyYW5zZmVyCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAGUCBRB1c2RuTHBUb1dpdGhkcmF3BQNmZWUFCnVzZHRVc2RuTFAEEnVwZGF0ZVVzZG5McFN0YWtlZAkBDEludGVnZXJFbnRyeQIFCWtleVN0YWtlZAkAZQIFDnVzZG5Vc2R0U3Rha2VkBRB1c2RuTHBUb1dpdGhkcmF3BANicm4JAQRCdXJuAgUNdXNkdFVzZG5MUFRDSQUCYW0DCQAAAgUDYnJuBQNicm4JAMwIAgURdXNkbkxwZmVlVHJhbnNmZXIJAMwIAgUIdHJhbnNmZXIJAMwIAgUSdXBkYXRlVXNkbkxwU3Rha2VkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUCaWQFC3d4VXNkbkxQVENJBAd3eFRjaUFtBAckbWF0Y2gwCQDsBwEFC3d4VXNkbkxQVENJAwkAAQIFByRtYXRjaDACBUFzc2V0BAFxBQckbWF0Y2gwCAUBcQhxdWFudGl0eQAABAx3eFVzZG5TdGFrZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUJa2V5V1hVU0ROAAAECnNpbmdsZVdYTFAJAGsDBQx3eFVzZG5TdGFrZWQFA2RlZgUHd3hUY2lBbQQOd3hMcFRvV2l0aGRyYXcJAGsDBQpzaW5nbGVXWExQBQJhbQUDZGVmBANmZWUJAGsDBQ53eExwVG9XaXRoZHJhdwUDZGVmBQdmZWVQZXJjBAd1bnN0YWtlCQD8BwQJAQdBZGRyZXNzAQEaAVRZQCeTa0sp7r6xoQ7m3EC4z6SNegzrtQ8CB3Vuc3Rha2UJAMwIAgIsMnNFQlZjeURGSzJMdXBDZjdNZUE0dnpIaEdLNERDMVdqYktHUUNMWURxaWIJAMwIAgUCYW0FA25pbAkAzAgCBQdwYXltZW50BQNuaWwDCQAAAgUHdW5zdGFrZQUHdW5zdGFrZQQPd3hMcEZlZVRyYW5zZmVyCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEFAnR3BQNmZWUFCHd4VXNkbkxQBAx3eExwVHJhbnNmZXIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkAZQIFAmFtBQNmZWUFCHd4VXNkbkxQBBB1cGRhdGVXeExwU3Rha2VkCQEMSW50ZWdlckVudHJ5AgUJa2V5V1hVU0ROCQBlAgUMd3hVc2RuU3Rha2VkBQ53eExwVG9XaXRoZHJhdwQLYnVybld4THBUY2kJAQRCdXJuAgUId3hVc2RuTFAFAmFtAwkAAAIFC2J1cm5XeExwVGNpBQtidXJuV3hMcFRjaQkAzAgCBQ93eExwRmVlVHJhbnNmZXIJAMwIAgUMd3hMcFRyYW5zZmVyCQDMCAIFEHVwZGF0ZVd4THBTdGFrZWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQJpZAUNdXNkY1VzZG5MUFRDSQQLdXNkY1VzZG5UQ0kEByRtYXRjaDAJAOwHAQUNdXNkY1VzZG5MUFRDSQMJAAECBQckbWF0Y2gwAgVBc3NldAQBcQUHJG1hdGNoMAgFAXEIcXVhbnRpdHkAAAQOdXNkY1VzZG5TdGFrZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwULa2V5VVNEQ1VTRE4AAAQMc2luZ2xlVXNkY0xQCQBrAwULdXNkY1VzZG5UQ0kFA2RlZgUOdXNkY1VzZG5TdGFrZWQEEHVzZGNMcFRvV2l0aGRyYXcJAGsDBQxzaW5nbGVVc2RjTFAFAmFtBQNkZWYEA2ZlZQkAawMFEHVzZGNMcFRvV2l0aGRyYXcFA2RlZgUHZmVlUGVyYwQNdXNkY1VzZG5MUEZlZQkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQJ0dwUDZmVlBQp1c2RjVXNkbkxQBBB1c2RjVXNkblRyYW5zZmVyCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAGUCBQJhbQUDZmVlBQp1c2RjVXNkbkxQBBZ1cGRhdGVVc2RjVXNkbkxwU3Rha2VkCQEMSW50ZWdlckVudHJ5AgULa2V5VVNEQ1VTRE4JAGUCBQ51c2RjVXNkblN0YWtlZAUQdXNkY0xwVG9XaXRoZHJhdwQRYnVyblVzZGNVc2RuTHBUY2kJAQRCdXJuAgUNdXNkY1VzZG5MUFRDSQUCYW0DCQAAAgURYnVyblVzZGNVc2RuTHBUY2kFEWJ1cm5Vc2RjVXNkbkxwVGNpCQDMCAIFDXVzZGNVc2RuTFBGZWUJAMwIAgUQdXNkY1VzZG5UcmFuc2ZlcgkAzAgCBRZ1cGRhdGVVc2RjVXNkbkxwU3Rha2VkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUCaWQFDXVzZGNVc2R0TFBUQ0kEC3VzZGNVc2R0VGNpBAckbWF0Y2gwCQDsBwEFDXVzZGNVc2RuTFBUQ0kDCQABAgUHJG1hdGNoMAIFQXNzZXQEAXEFByRtYXRjaDAIBQFxCHF1YW50aXR5AAAEDnVzZGNVc2R0U3Rha2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFC2tleVVTRENVU0RUAAAEDnNpbmdsZVVzZGNVc2R0CQBrAwULdXNkY1VzZHRUY2kFA2RlZgUOdXNkY1VzZHRTdGFrZWQEFHVzZGNVc2R0THBUb1dpdGhkcmF3CQBrAwUOc2luZ2xlVXNkY1VzZHQFAmFtBQNkZWYEA2ZlZQkAawMFFHVzZGNVc2R0THBUb1dpdGhkcmF3BQNkZWYFB2ZlZVBlcmMEDXVzZGNVc2R0TFBGZWUJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUCdHcFA2ZlZQUKdXNkY1VzZHRMUAQQdXNkY1VzZHRUcmFuc2ZlcgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQBlAgUCYW0FA2ZlZQUKdXNkY1VzZHRMUAQWdXBkYXRlVXNkY1VzZHRMcFN0YWtlZAkBDEludGVnZXJFbnRyeQIFC2tleVVTRENVU0RUCQBlAgUOdXNkY1VzZHRTdGFrZWQFFHVzZGNVc2R0THBUb1dpdGhkcmF3BAtidXJuV3hMcFRjaQkBBEJ1cm4CBQ11c2RjVXNkbkxQVENJBQJhbQMJAAACBQtidXJuV3hMcFRjaQULYnVybld4THBUY2kJAMwIAgUNdXNkY1VzZHRMUEZlZQkAzAgCBRB1c2RjVXNkdFRyYW5zZmVyCQDMCAIFFnVwZGF0ZVVzZGNVc2R0THBTdGFrZWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQJpZAUPcHV6emxlVXNkbkxQVENJBA1wdXp6bGVVc2RuVGNpBAckbWF0Y2gwCQDsBwEFD3B1enpsZVVzZG5MUFRDSQMJAAECBQckbWF0Y2gwAgVBc3NldAQBcQUHJG1hdGNoMAgFAXEIcXVhbnRpdHkAAAQOcHV6emxlTFBTdGFrZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUNa2V5UFVaWkxFVVNETgAABBBzaW5nbGVQdXp6bGVVc2RuCQBrAwUNcHV6emxlVXNkblRjaQUDZGVmBQ5wdXp6bGVMUFN0YWtlZAQScHV6emxlVXNkbldpdGhkcmF3CQBrAwUQc2luZ2xlUHV6emxlVXNkbgUCYW0FA2RlZgQDZmVlCQBrAwUScHV6emxlVXNkbldpdGhkcmF3BQNkZWYFB2ZlZVBlcmMED3B1enpsZVVzZG5MUEZlZQkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQJ0dwUDZmVlBQxwdXp6bGVVc2RuTFAEEnB1enpsZVVzZG5UcmFuc2ZlcgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQBlAgUCYW0FA2ZlZQUMcHV6emxlVXNkbkxQBBh1cGRhdGVQdXp6bGVVc2RuTHBTdGFrZWQJAQxJbnRlZ2VyRW50cnkCBQ1rZXlQVVpaTEVVU0ROCQBlAgUOcHV6emxlTFBTdGFrZWQFEnB1enpsZVVzZG5XaXRoZHJhdwQNYnVyblB1enpsZVRDSQkBBEJ1cm4CBQ9wdXp6bGVVc2RuTFBUQ0kFAmFtAwkAAAIFDWJ1cm5QdXp6bGVUQ0kFDWJ1cm5QdXp6bGVUQ0kJAMwIAgUPcHV6emxlVXNkbkxQRmVlCQDMCAIFEnB1enpsZVVzZG5UcmFuc2ZlcgkAzAgCBRh1cGRhdGVQdXp6bGVVc2RuTHBTdGFrZWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECDUludmFsaWQgYXNzZXQBaQEPZGVwb3NpdFd4VXNkbkxQAAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAECXBtdEFtb3VudAgFA3BtdAZhbW91bnQDCQECIT0CCAUDcG10B2Fzc2V0SWQFCHd4VXNkbkxQCQACAQIbYXR0YWNoIFdYVVNETkxQIHRva2VucyBvbmx5AwUJaXNTdG9wcGVkCQACAQIZc21hcnQgY29udHJhY3QgaXMgb24gbG9jawQIdGtTdGFrZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUJa2V5V1hVU0ROAAAEC3RvdGFsSXNzdWVkBAckbWF0Y2gwCQDsBwEFC3d4VXNkbkxQVENJAwkAAQIFByRtYXRjaDACBUFzc2V0BAVhc3NldAUHJG1hdGNoMAgFBWFzc2V0CHF1YW50aXR5CQACAQIQQ2FuJ3QgZmluZCBhc3NldAQDb25lCQBrAwULdG90YWxJc3N1ZWQAgMLXLwUIdGtTdGFrZWQEB3RvSXNzdWUJAGsDBQlwbXRBbW91bnQFA29uZQCAwtcvBAt1cGRhdGVTdGF0ZQkBDEludGVnZXJFbnRyeQIFCWtleVdYVVNETgkAZAIFCHRrU3Rha2VkBQlwbXRBbW91bnQEB0xQc3Rha2UJAPwHBAkBB0FkZHJlc3MBARoBVFlAJ5NrSynuvrGhDubcQLjPpI16DOu1DwIFc3Rha2UFA25pbAkAzAgCBQNwbXQFA25pbAMJAAACBQdMUHN0YWtlBQdMUHN0YWtlBAdMUElzc3VlCQEHUmVpc3N1ZQMFC3d4VXNkbkxQVENJBQd0b0lzc3VlBgQIdHJhbnNmZXIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUHdG9Jc3N1ZQULd3hVc2RuTFBUQ0kJAMwIAgUHTFBJc3N1ZQkAzAgCBQh0cmFuc2ZlcgkAzAgCBQt1cGRhdGVTdGF0ZQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEWRlcG9zaXRVc2R0VXNkbkxQAAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAECXBtdEFtb3VudAgFA3BtdAZhbW91bnQDCQECIT0CCAUDcG10B2Fzc2V0SWQFCnVzZHRVc2RuTFAJAAIBAh1hdHRhY2ggVVNEVFVTRE5MUCB0b2tlbnMgb25seQMFCWlzU3RvcHBlZAkAAgECGXNtYXJ0IGNvbnRyYWN0IGlzIG9uIGxvY2sECHRrU3Rha2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFCWtleVN0YWtlZAAABAt0b3RhbElzc3VlZAQHJG1hdGNoMAkA7AcBBQ11c2R0VXNkbkxQVENJAwkAAQIFByRtYXRjaDACBUFzc2V0BAVhc3NldAUHJG1hdGNoMAgFBWFzc2V0CHF1YW50aXR5CQACAQIQQ2FuJ3QgZmluZCBhc3NldAQMZnJvbUNvbXBvdW5kCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFC2tleUNvbXBvdW5kAAAEBmZvck9uZQkAawMFC3RvdGFsSXNzdWVkAIDC1y8FCHRrU3Rha2VkBAd0b0lzc3VlCQBrAwUJcG10QW1vdW50BQZmb3JPbmUAgMLXLwQLdXBkYXRlU3RhdGUJAQxJbnRlZ2VyRW50cnkCBQlrZXlTdGFrZWQJAGQCBQh0a1N0YWtlZAUJcG10QW1vdW50BAdMUHN0YWtlCQD8BwQJAQdBZGRyZXNzAQEaAVRZQCeTa0sp7r6xoQ7m3EC4z6SNegzrtQ8CBXN0YWtlBQNuaWwJAMwIAgUDcG10BQNuaWwDCQAAAgUHTFBzdGFrZQUHTFBzdGFrZQQHTFBJc3N1ZQkBB1JlaXNzdWUDBQ11c2R0VXNkbkxQVENJBQd0b0lzc3VlBgQIdHJhbnNmZXIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUHdG9Jc3N1ZQUNdXNkdFVzZG5MUFRDSQkAzAgCBQdMUElzc3VlCQDMCAIFCHRyYW5zZmVyCQDMCAIFC3VwZGF0ZVN0YXRlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQERZGVwb3NpdFVzZGNVc2RuTFAABANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQJcG10QW1vdW50CAUDcG10BmFtb3VudAMJAQIhPQIIBQNwbXQHYXNzZXRJZAUKdXNkY1VzZG5MUAkAAgECHWF0dGFjaCBVU0RDVVNETkxQIHRva2VucyBvbmx5AwUJaXNTdG9wcGVkCQACAQIZc21hcnQgY29udHJhY3QgaXMgb24gbG9jawQIdGtTdGFrZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwULa2V5VVNEQ1VTRE4AAAQLdG90YWxJc3N1ZWQEByRtYXRjaDAJAOwHAQUNdXNkY1VzZG5MUFRDSQMJAAECBQckbWF0Y2gwAgVBc3NldAQFYXNzZXQFByRtYXRjaDAIBQVhc3NldAhxdWFudGl0eQkAAgECEENhbid0IGZpbmQgYXNzZXQEDGZyb21Db21wb3VuZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRNrZXlVc2RjVXNkbkNvbXBvdW5kAAAEBmZvck9uZQkAawMFC3RvdGFsSXNzdWVkAIDC1y8FCHRrU3Rha2VkBAd0b0lzc3VlCQBrAwUJcG10QW1vdW50BQZmb3JPbmUAgMLXLwQLdXBkYXRlU3RhdGUJAQxJbnRlZ2VyRW50cnkCBQtrZXlVU0RDVVNETgkAZAIFCHRrU3Rha2VkBQlwbXRBbW91bnQEB0xQc3Rha2UJAPwHBAkBB0FkZHJlc3MBARoBVFlAJ5NrSynuvrGhDubcQLjPpI16DOu1DwIFc3Rha2UFA25pbAkAzAgCBQNwbXQFA25pbAMJAAACBQdMUHN0YWtlBQdMUHN0YWtlBAdMUElzc3VlCQEHUmVpc3N1ZQMFDXVzZGNVc2RuTFBUQ0kFB3RvSXNzdWUGBAh0cmFuc2ZlcgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQd0b0lzc3VlBQ11c2RjVXNkbkxQVENJCQDMCAIFB0xQSXNzdWUJAMwIAgUIdHJhbnNmZXIJAMwIAgULdXBkYXRlU3RhdGUFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARFkZXBvc2l0VXNkY1VzZHRMUAAEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAlwbXRBbW91bnQIBQNwbXQGYW1vdW50AwkBAiE9AggFA3BtdAdhc3NldElkBQp1c2RjVXNkdExQCQACAQIdYXR0YWNoIFVTRENVU0RUTFAgdG9rZW5zIG9ubHkDBQlpc1N0b3BwZWQJAAIBAhlzbWFydCBjb250cmFjdCBpcyBvbiBsb2NrBAh0a1N0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQtrZXlVU0RDVVNEVAAABAt0b3RhbElzc3VlZAQHJG1hdGNoMAkA7AcBBQ11c2RjVXNkdExQVENJAwkAAQIFByRtYXRjaDACBUFzc2V0BAVhc3NldAUHJG1hdGNoMAgFBWFzc2V0CHF1YW50aXR5CQACAQIQQ2FuJ3QgZmluZCBhc3NldAQMZnJvbUNvbXBvdW5kCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFE2tleVVzZGNVc2R0Q29tcG91bmQAAAQGZm9yT25lCQBrAwULdG90YWxJc3N1ZWQAgMLXLwUIdGtTdGFrZWQEB3RvSXNzdWUJAGsDBQlwbXRBbW91bnQFBmZvck9uZQCAwtcvBAt1cGRhdGVTdGF0ZQkBDEludGVnZXJFbnRyeQIFC2tleVVTRENVU0RUCQBkAgUIdGtTdGFrZWQFCXBtdEFtb3VudAQHTFBzdGFrZQkA/AcECQEHQWRkcmVzcwEBGgFUWUAnk2tLKe6+saEO5txAuM+kjXoM67UPAgVzdGFrZQUDbmlsCQDMCAIFA3BtdAUDbmlsAwkAAAIFB0xQc3Rha2UFB0xQc3Rha2UEB0xQSXNzdWUJAQdSZWlzc3VlAwUNdXNkY1VzZHRMUFRDSQUHdG9Jc3N1ZQYECHRyYW5zZmVyCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFB3RvSXNzdWUFDXVzZGNVc2R0TFBUQ0kJAMwIAgUHTFBJc3N1ZQkAzAgCBQh0cmFuc2ZlcgkAzAgCBQt1cGRhdGVTdGF0ZQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBE2RlcG9zaXRQdXp6bGVVc2RuTFAABANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQJcG10QW1vdW50CAUDcG10BmFtb3VudAMJAQIhPQIIBQNwbXQHYXNzZXRJZAUMcHV6emxlVXNkbkxQCQACAQIfYXR0YWNoIFBVWlpMRVVEU05MUCB0b2tlbnMgb25seQMFCWlzU3RvcHBlZAkAAgECGXNtYXJ0IGNvbnRyYWN0IGlzIG9uIGxvY2sECHRrU3Rha2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDWtleVBVWlpMRVVTRE4AAAQLdG90YWxJc3N1ZWQEByRtYXRjaDAJAOwHAQUPcHV6emxlVXNkbkxQVENJAwkAAQIFByRtYXRjaDACBUFzc2V0BAVhc3NldAUHJG1hdGNoMAgFBWFzc2V0CHF1YW50aXR5CQACAQIQQ2FuJ3QgZmluZCBhc3NldAQMZnJvbUNvbXBvdW5kCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFFWtleVB1enpsZVVzZG5Db21wb3VuZAAABAZmb3JPbmUJAGsDBQt0b3RhbElzc3VlZACAwtcvBQh0a1N0YWtlZAQHdG9Jc3N1ZQkAawMFCXBtdEFtb3VudAUGZm9yT25lAIDC1y8EC3VwZGF0ZVN0YXRlCQEMSW50ZWdlckVudHJ5AgUNa2V5UFVaWkxFVVNETgkAZAIFCHRrU3Rha2VkBQlwbXRBbW91bnQEB0xQc3Rha2UJAPwHBAkBB0FkZHJlc3MBARoBVFlAJ5NrSynuvrGhDubcQLjPpI16DOu1DwIFc3Rha2UFA25pbAkAzAgCBQNwbXQFA25pbAMJAAACBQdMUHN0YWtlBQdMUHN0YWtlBAdMUElzc3VlCQEHUmVpc3N1ZQMFD3B1enpsZVVzZG5MUFRDSQUHdG9Jc3N1ZQYECHRyYW5zZmVyCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFB3RvSXNzdWUFD3B1enpsZVVzZG5MUFRDSQkAzAgCBQdMUElzc3VlCQDMCAIFCHRyYW5zZmVyCQDMCAIFC3VwZGF0ZVN0YXRlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEQY29tcG91bmRXeFVzZG5MUAAECGNvbXBvdW5kCQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEAmNhCAUIY29tcG91bmQGYW1vdW50BAhpc09yYWNsZQkBDGNoZWNrQWRkcmVzcwEICAUBaQZjYWxsZXIFYnl0ZXMDCQECIT0CCAUIY29tcG91bmQHYXNzZXRJZAUId3hVc2RuTFAJAAIBAhthdHRhY2ggV1hVU0ROTFAgdG9rZW5zIG9ubHkDCQEBIQEFCGlzT3JhY2xlCQACAQIsWW91IGFyZSBub3QgYXV0aG90aXplZCB0byBjYWxsIHRoaXMgZnVuY3Rpb24EDGZyb21Db21wb3VuZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRFrZXl3eFVzZG5Db21wb3VuZAAABAt0b3RhbFN0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQlrZXlXWFVTRE4AAAQGc3Rha2VDCQD8BwQJAQdBZGRyZXNzAQEaAVRZQCeTa0sp7r6xoQ7m3EC4z6SNegzrtQ8CBXN0YWtlBQNuaWwJAMwIAgUIY29tcG91bmQFA25pbAMJAAACBQZzdGFrZUMFBnN0YWtlQwQLdXBkYXRlU3RhdGUJAQxJbnRlZ2VyRW50cnkCBQlrZXlXWFVTRE4JAGQCBQt0b3RhbFN0YWtlZAUCY2EEAnRjCQEMSW50ZWdlckVudHJ5AgURa2V5d3hVc2RuQ29tcG91bmQJAGQCBQxmcm9tQ29tcG91bmQFAmNhCQDMCAIFC3VwZGF0ZVN0YXRlCQDMCAIFAnRjBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQESY29tcG91bmRVc2R0VXNkbkxQAAQIY29tcG91bmQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQCY2EIBQhjb21wb3VuZAZhbW91bnQECGlzT3JhY2xlCQEMY2hlY2tBZGRyZXNzAQgIBQFpBmNhbGxlcgVieXRlcwMJAQIhPQIIBQhjb21wb3VuZAdhc3NldElkBQp1c2R0VXNkbkxQCQACAQIdYXR0YWNoIFVTRFRVU0ROTFAgdG9rZW5zIG9ubHkDCQEBIQEFCGlzT3JhY2xlCQACAQIsWW91IGFyZSBub3QgYXV0aG90aXplZCB0byBjYWxsIHRoaXMgZnVuY3Rpb24EDGZyb21Db21wb3VuZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQtrZXlDb21wb3VuZAAABAt0b3RhbFN0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQlrZXlTdGFrZWQAAAQGc3Rha2VDCQD8BwQJAQdBZGRyZXNzAQEaAVRZQCeTa0sp7r6xoQ7m3EC4z6SNegzrtQ8CBXN0YWtlBQNuaWwJAMwIAgUIY29tcG91bmQFA25pbAMJAAACBQZzdGFrZUMFBnN0YWtlQwQLdXBkYXRlU3RhdGUJAQxJbnRlZ2VyRW50cnkCBQlrZXlTdGFrZWQJAGQCBQt0b3RhbFN0YWtlZAUCY2EEAnRjCQEMSW50ZWdlckVudHJ5AgULa2V5Q29tcG91bmQJAGQCBQxmcm9tQ29tcG91bmQFAmNhCQDMCAIFC3VwZGF0ZVN0YXRlCQDMCAIFAnRjBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQESY29tcG91bmRVc2RjVXNkbkxQAAQIY29tcG91bmQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQCY2EIBQhjb21wb3VuZAZhbW91bnQECGlzT3JhY2xlCQEMY2hlY2tBZGRyZXNzAQgIBQFpBmNhbGxlcgVieXRlcwMJAQIhPQIIBQhjb21wb3VuZAdhc3NldElkBQp1c2RjVXNkbkxQCQACAQIdYXR0YWNoIFVTRENVU0ROTFAgdG9rZW5zIG9ubHkDCQEBIQEFCGlzT3JhY2xlCQACAQIsWW91IGFyZSBub3QgYXV0aG90aXplZCB0byBjYWxsIHRoaXMgZnVuY3Rpb24EDGZyb21Db21wb3VuZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRNrZXlVc2RjVXNkbkNvbXBvdW5kAAAEC3RvdGFsU3Rha2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFC2tleVVTRENVU0ROAAAEBnN0YWtlQwkA/AcECQEHQWRkcmVzcwEBGgFUWUAnk2tLKe6+saEO5txAuM+kjXoM67UPAgVzdGFrZQUDbmlsCQDMCAIFCGNvbXBvdW5kBQNuaWwDCQAAAgUGc3Rha2VDBQZzdGFrZUMEC3VwZGF0ZVN0YXRlCQEMSW50ZWdlckVudHJ5AgULa2V5VVNEQ1VTRE4JAGQCBQt0b3RhbFN0YWtlZAUCY2EEAnRjCQEMSW50ZWdlckVudHJ5AgUTa2V5VXNkY1VzZG5Db21wb3VuZAkAZAIFDGZyb21Db21wb3VuZAUCY2EJAMwIAgULdXBkYXRlU3RhdGUJAMwIAgUCdGMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARJjb21wb3VuZFVzZGNVc2R0TFAABAhjb21wb3VuZAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAJjYQgFCGNvbXBvdW5kBmFtb3VudAQIaXNPcmFjbGUJAQxjaGVja0FkZHJlc3MBCAgFAWkGY2FsbGVyBWJ5dGVzAwkBAiE9AggFCGNvbXBvdW5kB2Fzc2V0SWQFCnVzZGNVc2R0TFAJAAIBAh1hdHRhY2ggVVNEQ1VTRFRMUCB0b2tlbnMgb25seQMJAQEhAQUIaXNPcmFjbGUJAAIBAixZb3UgYXJlIG5vdCBhdXRob3RpemVkIHRvIGNhbGwgdGhpcyBmdW5jdGlvbgQMZnJvbUNvbXBvdW5kCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFE2tleVVzZGNVc2R0Q29tcG91bmQAAAQLdG90YWxTdGFrZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwULa2V5VVNEQ1VTRFQAAAQGc3Rha2VDCQD8BwQJAQdBZGRyZXNzAQEaAVRZQCeTa0sp7r6xoQ7m3EC4z6SNegzrtQ8CBXN0YWtlBQNuaWwJAMwIAgUIY29tcG91bmQFA25pbAMJAAACBQZzdGFrZUMFBnN0YWtlQwQLdXBkYXRlU3RhdGUJAQxJbnRlZ2VyRW50cnkCBQtrZXlVU0RDVVNEVAkAZAIFC3RvdGFsU3Rha2VkBQJjYQQCdGMJAQxJbnRlZ2VyRW50cnkCBRNrZXlVc2RjVXNkdENvbXBvdW5kCQBkAgUMZnJvbUNvbXBvdW5kBQJjYQkAzAgCBQt1cGRhdGVTdGF0ZQkAzAgCBQJ0YwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFGNvbXBvdW5kUHV6emxlVXNkbkxQAAQIY29tcG91bmQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQCY2EIBQhjb21wb3VuZAZhbW91bnQECGlzT3JhY2xlCQEMY2hlY2tBZGRyZXNzAQgIBQFpBmNhbGxlcgVieXRlcwMJAQIhPQIIBQhjb21wb3VuZAdhc3NldElkBQxwdXp6bGVVc2RuTFAJAAIBAh9hdHRhY2ggUFVaWkxFVVNETkxQIHRva2VucyBvbmx5AwkBASEBBQhpc09yYWNsZQkAAgECLFlvdSBhcmUgbm90IGF1dGhvdGl6ZWQgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uBAxmcm9tQ29tcG91bmQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUVa2V5UHV6emxlVXNkbkNvbXBvdW5kAAAEC3RvdGFsU3Rha2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDWtleVBVWlpMRVVTRE4AAAQGc3Rha2VDCQD8BwQJAQdBZGRyZXNzAQEaAVRZQCeTa0sp7r6xoQ7m3EC4z6SNegzrtQ8CBXN0YWtlBQNuaWwJAMwIAgUIY29tcG91bmQFA25pbAMJAAACBQZzdGFrZUMFBnN0YWtlQwQLdXBkYXRlU3RhdGUJAQxJbnRlZ2VyRW50cnkCBQ1rZXlQVVpaTEVVU0ROCQBkAgULdG90YWxTdGFrZWQFAmNhBAJ0YwkBDEludGVnZXJFbnRyeQIFFWtleVB1enpsZVVzZG5Db21wb3VuZAkAZAIFDGZyb21Db21wb3VuZAUCY2EJAMwIAgULdXBkYXRlU3RhdGUJAMwIAgUCdGMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQxzcG9uc29yQm9vc3QABAJwbQkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABApsb2NrUGVyaW9kAGQDCQECIT0CCAUCcG0HYXNzZXRJZAUEd3hJZAkAAgECBUVycm9yBAlzcG9uc29yZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUOa2V5U3BvbnNvcnNoaXAAAAQEbG9jawkA/AcECQEHQWRkcmVzcwEBGgFXs+bmVRgRabDkMw+IUUOknK7W1UsDSxFYAgxpbmNyZWFzZUxvY2sJAMwIAgUKbG9ja1BlcmlvZAUDbmlsCQDMCAIFAnBtBQNuaWwDCQAAAgUEbG9jawUEbG9jawQBcwkBDEludGVnZXJFbnRyeQIFDmtleVNwb25zb3JzaGlwCQBkAggFAnBtBmFtb3VudAUJc3BvbnNvcmVkCQDMCAIFAXMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQZpbml0V1gABAJwbQkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAJhbQgFAnBtBmFtb3VudAMJAQIhPQIIBQJwbQdhc3NldElkBQh3eFVzZG5MUAkAAgECEFVuZXhwZWN0ZWQgdG9rZW4EAXMJAPwHBAkBB0FkZHJlc3MBARoBVFlAJ5NrSynuvrGhDubcQLjPpI16DOu1DwIFc3Rha2UFA25pbAkAzAgCBQJwbQUDbmlsAwkAAAIFAXMFAXMEA3VwZAkBDEludGVnZXJFbnRyeQIFCWtleVdYVVNETgUCYW0EBHVwZEsJAQxJbnRlZ2VyRW50cnkCBRFrZXl3eFVzZG5Db21wb3VuZAAACQDMCAIFA3VwZAkAzAgCBQR1cGRLBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkACQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5zB0eig==", "height": 2156763, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: CAtYWcr668mpKEJBBUGkRnKVRH1Ct22yNkreqMnLsNkF Next: 7JPwZ6DNGW2EuzRLEDdcN2izgqwtc7DD8PHid8rYL1Ui Diff:
OldNewDifferences
100100 let usdnLpToWithdraw = fraction(forSingleTCI, am, def)
101101 let fee = fraction(usdnLpToWithdraw, def, feePerc)
102102 let unstake = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "unstake", ["Fm4qczu6Pepz8KUhh3Heb6LeTVfpSMX5vvNgw3x764CS", am], [payment])
103- if ((unstake == unstake))
104- then {
105- let usdnLpfeeTransfer = ScriptTransfer(Address(tw), fee, usdtUsdnLP)
106- let transfer = ScriptTransfer(i.caller, (usdnLpToWithdraw - fee), usdtUsdnLP)
107- let updateUsdnLpStaked = IntegerEntry(keyStaked, (usdnUsdtStaked - usdnLpToWithdraw))
108- let brn = Burn(usdtUsdnLPTCI, am)
109- if ((brn == brn))
110- then [usdnLpfeeTransfer, transfer, updateUsdnLpStaked]
111- else throw("Strict value is not equal to itself.")
112- }
103+ let usdnLpfeeTransfer = ScriptTransfer(Address(tw), fee, usdtUsdnLP)
104+ let transfer = ScriptTransfer(i.caller, (usdnLpToWithdraw - fee), usdtUsdnLP)
105+ let updateUsdnLpStaked = IntegerEntry(keyStaked, (usdnUsdtStaked - usdnLpToWithdraw))
106+ let brn = Burn(usdtUsdnLPTCI, am)
107+ if ((brn == brn))
108+ then [usdnLpfeeTransfer, transfer, updateUsdnLpStaked]
113109 else throw("Strict value is not equal to itself.")
114110 }
115111 else if ((id == wxUsdnLPTCI))
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'3NAVBWBnqieKa3CdN39MAhToyTHShYxX1gB'
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 initUsdtUsdn () = {
6767 let pm = value(i.payments[0])
6868 let am = pm.amount
6969 if ((pm.assetId != usdtUsdnLP))
7070 then throw("Unexpected token")
7171 else {
7272 let s = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [pm])
7373 if ((s == s))
7474 then {
7575 let upd = IntegerEntry(keyStaked, am)
7676 let updK = IntegerEntry(keyCompound, 0)
7777 [upd, updK]
7878 }
7979 else throw("Strict value is not equal to itself.")
8080 }
8181 }
8282
8383
8484
8585 @Callable(i)
8686 func withdraw () = {
8787 let payment = value(i.payments[0])
8888 let am = payment.amount
8989 let id = payment.assetId
9090 if ((id == usdtUsdnLPTCI))
9191 then {
9292 let TCIAmount = match assetInfo(usdtUsdnLPTCI) {
9393 case q: Asset =>
9494 q.quantity
9595 case _ =>
9696 0
9797 }
9898 let usdnUsdtStaked = valueOrElse(getInteger(this, keyStaked), 0)
9999 let forSingleTCI = fraction(usdnUsdtStaked, def, TCIAmount)
100100 let usdnLpToWithdraw = fraction(forSingleTCI, am, def)
101101 let fee = fraction(usdnLpToWithdraw, def, feePerc)
102102 let unstake = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "unstake", ["Fm4qczu6Pepz8KUhh3Heb6LeTVfpSMX5vvNgw3x764CS", am], [payment])
103- if ((unstake == unstake))
104- then {
105- let usdnLpfeeTransfer = ScriptTransfer(Address(tw), fee, usdtUsdnLP)
106- let transfer = ScriptTransfer(i.caller, (usdnLpToWithdraw - fee), usdtUsdnLP)
107- let updateUsdnLpStaked = IntegerEntry(keyStaked, (usdnUsdtStaked - usdnLpToWithdraw))
108- let brn = Burn(usdtUsdnLPTCI, am)
109- if ((brn == brn))
110- then [usdnLpfeeTransfer, transfer, updateUsdnLpStaked]
111- else throw("Strict value is not equal to itself.")
112- }
103+ let usdnLpfeeTransfer = ScriptTransfer(Address(tw), fee, usdtUsdnLP)
104+ let transfer = ScriptTransfer(i.caller, (usdnLpToWithdraw - fee), usdtUsdnLP)
105+ let updateUsdnLpStaked = IntegerEntry(keyStaked, (usdnUsdtStaked - usdnLpToWithdraw))
106+ let brn = Burn(usdtUsdnLPTCI, am)
107+ if ((brn == brn))
108+ then [usdnLpfeeTransfer, transfer, updateUsdnLpStaked]
113109 else throw("Strict value is not equal to itself.")
114110 }
115111 else if ((id == wxUsdnLPTCI))
116112 then {
117113 let wxTciAm = match assetInfo(wxUsdnLPTCI) {
118114 case q: Asset =>
119115 q.quantity
120116 case _ =>
121117 0
122118 }
123119 let wxUsdnStaked = valueOrElse(getInteger(this, keyWXUSDN), 0)
124120 let singleWXLP = fraction(wxUsdnStaked, def, wxTciAm)
125121 let wxLpToWithdraw = fraction(singleWXLP, am, def)
126122 let fee = fraction(wxLpToWithdraw, def, feePerc)
127123 let unstake = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "unstake", ["2sEBVcyDFK2LupCf7MeA4vzHhGK4DC1WjbKGQCLYDqib", am], [payment])
128124 if ((unstake == unstake))
129125 then {
130126 let wxLpFeeTransfer = ScriptTransfer(Address(tw), fee, wxUsdnLP)
131127 let wxLpTransfer = ScriptTransfer(i.caller, (am - fee), wxUsdnLP)
132128 let updateWxLpStaked = IntegerEntry(keyWXUSDN, (wxUsdnStaked - wxLpToWithdraw))
133129 let burnWxLpTci = Burn(wxUsdnLP, am)
134130 if ((burnWxLpTci == burnWxLpTci))
135131 then [wxLpFeeTransfer, wxLpTransfer, updateWxLpStaked]
136132 else throw("Strict value is not equal to itself.")
137133 }
138134 else throw("Strict value is not equal to itself.")
139135 }
140136 else if ((id == usdcUsdnLPTCI))
141137 then {
142138 let usdcUsdnTCI = match assetInfo(usdcUsdnLPTCI) {
143139 case q: Asset =>
144140 q.quantity
145141 case _ =>
146142 0
147143 }
148144 let usdcUsdnStaked = valueOrElse(getInteger(this, keyUSDCUSDN), 0)
149145 let singleUsdcLP = fraction(usdcUsdnTCI, def, usdcUsdnStaked)
150146 let usdcLpToWithdraw = fraction(singleUsdcLP, am, def)
151147 let fee = fraction(usdcLpToWithdraw, def, feePerc)
152148 let usdcUsdnLPFee = ScriptTransfer(Address(tw), fee, usdcUsdnLP)
153149 let usdcUsdnTransfer = ScriptTransfer(i.caller, (am - fee), usdcUsdnLP)
154150 let updateUsdcUsdnLpStaked = IntegerEntry(keyUSDCUSDN, (usdcUsdnStaked - usdcLpToWithdraw))
155151 let burnUsdcUsdnLpTci = Burn(usdcUsdnLPTCI, am)
156152 if ((burnUsdcUsdnLpTci == burnUsdcUsdnLpTci))
157153 then [usdcUsdnLPFee, usdcUsdnTransfer, updateUsdcUsdnLpStaked]
158154 else throw("Strict value is not equal to itself.")
159155 }
160156 else if ((id == usdcUsdtLPTCI))
161157 then {
162158 let usdcUsdtTci = match assetInfo(usdcUsdnLPTCI) {
163159 case q: Asset =>
164160 q.quantity
165161 case _ =>
166162 0
167163 }
168164 let usdcUsdtStaked = valueOrElse(getInteger(this, keyUSDCUSDT), 0)
169165 let singleUsdcUsdt = fraction(usdcUsdtTci, def, usdcUsdtStaked)
170166 let usdcUsdtLpToWithdraw = fraction(singleUsdcUsdt, am, def)
171167 let fee = fraction(usdcUsdtLpToWithdraw, def, feePerc)
172168 let usdcUsdtLPFee = ScriptTransfer(Address(tw), fee, usdcUsdtLP)
173169 let usdcUsdtTransfer = ScriptTransfer(i.caller, (am - fee), usdcUsdtLP)
174170 let updateUsdcUsdtLpStaked = IntegerEntry(keyUSDCUSDT, (usdcUsdtStaked - usdcUsdtLpToWithdraw))
175171 let burnWxLpTci = Burn(usdcUsdnLPTCI, am)
176172 if ((burnWxLpTci == burnWxLpTci))
177173 then [usdcUsdtLPFee, usdcUsdtTransfer, updateUsdcUsdtLpStaked]
178174 else throw("Strict value is not equal to itself.")
179175 }
180176 else if ((id == puzzleUsdnLPTCI))
181177 then {
182178 let puzzleUsdnTci = match assetInfo(puzzleUsdnLPTCI) {
183179 case q: Asset =>
184180 q.quantity
185181 case _ =>
186182 0
187183 }
188184 let puzzleLPStaked = valueOrElse(getInteger(this, keyPUZZLEUSDN), 0)
189185 let singlePuzzleUsdn = fraction(puzzleUsdnTci, def, puzzleLPStaked)
190186 let puzzleUsdnWithdraw = fraction(singlePuzzleUsdn, am, def)
191187 let fee = fraction(puzzleUsdnWithdraw, def, feePerc)
192188 let puzzleUsdnLPFee = ScriptTransfer(Address(tw), fee, puzzleUsdnLP)
193189 let puzzleUsdnTransfer = ScriptTransfer(i.caller, (am - fee), puzzleUsdnLP)
194190 let updatePuzzleUsdnLpStaked = IntegerEntry(keyPUZZLEUSDN, (puzzleLPStaked - puzzleUsdnWithdraw))
195191 let burnPuzzleTCI = Burn(puzzleUsdnLPTCI, am)
196192 if ((burnPuzzleTCI == burnPuzzleTCI))
197193 then [puzzleUsdnLPFee, puzzleUsdnTransfer, updatePuzzleUsdnLpStaked]
198194 else throw("Strict value is not equal to itself.")
199195 }
200196 else throw("Invalid asset")
201197 }
202198
203199
204200
205201 @Callable(i)
206202 func depositWxUsdnLP () = {
207203 let pmt = value(i.payments[0])
208204 let pmtAmount = pmt.amount
209205 if ((pmt.assetId != wxUsdnLP))
210206 then throw("attach WXUSDNLP tokens only")
211207 else if (isStopped)
212208 then throw("smart contract is on lock")
213209 else {
214210 let tkStaked = valueOrElse(getInteger(this, keyWXUSDN), 0)
215211 let totalIssued = match assetInfo(wxUsdnLPTCI) {
216212 case asset: Asset =>
217213 asset.quantity
218214 case _ =>
219215 throw("Can't find asset")
220216 }
221217 let one = fraction(totalIssued, 100000000, tkStaked)
222218 let toIssue = fraction(pmtAmount, one, 100000000)
223219 let updateState = IntegerEntry(keyWXUSDN, (tkStaked + pmtAmount))
224220 let LPstake = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [pmt])
225221 if ((LPstake == LPstake))
226222 then {
227223 let LPIssue = Reissue(wxUsdnLPTCI, toIssue, true)
228224 let transfer = ScriptTransfer(i.caller, toIssue, wxUsdnLPTCI)
229225 [LPIssue, transfer, updateState]
230226 }
231227 else throw("Strict value is not equal to itself.")
232228 }
233229 }
234230
235231
236232
237233 @Callable(i)
238234 func depositUsdtUsdnLP () = {
239235 let pmt = value(i.payments[0])
240236 let pmtAmount = pmt.amount
241237 if ((pmt.assetId != usdtUsdnLP))
242238 then throw("attach USDTUSDNLP tokens only")
243239 else if (isStopped)
244240 then throw("smart contract is on lock")
245241 else {
246242 let tkStaked = valueOrElse(getInteger(this, keyStaked), 0)
247243 let totalIssued = match assetInfo(usdtUsdnLPTCI) {
248244 case asset: Asset =>
249245 asset.quantity
250246 case _ =>
251247 throw("Can't find asset")
252248 }
253249 let fromCompound = valueOrElse(getInteger(this, keyCompound), 0)
254250 let forOne = fraction(totalIssued, 100000000, tkStaked)
255251 let toIssue = fraction(pmtAmount, forOne, 100000000)
256252 let updateState = IntegerEntry(keyStaked, (tkStaked + pmtAmount))
257253 let LPstake = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [pmt])
258254 if ((LPstake == LPstake))
259255 then {
260256 let LPIssue = Reissue(usdtUsdnLPTCI, toIssue, true)
261257 let transfer = ScriptTransfer(i.caller, toIssue, usdtUsdnLPTCI)
262258 [LPIssue, transfer, updateState]
263259 }
264260 else throw("Strict value is not equal to itself.")
265261 }
266262 }
267263
268264
269265
270266 @Callable(i)
271267 func depositUsdcUsdnLP () = {
272268 let pmt = value(i.payments[0])
273269 let pmtAmount = pmt.amount
274270 if ((pmt.assetId != usdcUsdnLP))
275271 then throw("attach USDCUSDNLP tokens only")
276272 else if (isStopped)
277273 then throw("smart contract is on lock")
278274 else {
279275 let tkStaked = valueOrElse(getInteger(this, keyUSDCUSDN), 0)
280276 let totalIssued = match assetInfo(usdcUsdnLPTCI) {
281277 case asset: Asset =>
282278 asset.quantity
283279 case _ =>
284280 throw("Can't find asset")
285281 }
286282 let fromCompound = valueOrElse(getInteger(this, keyUsdcUsdnCompound), 0)
287283 let forOne = fraction(totalIssued, 100000000, tkStaked)
288284 let toIssue = fraction(pmtAmount, forOne, 100000000)
289285 let updateState = IntegerEntry(keyUSDCUSDN, (tkStaked + pmtAmount))
290286 let LPstake = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [pmt])
291287 if ((LPstake == LPstake))
292288 then {
293289 let LPIssue = Reissue(usdcUsdnLPTCI, toIssue, true)
294290 let transfer = ScriptTransfer(i.caller, toIssue, usdcUsdnLPTCI)
295291 [LPIssue, transfer, updateState]
296292 }
297293 else throw("Strict value is not equal to itself.")
298294 }
299295 }
300296
301297
302298
303299 @Callable(i)
304300 func depositUsdcUsdtLP () = {
305301 let pmt = value(i.payments[0])
306302 let pmtAmount = pmt.amount
307303 if ((pmt.assetId != usdcUsdtLP))
308304 then throw("attach USDCUSDTLP tokens only")
309305 else if (isStopped)
310306 then throw("smart contract is on lock")
311307 else {
312308 let tkStaked = valueOrElse(getInteger(this, keyUSDCUSDT), 0)
313309 let totalIssued = match assetInfo(usdcUsdtLPTCI) {
314310 case asset: Asset =>
315311 asset.quantity
316312 case _ =>
317313 throw("Can't find asset")
318314 }
319315 let fromCompound = valueOrElse(getInteger(this, keyUsdcUsdtCompound), 0)
320316 let forOne = fraction(totalIssued, 100000000, tkStaked)
321317 let toIssue = fraction(pmtAmount, forOne, 100000000)
322318 let updateState = IntegerEntry(keyUSDCUSDT, (tkStaked + pmtAmount))
323319 let LPstake = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [pmt])
324320 if ((LPstake == LPstake))
325321 then {
326322 let LPIssue = Reissue(usdcUsdtLPTCI, toIssue, true)
327323 let transfer = ScriptTransfer(i.caller, toIssue, usdcUsdtLPTCI)
328324 [LPIssue, transfer, updateState]
329325 }
330326 else throw("Strict value is not equal to itself.")
331327 }
332328 }
333329
334330
335331
336332 @Callable(i)
337333 func depositPuzzleUsdnLP () = {
338334 let pmt = value(i.payments[0])
339335 let pmtAmount = pmt.amount
340336 if ((pmt.assetId != puzzleUsdnLP))
341337 then throw("attach PUZZLEUDSNLP tokens only")
342338 else if (isStopped)
343339 then throw("smart contract is on lock")
344340 else {
345341 let tkStaked = valueOrElse(getInteger(this, keyPUZZLEUSDN), 0)
346342 let totalIssued = match assetInfo(puzzleUsdnLPTCI) {
347343 case asset: Asset =>
348344 asset.quantity
349345 case _ =>
350346 throw("Can't find asset")
351347 }
352348 let fromCompound = valueOrElse(getInteger(this, keyPuzzleUsdnCompound), 0)
353349 let forOne = fraction(totalIssued, 100000000, tkStaked)
354350 let toIssue = fraction(pmtAmount, forOne, 100000000)
355351 let updateState = IntegerEntry(keyPUZZLEUSDN, (tkStaked + pmtAmount))
356352 let LPstake = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [pmt])
357353 if ((LPstake == LPstake))
358354 then {
359355 let LPIssue = Reissue(puzzleUsdnLPTCI, toIssue, true)
360356 let transfer = ScriptTransfer(i.caller, toIssue, puzzleUsdnLPTCI)
361357 [LPIssue, transfer, updateState]
362358 }
363359 else throw("Strict value is not equal to itself.")
364360 }
365361 }
366362
367363
368364
369365 @Callable(i)
370366 func compoundWxUsdnLP () = {
371367 let compound = value(i.payments[0])
372368 let ca = compound.amount
373369 let isOracle = checkAddress(i.caller.bytes)
374370 if ((compound.assetId != wxUsdnLP))
375371 then throw("attach WXUSDNLP tokens only")
376372 else if (!(isOracle))
377373 then throw("You are not authotized to call this function")
378374 else {
379375 let fromCompound = valueOrElse(getInteger(this, keywxUsdnCompound), 0)
380376 let totalStaked = valueOrElse(getInteger(this, keyWXUSDN), 0)
381377 let stakeC = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [compound])
382378 if ((stakeC == stakeC))
383379 then {
384380 let updateState = IntegerEntry(keyWXUSDN, (totalStaked + ca))
385381 let tc = IntegerEntry(keywxUsdnCompound, (fromCompound + ca))
386382 [updateState, tc]
387383 }
388384 else throw("Strict value is not equal to itself.")
389385 }
390386 }
391387
392388
393389
394390 @Callable(i)
395391 func compoundUsdtUsdnLP () = {
396392 let compound = value(i.payments[0])
397393 let ca = compound.amount
398394 let isOracle = checkAddress(i.caller.bytes)
399395 if ((compound.assetId != usdtUsdnLP))
400396 then throw("attach USDTUSDNLP tokens only")
401397 else if (!(isOracle))
402398 then throw("You are not authotized to call this function")
403399 else {
404400 let fromCompound = valueOrElse(getInteger(this, keyCompound), 0)
405401 let totalStaked = valueOrElse(getInteger(this, keyStaked), 0)
406402 let stakeC = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [compound])
407403 if ((stakeC == stakeC))
408404 then {
409405 let updateState = IntegerEntry(keyStaked, (totalStaked + ca))
410406 let tc = IntegerEntry(keyCompound, (fromCompound + ca))
411407 [updateState, tc]
412408 }
413409 else throw("Strict value is not equal to itself.")
414410 }
415411 }
416412
417413
418414
419415 @Callable(i)
420416 func compoundUsdcUsdnLP () = {
421417 let compound = value(i.payments[0])
422418 let ca = compound.amount
423419 let isOracle = checkAddress(i.caller.bytes)
424420 if ((compound.assetId != usdcUsdnLP))
425421 then throw("attach USDCUSDNLP tokens only")
426422 else if (!(isOracle))
427423 then throw("You are not authotized to call this function")
428424 else {
429425 let fromCompound = valueOrElse(getInteger(this, keyUsdcUsdnCompound), 0)
430426 let totalStaked = valueOrElse(getInteger(this, keyUSDCUSDN), 0)
431427 let stakeC = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [compound])
432428 if ((stakeC == stakeC))
433429 then {
434430 let updateState = IntegerEntry(keyUSDCUSDN, (totalStaked + ca))
435431 let tc = IntegerEntry(keyUsdcUsdnCompound, (fromCompound + ca))
436432 [updateState, tc]
437433 }
438434 else throw("Strict value is not equal to itself.")
439435 }
440436 }
441437
442438
443439
444440 @Callable(i)
445441 func compoundUsdcUsdtLP () = {
446442 let compound = value(i.payments[0])
447443 let ca = compound.amount
448444 let isOracle = checkAddress(i.caller.bytes)
449445 if ((compound.assetId != usdcUsdtLP))
450446 then throw("attach USDCUSDTLP tokens only")
451447 else if (!(isOracle))
452448 then throw("You are not authotized to call this function")
453449 else {
454450 let fromCompound = valueOrElse(getInteger(this, keyUsdcUsdtCompound), 0)
455451 let totalStaked = valueOrElse(getInteger(this, keyUSDCUSDT), 0)
456452 let stakeC = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [compound])
457453 if ((stakeC == stakeC))
458454 then {
459455 let updateState = IntegerEntry(keyUSDCUSDT, (totalStaked + ca))
460456 let tc = IntegerEntry(keyUsdcUsdtCompound, (fromCompound + ca))
461457 [updateState, tc]
462458 }
463459 else throw("Strict value is not equal to itself.")
464460 }
465461 }
466462
467463
468464
469465 @Callable(i)
470466 func compoundPuzzleUsdnLP () = {
471467 let compound = value(i.payments[0])
472468 let ca = compound.amount
473469 let isOracle = checkAddress(i.caller.bytes)
474470 if ((compound.assetId != puzzleUsdnLP))
475471 then throw("attach PUZZLEUSDNLP tokens only")
476472 else if (!(isOracle))
477473 then throw("You are not authotized to call this function")
478474 else {
479475 let fromCompound = valueOrElse(getInteger(this, keyPuzzleUsdnCompound), 0)
480476 let totalStaked = valueOrElse(getInteger(this, keyPUZZLEUSDN), 0)
481477 let stakeC = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [compound])
482478 if ((stakeC == stakeC))
483479 then {
484480 let updateState = IntegerEntry(keyPUZZLEUSDN, (totalStaked + ca))
485481 let tc = IntegerEntry(keyPuzzleUsdnCompound, (fromCompound + ca))
486482 [updateState, tc]
487483 }
488484 else throw("Strict value is not equal to itself.")
489485 }
490486 }
491487
492488
493489
494490 @Callable(i)
495491 func sponsorBoost () = {
496492 let pm = value(i.payments[0])
497493 let lockPeriod = 100
498494 if ((pm.assetId != wxId))
499495 then throw("Error")
500496 else {
501497 let sponsored = valueOrElse(getInteger(this, keySponsorship), 0)
502498 let lock = invoke(Address(base58'3PJL8Hn8LACaSBWLQ3UVhctA5cTQLBFwBAP'), "increaseLock", [lockPeriod], [pm])
503499 if ((lock == lock))
504500 then {
505501 let s = IntegerEntry(keySponsorship, (pm.amount + sponsored))
506502 [s]
507503 }
508504 else throw("Strict value is not equal to itself.")
509505 }
510506 }
511507
512508
513509
514510 @Callable(i)
515511 func initWX () = {
516512 let pm = value(i.payments[0])
517513 let am = pm.amount
518514 if ((pm.assetId != wxUsdnLP))
519515 then throw("Unexpected token")
520516 else {
521517 let s = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [pm])
522518 if ((s == s))
523519 then {
524520 let upd = IntegerEntry(keyWXUSDN, am)
525521 let updK = IntegerEntry(keywxUsdnCompound, 0)
526522 [upd, updK]
527523 }
528524 else throw("Strict value is not equal to itself.")
529525 }
530526 }
531527
532528
533529 @Verifier(tx)
534530 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
535531

github/deemru/w8io/3ef1775 
70.89 ms