tx · 3SH3KUiykeKWPR2BsSMEjNbMYENbMRNZgwE1rarL9YBK

3PNze6jf5ZvScSj1cmiq34Jby825MV49gR3:  -0.01000000 Waves

2021.07.08 13:28 [2669281] smart account 3PNze6jf5ZvScSj1cmiq34Jby825MV49gR3 > SELF 0.00000000 Waves

{ "type": 13, "id": "3SH3KUiykeKWPR2BsSMEjNbMYENbMRNZgwE1rarL9YBK", "fee": 1000000, "feeAssetId": null, "timestamp": 1625740102811, "version": 1, "sender": "3PNze6jf5ZvScSj1cmiq34Jby825MV49gR3", "senderPublicKey": "2LTH2FED81uaJjvBKDdpcdgE78Xv26Fs33Yc3Kmz8dih", "proofs": [ "2HDBMrqNTvGLFomobiNenB1TzHNa1jo2hnvizRrBX8ih6pe1Wg7zkU1joMM8WKDXHNUGMjtqunHP7EHtt3S2c7zd" ], "script": "base64:AAIFAAAAAAAAAAgIAhIECgIIAQAAAAYAAAAABUhFQURLAgAAAAtoZWFkUG9pbnRlcgAAAAAHUkVCSURYSwIAAAAVbGFzdFNldHRsZW1lbnRQcmljZUlkAAAAAANNQVgAf/////////8BAAAAA2ludgAAAAEAAAAHYWRkcmVzcwQAAAACYTEJAAP8AAAABAUAAAAHYWRkcmVzcwIAAAAHc2V0dGxlMwUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAAAmExBQAAAAJhMQQAAAACYTIJAAP8AAAABAUAAAAHYWRkcmVzcwIAAAAHc2V0dGxlMwUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAAAmEyBQAAAAJhMgQAAAACYTMJAAP8AAAABAUAAAAHYWRkcmVzcwIAAAAHc2V0dGxlMwUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAAAmEzBQAAAAJhMwQAAAACYTQJAAP8AAAABAUAAAAHYWRkcmVzcwIAAAAHc2V0dGxlMwUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAAAmE0BQAAAAJhNAQAAAACYTUJAAP8AAAABAUAAAAHYWRkcmVzcwIAAAAHc2V0dGxlMwUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAAAmE1BQAAAAJhNQQAAAACYTYJAAP8AAAABAUAAAAHYWRkcmVzcwIAAAAHc2V0dGxlMwUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAAAmE2BQAAAAJhNgAAAAAAAAAAAAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEAAAAGY29tbW9uAAAAAQAAAARkYXBwBAAAAAdhZGRyZXNzCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQUAAAAEZGFwcAIAAAAdcGFjZXdyYXBwZXI6IGJhZCBkYXBwIGFkZHJlc3MEAAAACG9yYWNsZXYyCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAHYWRkcmVzcwIAAAAIb3JhY2xldjICAAAAHHBhY2V3cmFwcGVyOiBubyBvcmFjbGV2MiBrZXkEAAAABm9yYWNsZQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEJgAAAAEFAAAACG9yYWNsZXYyAgAAAB9wYWNld3JhcHBlcjogYmFkIG9yYWNsZSBhZGRyZXNzBAAAAAlhc3NldGlkdjIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAdhZGRyZXNzAgAAAAlhc3NldGlkdjICAAAADG5vIGFzc2V0aWR2MgQAAAARbGFzdFByaWNlSW5kZXhLZXkJAAEsAAAAAgIAAAASJXMlc19faWR4Q3VycmVudF9fBQAAAAlhc3NldGlkdjIEAAAAEXNldHRsZWRQcmljZUluZGV4CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAHYWRkcmVzcwUAAAAHUkVCSURYSwIAAAAXbm8gbGFzdCByZWJhbGFuY2UgcHJpY2UEAAAAEG9yYWNsZVByaWNlSW5kZXgJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAZvcmFjbGUFAAAAEWxhc3RQcmljZUluZGV4S2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAACBwYWNld3JhcHBlcjogYmFkIG9yYWNsZSBkYXRhIGF0IAkABCUAAAABBQAAAAZvcmFjbGUCAAAAEDogbm8gaW50ZWdlciBhdCAFAAAAEWxhc3RQcmljZUluZGV4S2V5BAAAABFyZXF1ZXN0UHJpY2VJbmRleAQAAAALaGVhZFBvaW50ZXIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAAFSEVBREsCAAAAAAMJAAAAAAAAAgUAAAALaGVhZFBvaW50ZXICAAAAAAUAAAADTUFYBAAAAARkYXRhCQAEtQAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAAB2FkZHJlc3MFAAAAC2hlYWRQb2ludGVyAgAAAAF8BAAAAANycGkJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAARkYXRhAAAAAAAAAAADBQAAAANycGkEAAAAFmhhc1Byb2Nlc3NhYmxlUmVxdWVzdHMJAABnAAAAAgUAAAAQb3JhY2xlUHJpY2VJbmRleAUAAAARcmVxdWVzdFByaWNlSW5kZXgJAAUXAAAABQUAAAAHYWRkcmVzcwUAAAARc2V0dGxlZFByaWNlSW5kZXgFAAAAEG9yYWNsZVByaWNlSW5kZXgFAAAAEXJlcXVlc3RQcmljZUluZGV4BQAAABZoYXNQcm9jZXNzYWJsZVJlcXVlc3RzAQAAAAZhZHZpc2UAAAABAAAABGRhcHAEAAAACyR0MDE4OTUyMDUyCQEAAAAGY29tbW9uAAAAAQUAAAAEZGFwcAMJAAAAAAAAAgUAAAALJHQwMTg5NTIwNTIFAAAACyR0MDE4OTUyMDUyBAAAABZoYXNQcm9jZXNzYWJsZVJlcXVlc3RzCAUAAAALJHQwMTg5NTIwNTIAAAACXzUEAAAAEXJlcXVlc3RQcmljZUluZGV4CAUAAAALJHQwMTg5NTIwNTIAAAACXzQEAAAAEG9yYWNsZVByaWNlSW5kZXgIBQAAAAskdDAxODk1MjA1MgAAAAJfMwQAAAARc2V0dGxlZFByaWNlSW5kZXgIBQAAAAskdDAxODk1MjA1MgAAAAJfMgQAAAAHYWRkcmVzcwgFAAAACyR0MDE4OTUyMDUyAAAAAl8xBAAAAAVCVUxMSwIAAAAGQlVMTElkBAAAAAVCRUFSSwIAAAAGQkVBUklkBAAAAAlQT09MVVNETksCAAAAEnBvb2xNYWluVG9rZW5WYWx1ZQQAAAAHUE9PTFVQSwIAAAAGcG9vbFVwBAAAAAhQT09MRFdOSwIAAAAHcG9vbER3bgQAAAAIQlVMTENPTEsCAAAADmJ1bGxDb2xsYXRlcmFsBAAAAAhCRUFSQ09MSwIAAAAOYmVhckNvbGxhdGVyYWwEAAAACUJVTExDSVJDSwIAAAAPYnVsbENpcmN1bGF0aW9uBAAAAAlCRUFSQ0lSQ0sCAAAAD2JlYXJDaXJjdWxhdGlvbgQAAAAEQlVMTAkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAHYWRkcmVzcwUAAAAFQlVMTEsEAAAABEJFQVIJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAAB2FkZHJlc3MFAAAABUJFQVJLBAAAAAhwb29sTWFpbgkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAHYWRkcmVzcwUAAAAJUE9PTFVTRE5LBAAAAAZwb29sVXAJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAAB2FkZHJlc3MFAAAAB1BPT0xVUEsEAAAAB3Bvb2xEd24JAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAAB2FkZHJlc3MFAAAACFBPT0xEV05LBAAAAAdidWxsQ29sCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAdhZGRyZXNzBQAAAAhCVUxMQ09MSwQAAAAHYmVhckNvbAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAHYWRkcmVzcwUAAAAIQkVBUkNPTEsEAAAACGJ1bGxDaXJjCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAdhZGRyZXNzBQAAAAlCVUxMQ0lSQ0sEAAAACGJlYXJDaXJjCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAdhZGRyZXNzBQAAAAlCRUFSQ0lSQ0sEAAAAEHBvb2xCdWxsRXhwb3N1cmUJAABrAAAAAwUAAAAHYnVsbENvbAUAAAAGcG9vbFVwBQAAAAhidWxsQ2lyYwQAAAAQcG9vbEJlYXJFeHBvc3VyZQkAAGsAAAADBQAAAAdiZWFyQ29sBQAAAAdwb29sRHduBQAAAAhiZWFyQ2lyYwQAAAAJcG9vbFZhbHVlCQAAZAAAAAIJAABkAAAAAgUAAAAIcG9vbE1haW4FAAAAEHBvb2xCdWxsRXhwb3N1cmUFAAAAEHBvb2xCZWFyRXhwb3N1cmUKAQAAAAdkaWZmQWJzAAAAAgAAAAJhMQAAAAJhMgQAAAAEZGlmZgkAAGUAAAACBQAAAAJhMQUAAAACYTIDCQAAZgAAAAIFAAAABGRpZmYAAAAAAAAAAAAFAAAABGRpZmYJAABlAAAAAgAAAAAAAAAAAAUAAAAEZGlmZgoBAAAAC3VzZXJEaWZmQWJzAAAAAAkBAAAAB2RpZmZBYnMAAAACCQAAZQAAAAIFAAAAB2J1bGxDb2wFAAAAEHBvb2xCdWxsRXhwb3N1cmUJAABlAAAAAgUAAAAHYmVhckNvbAUAAAAQcG9vbEJlYXJFeHBvc3VyZQoBAAAACG1heElzc3VlAAAAAQAAAAd0b2tlbklkBAAAAA5wb29sSW52ZXN0bWVudAMJAABmAAAAAgUAAAAGcG9vbFVwAAAAAAAAAAAABQAAAARCVUxMBQAAAARCRUFSAwkBAAAAAiE9AAAAAgUAAAAHdG9rZW5JZAUAAAAOcG9vbEludmVzdG1lbnQFAAAACHBvb2xNYWluCQAAZAAAAAIJAQAAAAt1c2VyRGlmZkFicwAAAAAFAAAACXBvb2xWYWx1ZQQAAAAFYmFzaWMJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAdkYXBwID0gBQAAAARkYXBwAgAAABosIGN1cnJlbnRCdWxsQ29sbGF0ZXJhbCA9IAkAAaQAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAdhZGRyZXNzAgAAAA5idWxsQ29sbGF0ZXJhbAIAAAAaLCBjdXJyZW50QmVhckNvbGxhdGVyYWwgPSAJAAGkAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAHYWRkcmVzcwIAAAAOYmVhckNvbGxhdGVyYWwCAAAAGywgY3VycmVudEJ1bGxDaXJjdWxhdGlvbiA9IAkAAaQAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAdhZGRyZXNzAgAAAA9idWxsQ2lyY3VsYXRpb24CAAAAGywgY3VycmVudEJlYXJDaXJjdWxhdGlvbiA9IAkAAaQAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAdhZGRyZXNzAgAAAA9iZWFyQ2lyY3VsYXRpb24CAAAAFiwgc2V0dGxlZFByaWNlSW5kZXggPSAJAAGkAAAAAQUAAAARc2V0dGxlZFByaWNlSW5kZXgCAAAAFSwgb3JhY2xlUHJpY2VJbmRleCA9IAkAAaQAAAABBQAAABBvcmFjbGVQcmljZUluZGV4AgAAABYsIHJlcXVlc3RQcmljZUluZGV4ID0gCQABpAAAAAEDCQAAAAAAAAIFAAAAEXJlcXVlc3RQcmljZUluZGV4BQAAAANNQVgA//////////8FAAAAEXJlcXVlc3RQcmljZUluZGV4AgAAABssIGhhc1Byb2Nlc3NhYmxlUmVxdWVzdHMgPSADBQAAABZoYXNQcm9jZXNzYWJsZVJlcXVlc3RzAgAAAAR0cnVlAgAAAAVmYWxzZQMJAAAAAAAAAgUAAAAFYmFzaWMFAAAABWJhc2ljBAAAAANyZXMJAQAAAANpbnYAAAABBQAAAAdhZGRyZXNzAwkAAAAAAAACBQAAAANyZXMFAAAAA3JlcwQAAAAGc3RhdGVSCQAD/AAAAAQFAAAAB2FkZHJlc3MCAAAABXN0YXRlBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAGc3RhdGVSBQAAAAZzdGF0ZVIEAAAABXN0YXRlBAAAAAckbWF0Y2gwBQAAAAZzdGF0ZVIDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABcwUAAAAHJG1hdGNoMAUAAAABcwkAAAIAAAABAgAAAAp1bmV4cGVjdGVkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAViYXNpYwIAAAAcLCBwcm9qZWN0ZWRCdWxsQ29sbGF0ZXJhbCA9IAkAAaQAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAdhZGRyZXNzAgAAAA5idWxsQ29sbGF0ZXJhbAIAAAAcLCBwcm9qZWN0ZWRCZWFyQ29sbGF0ZXJhbCA9IAkAAaQAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAdhZGRyZXNzAgAAAA5iZWFyQ29sbGF0ZXJhbAIAAAAdLCBwcm9qZWN0ZWRCdWxsQ2lyY3VsYXRpb24gPSAJAAGkAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAHYWRkcmVzcwIAAAAPYnVsbENpcmN1bGF0aW9uAgAAAB0sIHByb2plY3RlZEJlYXJDaXJjdWxhdGlvbiA9IAkAAaQAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAdhZGRyZXNzAgAAAA9iZWFyQ2lyY3VsYXRpb24CAAAAESwgbWF4SXNzdWVCdWxsID0gCQABpAAAAAEJAQAAAAhtYXhJc3N1ZQAAAAEFAAAABEJVTEwCAAAAESwgbWF4SXNzdWVCZWFyID0gCQABpAAAAAEJAQAAAAhtYXhJc3N1ZQAAAAEFAAAABEJFQVIJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAQAAAAFpAQAAAAlzZXR0bGVBbGwAAAACAAAABGRhcHAAAAAPbWluUHJpY2VBZHZhbmNlBAAAAAskdDA1MDIyNTEzMAkBAAAABmNvbW1vbgAAAAEFAAAABGRhcHAEAAAAB2FkZHJlc3MIBQAAAAskdDA1MDIyNTEzMAAAAAJfMQQAAAARc2V0dGxlZFByaWNlSW5kZXgIBQAAAAskdDA1MDIyNTEzMAAAAAJfMgQAAAAQb3JhY2xlUHJpY2VJbmRleAgFAAAACyR0MDUwMjI1MTMwAAAAAl8zBAAAABFyZXF1ZXN0UHJpY2VJbmRleAgFAAAACyR0MDUwMjI1MTMwAAAAAl80BAAAABZoYXNQcm9jZXNzYWJsZVJlcXVlc3RzCAUAAAALJHQwNTAyMjUxMzAAAAACXzUDAwUAAAAWaGFzUHJvY2Vzc2FibGVSZXF1ZXN0cwYJAABnAAAAAgkAAGUAAAACBQAAABBvcmFjbGVQcmljZUluZGV4BQAAABFzZXR0bGVkUHJpY2VJbmRleAUAAAAPbWluUHJpY2VBZHZhbmNlBAAAAARyZXMxCQEAAAADaW52AAAAAQUAAAAHYWRkcmVzcwMJAAAAAAAAAgUAAAAEcmVzMQUAAAAEcmVzMQUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAABOW09LXSBubyBhY3Rpb25zIHF1ZXVlIGFuZCBwcmljZSBxdWV1ZShvcmFjbGVQcmljZUluZGV4IC0gc2V0dGxlZFByaWNlSW5kZXgpID0gCQABpAAAAAEJAABlAAAAAgUAAAAQb3JhY2xlUHJpY2VJbmRleAUAAAARc2V0dGxlZFByaWNlSW5kZXgCAAAACiB0b28gc21hbGwAAAAAYuDd7Q==", "chainId": 87, "height": 2669281, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HvrPxiHxVktHoPKDZBJUvySF5RxspJQ4sdYp56ipEf6s Next: Hk8i78DkPuAYwsn2dyJ6oxqZhWvHPpqdaSUM2gdFc7EU Diff:
OldNewDifferences
6464
6565
6666 func advise (dapp) = {
67- let $t018952006 = common(dapp)
68- if (($t018952006 == $t018952006))
67+ let $t018952052 = common(dapp)
68+ if (($t018952052 == $t018952052))
6969 then {
70- let hasProcessableRequests = $t018952006._5
71- let requestPriceIndex = $t018952006._4
72- let oraclePriceIndex = $t018952006._3
73- let settledPriceIndex = $t018952006._2
74- let address = $t018952006._1
70+ let hasProcessableRequests = $t018952052._5
71+ let requestPriceIndex = $t018952052._4
72+ let oraclePriceIndex = $t018952052._3
73+ let settledPriceIndex = $t018952052._2
74+ let address = $t018952052._1
75+ let BULLK = "BULLId"
76+ let BEARK = "BEARId"
77+ let POOLUSDNK = "poolMainTokenValue"
78+ let POOLUPK = "poolUp"
79+ let POOLDWNK = "poolDwn"
80+ let BULLCOLK = "bullCollateral"
81+ let BEARCOLK = "bearCollateral"
82+ let BULLCIRCK = "bullCirculation"
83+ let BEARCIRCK = "bearCirculation"
84+ let BULL = getStringValue(address, BULLK)
85+ let BEAR = getStringValue(address, BEARK)
86+ let poolMain = getIntegerValue(address, POOLUSDNK)
87+ let poolUp = getIntegerValue(address, POOLUPK)
88+ let poolDwn = getIntegerValue(address, POOLDWNK)
89+ let bullCol = getIntegerValue(address, BULLCOLK)
90+ let bearCol = getIntegerValue(address, BEARCOLK)
91+ let bullCirc = getIntegerValue(address, BULLCIRCK)
92+ let bearCirc = getIntegerValue(address, BEARCIRCK)
93+ let poolBullExposure = fraction(bullCol, poolUp, bullCirc)
94+ let poolBearExposure = fraction(bearCol, poolDwn, bearCirc)
95+ let poolValue = ((poolMain + poolBullExposure) + poolBearExposure)
96+ func diffAbs (a1,a2) = {
97+ let diff = (a1 - a2)
98+ if ((diff > 0))
99+ then diff
100+ else (0 - diff)
101+ }
102+
103+ func userDiffAbs () = diffAbs((bullCol - poolBullExposure), (bearCol - poolBearExposure))
104+
105+ func maxIssue (tokenId) = {
106+ let poolInvestment = if ((poolUp > 0))
107+ then BULL
108+ else BEAR
109+ if ((tokenId != poolInvestment))
110+ then poolMain
111+ else (userDiffAbs() + poolValue)
112+ }
113+
75114 let basic = ((((((((((((((((("dapp = " + dapp) + ", currentBullCollateral = ") + toString(getIntegerValue(address, "bullCollateral"))) + ", currentBearCollateral = ") + toString(getIntegerValue(address, "bearCollateral"))) + ", currentBullCirculation = ") + toString(getIntegerValue(address, "bullCirculation"))) + ", currentBearCirculation = ") + toString(getIntegerValue(address, "bearCirculation"))) + ", settledPriceIndex = ") + toString(settledPriceIndex)) + ", oraclePriceIndex = ") + toString(oraclePriceIndex)) + ", requestPriceIndex = ") + toString(if ((requestPriceIndex == MAX))
76115 then -1
77116 else requestPriceIndex)) + ", hasProcessableRequests = ") + (if (hasProcessableRequests)
81120 then {
82121 let res = inv(address)
83122 if ((res == res))
84- then ((((((((basic + ", projectedBullCollateral = ") + toString(getIntegerValue(address, "bullCollateral"))) + ", projectedBearCollateral = ") + toString(getIntegerValue(address, "bearCollateral"))) + ", projectedBullCirculation = ") + toString(getIntegerValue(address, "bullCirculation"))) + ", projectedBearCirculation = ") + toString(getIntegerValue(address, "bearCirculation")))
123+ then {
124+ let stateR = invoke(address, "state", nil, nil)
125+ if ((stateR == stateR))
126+ then {
127+ let state = match stateR {
128+ case s: String =>
129+ s
130+ case _ =>
131+ throw("unexpected")
132+ }
133+ ((((((((((((basic + ", projectedBullCollateral = ") + toString(getIntegerValue(address, "bullCollateral"))) + ", projectedBearCollateral = ") + toString(getIntegerValue(address, "bearCollateral"))) + ", projectedBullCirculation = ") + toString(getIntegerValue(address, "bullCirculation"))) + ", projectedBearCirculation = ") + toString(getIntegerValue(address, "bearCirculation"))) + ", maxIssueBull = ") + toString(maxIssue(BULL))) + ", maxIssueBear = ") + toString(maxIssue(BEAR)))
134+ }
135+ else throw("Strict value is not equal to itself.")
136+ }
85137 else throw("Strict value is not equal to itself.")
86138 }
87139 else throw("Strict value is not equal to itself.")
91143
92144
93145 @Callable(i)
94-func settleAll (dapp) = {
95- let $t032503358 = common(dapp)
96- let address = $t032503358._1
97- let settledPriceIndex = $t032503358._2
98- let oraclePriceIndex = $t032503358._3
99- let requestPriceIndex = $t032503358._4
100- let hasProcessableRequests = $t032503358._5
146+func settleAll (dapp,minPriceAdvance) = {
147+ let $t050225130 = common(dapp)
148+ let address = $t050225130._1
149+ let settledPriceIndex = $t050225130._2
150+ let oraclePriceIndex = $t050225130._3
151+ let requestPriceIndex = $t050225130._4
152+ let hasProcessableRequests = $t050225130._5
101153 if (if (hasProcessableRequests)
102154 then true
103- else ((oraclePriceIndex - settledPriceIndex) > 40))
155+ else ((oraclePriceIndex - settledPriceIndex) >= minPriceAdvance))
104156 then {
105157 let res1 = inv(address)
106158 if ((res1 == res1))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let HEADK = "headPointer"
55
66 let REBIDXK = "lastSettlementPriceId"
77
88 let MAX = 9223372036854775807
99
1010 func inv (address) = {
1111 let a1 = invoke(address, "settle3", nil, nil)
1212 if ((a1 == a1))
1313 then {
1414 let a2 = invoke(address, "settle3", nil, nil)
1515 if ((a2 == a2))
1616 then {
1717 let a3 = invoke(address, "settle3", nil, nil)
1818 if ((a3 == a3))
1919 then {
2020 let a4 = invoke(address, "settle3", nil, nil)
2121 if ((a4 == a4))
2222 then {
2323 let a5 = invoke(address, "settle3", nil, nil)
2424 if ((a5 == a5))
2525 then {
2626 let a6 = invoke(address, "settle3", nil, nil)
2727 if ((a6 == a6))
2828 then 0
2929 else throw("Strict value is not equal to itself.")
3030 }
3131 else throw("Strict value is not equal to itself.")
3232 }
3333 else throw("Strict value is not equal to itself.")
3434 }
3535 else throw("Strict value is not equal to itself.")
3636 }
3737 else throw("Strict value is not equal to itself.")
3838 }
3939 else throw("Strict value is not equal to itself.")
4040 }
4141
4242
4343 func common (dapp) = {
4444 let address = valueOrErrorMessage(addressFromString(dapp), "pacewrapper: bad dapp address")
4545 let oraclev2 = valueOrErrorMessage(getString(address, "oraclev2"), "pacewrapper: no oraclev2 key")
4646 let oracle = valueOrErrorMessage(addressFromString(oraclev2), "pacewrapper: bad oracle address")
4747 let assetidv2 = valueOrErrorMessage(getString(address, "assetidv2"), "no assetidv2")
4848 let lastPriceIndexKey = ("%s%s__idxCurrent__" + assetidv2)
4949 let settledPriceIndex = valueOrErrorMessage(getInteger(address, REBIDXK), "no last rebalance price")
5050 let oraclePriceIndex = valueOrErrorMessage(getInteger(oracle, lastPriceIndexKey), ((("pacewrapper: bad oracle data at " + toString(oracle)) + ": no integer at ") + lastPriceIndexKey))
5151 let requestPriceIndex = {
5252 let headPointer = valueOrElse(getString(address, HEADK), "")
5353 if ((headPointer == ""))
5454 then MAX
5555 else {
5656 let data = split(getStringValue(address, headPointer), "|")
5757 let rpi = parseIntValue(data[3])
5858 rpi
5959 }
6060 }
6161 let hasProcessableRequests = (oraclePriceIndex >= requestPriceIndex)
6262 $Tuple5(address, settledPriceIndex, oraclePriceIndex, requestPriceIndex, hasProcessableRequests)
6363 }
6464
6565
6666 func advise (dapp) = {
67- let $t018952006 = common(dapp)
68- if (($t018952006 == $t018952006))
67+ let $t018952052 = common(dapp)
68+ if (($t018952052 == $t018952052))
6969 then {
70- let hasProcessableRequests = $t018952006._5
71- let requestPriceIndex = $t018952006._4
72- let oraclePriceIndex = $t018952006._3
73- let settledPriceIndex = $t018952006._2
74- let address = $t018952006._1
70+ let hasProcessableRequests = $t018952052._5
71+ let requestPriceIndex = $t018952052._4
72+ let oraclePriceIndex = $t018952052._3
73+ let settledPriceIndex = $t018952052._2
74+ let address = $t018952052._1
75+ let BULLK = "BULLId"
76+ let BEARK = "BEARId"
77+ let POOLUSDNK = "poolMainTokenValue"
78+ let POOLUPK = "poolUp"
79+ let POOLDWNK = "poolDwn"
80+ let BULLCOLK = "bullCollateral"
81+ let BEARCOLK = "bearCollateral"
82+ let BULLCIRCK = "bullCirculation"
83+ let BEARCIRCK = "bearCirculation"
84+ let BULL = getStringValue(address, BULLK)
85+ let BEAR = getStringValue(address, BEARK)
86+ let poolMain = getIntegerValue(address, POOLUSDNK)
87+ let poolUp = getIntegerValue(address, POOLUPK)
88+ let poolDwn = getIntegerValue(address, POOLDWNK)
89+ let bullCol = getIntegerValue(address, BULLCOLK)
90+ let bearCol = getIntegerValue(address, BEARCOLK)
91+ let bullCirc = getIntegerValue(address, BULLCIRCK)
92+ let bearCirc = getIntegerValue(address, BEARCIRCK)
93+ let poolBullExposure = fraction(bullCol, poolUp, bullCirc)
94+ let poolBearExposure = fraction(bearCol, poolDwn, bearCirc)
95+ let poolValue = ((poolMain + poolBullExposure) + poolBearExposure)
96+ func diffAbs (a1,a2) = {
97+ let diff = (a1 - a2)
98+ if ((diff > 0))
99+ then diff
100+ else (0 - diff)
101+ }
102+
103+ func userDiffAbs () = diffAbs((bullCol - poolBullExposure), (bearCol - poolBearExposure))
104+
105+ func maxIssue (tokenId) = {
106+ let poolInvestment = if ((poolUp > 0))
107+ then BULL
108+ else BEAR
109+ if ((tokenId != poolInvestment))
110+ then poolMain
111+ else (userDiffAbs() + poolValue)
112+ }
113+
75114 let basic = ((((((((((((((((("dapp = " + dapp) + ", currentBullCollateral = ") + toString(getIntegerValue(address, "bullCollateral"))) + ", currentBearCollateral = ") + toString(getIntegerValue(address, "bearCollateral"))) + ", currentBullCirculation = ") + toString(getIntegerValue(address, "bullCirculation"))) + ", currentBearCirculation = ") + toString(getIntegerValue(address, "bearCirculation"))) + ", settledPriceIndex = ") + toString(settledPriceIndex)) + ", oraclePriceIndex = ") + toString(oraclePriceIndex)) + ", requestPriceIndex = ") + toString(if ((requestPriceIndex == MAX))
76115 then -1
77116 else requestPriceIndex)) + ", hasProcessableRequests = ") + (if (hasProcessableRequests)
78117 then "true"
79118 else "false"))
80119 if ((basic == basic))
81120 then {
82121 let res = inv(address)
83122 if ((res == res))
84- then ((((((((basic + ", projectedBullCollateral = ") + toString(getIntegerValue(address, "bullCollateral"))) + ", projectedBearCollateral = ") + toString(getIntegerValue(address, "bearCollateral"))) + ", projectedBullCirculation = ") + toString(getIntegerValue(address, "bullCirculation"))) + ", projectedBearCirculation = ") + toString(getIntegerValue(address, "bearCirculation")))
123+ then {
124+ let stateR = invoke(address, "state", nil, nil)
125+ if ((stateR == stateR))
126+ then {
127+ let state = match stateR {
128+ case s: String =>
129+ s
130+ case _ =>
131+ throw("unexpected")
132+ }
133+ ((((((((((((basic + ", projectedBullCollateral = ") + toString(getIntegerValue(address, "bullCollateral"))) + ", projectedBearCollateral = ") + toString(getIntegerValue(address, "bearCollateral"))) + ", projectedBullCirculation = ") + toString(getIntegerValue(address, "bullCirculation"))) + ", projectedBearCirculation = ") + toString(getIntegerValue(address, "bearCirculation"))) + ", maxIssueBull = ") + toString(maxIssue(BULL))) + ", maxIssueBear = ") + toString(maxIssue(BEAR)))
134+ }
135+ else throw("Strict value is not equal to itself.")
136+ }
85137 else throw("Strict value is not equal to itself.")
86138 }
87139 else throw("Strict value is not equal to itself.")
88140 }
89141 else throw("Strict value is not equal to itself.")
90142 }
91143
92144
93145 @Callable(i)
94-func settleAll (dapp) = {
95- let $t032503358 = common(dapp)
96- let address = $t032503358._1
97- let settledPriceIndex = $t032503358._2
98- let oraclePriceIndex = $t032503358._3
99- let requestPriceIndex = $t032503358._4
100- let hasProcessableRequests = $t032503358._5
146+func settleAll (dapp,minPriceAdvance) = {
147+ let $t050225130 = common(dapp)
148+ let address = $t050225130._1
149+ let settledPriceIndex = $t050225130._2
150+ let oraclePriceIndex = $t050225130._3
151+ let requestPriceIndex = $t050225130._4
152+ let hasProcessableRequests = $t050225130._5
101153 if (if (hasProcessableRequests)
102154 then true
103- else ((oraclePriceIndex - settledPriceIndex) > 40))
155+ else ((oraclePriceIndex - settledPriceIndex) >= minPriceAdvance))
104156 then {
105157 let res1 = inv(address)
106158 if ((res1 == res1))
107159 then nil
108160 else throw("Strict value is not equal to itself.")
109161 }
110162 else throw((("[OK] no actions queue and price queue(oraclePriceIndex - settledPriceIndex) = " + toString((oraclePriceIndex - settledPriceIndex))) + " too small"))
111163 }
112164
113165

github/deemru/w8io/3ef1775 
67.78 ms