tx · DD4LroFKgFy71LTCYJrKN6ddxqGh7kHL7cVv4NZHNDVt

3N9kbR6BQEQV7pwBfDFzprJtNofgi6fSJ6Y:  -0.03400000 Waves

2022.09.02 17:02 [2211597] smart account 3N9kbR6BQEQV7pwBfDFzprJtNofgi6fSJ6Y > SELF 0.00000000 Waves

{ "type": 13, "id": "DD4LroFKgFy71LTCYJrKN6ddxqGh7kHL7cVv4NZHNDVt", "fee": 3400000, "feeAssetId": null, "timestamp": 1662127352208, "version": 2, "chainId": 84, "sender": "3N9kbR6BQEQV7pwBfDFzprJtNofgi6fSJ6Y", "senderPublicKey": "EajGg1J8duApPELWPw9gVkPwAKFC9hujhvCcne4FunUa", "proofs": [ "2AVDbfBgLA7thKx9weG5G1duD6qcfKHGRr4gmf1axpRQygYTWxLSgYxRzvzhVSNnKJWjL4egBsp8bHwBE8F6mfmE" ], "script": "base64:BgIVCAISAwoBCBIAEgMKAQgSBQoDCAgIFAAUa19jb29yZGluYXRvckFkZHJlc3MCFGtfY29vcmRpbmF0b3JBZGRyZXNzABJrX2FkbWluX3B1YmxpY19rZXkCEmtfYWRtaW5fcHVibGljX2tleQATa19xdW90ZUFzc2V0UmVzZXJ2ZQIIa19xdEFzdFIAEmtfYmFzZUFzc2V0UmVzZXJ2ZQIIa19ic0FzdFIAFGtfcG9zaXRpb25DbG9zZWREYXRlAhRrX3Bvc2l0aW9uQ2xvc2VkRGF0ZQAQa19leGVjdXRlZE9yZGVycwIQa19leGVjdXRlZE9yZGVycwAIa19zZW5kZXICCGtfc2VuZGVyAA1rX2luaXRpYWxpemVkAg1rX2luaXRpYWxpemVkAAtUQUtFX1BST0ZJVAABAAlTVE9QX0xPU1MAAgAEVElNRQgFCWxhc3RCbG9jawl0aW1lc3RhbXAADERFQ0lNQUxfVU5JVAkAaAIAAQkAaAIJAGgCCQBoAgkAaAIJAGgCAAoACgAKAAoACgAKAQRkaXZkAgJfeAJfeQkAbgQFAl94BQxERUNJTUFMX1VOSVQFAl95BQhIQUxGRVZFTgEEbXVsZAICX3gCX3kJAG4EBQJfeAUCX3kFDERFQ0lNQUxfVU5JVAUISEFMRkVWRU4BEGV4ZWN1dGVkT3JkZXJLZXkBCF9vcmRlcklkCQCsAgIJAKwCAgUQa19leGVjdXRlZE9yZGVycwIBXwUIX29yZGVySWQBC2Nvb3JkaW5hdG9yAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFFGtfY29vcmRpbmF0b3JBZGRyZXNzAhNDb29yZGluYXRvciBub3Qgc2V0AQ5hZG1pblB1YmxpY0tleQAJANkEAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBC2Nvb3JkaW5hdG9yAAUSa19hZG1pbl9wdWJsaWNfa2V5AQtpbml0aWFsaXplZAAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUNa19pbml0aWFsaXplZAcBGnJlcXVpcmVWYWxpZE9yZGVyU2lnbmF0dXJlBAdfcHJlZml4Bl9vcmRlcgpfc2lnbmF0dXJlEF9zZW5kZXJQdWJsaWNLZXkEB21lc3NhZ2UJAJsDAQkArAICBQdfcHJlZml4BQZfb3JkZXIEA3NpZwkA2QQBBQpfc2lnbmF0dXJlBANwdWIJANkEAQUQX3NlbmRlclB1YmxpY0tleQMJAPQDAwUHbWVzc2FnZQUDc2lnBQNwdWIFBHVuaXQJAAIBAhdJbnZhbGlkIG9yZGVyIHNpZ25hdHVyZQEScmVxdWlyZU5vdEV4ZWN1dGVkAQhfb3JkZXJJZAMJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwkBEGV4ZWN1dGVkT3JkZXJLZXkBBQhfb3JkZXJJZAcJAAIBCQCsAgICGE9yZGVyIGFscmVhZHkgZXhlY3V0ZWQ6IAUIX29yZGVySWQFBHVuaXQEAWkBCnNldENvbnRleHQBB19zZW5kZXIDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAg5Pbmx5IHNlbGYtY2FsbAkAzAgCCQELU3RyaW5nRW50cnkCBQhrX3NlbmRlcgUHX3NlbmRlcgUDbmlsAWkBDHJlc2V0Q29udGV4dAADCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAg5Pbmx5IHNlbGYtY2FsbAkAzAgCCQELRGVsZXRlRW50cnkBBQhrX3NlbmRlcgUDbmlsAWkBCmluaXRpYWxpemUBDF9jb29yZGluYXRvcgMJAQtpbml0aWFsaXplZAAJAAIBAhNBbHJlYWR5IGluaXRpYWxpemVkCQDMCAIJAQtTdHJpbmdFbnRyeQIFFGtfY29vcmRpbmF0b3JBZGRyZXNzBQxfY29vcmRpbmF0b3IJAMwIAgkBDEJvb2xlYW5FbnRyeQIFDWtfaW5pdGlhbGl6ZWQGBQNuaWwBaQEMZXhlY3V0ZU9yZGVyAwdfcHJlZml4Bl9vcmRlcgpfc2lnbmF0dXJlBApvcmRlclBhcnRzCQC1CQIFBl9vcmRlcgIBLAQJb3JkZXJUeXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQkAkQMCBQpvcmRlclBhcnRzAAACGUludmFsaWQgb3JkZXIgZGF0YSBbdHlwZV0EB29yZGVySWQJANgEAQkA9wMBCQCbAwEFBl9vcmRlcgQTdmFsaWRhdGVOb3RFeGVjdXRlZAkBEnJlcXVpcmVOb3RFeGVjdXRlZAEFB29yZGVySWQDCQAAAgUTdmFsaWRhdGVOb3RFeGVjdXRlZAUTdmFsaWRhdGVOb3RFeGVjdXRlZAMDCQAAAgUJb3JkZXJUeXBlBQtUQUtFX1BST0ZJVAYJAAACBQlvcmRlclR5cGUFCVNUT1BfTE9TUwQDYW1tCQCRAwIFCm9yZGVyUGFydHMAAQQPc2VuZGVyUHVibGljS2V5CQCRAwIFCm9yZGVyUGFydHMAAgQFcHJpY2UJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAtgkBCQCRAwIFCm9yZGVyUGFydHMAAwIaSW52YWxpZCBvcmRlciBkYXRhIFtwcmljZV0ECXRpbWVzdGFtcAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQC2CQEJAJEDAgUKb3JkZXJQYXJ0cwAEAh5JbnZhbGlkIG9yZGVyIGRhdGEgW3RpbWVzdGFtcF0ECHZhbGlkRHVlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQkAkQMCBQpvcmRlclBhcnRzAAUCHUludmFsaWQgb3JkZXIgZGF0YSBbdmFsaWREdWVdBBF2YWxpZGF0ZVNpZ25hdHVyZQkBGnJlcXVpcmVWYWxpZE9yZGVyU2lnbmF0dXJlBAUHX3ByZWZpeAUGX29yZGVyBQpfc2lnbmF0dXJlBQ9zZW5kZXJQdWJsaWNLZXkDCQAAAgURdmFsaWRhdGVTaWduYXR1cmUFEXZhbGlkYXRlU2lnbmF0dXJlBAphbW1BZGRyZXNzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUDYW1tAhhJbnZhbGlkIG9yZGVyIGRhdGEgW2FtbV0EEXF1b3RlQXNzZXRSZXNlcnZlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQphbW1BZGRyZXNzBRNrX3F1b3RlQXNzZXRSZXNlcnZlBBBiYXNlQXNzZXRSZXNlcnZlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQphbW1BZGRyZXNzBRJrX2Jhc2VBc3NldFJlc2VydmUECGFtbVByaWNlCQEEZGl2ZAIFEXF1b3RlQXNzZXRSZXNlcnZlBRBiYXNlQXNzZXRSZXNlcnZlBApwcmljZU1hdGNoAwkAAAIFCW9yZGVyVHlwZQULVEFLRV9QUk9GSVQJAGcCBQhhbW1QcmljZQUFcHJpY2UJAGcCBQVwcmljZQUIYW1tUHJpY2UEDXZhbGlkYXRlUHJpY2UDCQEBIQEFCnByaWNlTWF0Y2gJAAIBCQCsAgIJAKwCAgkArAICAilDYW4gbm90IGV4ZWN1dGUgb3JkZXIgW3ByaWNlXTogQU1NIFByaWNlPQkApAMBBQhhbW1QcmljZQINIE9yZGVyIFByaWNlPQkApAMBBQVwcmljZQUEdW5pdAMJAAACBQ12YWxpZGF0ZVByaWNlBQ12YWxpZGF0ZVByaWNlBAhkdWVNYXRjaAMJAAACBQh2YWxpZER1ZQAABgkAZwIFCHZhbGlkRHVlBQRUSU1FBAt2YWxpZGF0ZUR1ZQMJAQEhAQUIZHVlTWF0Y2gJAAIBCQCsAgIJAKwCAgkArAICAiFDYW4gbm90IGV4ZWN1dGUgb3JkZXIgW2R1ZV06IER1ZT0JAKQDAQUIdmFsaWREdWUCBiBUaW1lPQkApAMBBQRUSU1FBQR1bml0AwkAAAIFC3ZhbGlkYXRlRHVlBQt2YWxpZGF0ZUR1ZQQNdHJhZGVyQWRkcmVzcwkApQgBCQCnCAEJANkEAQUPc2VuZGVyUHVibGljS2V5BBFwb3NpdGlvbldhc0Nsb3NlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQphbW1BZGRyZXNzCQCsAgIJAKwCAgUUa19wb3NpdGlvbkNsb3NlZERhdGUCAV8FDXRyYWRlckFkZHJlc3MAAAQNcG9zaXRpb25NYXRjaAkAZwIFCXRpbWVzdGFtcAURcG9zaXRpb25XYXNDbG9zZWQEEHZhbGlkYXRlUG9zaXRpb24DCQEBIQEFDXBvc2l0aW9uTWF0Y2gJAAIBCQCsAgIJAKwCAgkArAICAjdDYW4gbm90IGV4ZWN1dGUgb3JkZXIgW3Bvc2l0aW9uIGNsb3NlZF06IE9yZGVyIENyZWF0ZWQ9CQCkAwEFCXRpbWVzdGFtcAIRIFBvc2l0aW9uIENsb3NlZD0JAKQDAQURcG9zaXRpb25XYXNDbG9zZWQFBHVuaXQDCQAAAgUQdmFsaWRhdGVQb3NpdGlvbgUQdmFsaWRhdGVQb3NpdGlvbgMDAwUKcHJpY2VNYXRjaAUIZHVlTWF0Y2gHBQ1wb3NpdGlvbk1hdGNoBwQMZG9TZXRDb250ZXh0CQD8BwQFBHRoaXMCCnNldENvbnRleHQJAMwIAgUNdHJhZGVyQWRkcmVzcwUDbmlsBQNuaWwDCQAAAgUMZG9TZXRDb250ZXh0BQxkb1NldENvbnRleHQED2RvQ2xvc2VQb3NpdGlvbgkA/AcEBQphbW1BZGRyZXNzAg1jbG9zZVBvc2l0aW9uBQNuaWwFA25pbAMJAAACBQ9kb0Nsb3NlUG9zaXRpb24FD2RvQ2xvc2VQb3NpdGlvbgQOZG9SZXNldENvbnRleHQJAPwHBAUEdGhpcwIMcmVzZXRDb250ZXh0BQNuaWwFA25pbAMJAAACBQ5kb1Jlc2V0Q29udGV4dAUOZG9SZXNldENvbnRleHQJAMwIAgkBDEJvb2xlYW5FbnRyeQIJARBleGVjdXRlZE9yZGVyS2V5AQUHb3JkZXJJZAYFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECHkludmFsaWQgb3JkZXIgZXhlY3V0aW9uIHRpbWluZwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgEJAKwCAgIUSW52YWxpZCBvcmRlciB0eXBlOiAJAKQDAQUJb3JkZXJUeXBlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAkBDmFkbWluUHVibGljS2V5ABetHkM=", "height": 2211597, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: 25o3gzaMe49eZgUyoMEdqps81Pfptxej6NQZU6mHLDJc Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 6 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let a = "k_coordinatorAddress"
5+
6+let b = "k_admin_public_key"
7+
8+let c = "k_qtAstR"
9+
10+let d = "k_bsAstR"
11+
12+let e = "k_positionClosedDate"
13+
14+let f = "k_executedOrders"
15+
16+let g = "k_sender"
17+
18+let h = "k_initialized"
19+
20+let i = 1
21+
22+let j = 2
23+
24+let k = lastBlock.timestamp
25+
26+let l = (1 * (((((10 * 10) * 10) * 10) * 10) * 10))
27+
28+func m (n,o) = fraction(n, l, o, HALFEVEN)
29+
30+
31+func p (n,o) = fraction(n, o, l, HALFEVEN)
32+
33+
34+func q (r) = ((f + "_") + r)
35+
36+
37+func s () = valueOrErrorMessage(addressFromString(getStringValue(this, a)), "Coordinator not set")
38+
39+
40+func t () = fromBase58String(getStringValue(s(), b))
41+
42+
43+func u () = valueOrElse(getBoolean(this, h), false)
44+
45+
46+func v (w,x,y,z) = {
47+ let A = toBytes((w + x))
48+ let B = fromBase58String(y)
49+ let C = fromBase58String(z)
50+ if (sigVerify(A, B, C))
51+ then unit
52+ else throw("Invalid order signature")
53+ }
54+
55+
56+func D (r) = if (valueOrElse(getBoolean(this, q(r)), false))
57+ then throw(("Order already executed: " + r))
58+ else unit
59+
60+
61+@Callable(E)
62+func setContext (F) = if ((E.caller != this))
63+ then throw("Only self-call")
64+ else [StringEntry(g, F)]
65+
66+
67+
68+@Callable(E)
69+func resetContext () = if ((E.caller != this))
70+ then throw("Only self-call")
71+ else [DeleteEntry(g)]
72+
73+
74+
75+@Callable(E)
76+func initialize (G) = if (u())
77+ then throw("Already initialized")
78+ else [StringEntry(a, G), BooleanEntry(h, true)]
79+
80+
81+
82+@Callable(E)
83+func executeOrder (w,x,y) = {
84+ let H = split(x, ",")
85+ let I = valueOrErrorMessage(parseInt(H[0]), "Invalid order data [type]")
86+ let J = toBase58String(sha256(toBytes(x)))
87+ let K = D(J)
88+ if ((K == K))
89+ then if (if ((I == i))
90+ then true
91+ else (I == j))
92+ then {
93+ let L = H[1]
94+ let M = H[2]
95+ let N = valueOrErrorMessage(parseInt(H[3]), "Invalid order data [price]")
96+ let O = valueOrErrorMessage(parseInt(H[4]), "Invalid order data [timestamp]")
97+ let P = valueOrErrorMessage(parseInt(H[5]), "Invalid order data [validDue]")
98+ let Q = v(w, x, y, M)
99+ if ((Q == Q))
100+ then {
101+ let R = valueOrErrorMessage(addressFromString(L), "Invalid order data [amm]")
102+ let S = getIntegerValue(R, c)
103+ let T = getIntegerValue(R, d)
104+ let U = m(S, T)
105+ let V = if ((I == i))
106+ then (U >= N)
107+ else (N >= U)
108+ let W = if (!(V))
109+ then throw(((("Can not execute order [price]: AMM Price=" + toString(U)) + " Order Price=") + toString(N)))
110+ else unit
111+ if ((W == W))
112+ then {
113+ let X = if ((P == 0))
114+ then true
115+ else (P >= k)
116+ let Y = if (!(X))
117+ then throw(((("Can not execute order [due]: Due=" + toString(P)) + " Time=") + toString(k)))
118+ else unit
119+ if ((Y == Y))
120+ then {
121+ let Z = toString(addressFromPublicKey(fromBase58String(M)))
122+ let aa = valueOrElse(getInteger(R, ((e + "_") + Z)), 0)
123+ let ab = (O >= aa)
124+ let ac = if (!(ab))
125+ then throw(((("Can not execute order [position closed]: Order Created=" + toString(O)) + " Position Closed=") + toString(aa)))
126+ else unit
127+ if ((ac == ac))
128+ then if (if (if (V)
129+ then X
130+ else false)
131+ then ab
132+ else false)
133+ then {
134+ let ad = invoke(this, "setContext", [Z], nil)
135+ if ((ad == ad))
136+ then {
137+ let ae = invoke(R, "closePosition", nil, nil)
138+ if ((ae == ae))
139+ then {
140+ let af = invoke(this, "resetContext", nil, nil)
141+ if ((af == af))
142+ then [BooleanEntry(q(J), true)]
143+ else throw("Strict value is not equal to itself.")
144+ }
145+ else throw("Strict value is not equal to itself.")
146+ }
147+ else throw("Strict value is not equal to itself.")
148+ }
149+ else throw("Invalid order execution timing")
150+ else throw("Strict value is not equal to itself.")
151+ }
152+ else throw("Strict value is not equal to itself.")
153+ }
154+ else throw("Strict value is not equal to itself.")
155+ }
156+ else throw("Strict value is not equal to itself.")
157+ }
158+ else throw(("Invalid order type: " + toString(I)))
159+ else throw("Strict value is not equal to itself.")
160+ }
161+
162+
163+@Verifier(ag)
164+func ah () = sigVerify(ag.bodyBytes, ag.proofs[0], t())
165+

github/deemru/w8io/873ac7e 
36.87 ms