tx · 8bBs6yNWjFTNahShir1vz6aKqcAYfQUQrKaHXS7oRUq1

3P5BTtdj32Sd1Dyh1Mdw33xQAAckSfMfnKf:  -0.01000000 Waves

2022.09.10 13:37 [3288399] smart account 3P5BTtdj32Sd1Dyh1Mdw33xQAAckSfMfnKf > SELF 0.00000000 Waves

{ "type": 13, "id": "8bBs6yNWjFTNahShir1vz6aKqcAYfQUQrKaHXS7oRUq1", "fee": 1000000, "feeAssetId": null, "timestamp": 1662806265163, "version": 2, "chainId": 87, "sender": "3P5BTtdj32Sd1Dyh1Mdw33xQAAckSfMfnKf", "senderPublicKey": "C2UDsiqKYoTm9rgUWvEJ63etAQiqv7WUZT97uHJZYVgq", "proofs": [ "2jghXX8dimB6xapDRzTdpxTt9dTLBHPw7azpnyhhCYRG8eix9C2FZUZW8oTS6gJU9QMPixK8eEV4o4Q6Yp3VF3Fd" ], "script": "base64:BgIgCAISAwoBGBIECgIIBBIFCgMBCAQSBAoCCAQSBAoCCAQHABNsYXN0VXBkYXRlZEJsb2NrS2V5AhBsYXN0VXBkYXRlZEJsb2NrABJ3aGl0ZUxpc3RBZGRyZXNzZXMJAMwIAgkBB0FkZHJlc3MBARoBV7PVklRJCZoqEPvG+J8QdqvvPw9ypYkVjAUDbmlsAAduMTVMaXN0CQDMCAIAAQkAzAgCAAEJAMwIAgABCQDMCAIAAQkAzAgCAAEJAMwIAgABCQDMCAIAAQkAzAgCAAEJAMwIAgABCQDMCAIAAQkAzAgCAAEJAMwIAgABCQDMCAIAAQkAzAgCAAEJAMwIAgABBQNuaWwAB242MExpc3QJAMwIAgABCQDMCAIAAQkAzAgCAAEJAMwIAgABCQDMCAIAAQkAzAgCAAEJAMwIAgABCQDMCAIAAQkAzAgCAAEJAMwIAgABCQDMCAIAAQkAzAgCAAEJAMwIAgABCQDMCAIAAQkAzAgCAAEJAMwIAgABCQDMCAIAAQkAzAgCAAEJAMwIAgABCQDMCAIAAQkAzAgCAAEJAMwIAgABCQDMCAIAAQkAzAgCAAEJAMwIAgABCQDMCAIAAQkAzAgCAAEJAMwIAgABCQDMCAIAAQkAzAgCAAEJAMwIAgABCQDMCAIAAQkAzAgCAAEJAMwIAgABCQDMCAIAAQkAzAgCAAEJAMwIAgABCQDMCAIAAQkAzAgCAAEJAMwIAgABCQDMCAIAAQkAzAgCAAEJAMwIAgABCQDMCAIAAQkAzAgCAAEJAMwIAgABCQDMCAIAAQkAzAgCAAEJAMwIAgABCQDMCAIAAQkAzAgCAAEJAMwIAgABCQDMCAIAAQkAzAgCAAEJAMwIAgABCQDMCAIAAQkAzAgCAAEJAMwIAgABCQDMCAIAAQkAzAgCAAEFA25pbAEPZ2V0UHJpY2VEYXRhS2V5AwVibG9jawR0eXBlB3Rva2VuSWQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgZibG9ja18JAKQDAQUFYmxvY2sCAV8FBHR5cGUCAV8FB3Rva2VuSWQBDWdldFByaWNlVmFsdWUDB3Rva2VuSWQEdHlwZQVibG9jawQGbkJsb2NrBAckbWF0Y2gwBQVibG9jawMJAAECBQckbWF0Y2gwAgNJbnQEAXQFByRtYXRjaDAFAXQJARFAZXh0ck5hdGl2ZSgxMDU1KQEFE2xhc3RVcGRhdGVkQmxvY2tLZXkDCQBnAgAABQZuQmxvY2sJAAIBAhNJbnZhbGlkIGJsb2NrIHZhbHVlAwMJAAACBQR0eXBlAgNtaW4GCQAAAgUEdHlwZQIDbWF4CQELdmFsdWVPckVsc2UCCQCfCAEJAQ9nZXRQcmljZURhdGFLZXkDBQZuQmxvY2sFBHR5cGUFB3Rva2VuSWQAAAkAAgECD1dyb25nIHR5cGUgbmFtZQETZ2V0UHJpY2VEYXRhRW50cmllcwIJcHJpY2VMaXN0BmhlaWdodAoBC3Byb2Nlc3NMaXN0AgVhY2N1bQRuZXh0BAZwYXJzZWQJALUJAgUEbmV4dAIBXwQHdG9rZW5JZAkAkQMCBQZwYXJzZWQAAAQIbmV3UHJpY2UJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAtgkBCQCRAwIFBnBhcnNlZAABAhpJbnZhbGlkIHZhbHVlIHBhcnNlZCBwcmljZQQLa2V5TWluUHJpY2UJAQ9nZXRQcmljZURhdGFLZXkDBQZoZWlnaHQCA21pbgUHdG9rZW5JZAQLa2V5TWF4UHJpY2UJAQ9nZXRQcmljZURhdGFLZXkDBQZoZWlnaHQCA21heAUHdG9rZW5JZAQPY3VycmVudE1pblByaWNlCQELdmFsdWVPckVsc2UCCQCfCAEFC2tleU1pblByaWNlAAAED2N1cnJlbnRNYXhQcmljZQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQtrZXlNYXhQcmljZQAAAwkAZwIAAAUIbmV3UHJpY2UJAAIBAiFQcmljZSBjYW5ub3QgYmUgemVybyBvciBsZXNzIHplcm8DCQAAAgkAsQIBBQd0b2tlbklkAAAJAAIBAhdJbmF2YWxpZCB2YWx1ZSB0b2tlbiBJZAMJAGYCCQEFdmFsdWUBBQ9jdXJyZW50TWluUHJpY2UFCG5ld1ByaWNlCQDNCAIFBWFjY3VtCQEMSW50ZWdlckVudHJ5AgULa2V5TWluUHJpY2UFCG5ld1ByaWNlAwkAZgIFCG5ld1ByaWNlCQEFdmFsdWUBBQ9jdXJyZW50TWF4UHJpY2UJAM0IAgUFYWNjdW0JAQxJbnRlZ2VyRW50cnkCBQtrZXlNYXhQcmljZQUIbmV3UHJpY2UFBWFjY3VtCgACJGwF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ZW5JZAIDbWF4BQR1bml0AWkBCmdldFByaWNlQXQDBWJsb2NrB3Rva2VuSWQFZGVidWcDBQVkZWJ1ZwkAAgEJAKwCAgkArAICCQCsAgICBW1pbjogCQCkAwEJAQ1nZXRQcmljZVZhbHVlAwUHdG9rZW5JZAIDbWluBQVibG9jawIHLCBtYXg6IAkApAMBCQENZ2V0UHJpY2VWYWx1ZQMFB3Rva2VuSWQCA21heAUFYmxvY2sJAJQKAgUDbmlsCQCUCgIJAQ1nZXRQcmljZVZhbHVlAwUHdG9rZW5JZAIDbWluBQVibG9jawkBDWdldFByaWNlVmFsdWUDBQd0b2tlbklkAgNtYXgFBWJsb2NrAWkBCWdldFRXQVA2MAIHdG9rZW5JZAVkZWJ1ZwQQbGFzdFVwZGF0ZWRCbG9jawkBEUBleHRyTmF0aXZlKDEwNTUpAQUTbGFzdFVwZGF0ZWRCbG9ja0tleQoBDGdldFByaWNlTGlzdAIFYWNjdW0EbmV4dAQLJHQwMzU0MzM1NzYFBWFjY3VtBAZyZXN1bHQIBQskdDAzNTQzMzU3NgJfMQQFYmxvY2sIBQskdDAzNTQzMzU3NgJfMgQEdHlwZQgFCyR0MDM1NDMzNTc2Al8zBApwcmljZVZhbHVlCQENZ2V0UHJpY2VWYWx1ZQMFB3Rva2VuSWQFBHR5cGUFBWJsb2NrBAluZXh0QmxvY2sJAGUCBQVibG9jawUEbmV4dAMJAGYCBQpwcmljZVZhbHVlAAAJAJUKAwkAzQgCBQZyZXN1bHQFCnByaWNlVmFsdWUFCW5leHRCbG9jawUEdHlwZQkAlQoDBQZyZXN1bHQFCW5leHRCbG9jawUEdHlwZQQNbWluUHJpY2VzTGlzdAoAAiRsBQduNjBMaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlQoDBQNuaWwFEGxhc3RVcGRhdGVkQmxvY2sCA21pbgoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEMZ2V0UHJpY2VMaXN0AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA2MAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRm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MQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8KAQNzdW0CBWFjY3VtBG5leHQJAGQCBQVhY2N1bQUEbmV4dAQGbWluU3VtCgACJGwIBQ1taW5QcmljZXNMaXN0Al8xCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYyXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQNzdW0CBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjJfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE1CQEFJGYyXzICCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPBAZtYXhTdW0KAAIkbAgFDW1heFByaWNlc0xpc3QCXzEKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjNfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBA3N1bQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmM18yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQUkZjNfMgIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIJAQUkZjNfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8ECm1pbkF2ZXJhZ2UJAGsDBQZtaW5TdW0AwIQ9CQDGCgEFDW1pblByaWNlc0xpc3QECm1heEF2ZXJhZ2UJAGsDBQZtYXhTdW0AwIQ9CQDGCgEFDW1pblByaWNlc0xpc3QDBQVkZWJ1ZwkAAgEJAKwCAgkArAICCQCsAgICB21pbkF2OiAJAKQDAQUKbWluQXZlcmFnZQIJLCBtYXhBdjogCQCkAwEFCm1heEF2ZXJhZ2UJAJQKAgUDbmlsCQCUCgIFCm1pbkF2ZXJhZ2UFCm1heEF2ZXJhZ2UBAnR4AQZ2ZXJpZnkACQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5ijT/GA==", "height": 3288399, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3pp7LCMvNZ8eK4XR78YYEiHAFxd9FjdGDhtKhhPugTTe Next: H4FWFjbtmRYveN6vtRYVxmn7b7EbCxGatsubGB24hYji Diff:
OldNewDifferences
7474
7575
7676 @Callable(i)
77-func getPrice (tokenId) = {
77+func getPrice (tokenId,debug) = {
7878 let lastUpdatedBlock = getIntegerValue(lastUpdatedBlockKey)
79- $Tuple2(nil, $Tuple2(getPriceValue(tokenId, "min", unit), getPriceValue(tokenId, "max", unit)))
79+ if (debug)
80+ then throw(((("min: " + toString(getPriceValue(tokenId, "min", unit))) + ", max: ") + toString(getPriceValue(tokenId, "max", unit))))
81+ else $Tuple2(nil, $Tuple2(getPriceValue(tokenId, "min", unit), getPriceValue(tokenId, "max", unit)))
8082 }
8183
8284
8385
8486 @Callable(i)
85-func getPriceAt (block,tokenId) = $Tuple2(nil, $Tuple2(getPriceValue(tokenId, "min", block), getPriceValue(tokenId, "max", block)))
87+func getPriceAt (block,tokenId,debug) = if (debug)
88+ then throw(((("min: " + toString(getPriceValue(tokenId, "min", block))) + ", max: ") + toString(getPriceValue(tokenId, "max", block))))
89+ else $Tuple2(nil, $Tuple2(getPriceValue(tokenId, "min", block), getPriceValue(tokenId, "max", block)))
8690
8791
8892
8993 @Callable(i)
90-func getTWAP60 (tokenId) = {
94+func getTWAP60 (tokenId,debug) = {
9195 let lastUpdatedBlock = getIntegerValue(lastUpdatedBlockKey)
9296 func getPriceList (accum,next) = {
93- let $t031833216 = accum
94- let result = $t031833216._1
95- let block = $t031833216._2
96- let type = $t031833216._3
97+ let $t035433576 = accum
98+ let result = $t035433576._1
99+ let block = $t035433576._2
100+ let type = $t035433576._3
97101 let priceValue = getPriceValue(tokenId, type, block)
98102 let nextBlock = (block - next)
99103 if ((priceValue > 0))
161165 }
162166 let minAverage = fraction(minSum, 1000000, size(minPricesList))
163167 let maxAverage = fraction(maxSum, 1000000, size(minPricesList))
164- $Tuple2(nil, $Tuple2(minAverage, maxAverage))
168+ if (debug)
169+ then throw(((("minAv: " + toString(minAverage)) + ", maxAv: ") + toString(maxAverage)))
170+ else $Tuple2(nil, $Tuple2(minAverage, maxAverage))
165171 }
166172
167173
168174
169175 @Callable(i)
170-func getTWAP15 (tokenId) = {
176+func getTWAP15 (tokenId,debug) = {
171177 let lastUpdatedBlock = getIntegerValue(lastUpdatedBlockKey)
172178 func getPriceList (accum,next) = {
173- let $t042074240 = accum
174- let result = $t042074240._1
175- let block = $t042074240._2
176- let type = $t042074240._3
179+ let $t046934726 = accum
180+ let result = $t046934726._1
181+ let block = $t046934726._2
182+ let type = $t046934726._3
177183 let priceValue = getPriceValue(tokenId, type, block)
178184 let nextBlock = (block - next)
179185 if ((priceValue > 0))
241247 }
242248 let minAverage = fraction(minSum, 1000000, size(minPricesList))
243249 let maxAverage = fraction(maxSum, 1000000, size(minPricesList))
244- $Tuple2(nil, $Tuple2(minAverage, maxAverage))
250+ if (debug)
251+ then throw(((("minAv: " + toString(minAverage)) + ", maxAv: ") + toString(maxAverage)))
252+ else $Tuple2(nil, $Tuple2(minAverage, maxAverage))
245253 }
246254
247255
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let lastUpdatedBlockKey = "lastUpdatedBlock"
55
66 let whiteListAddresses = [Address(base58'3PJKmXoHJvVeQXjSJdhtkUcFDtdiQqMbUTD')]
77
88 let n15List = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
99
1010 let n60List = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
1111
1212 func getPriceDataKey (block,type,tokenId) = ((((("block_" + toString(block)) + "_") + type) + "_") + tokenId)
1313
1414
1515 func getPriceValue (tokenId,type,block) = {
1616 let nBlock = match block {
1717 case t: Int =>
1818 t
1919 case _ =>
2020 getIntegerValue(lastUpdatedBlockKey)
2121 }
2222 if ((0 >= nBlock))
2323 then throw("Invalid block value")
2424 else if (if ((type == "min"))
2525 then true
2626 else (type == "max"))
2727 then valueOrElse(getInteger(getPriceDataKey(nBlock, type, tokenId)), 0)
2828 else throw("Wrong type name")
2929 }
3030
3131
3232 func getPriceDataEntries (priceList,height) = {
3333 func processList (accum,next) = {
3434 let parsed = split(next, "_")
3535 let tokenId = parsed[0]
3636 let newPrice = valueOrErrorMessage(parseInt(parsed[1]), "Invalid value parsed price")
3737 let keyMinPrice = getPriceDataKey(height, "min", tokenId)
3838 let keyMaxPrice = getPriceDataKey(height, "max", tokenId)
3939 let currentMinPrice = valueOrElse(getInteger(keyMinPrice), 0)
4040 let currentMaxPrice = valueOrElse(getInteger(keyMaxPrice), 0)
4141 if ((0 >= newPrice))
4242 then throw("Price cannot be zero or less zero")
4343 else if ((size(tokenId) == 0))
4444 then throw("Inavalid value token Id")
4545 else if ((value(currentMinPrice) > newPrice))
4646 then (accum :+ IntegerEntry(keyMinPrice, newPrice))
4747 else if ((newPrice > value(currentMaxPrice)))
4848 then (accum :+ IntegerEntry(keyMaxPrice, newPrice))
4949 else accum
5050 }
5151
5252 let $l = priceList
5353 let $s = size($l)
5454 let $acc0 = nil
5555 func $f0_1 ($a,$i) = if (($i >= $s))
5656 then $a
5757 else processList($a, $l[$i])
5858
5959 func $f0_2 ($a,$i) = if (($i >= $s))
6060 then $a
6161 else throw("List size exceeds 100")
6262
6363 $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($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($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($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($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), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
6464 }
6565
6666
6767 @Callable(i)
6868 func updatePrice (prices) = if ((indexOf(whiteListAddresses, i.caller) == unit))
6969 then throw("Access denied")
7070 else if ((size(prices) == 0))
7171 then throw("Price list is empty")
7272 else ([IntegerEntry(lastUpdatedBlockKey, height)] ++ getPriceDataEntries(prices, height))
7373
7474
7575
7676 @Callable(i)
77-func getPrice (tokenId) = {
77+func getPrice (tokenId,debug) = {
7878 let lastUpdatedBlock = getIntegerValue(lastUpdatedBlockKey)
79- $Tuple2(nil, $Tuple2(getPriceValue(tokenId, "min", unit), getPriceValue(tokenId, "max", unit)))
79+ if (debug)
80+ then throw(((("min: " + toString(getPriceValue(tokenId, "min", unit))) + ", max: ") + toString(getPriceValue(tokenId, "max", unit))))
81+ else $Tuple2(nil, $Tuple2(getPriceValue(tokenId, "min", unit), getPriceValue(tokenId, "max", unit)))
8082 }
8183
8284
8385
8486 @Callable(i)
85-func getPriceAt (block,tokenId) = $Tuple2(nil, $Tuple2(getPriceValue(tokenId, "min", block), getPriceValue(tokenId, "max", block)))
87+func getPriceAt (block,tokenId,debug) = if (debug)
88+ then throw(((("min: " + toString(getPriceValue(tokenId, "min", block))) + ", max: ") + toString(getPriceValue(tokenId, "max", block))))
89+ else $Tuple2(nil, $Tuple2(getPriceValue(tokenId, "min", block), getPriceValue(tokenId, "max", block)))
8690
8791
8892
8993 @Callable(i)
90-func getTWAP60 (tokenId) = {
94+func getTWAP60 (tokenId,debug) = {
9195 let lastUpdatedBlock = getIntegerValue(lastUpdatedBlockKey)
9296 func getPriceList (accum,next) = {
93- let $t031833216 = accum
94- let result = $t031833216._1
95- let block = $t031833216._2
96- let type = $t031833216._3
97+ let $t035433576 = accum
98+ let result = $t035433576._1
99+ let block = $t035433576._2
100+ let type = $t035433576._3
97101 let priceValue = getPriceValue(tokenId, type, block)
98102 let nextBlock = (block - next)
99103 if ((priceValue > 0))
100104 then $Tuple3((result :+ priceValue), nextBlock, type)
101105 else $Tuple3(result, nextBlock, type)
102106 }
103107
104108 let minPricesList = {
105109 let $l = n60List
106110 let $s = size($l)
107111 let $acc0 = $Tuple3(nil, lastUpdatedBlock, "min")
108112 func $f0_1 ($a,$i) = if (($i >= $s))
109113 then $a
110114 else getPriceList($a, $l[$i])
111115
112116 func $f0_2 ($a,$i) = if (($i >= $s))
113117 then $a
114118 else throw("List size exceeds 60")
115119
116120 $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($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($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), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
117121 }
118122 let maxPricesList = {
119123 let $l = n60List
120124 let $s = size($l)
121125 let $acc0 = $Tuple3(nil, lastUpdatedBlock, "max")
122126 func $f1_1 ($a,$i) = if (($i >= $s))
123127 then $a
124128 else getPriceList($a, $l[$i])
125129
126130 func $f1_2 ($a,$i) = if (($i >= $s))
127131 then $a
128132 else throw("List size exceeds 60")
129133
130134 $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
131135 }
132136 func sum (accum,next) = (accum + next)
133137
134138 let minSum = {
135139 let $l = minPricesList._1
136140 let $s = size($l)
137141 let $acc0 = 0
138142 func $f2_1 ($a,$i) = if (($i >= $s))
139143 then $a
140144 else sum($a, $l[$i])
141145
142146 func $f2_2 ($a,$i) = if (($i >= $s))
143147 then $a
144148 else throw("List size exceeds 60")
145149
146150 $f2_2($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
147151 }
148152 let maxSum = {
149153 let $l = maxPricesList._1
150154 let $s = size($l)
151155 let $acc0 = 0
152156 func $f3_1 ($a,$i) = if (($i >= $s))
153157 then $a
154158 else sum($a, $l[$i])
155159
156160 func $f3_2 ($a,$i) = if (($i >= $s))
157161 then $a
158162 else throw("List size exceeds 60")
159163
160164 $f3_2($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
161165 }
162166 let minAverage = fraction(minSum, 1000000, size(minPricesList))
163167 let maxAverage = fraction(maxSum, 1000000, size(minPricesList))
164- $Tuple2(nil, $Tuple2(minAverage, maxAverage))
168+ if (debug)
169+ then throw(((("minAv: " + toString(minAverage)) + ", maxAv: ") + toString(maxAverage)))
170+ else $Tuple2(nil, $Tuple2(minAverage, maxAverage))
165171 }
166172
167173
168174
169175 @Callable(i)
170-func getTWAP15 (tokenId) = {
176+func getTWAP15 (tokenId,debug) = {
171177 let lastUpdatedBlock = getIntegerValue(lastUpdatedBlockKey)
172178 func getPriceList (accum,next) = {
173- let $t042074240 = accum
174- let result = $t042074240._1
175- let block = $t042074240._2
176- let type = $t042074240._3
179+ let $t046934726 = accum
180+ let result = $t046934726._1
181+ let block = $t046934726._2
182+ let type = $t046934726._3
177183 let priceValue = getPriceValue(tokenId, type, block)
178184 let nextBlock = (block - next)
179185 if ((priceValue > 0))
180186 then $Tuple3((result :+ priceValue), nextBlock, type)
181187 else $Tuple3(result, nextBlock, type)
182188 }
183189
184190 let minPricesList = {
185191 let $l = n15List
186192 let $s = size($l)
187193 let $acc0 = $Tuple3(nil, lastUpdatedBlock, "min")
188194 func $f0_1 ($a,$i) = if (($i >= $s))
189195 then $a
190196 else getPriceList($a, $l[$i])
191197
192198 func $f0_2 ($a,$i) = if (($i >= $s))
193199 then $a
194200 else throw("List size exceeds 15")
195201
196202 $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($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
197203 }
198204 let maxPricesList = {
199205 let $l = n15List
200206 let $s = size($l)
201207 let $acc0 = $Tuple3(nil, lastUpdatedBlock, "max")
202208 func $f1_1 ($a,$i) = if (($i >= $s))
203209 then $a
204210 else getPriceList($a, $l[$i])
205211
206212 func $f1_2 ($a,$i) = if (($i >= $s))
207213 then $a
208214 else throw("List size exceeds 15")
209215
210216 $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
211217 }
212218 func sum (accum,next) = (accum + next)
213219
214220 let minSum = {
215221 let $l = minPricesList._1
216222 let $s = size($l)
217223 let $acc0 = 0
218224 func $f2_1 ($a,$i) = if (($i >= $s))
219225 then $a
220226 else sum($a, $l[$i])
221227
222228 func $f2_2 ($a,$i) = if (($i >= $s))
223229 then $a
224230 else throw("List size exceeds 15")
225231
226232 $f2_2($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
227233 }
228234 let maxSum = {
229235 let $l = maxPricesList._1
230236 let $s = size($l)
231237 let $acc0 = 0
232238 func $f3_1 ($a,$i) = if (($i >= $s))
233239 then $a
234240 else sum($a, $l[$i])
235241
236242 func $f3_2 ($a,$i) = if (($i >= $s))
237243 then $a
238244 else throw("List size exceeds 15")
239245
240246 $f3_2($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
241247 }
242248 let minAverage = fraction(minSum, 1000000, size(minPricesList))
243249 let maxAverage = fraction(maxSum, 1000000, size(minPricesList))
244- $Tuple2(nil, $Tuple2(minAverage, maxAverage))
250+ if (debug)
251+ then throw(((("minAv: " + toString(minAverage)) + ", maxAv: ") + toString(maxAverage)))
252+ else $Tuple2(nil, $Tuple2(minAverage, maxAverage))
245253 }
246254
247255
248256 @Verifier(tx)
249257 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
250258

github/deemru/w8io/3ef1775 
44.94 ms