tx · C65NVkb7e5uaftUpZ7dAgaicUhjiUDUn6ggQQd3Aueqd

3PMnUb4sdmj8EdXHEXejv1SSayFyvQAezYZ:  -0.05000000 Waves

2021.02.05 17:32 [2448770] smart account 3PMnUb4sdmj8EdXHEXejv1SSayFyvQAezYZ > SELF 0.00000000 Waves

{ "type": 13, "id": "C65NVkb7e5uaftUpZ7dAgaicUhjiUDUn6ggQQd3Aueqd", "fee": 5000000, "feeAssetId": null, "timestamp": 1612535621363, "version": 2, "chainId": 87, "sender": "3PMnUb4sdmj8EdXHEXejv1SSayFyvQAezYZ", "senderPublicKey": "8mTioppAL28oraN6ndifcjFcihYgA3mTyEaKXE42Ms5W", "proofs": [ "4iszCRVpsPatCJuzguvvV3KoaoxjqamnDaUKPbfn56io57h9YLqdNJ7rLFCaXbheYoAM6uDqoqUFbxiLCXPc6dD7" ], "script": "base64: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AwkAAAAAAAACBQAAAA0kc2l6ZTExNzIxMjEyAAAAAAAAAAACBQAAAA0kYWNjMjExNzIxMjEyBAAAAA0kYWNjMzExNzIxMjEyCQEAAAAUY29tcGFyZVByaWNlQXRIZWlnaHQAAAACBQAAAA0kYWNjMjExNzIxMjEyCQABkQAAAAIFAAAADSRsaXN0MTE3MjEyMTIAAAAAAAAAAAIDCQAAAAAAAAIFAAAADSRzaXplMTE3MjEyMTIAAAAAAAAAAAMFAAAADSRhY2MzMTE3MjEyMTIEAAAADSRhY2M0MTE3MjEyMTIJAQAAABRjb21wYXJlUHJpY2VBdEhlaWdodAAAAAIFAAAADSRhY2MzMTE3MjEyMTIJAAGRAAAAAgUAAAANJGxpc3QxMTcyMTIxMgAAAAAAAAAAAwMJAAAAAAAAAgUAAAANJHNpemUxMTcyMTIxMgAAAAAAAAAABAUAAAANJGFjYzQxMTcyMTIxMgQAAAANJGFjYzUxMTcyMTIxMgkBAAAAFGNvbXBhcmVQcmljZUF0SGVpZ2h0AAAAAgUAAAANJGFjYzQxMTcyMTIxMgkAAZEAAAACBQAAAA0kbGlzdDExNzIxMjEyAAAAAAAAAAAEAwkAAAAAAAACBQAAAA0kc2l6ZTExNzIxMjEyAAAAAAAAAAAFBQAAAA0kYWNjNTExNzIxMjEyBAAAAA0kYWNjNjExNzIxMjEyCQEAAAAUY29tcGFyZVByaWNlQXRIZWlnaHQAAAACBQAAAA0kYWNjNTExNzIxMjEyCQABkQAAAAIFAAAADSRsaXN0MTE3MjEyMTIAAAAAAAAAAAUDCQAAAAAAAAIFAAAADSRzaXplMTE3MjEyMTIAAAAAAAAAAAYFAAAADSRhY2M2MTE3MjEyMTIEAAAADSRhY2M3MTE3MjEyMTIJAQAAABRjb21wYXJlUHJpY2VBdEhlaWdodAAAAAIFAAAADSRhY2M2MTE3MjEyMTIJAAGRAAAAAgUAAAANJGxpc3QxMTcyMTIxMgAAAAAAAAAABgMJAAAAAAAAAgUAAAANJHNpemUxMTcyMTIxMgAAAAAAAAAABwUAAAANJGFjYzcxMTcyMTIxMgQAAAANJGFjYzgxMTcyMTIxMgkBAAAAFGNvbXBhcmVQcmljZUF0SGVpZ2h0AAAAAgUAAAANJGFjYzcxMTcyMTIxMgkAAZEAAAACBQAAAA0kbGlzdDExNzIxMjEyAAAAAAAAAAAHAwkAAAAAAAACBQAAAA0kc2l6ZTExNzIxMjEyAAAAAAAAAAAIBQAAAA0kYWNjODExNzIxMjEyBAAAAA0kYWNjOTExNzIxMjEyCQEAAAAUY29tcGFyZVByaWNlQXRIZWlnaHQAAAACBQAAAA0kYWNjODExNzIxMjEyCQABkQAAAAIFAAAADSRsaXN0MTE3MjEyMTIAAAAAAAAAAAgDCQAAAAAAAAIFAAAADSRzaXplMTE3MjEyMTIAAAAAAAAAAAkFAAAADSRhY2M5MTE3MjEyMTIEAAAADiRhY2MxMDExNzIxMjEyCQEAAAAUY29tcGFyZVByaWNlQXRIZWlnaHQAAAACBQAAAA0kYWNjOTExNzIxMjEyCQABkQAAAAIFAAAADSRsaXN0MTE3MjEyMTIAAAAAAAAAAAkDCQAAAAAAAAIFAAAADSRzaXplMTE3MjEyMTIAAAAAAAAAAAoFAAAADiRhY2MxMDExNzIxMjEyBAAAAA4kYWNjMTExMTcyMTIxMgkBAAAAFGNvbXBhcmVQcmljZUF0SGVpZ2h0AAAAAgUAAAAOJGFjYzEwMTE3MjEyMTIJAAGRAAAAAgUAAAANJGxpc3QxMTcyMTIxMgAAAAAAAAAACgkAAAIAAAABAgAAABNMaXN0IHNpemUgZXhjZWVkIDEwBQAAAAxjbG9zZXN0UHJpY2UAAAAEAAAAAWkBAAAACHdpdGhkcmF3AAAAAQAAAAZ0YXJnZXQDCQAAZgAAAAIJAABkAAAAAgUAAAAGdGFyZ2V0AAAAAAAAAAABBQAAAAZoZWlnaHQJAAACAAAAAQIAAAAzRW5kIG9mIHByZWRpY3Rpb25zIGZvciB0aGlzIGhlaWdodCBub3QgcmVhY2hlZCB5ZXQhBAAAAA1wcmljZUF0VGFyZ2V0CQEAAAAPZ2V0Q2xvc2VzdFByaWNlAAAAAQUAAAAGaGVpZ2h0AwkAAAAAAAACBQAAAA1wcmljZUF0VGFyZ2V0AAAAAAAAAAAACQAAAgAAAAECAAAAK0NvdWxkIG5vdCBkZXRlcm1pbmUgcHJpY2UgYXQgdGFyZ2V0IGhlaWdodCEEAAAABmNhbGxlcggFAAAAAWkAAAAGY2FsbGVyBAAAAAt0YXJnZXRQcmljZQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAAA10YXJnZXRfcHJpY2VfCQABpAAAAAEFAAAABnRhcmdldAQAAAAKdG90YWxMb25ncwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAICAAAADGxvbmdzX3RvdGFsXwkAAaQAAAABBQAAAAZ0YXJnZXQAAAAAAAAAAAAEAAAAC3RvdGFsU2hvcnRzCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAANc2hvcnRzX3RvdGFsXwkAAaQAAAABBQAAAAZ0YXJnZXQAAAAAAAAAAAADCQAAZgAAAAIFAAAADXByaWNlQXRUYXJnZXQFAAAAC3RhcmdldFByaWNlBAAAAAdwcmVjZXB0CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAABWxvbmdfCQABpAAAAAEFAAAABnRhcmdldAIAAAABXwkABCUAAAABBQAAAAZjYWxsZXIAAAAAAAAAAAAEAAAABnBheW91dAkAAGsAAAADBQAAAAdwcmVjZXB0CQAAZAAAAAIFAAAACnRvdGFsTG9uZ3MFAAAAC3RvdGFsU2hvcnRzBQAAAAp0b3RhbExvbmdzCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAApsb25nIHdvbjogCQABpAAAAAEFAAAABnBheW91dAIAAAABIAkAAaQAAAABBQAAAA1wcmljZUF0VGFyZ2V0AgAAAAEgCQABpAAAAAEFAAAAC3RhcmdldFByaWNlAwkAAGYAAAACBQAAAAt0YXJnZXRQcmljZQUAAAANcHJpY2VBdFRhcmdldAQAAAAHcHJlY2VwdAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAZzaG9ydF8JAAGkAAAAAQUAAAAGdGFyZ2V0AgAAAAFfCQAEJQAAAAEFAAAABmNhbGxlcgAAAAAAAAAAAAQAAAAGcGF5b3V0CQAAawAAAAMFAAAAB3ByZWNlcHQJAABkAAAAAgUAAAAKdG90YWxMb25ncwUAAAALdG90YWxTaG9ydHMFAAAAC3RvdGFsU2hvcnRzCQAAAgAAAAEJAAEsAAAAAgIAAAALc2hvcnQgd29uOiAJAAGkAAAAAQUAAAAGcGF5b3V0BAAAAAtwcmVjZXB0TG9uZwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAVsb25nXwkAAaQAAAABBQAAAAZ0YXJnZXQCAAAAAV8JAAQlAAAAAQUAAAAGY2FsbGVyAAAAAAAAAAAABAAAAAxwcmVjZXB0U2hvcnQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAGc2hvcnRfCQABpAAAAAEFAAAABnRhcmdldAIAAAABXwkABCUAAAABBQAAAAZjYWxsZXIAAAAAAAAAAAAEAAAABnBheW91dAkAAGQAAAACBQAAAAtwcmVjZXB0TG9uZwUAAAAMcHJlY2VwdFNob3J0CQEAAAAJcGF5Q2FsbGVyAAAAAwUAAAAGdGFyZ2V0BQAAAAZjYWxsZXIFAAAABnBheW91dAAAAAFpAQAAAAhpbml0aWF0ZQAAAAEAAAAGdGFyZ2V0BAAAAAxjdXJyZW50UHJpY2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAADVBSSUNJTkdPUkFDTEUCAAAABXByaWNlBAAAAAlpbml0aWF0ZWQEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAAA10YXJnZXRfcHJpY2VfCQABpAAAAAEFAAAABnRhcmdldAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAF4BQAAAAckbWF0Y2gwCQEAAAACIT0AAAACBQAAAAF4AAAAAAAAAAAAAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0BwkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgMJAABnAAAAAgkAAGQAAAACBQAAAAZoZWlnaHQFAAAADkNPT0xET1dOUEVSSU9EBQAAAAZ0YXJnZXQJAAACAAAAAQkAASwAAAACAgAAADFObyBuZXcgZnV0dXJlIGluc3RhbnRpYWJsZSBmb3IgdGhlIGdpdmVuIGhlaWdodDogCQABpAAAAAEFAAAABnRhcmdldAMFAAAACWluaXRpYXRlZAkAAAIAAAABAgAAABlUYXJnZXQgYWxyZWFkeSBpbml0aWF0ZWQhCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAICAAAADXRhcmdldF9wcmljZV8JAAGkAAAAAQUAAAAGdGFyZ2V0BQAAAAxjdXJyZW50UHJpY2UJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgIAAAANc2hvcnRzX3RvdGFsXwkAAaQAAAABBQAAAAZ0YXJnZXQAAAAAAAAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgIAAAAMbG9uZ3NfdG90YWxfCQABpAAAAAEFAAAABnRhcmdldAAAAAAAAAAAAAUAAAADbmlsAAAAAWkBAAAAB2dvU2hvcnQAAAABAAAAC3Nob3J0VGFyZ2V0BAAAAAt0YXJnZXRQcmljZQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAICAAAADXRhcmdldF9wcmljZV8JAAGkAAAAAQUAAAALc2hvcnRUYXJnZXQAAAAAAAAAAAADCQAAAAAAAAIFAAAAC3RhcmdldFByaWNlAAAAAAAAAAAACQAAAgAAAAECAAAAF1RhcmdldCBub3QgaW5pdGlhbGl6ZWQhBAAAAAZjYWxsZXIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAA9zaG9ydEFkZHJlc3NLZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAABnNob3J0XwkAAaQAAAABBQAAAAtzaG9ydFRhcmdldAIAAAABXwUAAAAGY2FsbGVyBAAAAA5zaG9ydHNUb3RhbEtleQkAASwAAAACAgAAAA1zaG9ydHNfdG90YWxfCQABpAAAAAEFAAAAC3Nob3J0VGFyZ2V0BAAAABxjdXJyZW50U2hvcnRBbW91bnRGb3JBZGRyZXNzCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAD3Nob3J0QWRkcmVzc0tleQAAAAAAAAAAAAQAAAANY3VycmVudFNob3J0cwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAA5zaG9ydHNUb3RhbEtleQAAAAAAAAAAAAQAAAAHcGF5bWVudAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAGYW1vdW50CAUAAAAHcGF5bWVudAAAAAZhbW91bnQDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkAAAIAAAABAgAAACZPbmx5IFdhdmVzIHBheW1lbnRzIGFsbG93ZWQgY3VycmVudGx5IQMJAABnAAAAAgkAAGQAAAACBQAAAAZoZWlnaHQFAAAADkNPT0xET1dOUEVSSU9EBQAAAAtzaG9ydFRhcmdldAkAAAIAAAABAgAAAFVSZWNvdmVyeSBwaGFzZSBhY3RpdmUuIFlvdSBjYW4gbm8gbG9uZ2VyIGdvIHNob3J0IHRvd2FyZHMgdGhpcyBzaG9ydCB0YXJnZXQgLyBoZWlnaHQhCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA9zaG9ydEFkZHJlc3NLZXkJAABkAAAAAgUAAAAcY3VycmVudFNob3J0QW1vdW50Rm9yQWRkcmVzcwUAAAAGYW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA5zaG9ydHNUb3RhbEtleQkAAGQAAAACBQAAAA1jdXJyZW50U2hvcnRzBQAAAAZhbW91bnQFAAAAA25pbAAAAAFpAQAAAAZnb0xvbmcAAAABAAAACmxvbmdUYXJnZXQEAAAAC3RhcmdldFByaWNlCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAANdGFyZ2V0X3ByaWNlXwkAAaQAAAABBQAAAApsb25nVGFyZ2V0AAAAAAAAAAAAAwkAAAAAAAACBQAAAAt0YXJnZXRQcmljZQAAAAAAAAAAAAkAAAIAAAABAgAAABdUYXJnZXQgbm90IGluaXRpYWxpemVkIQQAAAAGY2FsbGVyCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAObG9uZ0FkZHJlc3NLZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAABWxvbmdfCQABpAAAAAEFAAAACmxvbmdUYXJnZXQCAAAAAV8FAAAABmNhbGxlcgQAAAANbG9uZ3NUb3RhbEtleQkAASwAAAACAgAAAAxsb25nc190b3RhbF8JAAGkAAAAAQUAAAAKbG9uZ1RhcmdldAQAAAAbY3VycmVudExvbmdBbW91bnRGb3JBZGRyZXNzCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAADmxvbmdBZGRyZXNzS2V5AAAAAAAAAAAABAAAAAxjdXJyZW50TG9uZ3MJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAANbG9uZ3NUb3RhbEtleQAAAAAAAAAAAAQAAAAHcGF5bWVudAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAGYW1vdW50CAUAAAAHcGF5bWVudAAAAAZhbW91bnQDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkAAAIAAAABAgAAACZPbmx5IFdhdmVzIHBheW1lbnRzIGFsbG93ZWQgY3VycmVudGx5IQMJAABnAAAAAgkAAGQAAAACBQAAAAZoZWlnaHQFAAAADkNPT0xET1dOUEVSSU9EBQAAAApsb25nVGFyZ2V0CQAAAgAAAAECAAAAU1JlY292ZXJ5IHBoYXNlIGFjdGl2ZS4gWW91IGNhbiBubyBsb25nZXIgZ28gbG9uZyB0b3dhcmRzIHRoaXMgbG9uZyB0YXJnZXQgLyBoZWlnaHQhCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA5sb25nQWRkcmVzc0tleQkAAGQAAAACBQAAABtjdXJyZW50TG9uZ0Ftb3VudEZvckFkZHJlc3MFAAAABmFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAANbG9uZ3NUb3RhbEtleQkAAGQAAAACBQAAAAxjdXJyZW50TG9uZ3MFAAAABmFtb3VudAUAAAADbmlsAAAAAAy2xsQ=", "height": 2448770, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6CqqmhsjRvMq2QauBxceyqyPoneprNPWsGkr1wafHsKq Next: 22rhVxtSR5SNzmqdVfqjbtnZMZPE14jX9EMqfxSJPP5s Diff:
OldNewDifferences
88 func payCaller (target,caller,amoung) = [IntegerEntry(((("long_" + toString(target)) + "_") + toString(caller)), 0), IntegerEntry(((("short_" + toString(target)) + "_") + toString(caller)), 0), ScriptTransfer(caller, amoung, unit)]
99
1010
11-func getPriceAtHeight (height) = {
11+func getPriceAtHeight (relevantHeight) = {
1212 let address = addressFromStringValue(PRICINGORACLE)
13- let key = ("price_" + toString(height))
13+ let key = ("price_" + toString(relevantHeight))
1414 valueOrElse(getInteger(address, key), 0)
1515 }
1616
1717
18-func comparePriceAtHeight (result,step) = valueOrElse(getPriceAtHeight((height - step)), result)
18+func comparePriceAtHeight (result,relevantHeight) = {
19+ let priceAtHeight = getPriceAtHeight(relevantHeight)
20+ if ((priceAtHeight > 0))
21+ then priceAtHeight
22+ else result
23+ }
1924
2025
21-func getClosestPrice (height) = {
22- let steps = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
26+func getClosestPrice (relevantHeight) = {
27+ let steps = [(relevantHeight - 9), (relevantHeight - 8), (relevantHeight - 7), (relevantHeight - 6), (relevantHeight - 5), (relevantHeight - 4), (relevantHeight - 3), (relevantHeight - 2), (relevantHeight - 1), (relevantHeight - 0)]
2328 let closestPrice = {
24- let $list874914 = steps
25- let $size874914 = size($list874914)
26- let $acc0874914 = 0
27- if (($size874914 == 0))
28- then $acc0874914
29+ let $list11721212 = steps
30+ let $size11721212 = size($list11721212)
31+ let $acc011721212 = 0
32+ if (($size11721212 == 0))
33+ then $acc011721212
2934 else {
30- let $acc1874914 = comparePriceAtHeight($acc0874914, $list874914[0])
31- if (($size874914 == 1))
32- then $acc1874914
35+ let $acc111721212 = comparePriceAtHeight($acc011721212, $list11721212[0])
36+ if (($size11721212 == 1))
37+ then $acc111721212
3338 else {
34- let $acc2874914 = comparePriceAtHeight($acc1874914, $list874914[1])
35- if (($size874914 == 2))
36- then $acc2874914
39+ let $acc211721212 = comparePriceAtHeight($acc111721212, $list11721212[1])
40+ if (($size11721212 == 2))
41+ then $acc211721212
3742 else {
38- let $acc3874914 = comparePriceAtHeight($acc2874914, $list874914[2])
39- if (($size874914 == 3))
40- then $acc3874914
43+ let $acc311721212 = comparePriceAtHeight($acc211721212, $list11721212[2])
44+ if (($size11721212 == 3))
45+ then $acc311721212
4146 else {
42- let $acc4874914 = comparePriceAtHeight($acc3874914, $list874914[3])
43- if (($size874914 == 4))
44- then $acc4874914
47+ let $acc411721212 = comparePriceAtHeight($acc311721212, $list11721212[3])
48+ if (($size11721212 == 4))
49+ then $acc411721212
4550 else {
46- let $acc5874914 = comparePriceAtHeight($acc4874914, $list874914[4])
47- if (($size874914 == 5))
48- then $acc5874914
51+ let $acc511721212 = comparePriceAtHeight($acc411721212, $list11721212[4])
52+ if (($size11721212 == 5))
53+ then $acc511721212
4954 else {
50- let $acc6874914 = comparePriceAtHeight($acc5874914, $list874914[5])
51- if (($size874914 == 6))
52- then $acc6874914
55+ let $acc611721212 = comparePriceAtHeight($acc511721212, $list11721212[5])
56+ if (($size11721212 == 6))
57+ then $acc611721212
5358 else {
54- let $acc7874914 = comparePriceAtHeight($acc6874914, $list874914[6])
55- if (($size874914 == 7))
56- then $acc7874914
59+ let $acc711721212 = comparePriceAtHeight($acc611721212, $list11721212[6])
60+ if (($size11721212 == 7))
61+ then $acc711721212
5762 else {
58- let $acc8874914 = comparePriceAtHeight($acc7874914, $list874914[7])
59- if (($size874914 == 8))
60- then $acc8874914
63+ let $acc811721212 = comparePriceAtHeight($acc711721212, $list11721212[7])
64+ if (($size11721212 == 8))
65+ then $acc811721212
6166 else {
62- let $acc9874914 = comparePriceAtHeight($acc8874914, $list874914[8])
63- if (($size874914 == 9))
64- then $acc9874914
67+ let $acc911721212 = comparePriceAtHeight($acc811721212, $list11721212[8])
68+ if (($size11721212 == 9))
69+ then $acc911721212
6570 else {
66- let $acc10874914 = comparePriceAtHeight($acc9874914, $list874914[9])
67- if (($size874914 == 10))
68- then $acc10874914
71+ let $acc1011721212 = comparePriceAtHeight($acc911721212, $list11721212[9])
72+ if (($size11721212 == 10))
73+ then $acc1011721212
6974 else {
70- let $acc11874914 = comparePriceAtHeight($acc10874914, $list874914[10])
75+ let $acc1111721212 = comparePriceAtHeight($acc1011721212, $list11721212[10])
7176 throw("List size exceed 10")
7277 }
7378 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let COOLDOWNPERIOD = 6000
55
66 let PRICINGORACLE = "3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP"
77
88 func payCaller (target,caller,amoung) = [IntegerEntry(((("long_" + toString(target)) + "_") + toString(caller)), 0), IntegerEntry(((("short_" + toString(target)) + "_") + toString(caller)), 0), ScriptTransfer(caller, amoung, unit)]
99
1010
11-func getPriceAtHeight (height) = {
11+func getPriceAtHeight (relevantHeight) = {
1212 let address = addressFromStringValue(PRICINGORACLE)
13- let key = ("price_" + toString(height))
13+ let key = ("price_" + toString(relevantHeight))
1414 valueOrElse(getInteger(address, key), 0)
1515 }
1616
1717
18-func comparePriceAtHeight (result,step) = valueOrElse(getPriceAtHeight((height - step)), result)
18+func comparePriceAtHeight (result,relevantHeight) = {
19+ let priceAtHeight = getPriceAtHeight(relevantHeight)
20+ if ((priceAtHeight > 0))
21+ then priceAtHeight
22+ else result
23+ }
1924
2025
21-func getClosestPrice (height) = {
22- let steps = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
26+func getClosestPrice (relevantHeight) = {
27+ let steps = [(relevantHeight - 9), (relevantHeight - 8), (relevantHeight - 7), (relevantHeight - 6), (relevantHeight - 5), (relevantHeight - 4), (relevantHeight - 3), (relevantHeight - 2), (relevantHeight - 1), (relevantHeight - 0)]
2328 let closestPrice = {
24- let $list874914 = steps
25- let $size874914 = size($list874914)
26- let $acc0874914 = 0
27- if (($size874914 == 0))
28- then $acc0874914
29+ let $list11721212 = steps
30+ let $size11721212 = size($list11721212)
31+ let $acc011721212 = 0
32+ if (($size11721212 == 0))
33+ then $acc011721212
2934 else {
30- let $acc1874914 = comparePriceAtHeight($acc0874914, $list874914[0])
31- if (($size874914 == 1))
32- then $acc1874914
35+ let $acc111721212 = comparePriceAtHeight($acc011721212, $list11721212[0])
36+ if (($size11721212 == 1))
37+ then $acc111721212
3338 else {
34- let $acc2874914 = comparePriceAtHeight($acc1874914, $list874914[1])
35- if (($size874914 == 2))
36- then $acc2874914
39+ let $acc211721212 = comparePriceAtHeight($acc111721212, $list11721212[1])
40+ if (($size11721212 == 2))
41+ then $acc211721212
3742 else {
38- let $acc3874914 = comparePriceAtHeight($acc2874914, $list874914[2])
39- if (($size874914 == 3))
40- then $acc3874914
43+ let $acc311721212 = comparePriceAtHeight($acc211721212, $list11721212[2])
44+ if (($size11721212 == 3))
45+ then $acc311721212
4146 else {
42- let $acc4874914 = comparePriceAtHeight($acc3874914, $list874914[3])
43- if (($size874914 == 4))
44- then $acc4874914
47+ let $acc411721212 = comparePriceAtHeight($acc311721212, $list11721212[3])
48+ if (($size11721212 == 4))
49+ then $acc411721212
4550 else {
46- let $acc5874914 = comparePriceAtHeight($acc4874914, $list874914[4])
47- if (($size874914 == 5))
48- then $acc5874914
51+ let $acc511721212 = comparePriceAtHeight($acc411721212, $list11721212[4])
52+ if (($size11721212 == 5))
53+ then $acc511721212
4954 else {
50- let $acc6874914 = comparePriceAtHeight($acc5874914, $list874914[5])
51- if (($size874914 == 6))
52- then $acc6874914
55+ let $acc611721212 = comparePriceAtHeight($acc511721212, $list11721212[5])
56+ if (($size11721212 == 6))
57+ then $acc611721212
5358 else {
54- let $acc7874914 = comparePriceAtHeight($acc6874914, $list874914[6])
55- if (($size874914 == 7))
56- then $acc7874914
59+ let $acc711721212 = comparePriceAtHeight($acc611721212, $list11721212[6])
60+ if (($size11721212 == 7))
61+ then $acc711721212
5762 else {
58- let $acc8874914 = comparePriceAtHeight($acc7874914, $list874914[7])
59- if (($size874914 == 8))
60- then $acc8874914
63+ let $acc811721212 = comparePriceAtHeight($acc711721212, $list11721212[7])
64+ if (($size11721212 == 8))
65+ then $acc811721212
6166 else {
62- let $acc9874914 = comparePriceAtHeight($acc8874914, $list874914[8])
63- if (($size874914 == 9))
64- then $acc9874914
67+ let $acc911721212 = comparePriceAtHeight($acc811721212, $list11721212[8])
68+ if (($size11721212 == 9))
69+ then $acc911721212
6570 else {
66- let $acc10874914 = comparePriceAtHeight($acc9874914, $list874914[9])
67- if (($size874914 == 10))
68- then $acc10874914
71+ let $acc1011721212 = comparePriceAtHeight($acc911721212, $list11721212[9])
72+ if (($size11721212 == 10))
73+ then $acc1011721212
6974 else {
70- let $acc11874914 = comparePriceAtHeight($acc10874914, $list874914[10])
75+ let $acc1111721212 = comparePriceAtHeight($acc1011721212, $list11721212[10])
7176 throw("List size exceed 10")
7277 }
7378 }
7479 }
7580 }
7681 }
7782 }
7883 }
7984 }
8085 }
8186 }
8287 }
8388 }
8489 closestPrice
8590 }
8691
8792
8893 @Callable(i)
8994 func withdraw (target) = if (((target + 1) > height))
9095 then throw("End of predictions for this height not reached yet!")
9196 else {
9297 let priceAtTarget = getClosestPrice(height)
9398 if ((priceAtTarget == 0))
9499 then throw("Could not determine price at target height!")
95100 else {
96101 let caller = i.caller
97102 let targetPrice = getIntegerValue(this, ("target_price_" + toString(target)))
98103 let totalLongs = valueOrElse(getInteger(this, ("longs_total_" + toString(target))), 0)
99104 let totalShorts = valueOrElse(getInteger(this, ("shorts_total_" + toString(target))), 0)
100105 if ((priceAtTarget > targetPrice))
101106 then {
102107 let precept = valueOrElse(getInteger(this, ((("long_" + toString(target)) + "_") + toString(caller))), 0)
103108 let payout = fraction(precept, (totalLongs + totalShorts), totalLongs)
104109 throw(((((("long won: " + toString(payout)) + " ") + toString(priceAtTarget)) + " ") + toString(targetPrice)))
105110 }
106111 else if ((targetPrice > priceAtTarget))
107112 then {
108113 let precept = valueOrElse(getInteger(this, ((("short_" + toString(target)) + "_") + toString(caller))), 0)
109114 let payout = fraction(precept, (totalLongs + totalShorts), totalShorts)
110115 throw(("short won: " + toString(payout)))
111116 }
112117 else {
113118 let preceptLong = valueOrElse(getInteger(this, ((("long_" + toString(target)) + "_") + toString(caller))), 0)
114119 let preceptShort = valueOrElse(getInteger(this, ((("short_" + toString(target)) + "_") + toString(caller))), 0)
115120 let payout = (preceptLong + preceptShort)
116121 payCaller(target, caller, payout)
117122 }
118123 }
119124 }
120125
121126
122127
123128 @Callable(i)
124129 func initiate (target) = {
125130 let currentPrice = getIntegerValue(addressFromStringValue(PRICINGORACLE), "price")
126131 let initiated = match getInteger(this, ("target_price_" + toString(target))) {
127132 case x: Int =>
128133 (x != 0)
129134 case _: Unit =>
130135 false
131136 case _ =>
132137 throw("Match error")
133138 }
134139 if (((height + COOLDOWNPERIOD) >= target))
135140 then throw(("No new future instantiable for the given height: " + toString(target)))
136141 else if (initiated)
137142 then throw("Target already initiated!")
138143 else [IntegerEntry(("target_price_" + toString(target)), currentPrice), IntegerEntry(("shorts_total_" + toString(target)), 0), IntegerEntry(("longs_total_" + toString(target)), 0)]
139144 }
140145
141146
142147
143148 @Callable(i)
144149 func goShort (shortTarget) = {
145150 let targetPrice = valueOrElse(getInteger(this, ("target_price_" + toString(shortTarget))), 0)
146151 if ((targetPrice == 0))
147152 then throw("Target not initialized!")
148153 else {
149154 let caller = toString(i.caller)
150155 let shortAddressKey = ((("short_" + toString(shortTarget)) + "_") + caller)
151156 let shortsTotalKey = ("shorts_total_" + toString(shortTarget))
152157 let currentShortAmountForAddress = valueOrElse(getInteger(this, shortAddressKey), 0)
153158 let currentShorts = valueOrElse(getInteger(this, shortsTotalKey), 0)
154159 let payment = value(i.payments[0])
155160 let amount = payment.amount
156161 if (isDefined(payment.assetId))
157162 then throw("Only Waves payments allowed currently!")
158163 else if (((height + COOLDOWNPERIOD) >= shortTarget))
159164 then throw("Recovery phase active. You can no longer go short towards this short target / height!")
160165 else [IntegerEntry(shortAddressKey, (currentShortAmountForAddress + amount)), IntegerEntry(shortsTotalKey, (currentShorts + amount))]
161166 }
162167 }
163168
164169
165170
166171 @Callable(i)
167172 func goLong (longTarget) = {
168173 let targetPrice = valueOrElse(getInteger(this, ("target_price_" + toString(longTarget))), 0)
169174 if ((targetPrice == 0))
170175 then throw("Target not initialized!")
171176 else {
172177 let caller = toString(i.caller)
173178 let longAddressKey = ((("long_" + toString(longTarget)) + "_") + caller)
174179 let longsTotalKey = ("longs_total_" + toString(longTarget))
175180 let currentLongAmountForAddress = valueOrElse(getInteger(this, longAddressKey), 0)
176181 let currentLongs = valueOrElse(getInteger(this, longsTotalKey), 0)
177182 let payment = value(i.payments[0])
178183 let amount = payment.amount
179184 if (isDefined(payment.assetId))
180185 then throw("Only Waves payments allowed currently!")
181186 else if (((height + COOLDOWNPERIOD) >= longTarget))
182187 then throw("Recovery phase active. You can no longer go long towards this long target / height!")
183188 else [IntegerEntry(longAddressKey, (currentLongAmountForAddress + amount)), IntegerEntry(longsTotalKey, (currentLongs + amount))]
184189 }
185190 }
186191
187192

github/deemru/w8io/3ef1775 
109.40 ms