tx · 2GfPwtNpxuGA6zz7soxtsTAoLj9oF9ZQsc2Rdg9VokAF

3PPhk52YuwKTFT2U865di1Pepj4bFHxubFY:  -0.03800000 Waves

2022.12.21 21:03 [3435854] smart account 3PPhk52YuwKTFT2U865di1Pepj4bFHxubFY > SELF 0.00000000 Waves

{ "type": 13, "id": "2GfPwtNpxuGA6zz7soxtsTAoLj9oF9ZQsc2Rdg9VokAF", "fee": 3800000, "feeAssetId": null, "timestamp": 1671645879134, "version": 2, "chainId": 87, "sender": "3PPhk52YuwKTFT2U865di1Pepj4bFHxubFY", "senderPublicKey": "5EhD7NvoyShNGdN6g6ps2X6FieUun2o7TTggY1CL9wH9", "proofs": [ "2DLJTB9Hg21BdUJz4qSn3LkJdmh7jsbUkyb256issGKdiwbCHw8hqJkyTNSf1238Z59D21ZgitJ7Bkm3VKPZ9NEc" ], "script": "base64:BgIkCAISAwoBCBIDCgEIEgMKAQgSBQoDCAEYEgQKAggBEgQKAggBBQAKaW5kaWNlc18yMAkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgkAzAgCAA8JAMwIAgAQCQDMCAIAEQkAzAgCABIJAMwIAgATBQNuaWwBD2NoZWNrX3doaXRlbGlzdAEGY2FsbGVyAwkAAAIFBHRoaXMFBmNhbGxlcgYEByRtYXRjaDAJAKAIAQkArAICAgJXXwkA2AQBCAUGY2FsbGVyBWJ5dGVzAwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAXgFByRtYXRjaDAFAXgHAQ9mb2xkX3B1dF9hc3NldHMCBWFjY3VtBWluZGV4BAkkdDA0NTU0OTcFBWFjY3VtBARsaXN0CAUJJHQwNDU1NDk3Al8xBAdhaXJkcm9wCAUJJHQwNDU1NDk3Al8yBANlbmQIBQkkdDA0NTU0OTcCXzMECHBheW1lbnRzCAUJJHQwNDU1NDk3Al80AwkAZwIFBWluZGV4CQCQAwEFCHBheW1lbnRzBQVhY2N1bQMJAQIhPQIICQCRAwIFCHBheW1lbnRzBQVpbmRleAZhbW91bnQAAQkAAgEJAKwCAgkArAICAg5Xcm9uZyBwYXltZW50IAkApAMBCQBkAgUFaW5kZXgAAQIHIGFtb3VudAQCaWQJANgEAQkBBXZhbHVlAQgJAJEDAgUIcGF5bWVudHMFBWluZGV4B2Fzc2V0SWQJAJYKBAkAzggCBQRsaXN0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICBQdhaXJkcm9wAgNfWF8JANgEAQkAmgMBCQBkAgUDZW5kBQVpbmRleAUCaWQFA25pbAUHYWlyZHJvcAUDZW5kBQhwYXltZW50cwEKZm9sZF9hbGxvdwIFYWNjdW0FaW5kZXgECiR0MDk3MjEwMTcFBWFjY3VtBARsaXN0CAUKJHQwOTcyMTAxNwJfMQQHYWlyZHJvcAgFCiR0MDk3MjEwMTcCXzIEBmFtb3VudAgFCiR0MDk3MjEwMTcCXzMECGFjY291bnRzCAUKJHQwOTcyMTAxNwJfNAMJAGcCBQVpbmRleAkAkAMBBQhhY2NvdW50cwUFYWNjdW0EA2tleQkArAICCQCsAgIFB2FpcmRyb3ACA19BXwkAkQMCBQhhY2NvdW50cwUFaW5kZXgEB2FsbG93ZWQEByRtYXRjaDAJAJ8IAQUDa2V5AwkAAQIFByRtYXRjaDACA0ludAQBagUHJG1hdGNoMAUBagAACQCWCgQJAM0IAgUEbGlzdAkBDEludGVnZXJFbnRyeQIFA2tleQkAZAIFB2FsbG93ZWQFBmFtb3VudAUHYWlyZHJvcAUGYW1vdW50BQhhY2NvdW50cwEKZm9sZF9jbGFpbQIFYWNjdW0FaW5kZXgECyR0MDE0MTMxNDU3BQVhY2N1bQQEbGlzdAgFCyR0MDE0MTMxNDU3Al8xBAZhbW91bnQIBQskdDAxNDEzMTQ1NwJfMgQHYWlyZHJvcAgFCyR0MDE0MTMxNDU3Al8zBAdjbGFpbWVyCAULJHQwMTQxMzE0NTcCXzQDCQBnAgAABQZhbW91bnQFBWFjY3VtBAlhc3NldF9rZXkJAKwCAgkArAICBQdhaXJkcm9wAgNfWF8JANgEAQkAmgMBBQVpbmRleAQIYXNzZXRfaWQJANkEAQkBEUBleHRyTmF0aXZlKDEwNTgpAQUJYXNzZXRfa2V5CQCWCgQJAM4IAgUEbGlzdAkAzAgCCQELRGVsZXRlRW50cnkBBQlhc3NldF9rZXkJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUHY2xhaW1lcgABBQhhc3NldF9pZAUDbmlsCQBlAgUGYW1vdW50AAEFB2FpcmRyb3AFB2NsYWltZXIGAWkBDXdoaXRlbGlzdF9hZGQBBHVzZXIDCQECIT0CBQR0aGlzCAUBaQZjYWxsZXIJAAIBAhhDYWxsZXIgaXMgbm90IGRBcHAgb3duZXIJAJQKAgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkArAICAgJXXwUEdXNlcgYFA25pbAUEdW5pdAFpARB3aGl0ZWxpc3RfcmVtb3ZlAQR1c2VyAwkBAiE9AgUEdGhpcwgFAWkGY2FsbGVyCQACAQIYQ2FsbGVyIGlzIG5vdCBkQXBwIG93bmVyCQCUCgIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICAgJXXwUEdXNlcgUDbmlsBQR1bml0AWkBCnB1dF9hc3NldHMBB2FpcmRyb3ADCQEBIQEJAQ9jaGVja193aGl0ZWxpc3QBCAUBaQZjYWxsZXIJAAIBAhdDYWxsZXIgbm90IGluIHdoaXRlbGlzdAMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAgpObyBwYXltZW50AwkAZgIJAJADAQgFAWkIcGF5bWVudHMAFAkAAgECDlRvIG1hbnkgYXNzZXRzBAVrX2VuZAkArAICBQdhaXJkcm9wAgRfZW5kBANlbmQEByRtYXRjaDAJAJ8IAQUFa19lbmQDCQABAgUHJG1hdGNoMAIDSW50BAFqBQckbWF0Y2gwBQFqAAAECyR0MDI1NDkyNjU4CgACJGwFCmluZGljZXNfMjAKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCWCgQFA25pbAUHYWlyZHJvcAUDZW5kCAUBaQhwYXltZW50cwoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEPZm9sZF9wdXRfYXNzZXRzAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAyMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQEBGxpc3QIBQskdDAyNTQ5MjY1OAJfMQQIYWlyZHJvcF8IBQskdDAyNTQ5MjY1OAJfMgQEZW5kXwgFCyR0MDI1NDkyNjU4Al8zBAlwYXltZW50c18IBQskdDAyNTQ5MjY1OAJfNAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFBWtfZW5kCQBkAgUDZW5kCQCQAwEIBQFpCHBheW1lbnRzBQNuaWwFBGxpc3QFBHVuaXQBaQEFYWxsb3cDB2FpcmRyb3AGYW1vdW50CGFjY291bnRzAwkBASEBCQEPY2hlY2tfd2hpdGVsaXN0AQgFAWkGY2FsbGVyCQACAQIXQ2FsbGVyIG5vdCBpbiB3aGl0ZWxpc3QDCQAAAgUGYW1vdW50AAAJAAIBAgxXcm9uZyBhbW91bnQDCQAAAgkAkAMBBQhhY2NvdW50cwAACQACAQILTm8gYWNjb3VudHMDCQBmAgkAkAMBBQhhY2NvdW50cwAUCQACAQIRVG9vIG1hbnkgYWNjb3VudHMECyR0MDMwOTgzMjA2CgACJGwFCmluZGljZXNfMjAKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCWCgQFA25pbAUHYWlyZHJvcAUGYW1vdW50BQhhY2NvdW50cwoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKZm9sZF9hbGxvdwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUBARsaXN0CAULJHQwMzA5ODMyMDYCXzEECGFpcmRyb3BfCAULJHQwMzA5ODMyMDYCXzIEB2Ftb3VudF8IBQskdDAzMDk4MzIwNgJfMwQJYWNjb3VudHNfCAULJHQwMzA5ODMyMDYCXzQJAJQKAgUEbGlzdAUEdW5pdAFpAQxhbGxvd19hbnlvbmUCB2FpcmRyb3AGYW1vdW50AwkBASEBCQEPY2hlY2tfd2hpdGVsaXN0AQgFAWkGY2FsbGVyCQACAQIXQ2FsbGVyIG5vdCBpbiB3aGl0ZWxpc3QDCQAAAgUGYW1vdW50AAAJAAIBAgxXcm9uZyBhbW91bnQEA2tleQkArAICBQdhaXJkcm9wAgNfQUEEB2FsbG93ZWQEByRtYXRjaDAJAJ8IAQUDa2V5AwkAAQIFByRtYXRjaDACA0ludAQBagUHJG1hdGNoMAUBagAACQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFA2tleQkAZAIFB2FsbG93ZWQFBmFtb3VudAUDbmlsBQR1bml0AWkBBWNsYWltAgdhaXJkcm9wBmFtb3VudAQJa19hbGxvd2VkCQCsAgIJAKwCAgUHYWlyZHJvcAIDX0FfCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEDmFsbG93ZWRfYW55b25lBAckbWF0Y2gwCQCfCAEJAKwCAgUHYWlyZHJvcAIDX0FBAwkAAQIFByRtYXRjaDACA0ludAQBagUHJG1hdGNoMAUBagAABAdhbGxvd2VkBAckbWF0Y2gwCQCfCAEFCWtfYWxsb3dlZAMJAAECBQckbWF0Y2gwAgNJbnQEAWoFByRtYXRjaDAFAWoFDmFsbG93ZWRfYW55b25lAwkAZgIFBmFtb3VudAUHYWxsb3dlZAkAAgECG0NhbGxlciBub3QgYWxsb3dlZCB0byBjbGFpbQQHa19iZWdpbgkArAICBQdhaXJkcm9wAgZfYmVnaW4EBWtfZW5kCQCsAgIFB2FpcmRyb3ACBF9lbmQEBWJlZ2luBAckbWF0Y2gwCQCfCAEFB2tfYmVnaW4DCQABAgUHJG1hdGNoMAIDSW50BAFqBQckbWF0Y2gwBQFqAAAEA2VuZAQHJG1hdGNoMAkAnwgBBQVrX2VuZAMJAAECBQckbWF0Y2gwAgNJbnQEAWoFByRtYXRjaDAFAWoAAAMDCQBnAgAABQZhbW91bnQGCQBmAgUGYW1vdW50ABQJAAIBAilXcm9uZyBhbW91bnQgKHNob3VsZCBiZSBpbiByYW5nZSAxIC0tIDIwKQMJAGYCBQZhbW91bnQJAGUCBQNlbmQFBWJlZ2luCQACAQISTm8gYXNzZXRzIGluIHN0b2NrBAdpbmRpY2VzCQDMCAIFBWJlZ2luCQDMCAIJAGQCBQViZWdpbgABCQDMCAIJAGQCBQViZWdpbgACCQDMCAIJAGQCBQViZWdpbgADCQDMCAIJAGQCBQViZWdpbgAECQDMCAIJAGQCBQViZWdpbgAFCQDMCAIJAGQCBQViZWdpbgAGCQDMCAIJAGQCBQViZWdpbgAHCQDMCAIJAGQCBQViZWdpbgAICQDMCAIJAGQCBQViZWdpbgAJCQDMCAIJAGQCBQViZWdpbgAKCQDMCAIJAGQCBQViZWdpbgALCQDMCAIJAGQCBQViZWdpbgAMCQDMCAIJAGQCBQViZWdpbgANCQDMCAIJAGQCBQViZWdpbgAOCQDMCAIJAGQCBQViZWdpbgAPCQDMCAIJAGQCBQViZWdpbgAQCQDMCAIJAGQCBQViZWdpbgARCQDMCAIJAGQCBQViZWdpbgASCQDMCAIJAGQCBQViZWdpbgATBQNuaWwECyR0MDQ5MTQ1MDY3CgACJGwFB2luZGljZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCWCgQFA25pbAUGYW1vdW50BQdhaXJkcm9wCQEHQWRkcmVzcwEICAUBaQZjYWxsZXIFYnl0ZXMKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCmZvbGRfY2xhaW0CBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDIwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAQEbGlzdAgFCyR0MDQ5MTQ1MDY3Al8xBAdhbW91bnRfCAULJHQwNDkxNDUwNjcCXzIECGFpcmRyb3BfCAULJHQwNDkxNDUwNjcCXzMECGNsYWltZXJfCAULJHQwNDkxNDUwNjcCXzQJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrX2FsbG93ZWQJAGUCBQdhbGxvd2VkBQZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFB2tfYmVnaW4JAGQCBQViZWdpbgUGYW1vdW50BQNuaWwFBGxpc3QFBHVuaXQAM4WlLw==", "height": 3435854, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: F78fV2znNc3CqRVMumkUZaivBwYTCTktsG1hW3ZS4Rvm Next: none Diff:
OldNewDifferences
153153
154154
155155 @Callable(i)
156+func allow_anyone (airdrop,amount) = if (!(check_whitelist(i.caller)))
157+ then throw("Caller not in whitelist")
158+ else if ((amount == 0))
159+ then throw("Wrong amount")
160+ else {
161+ let key = (airdrop + "_AA")
162+ let allowed = match getInteger(key) {
163+ case j: Int =>
164+ j
165+ case _ =>
166+ 0
167+ }
168+ $Tuple2([IntegerEntry(key, (allowed + amount))], unit)
169+ }
170+
171+
172+
173+@Callable(i)
156174 func claim (airdrop,amount) = {
157175 let k_allowed = ((airdrop + "_A_") + toBase58String(i.caller.bytes))
158- let allowed = getIntegerValue(k_allowed)
176+ let allowed_anyone = match getInteger((airdrop + "_AA")) {
177+ case j: Int =>
178+ j
179+ case _ =>
180+ 0
181+ }
182+ let allowed = match getInteger(k_allowed) {
183+ case j: Int =>
184+ j
185+ case _ =>
186+ allowed_anyone
187+ }
159188 if ((amount > allowed))
160189 then throw("Caller not allowed to claim")
161190 else {
181210 then throw("No assets in stock")
182211 else {
183212 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)]
184- let $t043534506 = {
213+ let $t049145067 = {
185214 let $l = indices
186215 let $s = size($l)
187216 let $acc0 = $Tuple4(nil, amount, airdrop, Address(i.caller.bytes))
195224
196225 $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)
197226 }
198- let list = $t043534506._1
199- let amount_ = $t043534506._2
200- let airdrop_ = $t043534506._3
201- let claimer_ = $t043534506._4
227+ let list = $t049145067._1
228+ let amount_ = $t049145067._2
229+ let airdrop_ = $t049145067._3
230+ let claimer_ = $t049145067._4
202231 $Tuple2(([IntegerEntry(k_allowed, (allowed - amount)), IntegerEntry(k_begin, (begin + amount))] ++ list), unit)
203232 }
204233 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let indices_20 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
55
66 func check_whitelist (caller) = if ((this == caller))
77 then true
88 else match getBoolean(("W_" + toBase58String(caller.bytes))) {
99 case x: Boolean =>
1010 x
1111 case _ =>
1212 false
1313 }
1414
1515
1616 func fold_put_assets (accum,index) = {
1717 let $t0455497 = accum
1818 let list = $t0455497._1
1919 let airdrop = $t0455497._2
2020 let end = $t0455497._3
2121 let payments = $t0455497._4
2222 if ((index >= size(payments)))
2323 then accum
2424 else if ((payments[index].amount != 1))
2525 then throw((("Wrong payment " + toString((index + 1))) + " amount"))
2626 else {
2727 let id = toBase58String(value(payments[index].assetId))
2828 $Tuple4((list ++ [StringEntry(((airdrop + "_X_") + toBase58String(toBytes((end + index)))), id)]), airdrop, end, payments)
2929 }
3030 }
3131
3232
3333 func fold_allow (accum,index) = {
3434 let $t09721017 = accum
3535 let list = $t09721017._1
3636 let airdrop = $t09721017._2
3737 let amount = $t09721017._3
3838 let accounts = $t09721017._4
3939 if ((index >= size(accounts)))
4040 then accum
4141 else {
4242 let key = ((airdrop + "_A_") + accounts[index])
4343 let allowed = match getInteger(key) {
4444 case j: Int =>
4545 j
4646 case _ =>
4747 0
4848 }
4949 $Tuple4((list :+ IntegerEntry(key, (allowed + amount))), airdrop, amount, accounts)
5050 }
5151 }
5252
5353
5454 func fold_claim (accum,index) = {
5555 let $t014131457 = accum
5656 let list = $t014131457._1
5757 let amount = $t014131457._2
5858 let airdrop = $t014131457._3
5959 let claimer = $t014131457._4
6060 if ((0 >= amount))
6161 then accum
6262 else {
6363 let asset_key = ((airdrop + "_X_") + toBase58String(toBytes(index)))
6464 let asset_id = fromBase58String(getStringValue(asset_key))
6565 $Tuple4((list ++ [DeleteEntry(asset_key), ScriptTransfer(claimer, 1, asset_id)]), (amount - 1), airdrop, claimer)
6666 }
6767 }
6868
6969
7070 @Callable(i)
7171 func whitelist_add (user) = if ((this != i.caller))
7272 then throw("Caller is not dApp owner")
7373 else $Tuple2([BooleanEntry(("W_" + user), true)], unit)
7474
7575
7676
7777 @Callable(i)
7878 func whitelist_remove (user) = if ((this != i.caller))
7979 then throw("Caller is not dApp owner")
8080 else $Tuple2([DeleteEntry(("W_" + user))], unit)
8181
8282
8383
8484 @Callable(i)
8585 func put_assets (airdrop) = if (!(check_whitelist(i.caller)))
8686 then throw("Caller not in whitelist")
8787 else if ((size(i.payments) == 0))
8888 then throw("No payment")
8989 else if ((size(i.payments) > 20))
9090 then throw("To many assets")
9191 else {
9292 let k_end = (airdrop + "_end")
9393 let end = match getInteger(k_end) {
9494 case j: Int =>
9595 j
9696 case _ =>
9797 0
9898 }
9999 let $t025492658 = {
100100 let $l = indices_20
101101 let $s = size($l)
102102 let $acc0 = $Tuple4(nil, airdrop, end, i.payments)
103103 func $f0_1 ($a,$i) = if (($i >= $s))
104104 then $a
105105 else fold_put_assets($a, $l[$i])
106106
107107 func $f0_2 ($a,$i) = if (($i >= $s))
108108 then $a
109109 else throw("List size exceeds 20")
110110
111111 $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)
112112 }
113113 let list = $t025492658._1
114114 let airdrop_ = $t025492658._2
115115 let end_ = $t025492658._3
116116 let payments_ = $t025492658._4
117117 $Tuple2(([IntegerEntry(k_end, (end + size(i.payments)))] ++ list), unit)
118118 }
119119
120120
121121
122122 @Callable(i)
123123 func allow (airdrop,amount,accounts) = if (!(check_whitelist(i.caller)))
124124 then throw("Caller not in whitelist")
125125 else if ((amount == 0))
126126 then throw("Wrong amount")
127127 else if ((size(accounts) == 0))
128128 then throw("No accounts")
129129 else if ((size(accounts) > 20))
130130 then throw("Too many accounts")
131131 else {
132132 let $t030983206 = {
133133 let $l = indices_20
134134 let $s = size($l)
135135 let $acc0 = $Tuple4(nil, airdrop, amount, accounts)
136136 func $f0_1 ($a,$i) = if (($i >= $s))
137137 then $a
138138 else fold_allow($a, $l[$i])
139139
140140 func $f0_2 ($a,$i) = if (($i >= $s))
141141 then $a
142142 else throw("List size exceeds 20")
143143
144144 $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)
145145 }
146146 let list = $t030983206._1
147147 let airdrop_ = $t030983206._2
148148 let amount_ = $t030983206._3
149149 let accounts_ = $t030983206._4
150150 $Tuple2(list, unit)
151151 }
152152
153153
154154
155155 @Callable(i)
156+func allow_anyone (airdrop,amount) = if (!(check_whitelist(i.caller)))
157+ then throw("Caller not in whitelist")
158+ else if ((amount == 0))
159+ then throw("Wrong amount")
160+ else {
161+ let key = (airdrop + "_AA")
162+ let allowed = match getInteger(key) {
163+ case j: Int =>
164+ j
165+ case _ =>
166+ 0
167+ }
168+ $Tuple2([IntegerEntry(key, (allowed + amount))], unit)
169+ }
170+
171+
172+
173+@Callable(i)
156174 func claim (airdrop,amount) = {
157175 let k_allowed = ((airdrop + "_A_") + toBase58String(i.caller.bytes))
158- let allowed = getIntegerValue(k_allowed)
176+ let allowed_anyone = match getInteger((airdrop + "_AA")) {
177+ case j: Int =>
178+ j
179+ case _ =>
180+ 0
181+ }
182+ let allowed = match getInteger(k_allowed) {
183+ case j: Int =>
184+ j
185+ case _ =>
186+ allowed_anyone
187+ }
159188 if ((amount > allowed))
160189 then throw("Caller not allowed to claim")
161190 else {
162191 let k_begin = (airdrop + "_begin")
163192 let k_end = (airdrop + "_end")
164193 let begin = match getInteger(k_begin) {
165194 case j: Int =>
166195 j
167196 case _ =>
168197 0
169198 }
170199 let end = match getInteger(k_end) {
171200 case j: Int =>
172201 j
173202 case _ =>
174203 0
175204 }
176205 if (if ((0 >= amount))
177206 then true
178207 else (amount > 20))
179208 then throw("Wrong amount (should be in range 1 -- 20)")
180209 else if ((amount > (end - begin)))
181210 then throw("No assets in stock")
182211 else {
183212 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)]
184- let $t043534506 = {
213+ let $t049145067 = {
185214 let $l = indices
186215 let $s = size($l)
187216 let $acc0 = $Tuple4(nil, amount, airdrop, Address(i.caller.bytes))
188217 func $f0_1 ($a,$i) = if (($i >= $s))
189218 then $a
190219 else fold_claim($a, $l[$i])
191220
192221 func $f0_2 ($a,$i) = if (($i >= $s))
193222 then $a
194223 else throw("List size exceeds 20")
195224
196225 $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)
197226 }
198- let list = $t043534506._1
199- let amount_ = $t043534506._2
200- let airdrop_ = $t043534506._3
201- let claimer_ = $t043534506._4
227+ let list = $t049145067._1
228+ let amount_ = $t049145067._2
229+ let airdrop_ = $t049145067._3
230+ let claimer_ = $t049145067._4
202231 $Tuple2(([IntegerEntry(k_allowed, (allowed - amount)), IntegerEntry(k_begin, (begin + amount))] ++ list), unit)
203232 }
204233 }
205234 }
206235
207236

github/deemru/w8io/3ef1775 
39.70 ms