tx · 7W7Lhxp1ZmDEneRwiMC4v4uNunyMbf9D65grj5kpoECo

3PRAEZqBjrUDaDvv45HGWPb94DhD6UuZfWg:  -0.00600000 Waves

2023.09.19 12:48 [3827896] smart account 3PRAEZqBjrUDaDvv45HGWPb94DhD6UuZfWg > SELF 0.00000000 Waves

{ "type": 13, "id": "7W7Lhxp1ZmDEneRwiMC4v4uNunyMbf9D65grj5kpoECo", "fee": 600000, "feeAssetId": null, "timestamp": 1695116892537, "version": 1, "sender": "3PRAEZqBjrUDaDvv45HGWPb94DhD6UuZfWg", "senderPublicKey": "DWfBoSph5SQ9fuKvBjSecymWnfmRnBFh9FYg2QEV6bwS", "proofs": [ "3MDTw1gtLRytpTScUhnmrafx42Z5eYxZ7aChboDZdtzFDP9L9cQh29zAPbzMv21dQAVQqjFMSVKPtHenDQMWTWbY" ], "script": "base64:BgIXCAISBAoCCAESBgoECAEBBBIDCgEIEgAWABJjb25maWdBZGRyZXNzU3RvcmUCBmNvbmZpZwANY29uZmlnQWRkcmVzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBRJjb25maWdBZGRyZXNzU3RvcmUCH2NoaWxkOiBjb25maWcgYWRkcmVzcyBub3QgZm91bmQCFmludmFsaWQgY29uZmlnIGFkZHJlc3MABkhFSUdIVAUGaGVpZ2h0AQ5vcEFsbG93ZWRTdG9yZQECb3AJAKwCAgkArAICAgNvcF8FAm9wAghfYWxsb3dlZAANdm90aW5nUmVzdWx0cwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ1jb25maWdBZGRyZXNzAhZjb250cmFjdF92b3RpbmdfcmVzdWx0AhlubyBjb250cmFjdF92b3RpbmdfcmVzdWx0Ah5pbnZhbGlkIGNvbnRyYWN0X3ZvdGluZ19yZXN1bHQBFXdhdmVsZXRzUGVyQmxvY2tTdG9yZQEHYWRkcmVzcwkArAICBQdhZGRyZXNzAhNfd2F2ZWxldHNfcGVyX2Jsb2NrARBzdGFydEhlaWdodFN0b3JlAQdhZGRyZXNzCQCsAgIFB2FkZHJlc3MCDV9zdGFydF9oZWlnaHQBDGNsYWltZWRTdG9yZQEHYWRkcmVzcwkArAICBQdhZGRyZXNzAhB3YXZlbGV0c19jbGFpbWVkAQ9jbGFpbWVkVVNEU3RvcmUBB2FkZHJlc3MJAKwCAgUHYWRkcmVzcwIVX3dhdmVsZXRzX2NsYWltZWRfdXNkARFtYXhDbGFpbWFibGVTdG9yZQEHYWRkcmVzcwkArAICBQdhZGRyZXNzAhdfd2F2ZWxldHNfbWF4X2NsYWltYWJsZQEWbWF4Q2xhaW1hYmxlSXNVU0RTdG9yZQEHYWRkcmVzcwkArAICBQdhZGRyZXNzAh5fd2F2ZWxldHNfbWF4X2NsYWltYWJsZV9pc191c2QACHN1bVN0b3JlAhZ3YXZlbGV0c19wZXJfYmxvY2tfc3VtAAhtYXhTdG9yZQIWd2F2ZWxldHNfcGVyX2Jsb2NrX21heAAHbWF4aW11bQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzAhZ3YXZlbGV0c19wZXJfYmxvY2tfbWF4ALDQyVoABm9yYWNsZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAQt2YWx1ZU9yRWxzZQIJAKIIAQIGb3JhY2xlAiMzUEtrb2pLZGQ2QkJ6VGYxUlhiUVZmVURyYU5GWFhIS3pRRgIWaW52YWxpZCBvcmFjbGUgYWRkcmVzcwAOd2F2ZVByaWNlU3RvcmUJAQt2YWx1ZU9yRWxzZQIJAKIIAQIOd2F2ZS1wcmljZS1rZXkCFyVzJXNfX3ByaWNlX19XQVZFUy1VU0RUAAl3YXZlUHJpY2UJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQZvcmFjbGUFDndhdmVQcmljZVN0b3JlAiBXQVZFUyBwcmljZSBpcyBub3QgaW4gdGhlIE9yYWNsZQEKd2F2ZXNUb1VTRAEFd2F2ZXMJAGsDBQV3YXZlcwUJd2F2ZVByaWNlAMCEPQEKdXNkVG9XYXZlcwEFd2F2ZXMJAGsDBQV3YXZlcwCAwtcvBQl3YXZlUHJpY2UABm9sZFN1bQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQhzdW1TdG9yZQAAAQxhdmFpbGFibGVOb3cBAnRvBAhwZXJCbG9jawkAnwgBCQEVd2F2ZWxldHNQZXJCbG9ja1N0b3JlAQUCdG8EBXRvdGFsAwkBASEBCQEJaXNEZWZpbmVkAQUIcGVyQmxvY2sAAAQKZmlyc3RCbG9jawkBBXZhbHVlAQkAnwgBCQEQc3RhcnRIZWlnaHRTdG9yZQEFAnRvBAZibG9ja3MJAGUCBQZoZWlnaHQFCmZpcnN0QmxvY2sJAGgCCQEFdmFsdWUBBQhwZXJCbG9jawUGYmxvY2tzBAxjbGFpbWVkV0FWRVMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGNsYWltZWRTdG9yZQEFAnRvAAAECXJlc3RXYXZlcwkAZQIFBXRvdGFsBQxjbGFpbWVkV0FWRVMEDG1heENsYWltYWJsZQkAnwgBCQERbWF4Q2xhaW1hYmxlU3RvcmUBBQJ0bwMJAQlpc0RlZmluZWQBBQxtYXhDbGFpbWFibGUDCQELdmFsdWVPckVsc2UCCQCgCAEJARZtYXhDbGFpbWFibGVJc1VTRFN0b3JlAQUCdG8HBApjbGFpbWVkVVNECQELdmFsdWVPckVsc2UCCQCfCAEJAQ9jbGFpbWVkVVNEU3RvcmUBBQJ0bwkBCndhdmVzVG9VU0QBBQxjbGFpbWVkV0FWRVMEB3Jlc3RVU0QJAGUCCQEFdmFsdWUBBQxtYXhDbGFpbWFibGUFCmNsYWltZWRVU0QEDnJlc3RVc2RJbldhdmVzCQEKdXNkVG9XYXZlcwEFB3Jlc3RVU0QJAJcDAQkAzAgCBQ5yZXN0VXNkSW5XYXZlcwkAzAgCBQlyZXN0V2F2ZXMFA25pbAQFZ3JhbnQJAJcDAQkAzAgCBQV0b3RhbAkAzAgCCQEFdmFsdWUBBQxtYXhDbGFpbWFibGUFA25pbAkAZQIFBWdyYW50BQxjbGFpbWVkV0FWRVMFCXJlc3RXYXZlcwETc2V0U2NoZWR1bGVJbnRlcm5hbAUCdG8Qd2F2ZWxldHNQZXJCbG9jawxtYXhDbGFpbWFibGURaXNNYXhDbGFpbWFibGVVU0QDc3VtAwkAZgIAAAUQd2F2ZWxldHNQZXJCbG9jawkAAgECH3dhdmVsZXRzUGVyQmxvY2sgc2hvdWxkIGJlID49IDAEDXBlckJsb2NrU3RvcmUJARV3YXZlbGV0c1BlckJsb2NrU3RvcmUBBQJ0bwQLb2xkUGVyQmxvY2sJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUNcGVyQmxvY2tTdG9yZQAABAZuZXdTdW0JAGQCCQBlAgUDc3VtBQtvbGRQZXJCbG9jawUQd2F2ZWxldHNQZXJCbG9jawQMaGVpZ2h0U3RvcmUxCQEQc3RhcnRIZWlnaHRTdG9yZQEFAnRvBAdjbGFpbWVkCQEMY2xhaW1lZFN0b3JlAQUCdG8DCQBmAgUGbmV3U3VtBQdtYXhpbXVtCQACAQIQbWF4aW11bSBleGNlZWRlZAQSbWF4Q2xhaW1hYmxlU3RvcmUxCQERbWF4Q2xhaW1hYmxlU3RvcmUBBQJ0bwQXbWF4Q2xhaW1hYmxlSXNVU0RTdG9yZTEJARZtYXhDbGFpbWFibGVJc1VTRFN0b3JlAQUCdG8EEW1heENsYWltYWJsZUVudHJ5AwkAAAIFDG1heENsYWltYWJsZQAABQNuaWwDCQBmAgAABQxtYXhDbGFpbWFibGUJAMwIAgkBC0RlbGV0ZUVudHJ5AQUSbWF4Q2xhaW1hYmxlU3RvcmUxCQDMCAIJAQtEZWxldGVFbnRyeQEFF21heENsYWltYWJsZUlzVVNEU3RvcmUxBQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIFEm1heENsYWltYWJsZVN0b3JlMQUMbWF4Q2xhaW1hYmxlCQDMCAIJAQxCb29sZWFuRW50cnkCBRdtYXhDbGFpbWFibGVJc1VTRFN0b3JlMQURaXNNYXhDbGFpbWFibGVVU0QFA25pbAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFDXBlckJsb2NrU3RvcmUFEHdhdmVsZXRzUGVyQmxvY2sJAMwIAgkBDEludGVnZXJFbnRyeQIFDGhlaWdodFN0b3JlMQUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQdjbGFpbWVkCQEBLQEJAQxhdmFpbGFibGVOb3cBBQJ0bwkAzAgCCQEMSW50ZWdlckVudHJ5AgUIc3VtU3RvcmUFBm5ld1N1bQUDbmlsBRFtYXhDbGFpbWFibGVFbnRyeQUGbmV3U3VtBAFpAQpzZXRTY2VkdWxlAgJ0bxB3YXZlbGV0c1BlckJsb2NrAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIGZGVuaWVkCQETc2V0U2NoZWR1bGVJbnRlcm5hbAUFAnRvBRB3YXZlbGV0c1BlckJsb2NrAAAHBQZvbGRTdW0BaQELc2V0U2NoZWR1bGUEAnRvEHdhdmVsZXRzUGVyQmxvY2sMbWF4Q2xhaW1hYmxlEWlzTWF4Q2xhaW1hYmxlVVNEAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIGZGVuaWVkCQETc2V0U2NoZWR1bGVJbnRlcm5hbAUFAnRvBRB3YXZlbGV0c1BlckJsb2NrBQxtYXhDbGFpbWFibGUFEWlzTWF4Q2xhaW1hYmxlVVNEBQZvbGRTdW0BaQEQc2V0TXVsdGlTY2hlZHVsZQEJc2NoZWR1bGVzAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIGZGVuaWVkCgEEZm9sZAIDYWNjCHNjaGVkdWxlAwkAAAIFCHNjaGVkdWxlAgAJAAIBAhFpbnZhbGlkIHNjaGVkdWxlcwQFcGFydHMJALUJAgUIc2NoZWR1bGUCAT0DCQECIT0CCQCQAwEFBXBhcnRzAAIJAAIBAippbnZhbGlkIGZvcm1hdDogYWRyPXdhdmVsZXRzUGVyQmxvY2tbLG1heF0EAnRvCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQVwYXJ0cwAACQCsAgICEWludmFsaWQgYWRkcmVzczogCQCRAwIFBXBhcnRzAAAEDWJsb2NrTWF4UGFydHMJALUJAgkAkQMCBQVwYXJ0cwABAgEsBAh3YXZlbGV0cwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQC2CQEJAJEDAgUNYmxvY2tNYXhQYXJ0cwAACQCsAgICGWludmFsaWQgd2F2ZXRldHMgbnVtYmVyOiAJAJEDAgUNYmxvY2tNYXhQYXJ0cwAABAskdDA1MTY4NTUzNAMJAAACCQCQAwEFDWJsb2NrTWF4UGFydHMAAgQNbWF4QW5kVXNkUGFydAkAtQkCCQCRAwIFDWJsb2NrTWF4UGFydHMAAQIBJAkAlAoCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQkAkQMCBQ1tYXhBbmRVc2RQYXJ0AAAJAKwCAgIUaW52YWxpZCBtYXggbnVtYmVyOiAJAJEDAgUNbWF4QW5kVXNkUGFydAAACQAAAgkAkAMBBQ1tYXhBbmRVc2RQYXJ0AAIJAJQKAgAABwQMbWF4Q2xhaW1hYmxlCAULJHQwNTE2ODU1MzQCXzEEEWlzTWF4Q2xhaW1hYmxlVVNECAULJHQwNTE2ODU1MzQCXzIECyR0MDU1NTI1NTg0BQNhY2MEBGNtZHMIBQskdDA1NTUyNTU4NAJfMQQDc3VtCAULJHQwNTU1MjU1ODQCXzIECWFkZHJlc3NlcwgFCyR0MDU1NTI1NTg0Al8zBAV0b1N0cgkApQgBBQJ0bwMJAQlpc0RlZmluZWQBCQDPCAIFCWFkZHJlc3NlcwUFdG9TdHIJAAIBCQCsAgICC2R1YmxpY2F0ZTogBQV0b1N0cgQLJHQwNTcxNTU4MTMJARNzZXRTY2hlZHVsZUludGVybmFsBQUFdG9TdHIFCHdhdmVsZXRzBQxtYXhDbGFpbWFibGUFEWlzTWF4Q2xhaW1hYmxlVVNEBQNzdW0EB25ld0NtZHMIBQskdDA1NzE1NTgxMwJfMQQGbmV3U3VtCAULJHQwNTcxNTU4MTMCXzIJAJUKAwkAzggCBQRjbWRzBQduZXdDbWRzBQZuZXdTdW0JAM4IAgUJYWRkcmVzc2VzCQDMCAIFBXRvU3RyBQNuaWwECyR0MDU4ODE1OTU3CgACJGwJALUJAgUJc2NoZWR1bGVzAgF8CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlQoDBQNuaWwFBm9sZFN1bQUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQRmb2xkAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAyMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQEBGNtZHMIBQskdDA1ODgxNTk1NwJfMQQDc3VtCAULJHQwNTg4MTU5NTcCXzIEAnhfCAULJHQwNTg4MTU5NTcCXzMJAJQKAgUEY21kcwUDc3VtAWkBBUNsYWltAAQFdG9BZHIIBQFpBmNhbGxlcgQCdG8JAKUIAQUFdG9BZHIEAWEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBCQEVd2F2ZWxldHNQZXJCbG9ja1N0b3JlAQUCdG8CEWFkZHJlc3Mgbm90IGZvdW5kAwkAAAIFAWEFAWEEBmFtb3VudAkBDGF2YWlsYWJsZU5vdwEFAnRvBAdwYXltZW50CQCXAwEJAMwIAggJAO8HAQUEdGhpcwlhdmFpbGFibGUJAMwIAgUGYW1vdW50BQNuaWwDCQBnAgAABQdwYXltZW50CQACAQIQbm90aGluZyB0byBjbGFpbQQNY2xhaW1lZFN0b3JlMQkBDGNsYWltZWRTdG9yZQEFAnRvBAdjbGFpbWVkCQELdmFsdWVPckVsc2UCCQCfCAEFDWNsYWltZWRTdG9yZTEAAAQQY2xhaW1lZFVTRFN0b3JlMQkBD2NsYWltZWRVU0RTdG9yZQEFAnRvBApjbGFpbWVkVVNECQELdmFsdWVPckVsc2UCCQCfCAEFEGNsYWltZWRVU0RTdG9yZTEJAQp3YXZlc1RvVVNEAQUHY2xhaW1lZAQKcGF5bWVudFVTRAkBCndhdmVzVG9VU0QBBQdwYXltZW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBXRvQWRyBQdwYXltZW50BQR1bml0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1jbGFpbWVkU3RvcmUxCQBkAgUHY2xhaW1lZAUHcGF5bWVudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUQY2xhaW1lZFVTRFN0b3JlMQkAZAIFCmNsYWltZWRVU0QFCnBheW1lbnRVU0QFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgDxgs9u", "chainId": 87, "height": 3827896, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HsiWcTrammu6zv4bhqWu93fUje9qsiveb3jULbsBZUpE Next: DA3zoP5BzG6UaxYYQtqWdLZaQfRpDFJD9x3ocCjhRrvG Diff:
OldNewDifferences
2727 func l (h) = (h + "_wavelets_max_claimable")
2828
2929
30-let m = "wavelets_per_block_sum"
31-
32-let n = "wavelets_per_block_max"
33-
34-let o = valueOrElse(getInteger(this, "wavelets_per_block_max"), 189950000)
35-
36-let p = valueOrErrorMessage(addressFromString(valueOrElse(getString("oracle"), "3PKkojKdd6BBzTf1RXbQVfUDraNFXXHKzQF")), "invalid oracle address")
37-
38-let q = valueOrElse(getString("wave-price-key"), "%s%s__price__WAVES-USDT")
39-
40-let r = valueOrErrorMessage(getInteger(p, q), "WAVES price is not in the Oracle")
41-
42-let s = valueOrElse(getInteger(m), 0)
43-
44-func t (u,v) = if ((0 > v))
45- then throw(((("writing negative value " + toString(v)) + " for key ") + u))
46- else IntegerEntry(u, v)
30+func m (h) = (h + "_wavelets_max_claimable_is_usd")
4731
4832
49-func w (u,v) = t(u, (valueOrElse(getInteger(this, u), 0) + v))
33+let n = "wavelets_per_block_sum"
34+
35+let o = "wavelets_per_block_max"
36+
37+let p = valueOrElse(getInteger(this, "wavelets_per_block_max"), 189950000)
38+
39+let q = valueOrErrorMessage(addressFromString(valueOrElse(getString("oracle"), "3PKkojKdd6BBzTf1RXbQVfUDraNFXXHKzQF")), "invalid oracle address")
40+
41+let r = valueOrElse(getString("wave-price-key"), "%s%s__price__WAVES-USDT")
42+
43+let s = valueOrErrorMessage(getInteger(q, r), "WAVES price is not in the Oracle")
44+
45+func t (u) = fraction(u, s, 1000000)
5046
5147
48+func v (u) = fraction(u, 100000000, s)
49+
50+
51+let w = valueOrElse(getInteger(n), 0)
52+
5253 func x (y) = {
53- let z = g(y)
54- let A = getInteger(z)
55- let B = if (!(isDefined(A)))
54+ let z = getInteger(g(y))
55+ let A = if (!(isDefined(z)))
5656 then 0
5757 else {
58- let C = value(getInteger(i(y)))
59- let D = (height - C)
60- (value(A) * D)
58+ let B = value(getInteger(i(y)))
59+ let C = (height - B)
60+ (value(z) * C)
6161 }
62- let E = min([B, valueOrElse(getInteger(l(y)), B)])
63- let F = valueOrElse(getInteger(j(y)), 0)
64- let G = (E - F)
65- if ((0 > G))
66- then throw("negative availableNow")
67- else G
62+ let D = valueOrElse(getInteger(j(y)), 0)
63+ let E = (A - D)
64+ let F = getInteger(l(y))
65+ if (isDefined(F))
66+ then if (valueOrElse(getBoolean(m(y)), false))
67+ then {
68+ let G = valueOrElse(getInteger(k(y)), t(D))
69+ let H = (value(F) - G)
70+ let I = v(H)
71+ min([I, E])
72+ }
73+ else {
74+ let J = min([A, value(F)])
75+ (J - D)
76+ }
77+ else E
6878 }
6979
7080
71-func H (y,I,J,K) = if ((0 > I))
81+func K (y,L,F,M,N) = if ((0 > L))
7282 then throw("waveletsPerBlock should be >= 0")
7383 else {
74- let z = g(y)
75- let L = valueOrElse(getInteger(z), 0)
76- let M = ((K - L) + I)
77- let N = i(y)
78- let F = j(y)
79- if ((M > o))
84+ let O = g(y)
85+ let P = valueOrElse(getInteger(O), 0)
86+ let Q = ((N - P) + L)
87+ let R = i(y)
88+ let S = j(y)
89+ if ((Q > p))
8090 then throw("maximum exceeded")
8191 else {
82- let O = l(y)
83- let P = if ((J == 0))
92+ let T = l(y)
93+ let U = m(y)
94+ let V = if ((F == 0))
8495 then nil
85- else if ((J == -1))
86- then [DeleteEntry(O)]
87- else [IntegerEntry(O, J)]
88- $Tuple2(([IntegerEntry(z, I), IntegerEntry(N, height), IntegerEntry(F, -(x(y))), IntegerEntry(m, M)] ++ P), M)
96+ else if ((0 > F))
97+ then [DeleteEntry(T), DeleteEntry(U)]
98+ else [IntegerEntry(T, F), BooleanEntry(U, M)]
99+ $Tuple2(([IntegerEntry(O, L), IntegerEntry(R, height), IntegerEntry(S, -(x(y))), IntegerEntry(n, Q)] ++ V), Q)
89100 }
90101 }
91102
92103
93-@Callable(Q)
94-func setScedule (y,I) = if ((Q.caller != this))
104+@Callable(W)
105+func setScedule (y,L) = if ((W.caller != this))
95106 then throw("denied")
96- else H(y, I, 0, s)
107+ else K(y, L, 0, false, w)
97108
98109
99110
100-@Callable(Q)
101-func setSchedule (y,I,J) = if ((Q.caller != this))
111+@Callable(W)
112+func setSchedule (y,L,F,M) = if ((W.caller != this))
102113 then throw("denied")
103- else H(y, I, J, s)
114+ else K(y, L, F, M, w)
104115
105116
106117
107-@Callable(Q)
108-func setMultiSchedule (R) = if ((Q.caller != this))
118+@Callable(W)
119+func setMultiSchedule (X) = if ((W.caller != this))
109120 then throw("denied")
110121 else {
111- func S (T,U) = if ((U == ""))
122+ func Y (Z,aa) = if ((aa == ""))
112123 then throw("invalid schedules")
113124 else {
114- let V = split(U, "=")
115- if ((size(V) != 2))
125+ let ab = split(aa, "=")
126+ if ((size(ab) != 2))
116127 then throw("invalid format: adr=waveletsPerBlock[,max]")
117128 else {
118- let y = valueOrErrorMessage(addressFromString(V[0]), ("invalid address: " + V[0]))
119- let W = split(V[1], ",")
120- let X = valueOrErrorMessage(parseInt(W[0]), ("invalid wavetets number: " + W[0]))
121- let J = if ((size(W) == 2))
122- then valueOrErrorMessage(parseInt(W[1]), ("invalid max number: " + W[1]))
123- else 0
124- let Y = T
125- let Z = Y._1
126- let K = Y._2
127- let aa = Y._3
128- let ab = toString(y)
129- if (isDefined(indexOf(aa, ab)))
130- then throw(("dublicate: " + ab))
129+ let y = valueOrErrorMessage(addressFromString(ab[0]), ("invalid address: " + ab[0]))
130+ let ac = split(ab[1], ",")
131+ let ad = valueOrErrorMessage(parseInt(ac[0]), ("invalid wavetets number: " + ac[0]))
132+ let ae = if ((size(ac) == 2))
133+ then {
134+ let af = split(ac[1], "$")
135+ $Tuple2(valueOrErrorMessage(parseInt(af[0]), ("invalid max number: " + af[0])), (size(af) == 2))
136+ }
137+ else $Tuple2(0, false)
138+ let F = ae._1
139+ let M = ae._2
140+ let ag = Z
141+ let ah = ag._1
142+ let N = ag._2
143+ let ai = ag._3
144+ let aj = toString(y)
145+ if (isDefined(indexOf(ai, aj)))
146+ then throw(("dublicate: " + aj))
131147 else {
132- let ac = H(ab, X, J, K)
133- let ad = ac._1
134- let M = ac._2
135- $Tuple3((Z ++ ad), M, (aa ++ [ab]))
148+ let ak = K(aj, ad, F, M, N)
149+ let al = ak._1
150+ let Q = ak._2
151+ $Tuple3((ah ++ al), Q, (ai ++ [aj]))
136152 }
137153 }
138154 }
139155
140- let ae = {
141- let af = split(R, "|")
142- let ag = size(af)
143- let ah = $Tuple3(nil, s, nil)
144- func ai (aj,ak) = if ((ak >= ag))
145- then aj
146- else S(aj, af[ak])
156+ let am = {
157+ let an = split(X, "|")
158+ let ao = size(an)
159+ let ap = $Tuple3(nil, w, nil)
160+ func aq (ar,as) = if ((as >= ao))
161+ then ar
162+ else Y(ar, an[as])
147163
148- func al (aj,ak) = if ((ak >= ag))
149- then aj
164+ func at (ar,as) = if ((as >= ao))
165+ then ar
150166 else throw("List size exceeds 20")
151167
152- al(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ah, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
168+ at(aq(aq(aq(aq(aq(aq(aq(aq(aq(aq(aq(aq(aq(aq(aq(aq(aq(aq(aq(aq(ap, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
153169 }
154- let Z = ae._1
155- let K = ae._2
156- let am = ae._3
157- $Tuple2(Z, K)
170+ let ah = am._1
171+ let N = am._2
172+ let au = am._3
173+ $Tuple2(ah, N)
158174 }
159175
160176
161177
162-@Callable(Q)
178+@Callable(W)
163179 func Claim () = {
164- let an = Q.caller
165- let y = toString(an)
166- let ao = valueOrErrorMessage(getInteger(g(y)), "address not found")
167- if ((ao == ao))
180+ let av = W.caller
181+ let y = toString(av)
182+ let aw = valueOrErrorMessage(getInteger(g(y)), "address not found")
183+ if ((aw == aw))
168184 then {
169- let ap = x(y)
170- let aq = min([wavesBalance(this).available, ap])
171- if ((aq == 0))
185+ let ax = x(y)
186+ let ay = min([wavesBalance(this).available, ax])
187+ if ((0 >= ay))
172188 then throw("nothing to claim")
173189 else {
174- let ar = fraction(aq, r, 1000000)
175-[ScriptTransfer(an, aq, unit), w(j(y), aq), w(k(y), ar)]
190+ let az = j(y)
191+ let S = valueOrElse(getInteger(az), 0)
192+ let aA = k(y)
193+ let G = valueOrElse(getInteger(aA), t(S))
194+ let aB = t(ay)
195+[ScriptTransfer(av, ay, unit), IntegerEntry(az, (S + ay)), IntegerEntry(aA, (G + aB))]
176196 }
177197 }
178198 else throw("Strict value is not equal to itself.")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "config"
55
66 let b = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, a), "child: config address not found")), "invalid config address")
77
88 let c = height
99
1010 func d (e) = (("op_" + e) + "_allowed")
1111
1212
1313 let f = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(b, "contract_voting_result"), "no contract_voting_result")), "invalid contract_voting_result")
1414
1515 func g (h) = (h + "_wavelets_per_block")
1616
1717
1818 func i (h) = (h + "_start_height")
1919
2020
2121 func j (h) = (h + "wavelets_claimed")
2222
2323
2424 func k (h) = (h + "_wavelets_claimed_usd")
2525
2626
2727 func l (h) = (h + "_wavelets_max_claimable")
2828
2929
30-let m = "wavelets_per_block_sum"
31-
32-let n = "wavelets_per_block_max"
33-
34-let o = valueOrElse(getInteger(this, "wavelets_per_block_max"), 189950000)
35-
36-let p = valueOrErrorMessage(addressFromString(valueOrElse(getString("oracle"), "3PKkojKdd6BBzTf1RXbQVfUDraNFXXHKzQF")), "invalid oracle address")
37-
38-let q = valueOrElse(getString("wave-price-key"), "%s%s__price__WAVES-USDT")
39-
40-let r = valueOrErrorMessage(getInteger(p, q), "WAVES price is not in the Oracle")
41-
42-let s = valueOrElse(getInteger(m), 0)
43-
44-func t (u,v) = if ((0 > v))
45- then throw(((("writing negative value " + toString(v)) + " for key ") + u))
46- else IntegerEntry(u, v)
30+func m (h) = (h + "_wavelets_max_claimable_is_usd")
4731
4832
49-func w (u,v) = t(u, (valueOrElse(getInteger(this, u), 0) + v))
33+let n = "wavelets_per_block_sum"
34+
35+let o = "wavelets_per_block_max"
36+
37+let p = valueOrElse(getInteger(this, "wavelets_per_block_max"), 189950000)
38+
39+let q = valueOrErrorMessage(addressFromString(valueOrElse(getString("oracle"), "3PKkojKdd6BBzTf1RXbQVfUDraNFXXHKzQF")), "invalid oracle address")
40+
41+let r = valueOrElse(getString("wave-price-key"), "%s%s__price__WAVES-USDT")
42+
43+let s = valueOrErrorMessage(getInteger(q, r), "WAVES price is not in the Oracle")
44+
45+func t (u) = fraction(u, s, 1000000)
5046
5147
48+func v (u) = fraction(u, 100000000, s)
49+
50+
51+let w = valueOrElse(getInteger(n), 0)
52+
5253 func x (y) = {
53- let z = g(y)
54- let A = getInteger(z)
55- let B = if (!(isDefined(A)))
54+ let z = getInteger(g(y))
55+ let A = if (!(isDefined(z)))
5656 then 0
5757 else {
58- let C = value(getInteger(i(y)))
59- let D = (height - C)
60- (value(A) * D)
58+ let B = value(getInteger(i(y)))
59+ let C = (height - B)
60+ (value(z) * C)
6161 }
62- let E = min([B, valueOrElse(getInteger(l(y)), B)])
63- let F = valueOrElse(getInteger(j(y)), 0)
64- let G = (E - F)
65- if ((0 > G))
66- then throw("negative availableNow")
67- else G
62+ let D = valueOrElse(getInteger(j(y)), 0)
63+ let E = (A - D)
64+ let F = getInteger(l(y))
65+ if (isDefined(F))
66+ then if (valueOrElse(getBoolean(m(y)), false))
67+ then {
68+ let G = valueOrElse(getInteger(k(y)), t(D))
69+ let H = (value(F) - G)
70+ let I = v(H)
71+ min([I, E])
72+ }
73+ else {
74+ let J = min([A, value(F)])
75+ (J - D)
76+ }
77+ else E
6878 }
6979
7080
71-func H (y,I,J,K) = if ((0 > I))
81+func K (y,L,F,M,N) = if ((0 > L))
7282 then throw("waveletsPerBlock should be >= 0")
7383 else {
74- let z = g(y)
75- let L = valueOrElse(getInteger(z), 0)
76- let M = ((K - L) + I)
77- let N = i(y)
78- let F = j(y)
79- if ((M > o))
84+ let O = g(y)
85+ let P = valueOrElse(getInteger(O), 0)
86+ let Q = ((N - P) + L)
87+ let R = i(y)
88+ let S = j(y)
89+ if ((Q > p))
8090 then throw("maximum exceeded")
8191 else {
82- let O = l(y)
83- let P = if ((J == 0))
92+ let T = l(y)
93+ let U = m(y)
94+ let V = if ((F == 0))
8495 then nil
85- else if ((J == -1))
86- then [DeleteEntry(O)]
87- else [IntegerEntry(O, J)]
88- $Tuple2(([IntegerEntry(z, I), IntegerEntry(N, height), IntegerEntry(F, -(x(y))), IntegerEntry(m, M)] ++ P), M)
96+ else if ((0 > F))
97+ then [DeleteEntry(T), DeleteEntry(U)]
98+ else [IntegerEntry(T, F), BooleanEntry(U, M)]
99+ $Tuple2(([IntegerEntry(O, L), IntegerEntry(R, height), IntegerEntry(S, -(x(y))), IntegerEntry(n, Q)] ++ V), Q)
89100 }
90101 }
91102
92103
93-@Callable(Q)
94-func setScedule (y,I) = if ((Q.caller != this))
104+@Callable(W)
105+func setScedule (y,L) = if ((W.caller != this))
95106 then throw("denied")
96- else H(y, I, 0, s)
107+ else K(y, L, 0, false, w)
97108
98109
99110
100-@Callable(Q)
101-func setSchedule (y,I,J) = if ((Q.caller != this))
111+@Callable(W)
112+func setSchedule (y,L,F,M) = if ((W.caller != this))
102113 then throw("denied")
103- else H(y, I, J, s)
114+ else K(y, L, F, M, w)
104115
105116
106117
107-@Callable(Q)
108-func setMultiSchedule (R) = if ((Q.caller != this))
118+@Callable(W)
119+func setMultiSchedule (X) = if ((W.caller != this))
109120 then throw("denied")
110121 else {
111- func S (T,U) = if ((U == ""))
122+ func Y (Z,aa) = if ((aa == ""))
112123 then throw("invalid schedules")
113124 else {
114- let V = split(U, "=")
115- if ((size(V) != 2))
125+ let ab = split(aa, "=")
126+ if ((size(ab) != 2))
116127 then throw("invalid format: adr=waveletsPerBlock[,max]")
117128 else {
118- let y = valueOrErrorMessage(addressFromString(V[0]), ("invalid address: " + V[0]))
119- let W = split(V[1], ",")
120- let X = valueOrErrorMessage(parseInt(W[0]), ("invalid wavetets number: " + W[0]))
121- let J = if ((size(W) == 2))
122- then valueOrErrorMessage(parseInt(W[1]), ("invalid max number: " + W[1]))
123- else 0
124- let Y = T
125- let Z = Y._1
126- let K = Y._2
127- let aa = Y._3
128- let ab = toString(y)
129- if (isDefined(indexOf(aa, ab)))
130- then throw(("dublicate: " + ab))
129+ let y = valueOrErrorMessage(addressFromString(ab[0]), ("invalid address: " + ab[0]))
130+ let ac = split(ab[1], ",")
131+ let ad = valueOrErrorMessage(parseInt(ac[0]), ("invalid wavetets number: " + ac[0]))
132+ let ae = if ((size(ac) == 2))
133+ then {
134+ let af = split(ac[1], "$")
135+ $Tuple2(valueOrErrorMessage(parseInt(af[0]), ("invalid max number: " + af[0])), (size(af) == 2))
136+ }
137+ else $Tuple2(0, false)
138+ let F = ae._1
139+ let M = ae._2
140+ let ag = Z
141+ let ah = ag._1
142+ let N = ag._2
143+ let ai = ag._3
144+ let aj = toString(y)
145+ if (isDefined(indexOf(ai, aj)))
146+ then throw(("dublicate: " + aj))
131147 else {
132- let ac = H(ab, X, J, K)
133- let ad = ac._1
134- let M = ac._2
135- $Tuple3((Z ++ ad), M, (aa ++ [ab]))
148+ let ak = K(aj, ad, F, M, N)
149+ let al = ak._1
150+ let Q = ak._2
151+ $Tuple3((ah ++ al), Q, (ai ++ [aj]))
136152 }
137153 }
138154 }
139155
140- let ae = {
141- let af = split(R, "|")
142- let ag = size(af)
143- let ah = $Tuple3(nil, s, nil)
144- func ai (aj,ak) = if ((ak >= ag))
145- then aj
146- else S(aj, af[ak])
156+ let am = {
157+ let an = split(X, "|")
158+ let ao = size(an)
159+ let ap = $Tuple3(nil, w, nil)
160+ func aq (ar,as) = if ((as >= ao))
161+ then ar
162+ else Y(ar, an[as])
147163
148- func al (aj,ak) = if ((ak >= ag))
149- then aj
164+ func at (ar,as) = if ((as >= ao))
165+ then ar
150166 else throw("List size exceeds 20")
151167
152- al(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ah, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
168+ at(aq(aq(aq(aq(aq(aq(aq(aq(aq(aq(aq(aq(aq(aq(aq(aq(aq(aq(aq(aq(ap, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
153169 }
154- let Z = ae._1
155- let K = ae._2
156- let am = ae._3
157- $Tuple2(Z, K)
170+ let ah = am._1
171+ let N = am._2
172+ let au = am._3
173+ $Tuple2(ah, N)
158174 }
159175
160176
161177
162-@Callable(Q)
178+@Callable(W)
163179 func Claim () = {
164- let an = Q.caller
165- let y = toString(an)
166- let ao = valueOrErrorMessage(getInteger(g(y)), "address not found")
167- if ((ao == ao))
180+ let av = W.caller
181+ let y = toString(av)
182+ let aw = valueOrErrorMessage(getInteger(g(y)), "address not found")
183+ if ((aw == aw))
168184 then {
169- let ap = x(y)
170- let aq = min([wavesBalance(this).available, ap])
171- if ((aq == 0))
185+ let ax = x(y)
186+ let ay = min([wavesBalance(this).available, ax])
187+ if ((0 >= ay))
172188 then throw("nothing to claim")
173189 else {
174- let ar = fraction(aq, r, 1000000)
175-[ScriptTransfer(an, aq, unit), w(j(y), aq), w(k(y), ar)]
190+ let az = j(y)
191+ let S = valueOrElse(getInteger(az), 0)
192+ let aA = k(y)
193+ let G = valueOrElse(getInteger(aA), t(S))
194+ let aB = t(ay)
195+[ScriptTransfer(av, ay, unit), IntegerEntry(az, (S + ay)), IntegerEntry(aA, (G + aB))]
176196 }
177197 }
178198 else throw("Strict value is not equal to itself.")
179199 }
180200
181201

github/deemru/w8io/3ef1775 
67.68 ms