tx · 5xmAWeALcZEyvbiL63ebeKoHCgVBWBsjqk4C3LTK9anH

3PRAEZqBjrUDaDvv45HGWPb94DhD6UuZfWg:  -0.01200000 Waves

2023.11.23 11:00 [3921631] smart account 3PRAEZqBjrUDaDvv45HGWPb94DhD6UuZfWg > SELF 0.00000000 Waves

{ "type": 13, "id": "5xmAWeALcZEyvbiL63ebeKoHCgVBWBsjqk4C3LTK9anH", "fee": 1200000, "feeAssetId": null, "timestamp": 1700726490528, "version": 1, "sender": "3PRAEZqBjrUDaDvv45HGWPb94DhD6UuZfWg", "senderPublicKey": "DWfBoSph5SQ9fuKvBjSecymWnfmRnBFh9FYg2QEV6bwS", "proofs": [ "5WihNJrSgVmYjrb9Xeqv7pB9kVdY82BHi5MAxiTm6j287cTwMprMLuZ4js7TjmskdS8XkuMcJXH71wHZsWpA6ftd" ], "script": "base64:BgIhCAISBAoCCAESBgoECAEBBBIDCgEIEgMKAQgSAwoBCBIAFwASY29uZmlnQWRkcmVzc1N0b3JlAgZjb25maWcADWNvbmZpZ0FkZHJlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUSY29uZmlnQWRkcmVzc1N0b3JlAh9jaGlsZDogY29uZmlnIGFkZHJlc3Mgbm90IGZvdW5kAhZpbnZhbGlkIGNvbmZpZyBhZGRyZXNzAAZIRUlHSFQFBmhlaWdodAEOb3BBbGxvd2VkU3RvcmUBAm9wCQCsAgIJAKwCAgIDb3BfBQJvcAIIX2FsbG93ZWQADXZvdGluZ1Jlc3VsdHMJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUNY29uZmlnQWRkcmVzcwIWY29udHJhY3Rfdm90aW5nX3Jlc3VsdAIZbm8gY29udHJhY3Rfdm90aW5nX3Jlc3VsdAIeaW52YWxpZCBjb250cmFjdF92b3RpbmdfcmVzdWx0ARV3YXZlbGV0c1BlckJsb2NrU3RvcmUBB2FkZHJlc3MJAKwCAgUHYWRkcmVzcwITX3dhdmVsZXRzX3Blcl9ibG9jawEQc3RhcnRIZWlnaHRTdG9yZQEHYWRkcmVzcwkArAICBQdhZGRyZXNzAg1fc3RhcnRfaGVpZ2h0AQxjbGFpbWVkU3RvcmUBB2FkZHJlc3MJAKwCAgUHYWRkcmVzcwIQd2F2ZWxldHNfY2xhaW1lZAEPY2xhaW1lZFVTRFN0b3JlAQdhZGRyZXNzCQCsAgIFB2FkZHJlc3MCEV91c2R0bGV0c19jbGFpbWVkARFtYXhDbGFpbWFibGVTdG9yZQEHYWRkcmVzcwkArAICBQdhZGRyZXNzAg5fbWF4X2NsYWltYWJsZQEWbWF4Q2xhaW1hYmxlSXNVU0RTdG9yZQEHYWRkcmVzcwkArAICBQdhZGRyZXNzAhVfbWF4X2NsYWltYWJsZV9pc191c2QACHN1bVN0b3JlAhZ3YXZlbGV0c19wZXJfYmxvY2tfc3VtAAhtYXhTdG9yZQIWd2F2ZWxldHNfcGVyX2Jsb2NrX21heAAHbWF4aW11bQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQhtYXhTdG9yZQCw0MlaAAZvcmFjbGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQELdmFsdWVPckVsc2UCCQCiCAECBm9yYWNsZQIjM1BLa29qS2RkNkJCelRmMVJYYlFWZlVEcmFORlhYSEt6UUYCFmludmFsaWQgb3JhY2xlIGFkZHJlc3MADndhdmVQcmljZVN0b3JlCQELdmFsdWVPckVsc2UCCQCiCAECDndhdmUtcHJpY2Uta2V5AhclcyVzX19wcmljZV9fV0FWRVMtVVNEVAAJd2F2ZVByaWNlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUGb3JhY2xlBQ53YXZlUHJpY2VTdG9yZQIgV0FWRVMgcHJpY2UgaXMgbm90IGluIHRoZSBPcmFjbGUAB2RpZ2l0czgAgMLXLwEKd2F2ZXNUb1VTRAEFd2F2ZXMJAGsDBQV3YXZlcwUJd2F2ZVByaWNlBQdkaWdpdHM4AQp1c2RUb1dhdmVzAQV3YXZlcwkAawMFBXdhdmVzBQdkaWdpdHM4BQl3YXZlUHJpY2UABm9sZFN1bQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQhzdW1TdG9yZQAAAQxhdmFpbGFibGVOb3cBAnRvBAhwZXJCbG9jawkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEVd2F2ZWxldHNQZXJCbG9ja1N0b3JlAQUCdG8AAAQFdG90YWwDCQAAAgUIcGVyQmxvY2sAAAAABApmaXJzdEJsb2NrCQEFdmFsdWUBCQCfCAEJARBzdGFydEhlaWdodFN0b3JlAQUCdG8EBmJsb2NrcwkAZQIFBkhFSUdIVAUKZmlyc3RCbG9jawkAaAIFCHBlckJsb2NrBQZibG9ja3MEDGNsYWltZWRXQVZFUwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMY2xhaW1lZFN0b3JlAQUCdG8AAAQJcmVzdFdhdmVzCQBlAgUFdG90YWwFDGNsYWltZWRXQVZFUwQMbWF4Q2xhaW1hYmxlCQCfCAEJARFtYXhDbGFpbWFibGVTdG9yZQEFAnRvAwkBCWlzRGVmaW5lZAEFDG1heENsYWltYWJsZQQRbWF4Q2xhaW1hYmxlVmFsdWUJAQV2YWx1ZQEFDG1heENsYWltYWJsZQMJAQt2YWx1ZU9yRWxzZQIJAKAIAQkBFm1heENsYWltYWJsZUlzVVNEU3RvcmUBBQJ0bwcECmNsYWltZWRVU0QJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBD2NsYWltZWRVU0RTdG9yZQEFAnRvCQEKd2F2ZXNUb1VTRAEFDGNsYWltZWRXQVZFUwQHcmVzdFVTRAkAZQIFEW1heENsYWltYWJsZVZhbHVlBQpjbGFpbWVkVVNEBA5yZXN0VXNkSW5XYXZlcwkBCnVzZFRvV2F2ZXMBBQdyZXN0VVNECQCXAwEJAMwIAgUOcmVzdFVzZEluV2F2ZXMJAMwIAgUJcmVzdFdhdmVzBQNuaWwEBWdyYW50CQCXAwEJAMwIAgUFdG90YWwJAMwIAgURbWF4Q2xhaW1hYmxlVmFsdWUFA25pbAkAZQIFBWdyYW50BQxjbGFpbWVkV0FWRVMFCXJlc3RXYXZlcwETc2V0U2NoZWR1bGVJbnRlcm5hbAUCdG8Qd2F2ZWxldHNQZXJCbG9jawxtYXhDbGFpbWFibGURaXNNYXhDbGFpbWFibGVVU0QDc3VtBANhZHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQJ0bwkArAICAhFpbnZhbGlkIGFkZHJlc3M6IAUCdG8DCQAAAgUDYWRyBQNhZHIDCQBmAgAABRB3YXZlbGV0c1BlckJsb2NrCQACAQIfd2F2ZWxldHNQZXJCbG9jayBzaG91bGQgYmUgPj0gMAMDBRFpc01heENsYWltYWJsZVVTRAkAZgIAkE4FEHdhdmVsZXRzUGVyQmxvY2sHCQACAQI0MTAwMDAgd2F2ZWxldHMgaXMgYSBtaW5pbXVuIHRvIHVzZSB3aXRoaW4gVVNEIGxpbWl0cwMDBRFpc01heENsYWltYWJsZVVTRAkAZgIAwIQ9BQxtYXhDbGFpbWFibGUHCQACAQIuVVNEIGxpbWl0cyBzaG91bGQgc3RhcnRzIGZyb20gMTAwMDAwMCB1c2R0bGV0cwQNcGVyQmxvY2tTdG9yZQkBFXdhdmVsZXRzUGVyQmxvY2tTdG9yZQEFAnRvBAtvbGRQZXJCbG9jawkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ1wZXJCbG9ja1N0b3JlAAAEBm5ld1N1bQkAZAIJAGUCBQNzdW0FC29sZFBlckJsb2NrBRB3YXZlbGV0c1BlckJsb2NrBAxoZWlnaHRTdG9yZTEJARBzdGFydEhlaWdodFN0b3JlAQUCdG8EB2NsYWltZWQJAQxjbGFpbWVkU3RvcmUBBQJ0bwMJAGYCBQZuZXdTdW0FB21heGltdW0JAAIBAhBtYXhpbXVtIGV4Y2VlZGVkBBJtYXhDbGFpbWFibGVTdG9yZTEJARFtYXhDbGFpbWFibGVTdG9yZQEFAnRvBBdtYXhDbGFpbWFibGVJc1VTRFN0b3JlMQkBFm1heENsYWltYWJsZUlzVVNEU3RvcmUBBQJ0bwQRbWF4Q2xhaW1hYmxlRW50cnkDCQAAAgUMbWF4Q2xhaW1hYmxlAAAFA25pbAMJAGYCAAAFDG1heENsYWltYWJsZQkAzAgCCQELRGVsZXRlRW50cnkBBRJtYXhDbGFpbWFibGVTdG9yZTEJAMwIAgkBC0RlbGV0ZUVudHJ5AQUXbWF4Q2xhaW1hYmxlSXNVU0RTdG9yZTEFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSbWF4Q2xhaW1hYmxlU3RvcmUxBQxtYXhDbGFpbWFibGUJAMwIAgkBDEJvb2xlYW5FbnRyeQIFF21heENsYWltYWJsZUlzVVNEU3RvcmUxBRFpc01heENsYWltYWJsZVVTRAUDbmlsBBFhdmFpbGFibGVOb3dXYXZlcwkBDGF2YWlsYWJsZU5vdwEFAnRvCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUNcGVyQmxvY2tTdG9yZQUQd2F2ZWxldHNQZXJCbG9jawkAzAgCCQEMSW50ZWdlckVudHJ5AgUMaGVpZ2h0U3RvcmUxBQZIRUlHSFQJAMwIAgkBDEludGVnZXJFbnRyeQIFB2NsYWltZWQJAQEtAQURYXZhaWxhYmxlTm93V2F2ZXMJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ9jbGFpbWVkVVNEU3RvcmUBBQJ0bwkBAS0BCQEKd2F2ZXNUb1VTRAEFEWF2YWlsYWJsZU5vd1dhdmVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQhzdW1TdG9yZQUGbmV3U3VtBQNuaWwFEW1heENsYWltYWJsZUVudHJ5BQZuZXdTdW0JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4GAWkBCnNldFNjZWR1bGUCAnRvEHdhdmVsZXRzUGVyQmxvY2sECmRlcHJlY2F0ZWQCN2RvIG5vdCB1c2UuIHVzZSBzZXRTY2hlZHVsZSBvciBzZXRNdWx0aVNjaGVkdWxlIGluc3RlYWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAgZkZW5pZWQJARNzZXRTY2hlZHVsZUludGVybmFsBQUCdG8FEHdhdmVsZXRzUGVyQmxvY2sAAAcFBm9sZFN1bQFpAQtzZXRTY2hlZHVsZQQCdG8Qd2F2ZWxldHNQZXJCbG9jawxtYXhDbGFpbWFibGURaXNNYXhDbGFpbWFibGVVU0QDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAgZkZW5pZWQJARNzZXRTY2hlZHVsZUludGVybmFsBQUCdG8FEHdhdmVsZXRzUGVyQmxvY2sFDG1heENsYWltYWJsZQURaXNNYXhDbGFpbWFibGVVU0QFBm9sZFN1bQFpARBzZXRNdWx0aVNjaGVkdWxlAQlzY2hlZHVsZXMDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAgZkZW5pZWQKAQRmb2xkAgNhY2MIc2NoZWR1bGUDCQAAAgUIc2NoZWR1bGUCAAkAAgECEWludmFsaWQgc2NoZWR1bGVzBAVwYXJ0cwkAtQkCBQhzY2hlZHVsZQIBPQMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECKmludmFsaWQgZm9ybWF0OiBhZHI9d2F2ZWxldHNQZXJCbG9ja1ssbWF4XQQCdG8JAJEDAgUFcGFydHMAAAQNYmxvY2tNYXhQYXJ0cwkAtQkCCQCRAwIFBXBhcnRzAAECASwECHdhdmVsZXRzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQkAkQMCBQ1ibG9ja01heFBhcnRzAAAJAKwCAgIZaW52YWxpZCB3YXZldGV0cyBudW1iZXI6IAkAkQMCBQ1ibG9ja01heFBhcnRzAAAECyR0MDU1OTc1OTYzAwkAAAIJAJADAQUNYmxvY2tNYXhQYXJ0cwACBA1tYXhBbmRVc2RQYXJ0CQC1CQIJAJEDAgUNYmxvY2tNYXhQYXJ0cwABAgEkCQCUCgIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAtgkBCQCRAwIFDW1heEFuZFVzZFBhcnQAAAkArAICAhRpbnZhbGlkIG1heCBudW1iZXI6IAkAkQMCBQ1tYXhBbmRVc2RQYXJ0AAAJAAACCQCQAwEFDW1heEFuZFVzZFBhcnQAAgkAlAoCAAAHBAxtYXhDbGFpbWFibGUIBQskdDA1NTk3NTk2MwJfMQQRaXNNYXhDbGFpbWFibGVVU0QIBQskdDA1NTk3NTk2MwJfMgQLJHQwNTk4MTYwMTMFA2FjYwQEY21kcwgFCyR0MDU5ODE2MDEzAl8xBANzdW0IBQskdDA1OTgxNjAxMwJfMgQJYWRkcmVzc2VzCAULJHQwNTk4MTYwMTMCXzMDCQEJaXNEZWZpbmVkAQkAzwgCBQlhZGRyZXNzZXMFAnRvCQACAQkArAICAgtkdWJsaWNhdGU6IAUCdG8ECyR0MDYxMDQ2MTk5CQETc2V0U2NoZWR1bGVJbnRlcm5hbAUFAnRvBQh3YXZlbGV0cwUMbWF4Q2xhaW1hYmxlBRFpc01heENsYWltYWJsZVVTRAUDc3VtBAduZXdDbWRzCAULJHQwNjEwNDYxOTkCXzEEBm5ld1N1bQgFCyR0MDYxMDQ2MTk5Al8yCQCVCgMJAM4IAgUEY21kcwUHbmV3Q21kcwUGbmV3U3VtCQDOCAIFCWFkZHJlc3NlcwkAzAgCBQJ0bwUDbmlsBAskdDA2MjY0NjM0MAoAAiRsCQC1CQIFCXNjaGVkdWxlcwIBfAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJUKAwUDbmlsBQZvbGRTdW0FA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEEZm9sZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUBARjbWRzCAULJHQwNjI2NDYzNDACXzEEA3N1bQgFCyR0MDYyNjQ2MzQwAl8yBAJ4XwgFCyR0MDYyNjQ2MzQwAl8zCQCUCgIFBGNtZHMFA3N1bQFpAQ5jYW5jZWxTY2hlZHVsZQEHYWRkcmVzcwMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECBmRlbmllZAkBE3NldFNjaGVkdWxlSW50ZXJuYWwFBQdhZGRyZXNzAAAAAAcFBm9sZFN1bQFpAQ1jbGVhblNjaGVkdWxlAQdhZGRyZXNzBAxtYXhDbGFpbWFibGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBCQERbWF4Q2xhaW1hYmxlU3RvcmUBBQdhZGRyZXNzCQCsAgIJAKwCAgIDbm8gBQdhZGRyZXNzAg5fbWF4X2NsYWltYWJsZQQOYXZhaWxhYmxlV0FWRVMJAQxhdmFpbGFibGVOb3cBBQdhZGRyZXNzBAZjaGVja3MDCQELdmFsdWVPckVsc2UCCQCgCAEJARZtYXhDbGFpbWFibGVJc1VTRFN0b3JlAQUHYWRkcmVzcwcECmNsYWltZWRVU0QJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBD2NsYWltZWRVU0RTdG9yZQEFB2FkZHJlc3MAAAQMYXZhaWxhYmxlVVNECQEKd2F2ZXNUb1VTRAEFDmF2YWlsYWJsZVdBVkVTBAxjbGFpbWFibGVVU0QJAGQCBQpjbGFpbWVkVVNEBQxhdmFpbGFibGVVU0QDCQBmAgUMbWF4Q2xhaW1hYmxlBQxjbGFpbWFibGVVU0QJAAIBCQCsAgIFB2FkZHJlc3MCKF9tYXhfY2xhaW1hYmxlIChVU0QpIGlzIG5vdCByZWFjaGVkIHllYXQFBHVuaXQEDGNsYWltZWRXQVZFUwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMY2xhaW1lZFN0b3JlAQUHYWRkcmVzcwAABA5jbGFpbWFibGVXQVZFUwkAZAIFDGNsYWltZWRXQVZFUwUOYXZhaWxhYmxlV0FWRVMDCQBmAgUMbWF4Q2xhaW1hYmxlBQ5jbGFpbWFibGVXQVZFUwkAAgEJAKwCAgUHYWRkcmVzcwIqX21heF9jbGFpbWFibGUgKFdBVkVTKSBpcyBub3QgcmVhY2hlZCB5ZWF0BQR1bml0CQETc2V0U2NoZWR1bGVJbnRlcm5hbAUFB2FkZHJlc3MAAAAABwUGb2xkU3VtAWkBBUNsYWltAAQFdG9BZHIIBQFpBmNhbGxlcgQCdG8JAKUIAQUFdG9BZHIEAWEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBCQEVd2F2ZWxldHNQZXJCbG9ja1N0b3JlAQUCdG8CEWFkZHJlc3Mgbm90IGZvdW5kAwkAAAIFAWEFAWEEBmFtb3VudAkBDGF2YWlsYWJsZU5vdwEFAnRvBAdwYXltZW50CQCXAwEJAMwIAggJAO8HAQUEdGhpcwlhdmFpbGFibGUJAMwIAgUGYW1vdW50BQNuaWwDCQBnAgAABQdwYXltZW50CQACAQIQbm90aGluZyB0byBjbGFpbQQNY2xhaW1lZFN0b3JlMQkBDGNsYWltZWRTdG9yZQEFAnRvBAdjbGFpbWVkCQELdmFsdWVPckVsc2UCCQCfCAEFDWNsYWltZWRTdG9yZTEAAAQQY2xhaW1lZFVTRFN0b3JlMQkBD2NsYWltZWRVU0RTdG9yZQEFAnRvBApjbGFpbWVkVVNECQELdmFsdWVPckVsc2UCCQCfCAEFEGNsYWltZWRVU0RTdG9yZTEJAQp3YXZlc1RvVVNEAQUHY2xhaW1lZAQKcGF5bWVudFVTRAkBCndhdmVzVG9VU0QBBQdwYXltZW50AwMJAQt2YWx1ZU9yRWxzZQIJAKAIAQkBFm1heENsYWltYWJsZUlzVVNEU3RvcmUBBQJ0bwcJAGYCAB4FCnBheW1lbnRVU0QHCQACAQIUdXNkIGFtb3VudCB0b28gc21hbGwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUFdG9BZHIFB3BheW1lbnQFBHVuaXQJAMwIAgkBDEludGVnZXJFbnRyeQIFDWNsYWltZWRTdG9yZTEJAGQCBQdjbGFpbWVkBQdwYXltZW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBjbGFpbWVkVVNEU3RvcmUxCQBkAgUKY2xhaW1lZFVTRAUKcGF5bWVudFVTRAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAKD/Y5Q=", "chainId": 87, "height": 3921631, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4piAUSAxDixK9c1R6cVFgnGG4DxGmPAPHcoNAjrxRcRz Next: 5RqBnXcxczvxs3VEZTCdgwXK4wXfhsvJUmac1WXS6N2A Diff:
OldNewDifferences
3434
3535 let maxStore = "wavelets_per_block_max"
3636
37-let maximum = valueOrElse(getInteger(this, "wavelets_per_block_max"), 189950000)
37+let maximum = valueOrElse(getInteger(this, maxStore), 189950000)
3838
3939 let oracle = valueOrErrorMessage(addressFromString(valueOrElse(getString("oracle"), "3PKkojKdd6BBzTf1RXbQVfUDraNFXXHKzQF")), "invalid oracle address")
4040
121121
122122
123123 @Callable(i)
124-func setScedule (to,waveletsPerBlock) = if ((i.caller != this))
125- then throw("denied")
126- else setScheduleInternal(to, waveletsPerBlock, 0, false, oldSum)
124+func setScedule (to,waveletsPerBlock) = {
125+ let deprecated = "do not use. use setSchedule or setMultiSchedule instead"
126+ if ((i.caller != this))
127+ then throw("denied")
128+ else setScheduleInternal(to, waveletsPerBlock, 0, false, oldSum)
129+ }
127130
128131
129132
148151 let to = parts[0]
149152 let blockMaxParts = split(parts[1], ",")
150153 let wavelets = valueOrErrorMessage(parseInt(blockMaxParts[0]), ("invalid wavetets number: " + blockMaxParts[0]))
151- let $t055805946 = if ((size(blockMaxParts) == 2))
154+ let $t055975963 = if ((size(blockMaxParts) == 2))
152155 then {
153156 let maxAndUsdPart = split(blockMaxParts[1], "$")
154157 $Tuple2(valueOrErrorMessage(parseInt(maxAndUsdPart[0]), ("invalid max number: " + maxAndUsdPart[0])), (size(maxAndUsdPart) == 2))
155158 }
156159 else $Tuple2(0, false)
157- let maxClaimable = $t055805946._1
158- let isMaxClaimableUSD = $t055805946._2
159- let $t059645996 = acc
160- let cmds = $t059645996._1
161- let sum = $t059645996._2
162- let addresses = $t059645996._3
160+ let maxClaimable = $t055975963._1
161+ let isMaxClaimableUSD = $t055975963._2
162+ let $t059816013 = acc
163+ let cmds = $t059816013._1
164+ let sum = $t059816013._2
165+ let addresses = $t059816013._3
163166 if (isDefined(indexOf(addresses, to)))
164167 then throw(("dublicate: " + to))
165168 else {
166- let $t060876182 = setScheduleInternal(to, wavelets, maxClaimable, isMaxClaimableUSD, sum)
167- let newCmds = $t060876182._1
168- let newSum = $t060876182._2
169+ let $t061046199 = setScheduleInternal(to, wavelets, maxClaimable, isMaxClaimableUSD, sum)
170+ let newCmds = $t061046199._1
171+ let newSum = $t061046199._2
169172 $Tuple3((cmds ++ newCmds), newSum, (addresses ++ [to]))
170173 }
171174 }
172175 }
173176
174- let $t062476323 = {
177+ let $t062646340 = {
175178 let $l = split(schedules, "|")
176179 let $s = size($l)
177180 let $acc0 = $Tuple3(nil, oldSum, nil)
185188
186189 $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)
187190 }
188- let cmds = $t062476323._1
189- let sum = $t062476323._2
190- let x_ = $t062476323._3
191+ let cmds = $t062646340._1
192+ let sum = $t062646340._2
193+ let x_ = $t062646340._3
191194 $Tuple2(cmds, sum)
192195 }
196+
197+
198+
199+@Callable(i)
200+func cancelSchedule (address) = if ((i.caller != this))
201+ then throw("denied")
202+ else setScheduleInternal(address, 0, 0, false, oldSum)
203+
204+
205+
206+@Callable(i)
207+func cleanSchedule (address) = {
208+ let maxClaimable = valueOrErrorMessage(getInteger(maxClaimableStore(address)), (("no " + address) + "_max_claimable"))
209+ let availableWAVES = availableNow(address)
210+ let checks = if (valueOrElse(getBoolean(maxClaimableIsUSDStore(address)), false))
211+ 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
218+ }
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)
227+ }
193228
194229
195230
221256 }
222257
223258
224-@Verifier(tx)
225-func verify () = {
226- let byVoting = {
227- let enabled = valueOrElse(getBoolean(configAddress, opAllowedStore("child_governance_apply_tx")), true)
228- if (!(enabled))
229- then throw("tx application throw governance not enabled")
230- else (height >= getIntegerValue(votingResults, ((("proposal_allow_broadcast_" + toString(this)) + "_") + toBase58String(tx.id))))
231- }
232- if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
233- then true
234- else byVoting
235- }
236-
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
37-let maximum = valueOrElse(getInteger(this, "wavelets_per_block_max"), 189950000)
37+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)
124-func setScedule (to,waveletsPerBlock) = if ((i.caller != this))
125- then throw("denied")
126- else setScheduleInternal(to, waveletsPerBlock, 0, false, oldSum)
124+func setScedule (to,waveletsPerBlock) = {
125+ let deprecated = "do not use. use setSchedule or setMultiSchedule instead"
126+ if ((i.caller != this))
127+ then throw("denied")
128+ else setScheduleInternal(to, waveletsPerBlock, 0, false, oldSum)
129+ }
127130
128131
129132
130133 @Callable(i)
131134 func setSchedule (to,waveletsPerBlock,maxClaimable,isMaxClaimableUSD) = if ((i.caller != this))
132135 then throw("denied")
133136 else setScheduleInternal(to, waveletsPerBlock, maxClaimable, isMaxClaimableUSD, oldSum)
134137
135138
136139
137140 @Callable(i)
138141 func setMultiSchedule (schedules) = if ((i.caller != this))
139142 then throw("denied")
140143 else {
141144 func fold (acc,schedule) = if ((schedule == ""))
142145 then throw("invalid schedules")
143146 else {
144147 let parts = split(schedule, "=")
145148 if ((size(parts) != 2))
146149 then throw("invalid format: adr=waveletsPerBlock[,max]")
147150 else {
148151 let to = parts[0]
149152 let blockMaxParts = split(parts[1], ",")
150153 let wavelets = valueOrErrorMessage(parseInt(blockMaxParts[0]), ("invalid wavetets number: " + blockMaxParts[0]))
151- let $t055805946 = if ((size(blockMaxParts) == 2))
154+ let $t055975963 = if ((size(blockMaxParts) == 2))
152155 then {
153156 let maxAndUsdPart = split(blockMaxParts[1], "$")
154157 $Tuple2(valueOrErrorMessage(parseInt(maxAndUsdPart[0]), ("invalid max number: " + maxAndUsdPart[0])), (size(maxAndUsdPart) == 2))
155158 }
156159 else $Tuple2(0, false)
157- let maxClaimable = $t055805946._1
158- let isMaxClaimableUSD = $t055805946._2
159- let $t059645996 = acc
160- let cmds = $t059645996._1
161- let sum = $t059645996._2
162- let addresses = $t059645996._3
160+ let maxClaimable = $t055975963._1
161+ let isMaxClaimableUSD = $t055975963._2
162+ let $t059816013 = acc
163+ let cmds = $t059816013._1
164+ let sum = $t059816013._2
165+ let addresses = $t059816013._3
163166 if (isDefined(indexOf(addresses, to)))
164167 then throw(("dublicate: " + to))
165168 else {
166- let $t060876182 = setScheduleInternal(to, wavelets, maxClaimable, isMaxClaimableUSD, sum)
167- let newCmds = $t060876182._1
168- let newSum = $t060876182._2
169+ let $t061046199 = setScheduleInternal(to, wavelets, maxClaimable, isMaxClaimableUSD, sum)
170+ let newCmds = $t061046199._1
171+ let newSum = $t061046199._2
169172 $Tuple3((cmds ++ newCmds), newSum, (addresses ++ [to]))
170173 }
171174 }
172175 }
173176
174- let $t062476323 = {
177+ let $t062646340 = {
175178 let $l = split(schedules, "|")
176179 let $s = size($l)
177180 let $acc0 = $Tuple3(nil, oldSum, nil)
178181 func $f0_1 ($a,$i) = if (($i >= $s))
179182 then $a
180183 else fold($a, $l[$i])
181184
182185 func $f0_2 ($a,$i) = if (($i >= $s))
183186 then $a
184187 else throw("List size exceeds 20")
185188
186189 $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)
187190 }
188- let cmds = $t062476323._1
189- let sum = $t062476323._2
190- let x_ = $t062476323._3
191+ let cmds = $t062646340._1
192+ let sum = $t062646340._2
193+ let x_ = $t062646340._3
191194 $Tuple2(cmds, sum)
192195 }
196+
197+
198+
199+@Callable(i)
200+func cancelSchedule (address) = if ((i.caller != this))
201+ then throw("denied")
202+ else setScheduleInternal(address, 0, 0, false, oldSum)
203+
204+
205+
206+@Callable(i)
207+func cleanSchedule (address) = {
208+ let maxClaimable = valueOrErrorMessage(getInteger(maxClaimableStore(address)), (("no " + address) + "_max_claimable"))
209+ let availableWAVES = availableNow(address)
210+ let checks = if (valueOrElse(getBoolean(maxClaimableIsUSDStore(address)), false))
211+ 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
218+ }
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)
227+ }
193228
194229
195230
196231 @Callable(i)
197232 func Claim () = {
198233 let toAdr = i.caller
199234 let to = toString(toAdr)
200235 let a = valueOrErrorMessage(getInteger(waveletsPerBlockStore(to)), "address not found")
201236 if ((a == a))
202237 then {
203238 let amount = availableNow(to)
204239 let payment = min([wavesBalance(this).available, amount])
205240 if ((0 >= payment))
206241 then throw("nothing to claim")
207242 else {
208243 let claimedStore1 = claimedStore(to)
209244 let claimed = valueOrElse(getInteger(claimedStore1), 0)
210245 let claimedUSDStore1 = claimedUSDStore(to)
211246 let claimedUSD = valueOrElse(getInteger(claimedUSDStore1), wavesToUSD(claimed))
212247 let paymentUSD = wavesToUSD(payment)
213248 if (if (valueOrElse(getBoolean(maxClaimableIsUSDStore(to)), false))
214249 then (30 > paymentUSD)
215250 else false)
216251 then throw("usd amount too small")
217252 else [ScriptTransfer(toAdr, payment, unit), IntegerEntry(claimedStore1, (claimed + payment)), IntegerEntry(claimedUSDStore1, (claimedUSD + paymentUSD))]
218253 }
219254 }
220255 else throw("Strict value is not equal to itself.")
221256 }
222257
223258
224-@Verifier(tx)
225-func verify () = {
226- let byVoting = {
227- let enabled = valueOrElse(getBoolean(configAddress, opAllowedStore("child_governance_apply_tx")), true)
228- if (!(enabled))
229- then throw("tx application throw governance not enabled")
230- else (height >= getIntegerValue(votingResults, ((("proposal_allow_broadcast_" + toString(this)) + "_") + toBase58String(tx.id))))
231- }
232- if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
233- then true
234- else byVoting
235- }
236-

github/deemru/w8io/6500d08 
215.10 ms