tx · HsiWcTrammu6zv4bhqWu93fUje9qsiveb3jULbsBZUpE

3PRAEZqBjrUDaDvv45HGWPb94DhD6UuZfWg:  -0.00500000 Waves

2023.09.19 11:08 [3827785] smart account 3PRAEZqBjrUDaDvv45HGWPb94DhD6UuZfWg > SELF 0.00000000 Waves

{ "type": 13, "id": "HsiWcTrammu6zv4bhqWu93fUje9qsiveb3jULbsBZUpE", "fee": 500000, "feeAssetId": null, "timestamp": 1695110957016, "version": 1, "sender": "3PRAEZqBjrUDaDvv45HGWPb94DhD6UuZfWg", "senderPublicKey": "DWfBoSph5SQ9fuKvBjSecymWnfmRnBFh9FYg2QEV6bwS", "proofs": [ "ywdnkAdjrwipfeKzvhFT2ZbG7psPxmH8fkShBSTk5WFYGAQqtn9LRGpeXJgoK95FXFqFJkaapyMBoQJqifHAxq2" ], "script": "base64:BgIWCAISBAoCCAESBQoDCAEBEgMKAQgSABUAEmNvbmZpZ0FkZHJlc3NTdG9yZQIGY29uZmlnAA1jb25maWdBZGRyZXNzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFEmNvbmZpZ0FkZHJlc3NTdG9yZQIfY2hpbGQ6IGNvbmZpZyBhZGRyZXNzIG5vdCBmb3VuZAIWaW52YWxpZCBjb25maWcgYWRkcmVzcwAGSEVJR0hUBQZoZWlnaHQBDm9wQWxsb3dlZFN0b3JlAQJvcAkArAICCQCsAgICA29wXwUCb3ACCF9hbGxvd2VkAA12b3RpbmdSZXN1bHRzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDWNvbmZpZ0FkZHJlc3MCFmNvbnRyYWN0X3ZvdGluZ19yZXN1bHQCGW5vIGNvbnRyYWN0X3ZvdGluZ19yZXN1bHQCHmludmFsaWQgY29udHJhY3Rfdm90aW5nX3Jlc3VsdAEVd2F2ZWxldHNQZXJCbG9ja1N0b3JlAQdhZGRyZXNzCQCsAgIFB2FkZHJlc3MCE193YXZlbGV0c19wZXJfYmxvY2sBEHN0YXJ0SGVpZ2h0U3RvcmUBB2FkZHJlc3MJAKwCAgUHYWRkcmVzcwINX3N0YXJ0X2hlaWdodAEMY2xhaW1lZFN0b3JlAQdhZGRyZXNzCQCsAgIFB2FkZHJlc3MCEHdhdmVsZXRzX2NsYWltZWQBD2NsYWltZWRVU0RTdG9yZQEHYWRkcmVzcwkArAICBQdhZGRyZXNzAhVfd2F2ZWxldHNfY2xhaW1lZF91c2QBEW1heENsYWltYWJsZVN0b3JlAQdhZGRyZXNzCQCsAgIFB2FkZHJlc3MCF193YXZlbGV0c19tYXhfY2xhaW1hYmxlAAhzdW1TdG9yZQIWd2F2ZWxldHNfcGVyX2Jsb2NrX3N1bQAIbWF4U3RvcmUCFndhdmVsZXRzX3Blcl9ibG9ja19tYXgAB21heGltdW0JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwIWd2F2ZWxldHNfcGVyX2Jsb2NrX21heACw0MlaAAZvcmFjbGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQELdmFsdWVPckVsc2UCCQCiCAECBm9yYWNsZQIjM1BLa29qS2RkNkJCelRmMVJYYlFWZlVEcmFORlhYSEt6UUYCFmludmFsaWQgb3JhY2xlIGFkZHJlc3MADndhdmVQcmljZVN0b3JlCQELdmFsdWVPckVsc2UCCQCiCAECDndhdmUtcHJpY2Uta2V5AhclcyVzX19wcmljZV9fV0FWRVMtVVNEVAAJd2F2ZVByaWNlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUGb3JhY2xlBQ53YXZlUHJpY2VTdG9yZQIgV0FWRVMgcHJpY2UgaXMgbm90IGluIHRoZSBPcmFjbGUABm9sZFN1bQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQhzdW1TdG9yZQAAAQh3cml0ZUludAIDa2V5BXZhbHVlAwkAZgIAAAUFdmFsdWUJAAIBCQCsAgIJAKwCAgkArAICAhd3cml0aW5nIG5lZ2F0aXZlIHZhbHVlIAkApAMBBQV2YWx1ZQIJIGZvciBrZXkgBQNrZXkJAQxJbnRlZ2VyRW50cnkCBQNrZXkFBXZhbHVlAQhjaGFuZ2VCeQIDa2V5BXZhbHVlCQEId3JpdGVJbnQCBQNrZXkJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQAABQV2YWx1ZQEMYXZhaWxhYmxlTm93AQJ0bwQNcGVyQmxvY2tTdG9yZQkBFXdhdmVsZXRzUGVyQmxvY2tTdG9yZQEFAnRvBAhwZXJCbG9jawkAnwgBBQ1wZXJCbG9ja1N0b3JlBAV0b3RhbAMJAQEhAQkBCWlzRGVmaW5lZAEFCHBlckJsb2NrAAAECmZpcnN0QmxvY2sJAQV2YWx1ZQEJAJ8IAQkBEHN0YXJ0SGVpZ2h0U3RvcmUBBQJ0bwQGYmxvY2tzCQBlAgUGaGVpZ2h0BQpmaXJzdEJsb2NrCQBoAgkBBXZhbHVlAQUIcGVyQmxvY2sFBmJsb2NrcwQFZ3JhbnQJAJcDAQkAzAgCBQV0b3RhbAkAzAgCCQELdmFsdWVPckVsc2UCCQCfCAEJARFtYXhDbGFpbWFibGVTdG9yZQEFAnRvBQV0b3RhbAUDbmlsBAdjbGFpbWVkCQELdmFsdWVPckVsc2UCCQCfCAEJAQxjbGFpbWVkU3RvcmUBBQJ0bwAABAZyZXN1bHQJAGUCBQVncmFudAUHY2xhaW1lZAMJAGYCAAAFBnJlc3VsdAkAAgECFW5lZ2F0aXZlIGF2YWlsYWJsZU5vdwUGcmVzdWx0ARNzZXRTY2hlZHVsZUludGVybmFsBAJ0bxB3YXZlbGV0c1BlckJsb2NrDG1heENsYWltYWJsZQNzdW0DCQBmAgAABRB3YXZlbGV0c1BlckJsb2NrCQACAQIfd2F2ZWxldHNQZXJCbG9jayBzaG91bGQgYmUgPj0gMAQNcGVyQmxvY2tTdG9yZQkBFXdhdmVsZXRzUGVyQmxvY2tTdG9yZQEFAnRvBAtvbGRQZXJCbG9jawkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ1wZXJCbG9ja1N0b3JlAAAEBm5ld1N1bQkAZAIJAGUCBQNzdW0FC29sZFBlckJsb2NrBRB3YXZlbGV0c1BlckJsb2NrBAxoZWlnaHRTdG9yZTEJARBzdGFydEhlaWdodFN0b3JlAQUCdG8EB2NsYWltZWQJAQxjbGFpbWVkU3RvcmUBBQJ0bwMJAGYCBQZuZXdTdW0FB21heGltdW0JAAIBAhBtYXhpbXVtIGV4Y2VlZGVkBBJtYXhDbGFpbWFibGVTdG9yZTEJARFtYXhDbGFpbWFibGVTdG9yZQEFAnRvBBFtYXhDbGFpbWFibGVFbnRyeQMJAAACBQxtYXhDbGFpbWFibGUAAAUDbmlsAwkAAAIFDG1heENsYWltYWJsZQD///////////8BCQDMCAIJAQtEZWxldGVFbnRyeQEFEm1heENsYWltYWJsZVN0b3JlMQUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJtYXhDbGFpbWFibGVTdG9yZTEFDG1heENsYWltYWJsZQUDbmlsCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUNcGVyQmxvY2tTdG9yZQUQd2F2ZWxldHNQZXJCbG9jawkAzAgCCQEMSW50ZWdlckVudHJ5AgUMaGVpZ2h0U3RvcmUxBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFB2NsYWltZWQJAQEtAQkBDGF2YWlsYWJsZU5vdwEFAnRvCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQhzdW1TdG9yZQUGbmV3U3VtBQNuaWwFEW1heENsYWltYWJsZUVudHJ5BQZuZXdTdW0EAWkBCnNldFNjZWR1bGUCAnRvEHdhdmVsZXRzUGVyQmxvY2sDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAgZkZW5pZWQJARNzZXRTY2hlZHVsZUludGVybmFsBAUCdG8FEHdhdmVsZXRzUGVyQmxvY2sAAAUGb2xkU3VtAWkBC3NldFNjaGVkdWxlAwJ0bxB3YXZlbGV0c1BlckJsb2NrDG1heENsYWltYWJsZQMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECBmRlbmllZAkBE3NldFNjaGVkdWxlSW50ZXJuYWwEBQJ0bwUQd2F2ZWxldHNQZXJCbG9jawUMbWF4Q2xhaW1hYmxlBQZvbGRTdW0BaQEQc2V0TXVsdGlTY2hlZHVsZQEJc2NoZWR1bGVzAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIGZGVuaWVkCgEEZm9sZAIDYWNjCHNjaGVkdWxlAwkAAAIFCHNjaGVkdWxlAgAJAAIBAhFpbnZhbGlkIHNjaGVkdWxlcwQFcGFydHMJALUJAgUIc2NoZWR1bGUCAT0DCQECIT0CCQCQAwEFBXBhcnRzAAIJAAIBAippbnZhbGlkIGZvcm1hdDogYWRyPXdhdmVsZXRzUGVyQmxvY2tbLG1heF0EAnRvCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQVwYXJ0cwAACQCsAgICEWludmFsaWQgYWRkcmVzczogCQCRAwIFBXBhcnRzAAAEDWJsb2NrTWF4UGFydHMJALUJAgkAkQMCBQVwYXJ0cwABAgEsBAh3YXZlbGV0cwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQC2CQEJAJEDAgUNYmxvY2tNYXhQYXJ0cwAACQCsAgICGWludmFsaWQgd2F2ZXRldHMgbnVtYmVyOiAJAJEDAgUNYmxvY2tNYXhQYXJ0cwAABAxtYXhDbGFpbWFibGUDCQAAAgkAkAMBBQ1ibG9ja01heFBhcnRzAAIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAtgkBCQCRAwIFDWJsb2NrTWF4UGFydHMAAQkArAICAhRpbnZhbGlkIG1heCBudW1iZXI6IAkAkQMCBQ1ibG9ja01heFBhcnRzAAEAAAQLJHQwNDczMDQ3NjIFA2FjYwQEY21kcwgFCyR0MDQ3MzA0NzYyAl8xBANzdW0IBQskdDA0NzMwNDc2MgJfMgQJYWRkcmVzc2VzCAULJHQwNDczMDQ3NjICXzMEBXRvU3RyCQClCAEFAnRvAwkBCWlzRGVmaW5lZAEJAM8IAgUJYWRkcmVzc2VzBQV0b1N0cgkAAgEJAKwCAgILZHVibGljYXRlOiAFBXRvU3RyBAskdDA0ODkzNDk3MgkBE3NldFNjaGVkdWxlSW50ZXJuYWwEBQV0b1N0cgUId2F2ZWxldHMFDG1heENsYWltYWJsZQUDc3VtBAduZXdDbWRzCAULJHQwNDg5MzQ5NzICXzEEBm5ld1N1bQgFCyR0MDQ4OTM0OTcyAl8yCQCVCgMJAM4IAgUEY21kcwUHbmV3Q21kcwUGbmV3U3VtCQDOCAIFCWFkZHJlc3NlcwkAzAgCBQV0b1N0cgUDbmlsBAskdDA1MDQwNTExNgoAAiRsCQC1CQIFCXNjaGVkdWxlcwIBfAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJUKAwUDbmlsBQZvbGRTdW0FA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEEZm9sZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUBARjbWRzCAULJHQwNTA0MDUxMTYCXzEEA3N1bQgFCyR0MDUwNDA1MTE2Al8yBAJ4XwgFCyR0MDUwNDA1MTE2Al8zCQCUCgIFBGNtZHMFA3N1bQFpAQVDbGFpbQAEBXRvQWRyCAUBaQZjYWxsZXIEAnRvCQClCAEFBXRvQWRyBAFhCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQkBFXdhdmVsZXRzUGVyQmxvY2tTdG9yZQEFAnRvAhFhZGRyZXNzIG5vdCBmb3VuZAMJAAACBQFhBQFhBAZhbW91bnQJAQxhdmFpbGFibGVOb3cBBQJ0bwQHcGF5bWVudAkAlwMBCQDMCAIICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDMCAIFBmFtb3VudAUDbmlsAwkAAAIFB3BheW1lbnQAAAkAAgECEG5vdGhpbmcgdG8gY2xhaW0ECnBheW1lbnRVU0QJAGsDBQdwYXltZW50BQl3YXZlUHJpY2UAwIQ9CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBXRvQWRyBQdwYXltZW50BQR1bml0CQDMCAIJAQhjaGFuZ2VCeQIJAQxjbGFpbWVkU3RvcmUBBQJ0bwUHcGF5bWVudAkAzAgCCQEIY2hhbmdlQnkCCQEPY2xhaW1lZFVTRFN0b3JlAQUCdG8FCnBheW1lbnRVU0QFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgD8S7VS", "chainId": 87, "height": 3827785, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BfZaSV3ihCm5cYVrzJb8vcqyseWNPsak1BF6zTV7Vii2 Next: 7W7Lhxp1ZmDEneRwiMC4v4uNunyMbf9D65grj5kpoECo Diff:
OldNewDifferences
2121 func j (h) = (h + "wavelets_claimed")
2222
2323
24-func k (h) = (h + "_wavelets_max_claimable")
24+func k (h) = (h + "_wavelets_claimed_usd")
2525
2626
27-let l = "wavelets_per_block_sum"
27+func l (h) = (h + "_wavelets_max_claimable")
2828
29-let m = "wavelets_per_block_max"
3029
31-let n = valueOrElse(getInteger(this, "wavelets_per_block_max"), 189950000)
30+let m = "wavelets_per_block_sum"
3231
33-let o = valueOrElse(getInteger(l), 0)
32+let n = "wavelets_per_block_max"
3433
35-func p (q) = {
36- let r = g(q)
37- let s = getInteger(r)
38- let t = if (!(isDefined(s)))
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)
47+
48+
49+func w (u,v) = t(u, (valueOrElse(getInteger(this, u), 0) + v))
50+
51+
52+func x (y) = {
53+ let z = g(y)
54+ let A = getInteger(z)
55+ let B = if (!(isDefined(A)))
3956 then 0
4057 else {
41- let u = value(getInteger(i(q)))
42- let v = (height - u)
43- (value(s) * v)
58+ let C = value(getInteger(i(y)))
59+ let D = (height - C)
60+ (value(A) * D)
4461 }
45- let w = min([t, valueOrElse(getInteger(k(q)), t)])
46- let x = valueOrElse(getInteger(j(q)), 0)
47- let y = (w - x)
48- if ((0 > y))
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))
4966 then throw("negative availableNow")
50- else y
67+ else G
5168 }
5269
5370
54-func z (q,A,B,C) = if ((0 > A))
71+func H (y,I,J,K) = if ((0 > I))
5572 then throw("waveletsPerBlock should be >= 0")
5673 else {
57- let r = g(q)
58- let D = valueOrElse(getInteger(r), 0)
59- let E = ((C - D) + A)
60- let F = i(q)
61- let x = j(q)
62- if ((E > n))
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))
6380 then throw("maximum exceeded")
6481 else {
65- let G = k(q)
66- let H = if ((B == 0))
82+ let O = l(y)
83+ let P = if ((J == 0))
6784 then nil
68- else if ((B == -1))
69- then [DeleteEntry(G)]
70- else [IntegerEntry(G, B)]
71- $Tuple2(([IntegerEntry(r, A), IntegerEntry(F, height), IntegerEntry(x, -(p(q))), IntegerEntry(l, E)] ++ H), E)
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)
7289 }
7390 }
7491
7592
76-@Callable(I)
77-func setScedule (q,A) = if ((I.caller != this))
93+@Callable(Q)
94+func setScedule (y,I) = if ((Q.caller != this))
7895 then throw("denied")
79- else z(q, A, 0, o)
96+ else H(y, I, 0, s)
8097
8198
8299
83-@Callable(I)
84-func setSchedule (q,A,B) = if ((I.caller != this))
100+@Callable(Q)
101+func setSchedule (y,I,J) = if ((Q.caller != this))
85102 then throw("denied")
86- else z(q, A, B, o)
103+ else H(y, I, J, s)
87104
88105
89106
90-@Callable(I)
91-func setMultiSchedule (J) = if ((I.caller != this))
107+@Callable(Q)
108+func setMultiSchedule (R) = if ((Q.caller != this))
92109 then throw("denied")
93110 else {
94- func K (L,M) = if ((M == ""))
111+ func S (T,U) = if ((U == ""))
95112 then throw("invalid schedules")
96113 else {
97- let N = split(M, "=")
98- if ((size(N) != 2))
114+ let V = split(U, "=")
115+ if ((size(V) != 2))
99116 then throw("invalid format: adr=waveletsPerBlock[,max]")
100117 else {
101- let q = valueOrErrorMessage(addressFromString(N[0]), ("invalid address: " + N[0]))
102- let O = split(N[1], ",")
103- let P = valueOrErrorMessage(parseInt(O[0]), ("invalid wavetets number: " + O[0]))
104- let B = if ((size(O) == 2))
105- then valueOrErrorMessage(parseInt(O[1]), ("invalid max number: " + O[1]))
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]))
106123 else 0
107- let Q = L
108- let R = Q._1
109- let C = Q._2
110- let S = Q._3
111- let T = toString(q)
112- if (isDefined(indexOf(S, T)))
113- then throw(("dublicate: " + T))
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))
114131 else {
115- let U = z(T, P, B, C)
116- let V = U._1
117- let E = U._2
118- $Tuple3((R ++ V), E, (S ++ [T]))
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]))
119136 }
120137 }
121138 }
122139
123- let W = {
124- let X = split(J, "|")
125- let Y = size(X)
126- let Z = $Tuple3(nil, o, nil)
127- func aa (ab,ac) = if ((ac >= Y))
128- then ab
129- else K(ab, X[ac])
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])
130147
131- func ad (ab,ac) = if ((ac >= Y))
132- then ab
148+ func al (aj,ak) = if ((ak >= ag))
149+ then aj
133150 else throw("List size exceeds 20")
134151
135- ad(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(Z, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
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)
136153 }
137- let R = W._1
138- let C = W._2
139- let ae = W._3
140- $Tuple2(R, C)
154+ let Z = ae._1
155+ let K = ae._2
156+ let am = ae._3
157+ $Tuple2(Z, K)
141158 }
142159
143160
144161
145-@Callable(I)
162+@Callable(Q)
146163 func Claim () = {
147- let af = I.caller
148- let q = toString(af)
149- let ag = valueOrErrorMessage(getInteger(g(q)), "address not found")
150- if ((ag == ag))
164+ let an = Q.caller
165+ let y = toString(an)
166+ let ao = valueOrErrorMessage(getInteger(g(y)), "address not found")
167+ if ((ao == ao))
151168 then {
152- let ah = j(q)
153- let x = valueOrElse(getInteger(ah), 0)
154- let ai = p(q)
155- let aj = min([wavesBalance(this).available, ai])
156- if ((aj == 0))
169+ let ap = x(y)
170+ let aq = min([wavesBalance(this).available, ap])
171+ if ((aq == 0))
157172 then throw("nothing to claim")
158- else [ScriptTransfer(af, aj, unit), IntegerEntry(ah, (x + aj))]
173+ else {
174+ let ar = fraction(aq, r, 1000000)
175+[ScriptTransfer(an, aq, unit), w(j(y), aq), w(k(y), ar)]
176+ }
159177 }
160178 else throw("Strict value is not equal to itself.")
161179 }
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
24-func k (h) = (h + "_wavelets_max_claimable")
24+func k (h) = (h + "_wavelets_claimed_usd")
2525
2626
27-let l = "wavelets_per_block_sum"
27+func l (h) = (h + "_wavelets_max_claimable")
2828
29-let m = "wavelets_per_block_max"
3029
31-let n = valueOrElse(getInteger(this, "wavelets_per_block_max"), 189950000)
30+let m = "wavelets_per_block_sum"
3231
33-let o = valueOrElse(getInteger(l), 0)
32+let n = "wavelets_per_block_max"
3433
35-func p (q) = {
36- let r = g(q)
37- let s = getInteger(r)
38- let t = if (!(isDefined(s)))
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)
47+
48+
49+func w (u,v) = t(u, (valueOrElse(getInteger(this, u), 0) + v))
50+
51+
52+func x (y) = {
53+ let z = g(y)
54+ let A = getInteger(z)
55+ let B = if (!(isDefined(A)))
3956 then 0
4057 else {
41- let u = value(getInteger(i(q)))
42- let v = (height - u)
43- (value(s) * v)
58+ let C = value(getInteger(i(y)))
59+ let D = (height - C)
60+ (value(A) * D)
4461 }
45- let w = min([t, valueOrElse(getInteger(k(q)), t)])
46- let x = valueOrElse(getInteger(j(q)), 0)
47- let y = (w - x)
48- if ((0 > y))
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))
4966 then throw("negative availableNow")
50- else y
67+ else G
5168 }
5269
5370
54-func z (q,A,B,C) = if ((0 > A))
71+func H (y,I,J,K) = if ((0 > I))
5572 then throw("waveletsPerBlock should be >= 0")
5673 else {
57- let r = g(q)
58- let D = valueOrElse(getInteger(r), 0)
59- let E = ((C - D) + A)
60- let F = i(q)
61- let x = j(q)
62- if ((E > n))
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))
6380 then throw("maximum exceeded")
6481 else {
65- let G = k(q)
66- let H = if ((B == 0))
82+ let O = l(y)
83+ let P = if ((J == 0))
6784 then nil
68- else if ((B == -1))
69- then [DeleteEntry(G)]
70- else [IntegerEntry(G, B)]
71- $Tuple2(([IntegerEntry(r, A), IntegerEntry(F, height), IntegerEntry(x, -(p(q))), IntegerEntry(l, E)] ++ H), E)
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)
7289 }
7390 }
7491
7592
76-@Callable(I)
77-func setScedule (q,A) = if ((I.caller != this))
93+@Callable(Q)
94+func setScedule (y,I) = if ((Q.caller != this))
7895 then throw("denied")
79- else z(q, A, 0, o)
96+ else H(y, I, 0, s)
8097
8198
8299
83-@Callable(I)
84-func setSchedule (q,A,B) = if ((I.caller != this))
100+@Callable(Q)
101+func setSchedule (y,I,J) = if ((Q.caller != this))
85102 then throw("denied")
86- else z(q, A, B, o)
103+ else H(y, I, J, s)
87104
88105
89106
90-@Callable(I)
91-func setMultiSchedule (J) = if ((I.caller != this))
107+@Callable(Q)
108+func setMultiSchedule (R) = if ((Q.caller != this))
92109 then throw("denied")
93110 else {
94- func K (L,M) = if ((M == ""))
111+ func S (T,U) = if ((U == ""))
95112 then throw("invalid schedules")
96113 else {
97- let N = split(M, "=")
98- if ((size(N) != 2))
114+ let V = split(U, "=")
115+ if ((size(V) != 2))
99116 then throw("invalid format: adr=waveletsPerBlock[,max]")
100117 else {
101- let q = valueOrErrorMessage(addressFromString(N[0]), ("invalid address: " + N[0]))
102- let O = split(N[1], ",")
103- let P = valueOrErrorMessage(parseInt(O[0]), ("invalid wavetets number: " + O[0]))
104- let B = if ((size(O) == 2))
105- then valueOrErrorMessage(parseInt(O[1]), ("invalid max number: " + O[1]))
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]))
106123 else 0
107- let Q = L
108- let R = Q._1
109- let C = Q._2
110- let S = Q._3
111- let T = toString(q)
112- if (isDefined(indexOf(S, T)))
113- then throw(("dublicate: " + T))
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))
114131 else {
115- let U = z(T, P, B, C)
116- let V = U._1
117- let E = U._2
118- $Tuple3((R ++ V), E, (S ++ [T]))
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]))
119136 }
120137 }
121138 }
122139
123- let W = {
124- let X = split(J, "|")
125- let Y = size(X)
126- let Z = $Tuple3(nil, o, nil)
127- func aa (ab,ac) = if ((ac >= Y))
128- then ab
129- else K(ab, X[ac])
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])
130147
131- func ad (ab,ac) = if ((ac >= Y))
132- then ab
148+ func al (aj,ak) = if ((ak >= ag))
149+ then aj
133150 else throw("List size exceeds 20")
134151
135- ad(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(aa(Z, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
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)
136153 }
137- let R = W._1
138- let C = W._2
139- let ae = W._3
140- $Tuple2(R, C)
154+ let Z = ae._1
155+ let K = ae._2
156+ let am = ae._3
157+ $Tuple2(Z, K)
141158 }
142159
143160
144161
145-@Callable(I)
162+@Callable(Q)
146163 func Claim () = {
147- let af = I.caller
148- let q = toString(af)
149- let ag = valueOrErrorMessage(getInteger(g(q)), "address not found")
150- if ((ag == ag))
164+ let an = Q.caller
165+ let y = toString(an)
166+ let ao = valueOrErrorMessage(getInteger(g(y)), "address not found")
167+ if ((ao == ao))
151168 then {
152- let ah = j(q)
153- let x = valueOrElse(getInteger(ah), 0)
154- let ai = p(q)
155- let aj = min([wavesBalance(this).available, ai])
156- if ((aj == 0))
169+ let ap = x(y)
170+ let aq = min([wavesBalance(this).available, ap])
171+ if ((aq == 0))
157172 then throw("nothing to claim")
158- else [ScriptTransfer(af, aj, unit), IntegerEntry(ah, (x + aj))]
173+ else {
174+ let ar = fraction(aq, r, 1000000)
175+[ScriptTransfer(an, aq, unit), w(j(y), aq), w(k(y), ar)]
176+ }
159177 }
160178 else throw("Strict value is not equal to itself.")
161179 }
162180
163181

github/deemru/w8io/3ef1775 
72.13 ms