tx · 5JwsDaa8tJ3HxZLJ3FRk6j1VrPownZim5zV3ywqjqEpd

3Mxdqvpx6gFBJRrjq1wHMWvJKLF7vPgfuYp:  -0.03800000 Waves

2022.11.08 17:58 [2308317] smart account 3Mxdqvpx6gFBJRrjq1wHMWvJKLF7vPgfuYp > SELF 0.00000000 Waves

{ "type": 13, "id": "5JwsDaa8tJ3HxZLJ3FRk6j1VrPownZim5zV3ywqjqEpd", "fee": 3800000, "feeAssetId": null, "timestamp": 1667919544884, "version": 2, "chainId": 84, "sender": "3Mxdqvpx6gFBJRrjq1wHMWvJKLF7vPgfuYp", "senderPublicKey": "GaA8h37otTmnSuG9nNFtw4xHDcvGsenXNK2wGApVU99a", "proofs": [ "41eci1B79chmDxErv7cMZmE9MQAtzeBvEZG1eGHV74D5GrooR4RadaNzmXLyHu3qSZGgZDw5WGXMno7Mxj9qnF3Q" ], "script": "base64:BgIeCAISAwoBCBIDCgEIEgMKAQgSBQoDCAEYEgQKAggBBQAKaW5kaWNlc18yMAkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgkAzAgCAA8JAMwIAgAQCQDMCAIAEQkAzAgCABIJAMwIAgATBQNuaWwBD2NoZWNrX3doaXRlbGlzdAEGY2FsbGVyAwkAAAIFBHRoaXMFBmNhbGxlcgYEByRtYXRjaDAJAKAIAQkArAICAgJXXwkA2AQBCAUGY2FsbGVyBWJ5dGVzAwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAXgFByRtYXRjaDAFAXgHAQ9mb2xkX3B1dF9hc3NldHMCBWFjY3VtBWluZGV4BAkkdDA0NjI0OTkFBWFjY3VtBARsaXN0CAUJJHQwNDYyNDk5Al8xBAdhaXJkcm9wCAUJJHQwNDYyNDk5Al8yBAhwYXltZW50cwgFCSR0MDQ2MjQ5OQJfMwMJAGcCBQVpbmRleAkAkAMBBQhwYXltZW50cwUFYWNjdW0DCQECIT0CCAkAkQMCBQhwYXltZW50cwUFaW5kZXgGYW1vdW50AAEJAAIBCQCsAgIJAKwCAgIOV3JvbmcgcGF5bWVudCAJAKQDAQkAZAIFBWluZGV4AAECByBhbW91bnQEA2tleQkArAICBQdhaXJkcm9wAgRfZW5kBANlbmQEByRtYXRjaDAJAJ8IAQUDa2V5AwkAAQIFByRtYXRjaDACA0ludAQBagUHJG1hdGNoMAUBagAABAJpZAkA2AQBCQEFdmFsdWUBCAkAkQMCBQhwYXltZW50cwUFaW5kZXgHYXNzZXRJZAkAlQoDCQDOCAIFBGxpc3QJAMwIAgkBDEludGVnZXJFbnRyeQIFA2tleQkAZAIFA2VuZAABCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICBQdhaXJkcm9wAgNfWF8JANgEAQkAmgMBBQNlbmQFAmlkBQNuaWwFB2FpcmRyb3AFCHBheW1lbnRzAQpmb2xkX2FsbG93AgVhY2N1bQVpbmRleAQLJHQwMTExMjExNTcFBWFjY3VtBARsaXN0CAULJHQwMTExMjExNTcCXzEEB2FpcmRyb3AIBQskdDAxMTEyMTE1NwJfMgQGYW1vdW50CAULJHQwMTExMjExNTcCXzMECGFjY291bnRzCAULJHQwMTExMjExNTcCXzQDCQBnAgUFaW5kZXgJAJADAQUIYWNjb3VudHMFBWFjY3VtBANrZXkJAKwCAgkArAICBQdhaXJkcm9wAgNfQV8JAJEDAgUIYWNjb3VudHMFBWluZGV4BAdhbGxvd2VkBAckbWF0Y2gwCQCfCAEFA2tleQMJAAECBQckbWF0Y2gwAgNJbnQEAWoFByRtYXRjaDAFAWoAAAkAlgoECQDNCAIFBGxpc3QJAQxJbnRlZ2VyRW50cnkCBQNrZXkJAGQCBQdhbGxvd2VkBQZhbW91bnQFB2FpcmRyb3AFBmFtb3VudAUIYWNjb3VudHMBCmZvbGRfY2xhaW0CBWFjY3VtBWluZGV4BAskdDAxNTUzMTU5NwUFYWNjdW0EBGxpc3QIBQskdDAxNTUzMTU5NwJfMQQGYW1vdW50CAULJHQwMTU1MzE1OTcCXzIEB2FpcmRyb3AIBQskdDAxNTUzMTU5NwJfMwQHY2xhaW1lcggFCyR0MDE1NTMxNTk3Al80AwkAZwIAAAUGYW1vdW50BQVhY2N1bQQJYXNzZXRfa2V5CQCsAgIJAKwCAgUHYWlyZHJvcAIDX1hfCQDYBAEJAJoDAQUFaW5kZXgECGFzc2V0X2lkCQDZBAEJARFAZXh0ck5hdGl2ZSgxMDU4KQEFCWFzc2V0X2tleQkAlgoECQDOCAIFBGxpc3QJAMwIAgkBC0RlbGV0ZUVudHJ5AQUJYXNzZXRfa2V5CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFB2NsYWltZXIAAQUIYXNzZXRfaWQFA25pbAkAZQIFBmFtb3VudAABBQdhaXJkcm9wBQdjbGFpbWVyBQFpAQ13aGl0ZWxpc3RfYWRkAQR1c2VyAwkBAiE9AgUEdGhpcwgFAWkGY2FsbGVyCQACAQIYQ2FsbGVyIGlzIG5vdCBkQXBwIG93bmVyCQCUCgIJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAKwCAgICV18FBHVzZXIGBQNuaWwFBHVuaXQBaQEQd2hpdGVsaXN0X3JlbW92ZQEEdXNlcgMJAQIhPQIFBHRoaXMIBQFpBmNhbGxlcgkAAgEC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BQdhaXJkcm9wAgRfZW5kBAViZWdpbgQHJG1hdGNoMAkAnwgBBQdrX2JlZ2luAwkAAQIFByRtYXRjaDACA0ludAQBagUHJG1hdGNoMAUBagAABANlbmQEByRtYXRjaDAJAJ8IAQUFa19lbmQDCQABAgUHJG1hdGNoMAIDSW50BAFqBQckbWF0Y2gwBQFqAAADAwkAZwIAAAUGYW1vdW50BgkAZgIFBmFtb3VudAAUCQACAQIpV3JvbmcgYW1vdW50IChzaG91bGQgYmUgaW4gcmFuZ2UgMSAtLSAyMCkDCQBmAgUGYW1vdW50CQBlAgUDZW5kBQViZWdpbgkAAgECEk5vIGFzc2V0cyBpbiBzdG9jawQHaW5kaWNlcwkAzAgCBQViZWdpbgkAzAgCCQBkAgUFYmVnaW4AAQkAzAgCCQBkAgUFYmVnaW4AAgkAzAgCCQBkAgUFYmVnaW4AAwkAzAgCCQBkAgUFYmVnaW4ABAkAzAgCCQBkAgUFYmVnaW4ABQkAzAgCCQBkAgUFYmVnaW4ABgkAzAgCCQBkAgUFYmVnaW4ABwkAzAgCCQBkAgUFYmVnaW4ACAkAzAgCCQBkAgUFYmVnaW4ACQkAzAgCCQBkAgUFYmVnaW4ACgkAzAgCCQBkAgUFYmVnaW4ACwkAzAgCCQBkAgUFYmVnaW4ADAkAzAgCCQBkAgUFYmVnaW4ADQkAzAgCCQBkAgUFYmVnaW4ADgkAzAgCCQBkAgUFYmVnaW4ADwkAzAgCCQBkAgUFYmVnaW4AEAkAzAgCCQBkAgUFYmVnaW4AEQkAzAgCCQBkAgUFYmVnaW4AEgkAzAgCCQBkAgUFYmVnaW4AEwUDbmlsBAskdDA0Mjk3NDQ1MAoAAiRsBQdpbmRpY2VzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlgoEBQNuaWwFBmFtb3VudAUHYWlyZHJvcAkBB0FkZHJlc3MBCAgFAWkGY2FsbGVyBWJ5dGVzCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpmb2xkX2NsYWltAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAyMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQEBGxpc3QIBQskdDA0Mjk3NDQ1MAJfMQQHYW1vdW50XwgFCyR0MDQyOTc0NDUwAl8yBAhhaXJkcm9wXwgFCyR0MDQyOTc0NDUwAl8zBAhjbGFpbWVyXwgFCyR0MDQyOTc0NDUwAl80CQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa19hbGxvd2VkCQBlAgUHYWxsb3dlZAUGYW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQdrX2JlZ2luCQBkAgUFYmVnaW4FBmFtb3VudAUDbmlsBQRsaXN0BQR1bml0AP9DBvE=", "height": 2308317, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GpucyZg7UoSrf7TYN65NP4PcQHL7QAFqbrCwX2a9Naq8 Next: A64praEjwQfWCMCp3ueFju4cDKQV5ETv1dUKfNm22VWa Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let indices_20 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
5+
46 func check_whitelist (caller) = if ((this == caller))
57 then true
68 else match getBoolean(("W_" + toBase58String(caller.bytes))) {
1113 }
1214
1315
14-func claim_fold (accum,index) = {
15- let $t0365409 = accum
16- let list = $t0365409._1
17- let amount = $t0365409._2
18- let airdrop = $t0365409._3
19- let claimer = $t0365409._4
16+func fold_put_assets (accum,index) = {
17+ let $t0462499 = accum
18+ let list = $t0462499._1
19+ let airdrop = $t0462499._2
20+ let payments = $t0462499._3
21+ if ((index >= size(payments)))
22+ then accum
23+ else if ((payments[index].amount != 1))
24+ then throw((("Wrong payment " + toString((index + 1))) + " amount"))
25+ else {
26+ let key = (airdrop + "_end")
27+ let end = match getInteger(key) {
28+ case j: Int =>
29+ j
30+ case _ =>
31+ 0
32+ }
33+ let id = toBase58String(value(payments[index].assetId))
34+ $Tuple3((list ++ [IntegerEntry(key, (end + 1)), StringEntry(((airdrop + "_X_") + toBase58String(toBytes(end))), id)]), airdrop, payments)
35+ }
36+ }
37+
38+
39+func fold_allow (accum,index) = {
40+ let $t011121157 = accum
41+ let list = $t011121157._1
42+ let airdrop = $t011121157._2
43+ let amount = $t011121157._3
44+ let accounts = $t011121157._4
45+ if ((index >= size(accounts)))
46+ then accum
47+ else {
48+ let key = ((airdrop + "_A_") + accounts[index])
49+ let allowed = match getInteger(key) {
50+ case j: Int =>
51+ j
52+ case _ =>
53+ 0
54+ }
55+ $Tuple4((list :+ IntegerEntry(key, (allowed + amount))), airdrop, amount, accounts)
56+ }
57+ }
58+
59+
60+func fold_claim (accum,index) = {
61+ let $t015531597 = accum
62+ let list = $t015531597._1
63+ let amount = $t015531597._2
64+ let airdrop = $t015531597._3
65+ let claimer = $t015531597._4
2066 if ((0 >= amount))
21- then $Tuple4(list, 0, airdrop, claimer)
67+ then accum
2268 else {
2369 let asset_key = ((airdrop + "_X_") + toBase58String(toBytes(index)))
2470 let asset_id = fromBase58String(getStringValue(asset_key))
4288
4389
4490 @Callable(i)
45-func put_asset (airdrop) = if (!(check_whitelist(i.caller)))
91+func put_assets (airdrop) = if (!(check_whitelist(i.caller)))
4692 then throw("Caller not in whitelist")
47- else if ((size(i.payments) != 1))
48- then throw("Wrong payment size")
49- else if ((i.payments[0].amount != 1))
50- then throw("Wrong payment amount")
93+ else if ((size(i.payments) == 0))
94+ then throw("No payment")
95+ else if ((size(i.payments) > 20))
96+ then throw("To many assets")
5197 else {
52- let key = (airdrop + "_end")
53- let end = match getInteger(key) {
54- case j: Int =>
55- j
56- case _ =>
57- 0
58- }
59- let id = toBase58String(value(i.payments[0].assetId))
60- $Tuple2([IntegerEntry(key, (end + 1)), StringEntry(((airdrop + "_X_") + toBase58String(toBytes(end))), id)], unit)
98+ let $t025622660 = {
99+ let $l = indices_20
100+ let $s = size($l)
101+ let $acc0 = $Tuple3(nil, airdrop, i.payments)
102+ func $f0_1 ($a,$i) = if (($i >= $s))
103+ then $a
104+ else fold_put_assets($a, $l[$i])
105+
106+ func $f0_2 ($a,$i) = if (($i >= $s))
107+ then $a
108+ else throw("List size exceeds 20")
109+
110+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
111+ }
112+ let list = $t025622660._1
113+ let airdrop_ = $t025622660._2
114+ let payments_ = $t025622660._3
115+ $Tuple2(list, unit)
61116 }
62117
63118
64119
65120 @Callable(i)
66-func allow (airdrop,account,amount) = if (!(check_whitelist(i.caller)))
121+func allow (airdrop,amount,accounts) = if (!(check_whitelist(i.caller)))
67122 then throw("Caller not in whitelist")
68123 else if ((0 >= amount))
69124 then throw("Wrong amount")
70- else {
71- let key = ((airdrop + "_A_") + account)
72- let allowed = match getInteger(key) {
73- case j: Int =>
74- j
75- case _ =>
76- 0
77- }
78- $Tuple2([IntegerEntry(key, (allowed + amount))], unit)
79- }
125+ else if ((size(accounts) == 0))
126+ then throw("No accounts")
127+ else if ((size(accounts) > 20))
128+ then throw("Too many accounts")
129+ else {
130+ let $t030423150 = {
131+ let $l = indices_20
132+ let $s = size($l)
133+ let $acc0 = $Tuple4(nil, airdrop, amount, accounts)
134+ func $f0_1 ($a,$i) = if (($i >= $s))
135+ then $a
136+ else fold_allow($a, $l[$i])
137+
138+ func $f0_2 ($a,$i) = if (($i >= $s))
139+ then $a
140+ else throw("List size exceeds 20")
141+
142+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
143+ }
144+ let list = $t030423150._1
145+ let airdrop_ = $t030423150._2
146+ let amount_ = $t030423150._3
147+ let accounts_ = $t030423150._4
148+ $Tuple2(list, unit)
149+ }
80150
81151
82152
109179 then throw("No assets in stock")
110180 else {
111181 let indices = [begin, (begin + 1), (begin + 2), (begin + 3), (begin + 4), (begin + 5), (begin + 6), (begin + 7), (begin + 8), (begin + 9), (begin + 10), (begin + 11), (begin + 12), (begin + 13), (begin + 14), (begin + 15), (begin + 16), (begin + 17), (begin + 18), (begin + 19)]
112- let $t032583411 = {
182+ let $t042974450 = {
113183 let $l = indices
114184 let $s = size($l)
115185 let $acc0 = $Tuple4(nil, amount, airdrop, Address(i.caller.bytes))
116186 func $f0_1 ($a,$i) = if (($i >= $s))
117187 then $a
118- else claim_fold($a, $l[$i])
188+ else fold_claim($a, $l[$i])
119189
120190 func $f0_2 ($a,$i) = if (($i >= $s))
121191 then $a
123193
124194 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
125195 }
126- let list = $t032583411._1
127- let amount_ = $t032583411._2
128- let airdrop_ = $t032583411._3
129- let claimer_ = $t032583411._4
196+ let list = $t042974450._1
197+ let amount_ = $t042974450._2
198+ let airdrop_ = $t042974450._3
199+ let claimer_ = $t042974450._4
130200 $Tuple2(([IntegerEntry(k_allowed, (allowed - amount)), IntegerEntry(k_begin, (begin + amount))] ++ list), unit)
131201 }
132202 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let indices_20 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
5+
46 func check_whitelist (caller) = if ((this == caller))
57 then true
68 else match getBoolean(("W_" + toBase58String(caller.bytes))) {
79 case x: Boolean =>
810 x
911 case _ =>
1012 false
1113 }
1214
1315
14-func claim_fold (accum,index) = {
15- let $t0365409 = accum
16- let list = $t0365409._1
17- let amount = $t0365409._2
18- let airdrop = $t0365409._3
19- let claimer = $t0365409._4
16+func fold_put_assets (accum,index) = {
17+ let $t0462499 = accum
18+ let list = $t0462499._1
19+ let airdrop = $t0462499._2
20+ let payments = $t0462499._3
21+ if ((index >= size(payments)))
22+ then accum
23+ else if ((payments[index].amount != 1))
24+ then throw((("Wrong payment " + toString((index + 1))) + " amount"))
25+ else {
26+ let key = (airdrop + "_end")
27+ let end = match getInteger(key) {
28+ case j: Int =>
29+ j
30+ case _ =>
31+ 0
32+ }
33+ let id = toBase58String(value(payments[index].assetId))
34+ $Tuple3((list ++ [IntegerEntry(key, (end + 1)), StringEntry(((airdrop + "_X_") + toBase58String(toBytes(end))), id)]), airdrop, payments)
35+ }
36+ }
37+
38+
39+func fold_allow (accum,index) = {
40+ let $t011121157 = accum
41+ let list = $t011121157._1
42+ let airdrop = $t011121157._2
43+ let amount = $t011121157._3
44+ let accounts = $t011121157._4
45+ if ((index >= size(accounts)))
46+ then accum
47+ else {
48+ let key = ((airdrop + "_A_") + accounts[index])
49+ let allowed = match getInteger(key) {
50+ case j: Int =>
51+ j
52+ case _ =>
53+ 0
54+ }
55+ $Tuple4((list :+ IntegerEntry(key, (allowed + amount))), airdrop, amount, accounts)
56+ }
57+ }
58+
59+
60+func fold_claim (accum,index) = {
61+ let $t015531597 = accum
62+ let list = $t015531597._1
63+ let amount = $t015531597._2
64+ let airdrop = $t015531597._3
65+ let claimer = $t015531597._4
2066 if ((0 >= amount))
21- then $Tuple4(list, 0, airdrop, claimer)
67+ then accum
2268 else {
2369 let asset_key = ((airdrop + "_X_") + toBase58String(toBytes(index)))
2470 let asset_id = fromBase58String(getStringValue(asset_key))
2571 $Tuple4((list ++ [DeleteEntry(asset_key), ScriptTransfer(claimer, 1, asset_id)]), (amount - 1), airdrop, claimer)
2672 }
2773 }
2874
2975
3076 @Callable(i)
3177 func whitelist_add (user) = if ((this != i.caller))
3278 then throw("Caller is not dApp owner")
3379 else $Tuple2([BooleanEntry(("W_" + user), true)], unit)
3480
3581
3682
3783 @Callable(i)
3884 func whitelist_remove (user) = if ((this != i.caller))
3985 then throw("Caller is not dApp owner")
4086 else $Tuple2([DeleteEntry(("W_" + user))], unit)
4187
4288
4389
4490 @Callable(i)
45-func put_asset (airdrop) = if (!(check_whitelist(i.caller)))
91+func put_assets (airdrop) = if (!(check_whitelist(i.caller)))
4692 then throw("Caller not in whitelist")
47- else if ((size(i.payments) != 1))
48- then throw("Wrong payment size")
49- else if ((i.payments[0].amount != 1))
50- then throw("Wrong payment amount")
93+ else if ((size(i.payments) == 0))
94+ then throw("No payment")
95+ else if ((size(i.payments) > 20))
96+ then throw("To many assets")
5197 else {
52- let key = (airdrop + "_end")
53- let end = match getInteger(key) {
54- case j: Int =>
55- j
56- case _ =>
57- 0
58- }
59- let id = toBase58String(value(i.payments[0].assetId))
60- $Tuple2([IntegerEntry(key, (end + 1)), StringEntry(((airdrop + "_X_") + toBase58String(toBytes(end))), id)], unit)
98+ let $t025622660 = {
99+ let $l = indices_20
100+ let $s = size($l)
101+ let $acc0 = $Tuple3(nil, airdrop, i.payments)
102+ func $f0_1 ($a,$i) = if (($i >= $s))
103+ then $a
104+ else fold_put_assets($a, $l[$i])
105+
106+ func $f0_2 ($a,$i) = if (($i >= $s))
107+ then $a
108+ else throw("List size exceeds 20")
109+
110+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
111+ }
112+ let list = $t025622660._1
113+ let airdrop_ = $t025622660._2
114+ let payments_ = $t025622660._3
115+ $Tuple2(list, unit)
61116 }
62117
63118
64119
65120 @Callable(i)
66-func allow (airdrop,account,amount) = if (!(check_whitelist(i.caller)))
121+func allow (airdrop,amount,accounts) = if (!(check_whitelist(i.caller)))
67122 then throw("Caller not in whitelist")
68123 else if ((0 >= amount))
69124 then throw("Wrong amount")
70- else {
71- let key = ((airdrop + "_A_") + account)
72- let allowed = match getInteger(key) {
73- case j: Int =>
74- j
75- case _ =>
76- 0
77- }
78- $Tuple2([IntegerEntry(key, (allowed + amount))], unit)
79- }
125+ else if ((size(accounts) == 0))
126+ then throw("No accounts")
127+ else if ((size(accounts) > 20))
128+ then throw("Too many accounts")
129+ else {
130+ let $t030423150 = {
131+ let $l = indices_20
132+ let $s = size($l)
133+ let $acc0 = $Tuple4(nil, airdrop, amount, accounts)
134+ func $f0_1 ($a,$i) = if (($i >= $s))
135+ then $a
136+ else fold_allow($a, $l[$i])
137+
138+ func $f0_2 ($a,$i) = if (($i >= $s))
139+ then $a
140+ else throw("List size exceeds 20")
141+
142+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
143+ }
144+ let list = $t030423150._1
145+ let airdrop_ = $t030423150._2
146+ let amount_ = $t030423150._3
147+ let accounts_ = $t030423150._4
148+ $Tuple2(list, unit)
149+ }
80150
81151
82152
83153 @Callable(i)
84154 func claim (airdrop,amount) = {
85155 let k_allowed = ((airdrop + "_A_") + toBase58String(i.caller.bytes))
86156 let allowed = getIntegerValue(k_allowed)
87157 if ((amount > allowed))
88158 then throw("Caller not allowed to claim")
89159 else {
90160 let k_begin = (airdrop + "_begin")
91161 let k_end = (airdrop + "_end")
92162 let begin = match getInteger(k_begin) {
93163 case j: Int =>
94164 j
95165 case _ =>
96166 0
97167 }
98168 let end = match getInteger(k_end) {
99169 case j: Int =>
100170 j
101171 case _ =>
102172 0
103173 }
104174 if (if ((0 >= amount))
105175 then true
106176 else (amount > 20))
107177 then throw("Wrong amount (should be in range 1 -- 20)")
108178 else if ((amount > (end - begin)))
109179 then throw("No assets in stock")
110180 else {
111181 let indices = [begin, (begin + 1), (begin + 2), (begin + 3), (begin + 4), (begin + 5), (begin + 6), (begin + 7), (begin + 8), (begin + 9), (begin + 10), (begin + 11), (begin + 12), (begin + 13), (begin + 14), (begin + 15), (begin + 16), (begin + 17), (begin + 18), (begin + 19)]
112- let $t032583411 = {
182+ let $t042974450 = {
113183 let $l = indices
114184 let $s = size($l)
115185 let $acc0 = $Tuple4(nil, amount, airdrop, Address(i.caller.bytes))
116186 func $f0_1 ($a,$i) = if (($i >= $s))
117187 then $a
118- else claim_fold($a, $l[$i])
188+ else fold_claim($a, $l[$i])
119189
120190 func $f0_2 ($a,$i) = if (($i >= $s))
121191 then $a
122192 else throw("List size exceeds 20")
123193
124194 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
125195 }
126- let list = $t032583411._1
127- let amount_ = $t032583411._2
128- let airdrop_ = $t032583411._3
129- let claimer_ = $t032583411._4
196+ let list = $t042974450._1
197+ let amount_ = $t042974450._2
198+ let airdrop_ = $t042974450._3
199+ let claimer_ = $t042974450._4
130200 $Tuple2(([IntegerEntry(k_allowed, (allowed - amount)), IntegerEntry(k_begin, (begin + amount))] ++ list), unit)
131201 }
132202 }
133203 }
134204
135205

github/deemru/w8io/c3f4982 
39.78 ms