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 claimedStore (address) = (address + "wavelets_claimed")
2222
2323
24+func claimedUSDStore (address) = (address + "_wavelets_claimed_usd")
25+
26+
2427 func maxClaimableStore (address) = (address + "_wavelets_max_claimable")
2528
2629
3033
3134 let maximum = valueOrElse(getInteger(this, "wavelets_per_block_max"), 189950000)
3235
36+let oracle = valueOrErrorMessage(addressFromString(valueOrElse(getString("oracle"), "3PKkojKdd6BBzTf1RXbQVfUDraNFXXHKzQF")), "invalid oracle address")
37+
38+let wavePriceStore = valueOrElse(getString("wave-price-key"), "%s%s__price__WAVES-USDT")
39+
40+let wavePrice = valueOrErrorMessage(getInteger(oracle, wavePriceStore), "WAVES price is not in the Oracle")
41+
3342 let oldSum = valueOrElse(getInteger(sumStore), 0)
43+
44+func writeInt (key,value) = if ((0 > value))
45+ then throw(((("writing negative value " + toString(value)) + " for key ") + key))
46+ else IntegerEntry(key, value)
47+
48+
49+func changeBy (key,value) = writeInt(key, (valueOrElse(getInteger(this, key), 0) + value))
50+
3451
3552 func availableNow (to) = {
3653 let perBlockStore = waveletsPerBlockStore(to)
104121 let maxClaimable = if ((size(blockMaxParts) == 2))
105122 then valueOrErrorMessage(parseInt(blockMaxParts[1]), ("invalid max number: " + blockMaxParts[1]))
106123 else 0
107- let $t040314063 = acc
108- let cmds = $t040314063._1
109- let sum = $t040314063._2
110- let addresses = $t040314063._3
124+ let $t047304762 = acc
125+ let cmds = $t047304762._1
126+ let sum = $t047304762._2
127+ let addresses = $t047304762._3
111128 let toStr = toString(to)
112129 if (isDefined(indexOf(addresses, toStr)))
113130 then throw(("dublicate: " + toStr))
114131 else {
115- let $t041944273 = setScheduleInternal(toStr, wavelets, maxClaimable, sum)
116- let newCmds = $t041944273._1
117- let newSum = $t041944273._2
132+ let $t048934972 = setScheduleInternal(toStr, wavelets, maxClaimable, sum)
133+ let newCmds = $t048934972._1
134+ let newSum = $t048934972._2
118135 $Tuple3((cmds ++ newCmds), newSum, (addresses ++ [toStr]))
119136 }
120137 }
121138 }
122139
123- let $t043414417 = {
140+ let $t050405116 = {
124141 let $l = split(schedules, "|")
125142 let $s = size($l)
126143 let $acc0 = $Tuple3(nil, oldSum, nil)
134151
135152 $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)
136153 }
137- let cmds = $t043414417._1
138- let sum = $t043414417._2
139- let x_ = $t043414417._3
154+ let cmds = $t050405116._1
155+ let sum = $t050405116._2
156+ let x_ = $t050405116._3
140157 $Tuple2(cmds, sum)
141158 }
142159
149166 let a = valueOrErrorMessage(getInteger(waveletsPerBlockStore(to)), "address not found")
150167 if ((a == a))
151168 then {
152- let claimedStore1 = claimedStore(to)
153- let claimed = valueOrElse(getInteger(claimedStore1), 0)
154169 let amount = availableNow(to)
155170 let payment = min([wavesBalance(this).available, amount])
156171 if ((payment == 0))
157172 then throw("nothing to claim")
158- else [ScriptTransfer(toAdr, payment, unit), IntegerEntry(claimedStore1, (claimed + payment))]
173+ else {
174+ let paymentUSD = fraction(payment, wavePrice, 1000000)
175+[ScriptTransfer(toAdr, payment, unit), changeBy(claimedStore(to), payment), changeBy(claimedUSDStore(to), paymentUSD)]
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 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
24+func claimedUSDStore (address) = (address + "_wavelets_claimed_usd")
25+
26+
2427 func maxClaimableStore (address) = (address + "_wavelets_max_claimable")
2528
2629
2730 let sumStore = "wavelets_per_block_sum"
2831
2932 let maxStore = "wavelets_per_block_max"
3033
3134 let maximum = valueOrElse(getInteger(this, "wavelets_per_block_max"), 189950000)
3235
36+let oracle = valueOrErrorMessage(addressFromString(valueOrElse(getString("oracle"), "3PKkojKdd6BBzTf1RXbQVfUDraNFXXHKzQF")), "invalid oracle address")
37+
38+let wavePriceStore = valueOrElse(getString("wave-price-key"), "%s%s__price__WAVES-USDT")
39+
40+let wavePrice = valueOrErrorMessage(getInteger(oracle, wavePriceStore), "WAVES price is not in the Oracle")
41+
3342 let oldSum = valueOrElse(getInteger(sumStore), 0)
43+
44+func writeInt (key,value) = if ((0 > value))
45+ then throw(((("writing negative value " + toString(value)) + " for key ") + key))
46+ else IntegerEntry(key, value)
47+
48+
49+func changeBy (key,value) = writeInt(key, (valueOrElse(getInteger(this, key), 0) + value))
50+
3451
3552 func availableNow (to) = {
3653 let perBlockStore = waveletsPerBlockStore(to)
3754 let perBlock = getInteger(perBlockStore)
3855 let total = if (!(isDefined(perBlock)))
3956 then 0
4057 else {
4158 let firstBlock = value(getInteger(startHeightStore(to)))
4259 let blocks = (height - firstBlock)
4360 (value(perBlock) * blocks)
4461 }
4562 let grant = min([total, valueOrElse(getInteger(maxClaimableStore(to)), total)])
4663 let claimed = valueOrElse(getInteger(claimedStore(to)), 0)
4764 let result = (grant - claimed)
4865 if ((0 > result))
4966 then throw("negative availableNow")
5067 else result
5168 }
5269
5370
5471 func setScheduleInternal (to,waveletsPerBlock,maxClaimable,sum) = if ((0 > waveletsPerBlock))
5572 then throw("waveletsPerBlock should be >= 0")
5673 else {
5774 let perBlockStore = waveletsPerBlockStore(to)
5875 let oldPerBlock = valueOrElse(getInteger(perBlockStore), 0)
5976 let newSum = ((sum - oldPerBlock) + waveletsPerBlock)
6077 let heightStore1 = startHeightStore(to)
6178 let claimed = claimedStore(to)
6279 if ((newSum > maximum))
6380 then throw("maximum exceeded")
6481 else {
6582 let maxClaimableStore1 = maxClaimableStore(to)
6683 let maxClaimableEntry = if ((maxClaimable == 0))
6784 then nil
6885 else if ((maxClaimable == -1))
6986 then [DeleteEntry(maxClaimableStore1)]
7087 else [IntegerEntry(maxClaimableStore1, maxClaimable)]
7188 $Tuple2(([IntegerEntry(perBlockStore, waveletsPerBlock), IntegerEntry(heightStore1, height), IntegerEntry(claimed, -(availableNow(to))), IntegerEntry(sumStore, newSum)] ++ maxClaimableEntry), newSum)
7289 }
7390 }
7491
7592
7693 @Callable(i)
7794 func setScedule (to,waveletsPerBlock) = if ((i.caller != this))
7895 then throw("denied")
7996 else setScheduleInternal(to, waveletsPerBlock, 0, oldSum)
8097
8198
8299
83100 @Callable(i)
84101 func setSchedule (to,waveletsPerBlock,maxClaimable) = if ((i.caller != this))
85102 then throw("denied")
86103 else setScheduleInternal(to, waveletsPerBlock, maxClaimable, oldSum)
87104
88105
89106
90107 @Callable(i)
91108 func setMultiSchedule (schedules) = if ((i.caller != this))
92109 then throw("denied")
93110 else {
94111 func fold (acc,schedule) = if ((schedule == ""))
95112 then throw("invalid schedules")
96113 else {
97114 let parts = split(schedule, "=")
98115 if ((size(parts) != 2))
99116 then throw("invalid format: adr=waveletsPerBlock[,max]")
100117 else {
101118 let to = valueOrErrorMessage(addressFromString(parts[0]), ("invalid address: " + parts[0]))
102119 let blockMaxParts = split(parts[1], ",")
103120 let wavelets = valueOrErrorMessage(parseInt(blockMaxParts[0]), ("invalid wavetets number: " + blockMaxParts[0]))
104121 let maxClaimable = if ((size(blockMaxParts) == 2))
105122 then valueOrErrorMessage(parseInt(blockMaxParts[1]), ("invalid max number: " + blockMaxParts[1]))
106123 else 0
107- let $t040314063 = acc
108- let cmds = $t040314063._1
109- let sum = $t040314063._2
110- let addresses = $t040314063._3
124+ let $t047304762 = acc
125+ let cmds = $t047304762._1
126+ let sum = $t047304762._2
127+ let addresses = $t047304762._3
111128 let toStr = toString(to)
112129 if (isDefined(indexOf(addresses, toStr)))
113130 then throw(("dublicate: " + toStr))
114131 else {
115- let $t041944273 = setScheduleInternal(toStr, wavelets, maxClaimable, sum)
116- let newCmds = $t041944273._1
117- let newSum = $t041944273._2
132+ let $t048934972 = setScheduleInternal(toStr, wavelets, maxClaimable, sum)
133+ let newCmds = $t048934972._1
134+ let newSum = $t048934972._2
118135 $Tuple3((cmds ++ newCmds), newSum, (addresses ++ [toStr]))
119136 }
120137 }
121138 }
122139
123- let $t043414417 = {
140+ let $t050405116 = {
124141 let $l = split(schedules, "|")
125142 let $s = size($l)
126143 let $acc0 = $Tuple3(nil, oldSum, nil)
127144 func $f0_1 ($a,$i) = if (($i >= $s))
128145 then $a
129146 else fold($a, $l[$i])
130147
131148 func $f0_2 ($a,$i) = if (($i >= $s))
132149 then $a
133150 else throw("List size exceeds 20")
134151
135152 $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)
136153 }
137- let cmds = $t043414417._1
138- let sum = $t043414417._2
139- let x_ = $t043414417._3
154+ let cmds = $t050405116._1
155+ let sum = $t050405116._2
156+ let x_ = $t050405116._3
140157 $Tuple2(cmds, sum)
141158 }
142159
143160
144161
145162 @Callable(i)
146163 func Claim () = {
147164 let toAdr = i.caller
148165 let to = toString(toAdr)
149166 let a = valueOrErrorMessage(getInteger(waveletsPerBlockStore(to)), "address not found")
150167 if ((a == a))
151168 then {
152- let claimedStore1 = claimedStore(to)
153- let claimed = valueOrElse(getInteger(claimedStore1), 0)
154169 let amount = availableNow(to)
155170 let payment = min([wavesBalance(this).available, amount])
156171 if ((payment == 0))
157172 then throw("nothing to claim")
158- else [ScriptTransfer(toAdr, payment, unit), IntegerEntry(claimedStore1, (claimed + payment))]
173+ else {
174+ let paymentUSD = fraction(payment, wavePrice, 1000000)
175+[ScriptTransfer(toAdr, payment, unit), changeBy(claimedStore(to), payment), changeBy(claimedUSDStore(to), paymentUSD)]
176+ }
159177 }
160178 else throw("Strict value is not equal to itself.")
161179 }
162180
163181

github/deemru/w8io/6500d08 
197.35 ms