tx · 5RqBnXcxczvxs3VEZTCdgwXK4wXfhsvJUmac1WXS6N2A

3PRAEZqBjrUDaDvv45HGWPb94DhD6UuZfWg:  -0.00800000 Waves

2023.11.23 11:18 [3921648] smart account 3PRAEZqBjrUDaDvv45HGWPb94DhD6UuZfWg > SELF 0.00000000 Waves

{ "type": 13, "id": "5RqBnXcxczvxs3VEZTCdgwXK4wXfhsvJUmac1WXS6N2A", "fee": 800000, "feeAssetId": null, "timestamp": 1700727505752, "version": 1, "sender": "3PRAEZqBjrUDaDvv45HGWPb94DhD6UuZfWg", "senderPublicKey": "DWfBoSph5SQ9fuKvBjSecymWnfmRnBFh9FYg2QEV6bwS", "proofs": [ "2xdPHMeGfVbcLxMco54t4fsHTpVGaX9L1kUnEdXLt1jdcR8K1SuuvYd3CuCKX57ujxSb5EDbuBNUYtZkwy9YhD65" ], "script": "base64:BgIhCAISBAoCCAESBgoECAEBBBIDCgEIEgMKAQgSAwoBCBIAFwASY29uZmlnQWRkcmVzc1N0b3JlAgZjb25maWcADWNvbmZpZ0FkZHJlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUSY29uZmlnQWRkcmVzc1N0b3JlAh9jaGlsZDogY29uZmlnIGFkZHJlc3Mgbm90IGZvdW5kAhZpbnZhbGlkIGNvbmZpZyBhZGRyZXNzAAZIRUlHSFQFBmhlaWdodAEOb3BBbGxvd2VkU3RvcmUBAm9wCQCsAgIJAKwCAgIDb3BfBQJvcAIIX2FsbG93ZWQADXZvdGluZ1Jlc3VsdHMJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUNY29uZmlnQWRkcmVzcwIWY29udHJhY3Rfdm90aW5nX3Jlc3VsdAIZbm8gY29udHJhY3Rfdm90aW5nX3Jlc3VsdAIeaW52YWxpZCBjb250cmFjdF92b3RpbmdfcmVzdWx0ARV3YXZlbGV0c1BlckJsb2NrU3RvcmUBB2FkZHJlc3MJAKwCAgUHYWRkcmVzcwITX3dhdmVsZXRzX3Blcl9ibG9jawEQc3RhcnRIZWlnaHRTdG9yZQEHYWRkcmVzcwkArAICBQdhZGRyZXNzAg1fc3RhcnRfaGVpZ2h0AQxjbGFpbWVkU3RvcmUBB2FkZHJlc3MJAKwCAgUHYWRkcmVzcwIQd2F2ZWxldHNfY2xhaW1lZAEPY2xhaW1lZFVTRFN0b3JlAQdhZGRyZXNzCQCsAgIFB2FkZHJlc3MCEV91c2R0bGV0c19jbGFpbWVkARFtYXhDbGFpbWFibGVTdG9yZQEHYWRkcmVzcwkArAICBQdhZGRyZXNzAg5fbWF4X2NsYWltYWJsZQEWbWF4Q2xhaW1hYmxlSXNVU0RTdG9yZQEHYWRkcmVzcwkArAICBQdhZGRyZXNzAhVfbWF4X2NsYWltYWJsZV9pc191c2QACHN1bVN0b3JlAhZ3YXZlbGV0c19wZXJfYmxvY2tfc3VtAAhtYXhTdG9yZQIWd2F2ZWxldHNfcGVyX2Jsb2NrX21heAAHbWF4aW11bQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQhtYXhTdG9yZQCw0MlaAAZvcmFjbGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQELdmFsdWVPckVsc2UCCQCiCAECBm9yYWNsZQIjM1BLa29qS2RkNkJCelRmMVJYYlFWZlVEcmFORlhYSEt6UUYCFmludmFsaWQgb3JhY2xlIGFkZHJlc3MADndhdmVQcmljZVN0b3JlCQELdmFsdWVPckVsc2UCCQCiCAECDndhdmUtcHJpY2Uta2V5AhclcyVzX19wcmljZV9fV0FWRVMtVVNEVAAJd2F2ZVByaWNlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUGb3JhY2xlBQ53YXZlUHJpY2VTdG9yZQIgV0FWRVMgcHJpY2UgaXMgbm90IGluIHRoZSBPcmFjbGUAB2RpZ2l0czgAgMLXLwEKd2F2ZXNUb1VTRAEFd2F2ZXMJAGsDBQV3YXZlcwUJd2F2ZVByaWNlBQdkaWdpdHM4AQp1c2RUb1dhdmVzAQV3YXZlcwkAawMFBXdhdmVzBQdkaWdpdHM4BQl3YXZlUHJpY2UABm9sZFN1bQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQhzdW1TdG9yZQAAAQxhdmFpbGFibGVOb3cBAnRvBAhwZXJCbG9jawkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEVd2F2ZWxldHNQZXJCbG9ja1N0b3JlAQUCdG8AAAQFdG90YWwDCQAAAgUIcGVyQmxvY2sAAAAABApmaXJzdEJsb2NrCQEFdmFsdWUBCQCfCAEJARBzdGFydEhlaWdodFN0b3JlAQUCdG8EBmJsb2NrcwkAZQIFBkhFSUdIVAUKZmlyc3RCbG9jawkAaAIFCHBlckJsb2NrBQZibG9ja3MEDGNsYWltZWRXQVZFUwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMY2xhaW1lZFN0b3JlAQUCdG8AAAQJcmVzdFdhdmVzCQBlAgUFdG90YWwFDGNsYWltZWRXQVZFUwQMbWF4Q2xhaW1hYmxlCQCfCAEJARFtYXhDbGFpbWFibGVTdG9yZQEFAnRvAwkBCWlzRGVmaW5lZAEFDG1heENsYWltYWJsZQQRbWF4Q2xhaW1hYmxlVmFsdWUJAQV2YWx1ZQEFDG1heENsYWltYWJsZQMJAQt2YWx1ZU9yRWxzZQIJAKAIAQkBFm1heENsYWltYWJsZUlzVVNEU3RvcmUBBQJ0bwcECmNsYWltZWRVU0QJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBD2NsYWltZWRVU0RTdG9yZQEFAnRvCQEKd2F2ZXNUb1VTRAEFDGNsYWltZWRXQVZFUwQHcmVzdFVTRAkAZQIFEW1heENsYWltYWJsZVZhbHVlBQpjbGFpbWVkVVNEBA5yZXN0VXNkSW5XYXZlcwkBCnVzZFRvV2F2ZXMBBQdyZXN0VVNECQCXAwEJAMwIAgUOcmVzdFVzZEluV2F2ZXMJAMwIAgUJcmVzdFdhdmVzBQNuaWwEBWdyYW50CQCXAwEJAMwIAgUFdG90YWwJAMwIAgURbWF4Q2xhaW1hYmxlVmFsdWUFA25pbAkAZQIFBWdyYW50BQxjbGFpbWVkV0FWRVMFCXJlc3RXYXZlcwETc2V0U2NoZWR1bGVJbnRlcm5hbAUCdG8Qd2F2ZWxldHNQZXJCbG9jawxtYXhDbGFpbWFibGURaXNNYXhDbGFpbWFibGVVU0QDc3VtBANhZHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQJ0bwkArAICAhFpbnZhbGlkIGFkZHJlc3M6IAUCdG8DCQAAAgUDYWRyBQNhZHIDCQBmAgAABRB3YXZlbGV0c1BlckJsb2NrCQACAQIfd2F2ZWxldHNQZXJCbG9jayBzaG91bGQgYmUgPj0gMAMDBRFpc01heENsYWltYWJsZVVTRAkAZgIAkE4FEHdhdmVsZXRzUGVyQmxvY2sHCQACAQI0MTAwMDAgd2F2ZWxldHMgaXMgYSBtaW5pbXVuIHRvIHVzZSB3aXRoaW4gVVNEIGxpbWl0cwMDBRFpc01heENsYWltYWJsZVVTRAkAZgIAwIQ9BQxtYXhDbGFpbWFibGUHCQACAQIuVVNEIGxpbWl0cyBzaG91bGQgc3RhcnRzIGZyb20gMTAwMDAwMCB1c2R0bGV0cwQNcGVyQmxvY2tTdG9yZQkBFXdhdmVsZXRzUGVyQmxvY2tTdG9yZQEFAnRvBAtvbGRQZXJCbG9jawkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ1wZXJCbG9ja1N0b3JlAAAEBm5ld1N1bQkAZAIJAGUCBQNzdW0FC29sZFBlckJsb2NrBRB3YXZlbGV0c1BlckJsb2NrBAxoZWlnaHRTdG9yZTEJARBzdGFydEhlaWdodFN0b3JlAQUCdG8EB2NsYWltZWQJAQxjbGFpbWVkU3RvcmUBBQJ0bwMJAGYCBQZuZXdTdW0FB21heGltdW0JAAIBAhBtYXhpbXVtIGV4Y2VlZGVkBBJtYXhDbGFpbWFibGVTdG9yZTEJARFtYXhDbGFpbWFibGVTdG9yZQEFAnRvBBdtYXhDbGFpbWFibGVJc1VTRFN0b3JlMQkBFm1heENsYWltYWJsZUlzVVNEU3RvcmUBBQJ0bwQRbWF4Q2xhaW1hYmxlRW50cnkDCQAAAgUMbWF4Q2xhaW1hYmxlAAAFA25pbAMJAGYCAAAFDG1heENsYWltYWJsZQkAzAgCCQELRGVsZXRlRW50cnkBBRJtYXhDbGFpbWFibGVTdG9yZTEJAMwIAgkBC0RlbGV0ZUVudHJ5AQUXbWF4Q2xhaW1hYmxlSXNVU0RTdG9yZTEFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSbWF4Q2xhaW1hYmxlU3RvcmUxBQxtYXhDbGFpbWFibGUJAMwIAgkBDEJvb2xlYW5FbnRyeQIFF21heENsYWltYWJsZUlzVVNEU3RvcmUxBRFpc01heENsYWltYWJsZVVTRAUDbmlsBBFhdmFpbGFibGVOb3dXYXZlcwkBDGF2YWlsYWJsZU5vdwEFAnRvCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUNcGVyQmxvY2tTdG9yZQUQd2F2ZWxldHNQZXJCbG9jawkAzAgCCQEMSW50ZWdlckVudHJ5AgUMaGVpZ2h0U3RvcmUxBQZIRUlHSFQJAMwIAgkBDEludGVnZXJFbnRyeQIFB2NsYWltZWQJAQEtAQURYXZhaWxhYmxlTm93V2F2ZXMJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ9jbGFpbWVkVVNEU3RvcmUBBQJ0bwkBAS0BCQEKd2F2ZXNUb1VTRAEFEWF2YWlsYWJsZU5vd1dhdmVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQhzdW1TdG9yZQUGbmV3U3VtBQNuaWwFEW1heENsYWltYWJsZUVudHJ5BQZuZXdTdW0JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4GAWkBCnNldFNjZWR1bGUCAnRvEHdhdmVsZXRzUGVyQmxvY2sECmRlcHJlY2F0ZWQCN2RvIG5vdCB1c2UuIHVzZSBzZXRTY2hlZHVsZSBvciBzZXRNdWx0aVNjaGVkdWxlIGluc3RlYWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAgZkZW5pZWQJARNzZXRTY2hlZHVsZUludGVybmFsBQUCdG8FEHdhdmVsZXRzUGVyQmxvY2sAAAcFBm9sZFN1bQFpAQtzZXRTY2hlZHVsZQQCdG8Qd2F2ZWxldHNQZXJCbG9jawxtYXhDbGFpbWFibGURaXNNYXhDbGFpbWFibGVVU0QDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAgZkZW5pZWQJARNzZXRTY2hlZHVsZUludGVybmFsBQUCdG8FEHdhdmVsZXRzUGVyQmxvY2sFDG1heENsYWltYWJsZQURaXNNYXhDbGFpbWFibGVVU0QFBm9sZFN1bQFpARBzZXRNdWx0aVNjaGVkdWxlAQlzY2hlZHVsZXMDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAgZkZW5pZWQKAQRmb2xkAgNhY2MIc2NoZWR1bGUDCQAAAgUIc2NoZWR1bGUCAAkAAgECEWludmFsaWQgc2NoZWR1bGVzBAVwYXJ0cwkAtQkCBQhzY2hlZHVsZQIBPQMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECKmludmFsaWQgZm9ybWF0OiBhZHI9d2F2ZWxldHNQZXJCbG9ja1ssbWF4XQQCdG8JAJEDAgUFcGFydHMAAAQNYmxvY2tNYXhQYXJ0cwkAtQkCCQCRAwIFBXBhcnRzAAECASwECHdhdmVsZXRzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQkAkQMCBQ1ibG9ja01heFBhcnRzAAAJAKwCAgIZaW52YWxpZCB3YXZldGV0cyBudW1iZXI6IAkAkQMCBQ1ibG9ja01heFBhcnRzAAAECyR0MDU1OTc1OTYzAwkAAAIJAJADAQUNYmxvY2tNYXhQYXJ0cwACBA1tYXhBbmRVc2RQYXJ0CQC1CQIJAJEDAgUNYmxvY2tNYXhQYXJ0cwABAgEkCQCUCgIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAtgkBCQCRAwIFDW1heEFuZFVzZFBhcnQAAAkArAICAhRpbnZhbGlkIG1heCBudW1iZXI6IAkAkQMCBQ1tYXhBbmRVc2RQYXJ0AAAJAAACCQCQAwEFDW1heEFuZFVzZFBhcnQAAgkAlAoCAAAHBAxtYXhDbGFpbWFibGUIBQskdDA1NTk3NTk2MwJfMQQRaXNNYXhDbGFpbWFibGVVU0QIBQskdDA1NTk3NTk2MwJfMgQLJHQwNTk4MTYwMTMFA2FjYwQEY21kcwgFCyR0MDU5ODE2MDEzAl8xBANzdW0IBQskdDA1OTgxNjAxMwJfMgQJYWRkcmVzc2VzCAULJHQwNTk4MTYwMTMCXzMDCQEJaXNEZWZpbmVkAQkAzwgCBQlhZGRyZXNzZXMFAnRvCQACAQkArAICAgtkdWJsaWNhdGU6IAUCdG8ECyR0MDYxMDQ2MTk5CQETc2V0U2NoZWR1bGVJbnRlcm5hbAUFAnRvBQh3YXZlbGV0cwUMbWF4Q2xhaW1hYmxlBRFpc01heENsYWltYWJsZVVTRAUDc3VtBAduZXdDbWRzCAULJHQwNjEwNDYxOTkCXzEEBm5ld1N1bQgFCyR0MDYxMDQ2MTk5Al8yCQCVCgMJAM4IAgUEY21kcwUHbmV3Q21kcwUGbmV3U3VtCQDOCAIFCWFkZHJlc3NlcwkAzAgCBQJ0bwUDbmlsBAskdDA2MjY0NjM0MAoAAiRsCQC1CQIFCXNjaGVkdWxlcwIBfAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJUKAwUDbmlsBQZvbGRTdW0FA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEEZm9sZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUBARjbWRzCAULJHQwNjI2NDYzNDACXzEEA3N1bQgFCyR0MDYyNjQ2MzQwAl8yBAJ4XwgFCyR0MDYyNjQ2MzQwAl8zCQCUCgIFBGNtZHMFA3N1bQFpAQ5jYW5jZWxTY2hlZHVsZQEHYWRkcmVzcwMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECBmRlbmllZAkBE3NldFNjaGVkdWxlSW50ZXJuYWwFBQdhZGRyZXNzAAAAAAcFBm9sZFN1bQFpAQ1jbGVhblNjaGVkdWxlAQdhZGRyZXNzBAxtYXhDbGFpbWFibGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBCQERbWF4Q2xhaW1hYmxlU3RvcmUBBQdhZGRyZXNzCQCsAgIJAKwCAgIDbm8gBQdhZGRyZXNzAg5fbWF4X2NsYWltYWJsZQMJAAACBQxtYXhDbGFpbWFibGUFDG1heENsYWltYWJsZQQOYXZhaWxhYmxlV0FWRVMJAQxhdmFpbGFibGVOb3cBBQdhZGRyZXNzBAZjaGVja3MDCQELdmFsdWVPckVsc2UCCQCgCAEJARZtYXhDbGFpbWFibGVJc1VTRFN0b3JlAQUHYWRkcmVzcwcECmNsYWltZWRVU0QJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBD2NsYWltZWRVU0RTdG9yZQEFB2FkZHJlc3MAAAQMYXZhaWxhYmxlVVNECQEKd2F2ZXNUb1VTRAEFDmF2YWlsYWJsZVdBVkVTBAxjbGFpbWFibGVVU0QJAGQCBQpjbGFpbWVkVVNEBQxhdmFpbGFibGVVU0QDCQBmAgUMbWF4Q2xhaW1hYmxlBQxjbGFpbWFibGVVU0QJAAIBCQCsAgIFB2FkZHJlc3MCKF9tYXhfY2xhaW1hYmxlIChVU0QpIGlzIG5vdCByZWFjaGVkIHllYXQFBHVuaXQEDGNsYWltZWRXQVZFUwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMY2xhaW1lZFN0b3JlAQUHYWRkcmVzcwAABA5jbGFpbWFibGVXQVZFUwkAZAIFDGNsYWltZWRXQVZFUwUOYXZhaWxhYmxlV0FWRVMDCQBmAgUMbWF4Q2xhaW1hYmxlBQ5jbGFpbWFibGVXQVZFUwkAAgEJAKwCAgUHYWRkcmVzcwIqX21heF9jbGFpbWFibGUgKFdBVkVTKSBpcyBub3QgcmVhY2hlZCB5ZWF0BQR1bml0AwkAAAIFBmNoZWNrcwUGY2hlY2tzCQETc2V0U2NoZWR1bGVJbnRlcm5hbAUFB2FkZHJlc3MAAAAABwUGb2xkU3VtCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBUNsYWltAAQFdG9BZHIIBQFpBmNhbGxlcgQCdG8JAKUIAQUFdG9BZHIEAWEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBCQEVd2F2ZWxldHNQZXJCbG9ja1N0b3JlAQUCdG8CEWFkZHJlc3Mgbm90IGZvdW5kAwkAAAIFAWEFAWEEBmFtb3VudAkBDGF2YWlsYWJsZU5vdwEFAnRvBAdwYXltZW50CQCXAwEJAMwIAggJAO8HAQUEdGhpcwlhdmFpbGFibGUJAMwIAgUGYW1vdW50BQNuaWwDCQBnAgAABQdwYXltZW50CQACAQIQbm90aGluZyB0byBjbGFpbQQNY2xhaW1lZFN0b3JlMQkBDGNsYWltZWRTdG9yZQEFAnRvBAdjbGFpbWVkCQELdmFsdWVPckVsc2UCCQCfCAEFDWNsYWltZWRTdG9yZTEAAAQQY2xhaW1lZFVTRFN0b3JlMQkBD2NsYWltZWRVU0RTdG9yZQEFAnRvBApjbGFpbWVkVVNECQELdmFsdWVPckVsc2UCCQCfCAEFEGNsYWltZWRVU0RTdG9yZTEJAQp3YXZlc1RvVVNEAQUHY2xhaW1lZAQKcGF5bWVudFVTRAkBCndhdmVzVG9VU0QBBQdwYXltZW50AwMJAQt2YWx1ZU9yRWxzZQIJAKAIAQkBFm1heENsYWltYWJsZUlzVVNEU3RvcmUBBQJ0bwcJAGYCAB4FCnBheW1lbnRVU0QHCQACAQIUdXNkIGFtb3VudCB0b28gc21hbGwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUFdG9BZHIFB3BheW1lbnQFBHVuaXQJAMwIAgkBDEludGVnZXJFbnRyeQIFDWNsYWltZWRTdG9yZTEJAGQCBQdjbGFpbWVkBQdwYXltZW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBjbGFpbWVkVVNEU3RvcmUxCQBkAgUKY2xhaW1lZFVTRAUKcGF5bWVudFVTRAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAMAQS9s=", "chainId": 87, "height": 3921648, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5xmAWeALcZEyvbiL63ebeKoHCgVBWBsjqk4C3LTK9anH Next: FbnTrrzW7Zhe96UdfBA4sJjZwLG1awbzZAqg268DGtMt Diff:
OldNewDifferences
206206 @Callable(i)
207207 func cleanSchedule (address) = {
208208 let maxClaimable = valueOrErrorMessage(getInteger(maxClaimableStore(address)), (("no " + address) + "_max_claimable"))
209- let availableWAVES = availableNow(address)
210- let checks = if (valueOrElse(getBoolean(maxClaimableIsUSDStore(address)), false))
209+ if ((maxClaimable == maxClaimable))
211210 then {
212- let claimedUSD = valueOrElse(getInteger(claimedUSDStore(address)), 0)
213- let availableUSD = wavesToUSD(availableWAVES)
214- let claimableUSD = (claimedUSD + availableUSD)
215- if ((maxClaimable > claimableUSD))
216- then throw((address + "_max_claimable (USD) is not reached yeat"))
217- else unit
211+ let availableWAVES = availableNow(address)
212+ let checks = if (valueOrElse(getBoolean(maxClaimableIsUSDStore(address)), false))
213+ then {
214+ let claimedUSD = valueOrElse(getInteger(claimedUSDStore(address)), 0)
215+ let availableUSD = wavesToUSD(availableWAVES)
216+ let claimableUSD = (claimedUSD + availableUSD)
217+ if ((maxClaimable > claimableUSD))
218+ then throw((address + "_max_claimable (USD) is not reached yeat"))
219+ else unit
220+ }
221+ else {
222+ let claimedWAVES = valueOrElse(getInteger(claimedStore(address)), 0)
223+ let claimableWAVES = (claimedWAVES + availableWAVES)
224+ if ((maxClaimable > claimableWAVES))
225+ then throw((address + "_max_claimable (WAVES) is not reached yeat"))
226+ else unit
227+ }
228+ if ((checks == checks))
229+ then setScheduleInternal(address, 0, 0, false, oldSum)
230+ else throw("Strict value is not equal to itself.")
218231 }
219- else {
220- let claimedWAVES = valueOrElse(getInteger(claimedStore(address)), 0)
221- let claimableWAVES = (claimedWAVES + availableWAVES)
222- if ((maxClaimable > claimableWAVES))
223- then throw((address + "_max_claimable (WAVES) is not reached yeat"))
224- else unit
225- }
226- setScheduleInternal(address, 0, 0, false, oldSum)
232+ else throw("Strict value is not equal to itself.")
227233 }
228234
229235
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let configAddressStore = "config"
55
66 let configAddress = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, configAddressStore), "child: config address not found")), "invalid config address")
77
88 let HEIGHT = height
99
1010 func opAllowedStore (op) = (("op_" + op) + "_allowed")
1111
1212
1313 let votingResults = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(configAddress, "contract_voting_result"), "no contract_voting_result")), "invalid contract_voting_result")
1414
1515 func waveletsPerBlockStore (address) = (address + "_wavelets_per_block")
1616
1717
1818 func startHeightStore (address) = (address + "_start_height")
1919
2020
2121 func claimedStore (address) = (address + "wavelets_claimed")
2222
2323
2424 func claimedUSDStore (address) = (address + "_usdtlets_claimed")
2525
2626
2727 func maxClaimableStore (address) = (address + "_max_claimable")
2828
2929
3030 func maxClaimableIsUSDStore (address) = (address + "_max_claimable_is_usd")
3131
3232
3333 let sumStore = "wavelets_per_block_sum"
3434
3535 let maxStore = "wavelets_per_block_max"
3636
3737 let maximum = valueOrElse(getInteger(this, maxStore), 189950000)
3838
3939 let oracle = valueOrErrorMessage(addressFromString(valueOrElse(getString("oracle"), "3PKkojKdd6BBzTf1RXbQVfUDraNFXXHKzQF")), "invalid oracle address")
4040
4141 let wavePriceStore = valueOrElse(getString("wave-price-key"), "%s%s__price__WAVES-USDT")
4242
4343 let wavePrice = valueOrErrorMessage(getInteger(oracle, wavePriceStore), "WAVES price is not in the Oracle")
4444
4545 let digits8 = 100000000
4646
4747 func wavesToUSD (waves) = fraction(waves, wavePrice, digits8)
4848
4949
5050 func usdToWaves (waves) = fraction(waves, digits8, wavePrice)
5151
5252
5353 let oldSum = valueOrElse(getInteger(sumStore), 0)
5454
5555 func availableNow (to) = {
5656 let perBlock = valueOrElse(getInteger(waveletsPerBlockStore(to)), 0)
5757 let total = if ((perBlock == 0))
5858 then 0
5959 else {
6060 let firstBlock = value(getInteger(startHeightStore(to)))
6161 let blocks = (HEIGHT - firstBlock)
6262 (perBlock * blocks)
6363 }
6464 let claimedWAVES = valueOrElse(getInteger(claimedStore(to)), 0)
6565 let restWaves = (total - claimedWAVES)
6666 let maxClaimable = getInteger(maxClaimableStore(to))
6767 if (isDefined(maxClaimable))
6868 then {
6969 let maxClaimableValue = value(maxClaimable)
7070 if (valueOrElse(getBoolean(maxClaimableIsUSDStore(to)), false))
7171 then {
7272 let claimedUSD = valueOrElse(getInteger(claimedUSDStore(to)), wavesToUSD(claimedWAVES))
7373 let restUSD = (maxClaimableValue - claimedUSD)
7474 let restUsdInWaves = usdToWaves(restUSD)
7575 min([restUsdInWaves, restWaves])
7676 }
7777 else {
7878 let grant = min([total, maxClaimableValue])
7979 (grant - claimedWAVES)
8080 }
8181 }
8282 else restWaves
8383 }
8484
8585
8686 func setScheduleInternal (to,waveletsPerBlock,maxClaimable,isMaxClaimableUSD,sum) = {
8787 let adr = valueOrErrorMessage(addressFromString(to), ("invalid address: " + to))
8888 if ((adr == adr))
8989 then if ((0 > waveletsPerBlock))
9090 then throw("waveletsPerBlock should be >= 0")
9191 else if (if (isMaxClaimableUSD)
9292 then (10000 > waveletsPerBlock)
9393 else false)
9494 then throw("10000 wavelets is a minimun to use within USD limits")
9595 else if (if (isMaxClaimableUSD)
9696 then (1000000 > maxClaimable)
9797 else false)
9898 then throw("USD limits should starts from 1000000 usdtlets")
9999 else {
100100 let perBlockStore = waveletsPerBlockStore(to)
101101 let oldPerBlock = valueOrElse(getInteger(perBlockStore), 0)
102102 let newSum = ((sum - oldPerBlock) + waveletsPerBlock)
103103 let heightStore1 = startHeightStore(to)
104104 let claimed = claimedStore(to)
105105 if ((newSum > maximum))
106106 then throw("maximum exceeded")
107107 else {
108108 let maxClaimableStore1 = maxClaimableStore(to)
109109 let maxClaimableIsUSDStore1 = maxClaimableIsUSDStore(to)
110110 let maxClaimableEntry = if ((maxClaimable == 0))
111111 then nil
112112 else if ((0 > maxClaimable))
113113 then [DeleteEntry(maxClaimableStore1), DeleteEntry(maxClaimableIsUSDStore1)]
114114 else [IntegerEntry(maxClaimableStore1, maxClaimable), BooleanEntry(maxClaimableIsUSDStore1, isMaxClaimableUSD)]
115115 let availableNowWaves = availableNow(to)
116116 $Tuple2(([IntegerEntry(perBlockStore, waveletsPerBlock), IntegerEntry(heightStore1, HEIGHT), IntegerEntry(claimed, -(availableNowWaves)), IntegerEntry(claimedUSDStore(to), -(wavesToUSD(availableNowWaves))), IntegerEntry(sumStore, newSum)] ++ maxClaimableEntry), newSum)
117117 }
118118 }
119119 else throw("Strict value is not equal to itself.")
120120 }
121121
122122
123123 @Callable(i)
124124 func setScedule (to,waveletsPerBlock) = {
125125 let deprecated = "do not use. use setSchedule or setMultiSchedule instead"
126126 if ((i.caller != this))
127127 then throw("denied")
128128 else setScheduleInternal(to, waveletsPerBlock, 0, false, oldSum)
129129 }
130130
131131
132132
133133 @Callable(i)
134134 func setSchedule (to,waveletsPerBlock,maxClaimable,isMaxClaimableUSD) = if ((i.caller != this))
135135 then throw("denied")
136136 else setScheduleInternal(to, waveletsPerBlock, maxClaimable, isMaxClaimableUSD, oldSum)
137137
138138
139139
140140 @Callable(i)
141141 func setMultiSchedule (schedules) = if ((i.caller != this))
142142 then throw("denied")
143143 else {
144144 func fold (acc,schedule) = if ((schedule == ""))
145145 then throw("invalid schedules")
146146 else {
147147 let parts = split(schedule, "=")
148148 if ((size(parts) != 2))
149149 then throw("invalid format: adr=waveletsPerBlock[,max]")
150150 else {
151151 let to = parts[0]
152152 let blockMaxParts = split(parts[1], ",")
153153 let wavelets = valueOrErrorMessage(parseInt(blockMaxParts[0]), ("invalid wavetets number: " + blockMaxParts[0]))
154154 let $t055975963 = if ((size(blockMaxParts) == 2))
155155 then {
156156 let maxAndUsdPart = split(blockMaxParts[1], "$")
157157 $Tuple2(valueOrErrorMessage(parseInt(maxAndUsdPart[0]), ("invalid max number: " + maxAndUsdPart[0])), (size(maxAndUsdPart) == 2))
158158 }
159159 else $Tuple2(0, false)
160160 let maxClaimable = $t055975963._1
161161 let isMaxClaimableUSD = $t055975963._2
162162 let $t059816013 = acc
163163 let cmds = $t059816013._1
164164 let sum = $t059816013._2
165165 let addresses = $t059816013._3
166166 if (isDefined(indexOf(addresses, to)))
167167 then throw(("dublicate: " + to))
168168 else {
169169 let $t061046199 = setScheduleInternal(to, wavelets, maxClaimable, isMaxClaimableUSD, sum)
170170 let newCmds = $t061046199._1
171171 let newSum = $t061046199._2
172172 $Tuple3((cmds ++ newCmds), newSum, (addresses ++ [to]))
173173 }
174174 }
175175 }
176176
177177 let $t062646340 = {
178178 let $l = split(schedules, "|")
179179 let $s = size($l)
180180 let $acc0 = $Tuple3(nil, oldSum, nil)
181181 func $f0_1 ($a,$i) = if (($i >= $s))
182182 then $a
183183 else fold($a, $l[$i])
184184
185185 func $f0_2 ($a,$i) = if (($i >= $s))
186186 then $a
187187 else throw("List size exceeds 20")
188188
189189 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
190190 }
191191 let cmds = $t062646340._1
192192 let sum = $t062646340._2
193193 let x_ = $t062646340._3
194194 $Tuple2(cmds, sum)
195195 }
196196
197197
198198
199199 @Callable(i)
200200 func cancelSchedule (address) = if ((i.caller != this))
201201 then throw("denied")
202202 else setScheduleInternal(address, 0, 0, false, oldSum)
203203
204204
205205
206206 @Callable(i)
207207 func cleanSchedule (address) = {
208208 let maxClaimable = valueOrErrorMessage(getInteger(maxClaimableStore(address)), (("no " + address) + "_max_claimable"))
209- let availableWAVES = availableNow(address)
210- let checks = if (valueOrElse(getBoolean(maxClaimableIsUSDStore(address)), false))
209+ if ((maxClaimable == maxClaimable))
211210 then {
212- let claimedUSD = valueOrElse(getInteger(claimedUSDStore(address)), 0)
213- let availableUSD = wavesToUSD(availableWAVES)
214- let claimableUSD = (claimedUSD + availableUSD)
215- if ((maxClaimable > claimableUSD))
216- then throw((address + "_max_claimable (USD) is not reached yeat"))
217- else unit
211+ let availableWAVES = availableNow(address)
212+ let checks = if (valueOrElse(getBoolean(maxClaimableIsUSDStore(address)), false))
213+ then {
214+ let claimedUSD = valueOrElse(getInteger(claimedUSDStore(address)), 0)
215+ let availableUSD = wavesToUSD(availableWAVES)
216+ let claimableUSD = (claimedUSD + availableUSD)
217+ if ((maxClaimable > claimableUSD))
218+ then throw((address + "_max_claimable (USD) is not reached yeat"))
219+ else unit
220+ }
221+ else {
222+ let claimedWAVES = valueOrElse(getInteger(claimedStore(address)), 0)
223+ let claimableWAVES = (claimedWAVES + availableWAVES)
224+ if ((maxClaimable > claimableWAVES))
225+ then throw((address + "_max_claimable (WAVES) is not reached yeat"))
226+ else unit
227+ }
228+ if ((checks == checks))
229+ then setScheduleInternal(address, 0, 0, false, oldSum)
230+ else throw("Strict value is not equal to itself.")
218231 }
219- else {
220- let claimedWAVES = valueOrElse(getInteger(claimedStore(address)), 0)
221- let claimableWAVES = (claimedWAVES + availableWAVES)
222- if ((maxClaimable > claimableWAVES))
223- then throw((address + "_max_claimable (WAVES) is not reached yeat"))
224- else unit
225- }
226- setScheduleInternal(address, 0, 0, false, oldSum)
232+ else throw("Strict value is not equal to itself.")
227233 }
228234
229235
230236
231237 @Callable(i)
232238 func Claim () = {
233239 let toAdr = i.caller
234240 let to = toString(toAdr)
235241 let a = valueOrErrorMessage(getInteger(waveletsPerBlockStore(to)), "address not found")
236242 if ((a == a))
237243 then {
238244 let amount = availableNow(to)
239245 let payment = min([wavesBalance(this).available, amount])
240246 if ((0 >= payment))
241247 then throw("nothing to claim")
242248 else {
243249 let claimedStore1 = claimedStore(to)
244250 let claimed = valueOrElse(getInteger(claimedStore1), 0)
245251 let claimedUSDStore1 = claimedUSDStore(to)
246252 let claimedUSD = valueOrElse(getInteger(claimedUSDStore1), wavesToUSD(claimed))
247253 let paymentUSD = wavesToUSD(payment)
248254 if (if (valueOrElse(getBoolean(maxClaimableIsUSDStore(to)), false))
249255 then (30 > paymentUSD)
250256 else false)
251257 then throw("usd amount too small")
252258 else [ScriptTransfer(toAdr, payment, unit), IntegerEntry(claimedStore1, (claimed + payment)), IntegerEntry(claimedUSDStore1, (claimedUSD + paymentUSD))]
253259 }
254260 }
255261 else throw("Strict value is not equal to itself.")
256262 }
257263
258264

github/deemru/w8io/6500d08 
34.98 ms