tx · 4QminhoBAofTFZuM5EpL5DT94JLjcqfyTaeEiVYHBV4u

3PRAEZqBjrUDaDvv45HGWPb94DhD6UuZfWg:  -0.00600000 Waves

2023.09.19 13:44 [3827950] smart account 3PRAEZqBjrUDaDvv45HGWPb94DhD6UuZfWg > SELF 0.00000000 Waves

{ "type": 13, "id": "4QminhoBAofTFZuM5EpL5DT94JLjcqfyTaeEiVYHBV4u", "fee": 600000, "feeAssetId": null, "timestamp": 1695120304138, "version": 1, "sender": "3PRAEZqBjrUDaDvv45HGWPb94DhD6UuZfWg", "senderPublicKey": "DWfBoSph5SQ9fuKvBjSecymWnfmRnBFh9FYg2QEV6bwS", "proofs": [ "2kyA8cV9cZB3EbYqi7F8vJvDVbfyfdzboG8ECtereShLxixSFFzFGCS5DSgVdw8Vx1EKzAKEeiaPFuAxpVZhCJbv" ], "script": "base64:BgIXCAISBAoCCAESBgoECAEBBBIDCgEIEgAWABJjb25maWdBZGRyZXNzU3RvcmUCBmNvbmZpZwANY29uZmlnQWRkcmVzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBRJjb25maWdBZGRyZXNzU3RvcmUCH2NoaWxkOiBjb25maWcgYWRkcmVzcyBub3QgZm91bmQCFmludmFsaWQgY29uZmlnIGFkZHJlc3MABkhFSUdIVAUGaGVpZ2h0AQ5vcEFsbG93ZWRTdG9yZQECb3AJAKwCAgkArAICAgNvcF8FAm9wAghfYWxsb3dlZAANdm90aW5nUmVzdWx0cwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ1jb25maWdBZGRyZXNzAhZjb250cmFjdF92b3RpbmdfcmVzdWx0AhlubyBjb250cmFjdF92b3RpbmdfcmVzdWx0Ah5pbnZhbGlkIGNvbnRyYWN0X3ZvdGluZ19yZXN1bHQBFXdhdmVsZXRzUGVyQmxvY2tTdG9yZQEHYWRkcmVzcwkArAICBQdhZGRyZXNzAhNfd2F2ZWxldHNfcGVyX2Jsb2NrARBzdGFydEhlaWdodFN0b3JlAQdhZGRyZXNzCQCsAgIFB2FkZHJlc3MCDV9zdGFydF9oZWlnaHQBDGNsYWltZWRTdG9yZQEHYWRkcmVzcwkArAICBQdhZGRyZXNzAhB3YXZlbGV0c19jbGFpbWVkAQ9jbGFpbWVkVVNEU3RvcmUBB2FkZHJlc3MJAKwCAgUHYWRkcmVzcwIVX3dhdmVsZXRzX2NsYWltZWRfdXNkARFtYXhDbGFpbWFibGVTdG9yZQEHYWRkcmVzcwkArAICBQdhZGRyZXNzAhdfd2F2ZWxldHNfbWF4X2NsYWltYWJsZQEWbWF4Q2xhaW1hYmxlSXNVU0RTdG9yZQEHYWRkcmVzcwkArAICBQdhZGRyZXNzAh5fd2F2ZWxldHNfbWF4X2NsYWltYWJsZV9pc191c2QACHN1bVN0b3JlAhZ3YXZlbGV0c19wZXJfYmxvY2tfc3VtAAhtYXhTdG9yZQIWd2F2ZWxldHNfcGVyX2Jsb2NrX21heAAHbWF4aW11bQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzAhZ3YXZlbGV0c19wZXJfYmxvY2tfbWF4ALDQyVoABm9yYWNsZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAQt2YWx1ZU9yRWxzZQIJAKIIAQIGb3JhY2xlAiMzUEtrb2pLZGQ2QkJ6VGYxUlhiUVZmVURyYU5GWFhIS3pRRgIWaW52YWxpZCBvcmFjbGUgYWRkcmVzcwAOd2F2ZVByaWNlU3RvcmUJAQt2YWx1ZU9yRWxzZQIJAKIIAQIOd2F2ZS1wcmljZS1rZXkCFyVzJXNfX3ByaWNlX19XQVZFUy1VU0RUAAl3YXZlUHJpY2UJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQZvcmFjbGUFDndhdmVQcmljZVN0b3JlAiBXQVZFUyBwcmljZSBpcyBub3QgaW4gdGhlIE9yYWNsZQEKd2F2ZXNUb1VTRAEFd2F2ZXMJAGsDBQV3YXZlcwUJd2F2ZVByaWNlAMCEPQEKdXNkVG9XYXZlcwEFd2F2ZXMJAGsDBQV3YXZlcwCAwtcvBQl3YXZlUHJpY2UABm9sZFN1bQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQhzdW1TdG9yZQAAAQxhdmFpbGFibGVOb3cBAnRvBAhwZXJCbG9jawkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEVd2F2ZWxldHNQZXJCbG9ja1N0b3JlAQUCdG8AAAQFdG90YWwDCQAAAgUIcGVyQmxvY2sAAAAABApmaXJzdEJsb2NrCQEFdmFsdWUBCQCfCAEJARBzdGFydEhlaWdodFN0b3JlAQUCdG8EBmJsb2NrcwkAZQIFBmhlaWdodAUKZmlyc3RCbG9jawkAaAIFCHBlckJsb2NrBQZibG9ja3MEDGNsYWltZWRXQVZFUwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMY2xhaW1lZFN0b3JlAQUCdG8AAAQJcmVzdFdhdmVzCQBlAgUFdG90YWwFDGNsYWltZWRXQVZFUwQMbWF4Q2xhaW1hYmxlCQCfCAEJARFtYXhDbGFpbWFibGVTdG9yZQEFAnRvAwkBCWlzRGVmaW5lZAEFDG1heENsYWltYWJsZQQRbWF4Q2xhaW1hYmxlVmFsdWUJAQV2YWx1ZQEFDG1heENsYWltYWJsZQMJAQt2YWx1ZU9yRWxzZQIJAKAIAQkBFm1heENsYWltYWJsZUlzVVNEU3RvcmUBBQJ0bwcECmNsYWltZWRVU0QJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBD2NsYWltZWRVU0RTdG9yZQEFAnRvCQEKd2F2ZXNUb1VTRAEFDGNsYWltZWRXQVZFUwQHcmVzdFVTRAkAZQIFEW1heENsYWltYWJsZVZhbHVlBQpjbGFpbWVkVVNEBA5yZXN0VXNkSW5XYXZlcwkBCnVzZFRvV2F2ZXMBBQdyZXN0VVNECQCXAwEJAMwIAgUOcmVzdFVzZEluV2F2ZXMJAMwIAgUJcmVzdFdhdmVzBQNuaWwEBWdyYW50CQCXAwEJAMwIAgUFdG90YWwJAMwIAgURbWF4Q2xhaW1hYmxlVmFsdWUFA25pbAkAZQIFBWdyYW50BQxjbGFpbWVkV0FWRVMFCXJlc3RXYXZlcwETc2V0U2NoZWR1bGVJbnRlcm5hbAUCdG8Qd2F2ZWxldHNQZXJCbG9jawxtYXhDbGFpbWFibGURaXNNYXhDbGFpbWFibGVVU0QDc3VtBANhZHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQJ0bwkArAICAhFpbnZhbGlkIGFkZHJlc3M6IAUCdG8DCQAAAgUDYWRyBQNhZHIDCQBmAgAABRB3YXZlbGV0c1BlckJsb2NrCQACAQIfd2F2ZWxldHNQZXJCbG9jayBzaG91bGQgYmUgPj0gMAQNcGVyQmxvY2tTdG9yZQkBFXdhdmVsZXRzUGVyQmxvY2tTdG9yZQEFAnRvBAtvbGRQZXJCbG9jawkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ1wZXJCbG9ja1N0b3JlAAAEBm5ld1N1bQkAZAIJAGUCBQNzdW0FC29sZFBlckJsb2NrBRB3YXZlbGV0c1BlckJsb2NrBAxoZWlnaHRTdG9yZTEJARBzdGFydEhlaWdodFN0b3JlAQUCdG8EB2NsYWltZWQJAQxjbGFpbWVkU3RvcmUBBQJ0bwMJAGYCBQZuZXdTdW0FB21heGltdW0JAAIBAhBtYXhpbXVtIGV4Y2VlZGVkBBJtYXhDbGFpbWFibGVTdG9yZTEJARFtYXhDbGFpbWFibGVTdG9yZQEFAnRvBBdtYXhDbGFpbWFibGVJc1VTRFN0b3JlMQkBFm1heENsYWltYWJsZUlzVVNEU3RvcmUBBQJ0bwQRbWF4Q2xhaW1hYmxlRW50cnkDCQAAAgUMbWF4Q2xhaW1hYmxlAAAFA25pbAMJAGYCAAAFDG1heENsYWltYWJsZQkAzAgCCQELRGVsZXRlRW50cnkBBRJtYXhDbGFpbWFibGVTdG9yZTEJAMwIAgkBC0RlbGV0ZUVudHJ5AQUXbWF4Q2xhaW1hYmxlSXNVU0RTdG9yZTEFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSbWF4Q2xhaW1hYmxlU3RvcmUxBQxtYXhDbGFpbWFibGUJAMwIAgkBDEJvb2xlYW5FbnRyeQIFF21heENsYWltYWJsZUlzVVNEU3RvcmUxBRFpc01heENsYWltYWJsZVVTRAUDbmlsCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUNcGVyQmxvY2tTdG9yZQUQd2F2ZWxldHNQZXJCbG9jawkAzAgCCQEMSW50ZWdlckVudHJ5AgUMaGVpZ2h0U3RvcmUxBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFB2NsYWltZWQJAQEtAQkBDGF2YWlsYWJsZU5vdwEFAnRvCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQhzdW1TdG9yZQUGbmV3U3VtBQNuaWwFEW1heENsYWltYWJsZUVudHJ5BQZuZXdTdW0JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EAWkBCnNldFNjZWR1bGUCAnRvEHdhdmVsZXRzUGVyQmxvY2sDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAgZkZW5pZWQJARNzZXRTY2hlZHVsZUludGVybmFsBQUCdG8FEHdhdmVsZXRzUGVyQmxvY2sAAAcFBm9sZFN1bQFpAQtzZXRTY2hlZHVsZQQCdG8Qd2F2ZWxldHNQZXJCbG9jawxtYXhDbGFpbWFibGURaXNNYXhDbGFpbWFibGVVU0QDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAgZkZW5pZWQJARNzZXRTY2hlZHVsZUludGVybmFsBQUCdG8FEHdhdmVsZXRzUGVyQmxvY2sFDG1heENsYWltYWJsZQURaXNNYXhDbGFpbWFibGVVU0QFBm9sZFN1bQFpARBzZXRNdWx0aVNjaGVkdWxlAQlzY2hlZHVsZXMDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAgZkZW5pZWQKAQRmb2xkAgNhY2MIc2NoZWR1bGUDCQAAAgUIc2NoZWR1bGUCAAkAAgECEWludmFsaWQgc2NoZWR1bGVzBAVwYXJ0cwkAtQkCBQhzY2hlZHVsZQIBPQMJAQIhPQIJAJADAQUFcGFydHMAAgkAAgECKmludmFsaWQgZm9ybWF0OiBhZHI9d2F2ZWxldHNQZXJCbG9ja1ssbWF4XQQCdG8JAJEDAgUFcGFydHMAAAQNYmxvY2tNYXhQYXJ0cwkAtQkCCQCRAwIFBXBhcnRzAAECASwECHdhdmVsZXRzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQkAkQMCBQ1ibG9ja01heFBhcnRzAAAJAKwCAgIZaW52YWxpZCB3YXZldGV0cyBudW1iZXI6IAkAkQMCBQ1ibG9ja01heFBhcnRzAAAECyR0MDUyMTc1NTgzAwkAAAIJAJADAQUNYmxvY2tNYXhQYXJ0cwACBA1tYXhBbmRVc2RQYXJ0CQC1CQIJAJEDAgUNYmxvY2tNYXhQYXJ0cwABAgEkCQCUCgIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAtgkBCQCRAwIFDW1heEFuZFVzZFBhcnQAAAkArAICAhRpbnZhbGlkIG1heCBudW1iZXI6IAkAkQMCBQ1tYXhBbmRVc2RQYXJ0AAAJAAACCQCQAwEFDW1heEFuZFVzZFBhcnQAAgkAlAoCAAAHBAxtYXhDbGFpbWFibGUIBQskdDA1MjE3NTU4MwJfMQQRaXNNYXhDbGFpbWFibGVVU0QIBQskdDA1MjE3NTU4MwJfMgQLJHQwNTYwMTU2MzMFA2FjYwQEY21kcwgFCyR0MDU2MDE1NjMzAl8xBANzdW0IBQskdDA1NjAxNTYzMwJfMgQJYWRkcmVzc2VzCAULJHQwNTYwMTU2MzMCXzMDCQEJaXNEZWZpbmVkAQkAzwgCBQlhZGRyZXNzZXMFAnRvCQACAQkArAICAgtkdWJsaWNhdGU6IAUCdG8ECyR0MDU3MjQ1ODE5CQETc2V0U2NoZWR1bGVJbnRlcm5hbAUFAnRvBQh3YXZlbGV0cwUMbWF4Q2xhaW1hYmxlBRFpc01heENsYWltYWJsZVVTRAUDc3VtBAduZXdDbWRzCAULJHQwNTcyNDU4MTkCXzEEBm5ld1N1bQgFCyR0MDU3MjQ1ODE5Al8yCQCVCgMJAM4IAgUEY21kcwUHbmV3Q21kcwUGbmV3U3VtCQDOCAIFCWFkZHJlc3NlcwkAzAgCBQJ0bwUDbmlsBAskdDA1ODg0NTk2MAoAAiRsCQC1CQIFCXNjaGVkdWxlcwIBfAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJUKAwUDbmlsBQZvbGRTdW0FA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEEZm9sZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUBARjbWRzCAULJHQwNTg4NDU5NjACXzEEA3N1bQgFCyR0MDU4ODQ1OTYwAl8yBAJ4XwgFCyR0MDU4ODQ1OTYwAl8zCQCUCgIFBGNtZHMFA3N1bQFpAQVDbGFpbQAEBXRvQWRyCAUBaQZjYWxsZXIEAnRvCQClCAEFBXRvQWRyBAFhCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQkBFXdhdmVsZXRzUGVyQmxvY2tTdG9yZQEFAnRvAhFhZGRyZXNzIG5vdCBmb3VuZAMJAAACBQFhBQFhBAZhbW91bnQJAQxhdmFpbGFibGVOb3cBBQJ0bwQHcGF5bWVudAkAlwMBCQDMCAIICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDMCAIFBmFtb3VudAUDbmlsAwkAZwIAAAUHcGF5bWVudAkAAgECEG5vdGhpbmcgdG8gY2xhaW0EDWNsYWltZWRTdG9yZTEJAQxjbGFpbWVkU3RvcmUBBQJ0bwQHY2xhaW1lZAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ1jbGFpbWVkU3RvcmUxAAAEEGNsYWltZWRVU0RTdG9yZTEJAQ9jbGFpbWVkVVNEU3RvcmUBBQJ0bwQKY2xhaW1lZFVTRAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRBjbGFpbWVkVVNEU3RvcmUxCQEKd2F2ZXNUb1VTRAEFB2NsYWltZWQECnBheW1lbnRVU0QJAQp3YXZlc1RvVVNEAQUHcGF5bWVudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQV0b0FkcgUHcGF5bWVudAUEdW5pdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUNY2xhaW1lZFN0b3JlMQkAZAIFB2NsYWltZWQFB3BheW1lbnQJAMwIAgkBDEludGVnZXJFbnRyeQIFEGNsYWltZWRVU0RTdG9yZTEJAGQCBQpjbGFpbWVkVVNEBQpwYXltZW50VVNEBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4A6OaH+Q==", "chainId": 87, "height": 3827950, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FHsaor6cMeoAeY9YKV5MkHMXAFAwYu4R588EGRhMP2xK Next: BTkwumHpjrLgh4Z7vDhiDFm6P5rfkVNPQuNXGfNd5SFS Diff:
OldNewDifferences
8181 }
8282
8383
84-func setScheduleInternal (to,waveletsPerBlock,maxClaimable,isMaxClaimableUSD,sum) = if ((0 > waveletsPerBlock))
85- then throw("waveletsPerBlock should be >= 0")
86- else {
87- let perBlockStore = waveletsPerBlockStore(to)
88- let oldPerBlock = valueOrElse(getInteger(perBlockStore), 0)
89- let newSum = ((sum - oldPerBlock) + waveletsPerBlock)
90- let heightStore1 = startHeightStore(to)
91- let claimed = claimedStore(to)
92- if ((newSum > maximum))
93- then throw("maximum exceeded")
84+func setScheduleInternal (to,waveletsPerBlock,maxClaimable,isMaxClaimableUSD,sum) = {
85+ let adr = valueOrErrorMessage(addressFromString(to), ("invalid address: " + to))
86+ if ((adr == adr))
87+ then if ((0 > waveletsPerBlock))
88+ then throw("waveletsPerBlock should be >= 0")
9489 else {
95- let maxClaimableStore1 = maxClaimableStore(to)
96- let maxClaimableIsUSDStore1 = maxClaimableIsUSDStore(to)
97- let maxClaimableEntry = if ((maxClaimable == 0))
98- then nil
99- else if ((0 > maxClaimable))
100- then [DeleteEntry(maxClaimableStore1), DeleteEntry(maxClaimableIsUSDStore1)]
101- else [IntegerEntry(maxClaimableStore1, maxClaimable), BooleanEntry(maxClaimableIsUSDStore1, isMaxClaimableUSD)]
102- $Tuple2(([IntegerEntry(perBlockStore, waveletsPerBlock), IntegerEntry(heightStore1, height), IntegerEntry(claimed, -(availableNow(to))), IntegerEntry(sumStore, newSum)] ++ maxClaimableEntry), newSum)
90+ let perBlockStore = waveletsPerBlockStore(to)
91+ let oldPerBlock = valueOrElse(getInteger(perBlockStore), 0)
92+ let newSum = ((sum - oldPerBlock) + waveletsPerBlock)
93+ let heightStore1 = startHeightStore(to)
94+ let claimed = claimedStore(to)
95+ if ((newSum > maximum))
96+ then throw("maximum exceeded")
97+ else {
98+ let maxClaimableStore1 = maxClaimableStore(to)
99+ let maxClaimableIsUSDStore1 = maxClaimableIsUSDStore(to)
100+ let maxClaimableEntry = if ((maxClaimable == 0))
101+ then nil
102+ else if ((0 > maxClaimable))
103+ then [DeleteEntry(maxClaimableStore1), DeleteEntry(maxClaimableIsUSDStore1)]
104+ else [IntegerEntry(maxClaimableStore1, maxClaimable), BooleanEntry(maxClaimableIsUSDStore1, isMaxClaimableUSD)]
105+ $Tuple2(([IntegerEntry(perBlockStore, waveletsPerBlock), IntegerEntry(heightStore1, height), IntegerEntry(claimed, -(availableNow(to))), IntegerEntry(sumStore, newSum)] ++ maxClaimableEntry), newSum)
106+ }
103107 }
104- }
108+ else throw("Strict value is not equal to itself.")
109+ }
105110
106111
107112 @Callable(i)
129134 if ((size(parts) != 2))
130135 then throw("invalid format: adr=waveletsPerBlock[,max]")
131136 else {
132- let to = valueOrErrorMessage(addressFromString(parts[0]), ("invalid address: " + parts[0]))
137+ let to = parts[0]
133138 let blockMaxParts = split(parts[1], ",")
134139 let wavelets = valueOrErrorMessage(parseInt(blockMaxParts[0]), ("invalid wavetets number: " + blockMaxParts[0]))
135- let $t052035569 = if ((size(blockMaxParts) == 2))
140+ let $t052175583 = if ((size(blockMaxParts) == 2))
136141 then {
137142 let maxAndUsdPart = split(blockMaxParts[1], "$")
138143 $Tuple2(valueOrErrorMessage(parseInt(maxAndUsdPart[0]), ("invalid max number: " + maxAndUsdPart[0])), (size(maxAndUsdPart) == 2))
139144 }
140145 else $Tuple2(0, false)
141- let maxClaimable = $t052035569._1
142- let isMaxClaimableUSD = $t052035569._2
143- let $t055875619 = acc
144- let cmds = $t055875619._1
145- let sum = $t055875619._2
146- let addresses = $t055875619._3
147- let toStr = toString(to)
148- if (isDefined(indexOf(addresses, toStr)))
149- then throw(("dublicate: " + toStr))
146+ let maxClaimable = $t052175583._1
147+ let isMaxClaimableUSD = $t052175583._2
148+ let $t056015633 = acc
149+ let cmds = $t056015633._1
150+ let sum = $t056015633._2
151+ let addresses = $t056015633._3
152+ if (isDefined(indexOf(addresses, to)))
153+ then throw(("dublicate: " + to))
150154 else {
151- let $t057505848 = setScheduleInternal(toStr, wavelets, maxClaimable, isMaxClaimableUSD, sum)
152- let newCmds = $t057505848._1
153- let newSum = $t057505848._2
154- $Tuple3((cmds ++ newCmds), newSum, (addresses ++ [toStr]))
155+ let $t057245819 = setScheduleInternal(to, wavelets, maxClaimable, isMaxClaimableUSD, sum)
156+ let newCmds = $t057245819._1
157+ let newSum = $t057245819._2
158+ $Tuple3((cmds ++ newCmds), newSum, (addresses ++ [to]))
155159 }
156160 }
157161 }
158162
159- let $t059165992 = {
163+ let $t058845960 = {
160164 let $l = split(schedules, "|")
161165 let $s = size($l)
162166 let $acc0 = $Tuple3(nil, oldSum, nil)
170174
171175 $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)
172176 }
173- let cmds = $t059165992._1
174- let sum = $t059165992._2
175- let x_ = $t059165992._3
177+ let cmds = $t058845960._1
178+ let sum = $t058845960._2
179+ let x_ = $t058845960._3
176180 $Tuple2(cmds, sum)
177181 }
178182
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 + "_wavelets_claimed_usd")
2525
2626
2727 func maxClaimableStore (address) = (address + "_wavelets_max_claimable")
2828
2929
3030 func maxClaimableIsUSDStore (address) = (address + "_wavelets_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, "wavelets_per_block_max"), 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 func wavesToUSD (waves) = fraction(waves, wavePrice, 1000000)
4646
4747
4848 func usdToWaves (waves) = fraction(waves, 100000000, wavePrice)
4949
5050
5151 let oldSum = valueOrElse(getInteger(sumStore), 0)
5252
5353 func availableNow (to) = {
5454 let perBlock = valueOrElse(getInteger(waveletsPerBlockStore(to)), 0)
5555 let total = if ((perBlock == 0))
5656 then 0
5757 else {
5858 let firstBlock = value(getInteger(startHeightStore(to)))
5959 let blocks = (height - firstBlock)
6060 (perBlock * blocks)
6161 }
6262 let claimedWAVES = valueOrElse(getInteger(claimedStore(to)), 0)
6363 let restWaves = (total - claimedWAVES)
6464 let maxClaimable = getInteger(maxClaimableStore(to))
6565 if (isDefined(maxClaimable))
6666 then {
6767 let maxClaimableValue = value(maxClaimable)
6868 if (valueOrElse(getBoolean(maxClaimableIsUSDStore(to)), false))
6969 then {
7070 let claimedUSD = valueOrElse(getInteger(claimedUSDStore(to)), wavesToUSD(claimedWAVES))
7171 let restUSD = (maxClaimableValue - claimedUSD)
7272 let restUsdInWaves = usdToWaves(restUSD)
7373 min([restUsdInWaves, restWaves])
7474 }
7575 else {
7676 let grant = min([total, maxClaimableValue])
7777 (grant - claimedWAVES)
7878 }
7979 }
8080 else restWaves
8181 }
8282
8383
84-func setScheduleInternal (to,waveletsPerBlock,maxClaimable,isMaxClaimableUSD,sum) = if ((0 > waveletsPerBlock))
85- then throw("waveletsPerBlock should be >= 0")
86- else {
87- let perBlockStore = waveletsPerBlockStore(to)
88- let oldPerBlock = valueOrElse(getInteger(perBlockStore), 0)
89- let newSum = ((sum - oldPerBlock) + waveletsPerBlock)
90- let heightStore1 = startHeightStore(to)
91- let claimed = claimedStore(to)
92- if ((newSum > maximum))
93- then throw("maximum exceeded")
84+func setScheduleInternal (to,waveletsPerBlock,maxClaimable,isMaxClaimableUSD,sum) = {
85+ let adr = valueOrErrorMessage(addressFromString(to), ("invalid address: " + to))
86+ if ((adr == adr))
87+ then if ((0 > waveletsPerBlock))
88+ then throw("waveletsPerBlock should be >= 0")
9489 else {
95- let maxClaimableStore1 = maxClaimableStore(to)
96- let maxClaimableIsUSDStore1 = maxClaimableIsUSDStore(to)
97- let maxClaimableEntry = if ((maxClaimable == 0))
98- then nil
99- else if ((0 > maxClaimable))
100- then [DeleteEntry(maxClaimableStore1), DeleteEntry(maxClaimableIsUSDStore1)]
101- else [IntegerEntry(maxClaimableStore1, maxClaimable), BooleanEntry(maxClaimableIsUSDStore1, isMaxClaimableUSD)]
102- $Tuple2(([IntegerEntry(perBlockStore, waveletsPerBlock), IntegerEntry(heightStore1, height), IntegerEntry(claimed, -(availableNow(to))), IntegerEntry(sumStore, newSum)] ++ maxClaimableEntry), newSum)
90+ let perBlockStore = waveletsPerBlockStore(to)
91+ let oldPerBlock = valueOrElse(getInteger(perBlockStore), 0)
92+ let newSum = ((sum - oldPerBlock) + waveletsPerBlock)
93+ let heightStore1 = startHeightStore(to)
94+ let claimed = claimedStore(to)
95+ if ((newSum > maximum))
96+ then throw("maximum exceeded")
97+ else {
98+ let maxClaimableStore1 = maxClaimableStore(to)
99+ let maxClaimableIsUSDStore1 = maxClaimableIsUSDStore(to)
100+ let maxClaimableEntry = if ((maxClaimable == 0))
101+ then nil
102+ else if ((0 > maxClaimable))
103+ then [DeleteEntry(maxClaimableStore1), DeleteEntry(maxClaimableIsUSDStore1)]
104+ else [IntegerEntry(maxClaimableStore1, maxClaimable), BooleanEntry(maxClaimableIsUSDStore1, isMaxClaimableUSD)]
105+ $Tuple2(([IntegerEntry(perBlockStore, waveletsPerBlock), IntegerEntry(heightStore1, height), IntegerEntry(claimed, -(availableNow(to))), IntegerEntry(sumStore, newSum)] ++ maxClaimableEntry), newSum)
106+ }
103107 }
104- }
108+ else throw("Strict value is not equal to itself.")
109+ }
105110
106111
107112 @Callable(i)
108113 func setScedule (to,waveletsPerBlock) = if ((i.caller != this))
109114 then throw("denied")
110115 else setScheduleInternal(to, waveletsPerBlock, 0, false, oldSum)
111116
112117
113118
114119 @Callable(i)
115120 func setSchedule (to,waveletsPerBlock,maxClaimable,isMaxClaimableUSD) = if ((i.caller != this))
116121 then throw("denied")
117122 else setScheduleInternal(to, waveletsPerBlock, maxClaimable, isMaxClaimableUSD, oldSum)
118123
119124
120125
121126 @Callable(i)
122127 func setMultiSchedule (schedules) = if ((i.caller != this))
123128 then throw("denied")
124129 else {
125130 func fold (acc,schedule) = if ((schedule == ""))
126131 then throw("invalid schedules")
127132 else {
128133 let parts = split(schedule, "=")
129134 if ((size(parts) != 2))
130135 then throw("invalid format: adr=waveletsPerBlock[,max]")
131136 else {
132- let to = valueOrErrorMessage(addressFromString(parts[0]), ("invalid address: " + parts[0]))
137+ let to = parts[0]
133138 let blockMaxParts = split(parts[1], ",")
134139 let wavelets = valueOrErrorMessage(parseInt(blockMaxParts[0]), ("invalid wavetets number: " + blockMaxParts[0]))
135- let $t052035569 = if ((size(blockMaxParts) == 2))
140+ let $t052175583 = if ((size(blockMaxParts) == 2))
136141 then {
137142 let maxAndUsdPart = split(blockMaxParts[1], "$")
138143 $Tuple2(valueOrErrorMessage(parseInt(maxAndUsdPart[0]), ("invalid max number: " + maxAndUsdPart[0])), (size(maxAndUsdPart) == 2))
139144 }
140145 else $Tuple2(0, false)
141- let maxClaimable = $t052035569._1
142- let isMaxClaimableUSD = $t052035569._2
143- let $t055875619 = acc
144- let cmds = $t055875619._1
145- let sum = $t055875619._2
146- let addresses = $t055875619._3
147- let toStr = toString(to)
148- if (isDefined(indexOf(addresses, toStr)))
149- then throw(("dublicate: " + toStr))
146+ let maxClaimable = $t052175583._1
147+ let isMaxClaimableUSD = $t052175583._2
148+ let $t056015633 = acc
149+ let cmds = $t056015633._1
150+ let sum = $t056015633._2
151+ let addresses = $t056015633._3
152+ if (isDefined(indexOf(addresses, to)))
153+ then throw(("dublicate: " + to))
150154 else {
151- let $t057505848 = setScheduleInternal(toStr, wavelets, maxClaimable, isMaxClaimableUSD, sum)
152- let newCmds = $t057505848._1
153- let newSum = $t057505848._2
154- $Tuple3((cmds ++ newCmds), newSum, (addresses ++ [toStr]))
155+ let $t057245819 = setScheduleInternal(to, wavelets, maxClaimable, isMaxClaimableUSD, sum)
156+ let newCmds = $t057245819._1
157+ let newSum = $t057245819._2
158+ $Tuple3((cmds ++ newCmds), newSum, (addresses ++ [to]))
155159 }
156160 }
157161 }
158162
159- let $t059165992 = {
163+ let $t058845960 = {
160164 let $l = split(schedules, "|")
161165 let $s = size($l)
162166 let $acc0 = $Tuple3(nil, oldSum, nil)
163167 func $f0_1 ($a,$i) = if (($i >= $s))
164168 then $a
165169 else fold($a, $l[$i])
166170
167171 func $f0_2 ($a,$i) = if (($i >= $s))
168172 then $a
169173 else throw("List size exceeds 20")
170174
171175 $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)
172176 }
173- let cmds = $t059165992._1
174- let sum = $t059165992._2
175- let x_ = $t059165992._3
177+ let cmds = $t058845960._1
178+ let sum = $t058845960._2
179+ let x_ = $t058845960._3
176180 $Tuple2(cmds, sum)
177181 }
178182
179183
180184
181185 @Callable(i)
182186 func Claim () = {
183187 let toAdr = i.caller
184188 let to = toString(toAdr)
185189 let a = valueOrErrorMessage(getInteger(waveletsPerBlockStore(to)), "address not found")
186190 if ((a == a))
187191 then {
188192 let amount = availableNow(to)
189193 let payment = min([wavesBalance(this).available, amount])
190194 if ((0 >= payment))
191195 then throw("nothing to claim")
192196 else {
193197 let claimedStore1 = claimedStore(to)
194198 let claimed = valueOrElse(getInteger(claimedStore1), 0)
195199 let claimedUSDStore1 = claimedUSDStore(to)
196200 let claimedUSD = valueOrElse(getInteger(claimedUSDStore1), wavesToUSD(claimed))
197201 let paymentUSD = wavesToUSD(payment)
198202 [ScriptTransfer(toAdr, payment, unit), IntegerEntry(claimedStore1, (claimed + payment)), IntegerEntry(claimedUSDStore1, (claimedUSD + paymentUSD))]
199203 }
200204 }
201205 else throw("Strict value is not equal to itself.")
202206 }
203207
204208

github/deemru/w8io/6500d08 
39.09 ms