tx · BTkwumHpjrLgh4Z7vDhiDFm6P5rfkVNPQuNXGfNd5SFS

3PRAEZqBjrUDaDvv45HGWPb94DhD6UuZfWg:  -0.00600000 Waves

2023.09.19 14:40 [3827997] smart account 3PRAEZqBjrUDaDvv45HGWPb94DhD6UuZfWg > SELF 0.00000000 Waves

{ "type": 13, "id": "BTkwumHpjrLgh4Z7vDhiDFm6P5rfkVNPQuNXGfNd5SFS", "fee": 600000, "feeAssetId": null, "timestamp": 1695123634253, "version": 1, "sender": "3PRAEZqBjrUDaDvv45HGWPb94DhD6UuZfWg", "senderPublicKey": "DWfBoSph5SQ9fuKvBjSecymWnfmRnBFh9FYg2QEV6bwS", "proofs": [ "5H8tzxASnaKqFpUkoXawTrPoUQaEBGAd3Q1CWj1o8b5mQqaCbSUWJjTXhPAcZ2Z2DSJ9P5LjBfpGKKNSCqycGLwM" ], "script": "base64:BgIXCAISBAoCCAESBgoECAEBBBIDCgEIEgAXABJjb25maWdBZGRyZXNzU3RvcmUCBmNvbmZpZwANY29uZmlnQWRkcmVzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBRJjb25maWdBZGRyZXNzU3RvcmUCH2NoaWxkOiBjb25maWcgYWRkcmVzcyBub3QgZm91bmQCFmludmFsaWQgY29uZmlnIGFkZHJlc3MABkhFSUdIVAUGaGVpZ2h0AQ5vcEFsbG93ZWRTdG9yZQECb3AJAKwCAgkArAICAgNvcF8FAm9wAghfYWxsb3dlZAANdm90aW5nUmVzdWx0cwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ1jb25maWdBZGRyZXNzAhZjb250cmFjdF92b3RpbmdfcmVzdWx0AhlubyBjb250cmFjdF92b3RpbmdfcmVzdWx0Ah5pbnZhbGlkIGNvbnRyYWN0X3ZvdGluZ19yZXN1bHQBFXdhdmVsZXRzUGVyQmxvY2tTdG9yZQEHYWRkcmVzcwkArAICBQdhZGRyZXNzAhNfd2F2ZWxldHNfcGVyX2Jsb2NrARBzdGFydEhlaWdodFN0b3JlAQdhZGRyZXNzCQCsAgIFB2FkZHJlc3MCDV9zdGFydF9oZWlnaHQBDGNsYWltZWRTdG9yZQEHYWRkcmVzcwkArAICBQdhZGRyZXNzAhB3YXZlbGV0c19jbGFpbWVkAQ9jbGFpbWVkVVNEU3RvcmUBB2FkZHJlc3MJAKwCAgUHYWRkcmVzcwIVX3dhdmVsZXRzX2NsYWltZWRfdXNkARFtYXhDbGFpbWFibGVTdG9yZQEHYWRkcmVzcwkArAICBQdhZGRyZXNzAhdfd2F2ZWxldHNfbWF4X2NsYWltYWJsZQEWbWF4Q2xhaW1hYmxlSXNVU0RTdG9yZQEHYWRkcmVzcwkArAICBQdhZGRyZXNzAh5fd2F2ZWxldHNfbWF4X2NsYWltYWJsZV9pc191c2QACHN1bVN0b3JlAhZ3YXZlbGV0c19wZXJfYmxvY2tfc3VtAAhtYXhTdG9yZQIWd2F2ZWxldHNfcGVyX2Jsb2NrX21heAAHbWF4aW11bQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzAhZ3YXZlbGV0c19wZXJfYmxvY2tfbWF4ALDQyVoABm9yYWNsZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAQt2YWx1ZU9yRWxzZQIJAKIIAQIGb3JhY2xlAiMzUEtrb2pLZGQ2QkJ6VGYxUlhiUVZmVURyYU5GWFhIS3pRRgIWaW52YWxpZCBvcmFjbGUgYWRkcmVzcwAOd2F2ZVByaWNlU3RvcmUJAQt2YWx1ZU9yRWxzZQIJAKIIAQIOd2F2ZS1wcmljZS1rZXkCFyVzJXNfX3ByaWNlX19XQVZFUy1VU0RUAAl3YXZlUHJpY2UJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQZvcmFjbGUFDndhdmVQcmljZVN0b3JlAiBXQVZFUyBwcmljZSBpcyBub3QgaW4gdGhlIE9yYWNsZQAHZGlnaXRzOACAwtcvAQp3YXZlc1RvVVNEAQV3YXZlcwkAawMFBXdhdmVzBQl3YXZlUHJpY2UFB2RpZ2l0czgBCnVzZFRvV2F2ZXMBBXdhdmVzCQBrAwUFd2F2ZXMFB2RpZ2l0czgFCXdhdmVQcmljZQAGb2xkU3VtCQELdmFsdWVPckVsc2UCCQCfCAEFCHN1bVN0b3JlAAABDGF2YWlsYWJsZU5vdwECdG8ECHBlckJsb2NrCQELdmFsdWVPckVsc2UCCQCfCAEJARV3YXZlbGV0c1BlckJsb2NrU3RvcmUBBQJ0bwAABAV0b3RhbAMJAAACBQhwZXJCbG9jawAAAAAECmZpcnN0QmxvY2sJAQV2YWx1ZQEJAJ8IAQkBEHN0YXJ0SGVpZ2h0U3RvcmUBBQJ0bwQGYmxvY2tzCQBlAgUGaGVpZ2h0BQpmaXJzdEJsb2NrCQBoAgUIcGVyQmxvY2sFBmJsb2NrcwQMY2xhaW1lZFdBVkVTCQELdmFsdWVPckVsc2UCCQCfCAEJAQxjbGFpbWVkU3RvcmUBBQJ0bwAABAlyZXN0V2F2ZXMJAGUCBQV0b3RhbAUMY2xhaW1lZFdBVkVTBAxtYXhDbGFpbWFibGUJAJ8IAQkBEW1heENsYWltYWJsZVN0b3JlAQUCdG8DCQEJaXNEZWZpbmVkAQUMbWF4Q2xhaW1hYmxlBBFtYXhDbGFpbWFibGVWYWx1ZQkBBXZhbHVlAQUMbWF4Q2xhaW1hYmxlAwkBC3ZhbHVlT3JFbHNlAgkAoAgBCQEWbWF4Q2xhaW1hYmxlSXNVU0RTdG9yZQEFAnRvBwQKY2xhaW1lZFVTRAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEPY2xhaW1lZFVTRFN0b3JlAQUCdG8JAQp3YXZlc1RvVVNEAQUMY2xhaW1lZFdBVkVTBAdyZXN0VVNECQBlAgURbWF4Q2xhaW1hYmxlVmFsdWUFCmNsYWltZWRVU0QEDnJlc3RVc2RJbldhdmVzCQEKdXNkVG9XYXZlcwEFB3Jlc3RVU0QJAJcDAQkAzAgCBQ5yZXN0VXNkSW5XYXZlcwkAzAgCBQlyZXN0V2F2ZXMFA25pbAQFZ3JhbnQJAJcDAQkAzAgCBQV0b3RhbAkAzAgCBRFtYXhDbGFpbWFibGVWYWx1ZQUDbmlsCQBlAgUFZ3JhbnQFDGNsYWltZWRXQVZFUwUJcmVzdFdhdmVzARNzZXRTY2hlZHVsZUludGVybmFsBQJ0bxB3YXZlbGV0c1BlckJsb2NrDG1heENsYWltYWJsZRFpc01heENsYWltYWJsZVVTRANzdW0EA2FkcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFAnRvCQCsAgICEWludmFsaWQgYWRkcmVzczogBQJ0bwMJAAACBQNhZHIFA2FkcgMJAGYCAAAFEHdhdmVsZXRzUGVyQmxvY2sJAAIBAh93YXZlbGV0c1BlckJsb2NrIHNob3VsZCBiZSA+PSAwBA1wZXJCbG9ja1N0b3JlCQEVd2F2ZWxldHNQZXJCbG9ja1N0b3JlAQUCdG8EC29sZFBlckJsb2NrCQELdmFsdWVPckVsc2UCCQCfCAEFDXBlckJsb2NrU3RvcmUAAAQGbmV3U3VtCQBkAgkAZQIFA3N1bQULb2xkUGVyQmxvY2sFEHdhdmVsZXRzUGVyQmxvY2sEDGhlaWdodFN0b3JlMQkBEHN0YXJ0SGVpZ2h0U3RvcmUBBQJ0bwQHY2xhaW1lZAkBDGNsYWltZWRTdG9yZQEFAnRvAwkAZgIFBm5ld1N1bQUHbWF4aW11bQkAAgECEG1heGltdW0gZXhjZWVkZWQEEm1heENsYWltYWJsZVN0b3JlMQkBEW1heENsYWltYWJsZVN0b3JlAQUCdG8EF21heENsYWltYWJsZUlzVVNEU3RvcmUxCQEWbWF4Q2xhaW1hYmxlSXNVU0RTdG9yZQEFAnRvBBFtYXhDbGFpbWFibGVFbnRyeQMJAAACBQxtYXhDbGFpbWFibGUAAAUDbmlsAwkAZgIAAAUMbWF4Q2xhaW1hYmxlCQDMCAIJAQtEZWxldGVFbnRyeQEFEm1heENsYWltYWJsZVN0b3JlMQkAzAgCCQELRGVsZXRlRW50cnkBBRdtYXhDbGFpbWFibGVJc1VTRFN0b3JlMQUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJtYXhDbGFpbWFibGVTdG9yZTEFDG1heENsYWltYWJsZQkAzAgCCQEMQm9vbGVhbkVudHJ5AgUXbWF4Q2xhaW1hYmxlSXNVU0RTdG9yZTEFEWlzTWF4Q2xhaW1hYmxlVVNEBQNuaWwJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1wZXJCbG9ja1N0b3JlBRB3YXZlbGV0c1BlckJsb2NrCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQxoZWlnaHRTdG9yZTEFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUHY2xhaW1lZAkBAS0BCQEMYXZhaWxhYmxlTm93AQUCdG8JAMwIAgkBDEludGVnZXJFbnRyeQIFCHN1bVN0b3JlBQZuZXdTdW0FA25pbAURbWF4Q2xhaW1hYmxlRW50cnkFBm5ld1N1bQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQBaQEKc2V0U2NlZHVsZQICdG8Qd2F2ZWxldHNQZXJCbG9jawMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECBmRlbmllZAkBE3NldFNjaGVkdWxlSW50ZXJuYWwFBQJ0bwUQd2F2ZWxldHNQZXJCbG9jawAABwUGb2xkU3VtAWkBC3NldFNjaGVkdWxlBAJ0bxB3YXZlbGV0c1BlckJsb2NrDG1heENsYWltYWJsZRFpc01heENsYWltYWJsZVVTRAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECBmRlbmllZAkBE3NldFNjaGVkdWxlSW50ZXJuYWwFBQJ0bwUQd2F2ZWxldHNQZXJCbG9jawUMbWF4Q2xhaW1hYmxlBRFpc01heENsYWltYWJsZVVTRAUGb2xkU3VtAWkBEHNldE11bHRpU2NoZWR1bGUBCXNjaGVkdWxlcwMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECBmRlbmllZAoBBGZvbGQCA2FjYwhzY2hlZHVsZQMJAAACBQhzY2hlZHVsZQIACQACAQIRaW52YWxpZCBzY2hlZHVsZXMEBXBhcnRzCQC1CQIFCHNjaGVkdWxlAgE9AwkBAiE9AgkAkAMBBQVwYXJ0cwACCQACAQIqaW52YWxpZCBmb3JtYXQ6IGFkcj13YXZlbGV0c1BlckJsb2NrWyxtYXhdBAJ0bwkAkQMCBQVwYXJ0cwAABA1ibG9ja01heFBhcnRzCQC1CQIJAJEDAgUFcGFydHMAAQIBLAQId2F2ZWxldHMJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAtgkBCQCRAwIFDWJsb2NrTWF4UGFydHMAAAkArAICAhlpbnZhbGlkIHdhdmV0ZXRzIG51bWJlcjogCQCRAwIFDWJsb2NrTWF4UGFydHMAAAQLJHQwNTIzOTU2MDUDCQAAAgkAkAMBBQ1ibG9ja01heFBhcnRzAAIEDW1heEFuZFVzZFBhcnQJALUJAgkAkQMCBQ1ibG9ja01heFBhcnRzAAECASQJAJQKAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQC2CQEJAJEDAgUNbWF4QW5kVXNkUGFydAAACQCsAgICFGludmFsaWQgbWF4IG51bWJlcjogCQCRAwIFDW1heEFuZFVzZFBhcnQAAAkAAAIJAJADAQUNbWF4QW5kVXNkUGFydAACCQCUCgIAAAcEDG1heENsYWltYWJsZQgFCyR0MDUyMzk1NjA1Al8xBBFpc01heENsYWltYWJsZVVTRAgFCyR0MDUyMzk1NjA1Al8yBAskdDA1NjIzNTY1NQUDYWNjBARjbWRzCAULJHQwNTYyMzU2NTUCXzEEA3N1bQgFCyR0MDU2MjM1NjU1Al8yBAlhZGRyZXNzZXMIBQskdDA1NjIzNTY1NQJfMwMJAQlpc0RlZmluZWQBCQDPCAIFCWFkZHJlc3NlcwUCdG8JAAIBCQCsAgICC2R1YmxpY2F0ZTogBQJ0bwQLJHQwNTc0NjU4NDEJARNzZXRTY2hlZHVsZUludGVybmFsBQUCdG8FCHdhdmVsZXRzBQxtYXhDbGFpbWFibGUFEWlzTWF4Q2xhaW1hYmxlVVNEBQNzdW0EB25ld0NtZHMIBQskdDA1NzQ2NTg0MQJfMQQGbmV3U3VtCAULJHQwNTc0NjU4NDECXzIJAJUKAwkAzggCBQRjbWRzBQduZXdDbWRzBQZuZXdTdW0JAM4IAgUJYWRkcmVzc2VzCQDMCAIFAnRvBQNuaWwECyR0MDU5MDY1OTgyCgACJGwJALUJAgUJc2NoZWR1bGVzAgF8CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlQoDBQNuaWwFBm9sZFN1bQUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQRmb2xkAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAyMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQEBGNtZHMIBQskdDA1OTA2NTk4MgJfMQQDc3VtCAULJHQwNTkwNjU5ODICXzIEAnhfCAULJHQwNTkwNjU5ODICXzMJAJQKAgUEY21kcwUDc3VtAWkBBUNsYWltAAQFdG9BZHIIBQFpBmNhbGxlcgQCdG8JAKUIAQUFdG9BZHIEAWEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBCQEVd2F2ZWxldHNQZXJCbG9ja1N0b3JlAQUCdG8CEWFkZHJlc3Mgbm90IGZvdW5kAwkAAAIFAWEFAWEEBmFtb3VudAkBDGF2YWlsYWJsZU5vdwEFAnRvBAdwYXltZW50CQCXAwEJAMwIAggJAO8HAQUEdGhpcwlhdmFpbGFibGUJAMwIAgUGYW1vdW50BQNuaWwDCQBnAgAABQdwYXltZW50CQACAQIQbm90aGluZyB0byBjbGFpbQQNY2xhaW1lZFN0b3JlMQkBDGNsYWltZWRTdG9yZQEFAnRvBAdjbGFpbWVkCQELdmFsdWVPckVsc2UCCQCfCAEFDWNsYWltZWRTdG9yZTEAAAQQY2xhaW1lZFVTRFN0b3JlMQkBD2NsYWltZWRVU0RTdG9yZQEFAnRvBApjbGFpbWVkVVNECQELdmFsdWVPckVsc2UCCQCfCAEFEGNsYWltZWRVU0RTdG9yZTEJAQp3YXZlc1RvVVNEAQUHY2xhaW1lZAQKcGF5bWVudFVTRAkBCndhdmVzVG9VU0QBBQdwYXltZW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBXRvQWRyBQdwYXltZW50BQR1bml0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1jbGFpbWVkU3RvcmUxCQBkAgUHY2xhaW1lZAUHcGF5bWVudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUQY2xhaW1lZFVTRFN0b3JlMQkAZAIFCmNsYWltZWRVU0QFCnBheW1lbnRVU0QFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgDf+zbF", "chainId": 87, "height": 3827997, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4QminhoBAofTFZuM5EpL5DT94JLjcqfyTaeEiVYHBV4u Next: EM3pbjaJU4kPMXeUv4W4nKEtKgY2KcrLgw1u4YgDaWwi Diff:
OldNewDifferences
4242
4343 let wavePrice = valueOrErrorMessage(getInteger(oracle, wavePriceStore), "WAVES price is not in the Oracle")
4444
45-func wavesToUSD (waves) = fraction(waves, wavePrice, 1000000)
45+let digits8 = 100000000
46+
47+func wavesToUSD (waves) = fraction(waves, wavePrice, digits8)
4648
4749
48-func usdToWaves (waves) = fraction(waves, 100000000, wavePrice)
50+func usdToWaves (waves) = fraction(waves, digits8, wavePrice)
4951
5052
5153 let oldSum = valueOrElse(getInteger(sumStore), 0)
137139 let to = parts[0]
138140 let blockMaxParts = split(parts[1], ",")
139141 let wavelets = valueOrErrorMessage(parseInt(blockMaxParts[0]), ("invalid wavetets number: " + blockMaxParts[0]))
140- let $t052175583 = if ((size(blockMaxParts) == 2))
142+ let $t052395605 = if ((size(blockMaxParts) == 2))
141143 then {
142144 let maxAndUsdPart = split(blockMaxParts[1], "$")
143145 $Tuple2(valueOrErrorMessage(parseInt(maxAndUsdPart[0]), ("invalid max number: " + maxAndUsdPart[0])), (size(maxAndUsdPart) == 2))
144146 }
145147 else $Tuple2(0, false)
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
148+ let maxClaimable = $t052395605._1
149+ let isMaxClaimableUSD = $t052395605._2
150+ let $t056235655 = acc
151+ let cmds = $t056235655._1
152+ let sum = $t056235655._2
153+ let addresses = $t056235655._3
152154 if (isDefined(indexOf(addresses, to)))
153155 then throw(("dublicate: " + to))
154156 else {
155- let $t057245819 = setScheduleInternal(to, wavelets, maxClaimable, isMaxClaimableUSD, sum)
156- let newCmds = $t057245819._1
157- let newSum = $t057245819._2
157+ let $t057465841 = setScheduleInternal(to, wavelets, maxClaimable, isMaxClaimableUSD, sum)
158+ let newCmds = $t057465841._1
159+ let newSum = $t057465841._2
158160 $Tuple3((cmds ++ newCmds), newSum, (addresses ++ [to]))
159161 }
160162 }
161163 }
162164
163- let $t058845960 = {
165+ let $t059065982 = {
164166 let $l = split(schedules, "|")
165167 let $s = size($l)
166168 let $acc0 = $Tuple3(nil, oldSum, nil)
174176
175177 $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)
176178 }
177- let cmds = $t058845960._1
178- let sum = $t058845960._2
179- let x_ = $t058845960._3
179+ let cmds = $t059065982._1
180+ let sum = $t059065982._2
181+ let x_ = $t059065982._3
180182 $Tuple2(cmds, sum)
181183 }
182184
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
45-func wavesToUSD (waves) = fraction(waves, wavePrice, 1000000)
45+let digits8 = 100000000
46+
47+func wavesToUSD (waves) = fraction(waves, wavePrice, digits8)
4648
4749
48-func usdToWaves (waves) = fraction(waves, 100000000, wavePrice)
50+func usdToWaves (waves) = fraction(waves, digits8, wavePrice)
4951
5052
5153 let oldSum = valueOrElse(getInteger(sumStore), 0)
5254
5355 func availableNow (to) = {
5456 let perBlock = valueOrElse(getInteger(waveletsPerBlockStore(to)), 0)
5557 let total = if ((perBlock == 0))
5658 then 0
5759 else {
5860 let firstBlock = value(getInteger(startHeightStore(to)))
5961 let blocks = (height - firstBlock)
6062 (perBlock * blocks)
6163 }
6264 let claimedWAVES = valueOrElse(getInteger(claimedStore(to)), 0)
6365 let restWaves = (total - claimedWAVES)
6466 let maxClaimable = getInteger(maxClaimableStore(to))
6567 if (isDefined(maxClaimable))
6668 then {
6769 let maxClaimableValue = value(maxClaimable)
6870 if (valueOrElse(getBoolean(maxClaimableIsUSDStore(to)), false))
6971 then {
7072 let claimedUSD = valueOrElse(getInteger(claimedUSDStore(to)), wavesToUSD(claimedWAVES))
7173 let restUSD = (maxClaimableValue - claimedUSD)
7274 let restUsdInWaves = usdToWaves(restUSD)
7375 min([restUsdInWaves, restWaves])
7476 }
7577 else {
7678 let grant = min([total, maxClaimableValue])
7779 (grant - claimedWAVES)
7880 }
7981 }
8082 else restWaves
8183 }
8284
8385
8486 func setScheduleInternal (to,waveletsPerBlock,maxClaimable,isMaxClaimableUSD,sum) = {
8587 let adr = valueOrErrorMessage(addressFromString(to), ("invalid address: " + to))
8688 if ((adr == adr))
8789 then if ((0 > waveletsPerBlock))
8890 then throw("waveletsPerBlock should be >= 0")
8991 else {
9092 let perBlockStore = waveletsPerBlockStore(to)
9193 let oldPerBlock = valueOrElse(getInteger(perBlockStore), 0)
9294 let newSum = ((sum - oldPerBlock) + waveletsPerBlock)
9395 let heightStore1 = startHeightStore(to)
9496 let claimed = claimedStore(to)
9597 if ((newSum > maximum))
9698 then throw("maximum exceeded")
9799 else {
98100 let maxClaimableStore1 = maxClaimableStore(to)
99101 let maxClaimableIsUSDStore1 = maxClaimableIsUSDStore(to)
100102 let maxClaimableEntry = if ((maxClaimable == 0))
101103 then nil
102104 else if ((0 > maxClaimable))
103105 then [DeleteEntry(maxClaimableStore1), DeleteEntry(maxClaimableIsUSDStore1)]
104106 else [IntegerEntry(maxClaimableStore1, maxClaimable), BooleanEntry(maxClaimableIsUSDStore1, isMaxClaimableUSD)]
105107 $Tuple2(([IntegerEntry(perBlockStore, waveletsPerBlock), IntegerEntry(heightStore1, height), IntegerEntry(claimed, -(availableNow(to))), IntegerEntry(sumStore, newSum)] ++ maxClaimableEntry), newSum)
106108 }
107109 }
108110 else throw("Strict value is not equal to itself.")
109111 }
110112
111113
112114 @Callable(i)
113115 func setScedule (to,waveletsPerBlock) = if ((i.caller != this))
114116 then throw("denied")
115117 else setScheduleInternal(to, waveletsPerBlock, 0, false, oldSum)
116118
117119
118120
119121 @Callable(i)
120122 func setSchedule (to,waveletsPerBlock,maxClaimable,isMaxClaimableUSD) = if ((i.caller != this))
121123 then throw("denied")
122124 else setScheduleInternal(to, waveletsPerBlock, maxClaimable, isMaxClaimableUSD, oldSum)
123125
124126
125127
126128 @Callable(i)
127129 func setMultiSchedule (schedules) = if ((i.caller != this))
128130 then throw("denied")
129131 else {
130132 func fold (acc,schedule) = if ((schedule == ""))
131133 then throw("invalid schedules")
132134 else {
133135 let parts = split(schedule, "=")
134136 if ((size(parts) != 2))
135137 then throw("invalid format: adr=waveletsPerBlock[,max]")
136138 else {
137139 let to = parts[0]
138140 let blockMaxParts = split(parts[1], ",")
139141 let wavelets = valueOrErrorMessage(parseInt(blockMaxParts[0]), ("invalid wavetets number: " + blockMaxParts[0]))
140- let $t052175583 = if ((size(blockMaxParts) == 2))
142+ let $t052395605 = if ((size(blockMaxParts) == 2))
141143 then {
142144 let maxAndUsdPart = split(blockMaxParts[1], "$")
143145 $Tuple2(valueOrErrorMessage(parseInt(maxAndUsdPart[0]), ("invalid max number: " + maxAndUsdPart[0])), (size(maxAndUsdPart) == 2))
144146 }
145147 else $Tuple2(0, false)
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
148+ let maxClaimable = $t052395605._1
149+ let isMaxClaimableUSD = $t052395605._2
150+ let $t056235655 = acc
151+ let cmds = $t056235655._1
152+ let sum = $t056235655._2
153+ let addresses = $t056235655._3
152154 if (isDefined(indexOf(addresses, to)))
153155 then throw(("dublicate: " + to))
154156 else {
155- let $t057245819 = setScheduleInternal(to, wavelets, maxClaimable, isMaxClaimableUSD, sum)
156- let newCmds = $t057245819._1
157- let newSum = $t057245819._2
157+ let $t057465841 = setScheduleInternal(to, wavelets, maxClaimable, isMaxClaimableUSD, sum)
158+ let newCmds = $t057465841._1
159+ let newSum = $t057465841._2
158160 $Tuple3((cmds ++ newCmds), newSum, (addresses ++ [to]))
159161 }
160162 }
161163 }
162164
163- let $t058845960 = {
165+ let $t059065982 = {
164166 let $l = split(schedules, "|")
165167 let $s = size($l)
166168 let $acc0 = $Tuple3(nil, oldSum, nil)
167169 func $f0_1 ($a,$i) = if (($i >= $s))
168170 then $a
169171 else fold($a, $l[$i])
170172
171173 func $f0_2 ($a,$i) = if (($i >= $s))
172174 then $a
173175 else throw("List size exceeds 20")
174176
175177 $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)
176178 }
177- let cmds = $t058845960._1
178- let sum = $t058845960._2
179- let x_ = $t058845960._3
179+ let cmds = $t059065982._1
180+ let sum = $t059065982._2
181+ let x_ = $t059065982._3
180182 $Tuple2(cmds, sum)
181183 }
182184
183185
184186
185187 @Callable(i)
186188 func Claim () = {
187189 let toAdr = i.caller
188190 let to = toString(toAdr)
189191 let a = valueOrErrorMessage(getInteger(waveletsPerBlockStore(to)), "address not found")
190192 if ((a == a))
191193 then {
192194 let amount = availableNow(to)
193195 let payment = min([wavesBalance(this).available, amount])
194196 if ((0 >= payment))
195197 then throw("nothing to claim")
196198 else {
197199 let claimedStore1 = claimedStore(to)
198200 let claimed = valueOrElse(getInteger(claimedStore1), 0)
199201 let claimedUSDStore1 = claimedUSDStore(to)
200202 let claimedUSD = valueOrElse(getInteger(claimedUSDStore1), wavesToUSD(claimed))
201203 let paymentUSD = wavesToUSD(payment)
202204 [ScriptTransfer(toAdr, payment, unit), IntegerEntry(claimedStore1, (claimed + payment)), IntegerEntry(claimedUSDStore1, (claimedUSD + paymentUSD))]
203205 }
204206 }
205207 else throw("Strict value is not equal to itself.")
206208 }
207209
208210

github/deemru/w8io/3ef1775 
49.50 ms