tx · jsupw7HNM16HghuxVRZ6ByGuFsj1qwanVSqxhtUgriZ 3MvZpvvbmovEt3pvdDZKvhKRjjQxdbUD6Tv: -0.02200000 Waves 2022.11.02 15:26 [2299490] smart account 3MvZpvvbmovEt3pvdDZKvhKRjjQxdbUD6Tv > SELF 0.00000000 Waves
{ "type": 13, "id": "jsupw7HNM16HghuxVRZ6ByGuFsj1qwanVSqxhtUgriZ", "fee": 2200000, "feeAssetId": null, "timestamp": 1667392010226, "version": 1, "sender": "3MvZpvvbmovEt3pvdDZKvhKRjjQxdbUD6Tv", "senderPublicKey": "39YkRD2qWXTcdNBr4CbDnm8g8SAB2FKVaDeGYahcFHHx", "proofs": [ "2vwJwMwCQGkKc8VEHsn2bS25J8Fp8cG95xE7hbFo68Z3Vx4Cr3qsfVgFz9JbDDfcUfU7U2kW9kw8GMP96uXt66zw" ], "script": "base64:AAIFAAAAAAAADTAIAhIJCgcBAQEBAQgBEgASBAoCCAgSBAoCCAgSBAoCCAgSAwoBCBIAIg9nZXRTdHJpbmdPckZhaWwiA2tleSIDU0VQIghCVUZTQ0FMRSIGc2NhbGU4Igh0aHJvd0VyciIDbXNnIh1jb252ZXJ0UHJpY2VBc3NldEludG9JZG9Bc3NldCIQcHJpY2VBc3NldEFtb3VudCIOcHJpY2VBc3NldE1VTFQiBXByaWNlIglwcmljZU1VTFQiDGlkb0Fzc2V0TVVMVCIPYlByaWNlQXNzZXRNVUxUIg1iSWRvQXNzZXRNVUxUIg5iUHJpY2VBc3NldEJVRiIPYkFtb3VudEFzc2V0QlVGIg5JZHhDZmdJZG9TdGFydCIRSWR4Q2ZnSWRvRHVyYXRpb24iEElkeENmZ0NsYWltU3RhcnQiE0lkeENmZ0NsYWltRHVyYXRpb24iC0lkeENmZ1ByaWNlIg9JZHhDZmdQcmljZU11bHQiEElkeENmZ0lkb0Fzc2V0SWQiEklkeENmZ0lkb0Fzc2V0TXVsdCISSWR4Q2ZnUHJpY2VBc3NldElkIhRJZHhDZmdQcmljZUFzc2V0TXVsdCIVSWR4Q2ZnTWluSW52ZXN0QW1vdW50Ig1mcm9tYXRDb25maWdTIghpZG9TdGFydCILaWRvRHVyYXRpb24iCmNsYWltU3RhcnQiDWNsYWltRHVyYXRpb24iCXByaWNlTXVsdCIMaWRvQXNzZXRJZDU4IgxpZG9Bc3NldE11bHQiDnByaWNlQXNzZXRJZDU4Ig5wcmljZUFzc2V0TXVsdCIPbWluSW52ZXN0QW1vdW50IhN0b3RhbElkb0Fzc2V0VG9TZWxsIgxmcm9tYXRDb25maWciEUlkeEludlRvdGFsQW1vdW50IhVJZHhJbnZSZW1haW5pbmdBbW91bnQiHUlkeEludkNsYWltZWRQcmljZUFzc2V0QW1vdW50IhtJZHhJbnZDbGFpbWVkSWRvQXNzZXRBbW91bnQiF0lkeEludkxhc3RDbGFpbWVkSGVpZ2h0Ig9mb3JtYXRJbnZlc3RvclMiC3RvdGFsQW1vdW50Ig9yZW1haW5pbmdBbW91bnQiF2NsYWltZWRQcmljZUFzc2V0QW1vdW50IhVjbGFpbWVkSWRvQXNzZXRBbW91bnQiEWxhc3RDbGFpbWVkSGVpZ2h0Ig5mb3JtYXRJbnZlc3RvciITZm9ybWF0SGlzdG9yeVJlY29yZCIOaWRvQXNzZXRBbW91bnQiCWtleUNvbmZpZyILa2V5SW52ZXN0b3IiC3VzZXJBZGRyZXNzIglrZXlUb3RhbHMiGWtleU9wZXJhdGlvbkhpc3RvcnlSZWNvcmQiBHR5cGUiBnR4SWQ1OCIUa2V5VVNETkNsYWltRGlzYWJsZWQiFWtleVVTRE5DbGFpbUVuZEhlaWdodCIPa2V5UGVyaW9kTGVuZ3RoIhBrZXlDdXJybmV0UGVyaW9kIhRrZXlQZXJpb2RTdGFydEhlaWdodCIJcGVyaW9kTnVtIhJrZXlQZXJpb2RFbmRIZWlnaHQiH2tleVVzZHRQcmljZUFzc2V0QWxsb3dhYmxlUmF0aW8iF2tleVRvdGFsUGVyaW9kQWxsb3dhbmNlIgdhc3NldElkIhZrZXlVc2VyUGVyaW9kQWxsb3dhbmNlIh5rZXlQZXJpb2RUb3RhbEF2YWlsYWJsZVRvQ2xhaW0iHWtleVBlcmlvZFVzZXJBdmFpbGFibGVUb0NsYWltIhtrZXlVc2R0UHJpY2VBc3NldFN0YWJsZVBvb2wiDmtleVVzZHRBc3NldElkIhNrZXlNYW5hZ2VyUHVibGljS2V5IhprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleSIPcmVhZENvbmZpZ0FycmF5IiNyZWFkVG90YWxzQXJyYXlPckRlZmF1bHRCeUN1c3RvbUtleSIJY3VzdG9tS2V5IhhyZWFkVG90YWxzQXJyYXlPckRlZmF1bHQiGnJlYWRJbnZlc3RvckFycmF5T3JEZWZhdWx0IhdyZWFkSW52ZXN0b3JBcnJheU9yRmFpbCIVSWR4RGlmZlRvdGFsSW5jcmVtZW50IiRJZHhEaWZmUmVtYWluaW5nUHJpY2VBbW91bnRJbmNyZW1lbnQiIklkeERpZmZDbGFpbWVkUHJpY2VBbW91bnRJbmNyZW1lbnQiJUlkeERpZmZDbGFpbWVkSWRvQXNzZXRBbW91bnRJbmNyZW1lbnQiC1RvdGFsc0VudHJ5IglvcmlnQXJyYXkiDWluY3JlbWVudERpZmYiFG5ld0xhc3RDbGFpbWVkSGVpZ2h0Ig5uZXdUb3RhbEFtb3VudCISbmV3UmVtYWluaW5nQW1vdW50IhpuZXdDbGFpbWVkUHJpY2VBc3NldEFtb3VudCIYbmV3Q2xhaW1lZElkb0Fzc2V0QW1vdW50IhtJbnZlc3RPcGVyYXRpb25IaXN0b3J5RW50cnkiBHR4SWQiGkNsYWltT3BlcmF0aW9uSGlzdG9yeUVudHJ5Ig1pbnRlcm5hbENsYWltIhBjbGFpbWVkQXNzZXRJZDU4IghjZmdBcnJheSIIY2xhaW1FbmQiCmlkb0Fzc2V0SWQiDHByaWNlQXNzZXRJZCINdXNlckFkZHJlc3M1OCIPb3JpZ0ludmVzdEFycmF5IhFpbnZlc3RUb3RhbEFtb3VudCIaaW52ZXN0TGFzdENsYWltZWRIZWlnaHRUTVAiF2ludmVzdExhc3RDbGFpbWVkSGVpZ2h0IhRuZXdDbGFpbVBlcmlvZEhlaWdodCIOY2xhaW1pbmdCbG9ja3MiGXRvdGFsVXNlckF2YWlsYWJsZVRvQ2xhaW0iFmNsYWltaW5nSWRvQXNzZXRBbW91bnQiBmlzVVNETiITaXNVU0ROQ2xhaW1EaXNhYmxlZCIQaXNVU0ROQ2xhaW1FbmRlZCIHJG1hdGNoMCIDZW5kIgZjaGVja3MiHnRvdGFsUGVyaW9kUHJpY2VBc3NldEFsbG93YW5jZSIddXNlclBlcmlvZFByaWNlQXNzZXRBbGxvd2FuY2UiDWN1cnJlbnRQZXJpb2QiG3BlcmlvZFRvdGFsQXZhaWxhYmxlVG9DbGFpbSIacGVyaW9kVXNlckF2YWlsYWJsZVRvQ2xhaW0iIWF2YWlsYWJsZUNsYWltaW5nUHJpY2VBc3NldEFtb3VudCIcdXNkdFByaWNlQXNzZXRBbGxvd2FibGVSYXRpbyIccHV0T25lVGtuVjJQcmljZUFzc2VzdEFtb3VudCINJHQwMTE2OTMxMTk0NSIBQCIFYm9udXMiCWZlZUFtb3VudCIIbHBBbW91bnQiC3VzZHRBc3NldElkIg0kdDAxMjAzNDEyMjUyIhRnZXRPbmVUa25WMkZlZUFtb3VudCIKdXNkdEFtb3VudCIaY3VycmVudFVzZHRQcmljZUFzc2V0UmF0aW8iE2VuZFBlcmlvZEJsb2Nrc0xlZnQiFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiAXMiHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0IgttdXN0TWFuYWdlciIBaSICcGQiAnBrIgZpZG9FbmQiA3BtdCIMaWRvQXNzZXRJbmZvIg5wcmljZUFzc2V0SW5mbyIPb3JpZ1RvdGFsc0FycmF5Igp0b3RhbHNEaWZmIg5taW5JdmVzdEFtb3VudCIKcG10QXNzZXRJZCIJcG10QW1vdW50IhFvcmlnSW52ZXN0b3JBcnJheSITbmV3UHJpY2VUb3RhbEFtb3VudCIWcmVxdWlyZWRJZG9Bc3NldEFtb3VudCIPY2FsbGVyQWRkcmVzczU4IhBjbGFpbVJlc3VsdFR1cGxlIglvdXRBbW91bnQiCm91dEFzc2V0SWQiFWF2YWlsYWJsZVRvQ2xhaW1BcnJheSIfcGVyaW9kQXZhaWxhYmxlSWRvQW1vdW50VG9DbGFpbSIlcGVyaW9kQXZhaWxhYmxlVXNlclByaWNlQW1vdW50VG9DbGFpbSImcGVyaW9kQXZhaWxhYmxlVG90YWxQcmljZUFtb3VudFRvQ2xhaW0iGmNsYWltZWRQcmljZUFtb3VudEZyb21EaWZmIh1jbGFpbWVkSWRvQXNzZXRBbW91bnRGcm9tRGlmZiIbYXZhaWxhYmxlUHJpY2VBbW91bnRUb0NsYWltIhlhdmFpbGFibGVJZG9BbW91bnRUb0NsYWltIhZjdXJyZW50UHJpY2VBc3NldFJhdGlvIhJlbmRQcmlvZEJsb2Nrc0xlZnQiDHJlc3VsdFN0cmluZyIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiC2NoZWNrQ2FsbGVyIhVjaGVja01hbmFnZXJQdWJsaWNLZXkiAnBtIgVoYXNQTSIHY2hlY2tQTSICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5AAAAPgEAAAABYQAAAAEAAAABYgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEIgAAAAEFAAAAAWIJAAEsAAAAAgkAASwAAAACAgAAAA9tYW5kYXRvcnkgdGhpcy4FAAAAAWICAAAADyBpcyBub3QgZGVmaW5lZAAAAAABYwIAAAACX18AAAAAAWQJAAE2AAAAAQAN4Lazp2QAAAAAAAABZQAAAAAABfXhAAEAAAABZgAAAAEAAAABZwkAAAIAAAABCQAEuQAAAAIJAARMAAAA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", "chainId": 84, "height": 2299490, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4paTBxWxwpwajZrd6iCyaVxDk6kgYSyxf1n8wBYRoQYD Next: 7npvjwSRh6LG5mXgESqSSetbVn28p92CmpgdhvJHSmFM Diff:
Old | New | Differences | |
---|---|---|---|
8 | 8 | ||
9 | 9 | let d = toBigInt(1000000000000000000) | |
10 | 10 | ||
11 | - | func e (f,g,h,i,j) = { | |
12 | - | let k = toBigInt(g) | |
13 | - | let l = toBigInt(j) | |
14 | - | let m = fraction(toBigInt(f), d, k) | |
15 | - | let n = fraction(m, toBigInt(i), toBigInt(h)) | |
16 | - | toInt(fraction(n, toBigInt(j), d)) | |
11 | + | let e = 100000000 | |
12 | + | ||
13 | + | func f (g) = throw(makeString(["ido.ride:", g], " ")) | |
14 | + | ||
15 | + | ||
16 | + | func h (i,j,k,l,m) = { | |
17 | + | let n = toBigInt(j) | |
18 | + | let o = toBigInt(m) | |
19 | + | let p = fraction(toBigInt(i), d, n) | |
20 | + | let q = fraction(p, toBigInt(l), toBigInt(k)) | |
21 | + | toInt(fraction(q, toBigInt(m), d)) | |
17 | 22 | } | |
18 | 23 | ||
19 | 24 | ||
20 | - | let | |
25 | + | let r = 1 | |
21 | 26 | ||
22 | - | let | |
27 | + | let s = 2 | |
23 | 28 | ||
24 | - | let | |
29 | + | let t = 3 | |
25 | 30 | ||
26 | - | let | |
31 | + | let u = 4 | |
27 | 32 | ||
28 | - | let | |
33 | + | let v = 5 | |
29 | 34 | ||
30 | - | let | |
35 | + | let w = 6 | |
31 | 36 | ||
32 | - | let | |
37 | + | let x = 7 | |
33 | 38 | ||
34 | - | let | |
39 | + | let y = 8 | |
35 | 40 | ||
36 | - | let | |
41 | + | let z = 9 | |
37 | 42 | ||
38 | - | let | |
43 | + | let A = 10 | |
39 | 44 | ||
40 | - | let | |
45 | + | let B = 11 | |
41 | 46 | ||
42 | - | func | |
47 | + | func C (D,E,F,G,k,H,I,J,K,L,M,N) = makeString(["%d%d%d%d%d%d%s%d%s%d%d%d", D, E, F, G, k, H, I, J, K, L, M, N], c) | |
43 | 48 | ||
44 | 49 | ||
45 | - | func | |
50 | + | func O (D,E,F,G,k,H,I,J,K,L,M,N) = C(toString(D), toString(E), toString(F), toString(G), toString(k), toString(H), I, toString(J), K, toString(L), toString(M), toString(N)) | |
46 | 51 | ||
47 | 52 | ||
48 | - | let | |
53 | + | let P = 1 | |
49 | 54 | ||
50 | - | let | |
55 | + | let Q = 2 | |
51 | 56 | ||
52 | - | let | |
57 | + | let R = 3 | |
53 | 58 | ||
54 | - | let | |
59 | + | let S = 4 | |
55 | 60 | ||
56 | - | let | |
61 | + | let T = 5 | |
57 | 62 | ||
58 | - | func | |
63 | + | func U (V,W,X,Y,Z) = makeString(["%d%d%d%d%d", V, W, X, Y, Z], c) | |
59 | 64 | ||
60 | 65 | ||
61 | - | func | |
66 | + | func aa (V,W,X,Y,Z) = U(toString(V), toString(W), toString(X), toString(Y), toString(Z)) | |
62 | 67 | ||
63 | 68 | ||
64 | - | func | |
69 | + | func ab (i,ac) = makeString(["%d%d%d%d", toString(height), toString(lastBlock.timestamp), toString(i), toString(ac)], c) | |
65 | 70 | ||
66 | 71 | ||
67 | - | func | |
72 | + | func ad () = "%s__config" | |
68 | 73 | ||
69 | 74 | ||
70 | - | func | |
75 | + | func ae (af) = ("%s__" + af) | |
71 | 76 | ||
72 | 77 | ||
73 | - | func | |
78 | + | func ag () = "%s__totals" | |
74 | 79 | ||
75 | 80 | ||
76 | - | func | |
81 | + | func ah (ai,af,aj) = makeString(["%s%s%s%s__history", ai, af, aj], c) | |
77 | 82 | ||
78 | 83 | ||
79 | - | func | |
84 | + | func ak () = "%s__usdnClaimDisabled" | |
80 | 85 | ||
81 | 86 | ||
82 | - | func | |
87 | + | func al () = "%s__usdnClaimEndHeight" | |
83 | 88 | ||
84 | 89 | ||
85 | - | func | |
90 | + | func am () = makeString(["%s", "periodLength"], c) | |
86 | 91 | ||
87 | 92 | ||
88 | - | func | |
93 | + | func an () = makeString(["%s", "currentPeriod"], c) | |
89 | 94 | ||
90 | 95 | ||
91 | - | func | |
96 | + | func ao (ap) = makeString(["%s%s", "periodStartHeight", toString(ap)], c) | |
92 | 97 | ||
93 | 98 | ||
94 | - | func | |
99 | + | func aq (ap) = makeString(["%s%s", "periodEndHeight", toString(ap)], c) | |
95 | 100 | ||
96 | 101 | ||
97 | - | func | |
102 | + | func ar () = makeString(["%s", "usdtPriceAssetAllowableRatio"], c) | |
98 | 103 | ||
99 | 104 | ||
100 | - | func | |
105 | + | func as (at) = makeString(["%s%s", "totalPeriodAllowance", at], c) | |
101 | 106 | ||
102 | 107 | ||
103 | - | func | |
108 | + | func au (at) = makeString(["%s%s", "userPeriodAllowance", at], c) | |
104 | 109 | ||
105 | 110 | ||
106 | - | ||
111 | + | func av (at,ap) = makeString(["%s%s%s", "periodTotalAvailableToClaim", at, toString(ap)], c) | |
107 | 112 | ||
108 | - | let as = 1 | |
109 | 113 | ||
110 | - | ||
114 | + | func aw (at,ap,af) = makeString(["%s%s%s%s", "periodUserAvailableToClaim", at, toString(ap), af], c) | |
111 | 115 | ||
112 | - | let au = 3 | |
113 | 116 | ||
114 | - | func av (b,aw,ax,ay) = { | |
115 | - | let S = parseIntValue(aw[M]) | |
116 | - | let T = parseIntValue(aw[N]) | |
117 | - | let U = parseIntValue(aw[O]) | |
118 | - | let V = parseIntValue(aw[P]) | |
119 | - | let W = parseIntValue(aw[Q]) | |
120 | - | let az = (S + ax[ar]) | |
121 | - | let aA = (T + ax[as]) | |
122 | - | let aB = (U + ax[at]) | |
123 | - | let aC = (V + ax[au]) | |
124 | - | if ((0 > aA)) | |
117 | + | func ax () = makeString(["%s", "usdtPriceAssetStablePool"], c) | |
118 | + | ||
119 | + | ||
120 | + | func ay () = makeString(["%s", "usdtAssetId"], c) | |
121 | + | ||
122 | + | ||
123 | + | func az () = "%s__managerPublicKey" | |
124 | + | ||
125 | + | ||
126 | + | func aA () = "%s__pendingManagerPublicKey" | |
127 | + | ||
128 | + | ||
129 | + | func aB () = split(a(ad()), c) | |
130 | + | ||
131 | + | ||
132 | + | func aC (aD) = split(valueOrElse(getString(aD), U("0", "0", "0", "0", "0")), c) | |
133 | + | ||
134 | + | ||
135 | + | func aE () = aC(ag()) | |
136 | + | ||
137 | + | ||
138 | + | func aF (af) = aC(ae(af)) | |
139 | + | ||
140 | + | ||
141 | + | func aG (af) = split(a(ae(af)), c) | |
142 | + | ||
143 | + | ||
144 | + | let aH = 0 | |
145 | + | ||
146 | + | let aI = 1 | |
147 | + | ||
148 | + | let aJ = 2 | |
149 | + | ||
150 | + | let aK = 3 | |
151 | + | ||
152 | + | func aL (b,aM,aN,aO) = { | |
153 | + | let V = parseIntValue(aM[P]) | |
154 | + | let W = parseIntValue(aM[Q]) | |
155 | + | let X = parseIntValue(aM[R]) | |
156 | + | let Y = parseIntValue(aM[S]) | |
157 | + | let Z = parseIntValue(aM[T]) | |
158 | + | let aP = (V + aN[aH]) | |
159 | + | let aQ = (W + aN[aI]) | |
160 | + | let aR = (X + aN[aJ]) | |
161 | + | let aS = (Y + aN[aK]) | |
162 | + | if ((0 > aQ)) | |
125 | 163 | then throw("invalid math") | |
126 | - | else StringEntry(b, | |
164 | + | else StringEntry(b, aa(aP, aQ, aR, aS, aO)) | |
127 | 165 | } | |
128 | 166 | ||
129 | 167 | ||
130 | - | func | |
168 | + | func aT (af,i,ac,aU) = StringEntry(ah("invest", af, toBase58String(aU)), ab(i, ac)) | |
131 | 169 | ||
132 | 170 | ||
133 | - | func | |
171 | + | func aV (af,i,ac,aU) = StringEntry(ah("claim", af, toBase58String(aU)), ab(i, ac)) | |
134 | 172 | ||
135 | 173 | ||
136 | - | func | |
137 | - | let | |
138 | - | let | |
139 | - | let | |
140 | - | let | |
141 | - | let | |
142 | - | let | |
143 | - | let | |
144 | - | let | |
145 | - | let | |
146 | - | let | |
147 | - | let | |
148 | - | let | |
149 | - | let | |
150 | - | let | |
151 | - | let | |
152 | - | let | |
153 | - | let | |
154 | - | then | |
155 | - | else | |
156 | - | let | |
157 | - | then | |
158 | - | else if (( | |
159 | - | then | |
174 | + | func aW (aX,af,aU) = { | |
175 | + | let aY = aB() | |
176 | + | let F = parseIntValue(aY[t]) | |
177 | + | let G = parseIntValue(aY[u]) | |
178 | + | let aZ = (F + G) | |
179 | + | let k = parseIntValue(aY[v]) | |
180 | + | let H = parseIntValue(aY[w]) | |
181 | + | let I = aY[x] | |
182 | + | let ba = fromBase58String(I) | |
183 | + | let J = parseIntValue(aY[y]) | |
184 | + | let K = aY[z] | |
185 | + | let bb = fromBase58String(K) | |
186 | + | let L = parseIntValue(aY[A]) | |
187 | + | let bc = toString(af) | |
188 | + | let bd = aG(bc) | |
189 | + | let be = parseIntValue(bd[P]) | |
190 | + | let bf = parseIntValue(bd[T]) | |
191 | + | let bg = if ((F >= bf)) | |
192 | + | then F | |
193 | + | else bf | |
194 | + | let bh = if ((height > aZ)) | |
195 | + | then aZ | |
196 | + | else if ((F > height)) | |
197 | + | then F | |
160 | 198 | else height | |
161 | - | let | |
162 | - | let | |
163 | - | let | |
164 | - | let | |
165 | - | let | |
166 | - | let | |
167 | - | let | |
168 | - | if ($isInstanceOf( | |
199 | + | let bi = (bh - bg) | |
200 | + | let bj = fraction(be, bi, G) | |
201 | + | let bk = h(bj, L, k, H, J) | |
202 | + | let bl = (aX == K) | |
203 | + | let bm = valueOrElse(getBoolean(ak()), false) | |
204 | + | let bn = { | |
205 | + | let bo = getInteger(al()) | |
206 | + | if ($isInstanceOf(bo, "Int")) | |
169 | 207 | then { | |
170 | - | let | |
171 | - | (height > | |
208 | + | let bp = bo | |
209 | + | (height > bp) | |
172 | 210 | } | |
173 | - | else if ($isInstanceOf( | |
211 | + | else if ($isInstanceOf(bo, "Unit")) | |
174 | 212 | then false | |
175 | 213 | else throw("Match error") | |
176 | 214 | } | |
177 | - | let | |
178 | - | then | |
215 | + | let bq = [if (!(if (bl) | |
216 | + | then bm | |
179 | 217 | else false)) | |
180 | 218 | then true | |
181 | - | else | |
182 | - | then | |
219 | + | else f("USDN claim is disabled"), if (!(if (bl) | |
220 | + | then bn | |
183 | 221 | else false)) | |
184 | 222 | then true | |
185 | - | else throw("USDN claim is ended")] | |
186 | - | if ((ba == ba)) | |
187 | - | then if ((aH == H)) | |
188 | - | then $Tuple6([0, -(aT), aT, 0], aT, aL, aN, aR, [aT, aU]) | |
189 | - | else if ((aH == F)) | |
190 | - | then $Tuple6([0, -(aT), 0, aU], aU, aK, aN, aR, [aT, aU]) | |
191 | - | else throw(("unsupported assetId: " + aH)) | |
223 | + | else f("USDN claim is ended")] | |
224 | + | if ((bq == bq)) | |
225 | + | then { | |
226 | + | let br = value(getInteger(as(K))) | |
227 | + | let bs = value(getInteger(au(K))) | |
228 | + | let bt = valueOrElse(getInteger(an()), 0) | |
229 | + | let bu = valueOrElse(getInteger(av(K, bt)), br) | |
230 | + | let bv = valueOrElse(getInteger(aw(K, bt, bc)), bs) | |
231 | + | let bw = min([bj, bu, bv]) | |
232 | + | let bx = value(getInteger(ar())) | |
233 | + | let by = e | |
234 | + | let bz = { | |
235 | + | let bA = invoke(addressFromStringValue(value(getString(ax()))), "putOneTknV2WithoutTakeFeeREADONLY", [by, bb], nil) | |
236 | + | if ($isInstanceOf(bA, "(Int, Int, Int)")) | |
237 | + | then bA | |
238 | + | else throw("Couldn't cast Any to (Int, Int, Int)") | |
239 | + | } | |
240 | + | if ((bz == bz)) | |
241 | + | then { | |
242 | + | let bB = bz._3 | |
243 | + | let bC = bz._2 | |
244 | + | let bD = bz._1 | |
245 | + | let bE = value(fromBase58String(value(getString(ay())))) | |
246 | + | let bF = { | |
247 | + | let bA = invoke(addressFromStringValue(value(getString(ax()))), "getOneTknV2READONLY", [bE, bD], nil) | |
248 | + | if ($isInstanceOf(bA, "(Int, Int)")) | |
249 | + | then bA | |
250 | + | else throw("Couldn't cast Any to (Int, Int)") | |
251 | + | } | |
252 | + | if ((bF == bF)) | |
253 | + | then { | |
254 | + | let bG = bF._2 | |
255 | + | let bH = bF._1 | |
256 | + | let bI = fraction(bH, by, e) | |
257 | + | let bJ = (valueOrElse(getInteger(aq(bt)), aZ) - height) | |
258 | + | if ((aX == K)) | |
259 | + | then $Tuple6([0, -(bw), bw, 0], bw, bb, bd, bh, [bj, bk, bw, bu, bx, bI, bJ]) | |
260 | + | else if ((aX == I)) | |
261 | + | then $Tuple6([0, -(bw), 0, bw], bk, ba, bd, bh, [bj, bk, bw, bu, bI, bx]) | |
262 | + | else f(makeString(["unsupported assetId:", aX], " ")) | |
263 | + | } | |
264 | + | else throw("Strict value is not equal to itself.") | |
265 | + | } | |
266 | + | else throw("Strict value is not equal to itself.") | |
267 | + | } | |
192 | 268 | else throw("Strict value is not equal to itself.") | |
193 | 269 | } | |
194 | 270 | ||
195 | 271 | ||
196 | - | func | |
197 | - | let | |
198 | - | if ($isInstanceOf( | |
272 | + | func bK () = { | |
273 | + | let bo = getString(az()) | |
274 | + | if ($isInstanceOf(bo, "String")) | |
199 | 275 | then { | |
200 | - | let | |
201 | - | fromBase58String( | |
276 | + | let bL = bo | |
277 | + | fromBase58String(bL) | |
202 | 278 | } | |
203 | - | else if ($isInstanceOf( | |
279 | + | else if ($isInstanceOf(bo, "Unit")) | |
204 | 280 | then unit | |
205 | 281 | else throw("Match error") | |
206 | 282 | } | |
207 | 283 | ||
208 | 284 | ||
209 | - | func | |
210 | - | let | |
211 | - | if ($isInstanceOf( | |
285 | + | func bM () = { | |
286 | + | let bo = getString(aA()) | |
287 | + | if ($isInstanceOf(bo, "String")) | |
212 | 288 | then { | |
213 | - | let | |
214 | - | fromBase58String( | |
289 | + | let bL = bo | |
290 | + | fromBase58String(bL) | |
215 | 291 | } | |
216 | - | else if ($isInstanceOf( | |
292 | + | else if ($isInstanceOf(bo, "Unit")) | |
217 | 293 | then unit | |
218 | 294 | else throw("Match error") | |
219 | 295 | } | |
220 | 296 | ||
221 | 297 | ||
222 | - | func | |
223 | - | let | |
224 | - | let | |
225 | - | if ($isInstanceOf( | |
298 | + | func bN (bO) = { | |
299 | + | let bP = throw("Permission denied") | |
300 | + | let bo = bK() | |
301 | + | if ($isInstanceOf(bo, "ByteVector")) | |
226 | 302 | then { | |
227 | - | let | |
228 | - | if (( | |
303 | + | let bQ = bo | |
304 | + | if ((bO.callerPublicKey == bQ)) | |
229 | 305 | then true | |
230 | - | else | |
306 | + | else bP | |
231 | 307 | } | |
232 | - | else if ($isInstanceOf( | |
233 | - | then if (( | |
308 | + | else if ($isInstanceOf(bo, "Unit")) | |
309 | + | then if ((bO.caller == this)) | |
234 | 310 | then true | |
235 | - | else | |
311 | + | else bP | |
236 | 312 | else throw("Match error") | |
237 | 313 | } | |
238 | 314 | ||
239 | 315 | ||
240 | - | @Callable( | |
241 | - | func constructor ( | |
242 | - | let | |
243 | - | let | |
244 | - | if (isDefined(getString( | |
316 | + | @Callable(bO) | |
317 | + | func constructor (D,E,F,G,k,K,M) = { | |
318 | + | let H = ((100 * 1000) * 1000) | |
319 | + | let bR = (D + E) | |
320 | + | if (isDefined(getString(ad()))) | |
245 | 321 | then throw("already initialized") | |
246 | - | else if ((" | |
322 | + | else if (("3PMEHLx1j6zerarZTYfsGqDeeZqQoMpxq5S" != toString(bO.caller))) | |
247 | 323 | then throw("not authorized") | |
248 | - | else if ((size( | |
324 | + | else if ((size(bO.payments) != 1)) | |
249 | 325 | then throw("exactly 1 payment must be attached") | |
250 | - | else if (( | |
326 | + | else if ((bR >= F)) | |
251 | 327 | then throw("claimStart must be greater than idoEnd") | |
252 | 328 | else { | |
253 | - | let | |
254 | - | let | |
255 | - | let | |
256 | - | let | |
257 | - | let | |
258 | - | let | |
259 | - | let | |
260 | - | let | |
261 | - | let | |
262 | - | let | |
263 | - | [StringEntry( | |
329 | + | let bS = value(bO.payments[0]) | |
330 | + | let ba = value(bS.assetId) | |
331 | + | let bT = valueOrErrorMessage(assetInfo(ba), "fail to load ido asset info") | |
332 | + | let I = toBase58String(ba) | |
333 | + | let J = pow(10, 0, bT.decimals, 0, 0, DOWN) | |
334 | + | let bb = fromBase58String(K) | |
335 | + | let bU = valueOrErrorMessage(assetInfo(bb), "fail to load price asset info") | |
336 | + | let L = pow(10, 0, bU.decimals, 0, 0, DOWN) | |
337 | + | let bV = aE() | |
338 | + | let bW = [0, 0, 0, 0] | |
339 | + | [StringEntry(ad(), O(D, E, F, G, k, H, I, J, K, L, M, bS.amount)), aL(ag(), bV, bW, F)] | |
264 | 340 | } | |
265 | 341 | } | |
266 | 342 | ||
267 | 343 | ||
268 | 344 | ||
269 | - | @Callable( | |
345 | + | @Callable(bO) | |
270 | 346 | func invest () = { | |
271 | - | let | |
272 | - | let | |
273 | - | let | |
274 | - | let | |
275 | - | let | |
276 | - | let | |
277 | - | let | |
278 | - | let | |
279 | - | let | |
280 | - | let | |
281 | - | let | |
282 | - | let | |
283 | - | let | |
284 | - | let | |
285 | - | let | |
286 | - | let | |
287 | - | if (( | |
347 | + | let aY = aB() | |
348 | + | let D = parseIntValue(aY[r]) | |
349 | + | let E = parseIntValue(aY[s]) | |
350 | + | let bR = (D + E) | |
351 | + | let F = parseIntValue(aY[t]) | |
352 | + | let G = parseIntValue(aY[u]) | |
353 | + | let k = parseIntValue(aY[v]) | |
354 | + | let H = parseIntValue(aY[w]) | |
355 | + | let I = aY[x] | |
356 | + | let ba = fromBase58String(I) | |
357 | + | let J = parseIntValue(aY[y]) | |
358 | + | let K = aY[z] | |
359 | + | let bb = fromBase58String(K) | |
360 | + | let L = parseIntValue(aY[A]) | |
361 | + | let bX = parseIntValue(aY[B]) | |
362 | + | let af = toString(bO.caller) | |
363 | + | if ((D > height)) | |
288 | 364 | then throw("ido has not been started yet") | |
289 | - | else if ((height > | |
365 | + | else if ((height > bR)) | |
290 | 366 | then throw("ido has been already ended") | |
291 | - | else if ((size( | |
367 | + | else if ((size(bO.payments) != 1)) | |
292 | 368 | then throw("exactly 1 payment is expected") | |
293 | 369 | else { | |
294 | - | let | |
295 | - | let | |
296 | - | let | |
297 | - | if (( | |
298 | - | then throw((("invalid payment asset id: " + toBase58String( | |
370 | + | let bS = value(bO.payments[0]) | |
371 | + | let bY = value(bS.assetId) | |
372 | + | let bZ = bS.amount | |
373 | + | if ((bY != bb)) | |
374 | + | then throw((("invalid payment asset id: " + toBase58String(bY)) + " is expected")) | |
299 | 375 | else { | |
300 | - | let | |
301 | - | let | |
302 | - | let | |
303 | - | let | |
304 | - | if (( | |
376 | + | let ca = aF(af) | |
377 | + | let bV = aE() | |
378 | + | let cb = (parseIntValue(bV[P]) + bZ) | |
379 | + | let cc = (cb * 100) | |
380 | + | if ((cc > assetBalance(this, ba))) | |
305 | 381 | then throw("IDO asset has been - sold consider to use smaller payment") | |
306 | 382 | else { | |
307 | - | let | |
308 | - | [ | |
383 | + | let bW = [bZ, bZ, 0, 0] | |
384 | + | [aL(ae(af), ca, bW, F), aL(ag(), bV, bW, F), aT(af, bZ, 0, bO.transactionId)] | |
309 | 385 | } | |
310 | 386 | } | |
311 | 387 | } | |
313 | 389 | ||
314 | 390 | ||
315 | 391 | ||
316 | - | @Callable( | |
317 | - | func claim ( | |
318 | - | let | |
319 | - | if (( | |
320 | - | then | |
392 | + | @Callable(bO) | |
393 | + | func claim (aX,bc) = { | |
394 | + | let cd = toString(bO.caller) | |
395 | + | if ((bc != cd)) | |
396 | + | then f("not authorized") | |
321 | 397 | else { | |
322 | - | let bv = aG(aH, bf.caller, bf.transactionId) | |
323 | - | let bn = bv._1 | |
324 | - | let bw = bv._2 | |
325 | - | let bx = bv._3 | |
326 | - | let aN = bv._4 | |
327 | - | let aR = bv._5 | |
328 | - | let by = bn[at] | |
329 | - | let bz = bn[au] | |
330 | - | $Tuple2([ScriptTransfer(bf.caller, bw, bx), av(ab(aM), aN, bn, aR), av(ad(), ao(), bn, aR), aF(aM, by, bz, bf.transactionId)], unit) | |
398 | + | let ce = aW(aX, bO.caller, bO.transactionId) | |
399 | + | let bW = ce._1 | |
400 | + | let cf = ce._2 | |
401 | + | let cg = ce._3 | |
402 | + | let bd = ce._4 | |
403 | + | let bh = ce._5 | |
404 | + | let ch = ce._6 | |
405 | + | let bj = ch[0] | |
406 | + | let ci = ch[1] | |
407 | + | let cj = ch[2] | |
408 | + | let ck = ch[3] | |
409 | + | let bq = [if (if ((bj > 0)) | |
410 | + | then true | |
411 | + | else (ci > 0)) | |
412 | + | then true | |
413 | + | else f("nothing to claim"), if ((cj > 0)) | |
414 | + | then true | |
415 | + | else f("unavailable to claim because user period allowance reached"), if ((ck > 0)) | |
416 | + | then true | |
417 | + | else f("unavailable to claim because total period allowance reached")] | |
418 | + | if ((bq == bq)) | |
419 | + | then { | |
420 | + | let cl = bW[aJ] | |
421 | + | let cm = bW[aK] | |
422 | + | $Tuple2([ScriptTransfer(bO.caller, cf, cg), aL(ae(bc), bd, bW, bh), aL(ag(), aE(), bW, bh), aV(bc, cl, cm, bO.transactionId)], unit) | |
423 | + | } | |
424 | + | else throw("Strict value is not equal to itself.") | |
331 | 425 | } | |
332 | 426 | } | |
333 | 427 | ||
334 | 428 | ||
335 | 429 | ||
336 | - | @Callable( | |
337 | - | func claimREADONLY ( | |
338 | - | let | |
339 | - | let | |
340 | - | let | |
341 | - | let | |
342 | - | let | |
343 | - | let | |
344 | - | let | |
345 | - | let | |
346 | - | let | |
347 | - | $Tuple2(nil, makeString(["%s%d%d", | |
430 | + | @Callable(bO) | |
431 | + | func claimREADONLY (aX,bc) = { | |
432 | + | let ce = aW(aX, addressFromStringValue(bc), fromBase58String("")) | |
433 | + | let bW = ce._1 | |
434 | + | let cf = ce._2 | |
435 | + | let cg = ce._3 | |
436 | + | let bd = ce._4 | |
437 | + | let bh = ce._5 | |
438 | + | let ch = ce._6 | |
439 | + | let cn = ch[1] | |
440 | + | let co = ch[2] | |
441 | + | $Tuple2(nil, makeString(["%s%d%d", bc, toString(cn), toString(co)], c)) | |
348 | 442 | } | |
349 | 443 | ||
350 | 444 | ||
351 | 445 | ||
352 | - | @Callable(bf) | |
353 | - | func setManager (bD) = { | |
354 | - | let bE = be(bf) | |
355 | - | if ((bE == bE)) | |
446 | + | @Callable(bO) | |
447 | + | func claimV2READONLY (aX,bc) = { | |
448 | + | let ce = aW(aX, addressFromStringValue(bc), fromBase58String("")) | |
449 | + | let bW = ce._1 | |
450 | + | let cf = ce._2 | |
451 | + | let cg = ce._3 | |
452 | + | let bd = ce._4 | |
453 | + | let bh = ce._5 | |
454 | + | let ch = ce._6 | |
455 | + | let bj = ch[0] | |
456 | + | let ci = ch[1] | |
457 | + | let cj = ch[2] | |
458 | + | let ck = ch[3] | |
459 | + | let bx = ch[4] | |
460 | + | let cp = ch[5] | |
461 | + | let cq = ch[6] | |
462 | + | let cr = makeString(["%d%d%d%d%d%d%d", toString(bj), toString(ci), toString(cj), toString(ck), toString(bx), toString(cp), toString(cq)], c) | |
463 | + | $Tuple2(nil, cr) | |
464 | + | } | |
465 | + | ||
466 | + | ||
467 | + | ||
468 | + | @Callable(bO) | |
469 | + | func setManager (cs) = { | |
470 | + | let ct = bN(bO) | |
471 | + | if ((ct == ct)) | |
356 | 472 | then { | |
357 | - | let | |
358 | - | if (( | |
359 | - | then [StringEntry( | |
473 | + | let cu = fromBase58String(cs) | |
474 | + | if ((cu == cu)) | |
475 | + | then [StringEntry(aA(), cs)] | |
360 | 476 | else throw("Strict value is not equal to itself.") | |
361 | 477 | } | |
362 | 478 | else throw("Strict value is not equal to itself.") | |
364 | 480 | ||
365 | 481 | ||
366 | 482 | ||
367 | - | @Callable( | |
483 | + | @Callable(bO) | |
368 | 484 | func confirmManager () = { | |
369 | - | let | |
370 | - | let | |
485 | + | let cv = bM() | |
486 | + | let cw = if (isDefined(cv)) | |
371 | 487 | then true | |
372 | 488 | else throw("No pending manager") | |
373 | - | if (( | |
489 | + | if ((cw == cw)) | |
374 | 490 | then { | |
375 | - | let | |
491 | + | let cx = if ((bO.callerPublicKey == value(cv))) | |
376 | 492 | then true | |
377 | 493 | else throw("You are not pending manager") | |
378 | - | if (( | |
379 | - | then [StringEntry( | |
494 | + | if ((cx == cx)) | |
495 | + | then [StringEntry(az(), toBase58String(value(cv))), DeleteEntry(aA())] | |
380 | 496 | else throw("Strict value is not equal to itself.") | |
381 | 497 | } | |
382 | 498 | else throw("Strict value is not equal to itself.") | |
383 | 499 | } | |
384 | 500 | ||
385 | 501 | ||
386 | - | @Verifier( | |
387 | - | func | |
388 | - | let | |
389 | - | let | |
390 | - | if ($isInstanceOf( | |
502 | + | @Verifier(cy) | |
503 | + | func cz () = { | |
504 | + | let cA = { | |
505 | + | let bo = bK() | |
506 | + | if ($isInstanceOf(bo, "ByteVector")) | |
391 | 507 | then { | |
392 | - | let | |
393 | - | | |
508 | + | let bQ = bo | |
509 | + | bQ | |
394 | 510 | } | |
395 | - | else if ($isInstanceOf( | |
396 | - | then | |
511 | + | else if ($isInstanceOf(bo, "Unit")) | |
512 | + | then cy.senderPublicKey | |
397 | 513 | else throw("Match error") | |
398 | 514 | } | |
399 | - | sigVerify( | |
515 | + | sigVerify(cy.bodyBytes, cy.proofs[0], cA) | |
400 | 516 | } | |
401 | 517 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | func a (b) = valueOrErrorMessage(getString(b), (("mandatory this." + b) + " is not defined")) | |
5 | 5 | ||
6 | 6 | ||
7 | 7 | let c = "__" | |
8 | 8 | ||
9 | 9 | let d = toBigInt(1000000000000000000) | |
10 | 10 | ||
11 | - | func e (f,g,h,i,j) = { | |
12 | - | let k = toBigInt(g) | |
13 | - | let l = toBigInt(j) | |
14 | - | let m = fraction(toBigInt(f), d, k) | |
15 | - | let n = fraction(m, toBigInt(i), toBigInt(h)) | |
16 | - | toInt(fraction(n, toBigInt(j), d)) | |
11 | + | let e = 100000000 | |
12 | + | ||
13 | + | func f (g) = throw(makeString(["ido.ride:", g], " ")) | |
14 | + | ||
15 | + | ||
16 | + | func h (i,j,k,l,m) = { | |
17 | + | let n = toBigInt(j) | |
18 | + | let o = toBigInt(m) | |
19 | + | let p = fraction(toBigInt(i), d, n) | |
20 | + | let q = fraction(p, toBigInt(l), toBigInt(k)) | |
21 | + | toInt(fraction(q, toBigInt(m), d)) | |
17 | 22 | } | |
18 | 23 | ||
19 | 24 | ||
20 | - | let | |
25 | + | let r = 1 | |
21 | 26 | ||
22 | - | let | |
27 | + | let s = 2 | |
23 | 28 | ||
24 | - | let | |
29 | + | let t = 3 | |
25 | 30 | ||
26 | - | let | |
31 | + | let u = 4 | |
27 | 32 | ||
28 | - | let | |
33 | + | let v = 5 | |
29 | 34 | ||
30 | - | let | |
35 | + | let w = 6 | |
31 | 36 | ||
32 | - | let | |
37 | + | let x = 7 | |
33 | 38 | ||
34 | - | let | |
39 | + | let y = 8 | |
35 | 40 | ||
36 | - | let | |
41 | + | let z = 9 | |
37 | 42 | ||
38 | - | let | |
43 | + | let A = 10 | |
39 | 44 | ||
40 | - | let | |
45 | + | let B = 11 | |
41 | 46 | ||
42 | - | func | |
47 | + | func C (D,E,F,G,k,H,I,J,K,L,M,N) = makeString(["%d%d%d%d%d%d%s%d%s%d%d%d", D, E, F, G, k, H, I, J, K, L, M, N], c) | |
43 | 48 | ||
44 | 49 | ||
45 | - | func | |
50 | + | func O (D,E,F,G,k,H,I,J,K,L,M,N) = C(toString(D), toString(E), toString(F), toString(G), toString(k), toString(H), I, toString(J), K, toString(L), toString(M), toString(N)) | |
46 | 51 | ||
47 | 52 | ||
48 | - | let | |
53 | + | let P = 1 | |
49 | 54 | ||
50 | - | let | |
55 | + | let Q = 2 | |
51 | 56 | ||
52 | - | let | |
57 | + | let R = 3 | |
53 | 58 | ||
54 | - | let | |
59 | + | let S = 4 | |
55 | 60 | ||
56 | - | let | |
61 | + | let T = 5 | |
57 | 62 | ||
58 | - | func | |
63 | + | func U (V,W,X,Y,Z) = makeString(["%d%d%d%d%d", V, W, X, Y, Z], c) | |
59 | 64 | ||
60 | 65 | ||
61 | - | func | |
66 | + | func aa (V,W,X,Y,Z) = U(toString(V), toString(W), toString(X), toString(Y), toString(Z)) | |
62 | 67 | ||
63 | 68 | ||
64 | - | func | |
69 | + | func ab (i,ac) = makeString(["%d%d%d%d", toString(height), toString(lastBlock.timestamp), toString(i), toString(ac)], c) | |
65 | 70 | ||
66 | 71 | ||
67 | - | func | |
72 | + | func ad () = "%s__config" | |
68 | 73 | ||
69 | 74 | ||
70 | - | func | |
75 | + | func ae (af) = ("%s__" + af) | |
71 | 76 | ||
72 | 77 | ||
73 | - | func | |
78 | + | func ag () = "%s__totals" | |
74 | 79 | ||
75 | 80 | ||
76 | - | func | |
81 | + | func ah (ai,af,aj) = makeString(["%s%s%s%s__history", ai, af, aj], c) | |
77 | 82 | ||
78 | 83 | ||
79 | - | func | |
84 | + | func ak () = "%s__usdnClaimDisabled" | |
80 | 85 | ||
81 | 86 | ||
82 | - | func | |
87 | + | func al () = "%s__usdnClaimEndHeight" | |
83 | 88 | ||
84 | 89 | ||
85 | - | func | |
90 | + | func am () = makeString(["%s", "periodLength"], c) | |
86 | 91 | ||
87 | 92 | ||
88 | - | func | |
93 | + | func an () = makeString(["%s", "currentPeriod"], c) | |
89 | 94 | ||
90 | 95 | ||
91 | - | func | |
96 | + | func ao (ap) = makeString(["%s%s", "periodStartHeight", toString(ap)], c) | |
92 | 97 | ||
93 | 98 | ||
94 | - | func | |
99 | + | func aq (ap) = makeString(["%s%s", "periodEndHeight", toString(ap)], c) | |
95 | 100 | ||
96 | 101 | ||
97 | - | func | |
102 | + | func ar () = makeString(["%s", "usdtPriceAssetAllowableRatio"], c) | |
98 | 103 | ||
99 | 104 | ||
100 | - | func | |
105 | + | func as (at) = makeString(["%s%s", "totalPeriodAllowance", at], c) | |
101 | 106 | ||
102 | 107 | ||
103 | - | func | |
108 | + | func au (at) = makeString(["%s%s", "userPeriodAllowance", at], c) | |
104 | 109 | ||
105 | 110 | ||
106 | - | ||
111 | + | func av (at,ap) = makeString(["%s%s%s", "periodTotalAvailableToClaim", at, toString(ap)], c) | |
107 | 112 | ||
108 | - | let as = 1 | |
109 | 113 | ||
110 | - | ||
114 | + | func aw (at,ap,af) = makeString(["%s%s%s%s", "periodUserAvailableToClaim", at, toString(ap), af], c) | |
111 | 115 | ||
112 | - | let au = 3 | |
113 | 116 | ||
114 | - | func av (b,aw,ax,ay) = { | |
115 | - | let S = parseIntValue(aw[M]) | |
116 | - | let T = parseIntValue(aw[N]) | |
117 | - | let U = parseIntValue(aw[O]) | |
118 | - | let V = parseIntValue(aw[P]) | |
119 | - | let W = parseIntValue(aw[Q]) | |
120 | - | let az = (S + ax[ar]) | |
121 | - | let aA = (T + ax[as]) | |
122 | - | let aB = (U + ax[at]) | |
123 | - | let aC = (V + ax[au]) | |
124 | - | if ((0 > aA)) | |
117 | + | func ax () = makeString(["%s", "usdtPriceAssetStablePool"], c) | |
118 | + | ||
119 | + | ||
120 | + | func ay () = makeString(["%s", "usdtAssetId"], c) | |
121 | + | ||
122 | + | ||
123 | + | func az () = "%s__managerPublicKey" | |
124 | + | ||
125 | + | ||
126 | + | func aA () = "%s__pendingManagerPublicKey" | |
127 | + | ||
128 | + | ||
129 | + | func aB () = split(a(ad()), c) | |
130 | + | ||
131 | + | ||
132 | + | func aC (aD) = split(valueOrElse(getString(aD), U("0", "0", "0", "0", "0")), c) | |
133 | + | ||
134 | + | ||
135 | + | func aE () = aC(ag()) | |
136 | + | ||
137 | + | ||
138 | + | func aF (af) = aC(ae(af)) | |
139 | + | ||
140 | + | ||
141 | + | func aG (af) = split(a(ae(af)), c) | |
142 | + | ||
143 | + | ||
144 | + | let aH = 0 | |
145 | + | ||
146 | + | let aI = 1 | |
147 | + | ||
148 | + | let aJ = 2 | |
149 | + | ||
150 | + | let aK = 3 | |
151 | + | ||
152 | + | func aL (b,aM,aN,aO) = { | |
153 | + | let V = parseIntValue(aM[P]) | |
154 | + | let W = parseIntValue(aM[Q]) | |
155 | + | let X = parseIntValue(aM[R]) | |
156 | + | let Y = parseIntValue(aM[S]) | |
157 | + | let Z = parseIntValue(aM[T]) | |
158 | + | let aP = (V + aN[aH]) | |
159 | + | let aQ = (W + aN[aI]) | |
160 | + | let aR = (X + aN[aJ]) | |
161 | + | let aS = (Y + aN[aK]) | |
162 | + | if ((0 > aQ)) | |
125 | 163 | then throw("invalid math") | |
126 | - | else StringEntry(b, | |
164 | + | else StringEntry(b, aa(aP, aQ, aR, aS, aO)) | |
127 | 165 | } | |
128 | 166 | ||
129 | 167 | ||
130 | - | func | |
168 | + | func aT (af,i,ac,aU) = StringEntry(ah("invest", af, toBase58String(aU)), ab(i, ac)) | |
131 | 169 | ||
132 | 170 | ||
133 | - | func | |
171 | + | func aV (af,i,ac,aU) = StringEntry(ah("claim", af, toBase58String(aU)), ab(i, ac)) | |
134 | 172 | ||
135 | 173 | ||
136 | - | func | |
137 | - | let | |
138 | - | let | |
139 | - | let | |
140 | - | let | |
141 | - | let | |
142 | - | let | |
143 | - | let | |
144 | - | let | |
145 | - | let | |
146 | - | let | |
147 | - | let | |
148 | - | let | |
149 | - | let | |
150 | - | let | |
151 | - | let | |
152 | - | let | |
153 | - | let | |
154 | - | then | |
155 | - | else | |
156 | - | let | |
157 | - | then | |
158 | - | else if (( | |
159 | - | then | |
174 | + | func aW (aX,af,aU) = { | |
175 | + | let aY = aB() | |
176 | + | let F = parseIntValue(aY[t]) | |
177 | + | let G = parseIntValue(aY[u]) | |
178 | + | let aZ = (F + G) | |
179 | + | let k = parseIntValue(aY[v]) | |
180 | + | let H = parseIntValue(aY[w]) | |
181 | + | let I = aY[x] | |
182 | + | let ba = fromBase58String(I) | |
183 | + | let J = parseIntValue(aY[y]) | |
184 | + | let K = aY[z] | |
185 | + | let bb = fromBase58String(K) | |
186 | + | let L = parseIntValue(aY[A]) | |
187 | + | let bc = toString(af) | |
188 | + | let bd = aG(bc) | |
189 | + | let be = parseIntValue(bd[P]) | |
190 | + | let bf = parseIntValue(bd[T]) | |
191 | + | let bg = if ((F >= bf)) | |
192 | + | then F | |
193 | + | else bf | |
194 | + | let bh = if ((height > aZ)) | |
195 | + | then aZ | |
196 | + | else if ((F > height)) | |
197 | + | then F | |
160 | 198 | else height | |
161 | - | let | |
162 | - | let | |
163 | - | let | |
164 | - | let | |
165 | - | let | |
166 | - | let | |
167 | - | let | |
168 | - | if ($isInstanceOf( | |
199 | + | let bi = (bh - bg) | |
200 | + | let bj = fraction(be, bi, G) | |
201 | + | let bk = h(bj, L, k, H, J) | |
202 | + | let bl = (aX == K) | |
203 | + | let bm = valueOrElse(getBoolean(ak()), false) | |
204 | + | let bn = { | |
205 | + | let bo = getInteger(al()) | |
206 | + | if ($isInstanceOf(bo, "Int")) | |
169 | 207 | then { | |
170 | - | let | |
171 | - | (height > | |
208 | + | let bp = bo | |
209 | + | (height > bp) | |
172 | 210 | } | |
173 | - | else if ($isInstanceOf( | |
211 | + | else if ($isInstanceOf(bo, "Unit")) | |
174 | 212 | then false | |
175 | 213 | else throw("Match error") | |
176 | 214 | } | |
177 | - | let | |
178 | - | then | |
215 | + | let bq = [if (!(if (bl) | |
216 | + | then bm | |
179 | 217 | else false)) | |
180 | 218 | then true | |
181 | - | else | |
182 | - | then | |
219 | + | else f("USDN claim is disabled"), if (!(if (bl) | |
220 | + | then bn | |
183 | 221 | else false)) | |
184 | 222 | then true | |
185 | - | else throw("USDN claim is ended")] | |
186 | - | if ((ba == ba)) | |
187 | - | then if ((aH == H)) | |
188 | - | then $Tuple6([0, -(aT), aT, 0], aT, aL, aN, aR, [aT, aU]) | |
189 | - | else if ((aH == F)) | |
190 | - | then $Tuple6([0, -(aT), 0, aU], aU, aK, aN, aR, [aT, aU]) | |
191 | - | else throw(("unsupported assetId: " + aH)) | |
223 | + | else f("USDN claim is ended")] | |
224 | + | if ((bq == bq)) | |
225 | + | then { | |
226 | + | let br = value(getInteger(as(K))) | |
227 | + | let bs = value(getInteger(au(K))) | |
228 | + | let bt = valueOrElse(getInteger(an()), 0) | |
229 | + | let bu = valueOrElse(getInteger(av(K, bt)), br) | |
230 | + | let bv = valueOrElse(getInteger(aw(K, bt, bc)), bs) | |
231 | + | let bw = min([bj, bu, bv]) | |
232 | + | let bx = value(getInteger(ar())) | |
233 | + | let by = e | |
234 | + | let bz = { | |
235 | + | let bA = invoke(addressFromStringValue(value(getString(ax()))), "putOneTknV2WithoutTakeFeeREADONLY", [by, bb], nil) | |
236 | + | if ($isInstanceOf(bA, "(Int, Int, Int)")) | |
237 | + | then bA | |
238 | + | else throw("Couldn't cast Any to (Int, Int, Int)") | |
239 | + | } | |
240 | + | if ((bz == bz)) | |
241 | + | then { | |
242 | + | let bB = bz._3 | |
243 | + | let bC = bz._2 | |
244 | + | let bD = bz._1 | |
245 | + | let bE = value(fromBase58String(value(getString(ay())))) | |
246 | + | let bF = { | |
247 | + | let bA = invoke(addressFromStringValue(value(getString(ax()))), "getOneTknV2READONLY", [bE, bD], nil) | |
248 | + | if ($isInstanceOf(bA, "(Int, Int)")) | |
249 | + | then bA | |
250 | + | else throw("Couldn't cast Any to (Int, Int)") | |
251 | + | } | |
252 | + | if ((bF == bF)) | |
253 | + | then { | |
254 | + | let bG = bF._2 | |
255 | + | let bH = bF._1 | |
256 | + | let bI = fraction(bH, by, e) | |
257 | + | let bJ = (valueOrElse(getInteger(aq(bt)), aZ) - height) | |
258 | + | if ((aX == K)) | |
259 | + | then $Tuple6([0, -(bw), bw, 0], bw, bb, bd, bh, [bj, bk, bw, bu, bx, bI, bJ]) | |
260 | + | else if ((aX == I)) | |
261 | + | then $Tuple6([0, -(bw), 0, bw], bk, ba, bd, bh, [bj, bk, bw, bu, bI, bx]) | |
262 | + | else f(makeString(["unsupported assetId:", aX], " ")) | |
263 | + | } | |
264 | + | else throw("Strict value is not equal to itself.") | |
265 | + | } | |
266 | + | else throw("Strict value is not equal to itself.") | |
267 | + | } | |
192 | 268 | else throw("Strict value is not equal to itself.") | |
193 | 269 | } | |
194 | 270 | ||
195 | 271 | ||
196 | - | func | |
197 | - | let | |
198 | - | if ($isInstanceOf( | |
272 | + | func bK () = { | |
273 | + | let bo = getString(az()) | |
274 | + | if ($isInstanceOf(bo, "String")) | |
199 | 275 | then { | |
200 | - | let | |
201 | - | fromBase58String( | |
276 | + | let bL = bo | |
277 | + | fromBase58String(bL) | |
202 | 278 | } | |
203 | - | else if ($isInstanceOf( | |
279 | + | else if ($isInstanceOf(bo, "Unit")) | |
204 | 280 | then unit | |
205 | 281 | else throw("Match error") | |
206 | 282 | } | |
207 | 283 | ||
208 | 284 | ||
209 | - | func | |
210 | - | let | |
211 | - | if ($isInstanceOf( | |
285 | + | func bM () = { | |
286 | + | let bo = getString(aA()) | |
287 | + | if ($isInstanceOf(bo, "String")) | |
212 | 288 | then { | |
213 | - | let | |
214 | - | fromBase58String( | |
289 | + | let bL = bo | |
290 | + | fromBase58String(bL) | |
215 | 291 | } | |
216 | - | else if ($isInstanceOf( | |
292 | + | else if ($isInstanceOf(bo, "Unit")) | |
217 | 293 | then unit | |
218 | 294 | else throw("Match error") | |
219 | 295 | } | |
220 | 296 | ||
221 | 297 | ||
222 | - | func | |
223 | - | let | |
224 | - | let | |
225 | - | if ($isInstanceOf( | |
298 | + | func bN (bO) = { | |
299 | + | let bP = throw("Permission denied") | |
300 | + | let bo = bK() | |
301 | + | if ($isInstanceOf(bo, "ByteVector")) | |
226 | 302 | then { | |
227 | - | let | |
228 | - | if (( | |
303 | + | let bQ = bo | |
304 | + | if ((bO.callerPublicKey == bQ)) | |
229 | 305 | then true | |
230 | - | else | |
306 | + | else bP | |
231 | 307 | } | |
232 | - | else if ($isInstanceOf( | |
233 | - | then if (( | |
308 | + | else if ($isInstanceOf(bo, "Unit")) | |
309 | + | then if ((bO.caller == this)) | |
234 | 310 | then true | |
235 | - | else | |
311 | + | else bP | |
236 | 312 | else throw("Match error") | |
237 | 313 | } | |
238 | 314 | ||
239 | 315 | ||
240 | - | @Callable( | |
241 | - | func constructor ( | |
242 | - | let | |
243 | - | let | |
244 | - | if (isDefined(getString( | |
316 | + | @Callable(bO) | |
317 | + | func constructor (D,E,F,G,k,K,M) = { | |
318 | + | let H = ((100 * 1000) * 1000) | |
319 | + | let bR = (D + E) | |
320 | + | if (isDefined(getString(ad()))) | |
245 | 321 | then throw("already initialized") | |
246 | - | else if ((" | |
322 | + | else if (("3PMEHLx1j6zerarZTYfsGqDeeZqQoMpxq5S" != toString(bO.caller))) | |
247 | 323 | then throw("not authorized") | |
248 | - | else if ((size( | |
324 | + | else if ((size(bO.payments) != 1)) | |
249 | 325 | then throw("exactly 1 payment must be attached") | |
250 | - | else if (( | |
326 | + | else if ((bR >= F)) | |
251 | 327 | then throw("claimStart must be greater than idoEnd") | |
252 | 328 | else { | |
253 | - | let | |
254 | - | let | |
255 | - | let | |
256 | - | let | |
257 | - | let | |
258 | - | let | |
259 | - | let | |
260 | - | let | |
261 | - | let | |
262 | - | let | |
263 | - | [StringEntry( | |
329 | + | let bS = value(bO.payments[0]) | |
330 | + | let ba = value(bS.assetId) | |
331 | + | let bT = valueOrErrorMessage(assetInfo(ba), "fail to load ido asset info") | |
332 | + | let I = toBase58String(ba) | |
333 | + | let J = pow(10, 0, bT.decimals, 0, 0, DOWN) | |
334 | + | let bb = fromBase58String(K) | |
335 | + | let bU = valueOrErrorMessage(assetInfo(bb), "fail to load price asset info") | |
336 | + | let L = pow(10, 0, bU.decimals, 0, 0, DOWN) | |
337 | + | let bV = aE() | |
338 | + | let bW = [0, 0, 0, 0] | |
339 | + | [StringEntry(ad(), O(D, E, F, G, k, H, I, J, K, L, M, bS.amount)), aL(ag(), bV, bW, F)] | |
264 | 340 | } | |
265 | 341 | } | |
266 | 342 | ||
267 | 343 | ||
268 | 344 | ||
269 | - | @Callable( | |
345 | + | @Callable(bO) | |
270 | 346 | func invest () = { | |
271 | - | let | |
272 | - | let | |
273 | - | let | |
274 | - | let | |
275 | - | let | |
276 | - | let | |
277 | - | let | |
278 | - | let | |
279 | - | let | |
280 | - | let | |
281 | - | let | |
282 | - | let | |
283 | - | let | |
284 | - | let | |
285 | - | let | |
286 | - | let | |
287 | - | if (( | |
347 | + | let aY = aB() | |
348 | + | let D = parseIntValue(aY[r]) | |
349 | + | let E = parseIntValue(aY[s]) | |
350 | + | let bR = (D + E) | |
351 | + | let F = parseIntValue(aY[t]) | |
352 | + | let G = parseIntValue(aY[u]) | |
353 | + | let k = parseIntValue(aY[v]) | |
354 | + | let H = parseIntValue(aY[w]) | |
355 | + | let I = aY[x] | |
356 | + | let ba = fromBase58String(I) | |
357 | + | let J = parseIntValue(aY[y]) | |
358 | + | let K = aY[z] | |
359 | + | let bb = fromBase58String(K) | |
360 | + | let L = parseIntValue(aY[A]) | |
361 | + | let bX = parseIntValue(aY[B]) | |
362 | + | let af = toString(bO.caller) | |
363 | + | if ((D > height)) | |
288 | 364 | then throw("ido has not been started yet") | |
289 | - | else if ((height > | |
365 | + | else if ((height > bR)) | |
290 | 366 | then throw("ido has been already ended") | |
291 | - | else if ((size( | |
367 | + | else if ((size(bO.payments) != 1)) | |
292 | 368 | then throw("exactly 1 payment is expected") | |
293 | 369 | else { | |
294 | - | let | |
295 | - | let | |
296 | - | let | |
297 | - | if (( | |
298 | - | then throw((("invalid payment asset id: " + toBase58String( | |
370 | + | let bS = value(bO.payments[0]) | |
371 | + | let bY = value(bS.assetId) | |
372 | + | let bZ = bS.amount | |
373 | + | if ((bY != bb)) | |
374 | + | then throw((("invalid payment asset id: " + toBase58String(bY)) + " is expected")) | |
299 | 375 | else { | |
300 | - | let | |
301 | - | let | |
302 | - | let | |
303 | - | let | |
304 | - | if (( | |
376 | + | let ca = aF(af) | |
377 | + | let bV = aE() | |
378 | + | let cb = (parseIntValue(bV[P]) + bZ) | |
379 | + | let cc = (cb * 100) | |
380 | + | if ((cc > assetBalance(this, ba))) | |
305 | 381 | then throw("IDO asset has been - sold consider to use smaller payment") | |
306 | 382 | else { | |
307 | - | let | |
308 | - | [ | |
383 | + | let bW = [bZ, bZ, 0, 0] | |
384 | + | [aL(ae(af), ca, bW, F), aL(ag(), bV, bW, F), aT(af, bZ, 0, bO.transactionId)] | |
309 | 385 | } | |
310 | 386 | } | |
311 | 387 | } | |
312 | 388 | } | |
313 | 389 | ||
314 | 390 | ||
315 | 391 | ||
316 | - | @Callable( | |
317 | - | func claim ( | |
318 | - | let | |
319 | - | if (( | |
320 | - | then | |
392 | + | @Callable(bO) | |
393 | + | func claim (aX,bc) = { | |
394 | + | let cd = toString(bO.caller) | |
395 | + | if ((bc != cd)) | |
396 | + | then f("not authorized") | |
321 | 397 | else { | |
322 | - | let bv = aG(aH, bf.caller, bf.transactionId) | |
323 | - | let bn = bv._1 | |
324 | - | let bw = bv._2 | |
325 | - | let bx = bv._3 | |
326 | - | let aN = bv._4 | |
327 | - | let aR = bv._5 | |
328 | - | let by = bn[at] | |
329 | - | let bz = bn[au] | |
330 | - | $Tuple2([ScriptTransfer(bf.caller, bw, bx), av(ab(aM), aN, bn, aR), av(ad(), ao(), bn, aR), aF(aM, by, bz, bf.transactionId)], unit) | |
398 | + | let ce = aW(aX, bO.caller, bO.transactionId) | |
399 | + | let bW = ce._1 | |
400 | + | let cf = ce._2 | |
401 | + | let cg = ce._3 | |
402 | + | let bd = ce._4 | |
403 | + | let bh = ce._5 | |
404 | + | let ch = ce._6 | |
405 | + | let bj = ch[0] | |
406 | + | let ci = ch[1] | |
407 | + | let cj = ch[2] | |
408 | + | let ck = ch[3] | |
409 | + | let bq = [if (if ((bj > 0)) | |
410 | + | then true | |
411 | + | else (ci > 0)) | |
412 | + | then true | |
413 | + | else f("nothing to claim"), if ((cj > 0)) | |
414 | + | then true | |
415 | + | else f("unavailable to claim because user period allowance reached"), if ((ck > 0)) | |
416 | + | then true | |
417 | + | else f("unavailable to claim because total period allowance reached")] | |
418 | + | if ((bq == bq)) | |
419 | + | then { | |
420 | + | let cl = bW[aJ] | |
421 | + | let cm = bW[aK] | |
422 | + | $Tuple2([ScriptTransfer(bO.caller, cf, cg), aL(ae(bc), bd, bW, bh), aL(ag(), aE(), bW, bh), aV(bc, cl, cm, bO.transactionId)], unit) | |
423 | + | } | |
424 | + | else throw("Strict value is not equal to itself.") | |
331 | 425 | } | |
332 | 426 | } | |
333 | 427 | ||
334 | 428 | ||
335 | 429 | ||
336 | - | @Callable( | |
337 | - | func claimREADONLY ( | |
338 | - | let | |
339 | - | let | |
340 | - | let | |
341 | - | let | |
342 | - | let | |
343 | - | let | |
344 | - | let | |
345 | - | let | |
346 | - | let | |
347 | - | $Tuple2(nil, makeString(["%s%d%d", | |
430 | + | @Callable(bO) | |
431 | + | func claimREADONLY (aX,bc) = { | |
432 | + | let ce = aW(aX, addressFromStringValue(bc), fromBase58String("")) | |
433 | + | let bW = ce._1 | |
434 | + | let cf = ce._2 | |
435 | + | let cg = ce._3 | |
436 | + | let bd = ce._4 | |
437 | + | let bh = ce._5 | |
438 | + | let ch = ce._6 | |
439 | + | let cn = ch[1] | |
440 | + | let co = ch[2] | |
441 | + | $Tuple2(nil, makeString(["%s%d%d", bc, toString(cn), toString(co)], c)) | |
348 | 442 | } | |
349 | 443 | ||
350 | 444 | ||
351 | 445 | ||
352 | - | @Callable(bf) | |
353 | - | func setManager (bD) = { | |
354 | - | let bE = be(bf) | |
355 | - | if ((bE == bE)) | |
446 | + | @Callable(bO) | |
447 | + | func claimV2READONLY (aX,bc) = { | |
448 | + | let ce = aW(aX, addressFromStringValue(bc), fromBase58String("")) | |
449 | + | let bW = ce._1 | |
450 | + | let cf = ce._2 | |
451 | + | let cg = ce._3 | |
452 | + | let bd = ce._4 | |
453 | + | let bh = ce._5 | |
454 | + | let ch = ce._6 | |
455 | + | let bj = ch[0] | |
456 | + | let ci = ch[1] | |
457 | + | let cj = ch[2] | |
458 | + | let ck = ch[3] | |
459 | + | let bx = ch[4] | |
460 | + | let cp = ch[5] | |
461 | + | let cq = ch[6] | |
462 | + | let cr = makeString(["%d%d%d%d%d%d%d", toString(bj), toString(ci), toString(cj), toString(ck), toString(bx), toString(cp), toString(cq)], c) | |
463 | + | $Tuple2(nil, cr) | |
464 | + | } | |
465 | + | ||
466 | + | ||
467 | + | ||
468 | + | @Callable(bO) | |
469 | + | func setManager (cs) = { | |
470 | + | let ct = bN(bO) | |
471 | + | if ((ct == ct)) | |
356 | 472 | then { | |
357 | - | let | |
358 | - | if (( | |
359 | - | then [StringEntry( | |
473 | + | let cu = fromBase58String(cs) | |
474 | + | if ((cu == cu)) | |
475 | + | then [StringEntry(aA(), cs)] | |
360 | 476 | else throw("Strict value is not equal to itself.") | |
361 | 477 | } | |
362 | 478 | else throw("Strict value is not equal to itself.") | |
363 | 479 | } | |
364 | 480 | ||
365 | 481 | ||
366 | 482 | ||
367 | - | @Callable( | |
483 | + | @Callable(bO) | |
368 | 484 | func confirmManager () = { | |
369 | - | let | |
370 | - | let | |
485 | + | let cv = bM() | |
486 | + | let cw = if (isDefined(cv)) | |
371 | 487 | then true | |
372 | 488 | else throw("No pending manager") | |
373 | - | if (( | |
489 | + | if ((cw == cw)) | |
374 | 490 | then { | |
375 | - | let | |
491 | + | let cx = if ((bO.callerPublicKey == value(cv))) | |
376 | 492 | then true | |
377 | 493 | else throw("You are not pending manager") | |
378 | - | if (( | |
379 | - | then [StringEntry( | |
494 | + | if ((cx == cx)) | |
495 | + | then [StringEntry(az(), toBase58String(value(cv))), DeleteEntry(aA())] | |
380 | 496 | else throw("Strict value is not equal to itself.") | |
381 | 497 | } | |
382 | 498 | else throw("Strict value is not equal to itself.") | |
383 | 499 | } | |
384 | 500 | ||
385 | 501 | ||
386 | - | @Verifier( | |
387 | - | func | |
388 | - | let | |
389 | - | let | |
390 | - | if ($isInstanceOf( | |
502 | + | @Verifier(cy) | |
503 | + | func cz () = { | |
504 | + | let cA = { | |
505 | + | let bo = bK() | |
506 | + | if ($isInstanceOf(bo, "ByteVector")) | |
391 | 507 | then { | |
392 | - | let | |
393 | - | | |
508 | + | let bQ = bo | |
509 | + | bQ | |
394 | 510 | } | |
395 | - | else if ($isInstanceOf( | |
396 | - | then | |
511 | + | else if ($isInstanceOf(bo, "Unit")) | |
512 | + | then cy.senderPublicKey | |
397 | 513 | else throw("Match error") | |
398 | 514 | } | |
399 | - | sigVerify( | |
515 | + | sigVerify(cy.bodyBytes, cy.proofs[0], cA) | |
400 | 516 | } | |
401 | 517 |
github/deemru/w8io/026f985 146.54 ms ◑