tx · Fca1YJz2U9oLEW4P7WtYsP7Uif4T3PnCTqZy3jAv9fje

3Mwe3wUHrsNMLXXhVyGowCYHk2nbXq748Wu:  -0.01800000 Waves

2022.07.26 15:06 [2156740] smart account 3Mwe3wUHrsNMLXXhVyGowCYHk2nbXq748Wu > SELF 0.00000000 Waves

{ "type": 13, "id": "Fca1YJz2U9oLEW4P7WtYsP7Uif4T3PnCTqZy3jAv9fje", "fee": 1800000, "feeAssetId": null, "timestamp": 1658837180972, "version": 2, "chainId": 84, "sender": "3Mwe3wUHrsNMLXXhVyGowCYHk2nbXq748Wu", "senderPublicKey": "8gh5umGWLgKR753skjYwFpBbUhx3hsmmyqBM3KQyLYaE", "proofs": [ "5U7bCy4sVy5woAdNNPqhGzdtbbtTe6KgBxqVDL1KSYx69N9AZoFtSiDYFoxctszPzCUgV3Tszffa6iM63SQZtDyM" ], "script": "base64:BgIeCAISABIAEgASABIAEgASABIAEgASABIAEgASABIAHQAKdXNkdFVzZG5MUAEg202DNWRHG5bvnwwvoM991XmdkujhmzUPwT/MewJwKQsADXVzZHRVc2RuTFBUQ0kBIAqBzantQGEdmEq4Oth6BGhTCCbAyZjxYcEpfvod3iryAAh3eFVzZG5MUAEgG7mhj3vOTKXN+s5HyQsWjk32W97C65PB1sWo0bGqCxwAC3d4VXNkbkxQVENJASC37N3mGwJ72rYTh/1V0NY8tseiNz1LiL3Be29IRACYLwAKdXNkY1VzZG5MUAEgA2kB/BsKmAqIzY/+EVmFhSaRMrNakvwm6Uhd05/eXHYADXVzZGNVc2RuTFBUQ0kBIPYCN93Tn++GRS9cI0cPlV/ROm2hK8KntJtUQQdS9W7GAAp1c2RjVXNkdExQASDG+KR0G1ZIVhCfkH7CM/Qxa4sESiwr/ZlLh/WFm3zkjAANdXNkY1VzZHRMUFRDSQEgAsaFfARLM8fi74dnh1L7VYL9s9+EI7agWsU13c9XSv4ADHB1enpsZVVzZG5MUAEgwzPGdM4jqqQi30kk5cSZa3gEsHdWgnT/uNEdSo0c0Z4AD3B1enpsZVVzZG5MUFRDSQEgvJT6zwcHAR1Xf2NHmqYN/fUF18bEe85zWm98KZKIR7UABHd4SWQBIJMBHKupx24lV85mnnG2vapr+DzoWAsq7tmgTrs83BSxAA5rZXlTcG9uc29yc2hpcAITU3BvbnNvcnNoaXBfaW5fbG9jawAJaXNTdG9wcGVkBwAJa2V5U3Rha2VkAglTVEFLRURfTFAAC2tleUNvbXBvdW5kAg1Gcm9tX0NvbXBvdW5kABFrZXl3eFVzZG5Db21wb3VuZAIQV1hfVVNETl9jb21wb3VuZAAJa2V5V1hVU0ROAgdXWF9VU0ROABNrZXlVc2RjVXNkbkNvbXBvdW5kAhJVU0RDX1VTRE5fY29tcG91bmQAC2tleVVTRENVU0ROAglVU0RDX1VTRE4AE2tleVVzZGNVc2R0Q29tcG91bmQCElVTRENfVVNEVF9jb21wb3VuZAALa2V5VVNEQ1VTRFQCCVVTRENfVVNEVAAVa2V5UHV6emxlVXNkbkNvbXBvdW5kAhRQVVpaTEVfVVNETl9jb21wb3VuZAANa2V5UFVaWkxFVVNETgILUFVaWkxFX1VTRE4AA2RlZgCAwtcvAAdmZWVQZXJjAIDIr6AlAAJ0dwEaAVREB1pAb+J/pyN/gYjTyGw4FQkpHHvIQAIABm9yYWNsZQEaAVc1rR+kHbEVbVHzz0HIOqmzeJRqg4q8b4kACXN0YWtlUG9vbAIjM014M3ptWHJNY0xGQ2FmTXVQdFhBelI0WlBWZVpZYjZxTHoBDGNoZWNrQWRkcmVzcwEGY2FsbGVyAwkBAiE9AgUGY2FsbGVyBQZvcmFjbGUHBg4BaQEMaW5pdFVzZHRVc2RuAAQCcG0JAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQCYW0IBQJwbQZhbW91bnQDCQECIT0CCAUCcG0HYXNzZXRJZAUKdXNkdFVzZG5MUAkAAgECEFVuZXhwZWN0ZWQgdG9rZW4EAXMJAPwHBAkBB0FkZHJlc3MBARoBVFlAJ5NrSynuvrGhDubcQLjPpI16DOu1DwIFc3Rha2UFA25pbAkAzAgCBQJwbQUDbmlsAwkAAAIFAXMFAXMEA3VwZAkBDEludGVnZXJFbnRyeQIFCWtleVN0YWtlZAUCYW0EBHVwZEsJAQxJbnRlZ2VyRW50cnkCBQtrZXlDb21wb3VuZAAACQDMCAIFA3VwZAkAzAgCBQR1cGRLBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEId2l0aGRyYXcABAdwYXltZW50CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEAmFtCAUHcGF5bWVudAZhbW91bnQEAmlkCAUHcGF5bWVudAdhc3NldElkAwkAAAIFAmlkBQp1c2R0VXNkbkxQBAlUQ0lBbW91bnQEByRtYXRjaDAJAOwHAQUNdXNkdFVzZG5MUFRDSQMJAAECBQckbWF0Y2gwAgVBc3NldAQBcQUHJG1hdGNoMAgFAXEIcXVhbnRpdHkAAAQOdXNkblVzZHRTdGFrZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUJa2V5U3Rha2VkAAAEDGZvclNpbmdsZVRDSQkAawMFDnVzZG5Vc2R0U3Rha2VkBQNkZWYFCVRDSUFtb3VudAQQdXNkbkxwVG9XaXRoZHJhdwkAawMFDGZvclNpbmdsZVRDSQUCYW0FA2RlZgQDZmVlCQBrAwUQdXNkbkxwVG9XaXRoZHJhdwUDZGVmBQdmZWVQZXJjBAd1bnN0YWtlCQD8BwQJAQdBZGRyZXNzAQEaAVRZQCeTa0sp7r6xoQ7m3EC4z6SNegzrtQ8CB3Vuc3Rha2UJAMwIAgIsRm00cWN6dTZQZXB6OEtVaGgzSGViNkxlVFZmcFNNWDV2dk5ndzN4NzY0Q1MJAMwIAgUCYW0FA25pbAkAzAgCBQdwYXltZW50BQNuaWwDCQAAAgUHdW5zdGFrZQUHdW5zdGFrZQQRdXNkbkxwZmVlVHJhbnNmZXIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUCdHcFA2ZlZQUKdXNkdFVzZG5MUAQIdHJhbnNmZXIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkAZQIFEHVzZG5McFRvV2l0aGRyYXcFA2ZlZQUKdXNkdFVzZG5MUAQSdXBkYXRlVXNkbkxwU3Rha2VkCQEMSW50ZWdlckVudHJ5AgUJa2V5U3Rha2VkCQBlAgUOdXNkblVzZHRTdGFrZWQFEHVzZG5McFRvV2l0aGRyYXcEA2JybgkBBEJ1cm4CBQ11c2R0VXNkbkxQVENJBQJhbQMJAAACBQNicm4FA2JybgkAzAgCBRF1c2RuTHBmZWVUcmFuc2ZlcgkAzAgCBQh0cmFuc2ZlcgkAzAgCBRJ1cGRhdGVVc2RuTHBTdGFrZWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQJpZAULd3hVc2RuTFBUQ0kEB3d4VGNpQW0EByRtYXRjaDAJAOwHAQULd3hVc2RuTFBUQ0kDCQABAgUHJG1hdGNoMAIFQXNzZXQEAXEFByRtYXRjaDAIBQFxCHF1YW50aXR5AAAEDHd4VXNkblN0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQlrZXlXWFVTRE4AAAQKc2luZ2xlV1hMUAkAawMFDHd4VXNkblN0YWtlZAUDZGVmBQd3eFRjaUFtBA53eExwVG9XaXRoZHJhdwkAawMFCnNpbmdsZVdYTFAFAmFtBQNkZWYEA2ZlZQkAawMFDnd4THBUb1dpdGhkcmF3BQNkZWYFB2ZlZVBlcmMEB3Vuc3Rha2UJAPwHBAkBB0FkZHJlc3MBARoBVFlAJ5NrSynuvrGhDubcQLjPpI16DOu1DwIHdW5zdGFrZQkAzAgCAiwyc0VCVmN5REZLMkx1cENmN01lQTR2ekhoR0s0REMxV2piS0dRQ0xZRHFpYgkAzAgCBQJhbQUDbmlsCQDMCAIFB3BheW1lbnQFA25pbAMJAAACBQd1bnN0YWtlBQd1bnN0YWtlBA93eExwRmVlVHJhbnNmZXIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUCdHcFA2ZlZQUId3hVc2RuTFAEDHd4THBUcmFuc2ZlcgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQBlAgUCYW0FA2ZlZQUId3hVc2RuTFAEEHVwZGF0ZVd4THBTdGFrZWQJAQxJbnRlZ2VyRW50cnkCBQlrZXlXWFVTRE4JAGUCBQx3eFVzZG5TdGFrZWQFDnd4THBUb1dpdGhkcmF3BAtidXJuV3hMcFRjaQkBBEJ1cm4CBQh3eFVzZG5MUAUCYW0DCQAAAgULYnVybld4THBUY2kFC2J1cm5XeExwVGNpCQDMCAIFD3d4THBGZWVUcmFuc2ZlcgkAzAgCBQx3eExwVHJhbnNmZXIJAMwIAgUQdXBkYXRlV3hMcFN0YWtlZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFAmlkBQ11c2RjVXNkbkxQVENJBAt1c2RjVXNkblRDSQQHJG1hdGNoMAkA7AcBBQ11c2RjVXNkbkxQVENJAwkAAQIFByRtYXRjaDACBUFzc2V0BAFxBQckbWF0Y2gwCAUBcQhxdWFudGl0eQAABA51c2RjVXNkblN0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQtrZXlVU0RDVVNETgAABAxzaW5nbGVVc2RjTFAJAGsDBQt1c2RjVXNkblRDSQUDZGVmBQ51c2RjVXNkblN0YWtlZAQQdXNkY0xwVG9XaXRoZHJhdwkAawMFDHNpbmdsZVVzZGNMUAUCYW0FA2RlZgQDZmVlCQBrAwUQdXNkY0xwVG9XaXRoZHJhdwUDZGVmBQdmZWVQZXJjBA11c2RjVXNkbkxQRmVlCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEFAnR3BQNmZWUFCnVzZGNVc2RuTFAEEHVzZGNVc2RuVHJhbnNmZXIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkAZQIFAmFtBQNmZWUFCnVzZGNVc2RuTFAEFnVwZGF0ZVVzZGNVc2RuTHBTdGFrZWQJAQxJbnRlZ2VyRW50cnkCBQtrZXlVU0RDVVNETgkAZQIFDnVzZGNVc2RuU3Rha2VkBRB1c2RjTHBUb1dpdGhkcmF3BBFidXJuVXNkY1VzZG5McFRjaQkBBEJ1cm4CBQ11c2RjVXNkbkxQVENJBQJhbQMJAAACBRFidXJuVXNkY1VzZG5McFRjaQURYnVyblVzZGNVc2RuTHBUY2kJAMwIAgUNdXNkY1VzZG5MUEZlZQkAzAgCBRB1c2RjVXNkblRyYW5zZmVyCQDMCAIFFnVwZGF0ZVVzZGNVc2RuTHBTdGFrZWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQJpZAUNdXNkY1VzZHRMUFRDSQQLdXNkY1VzZHRUY2kEByRtYXRjaDAJAOwHAQUNdXNkY1VzZG5MUFRDSQMJAAECBQckbWF0Y2gwAgVBc3NldAQBcQUHJG1hdGNoMAgFAXEIcXVhbnRpdHkAAAQOdXNkY1VzZHRTdGFrZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwULa2V5VVNEQ1VTRFQAAAQOc2luZ2xlVXNkY1VzZHQJAGsDBQt1c2RjVXNkdFRjaQUDZGVmBQ51c2RjVXNkdFN0YWtlZAQUdXNkY1VzZHRMcFRvV2l0aGRyYXcJAGsDBQ5zaW5nbGVVc2RjVXNkdAUCYW0FA2RlZgQDZmVlCQBrAwUUdXNkY1VzZHRMcFRvV2l0aGRyYXcFA2RlZgUHZmVlUGVyYwQNdXNkY1VzZHRMUEZlZQkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQJ0dwUDZmVlBQp1c2RjVXNkdExQBBB1c2RjVXNkdFRyYW5zZmVyCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAGUCBQJhbQUDZmVlBQp1c2RjVXNkdExQBBZ1cGRhdGVVc2RjVXNkdExwU3Rha2VkCQEMSW50ZWdlckVudHJ5AgULa2V5VVNEQ1VTRFQJAGUCBQ51c2RjVXNkdFN0YWtlZAUUdXNkY1VzZHRMcFRvV2l0aGRyYXcEC2J1cm5XeExwVGNpCQEEQnVybgIFDXVzZGNVc2RuTFBUQ0kFAmFtAwkAAAIFC2J1cm5XeExwVGNpBQtidXJuV3hMcFRjaQkAzAgCBQ11c2RjVXNkdExQRmVlCQDMCAIFEHVzZGNVc2R0VHJhbnNmZXIJAMwIAgUWdXBkYXRlVXNkY1VzZHRMcFN0YWtlZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFAmlkBQ9wdXp6bGVVc2RuTFBUQ0kEDXB1enpsZVVzZG5UY2kEByRtYXRjaDAJAOwHAQUPcHV6emxlVXNkbkxQVENJAwkAAQIFByRtYXRjaDACBUFzc2V0BAFxBQckbWF0Y2gwCAUBcQhxdWFudGl0eQAABA5wdXp6bGVMUFN0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ1rZXlQVVpaTEVVU0ROAAAEEHNpbmdsZVB1enpsZVVzZG4JAGsDBQ1wdXp6bGVVc2RuVGNpBQNkZWYFDnB1enpsZUxQU3Rha2VkBBJwdXp6bGVVc2RuV2l0aGRyYXcJAGsDBRBzaW5nbGVQdXp6bGVVc2RuBQJhbQUDZGVmBANmZWUJAGsDBRJwdXp6bGVVc2RuV2l0aGRyYXcFA2RlZgUHZmVlUGVyYwQPcHV6emxlVXNkbkxQRmVlCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEFAnR3BQNmZWUFDHB1enpsZVVzZG5MUAQScHV6emxlVXNkblRyYW5zZmVyCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAGUCBQJhbQUDZmVlBQxwdXp6bGVVc2RuTFAEGHVwZGF0ZVB1enpsZVVzZG5McFN0YWtlZAkBDEludGVnZXJFbnRyeQIFDWtleVBVWlpMRVVTRE4JAGUCBQ5wdXp6bGVMUFN0YWtlZAUScHV6emxlVXNkbldpdGhkcmF3BA1idXJuUHV6emxlVENJCQEEQnVybgIFD3B1enpsZVVzZG5MUFRDSQUCYW0DCQAAAgUNYnVyblB1enpsZVRDSQUNYnVyblB1enpsZVRDSQkAzAgCBQ9wdXp6bGVVc2RuTFBGZWUJAMwIAgUScHV6emxlVXNkblRyYW5zZmVyCQDMCAIFGHVwZGF0ZVB1enpsZVVzZG5McFN0YWtlZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQINSW52YWxpZCBhc3NldAFpAQ9kZXBvc2l0V3hVc2RuTFAABANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQJcG10QW1vdW50CAUDcG10BmFtb3VudAMJAQIhPQIIBQNwbXQHYXNzZXRJZAUId3hVc2RuTFAJAAIBAhthdHRhY2ggV1hVU0ROTFAgdG9rZW5zIG9ubHkDBQlpc1N0b3BwZWQJAAIBAhlzbWFydCBjb250cmFjdCBpcyBvbiBsb2NrBAh0a1N0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQlrZXlXWFVTRE4AAAQLdG90YWxJc3N1ZWQEByRtYXRjaDAJAOwHAQULd3hVc2RuTFBUQ0kDCQABAgUHJG1hdGNoMAIFQXNzZXQEBWFzc2V0BQckbWF0Y2gwCAUFYXNzZXQIcXVhbnRpdHkJAAIBAhBDYW4ndCBmaW5kIGFzc2V0BANvbmUJAGsDBQt0b3RhbElzc3VlZACAwtcvBQh0a1N0YWtlZAQHdG9Jc3N1ZQkAawMFCXBtdEFtb3VudAUDb25lAIDC1y8EC3VwZGF0ZVN0YXRlCQEMSW50ZWdlckVudHJ5AgUJa2V5V1hVU0ROCQBkAgUIdGtTdGFrZWQFCXBtdEFtb3VudAQHTFBzdGFrZQkA/AcECQEHQWRkcmVzcwEBGgFUWUAnk2tLKe6+saEO5txAuM+kjXoM67UPAgVzdGFrZQUDbmlsCQDMCAIFA3BtdAUDbmlsAwkAAAIFB0xQc3Rha2UFB0xQc3Rha2UEB0xQSXNzdWUJAQdSZWlzc3VlAwULd3hVc2RuTFBUQ0kFB3RvSXNzdWUGBAh0cmFuc2ZlcgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQd0b0lzc3VlBQt3eFVzZG5MUFRDSQkAzAgCBQdMUElzc3VlCQDMCAIFCHRyYW5zZmVyCQDMCAIFC3VwZGF0ZVN0YXRlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQERZGVwb3NpdFVzZHRVc2RuTFAABANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQJcG10QW1vdW50CAUDcG10BmFtb3VudAMJAQIhPQIIBQNwbXQHYXNzZXRJZAUKdXNkdFVzZG5MUAkAAgECHWF0dGFjaCBVU0RUVVNETkxQIHRva2VucyBvbmx5AwUJaXNTdG9wcGVkCQACAQIZc21hcnQgY29udHJhY3QgaXMgb24gbG9jawQIdGtTdGFrZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUJa2V5U3Rha2VkAAAEC3RvdGFsSXNzdWVkBAckbWF0Y2gwCQDsBwEFDXVzZHRVc2RuTFBUQ0kDCQABAgUHJG1hdGNoMAIFQXNzZXQEBWFzc2V0BQckbWF0Y2gwCAUFYXNzZXQIcXVhbnRpdHkJAAIBAhBDYW4ndCBmaW5kIGFzc2V0BAxmcm9tQ29tcG91bmQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwULa2V5Q29tcG91bmQAAAQGZm9yT25lCQBrAwULdG90YWxJc3N1ZWQAgMLXLwUIdGtTdGFrZWQEB3RvSXNzdWUJAGsDBQlwbXRBbW91bnQFBmZvck9uZQCAwtcvBAt1cGRhdGVTdGF0ZQkBDEludGVnZXJFbnRyeQIFCWtleVN0YWtlZAkAZAIFCHRrU3Rha2VkBQlwbXRBbW91bnQEB0xQc3Rha2UJAPwHBAkBB0FkZHJlc3MBARoBV+s7535uBRjCkaSYFhfhZtdFJyDuJUlWqAIFc3Rha2UFA25pbAkAzAgCBQNwbXQFA25pbAMJAAACBQdMUHN0YWtlBQdMUHN0YWtlBAdMUElzc3VlCQEHUmVpc3N1ZQMFDXVzZHRVc2RuTFBUQ0kFB3RvSXNzdWUGBAh0cmFuc2ZlcgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQd0b0lzc3VlBQ11c2R0VXNkbkxQVENJCQDMCAIFB0xQSXNzdWUJAMwIAgUIdHJhbnNmZXIJAMwIAgULdXBkYXRlU3RhdGUFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARFkZXBvc2l0VXNkY1VzZG5MUAAEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAlwbXRBbW91bnQIBQNwbXQGYW1vdW50AwkBAiE9AggFA3BtdAdhc3NldElkBQp1c2RjVXNkbkxQCQACAQIdYXR0YWNoIFVTRENVU0ROTFAgdG9rZW5zIG9ubHkDBQlpc1N0b3BwZWQJAAIBAhlzbWFydCBjb250cmFjdCBpcyBvbiBsb2NrBAh0a1N0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQtrZXlVU0RDVVNETgAABAt0b3RhbElzc3VlZAQHJG1hdGNoMAkA7AcBBQ11c2RjVXNkbkxQVENJAwkAAQIFByRtYXRjaDACBUFzc2V0BAVhc3NldAUHJG1hdGNoMAgFBWFzc2V0CHF1YW50aXR5CQACAQIQQ2FuJ3QgZmluZCBhc3NldAQMZnJvbUNvbXBvdW5kCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFE2tleVVzZGNVc2RuQ29tcG91bmQAAAQGZm9yT25lCQBrAwULdG90YWxJc3N1ZWQAgMLXLwUIdGtTdGFrZWQEB3RvSXNzdWUJAGsDBQlwbXRBbW91bnQFBmZvck9uZQCAwtcvBAt1cGRhdGVTdGF0ZQkBDEludGVnZXJFbnRyeQIFC2tleVVTRENVU0ROCQBkAgUIdGtTdGFrZWQFCXBtdEFtb3VudAQHTFBzdGFrZQkA/AcECQEHQWRkcmVzcwEBGgFX6zvnfm4FGMKRpJgWF+Fm10UnIO4lSVaoAgVzdGFrZQUDbmlsCQDMCAIFA3BtdAUDbmlsAwkAAAIFB0xQc3Rha2UFB0xQc3Rha2UEB0xQSXNzdWUJAQdSZWlzc3VlAwUNdXNkY1VzZG5MUFRDSQUHdG9Jc3N1ZQYECHRyYW5zZmVyCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFB3RvSXNzdWUFDXVzZGNVc2RuTFBUQ0kJAMwIAgUHTFBJc3N1ZQkAzAgCBQh0cmFuc2ZlcgkAzAgCBQt1cGRhdGVTdGF0ZQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEWRlcG9zaXRVc2RjVXNkdExQAAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAECXBtdEFtb3VudAgFA3BtdAZhbW91bnQDCQECIT0CCAUDcG10B2Fzc2V0SWQFCnVzZGNVc2R0TFAJAAIBAh1hdHRhY2ggVVNEQ1VTRFRMUCB0b2tlbnMgb25seQMFCWlzU3RvcHBlZAkAAgECGXNtYXJ0IGNvbnRyYWN0IGlzIG9uIGxvY2sECHRrU3Rha2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFC2tleVVTRENVU0RUAAAEC3RvdGFsSXNzdWVkBAckbWF0Y2gwCQDsBwEFDXVzZGNVc2R0TFBUQ0kDCQABAgUHJG1hdGNoMAIFQXNzZXQEBWFzc2V0BQckbWF0Y2gwCAUFYXNzZXQIcXVhbnRpdHkJAAIBAhBDYW4ndCBmaW5kIGFzc2V0BAxmcm9tQ29tcG91bmQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUTa2V5VXNkY1VzZHRDb21wb3VuZAAABAZmb3JPbmUJAGsDBQt0b3RhbElzc3VlZACAwtcvBQh0a1N0YWtlZAQHdG9Jc3N1ZQkAawMFCXBtdEFtb3VudAUGZm9yT25lAIDC1y8EC3VwZGF0ZVN0YXRlCQEMSW50ZWdlckVudHJ5AgULa2V5VVNEQ1VTRFQJAGQCBQh0a1N0YWtlZAUJcG10QW1vdW50BAdMUHN0YWtlCQD8BwQJAQdBZGRyZXNzAQEaAVfrO+d+bgUYwpGkmBYX4WbXRScg7iVJVqgCBXN0YWtlBQNuaWwJAMwIAgUDcG10BQNuaWwDCQAAAgUHTFBzdGFrZQUHTFBzdGFrZQQHTFBJc3N1ZQkBB1JlaXNzdWUDBQ11c2RjVXNkdExQVENJBQd0b0lzc3VlBgQIdHJhbnNmZXIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUHdG9Jc3N1ZQUNdXNkY1VzZHRMUFRDSQkAzAgCBQdMUElzc3VlCQDMCAIFCHRyYW5zZmVyCQDMCAIFC3VwZGF0ZVN0YXRlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQETZGVwb3NpdFB1enpsZVVzZG5MUAAEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAlwbXRBbW91bnQIBQNwbXQGYW1vdW50AwkBAiE9AggFA3BtdAdhc3NldElkBQxwdXp6bGVVc2RuTFAJAAIBAh9hdHRhY2ggUFVaWkxFVURTTkxQIHRva2VucyBvbmx5AwUJaXNTdG9wcGVkCQACAQIZc21hcnQgY29udHJhY3QgaXMgb24gbG9jawQIdGtTdGFrZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUNa2V5UFVaWkxFVVNETgAABAt0b3RhbElzc3VlZAQHJG1hdGNoMAkA7AcBBQ9wdXp6bGVVc2RuTFBUQ0kDCQABAgUHJG1hdGNoMAIFQXNzZXQEBWFzc2V0BQckbWF0Y2gwCAUFYXNzZXQIcXVhbnRpdHkJAAIBAhBDYW4ndCBmaW5kIGFzc2V0BAxmcm9tQ29tcG91bmQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUVa2V5UHV6emxlVXNkbkNvbXBvdW5kAAAEBmZvck9uZQkAawMFC3RvdGFsSXNzdWVkAIDC1y8FCHRrU3Rha2VkBAd0b0lzc3VlCQBrAwUJcG10QW1vdW50BQZmb3JPbmUAgMLXLwQLdXBkYXRlU3RhdGUJAQxJbnRlZ2VyRW50cnkCBQ1rZXlQVVpaTEVVU0ROCQBkAgUIdGtTdGFrZWQFCXBtdEFtb3VudAQHTFBzdGFrZQkA/AcECQEHQWRkcmVzcwEBGgFX6zvnfm4FGMKRpJgWF+Fm10UnIO4lSVaoAgVzdGFrZQUDbmlsCQDMCAIFA3BtdAUDbmlsAwkAAAIFB0xQc3Rha2UFB0xQc3Rha2UEB0xQSXNzdWUJAQdSZWlzc3VlAwUPcHV6emxlVXNkbkxQVENJBQd0b0lzc3VlBgQIdHJhbnNmZXIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUHdG9Jc3N1ZQUPcHV6emxlVXNkbkxQVENJCQDMCAIFB0xQSXNzdWUJAMwIAgUIdHJhbnNmZXIJAMwIAgULdXBkYXRlU3RhdGUFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARBjb21wb3VuZFd4VXNkbkxQAAQIY29tcG91bmQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQCY2EIBQhjb21wb3VuZAZhbW91bnQECGlzT3JhY2xlCQEMY2hlY2tBZGRyZXNzAQgIBQFpBmNhbGxlcgVieXRlcwMJAQIhPQIIBQhjb21wb3VuZAdhc3NldElkBQh3eFVzZG5MUAkAAgECG2F0dGFjaCBXWFVTRE5MUCB0b2tlbnMgb25seQMJAQEhAQUIaXNPcmFjbGUJAAIBAixZb3UgYXJlIG5vdCBhdXRob3RpemVkIHRvIGNhbGwgdGhpcyBmdW5jdGlvbgQMZnJvbUNvbXBvdW5kCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFEWtleXd4VXNkbkNvbXBvdW5kAAAEC3RvdGFsU3Rha2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFCWtleVdYVVNETgAABAZzdGFrZUMJAPwHBAkBB0FkZHJlc3MBARoBV+s7535uBRjCkaSYFhfhZtdFJyDuJUlWqAIFc3Rha2UFA25pbAkAzAgCBQhjb21wb3VuZAUDbmlsAwkAAAIFBnN0YWtlQwUGc3Rha2VDBAt1cGRhdGVTdGF0ZQkBDEludGVnZXJFbnRyeQIFCWtleVdYVVNETgkAZAIFC3RvdGFsU3Rha2VkBQJjYQQCdGMJAQxJbnRlZ2VyRW50cnkCBRFrZXl3eFVzZG5Db21wb3VuZAkAZAIFDGZyb21Db21wb3VuZAUCY2EJAMwIAgULdXBkYXRlU3RhdGUJAMwIAgUCdGMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARJjb21wb3VuZFVzZHRVc2RuTFAABAhjb21wb3VuZAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAJjYQgFCGNvbXBvdW5kBmFtb3VudAQIaXNPcmFjbGUJAQxjaGVja0FkZHJlc3MBCAgFAWkGY2FsbGVyBWJ5dGVzAwkBAiE9AggFCGNvbXBvdW5kB2Fzc2V0SWQFCnVzZHRVc2RuTFAJAAIBAh1hdHRhY2ggVVNEVFVTRE5MUCB0b2tlbnMgb25seQMJAQEhAQUIaXNPcmFjbGUJAAIBAixZb3UgYXJlIG5vdCBhdXRob3RpemVkIHRvIGNhbGwgdGhpcyBmdW5jdGlvbgQMZnJvbUNvbXBvdW5kCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFC2tleUNvbXBvdW5kAAAEC3RvdGFsU3Rha2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFCWtleVN0YWtlZAAABAZzdGFrZUMJAPwHBAkBB0FkZHJlc3MBARoBV+s7535uBRjCkaSYFhfhZtdFJyDuJUlWqAIFc3Rha2UFA25pbAkAzAgCBQhjb21wb3VuZAUDbmlsAwkAAAIFBnN0YWtlQwUGc3Rha2VDBAt1cGRhdGVTdGF0ZQkBDEludGVnZXJFbnRyeQIFCWtleVN0YWtlZAkAZAIFC3RvdGFsU3Rha2VkBQJjYQQCdGMJAQxJbnRlZ2VyRW50cnkCBQtrZXlDb21wb3VuZAkAZAIFDGZyb21Db21wb3VuZAUCY2EJAMwIAgULdXBkYXRlU3RhdGUJAMwIAgUCdGMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARJjb21wb3VuZFVzZGNVc2RuTFAABAhjb21wb3VuZAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAJjYQgFCGNvbXBvdW5kBmFtb3VudAQIaXNPcmFjbGUJAQxjaGVja0FkZHJlc3MBCAgFAWkGY2FsbGVyBWJ5dGVzAwkBAiE9AggFCGNvbXBvdW5kB2Fzc2V0SWQFCnVzZGNVc2RuTFAJAAIBAh1hdHRhY2ggVVNEQ1VTRE5MUCB0b2tlbnMgb25seQMJAQEhAQUIaXNPcmFjbGUJAAIBAixZb3UgYXJlIG5vdCBhdXRob3RpemVkIHRvIGNhbGwgdGhpcyBmdW5jdGlvbgQMZnJvbUNvbXBvdW5kCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFE2tleVVzZGNVc2RuQ29tcG91bmQAAAQLdG90YWxTdGFrZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwULa2V5VVNEQ1VTRE4AAAQGc3Rha2VDCQD8BwQJAQdBZGRyZXNzAQEaAVfrO+d+bgUYwpGkmBYX4WbXRScg7iVJVqgCBXN0YWtlBQNuaWwJAMwIAgUIY29tcG91bmQFA25pbAMJAAACBQZzdGFrZUMFBnN0YWtlQwQLdXBkYXRlU3RhdGUJAQxJbnRlZ2VyRW50cnkCBQtrZXlVU0RDVVNETgkAZAIFC3RvdGFsU3Rha2VkBQJjYQQCdGMJAQxJbnRlZ2VyRW50cnkCBRNrZXlVc2RjVXNkbkNvbXBvdW5kCQBkAgUMZnJvbUNvbXBvdW5kBQJjYQkAzAgCBQt1cGRhdGVTdGF0ZQkAzAgCBQJ0YwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEmNvbXBvdW5kVXNkY1VzZHRMUAAECGNvbXBvdW5kCQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEAmNhCAUIY29tcG91bmQGYW1vdW50BAhpc09yYWNsZQkBDGNoZWNrQWRkcmVzcwEICAUBaQZjYWxsZXIFYnl0ZXMDCQECIT0CCAUIY29tcG91bmQHYXNzZXRJZAUKdXNkY1VzZHRMUAkAAgECHWF0dGFjaCBVU0RDVVNEVExQIHRva2VucyBvbmx5AwkBASEBBQhpc09yYWNsZQkAAgECLFlvdSBhcmUgbm90IGF1dGhvdGl6ZWQgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uBAxmcm9tQ29tcG91bmQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUTa2V5VXNkY1VzZHRDb21wb3VuZAAABAt0b3RhbFN0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQtrZXlVU0RDVVNEVAAABAZzdGFrZUMJAPwHBAkBB0FkZHJlc3MBARoBV+s7535uBRjCkaSYFhfhZtdFJyDuJUlWqAIFc3Rha2UFA25pbAkAzAgCBQhjb21wb3VuZAUDbmlsAwkAAAIFBnN0YWtlQwUGc3Rha2VDBAt1cGRhdGVTdGF0ZQkBDEludGVnZXJFbnRyeQIFC2tleVVTRENVU0RUCQBkAgULdG90YWxTdGFrZWQFAmNhBAJ0YwkBDEludGVnZXJFbnRyeQIFE2tleVVzZGNVc2R0Q29tcG91bmQJAGQCBQxmcm9tQ29tcG91bmQFAmNhCQDMCAIFC3VwZGF0ZVN0YXRlCQDMCAIFAnRjBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEUY29tcG91bmRQdXp6bGVVc2RuTFAABAhjb21wb3VuZAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAJjYQgFCGNvbXBvdW5kBmFtb3VudAQIaXNPcmFjbGUJAQxjaGVja0FkZHJlc3MBCAgFAWkGY2FsbGVyBWJ5dGVzAwkBAiE9AggFCGNvbXBvdW5kB2Fzc2V0SWQFDHB1enpsZVVzZG5MUAkAAgECH2F0dGFjaCBQVVpaTEVVU0ROTFAgdG9rZW5zIG9ubHkDCQEBIQEFCGlzT3JhY2xlCQACAQIsWW91IGFyZSBub3QgYXV0aG90aXplZCB0byBjYWxsIHRoaXMgZnVuY3Rpb24EDGZyb21Db21wb3VuZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRVrZXlQdXp6bGVVc2RuQ29tcG91bmQAAAQLdG90YWxTdGFrZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUNa2V5UFVaWkxFVVNETgAABAZzdGFrZUMJAPwHBAkBB0FkZHJlc3MBARoBV+s7535uBRjCkaSYFhfhZtdFJyDuJUlWqAIFc3Rha2UFA25pbAkAzAgCBQhjb21wb3VuZAUDbmlsAwkAAAIFBnN0YWtlQwUGc3Rha2VDBAt1cGRhdGVTdGF0ZQkBDEludGVnZXJFbnRyeQIFDWtleVBVWlpMRVVTRE4JAGQCBQt0b3RhbFN0YWtlZAUCY2EEAnRjCQEMSW50ZWdlckVudHJ5AgUVa2V5UHV6emxlVXNkbkNvbXBvdW5kCQBkAgUMZnJvbUNvbXBvdW5kBQJjYQkAzAgCBQt1cGRhdGVTdGF0ZQkAzAgCBQJ0YwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDHNwb25zb3JCb29zdAAEAnBtCQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAECmxvY2tQZXJpb2QAZAMJAQIhPQIIBQJwbQdhc3NldElkBQR3eElkCQACAQIFRXJyb3IECXNwb25zb3JlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ5rZXlTcG9uc29yc2hpcAAABARsb2NrCQD8BwQJAQdBZGRyZXNzAQEaAVez5uZVGBFpsOQzD4hRQ6ScrtbVSwNLEVgCDGluY3JlYXNlTG9jawkAzAgCBQpsb2NrUGVyaW9kBQNuaWwJAMwIAgUCcG0FA25pbAMJAAACBQRsb2NrBQRsb2NrBAFzCQEMSW50ZWdlckVudHJ5AgUOa2V5U3BvbnNvcnNoaXAJAGQCCAUCcG0GYW1vdW50BQlzcG9uc29yZWQJAMwIAgUBcwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBmluaXRXWAAEAnBtCQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEAmFtCAUCcG0GYW1vdW50AwkBAiE9AggFAnBtB2Fzc2V0SWQFCHd4VXNkbkxQCQACAQIQVW5leHBlY3RlZCB0b2tlbgQBcwkA/AcECQEHQWRkcmVzcwEBGgFUWUAnk2tLKe6+saEO5txAuM+kjXoM67UPAgVzdGFrZQUDbmlsCQDMCAIFAnBtBQNuaWwDCQAAAgUBcwUBcwQDdXBkCQEMSW50ZWdlckVudHJ5AgUJa2V5V1hVU0ROBQJhbQQEdXBkSwkBDEludGVnZXJFbnRyeQIFEWtleXd4VXNkbkNvbXBvdW5kAAAJAMwIAgUDdXBkCQDMCAIFBHVwZEsFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXmLDcRS", "height": 2156740, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DUd3FvVSS6eD7sdFHd5xyJM6UaUoVo3r86CEwwmwKGu4 Next: none Diff:
OldNewDifferences
1-{-# STDLIB_VERSION 5 #-}
1+{-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let usdnUsdt = base58'97zHFp1C3cB7qfvx8Xv5f2rWp9nUSG5UnAamfPcW6txf'
4+let usdtUsdnLP = base58'Fm4qczu6Pepz8KUhh3Heb6LeTVfpSMX5vvNgw3x764CS'
55
6-let usdnUsdtLPTCI = base58'2CD44HANZzsdU7yqRsmz7L9eA2Foh4YYMC4azMbaZEj6'
6+let usdtUsdnLPTCI = base58'i1snzKxSEZVokh9TWj8hTJQEDBsocnL2hRWsSbsMPK7'
77
8-let wxUsdnLP = base58''
8+let wxUsdnLP = base58'2sEBVcyDFK2LupCf7MeA4vzHhGK4DC1WjbKGQCLYDqib'
99
10-let wxUsdnLPTCI = base58''
10+let wxUsdnLPTCI = base58'DNy6WBfhPE4y82RonGdHhZEunNotEDzmNfrBomWnsyGi'
11+
12+let usdcUsdnLP = base58'EK6N7S38xbtBT3SxAqoGdDLCiX6rojX6G169CnSyuE5'
13+
14+let usdcUsdnLPTCI = base58'HZKFpNfyPG5gt4D6Nfy1zQSg2Ptmqv932GjNTCyBEeKP'
15+
16+let usdcUsdtLP = base58'EPhdEfmQaNcHyvDmRGhnLhgcJtKZ2a4k3ZBmKWtAEWyH'
17+
18+let usdcUsdtLPTCI = base58'BqPYkaiz7Le6fFu1rjZ54anrpT57EpvyugZCUqrsjXj'
19+
20+let puzzleUsdnLP = base58'E8zHu33GfcNyGLypX77gZiUXfvuZQeaYmiEfsy7VYNwP'
21+
22+let puzzleUsdnLPTCI = base58'Dh9QXSSABE5V6aRfu3mCbDAUokbpE7ER7pbZV6cvyg1A'
23+
24+let wxId = base58'Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on'
25+
26+let keySponsorship = "Sponsorship_in_lock"
1127
1228 let isStopped = false
1329
14-let keyUsdtUsdn = "STAKED_LP"
30+let keyStaked = "STAKED_LP"
1531
1632 let keyCompound = "From_Compound"
1733
18-let wxUsdnCompound = "WX_USDN_compound"
34+let keywxUsdnCompound = "WX_USDN_compound"
1935
2036 let keyWXUSDN = "WX_USDN"
2137
22-let keyWAVESUSDN = "WAVES_USDN"
38+let keyUsdcUsdnCompound = "USDC_USDN_compound"
2339
24-let keyWavesCompound = "WAVES_USDN_COMPOUND"
40+let keyUSDCUSDN = "USDC_USDN"
2541
26-let keyBtcUsdn = "BTC_USDN"
42+let keyUsdcUsdtCompound = "USDC_USDT_compound"
2743
28-let keyBtcUsdnCompound = "BTC_USDN_COMPOUND"
44+let keyUSDCUSDT = "USDC_USDT"
2945
30-let keyEthUsdn = "ETH_USDN"
46+let keyPuzzleUsdnCompound = "PUZZLE_USDN_compound"
3147
32-let keyEthUsdnCompound = "ETH_USDN_COMPOUND"
48+let keyPUZZLEUSDN = "PUZZLE_USDN"
49+
50+let def = 100000000
51+
52+let feePerc = 10000000000
53+
54+let tw = base58'3Mv7nXq2V2Dnn9oSkB5feRt6RxtqnPiAXNH'
55+
56+let oracle = base58'3P6phwFZFQtZFuc9dvdXsgvtg8JEFVgECPA'
57+
58+let stakePool = "3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz"
59+
60+func checkAddress (caller) = if ((caller != oracle))
61+ then false
62+ else true
63+
64+
65+@Callable(i)
66+func initUsdtUsdn () = {
67+ let pm = value(i.payments[0])
68+ let am = pm.amount
69+ if ((pm.assetId != usdtUsdnLP))
70+ then throw("Unexpected token")
71+ else {
72+ let s = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [pm])
73+ if ((s == s))
74+ then {
75+ let upd = IntegerEntry(keyStaked, am)
76+ let updK = IntegerEntry(keyCompound, 0)
77+[upd, updK]
78+ }
79+ else throw("Strict value is not equal to itself.")
80+ }
81+ }
82+
83+
84+
85+@Callable(i)
86+func withdraw () = {
87+ let payment = value(i.payments[0])
88+ let am = payment.amount
89+ let id = payment.assetId
90+ if ((id == usdtUsdnLP))
91+ then {
92+ let TCIAmount = match assetInfo(usdtUsdnLPTCI) {
93+ case q: Asset =>
94+ q.quantity
95+ case _ =>
96+ 0
97+ }
98+ let usdnUsdtStaked = valueOrElse(getInteger(this, keyStaked), 0)
99+ let forSingleTCI = fraction(usdnUsdtStaked, def, TCIAmount)
100+ let usdnLpToWithdraw = fraction(forSingleTCI, am, def)
101+ let fee = fraction(usdnLpToWithdraw, def, feePerc)
102+ 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+ }
113+ else throw("Strict value is not equal to itself.")
114+ }
115+ else if ((id == wxUsdnLPTCI))
116+ then {
117+ let wxTciAm = match assetInfo(wxUsdnLPTCI) {
118+ case q: Asset =>
119+ q.quantity
120+ case _ =>
121+ 0
122+ }
123+ let wxUsdnStaked = valueOrElse(getInteger(this, keyWXUSDN), 0)
124+ let singleWXLP = fraction(wxUsdnStaked, def, wxTciAm)
125+ let wxLpToWithdraw = fraction(singleWXLP, am, def)
126+ let fee = fraction(wxLpToWithdraw, def, feePerc)
127+ let unstake = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "unstake", ["2sEBVcyDFK2LupCf7MeA4vzHhGK4DC1WjbKGQCLYDqib", am], [payment])
128+ if ((unstake == unstake))
129+ then {
130+ let wxLpFeeTransfer = ScriptTransfer(Address(tw), fee, wxUsdnLP)
131+ let wxLpTransfer = ScriptTransfer(i.caller, (am - fee), wxUsdnLP)
132+ let updateWxLpStaked = IntegerEntry(keyWXUSDN, (wxUsdnStaked - wxLpToWithdraw))
133+ let burnWxLpTci = Burn(wxUsdnLP, am)
134+ if ((burnWxLpTci == burnWxLpTci))
135+ then [wxLpFeeTransfer, wxLpTransfer, updateWxLpStaked]
136+ else throw("Strict value is not equal to itself.")
137+ }
138+ else throw("Strict value is not equal to itself.")
139+ }
140+ else if ((id == usdcUsdnLPTCI))
141+ then {
142+ let usdcUsdnTCI = match assetInfo(usdcUsdnLPTCI) {
143+ case q: Asset =>
144+ q.quantity
145+ case _ =>
146+ 0
147+ }
148+ let usdcUsdnStaked = valueOrElse(getInteger(this, keyUSDCUSDN), 0)
149+ let singleUsdcLP = fraction(usdcUsdnTCI, def, usdcUsdnStaked)
150+ let usdcLpToWithdraw = fraction(singleUsdcLP, am, def)
151+ let fee = fraction(usdcLpToWithdraw, def, feePerc)
152+ let usdcUsdnLPFee = ScriptTransfer(Address(tw), fee, usdcUsdnLP)
153+ let usdcUsdnTransfer = ScriptTransfer(i.caller, (am - fee), usdcUsdnLP)
154+ let updateUsdcUsdnLpStaked = IntegerEntry(keyUSDCUSDN, (usdcUsdnStaked - usdcLpToWithdraw))
155+ let burnUsdcUsdnLpTci = Burn(usdcUsdnLPTCI, am)
156+ if ((burnUsdcUsdnLpTci == burnUsdcUsdnLpTci))
157+ then [usdcUsdnLPFee, usdcUsdnTransfer, updateUsdcUsdnLpStaked]
158+ else throw("Strict value is not equal to itself.")
159+ }
160+ else if ((id == usdcUsdtLPTCI))
161+ then {
162+ let usdcUsdtTci = match assetInfo(usdcUsdnLPTCI) {
163+ case q: Asset =>
164+ q.quantity
165+ case _ =>
166+ 0
167+ }
168+ let usdcUsdtStaked = valueOrElse(getInteger(this, keyUSDCUSDT), 0)
169+ let singleUsdcUsdt = fraction(usdcUsdtTci, def, usdcUsdtStaked)
170+ let usdcUsdtLpToWithdraw = fraction(singleUsdcUsdt, am, def)
171+ let fee = fraction(usdcUsdtLpToWithdraw, def, feePerc)
172+ let usdcUsdtLPFee = ScriptTransfer(Address(tw), fee, usdcUsdtLP)
173+ let usdcUsdtTransfer = ScriptTransfer(i.caller, (am - fee), usdcUsdtLP)
174+ let updateUsdcUsdtLpStaked = IntegerEntry(keyUSDCUSDT, (usdcUsdtStaked - usdcUsdtLpToWithdraw))
175+ let burnWxLpTci = Burn(usdcUsdnLPTCI, am)
176+ if ((burnWxLpTci == burnWxLpTci))
177+ then [usdcUsdtLPFee, usdcUsdtTransfer, updateUsdcUsdtLpStaked]
178+ else throw("Strict value is not equal to itself.")
179+ }
180+ else if ((id == puzzleUsdnLPTCI))
181+ then {
182+ let puzzleUsdnTci = match assetInfo(puzzleUsdnLPTCI) {
183+ case q: Asset =>
184+ q.quantity
185+ case _ =>
186+ 0
187+ }
188+ let puzzleLPStaked = valueOrElse(getInteger(this, keyPUZZLEUSDN), 0)
189+ let singlePuzzleUsdn = fraction(puzzleUsdnTci, def, puzzleLPStaked)
190+ let puzzleUsdnWithdraw = fraction(singlePuzzleUsdn, am, def)
191+ let fee = fraction(puzzleUsdnWithdraw, def, feePerc)
192+ let puzzleUsdnLPFee = ScriptTransfer(Address(tw), fee, puzzleUsdnLP)
193+ let puzzleUsdnTransfer = ScriptTransfer(i.caller, (am - fee), puzzleUsdnLP)
194+ let updatePuzzleUsdnLpStaked = IntegerEntry(keyPUZZLEUSDN, (puzzleLPStaked - puzzleUsdnWithdraw))
195+ let burnPuzzleTCI = Burn(puzzleUsdnLPTCI, am)
196+ if ((burnPuzzleTCI == burnPuzzleTCI))
197+ then [puzzleUsdnLPFee, puzzleUsdnTransfer, updatePuzzleUsdnLpStaked]
198+ else throw("Strict value is not equal to itself.")
199+ }
200+ else throw("Invalid asset")
201+ }
202+
203+
33204
34205 @Callable(i)
35206 func depositWxUsdnLP () = {
47218 case _ =>
48219 throw("Can't find asset")
49220 }
50- let fromCompound = valueOrElse(getInteger(this, keyCompound), 0)
51- let forOne = fraction(totalIssued, 100000000, tkStaked)
52- let toIssue = fraction(pmtAmount, forOne, 100000000)
53- let updateState = IntegerEntry(keyUsdtUsdn, (tkStaked + pmtAmount))
221+ let one = fraction(totalIssued, 100000000, tkStaked)
222+ let toIssue = fraction(pmtAmount, one, 100000000)
223+ let updateState = IntegerEntry(keyWXUSDN, (tkStaked + pmtAmount))
54224 let LPstake = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [pmt])
55225 if ((LPstake == LPstake))
56226 then {
68238 func depositUsdtUsdnLP () = {
69239 let pmt = value(i.payments[0])
70240 let pmtAmount = pmt.amount
71- if ((pmt.assetId != usdnUsdt))
241+ if ((pmt.assetId != usdtUsdnLP))
72242 then throw("attach USDTUSDNLP tokens only")
73243 else if (isStopped)
74244 then throw("smart contract is on lock")
75245 else {
76- let tkStaked = valueOrElse(getInteger(this, keyUsdtUsdn), 0)
77- let totalIssued = match assetInfo(usdnUsdtLPTCI) {
246+ let tkStaked = valueOrElse(getInteger(this, keyStaked), 0)
247+ let totalIssued = match assetInfo(usdtUsdnLPTCI) {
78248 case asset: Asset =>
79249 asset.quantity
80250 case _ =>
83253 let fromCompound = valueOrElse(getInteger(this, keyCompound), 0)
84254 let forOne = fraction(totalIssued, 100000000, tkStaked)
85255 let toIssue = fraction(pmtAmount, forOne, 100000000)
86- let updateState = IntegerEntry(keyUsdtUsdn, (tkStaked + pmtAmount))
87- let LPstake = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [pmt])
256+ let updateState = IntegerEntry(keyStaked, (tkStaked + pmtAmount))
257+ let LPstake = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [pmt])
88258 if ((LPstake == LPstake))
89259 then {
90- let LPIssue = Reissue(usdnUsdtLPTCI, toIssue, true)
91- let transfer = ScriptTransfer(i.caller, toIssue, usdnUsdtLPTCI)
260+ let LPIssue = Reissue(usdtUsdnLPTCI, toIssue, true)
261+ let transfer = ScriptTransfer(i.caller, toIssue, usdtUsdnLPTCI)
92262 [LPIssue, transfer, updateState]
93263 }
94264 else throw("Strict value is not equal to itself.")
98268
99269
100270 @Callable(i)
101-func compoundUSDTUSDNLP () = {
271+func depositUsdcUsdnLP () = {
272+ let pmt = value(i.payments[0])
273+ let pmtAmount = pmt.amount
274+ if ((pmt.assetId != usdcUsdnLP))
275+ then throw("attach USDCUSDNLP tokens only")
276+ else if (isStopped)
277+ then throw("smart contract is on lock")
278+ else {
279+ let tkStaked = valueOrElse(getInteger(this, keyUSDCUSDN), 0)
280+ let totalIssued = match assetInfo(usdcUsdnLPTCI) {
281+ case asset: Asset =>
282+ asset.quantity
283+ case _ =>
284+ throw("Can't find asset")
285+ }
286+ let fromCompound = valueOrElse(getInteger(this, keyUsdcUsdnCompound), 0)
287+ let forOne = fraction(totalIssued, 100000000, tkStaked)
288+ let toIssue = fraction(pmtAmount, forOne, 100000000)
289+ let updateState = IntegerEntry(keyUSDCUSDN, (tkStaked + pmtAmount))
290+ let LPstake = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [pmt])
291+ if ((LPstake == LPstake))
292+ then {
293+ let LPIssue = Reissue(usdcUsdnLPTCI, toIssue, true)
294+ let transfer = ScriptTransfer(i.caller, toIssue, usdcUsdnLPTCI)
295+[LPIssue, transfer, updateState]
296+ }
297+ else throw("Strict value is not equal to itself.")
298+ }
299+ }
300+
301+
302+
303+@Callable(i)
304+func depositUsdcUsdtLP () = {
305+ let pmt = value(i.payments[0])
306+ let pmtAmount = pmt.amount
307+ if ((pmt.assetId != usdcUsdtLP))
308+ then throw("attach USDCUSDTLP tokens only")
309+ else if (isStopped)
310+ then throw("smart contract is on lock")
311+ else {
312+ let tkStaked = valueOrElse(getInteger(this, keyUSDCUSDT), 0)
313+ let totalIssued = match assetInfo(usdcUsdtLPTCI) {
314+ case asset: Asset =>
315+ asset.quantity
316+ case _ =>
317+ throw("Can't find asset")
318+ }
319+ let fromCompound = valueOrElse(getInteger(this, keyUsdcUsdtCompound), 0)
320+ let forOne = fraction(totalIssued, 100000000, tkStaked)
321+ let toIssue = fraction(pmtAmount, forOne, 100000000)
322+ let updateState = IntegerEntry(keyUSDCUSDT, (tkStaked + pmtAmount))
323+ let LPstake = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [pmt])
324+ if ((LPstake == LPstake))
325+ then {
326+ let LPIssue = Reissue(usdcUsdtLPTCI, toIssue, true)
327+ let transfer = ScriptTransfer(i.caller, toIssue, usdcUsdtLPTCI)
328+[LPIssue, transfer, updateState]
329+ }
330+ else throw("Strict value is not equal to itself.")
331+ }
332+ }
333+
334+
335+
336+@Callable(i)
337+func depositPuzzleUsdnLP () = {
338+ let pmt = value(i.payments[0])
339+ let pmtAmount = pmt.amount
340+ if ((pmt.assetId != puzzleUsdnLP))
341+ then throw("attach PUZZLEUDSNLP tokens only")
342+ else if (isStopped)
343+ then throw("smart contract is on lock")
344+ else {
345+ let tkStaked = valueOrElse(getInteger(this, keyPUZZLEUSDN), 0)
346+ let totalIssued = match assetInfo(puzzleUsdnLPTCI) {
347+ case asset: Asset =>
348+ asset.quantity
349+ case _ =>
350+ throw("Can't find asset")
351+ }
352+ let fromCompound = valueOrElse(getInteger(this, keyPuzzleUsdnCompound), 0)
353+ let forOne = fraction(totalIssued, 100000000, tkStaked)
354+ let toIssue = fraction(pmtAmount, forOne, 100000000)
355+ let updateState = IntegerEntry(keyPUZZLEUSDN, (tkStaked + pmtAmount))
356+ let LPstake = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [pmt])
357+ if ((LPstake == LPstake))
358+ then {
359+ let LPIssue = Reissue(puzzleUsdnLPTCI, toIssue, true)
360+ let transfer = ScriptTransfer(i.caller, toIssue, puzzleUsdnLPTCI)
361+[LPIssue, transfer, updateState]
362+ }
363+ else throw("Strict value is not equal to itself.")
364+ }
365+ }
366+
367+
368+
369+@Callable(i)
370+func compoundWxUsdnLP () = {
102371 let compound = value(i.payments[0])
103372 let ca = compound.amount
104- if ((compound.assetId != usdnUsdt))
373+ let isOracle = checkAddress(i.caller.bytes)
374+ if ((compound.assetId != wxUsdnLP))
375+ then throw("attach WXUSDNLP tokens only")
376+ else if (!(isOracle))
377+ then throw("You are not authotized to call this function")
378+ else {
379+ let fromCompound = valueOrElse(getInteger(this, keywxUsdnCompound), 0)
380+ let totalStaked = valueOrElse(getInteger(this, keyWXUSDN), 0)
381+ let stakeC = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [compound])
382+ if ((stakeC == stakeC))
383+ then {
384+ let updateState = IntegerEntry(keyWXUSDN, (totalStaked + ca))
385+ let tc = IntegerEntry(keywxUsdnCompound, (fromCompound + ca))
386+[updateState, tc]
387+ }
388+ else throw("Strict value is not equal to itself.")
389+ }
390+ }
391+
392+
393+
394+@Callable(i)
395+func compoundUsdtUsdnLP () = {
396+ let compound = value(i.payments[0])
397+ let ca = compound.amount
398+ let isOracle = checkAddress(i.caller.bytes)
399+ if ((compound.assetId != usdtUsdnLP))
105400 then throw("attach USDTUSDNLP tokens only")
401+ else if (!(isOracle))
402+ then throw("You are not authotized to call this function")
403+ else {
404+ let fromCompound = valueOrElse(getInteger(this, keyCompound), 0)
405+ let totalStaked = valueOrElse(getInteger(this, keyStaked), 0)
406+ let stakeC = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [compound])
407+ if ((stakeC == stakeC))
408+ then {
409+ let updateState = IntegerEntry(keyStaked, (totalStaked + ca))
410+ let tc = IntegerEntry(keyCompound, (fromCompound + ca))
411+[updateState, tc]
412+ }
413+ else throw("Strict value is not equal to itself.")
414+ }
415+ }
416+
417+
418+
419+@Callable(i)
420+func compoundUsdcUsdnLP () = {
421+ let compound = value(i.payments[0])
422+ let ca = compound.amount
423+ let isOracle = checkAddress(i.caller.bytes)
424+ if ((compound.assetId != usdcUsdnLP))
425+ then throw("attach USDCUSDNLP tokens only")
426+ else if (!(isOracle))
427+ then throw("You are not authotized to call this function")
428+ else {
429+ let fromCompound = valueOrElse(getInteger(this, keyUsdcUsdnCompound), 0)
430+ let totalStaked = valueOrElse(getInteger(this, keyUSDCUSDN), 0)
431+ let stakeC = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [compound])
432+ if ((stakeC == stakeC))
433+ then {
434+ let updateState = IntegerEntry(keyUSDCUSDN, (totalStaked + ca))
435+ let tc = IntegerEntry(keyUsdcUsdnCompound, (fromCompound + ca))
436+[updateState, tc]
437+ }
438+ else throw("Strict value is not equal to itself.")
439+ }
440+ }
441+
442+
443+
444+@Callable(i)
445+func compoundUsdcUsdtLP () = {
446+ let compound = value(i.payments[0])
447+ let ca = compound.amount
448+ let isOracle = checkAddress(i.caller.bytes)
449+ if ((compound.assetId != usdcUsdtLP))
450+ then throw("attach USDCUSDTLP tokens only")
451+ else if (!(isOracle))
452+ then throw("You are not authotized to call this function")
453+ else {
454+ let fromCompound = valueOrElse(getInteger(this, keyUsdcUsdtCompound), 0)
455+ let totalStaked = valueOrElse(getInteger(this, keyUSDCUSDT), 0)
456+ let stakeC = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [compound])
457+ if ((stakeC == stakeC))
458+ then {
459+ let updateState = IntegerEntry(keyUSDCUSDT, (totalStaked + ca))
460+ let tc = IntegerEntry(keyUsdcUsdtCompound, (fromCompound + ca))
461+[updateState, tc]
462+ }
463+ else throw("Strict value is not equal to itself.")
464+ }
465+ }
466+
467+
468+
469+@Callable(i)
470+func compoundPuzzleUsdnLP () = {
471+ let compound = value(i.payments[0])
472+ let ca = compound.amount
473+ let isOracle = checkAddress(i.caller.bytes)
474+ if ((compound.assetId != puzzleUsdnLP))
475+ then throw("attach PUZZLEUSDNLP tokens only")
476+ else if (!(isOracle))
477+ then throw("You are not authotized to call this function")
478+ else {
479+ let fromCompound = valueOrElse(getInteger(this, keyPuzzleUsdnCompound), 0)
480+ let totalStaked = valueOrElse(getInteger(this, keyPUZZLEUSDN), 0)
481+ let stakeC = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [compound])
482+ if ((stakeC == stakeC))
483+ then {
484+ let updateState = IntegerEntry(keyPUZZLEUSDN, (totalStaked + ca))
485+ let tc = IntegerEntry(keyPuzzleUsdnCompound, (fromCompound + ca))
486+[updateState, tc]
487+ }
488+ else throw("Strict value is not equal to itself.")
489+ }
490+ }
491+
492+
493+
494+@Callable(i)
495+func sponsorBoost () = {
496+ let pm = value(i.payments[0])
497+ let lockPeriod = 100
498+ if ((pm.assetId != wxId))
499+ then throw("Error")
106500 else {
107- let fromCompound = valueOrElse(getInteger(this, keyCompound), 0)
108- let totalStaked = valueOrElse(getInteger(this, keyUsdtUsdn), 0)
109- let stakeC = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [compound])
110- if ((stakeC == stakeC))
501+ let sponsored = valueOrElse(getInteger(this, keySponsorship), 0)
502+ let lock = invoke(Address(base58'3PJL8Hn8LACaSBWLQ3UVhctA5cTQLBFwBAP'), "increaseLock", [lockPeriod], [pm])
503+ if ((lock == lock))
111504 then {
112- let updateState = IntegerEntry(keyUsdtUsdn, (totalStaked + ca))
113- let tc = IntegerEntry(keyCompound, (fromCompound + ca))
114-[updateState, tc]
505+ let s = IntegerEntry(keySponsorship, (pm.amount + sponsored))
506+[s]
115507 }
116508 else throw("Strict value is not equal to itself.")
117509 }
120512
121513
122514 @Callable(i)
123-func compoundWXUSDNLP () = {
124- let compound = value(i.payments[0])
125- let ca = compound.amount
126- if ((compound.assetId != wxUsdnLP))
127- then throw("attach WXUSDNLP tokens only")
515+func initWX () = {
516+ let pm = value(i.payments[0])
517+ let am = pm.amount
518+ if ((pm.assetId != wxUsdnLP))
519+ then throw("Unexpected token")
128520 else {
129- let fromCompound = valueOrElse(getInteger(this, keyCompound), 0)
130- let totalStaked = valueOrElse(getInteger(this, keyUsdtUsdn), 0)
131- let stakeC = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [compound])
132- if ((stakeC == stakeC))
521+ let s = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [pm])
522+ if ((s == s))
133523 then {
134- let updateState = IntegerEntry(keyUsdtUsdn, (totalStaked + ca))
135- let tc = IntegerEntry(keyCompound, (fromCompound + ca))
136-[updateState, tc]
524+ let upd = IntegerEntry(keyWXUSDN, am)
525+ let updK = IntegerEntry(keywxUsdnCompound, 0)
526+[upd, updK]
137527 }
138528 else throw("Strict value is not equal to itself.")
139529 }
140- }
141-
142-
143-
144-@Callable(i)
145-func default () = {
146- let defSt = 100000000
147- let update = IntegerEntry(keyWXUSDN, defSt)
148-[update]
149530 }
150531
151532
Full:
OldNewDifferences
1-{-# STDLIB_VERSION 5 #-}
1+{-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let usdnUsdt = base58'97zHFp1C3cB7qfvx8Xv5f2rWp9nUSG5UnAamfPcW6txf'
4+let usdtUsdnLP = base58'Fm4qczu6Pepz8KUhh3Heb6LeTVfpSMX5vvNgw3x764CS'
55
6-let usdnUsdtLPTCI = base58'2CD44HANZzsdU7yqRsmz7L9eA2Foh4YYMC4azMbaZEj6'
6+let usdtUsdnLPTCI = base58'i1snzKxSEZVokh9TWj8hTJQEDBsocnL2hRWsSbsMPK7'
77
8-let wxUsdnLP = base58''
8+let wxUsdnLP = base58'2sEBVcyDFK2LupCf7MeA4vzHhGK4DC1WjbKGQCLYDqib'
99
10-let wxUsdnLPTCI = base58''
10+let wxUsdnLPTCI = base58'DNy6WBfhPE4y82RonGdHhZEunNotEDzmNfrBomWnsyGi'
11+
12+let usdcUsdnLP = base58'EK6N7S38xbtBT3SxAqoGdDLCiX6rojX6G169CnSyuE5'
13+
14+let usdcUsdnLPTCI = base58'HZKFpNfyPG5gt4D6Nfy1zQSg2Ptmqv932GjNTCyBEeKP'
15+
16+let usdcUsdtLP = base58'EPhdEfmQaNcHyvDmRGhnLhgcJtKZ2a4k3ZBmKWtAEWyH'
17+
18+let usdcUsdtLPTCI = base58'BqPYkaiz7Le6fFu1rjZ54anrpT57EpvyugZCUqrsjXj'
19+
20+let puzzleUsdnLP = base58'E8zHu33GfcNyGLypX77gZiUXfvuZQeaYmiEfsy7VYNwP'
21+
22+let puzzleUsdnLPTCI = base58'Dh9QXSSABE5V6aRfu3mCbDAUokbpE7ER7pbZV6cvyg1A'
23+
24+let wxId = base58'Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on'
25+
26+let keySponsorship = "Sponsorship_in_lock"
1127
1228 let isStopped = false
1329
14-let keyUsdtUsdn = "STAKED_LP"
30+let keyStaked = "STAKED_LP"
1531
1632 let keyCompound = "From_Compound"
1733
18-let wxUsdnCompound = "WX_USDN_compound"
34+let keywxUsdnCompound = "WX_USDN_compound"
1935
2036 let keyWXUSDN = "WX_USDN"
2137
22-let keyWAVESUSDN = "WAVES_USDN"
38+let keyUsdcUsdnCompound = "USDC_USDN_compound"
2339
24-let keyWavesCompound = "WAVES_USDN_COMPOUND"
40+let keyUSDCUSDN = "USDC_USDN"
2541
26-let keyBtcUsdn = "BTC_USDN"
42+let keyUsdcUsdtCompound = "USDC_USDT_compound"
2743
28-let keyBtcUsdnCompound = "BTC_USDN_COMPOUND"
44+let keyUSDCUSDT = "USDC_USDT"
2945
30-let keyEthUsdn = "ETH_USDN"
46+let keyPuzzleUsdnCompound = "PUZZLE_USDN_compound"
3147
32-let keyEthUsdnCompound = "ETH_USDN_COMPOUND"
48+let keyPUZZLEUSDN = "PUZZLE_USDN"
49+
50+let def = 100000000
51+
52+let feePerc = 10000000000
53+
54+let tw = base58'3Mv7nXq2V2Dnn9oSkB5feRt6RxtqnPiAXNH'
55+
56+let oracle = base58'3P6phwFZFQtZFuc9dvdXsgvtg8JEFVgECPA'
57+
58+let stakePool = "3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz"
59+
60+func checkAddress (caller) = if ((caller != oracle))
61+ then false
62+ else true
63+
64+
65+@Callable(i)
66+func initUsdtUsdn () = {
67+ let pm = value(i.payments[0])
68+ let am = pm.amount
69+ if ((pm.assetId != usdtUsdnLP))
70+ then throw("Unexpected token")
71+ else {
72+ let s = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [pm])
73+ if ((s == s))
74+ then {
75+ let upd = IntegerEntry(keyStaked, am)
76+ let updK = IntegerEntry(keyCompound, 0)
77+[upd, updK]
78+ }
79+ else throw("Strict value is not equal to itself.")
80+ }
81+ }
82+
83+
84+
85+@Callable(i)
86+func withdraw () = {
87+ let payment = value(i.payments[0])
88+ let am = payment.amount
89+ let id = payment.assetId
90+ if ((id == usdtUsdnLP))
91+ then {
92+ let TCIAmount = match assetInfo(usdtUsdnLPTCI) {
93+ case q: Asset =>
94+ q.quantity
95+ case _ =>
96+ 0
97+ }
98+ let usdnUsdtStaked = valueOrElse(getInteger(this, keyStaked), 0)
99+ let forSingleTCI = fraction(usdnUsdtStaked, def, TCIAmount)
100+ let usdnLpToWithdraw = fraction(forSingleTCI, am, def)
101+ let fee = fraction(usdnLpToWithdraw, def, feePerc)
102+ 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+ }
113+ else throw("Strict value is not equal to itself.")
114+ }
115+ else if ((id == wxUsdnLPTCI))
116+ then {
117+ let wxTciAm = match assetInfo(wxUsdnLPTCI) {
118+ case q: Asset =>
119+ q.quantity
120+ case _ =>
121+ 0
122+ }
123+ let wxUsdnStaked = valueOrElse(getInteger(this, keyWXUSDN), 0)
124+ let singleWXLP = fraction(wxUsdnStaked, def, wxTciAm)
125+ let wxLpToWithdraw = fraction(singleWXLP, am, def)
126+ let fee = fraction(wxLpToWithdraw, def, feePerc)
127+ let unstake = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "unstake", ["2sEBVcyDFK2LupCf7MeA4vzHhGK4DC1WjbKGQCLYDqib", am], [payment])
128+ if ((unstake == unstake))
129+ then {
130+ let wxLpFeeTransfer = ScriptTransfer(Address(tw), fee, wxUsdnLP)
131+ let wxLpTransfer = ScriptTransfer(i.caller, (am - fee), wxUsdnLP)
132+ let updateWxLpStaked = IntegerEntry(keyWXUSDN, (wxUsdnStaked - wxLpToWithdraw))
133+ let burnWxLpTci = Burn(wxUsdnLP, am)
134+ if ((burnWxLpTci == burnWxLpTci))
135+ then [wxLpFeeTransfer, wxLpTransfer, updateWxLpStaked]
136+ else throw("Strict value is not equal to itself.")
137+ }
138+ else throw("Strict value is not equal to itself.")
139+ }
140+ else if ((id == usdcUsdnLPTCI))
141+ then {
142+ let usdcUsdnTCI = match assetInfo(usdcUsdnLPTCI) {
143+ case q: Asset =>
144+ q.quantity
145+ case _ =>
146+ 0
147+ }
148+ let usdcUsdnStaked = valueOrElse(getInteger(this, keyUSDCUSDN), 0)
149+ let singleUsdcLP = fraction(usdcUsdnTCI, def, usdcUsdnStaked)
150+ let usdcLpToWithdraw = fraction(singleUsdcLP, am, def)
151+ let fee = fraction(usdcLpToWithdraw, def, feePerc)
152+ let usdcUsdnLPFee = ScriptTransfer(Address(tw), fee, usdcUsdnLP)
153+ let usdcUsdnTransfer = ScriptTransfer(i.caller, (am - fee), usdcUsdnLP)
154+ let updateUsdcUsdnLpStaked = IntegerEntry(keyUSDCUSDN, (usdcUsdnStaked - usdcLpToWithdraw))
155+ let burnUsdcUsdnLpTci = Burn(usdcUsdnLPTCI, am)
156+ if ((burnUsdcUsdnLpTci == burnUsdcUsdnLpTci))
157+ then [usdcUsdnLPFee, usdcUsdnTransfer, updateUsdcUsdnLpStaked]
158+ else throw("Strict value is not equal to itself.")
159+ }
160+ else if ((id == usdcUsdtLPTCI))
161+ then {
162+ let usdcUsdtTci = match assetInfo(usdcUsdnLPTCI) {
163+ case q: Asset =>
164+ q.quantity
165+ case _ =>
166+ 0
167+ }
168+ let usdcUsdtStaked = valueOrElse(getInteger(this, keyUSDCUSDT), 0)
169+ let singleUsdcUsdt = fraction(usdcUsdtTci, def, usdcUsdtStaked)
170+ let usdcUsdtLpToWithdraw = fraction(singleUsdcUsdt, am, def)
171+ let fee = fraction(usdcUsdtLpToWithdraw, def, feePerc)
172+ let usdcUsdtLPFee = ScriptTransfer(Address(tw), fee, usdcUsdtLP)
173+ let usdcUsdtTransfer = ScriptTransfer(i.caller, (am - fee), usdcUsdtLP)
174+ let updateUsdcUsdtLpStaked = IntegerEntry(keyUSDCUSDT, (usdcUsdtStaked - usdcUsdtLpToWithdraw))
175+ let burnWxLpTci = Burn(usdcUsdnLPTCI, am)
176+ if ((burnWxLpTci == burnWxLpTci))
177+ then [usdcUsdtLPFee, usdcUsdtTransfer, updateUsdcUsdtLpStaked]
178+ else throw("Strict value is not equal to itself.")
179+ }
180+ else if ((id == puzzleUsdnLPTCI))
181+ then {
182+ let puzzleUsdnTci = match assetInfo(puzzleUsdnLPTCI) {
183+ case q: Asset =>
184+ q.quantity
185+ case _ =>
186+ 0
187+ }
188+ let puzzleLPStaked = valueOrElse(getInteger(this, keyPUZZLEUSDN), 0)
189+ let singlePuzzleUsdn = fraction(puzzleUsdnTci, def, puzzleLPStaked)
190+ let puzzleUsdnWithdraw = fraction(singlePuzzleUsdn, am, def)
191+ let fee = fraction(puzzleUsdnWithdraw, def, feePerc)
192+ let puzzleUsdnLPFee = ScriptTransfer(Address(tw), fee, puzzleUsdnLP)
193+ let puzzleUsdnTransfer = ScriptTransfer(i.caller, (am - fee), puzzleUsdnLP)
194+ let updatePuzzleUsdnLpStaked = IntegerEntry(keyPUZZLEUSDN, (puzzleLPStaked - puzzleUsdnWithdraw))
195+ let burnPuzzleTCI = Burn(puzzleUsdnLPTCI, am)
196+ if ((burnPuzzleTCI == burnPuzzleTCI))
197+ then [puzzleUsdnLPFee, puzzleUsdnTransfer, updatePuzzleUsdnLpStaked]
198+ else throw("Strict value is not equal to itself.")
199+ }
200+ else throw("Invalid asset")
201+ }
202+
203+
33204
34205 @Callable(i)
35206 func depositWxUsdnLP () = {
36207 let pmt = value(i.payments[0])
37208 let pmtAmount = pmt.amount
38209 if ((pmt.assetId != wxUsdnLP))
39210 then throw("attach WXUSDNLP tokens only")
40211 else if (isStopped)
41212 then throw("smart contract is on lock")
42213 else {
43214 let tkStaked = valueOrElse(getInteger(this, keyWXUSDN), 0)
44215 let totalIssued = match assetInfo(wxUsdnLPTCI) {
45216 case asset: Asset =>
46217 asset.quantity
47218 case _ =>
48219 throw("Can't find asset")
49220 }
50- let fromCompound = valueOrElse(getInteger(this, keyCompound), 0)
51- let forOne = fraction(totalIssued, 100000000, tkStaked)
52- let toIssue = fraction(pmtAmount, forOne, 100000000)
53- let updateState = IntegerEntry(keyUsdtUsdn, (tkStaked + pmtAmount))
221+ let one = fraction(totalIssued, 100000000, tkStaked)
222+ let toIssue = fraction(pmtAmount, one, 100000000)
223+ let updateState = IntegerEntry(keyWXUSDN, (tkStaked + pmtAmount))
54224 let LPstake = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [pmt])
55225 if ((LPstake == LPstake))
56226 then {
57227 let LPIssue = Reissue(wxUsdnLPTCI, toIssue, true)
58228 let transfer = ScriptTransfer(i.caller, toIssue, wxUsdnLPTCI)
59229 [LPIssue, transfer, updateState]
60230 }
61231 else throw("Strict value is not equal to itself.")
62232 }
63233 }
64234
65235
66236
67237 @Callable(i)
68238 func depositUsdtUsdnLP () = {
69239 let pmt = value(i.payments[0])
70240 let pmtAmount = pmt.amount
71- if ((pmt.assetId != usdnUsdt))
241+ if ((pmt.assetId != usdtUsdnLP))
72242 then throw("attach USDTUSDNLP tokens only")
73243 else if (isStopped)
74244 then throw("smart contract is on lock")
75245 else {
76- let tkStaked = valueOrElse(getInteger(this, keyUsdtUsdn), 0)
77- let totalIssued = match assetInfo(usdnUsdtLPTCI) {
246+ let tkStaked = valueOrElse(getInteger(this, keyStaked), 0)
247+ let totalIssued = match assetInfo(usdtUsdnLPTCI) {
78248 case asset: Asset =>
79249 asset.quantity
80250 case _ =>
81251 throw("Can't find asset")
82252 }
83253 let fromCompound = valueOrElse(getInteger(this, keyCompound), 0)
84254 let forOne = fraction(totalIssued, 100000000, tkStaked)
85255 let toIssue = fraction(pmtAmount, forOne, 100000000)
86- let updateState = IntegerEntry(keyUsdtUsdn, (tkStaked + pmtAmount))
87- let LPstake = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [pmt])
256+ let updateState = IntegerEntry(keyStaked, (tkStaked + pmtAmount))
257+ let LPstake = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [pmt])
88258 if ((LPstake == LPstake))
89259 then {
90- let LPIssue = Reissue(usdnUsdtLPTCI, toIssue, true)
91- let transfer = ScriptTransfer(i.caller, toIssue, usdnUsdtLPTCI)
260+ let LPIssue = Reissue(usdtUsdnLPTCI, toIssue, true)
261+ let transfer = ScriptTransfer(i.caller, toIssue, usdtUsdnLPTCI)
92262 [LPIssue, transfer, updateState]
93263 }
94264 else throw("Strict value is not equal to itself.")
95265 }
96266 }
97267
98268
99269
100270 @Callable(i)
101-func compoundUSDTUSDNLP () = {
271+func depositUsdcUsdnLP () = {
272+ let pmt = value(i.payments[0])
273+ let pmtAmount = pmt.amount
274+ if ((pmt.assetId != usdcUsdnLP))
275+ then throw("attach USDCUSDNLP tokens only")
276+ else if (isStopped)
277+ then throw("smart contract is on lock")
278+ else {
279+ let tkStaked = valueOrElse(getInteger(this, keyUSDCUSDN), 0)
280+ let totalIssued = match assetInfo(usdcUsdnLPTCI) {
281+ case asset: Asset =>
282+ asset.quantity
283+ case _ =>
284+ throw("Can't find asset")
285+ }
286+ let fromCompound = valueOrElse(getInteger(this, keyUsdcUsdnCompound), 0)
287+ let forOne = fraction(totalIssued, 100000000, tkStaked)
288+ let toIssue = fraction(pmtAmount, forOne, 100000000)
289+ let updateState = IntegerEntry(keyUSDCUSDN, (tkStaked + pmtAmount))
290+ let LPstake = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [pmt])
291+ if ((LPstake == LPstake))
292+ then {
293+ let LPIssue = Reissue(usdcUsdnLPTCI, toIssue, true)
294+ let transfer = ScriptTransfer(i.caller, toIssue, usdcUsdnLPTCI)
295+[LPIssue, transfer, updateState]
296+ }
297+ else throw("Strict value is not equal to itself.")
298+ }
299+ }
300+
301+
302+
303+@Callable(i)
304+func depositUsdcUsdtLP () = {
305+ let pmt = value(i.payments[0])
306+ let pmtAmount = pmt.amount
307+ if ((pmt.assetId != usdcUsdtLP))
308+ then throw("attach USDCUSDTLP tokens only")
309+ else if (isStopped)
310+ then throw("smart contract is on lock")
311+ else {
312+ let tkStaked = valueOrElse(getInteger(this, keyUSDCUSDT), 0)
313+ let totalIssued = match assetInfo(usdcUsdtLPTCI) {
314+ case asset: Asset =>
315+ asset.quantity
316+ case _ =>
317+ throw("Can't find asset")
318+ }
319+ let fromCompound = valueOrElse(getInteger(this, keyUsdcUsdtCompound), 0)
320+ let forOne = fraction(totalIssued, 100000000, tkStaked)
321+ let toIssue = fraction(pmtAmount, forOne, 100000000)
322+ let updateState = IntegerEntry(keyUSDCUSDT, (tkStaked + pmtAmount))
323+ let LPstake = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [pmt])
324+ if ((LPstake == LPstake))
325+ then {
326+ let LPIssue = Reissue(usdcUsdtLPTCI, toIssue, true)
327+ let transfer = ScriptTransfer(i.caller, toIssue, usdcUsdtLPTCI)
328+[LPIssue, transfer, updateState]
329+ }
330+ else throw("Strict value is not equal to itself.")
331+ }
332+ }
333+
334+
335+
336+@Callable(i)
337+func depositPuzzleUsdnLP () = {
338+ let pmt = value(i.payments[0])
339+ let pmtAmount = pmt.amount
340+ if ((pmt.assetId != puzzleUsdnLP))
341+ then throw("attach PUZZLEUDSNLP tokens only")
342+ else if (isStopped)
343+ then throw("smart contract is on lock")
344+ else {
345+ let tkStaked = valueOrElse(getInteger(this, keyPUZZLEUSDN), 0)
346+ let totalIssued = match assetInfo(puzzleUsdnLPTCI) {
347+ case asset: Asset =>
348+ asset.quantity
349+ case _ =>
350+ throw("Can't find asset")
351+ }
352+ let fromCompound = valueOrElse(getInteger(this, keyPuzzleUsdnCompound), 0)
353+ let forOne = fraction(totalIssued, 100000000, tkStaked)
354+ let toIssue = fraction(pmtAmount, forOne, 100000000)
355+ let updateState = IntegerEntry(keyPUZZLEUSDN, (tkStaked + pmtAmount))
356+ let LPstake = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [pmt])
357+ if ((LPstake == LPstake))
358+ then {
359+ let LPIssue = Reissue(puzzleUsdnLPTCI, toIssue, true)
360+ let transfer = ScriptTransfer(i.caller, toIssue, puzzleUsdnLPTCI)
361+[LPIssue, transfer, updateState]
362+ }
363+ else throw("Strict value is not equal to itself.")
364+ }
365+ }
366+
367+
368+
369+@Callable(i)
370+func compoundWxUsdnLP () = {
102371 let compound = value(i.payments[0])
103372 let ca = compound.amount
104- if ((compound.assetId != usdnUsdt))
373+ let isOracle = checkAddress(i.caller.bytes)
374+ if ((compound.assetId != wxUsdnLP))
375+ then throw("attach WXUSDNLP tokens only")
376+ else if (!(isOracle))
377+ then throw("You are not authotized to call this function")
378+ else {
379+ let fromCompound = valueOrElse(getInteger(this, keywxUsdnCompound), 0)
380+ let totalStaked = valueOrElse(getInteger(this, keyWXUSDN), 0)
381+ let stakeC = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [compound])
382+ if ((stakeC == stakeC))
383+ then {
384+ let updateState = IntegerEntry(keyWXUSDN, (totalStaked + ca))
385+ let tc = IntegerEntry(keywxUsdnCompound, (fromCompound + ca))
386+[updateState, tc]
387+ }
388+ else throw("Strict value is not equal to itself.")
389+ }
390+ }
391+
392+
393+
394+@Callable(i)
395+func compoundUsdtUsdnLP () = {
396+ let compound = value(i.payments[0])
397+ let ca = compound.amount
398+ let isOracle = checkAddress(i.caller.bytes)
399+ if ((compound.assetId != usdtUsdnLP))
105400 then throw("attach USDTUSDNLP tokens only")
401+ else if (!(isOracle))
402+ then throw("You are not authotized to call this function")
403+ else {
404+ let fromCompound = valueOrElse(getInteger(this, keyCompound), 0)
405+ let totalStaked = valueOrElse(getInteger(this, keyStaked), 0)
406+ let stakeC = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [compound])
407+ if ((stakeC == stakeC))
408+ then {
409+ let updateState = IntegerEntry(keyStaked, (totalStaked + ca))
410+ let tc = IntegerEntry(keyCompound, (fromCompound + ca))
411+[updateState, tc]
412+ }
413+ else throw("Strict value is not equal to itself.")
414+ }
415+ }
416+
417+
418+
419+@Callable(i)
420+func compoundUsdcUsdnLP () = {
421+ let compound = value(i.payments[0])
422+ let ca = compound.amount
423+ let isOracle = checkAddress(i.caller.bytes)
424+ if ((compound.assetId != usdcUsdnLP))
425+ then throw("attach USDCUSDNLP tokens only")
426+ else if (!(isOracle))
427+ then throw("You are not authotized to call this function")
428+ else {
429+ let fromCompound = valueOrElse(getInteger(this, keyUsdcUsdnCompound), 0)
430+ let totalStaked = valueOrElse(getInteger(this, keyUSDCUSDN), 0)
431+ let stakeC = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [compound])
432+ if ((stakeC == stakeC))
433+ then {
434+ let updateState = IntegerEntry(keyUSDCUSDN, (totalStaked + ca))
435+ let tc = IntegerEntry(keyUsdcUsdnCompound, (fromCompound + ca))
436+[updateState, tc]
437+ }
438+ else throw("Strict value is not equal to itself.")
439+ }
440+ }
441+
442+
443+
444+@Callable(i)
445+func compoundUsdcUsdtLP () = {
446+ let compound = value(i.payments[0])
447+ let ca = compound.amount
448+ let isOracle = checkAddress(i.caller.bytes)
449+ if ((compound.assetId != usdcUsdtLP))
450+ then throw("attach USDCUSDTLP tokens only")
451+ else if (!(isOracle))
452+ then throw("You are not authotized to call this function")
453+ else {
454+ let fromCompound = valueOrElse(getInteger(this, keyUsdcUsdtCompound), 0)
455+ let totalStaked = valueOrElse(getInteger(this, keyUSDCUSDT), 0)
456+ let stakeC = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [compound])
457+ if ((stakeC == stakeC))
458+ then {
459+ let updateState = IntegerEntry(keyUSDCUSDT, (totalStaked + ca))
460+ let tc = IntegerEntry(keyUsdcUsdtCompound, (fromCompound + ca))
461+[updateState, tc]
462+ }
463+ else throw("Strict value is not equal to itself.")
464+ }
465+ }
466+
467+
468+
469+@Callable(i)
470+func compoundPuzzleUsdnLP () = {
471+ let compound = value(i.payments[0])
472+ let ca = compound.amount
473+ let isOracle = checkAddress(i.caller.bytes)
474+ if ((compound.assetId != puzzleUsdnLP))
475+ then throw("attach PUZZLEUSDNLP tokens only")
476+ else if (!(isOracle))
477+ then throw("You are not authotized to call this function")
478+ else {
479+ let fromCompound = valueOrElse(getInteger(this, keyPuzzleUsdnCompound), 0)
480+ let totalStaked = valueOrElse(getInteger(this, keyPUZZLEUSDN), 0)
481+ let stakeC = invoke(Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV'), "stake", nil, [compound])
482+ if ((stakeC == stakeC))
483+ then {
484+ let updateState = IntegerEntry(keyPUZZLEUSDN, (totalStaked + ca))
485+ let tc = IntegerEntry(keyPuzzleUsdnCompound, (fromCompound + ca))
486+[updateState, tc]
487+ }
488+ else throw("Strict value is not equal to itself.")
489+ }
490+ }
491+
492+
493+
494+@Callable(i)
495+func sponsorBoost () = {
496+ let pm = value(i.payments[0])
497+ let lockPeriod = 100
498+ if ((pm.assetId != wxId))
499+ then throw("Error")
106500 else {
107- let fromCompound = valueOrElse(getInteger(this, keyCompound), 0)
108- let totalStaked = valueOrElse(getInteger(this, keyUsdtUsdn), 0)
109- let stakeC = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [compound])
110- if ((stakeC == stakeC))
501+ let sponsored = valueOrElse(getInteger(this, keySponsorship), 0)
502+ let lock = invoke(Address(base58'3PJL8Hn8LACaSBWLQ3UVhctA5cTQLBFwBAP'), "increaseLock", [lockPeriod], [pm])
503+ if ((lock == lock))
111504 then {
112- let updateState = IntegerEntry(keyUsdtUsdn, (totalStaked + ca))
113- let tc = IntegerEntry(keyCompound, (fromCompound + ca))
114-[updateState, tc]
505+ let s = IntegerEntry(keySponsorship, (pm.amount + sponsored))
506+[s]
115507 }
116508 else throw("Strict value is not equal to itself.")
117509 }
118510 }
119511
120512
121513
122514 @Callable(i)
123-func compoundWXUSDNLP () = {
124- let compound = value(i.payments[0])
125- let ca = compound.amount
126- if ((compound.assetId != wxUsdnLP))
127- then throw("attach WXUSDNLP tokens only")
515+func initWX () = {
516+ let pm = value(i.payments[0])
517+ let am = pm.amount
518+ if ((pm.assetId != wxUsdnLP))
519+ then throw("Unexpected token")
128520 else {
129- let fromCompound = valueOrElse(getInteger(this, keyCompound), 0)
130- let totalStaked = valueOrElse(getInteger(this, keyUsdtUsdn), 0)
131- let stakeC = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [compound])
132- if ((stakeC == stakeC))
521+ let s = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [pm])
522+ if ((s == s))
133523 then {
134- let updateState = IntegerEntry(keyUsdtUsdn, (totalStaked + ca))
135- let tc = IntegerEntry(keyCompound, (fromCompound + ca))
136-[updateState, tc]
524+ let upd = IntegerEntry(keyWXUSDN, am)
525+ let updK = IntegerEntry(keywxUsdnCompound, 0)
526+[upd, updK]
137527 }
138528 else throw("Strict value is not equal to itself.")
139529 }
140- }
141-
142-
143-
144-@Callable(i)
145-func default () = {
146- let defSt = 100000000
147- let update = IntegerEntry(keyWXUSDN, defSt)
148-[update]
149530 }
150531
151532
152533 @Verifier(tx)
153534 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
154535

github/deemru/w8io/3ef1775 
70.50 ms