tx · BSkZ87p5KTS2BnGMeoSRewBvDTZ1SWThpxMGctzBLJ81 3MvMpGD5MxbUW2EJn6jtViDu6NHNqu8PKq8: -0.01100000 Waves 2022.08.26 06:38 [2200921] smart account 3MvMpGD5MxbUW2EJn6jtViDu6NHNqu8PKq8 > SELF 0.00000000 Waves
{ "type": 13, "id": "BSkZ87p5KTS2BnGMeoSRewBvDTZ1SWThpxMGctzBLJ81", "fee": 1100000, "feeAssetId": null, "timestamp": 1661485184671, "version": 2, "chainId": 84, "sender": "3MvMpGD5MxbUW2EJn6jtViDu6NHNqu8PKq8", "senderPublicKey": "2MhVDhjG7eJ6SY8og2HRd4Bam75FsCSg2Vude8gutmZe", "proofs": [ "3AegYnzV9FBtfoYVAZfyK1sB92Y2kgZbfYbmgp557vJbFN63cvwePfGbDgnPHh2E3wso5qeFJGnReehZ4SHRmiAR" ], "script": "base64:AAIFAAAAAAAAAB4IAhIDCgEIEgoKCAEBAQEICAgBEgASABIFCgMBCAgAAAARAAAAAAJwcwIAAAANUFJFU0FMRV9TVEFSVAAAAAACcGQCAAAAEFBSRVNBTEVfRFVSQVRJT04AAAAAAmNzAgAAAAtDTEFJTV9TVEFSVAAAAAACY2QCAAAADkNMQUlNX0RVUkFUSU9OAAAAAAFwAgAAAAlQUklDRV9JRE8AAAAABHAxSUQCAAAAEFBSSUNFXzFfQVNTRVRfSUQAAAAABHAySUQCAAAAEFBSSUNFXzJfQVNTRVRfSUQAAAAABHAzSUQCAAAAEFBSSUNFXzNfQVNTRVRfSUQAAAAAA21pYQIAAAARTUlOX0FNT1VOVF9JTlZFU1QAAAAABW1haW5hAgAAAApNQUlOX0FTU0VUAAAAAAdmb3JTYWxlAgAAAA5UT1RBTF9GT1JfU0FMRQAAAAAJdG90YWxTYWxlAgAAAApUT1RBTF9TQUxFAAAAAAd0aW52ZXN0AgAAAA1UT1RBTF9JTlZFU1RfAAAAAAVkaXNkdQIAAAAVRElTVFJJQlVUSU9OX0RVUkFUSU9OAAAAAAJEOAAAAAAABfXhAAAAAAADRDEwAAAAAAJUC+QAAQAAAA9nZXRBc3NldElmVmFsaWQAAAABAAAAB2Fzc2V0SWQJAAJYAAAAAQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCAkBAAAABXZhbHVlAAAAAQkAA+wAAAABCQACWQAAAAEFAAAAB2Fzc2V0SWQAAAACaWQJAAEsAAAAAgkAASwAAAACAgAAAApBc3NldCBJZDogBQAAAAdhc3NldElkAgAAAAwgaXMgaW52YWxpZC4AAAAFAAAAAWkBAAAACGFkZEFkbWluAAAAAQAAAAdhZGRyZXNzAwkAAAAAAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMJAARMAAAAAgkBAAAAC0JpbmFyeUVudHJ5AAAAAgIAAAAFYWRtaW4JAAJZAAAAAQUAAAAHYWRkcmVzcwUAAAADbmlsCQAAAgAAAAECAAAALk9ubHkgdGhlIEFkbWluIGl0c2VsZiBjYW4gaW52b2tlIHRoaXMgZnVuY3Rpb24AAAABaQEAAAALY29uc3RydWN0b3IAAAAIAAAADHByZXNhbGVTdGFydAAAAA9wcmVzYWxlRHVyYXRpb24AAAAUZGlzdHJpYnV0aW9uRHVyYXRpb24AAAAFcHJpY2UAAAAPcHJpY2UxQXNzZXRJZDU4AAAAD3ByaWNlMkFzc2V0SWQ1OAAAAA9wcmljZTNBc3NldElkNTgAAAAPbWluSW52ZXN0QW1vdW50BAAAAAZhc3NldDEJAQAAAA9nZXRBc3NldElmVmFsaWQAAAABBQAAAA9wcmljZTFBc3NldElkNTgEAAAABmFzc2V0MgkBAAAAD2dldEFzc2V0SWZWYWxpZAAAAAEFAAAAD3ByaWNlMkFzc2V0SWQ1OAQAAAAGYXNzZXQzCQEAAAAPZ2V0QXNzZXRJZlZhbGlkAAAAAQUAAAAPcHJpY2UzQXNzZXRJZDU4AwMJAAAAAAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzBgkAAAAAAAACCAUAAAABaQAAAAZjYWxsZXIJAQAAAAdBZGRyZXNzAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNTIpAAAAAgUAAAAEdGhpcwIAAAAFYWRtaW4DCQAAZwAAAAIFAAAAD3ByZXNhbGVEdXJhdGlvbgUAAAAMcHJlc2FsZVN0YXJ0CQAAAgAAAAECAAAAMlByZXNhbGVEdXJhdGlvbiBjYW4ndCBiZSBiaWdnZXIgdGhhbiAgUHJlc2FsZVN0YXJ0AwkAAGYAAAACBQAAAA9taW5JbnZlc3RBbW91bnQFAAAABXByaWNlCQAAAgAAAAECAAAAKm1pbkludmVzdEFtb3VudCBjYW4ndCBiZSBiaWdnZXIgdGhhbiBwcmljZQMDAwkAAAAAAAACBQAAAAZhc3NldDEFAAAABmFzc2V0MgYJAAAAAAAAAgUAAAAGYXNzZXQxBQAAAAZhc3NldDMGCQAAAAAAAAIFAAAABmFzc2V0MgUAAAAGYXNzZXQzCQAAAgAAAAECAAAALEVhY2ggQXNzZXQgbXVzdCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgb3RoZXIuAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAAIAAAABAgAAACJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkCQAETAAAAAIJAQAAAAtCaW5hcnlFbnRyeQAAAAIFAAAABW1h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", "height": 2200921, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4ARUR697bwHjphQUagy6M4m4f6gkjFdKrwaF4QHFhz3D Next: FnwqeJQxjYdCBYPdSEWyrtnz6LMfUZGbmJL59gwdX3Wa Diff:
Old | New | Differences | |
---|---|---|---|
31 | 31 | ||
32 | 32 | let o = 100000000 | |
33 | 33 | ||
34 | - | func p (q) = toBase58String(valueOrErrorMessage(value(assetInfo(fromBase58String(q))).id, (("Asset Id: " + q) + " is invalid."))) | |
34 | + | let p = 10000000000 | |
35 | + | ||
36 | + | func q (r) = toBase58String(valueOrErrorMessage(value(assetInfo(fromBase58String(r))).id, (("Asset Id: " + r) + " is invalid."))) | |
35 | 37 | ||
36 | 38 | ||
37 | - | @Callable( | |
38 | - | func addAdmin ( | |
39 | - | then [BinaryEntry("admin", fromBase58String( | |
39 | + | @Callable(s) | |
40 | + | func addAdmin (t) = if ((s.caller == this)) | |
41 | + | then [BinaryEntry("admin", fromBase58String(t))] | |
40 | 42 | else throw("Only the Admin itself can invoke this function") | |
41 | 43 | ||
42 | 44 | ||
43 | 45 | ||
44 | - | @Callable( | |
45 | - | func constructor ( | |
46 | - | let | |
47 | - | let | |
48 | - | let | |
49 | - | if (if (( | |
46 | + | @Callable(s) | |
47 | + | func constructor (u,v,w,x,y,z,A,B) = { | |
48 | + | let C = q(y) | |
49 | + | let D = q(z) | |
50 | + | let E = q(A) | |
51 | + | if (if ((s.caller == this)) | |
50 | 52 | then true | |
51 | - | else ( | |
52 | - | then if (( | |
53 | + | else (s.caller == Address(getBinaryValue(this, "admin")))) | |
54 | + | then if ((v >= u)) | |
53 | 55 | then throw("PresaleDuration can't be bigger than PresaleStart") | |
54 | - | else if (( | |
56 | + | else if ((B > x)) | |
55 | 57 | then throw("minInvestAmount can't be bigger than price") | |
56 | - | else if (if (if (( | |
58 | + | else if (if (if ((C == D)) | |
57 | 59 | then true | |
58 | - | else ( | |
60 | + | else (C == E)) | |
59 | 61 | then true | |
60 | - | else ( | |
62 | + | else (D == E)) | |
61 | 63 | then throw("Each Asset must be different from the other.") | |
62 | - | else if ((size( | |
64 | + | else if ((size(s.payments) != 1)) | |
63 | 65 | then throw("exactly 1 payment must be attached") | |
64 | - | else [BinaryEntry(j, value( | |
66 | + | else [BinaryEntry(j, value(s.payments[0].assetId)), StringEntry(f, y), StringEntry(g, z), StringEntry(h, A), IntegerEntry(a, u), IntegerEntry(b, v), IntegerEntry(e, x), IntegerEntry(i, B), IntegerEntry(k, value(s.payments[0]).amount), IntegerEntry(l, 0), IntegerEntry(n, w)] | |
65 | 67 | else throw("Only the Admin itself can invoke this function") | |
66 | 68 | } | |
67 | 69 | ||
68 | 70 | ||
69 | 71 | ||
70 | - | @Callable( | |
72 | + | @Callable(s) | |
71 | 73 | func invest () = { | |
72 | - | let | |
73 | - | let | |
74 | - | let | |
75 | - | let | |
76 | - | let | |
77 | - | let | |
78 | - | let | |
79 | - | let | |
80 | - | let | |
81 | - | let | |
82 | - | let | |
83 | - | let | |
84 | - | let | |
85 | - | let | |
86 | - | let | |
87 | - | if (( | |
74 | + | let F = getBinaryValue(this, j) | |
75 | + | let u = getIntegerValue(this, a) | |
76 | + | let v = getIntegerValue(this, b) | |
77 | + | let G = (u + v) | |
78 | + | let x = getIntegerValue(this, e) | |
79 | + | let H = height | |
80 | + | let I = value(s.payments[0]) | |
81 | + | let J = toBase58String(value(I.assetId)) | |
82 | + | let K = I.amount | |
83 | + | let C = getStringValue(this, f) | |
84 | + | let D = getStringValue(this, g) | |
85 | + | let E = getStringValue(this, h) | |
86 | + | let L = getIntegerValue(this, l) | |
87 | + | let M = getIntegerValue(this, k) | |
88 | + | let N = getIntegerValue(this, i) | |
89 | + | if ((u >= H)) | |
88 | 90 | then throw("presale has not been started yet") | |
89 | - | else if (( | |
91 | + | else if ((H >= G)) | |
90 | 92 | then throw("presale has been already ended") | |
91 | - | else if ((size( | |
93 | + | else if ((size(s.payments) != 1)) | |
92 | 94 | then throw("exactly 1 payment is expected") | |
93 | - | else if (if (if (( | |
94 | - | then ( | |
95 | + | else if (if (if ((J != C)) | |
96 | + | then (J != D) | |
95 | 97 | else false) | |
96 | - | then ( | |
98 | + | then (J != E) | |
97 | 99 | else false) | |
98 | - | then throw(((("invalid payment asset id:" + | |
99 | - | else if (( | |
100 | + | then throw(((("invalid payment asset id:" + J) + " Expected:") + C)) | |
101 | + | else if ((L >= M)) | |
100 | 102 | then throw("Pre-sale asset has been - sold consider to use smaller payment") | |
101 | - | else if (( | |
103 | + | else if ((N > K)) | |
102 | 104 | then throw("Amount less than the minimum to be invested.") | |
103 | 105 | else { | |
104 | - | let | |
105 | - | let | |
106 | - | let | |
107 | - | if ($isInstanceOf( | |
106 | + | let O = ((K / x) * o) | |
107 | + | let P = { | |
108 | + | let Q = getInteger(this, (m + toBase58String(s.caller.bytes))) | |
109 | + | if ($isInstanceOf(Q, "Int")) | |
108 | 110 | then { | |
109 | - | let | |
110 | - | | |
111 | + | let R = Q | |
112 | + | R | |
111 | 113 | } | |
112 | 114 | else 0 | |
113 | 115 | } | |
114 | - | [IntegerEntry(l, ( | |
116 | + | [IntegerEntry(l, (L + O)), IntegerEntry((m + toBase58String(s.caller.bytes)), (O + P)), IntegerEntry(((((m + toBase58String(s.caller.bytes)) + "__") + J) + "__VALUE"), K), BooleanEntry((((m + toBase58String(s.caller.bytes)) + "__") + J), true)] | |
115 | 117 | } | |
116 | 118 | } | |
117 | 119 | ||
118 | 120 | ||
119 | 121 | ||
120 | - | @Callable( | |
122 | + | @Callable(s) | |
121 | 123 | func claimPresale () = { | |
122 | - | let | |
123 | - | let | |
124 | - | let | |
125 | - | let | |
126 | - | let | |
127 | - | let | |
128 | - | let | |
129 | - | let | |
130 | - | if (( | |
124 | + | let S = getIntegerValue(this, b) | |
125 | + | let T = getIntegerValue(this, a) | |
126 | + | let U = (S + T) | |
127 | + | let w = getIntegerValue(this, n) | |
128 | + | let V = (U + w) | |
129 | + | let F = getBinaryValue(this, j) | |
130 | + | let H = height | |
131 | + | let x = getIntegerValue(this, e) | |
132 | + | if ((U >= H)) | |
131 | 133 | then throw("The Presale is still happening.") | |
132 | 134 | else { | |
133 | - | let | |
134 | - | let | |
135 | - | if ($isInstanceOf( | |
135 | + | let P = { | |
136 | + | let Q = getInteger(this, (m + toBase58String(s.caller.bytes))) | |
137 | + | if ($isInstanceOf(Q, "Int")) | |
136 | 138 | then { | |
137 | - | let | |
138 | - | | |
139 | + | let R = Q | |
140 | + | R | |
139 | 141 | } | |
140 | 142 | else 0 | |
141 | 143 | } | |
142 | - | let | |
144 | + | let W = if ((H > V)) | |
143 | 145 | then toBigInt(100) | |
144 | - | else ((toBigInt( | |
145 | - | let | |
146 | + | else ((toBigInt(H) * toBigInt(p)) / toBigInt(V)) | |
147 | + | let X = if ((0 >= P)) | |
146 | 148 | then throw("You were not part of the presale") | |
147 | - | else | |
148 | - | let | |
149 | - | let | |
150 | - | let | |
151 | - | let | |
152 | - | if ($isInstanceOf( | |
149 | + | else P | |
150 | + | let O = ((toBigInt(X) * W) / (toBigInt(100) * toBigInt(o))) | |
151 | + | let Y = (toBigInt(X) - O) | |
152 | + | let Z = { | |
153 | + | let Q = getInteger(this, ("OLD_TOTAL_" + toBase58String(s.caller.bytes))) | |
154 | + | if ($isInstanceOf(Q, "Int")) | |
153 | 155 | then { | |
154 | - | let | |
155 | - | | |
156 | + | let aa = Q | |
157 | + | aa | |
156 | 158 | } | |
157 | 159 | else 0 | |
158 | 160 | } | |
159 | - | if (( | |
160 | - | then [IntegerEntry((m + toBase58String( | |
161 | - | else [IntegerEntry((m + toBase58String( | |
161 | + | if ((Z == 0)) | |
162 | + | then [IntegerEntry((m + toBase58String(s.caller.bytes)), toInt(Y)), ScriptTransfer(s.caller, toInt(O), F), IntegerEntry(("OLD_TOTAL_" + toBase58String(s.caller.bytes)), X)] | |
163 | + | else [IntegerEntry((m + toBase58String(s.caller.bytes)), toInt(Y)), ScriptTransfer(s.caller, toInt(O), F)] | |
162 | 164 | } | |
163 | 165 | } | |
164 | 166 | ||
165 | 167 | ||
166 | 168 | ||
167 | - | @Callable( | |
168 | - | func adminV ( | |
169 | + | @Callable(s) | |
170 | + | func adminV (ab,t,r) = if (if ((s.caller == this)) | |
169 | 171 | then true | |
170 | - | else ( | |
171 | - | then [ScriptTransfer(Address(fromBase58String( | |
172 | + | else (s.caller == Address(getBinaryValue(this, "admin")))) | |
173 | + | then [ScriptTransfer(Address(fromBase58String(t)), ab, fromBase58String(r))] | |
172 | 174 | else throw("Only the Admin itself can invoke this function") | |
173 | 175 | ||
174 | 176 | ||
175 | - | @Verifier( | |
176 | - | func | |
177 | + | @Verifier(ac) | |
178 | + | func ad () = sigVerify(ac.bodyBytes, ac.proofs[0], ac.senderPublicKey) | |
177 | 179 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = "PRESALE_START" | |
5 | 5 | ||
6 | 6 | let b = "PRESALE_DURATION" | |
7 | 7 | ||
8 | 8 | let c = "CLAIM_START" | |
9 | 9 | ||
10 | 10 | let d = "CLAIM_DURATION" | |
11 | 11 | ||
12 | 12 | let e = "PRICE_IDO" | |
13 | 13 | ||
14 | 14 | let f = "PRICE_1_ASSET_ID" | |
15 | 15 | ||
16 | 16 | let g = "PRICE_2_ASSET_ID" | |
17 | 17 | ||
18 | 18 | let h = "PRICE_3_ASSET_ID" | |
19 | 19 | ||
20 | 20 | let i = "MIN_AMOUNT_INVEST" | |
21 | 21 | ||
22 | 22 | let j = "MAIN_ASSET" | |
23 | 23 | ||
24 | 24 | let k = "TOTAL_FOR_SALE" | |
25 | 25 | ||
26 | 26 | let l = "TOTAL_SALE" | |
27 | 27 | ||
28 | 28 | let m = "TOTAL_INVEST_" | |
29 | 29 | ||
30 | 30 | let n = "DISTRIBUTION_DURATION" | |
31 | 31 | ||
32 | 32 | let o = 100000000 | |
33 | 33 | ||
34 | - | func p (q) = toBase58String(valueOrErrorMessage(value(assetInfo(fromBase58String(q))).id, (("Asset Id: " + q) + " is invalid."))) | |
34 | + | let p = 10000000000 | |
35 | + | ||
36 | + | func q (r) = toBase58String(valueOrErrorMessage(value(assetInfo(fromBase58String(r))).id, (("Asset Id: " + r) + " is invalid."))) | |
35 | 37 | ||
36 | 38 | ||
37 | - | @Callable( | |
38 | - | func addAdmin ( | |
39 | - | then [BinaryEntry("admin", fromBase58String( | |
39 | + | @Callable(s) | |
40 | + | func addAdmin (t) = if ((s.caller == this)) | |
41 | + | then [BinaryEntry("admin", fromBase58String(t))] | |
40 | 42 | else throw("Only the Admin itself can invoke this function") | |
41 | 43 | ||
42 | 44 | ||
43 | 45 | ||
44 | - | @Callable( | |
45 | - | func constructor ( | |
46 | - | let | |
47 | - | let | |
48 | - | let | |
49 | - | if (if (( | |
46 | + | @Callable(s) | |
47 | + | func constructor (u,v,w,x,y,z,A,B) = { | |
48 | + | let C = q(y) | |
49 | + | let D = q(z) | |
50 | + | let E = q(A) | |
51 | + | if (if ((s.caller == this)) | |
50 | 52 | then true | |
51 | - | else ( | |
52 | - | then if (( | |
53 | + | else (s.caller == Address(getBinaryValue(this, "admin")))) | |
54 | + | then if ((v >= u)) | |
53 | 55 | then throw("PresaleDuration can't be bigger than PresaleStart") | |
54 | - | else if (( | |
56 | + | else if ((B > x)) | |
55 | 57 | then throw("minInvestAmount can't be bigger than price") | |
56 | - | else if (if (if (( | |
58 | + | else if (if (if ((C == D)) | |
57 | 59 | then true | |
58 | - | else ( | |
60 | + | else (C == E)) | |
59 | 61 | then true | |
60 | - | else ( | |
62 | + | else (D == E)) | |
61 | 63 | then throw("Each Asset must be different from the other.") | |
62 | - | else if ((size( | |
64 | + | else if ((size(s.payments) != 1)) | |
63 | 65 | then throw("exactly 1 payment must be attached") | |
64 | - | else [BinaryEntry(j, value( | |
66 | + | else [BinaryEntry(j, value(s.payments[0].assetId)), StringEntry(f, y), StringEntry(g, z), StringEntry(h, A), IntegerEntry(a, u), IntegerEntry(b, v), IntegerEntry(e, x), IntegerEntry(i, B), IntegerEntry(k, value(s.payments[0]).amount), IntegerEntry(l, 0), IntegerEntry(n, w)] | |
65 | 67 | else throw("Only the Admin itself can invoke this function") | |
66 | 68 | } | |
67 | 69 | ||
68 | 70 | ||
69 | 71 | ||
70 | - | @Callable( | |
72 | + | @Callable(s) | |
71 | 73 | func invest () = { | |
72 | - | let | |
73 | - | let | |
74 | - | let | |
75 | - | let | |
76 | - | let | |
77 | - | let | |
78 | - | let | |
79 | - | let | |
80 | - | let | |
81 | - | let | |
82 | - | let | |
83 | - | let | |
84 | - | let | |
85 | - | let | |
86 | - | let | |
87 | - | if (( | |
74 | + | let F = getBinaryValue(this, j) | |
75 | + | let u = getIntegerValue(this, a) | |
76 | + | let v = getIntegerValue(this, b) | |
77 | + | let G = (u + v) | |
78 | + | let x = getIntegerValue(this, e) | |
79 | + | let H = height | |
80 | + | let I = value(s.payments[0]) | |
81 | + | let J = toBase58String(value(I.assetId)) | |
82 | + | let K = I.amount | |
83 | + | let C = getStringValue(this, f) | |
84 | + | let D = getStringValue(this, g) | |
85 | + | let E = getStringValue(this, h) | |
86 | + | let L = getIntegerValue(this, l) | |
87 | + | let M = getIntegerValue(this, k) | |
88 | + | let N = getIntegerValue(this, i) | |
89 | + | if ((u >= H)) | |
88 | 90 | then throw("presale has not been started yet") | |
89 | - | else if (( | |
91 | + | else if ((H >= G)) | |
90 | 92 | then throw("presale has been already ended") | |
91 | - | else if ((size( | |
93 | + | else if ((size(s.payments) != 1)) | |
92 | 94 | then throw("exactly 1 payment is expected") | |
93 | - | else if (if (if (( | |
94 | - | then ( | |
95 | + | else if (if (if ((J != C)) | |
96 | + | then (J != D) | |
95 | 97 | else false) | |
96 | - | then ( | |
98 | + | then (J != E) | |
97 | 99 | else false) | |
98 | - | then throw(((("invalid payment asset id:" + | |
99 | - | else if (( | |
100 | + | then throw(((("invalid payment asset id:" + J) + " Expected:") + C)) | |
101 | + | else if ((L >= M)) | |
100 | 102 | then throw("Pre-sale asset has been - sold consider to use smaller payment") | |
101 | - | else if (( | |
103 | + | else if ((N > K)) | |
102 | 104 | then throw("Amount less than the minimum to be invested.") | |
103 | 105 | else { | |
104 | - | let | |
105 | - | let | |
106 | - | let | |
107 | - | if ($isInstanceOf( | |
106 | + | let O = ((K / x) * o) | |
107 | + | let P = { | |
108 | + | let Q = getInteger(this, (m + toBase58String(s.caller.bytes))) | |
109 | + | if ($isInstanceOf(Q, "Int")) | |
108 | 110 | then { | |
109 | - | let | |
110 | - | | |
111 | + | let R = Q | |
112 | + | R | |
111 | 113 | } | |
112 | 114 | else 0 | |
113 | 115 | } | |
114 | - | [IntegerEntry(l, ( | |
116 | + | [IntegerEntry(l, (L + O)), IntegerEntry((m + toBase58String(s.caller.bytes)), (O + P)), IntegerEntry(((((m + toBase58String(s.caller.bytes)) + "__") + J) + "__VALUE"), K), BooleanEntry((((m + toBase58String(s.caller.bytes)) + "__") + J), true)] | |
115 | 117 | } | |
116 | 118 | } | |
117 | 119 | ||
118 | 120 | ||
119 | 121 | ||
120 | - | @Callable( | |
122 | + | @Callable(s) | |
121 | 123 | func claimPresale () = { | |
122 | - | let | |
123 | - | let | |
124 | - | let | |
125 | - | let | |
126 | - | let | |
127 | - | let | |
128 | - | let | |
129 | - | let | |
130 | - | if (( | |
124 | + | let S = getIntegerValue(this, b) | |
125 | + | let T = getIntegerValue(this, a) | |
126 | + | let U = (S + T) | |
127 | + | let w = getIntegerValue(this, n) | |
128 | + | let V = (U + w) | |
129 | + | let F = getBinaryValue(this, j) | |
130 | + | let H = height | |
131 | + | let x = getIntegerValue(this, e) | |
132 | + | if ((U >= H)) | |
131 | 133 | then throw("The Presale is still happening.") | |
132 | 134 | else { | |
133 | - | let | |
134 | - | let | |
135 | - | if ($isInstanceOf( | |
135 | + | let P = { | |
136 | + | let Q = getInteger(this, (m + toBase58String(s.caller.bytes))) | |
137 | + | if ($isInstanceOf(Q, "Int")) | |
136 | 138 | then { | |
137 | - | let | |
138 | - | | |
139 | + | let R = Q | |
140 | + | R | |
139 | 141 | } | |
140 | 142 | else 0 | |
141 | 143 | } | |
142 | - | let | |
144 | + | let W = if ((H > V)) | |
143 | 145 | then toBigInt(100) | |
144 | - | else ((toBigInt( | |
145 | - | let | |
146 | + | else ((toBigInt(H) * toBigInt(p)) / toBigInt(V)) | |
147 | + | let X = if ((0 >= P)) | |
146 | 148 | then throw("You were not part of the presale") | |
147 | - | else | |
148 | - | let | |
149 | - | let | |
150 | - | let | |
151 | - | let | |
152 | - | if ($isInstanceOf( | |
149 | + | else P | |
150 | + | let O = ((toBigInt(X) * W) / (toBigInt(100) * toBigInt(o))) | |
151 | + | let Y = (toBigInt(X) - O) | |
152 | + | let Z = { | |
153 | + | let Q = getInteger(this, ("OLD_TOTAL_" + toBase58String(s.caller.bytes))) | |
154 | + | if ($isInstanceOf(Q, "Int")) | |
153 | 155 | then { | |
154 | - | let | |
155 | - | | |
156 | + | let aa = Q | |
157 | + | aa | |
156 | 158 | } | |
157 | 159 | else 0 | |
158 | 160 | } | |
159 | - | if (( | |
160 | - | then [IntegerEntry((m + toBase58String( | |
161 | - | else [IntegerEntry((m + toBase58String( | |
161 | + | if ((Z == 0)) | |
162 | + | then [IntegerEntry((m + toBase58String(s.caller.bytes)), toInt(Y)), ScriptTransfer(s.caller, toInt(O), F), IntegerEntry(("OLD_TOTAL_" + toBase58String(s.caller.bytes)), X)] | |
163 | + | else [IntegerEntry((m + toBase58String(s.caller.bytes)), toInt(Y)), ScriptTransfer(s.caller, toInt(O), F)] | |
162 | 164 | } | |
163 | 165 | } | |
164 | 166 | ||
165 | 167 | ||
166 | 168 | ||
167 | - | @Callable( | |
168 | - | func adminV ( | |
169 | + | @Callable(s) | |
170 | + | func adminV (ab,t,r) = if (if ((s.caller == this)) | |
169 | 171 | then true | |
170 | - | else ( | |
171 | - | then [ScriptTransfer(Address(fromBase58String( | |
172 | + | else (s.caller == Address(getBinaryValue(this, "admin")))) | |
173 | + | then [ScriptTransfer(Address(fromBase58String(t)), ab, fromBase58String(r))] | |
172 | 174 | else throw("Only the Admin itself can invoke this function") | |
173 | 175 | ||
174 | 176 | ||
175 | - | @Verifier( | |
176 | - | func | |
177 | + | @Verifier(ac) | |
178 | + | func ad () = sigVerify(ac.bodyBytes, ac.proofs[0], ac.senderPublicKey) | |
177 | 179 |
github/deemru/w8io/169f3d6 100.61 ms ◑