tx · 3sMMGG2ovWWdum6tZJvPVUGRu4xYk4KbPd2aTRH2zeU6

3PPhk52YuwKTFT2U865di1Pepj4bFHxubFY:  -0.03800000 Waves

2022.11.08 11:25 [3373272] smart account 3PPhk52YuwKTFT2U865di1Pepj4bFHxubFY > SELF 0.00000000 Waves

{ "type": 13, "id": "3sMMGG2ovWWdum6tZJvPVUGRu4xYk4KbPd2aTRH2zeU6", "fee": 3800000, "feeAssetId": null, "timestamp": 1667895930494, "version": 2, "chainId": 87, "sender": "3PPhk52YuwKTFT2U865di1Pepj4bFHxubFY", "senderPublicKey": "5EhD7NvoyShNGdN6g6ps2X6FieUun2o7TTggY1CL9wH9", "proofs": [ "APFwHT7RiUdLt2NWB5d4CwR41kmh9Y1d9T1z8AMubrXMMBZTkxVDR9U6TYrrUeKKpCbF2Fihc9p45EjKXZBKr4E" ], "script": "base64:BgIeCAISAwoBCBIDCgEIEgMKAQgSBQoDCAgBEgQKAggBAgEPY2hlY2tfd2hpdGVsaXN0AQZjYWxsZXIDCQAAAgUEdGhpcwUGY2FsbGVyBgQHJG1hdGNoMAkAoAgBCQCsAgICAldfCQDYBAEIBQZjYWxsZXIFYnl0ZXMDCQABAgUHJG1hdGNoMAIHQm9vbGVhbgQBeAUHJG1hdGNoMAUBeAcBCmNsYWltX2ZvbGQCBWFjY3VtBWluZGV4BAkkdDAzNjU0MDkFBWFjY3VtBARsaXN0CAUJJHQwMzY1NDA5Al8xBAZhbW91bnQIBQkkdDAzNjU0MDkCXzIEB2FpcmRyb3AIBQkkdDAzNjU0MDkCXzMEB2NsYWltZXIIBQkkdDAzNjU0MDkCXzQDCQBnAgAABQZhbW91bnQJAJYKBAUEbGlzdAAABQdhaXJkcm9wBQdjbGFpbWVyBAlhc3NldF9rZXkJAKwCAgkArAICBQdhaXJkcm9wAgNfWF8JANgEAQkAmgMBBQVpbmRleAQIYXNzZXRfaWQJANkEAQkBEUBleHRyTmF0aXZlKDEwNTgpAQUJYXNzZXRfa2V5CQCWCgQJAM4IAgUEbGlzdAkAzAgCCQELRGVsZXRlRW50cnkBBQlhc3NldF9rZXkJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUHY2xhaW1lcgABBQhhc3NldF9pZAUDbmlsCQBlAgUGYW1vdW50AAEFB2FpcmRyb3AFB2NsYWltZXIFAWkBDXdoaXRlbGlzdF9hZGQBBHVzZXIDCQECIT0CBQR0aGlzCAUBaQZjYWxsZXIJAAIBAhhDYWxsZXIgaXMgbm90IGRBcHAgb3duZXIJAJQKAgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkArAICAgJXXwUEdXNlcgYFA25pbAUEdW5pdAFpARB3aGl0ZWxpc3RfcmVtb3ZlAQR1c2VyAwkBAiE9AgUEdGhpcwgFAWkGY2FsbGVyCQACAQIYQ2FsbGVyIGlzIG5vdCBkQXBwIG93bmVyCQCUCgIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICAgJXXwUEdXNlcgUDbmlsBQR1bml0AWkBCXB1dF9hc3NldAEHYWlyZHJvcAMJAQEhAQkBD2NoZWNrX3doaXRlbGlzdAEIBQFpBmNhbGxlcgkAAgECF0NhbGxlciBub3QgaW4gd2hpdGVsaXN0AwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQISV3JvbmcgcGF5bWVudCBzaXplAwkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQAAQkAAgECFFdyb25nIHBheW1lbnQgYW1vdW50BANrZXkJAKwCAgUHYWlyZHJvcAIEX2VuZAQDZW5kBAckbWF0Y2gwCQCfCAEFA2tleQMJAAECBQckbWF0Y2gwAgNJbnQEAWoFByRtYXRjaDAFAWoAAAQCaWQJANgEAQkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFA2tleQkAZAIFA2VuZAABCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICBQdhaXJkcm9wAgNfWF8JANgEAQkAmgMBBQNlbmQFAmlkBQNuaWwFBHVuaXQBaQEFYWxsb3cDB2FpcmRyb3AHYWNjb3VudAZhbW91bnQDCQEBIQEJAQ9jaGVja193aGl0ZWxpc3QBCAUBaQZjYWxsZXIJAAIBAhdDYWxsZXIgbm90IGluIHdoaXRlbGlzdAMJAGcCAAAFBmFtb3VudAkAAgECDFdyb25nIGFtb3VudAQDa2V5CQCsAgIJAKwCAgUHYWlyZHJvcAIDX0FfBQdhY2NvdW50BAdhbGxvd2VkBAckbWF0Y2gwCQCfCAEFA2tleQMJAAECBQckbWF0Y2gwAgNJbnQEAWoFByRtYXRjaDAFAWoAAAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQNrZXkJAGQCBQdhbGxvd2VkBQZhbW91bnQFA25pbAUEdW5pdAFpAQVjbGFpbQIHYWlyZHJvcAZhbW91bnQECWtfYWxsb3dlZAkArAICCQCsAgIFB2FpcmRyb3ACA19BXwkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBAdhbGxvd2VkCQERQGV4dHJOYXRpdmUoMTA1NSkBBQlrX2FsbG93ZWQDCQBmAgUGYW1vdW50BQdhbGxvd2VkCQACAQIbQ2FsbGVyIG5vdCBhbGxvd2VkIHRvIGNsYWltBAdrX2JlZ2luCQCsAgIFB2FpcmRyb3ACBl9iZWdpbgQFa19lbmQJAKwCAgUHYWlyZHJvcAIEX2VuZAQFYmVnaW4EByRtYXRjaDAJAJ8IAQUHa19iZWdpbgMJAAECBQckbWF0Y2gwAgNJbnQEAWoFByRtYXRjaDAFAWoAAAQDZW5kBAckbWF0Y2gwCQCfCAEFBWtfZW5kAwkAAQIFByRtYXRjaDACA0ludAQBagUHJG1hdGNoMAUBagAAAwMJAGcCAAAFBmFtb3VudAYJAGYCBQZhbW91bnQAFAkAAgECKVdyb25nIGFtb3VudCAoc2hvdWxkIGJlIGluIHJhbmdlIDEgLS0gMjApAwkAZgIFBmFtb3VudAkAZQIFA2VuZAUFYmVnaW4JAAIBAhJObyBhc3NldHMgaW4gc3RvY2sEB2luZGljZXMJAMwIAgUFYmVnaW4JAMwIAgkAZAIFBWJlZ2luAAEJAMwIAgkAZAIFBWJlZ2luAAIJAMwIAgkAZAIFBWJlZ2luAAMJAMwIAgkAZAIFBWJlZ2luAAQJAMwIAgkAZAIFBWJlZ2luAAUJAMwIAgkAZAIFBWJlZ2luAAYJAMwIAgkAZAIFBWJlZ2luAAcJAMwIAgkAZAIFBWJlZ2luAAgJAMwIAgkAZAIFBWJlZ2luAAkJAMwIAgkAZAIFBWJlZ2luAAoJAMwIAgkAZAIFBWJlZ2luAAsJAMwIAgkAZAIFBWJlZ2luAAwJAMwIAgkAZAIFBWJlZ2luAA0JAMwIAgkAZAIFBWJlZ2luAA4JAMwIAgkAZAIFBWJlZ2luAA8JAMwIAgkAZAIFBWJlZ2luABAJAMwIAgkAZAIFBWJlZ2luABEJAMwIAgkAZAIFBWJlZ2luABIJAMwIAgkAZAIFBWJlZ2luABMFA25pbAQLJHQwMzI1ODM0MTEKAAIkbAUHaW5kaWNlcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAUDbmlsBQZhbW91bnQFB2FpcmRyb3AJAQdBZGRyZXNzAQgIBQFpBmNhbGxlcgVieXRlcwoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKY2xhaW1fZm9sZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUBARsaXN0CAULJHQwMzI1ODM0MTECXzEEB2Ftb3VudF8IBQskdDAzMjU4MzQxMQJfMgQIYWlyZHJvcF8IBQskdDAzMjU4MzQxMQJfMwQIY2xhaW1lcl8IBQskdDAzMjU4MzQxMQJfNAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtfYWxsb3dlZAkAZQIFB2FsbG93ZWQFBmFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUHa19iZWdpbgkAZAIFBWJlZ2luBQZhbW91bnQFA25pbAUEbGlzdAUEdW5pdACgVNj5", "height": 3373272, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: C4RVZH5Q2a1myQH3R5UTvwbHQTRZaM4Rg8br246edqC6 Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 6 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+func check_whitelist (caller) = if ((this == caller))
5+ then true
6+ else match getBoolean(("W_" + toBase58String(caller.bytes))) {
7+ case x: Boolean =>
8+ x
9+ case _ =>
10+ false
11+ }
12+
13+
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
20+ if ((0 >= amount))
21+ then $Tuple4(list, 0, airdrop, claimer)
22+ else {
23+ let asset_key = ((airdrop + "_X_") + toBase58String(toBytes(index)))
24+ let asset_id = fromBase58String(getStringValue(asset_key))
25+ $Tuple4((list ++ [DeleteEntry(asset_key), ScriptTransfer(claimer, 1, asset_id)]), (amount - 1), airdrop, claimer)
26+ }
27+ }
28+
29+
30+@Callable(i)
31+func whitelist_add (user) = if ((this != i.caller))
32+ then throw("Caller is not dApp owner")
33+ else $Tuple2([BooleanEntry(("W_" + user), true)], unit)
34+
35+
36+
37+@Callable(i)
38+func whitelist_remove (user) = if ((this != i.caller))
39+ then throw("Caller is not dApp owner")
40+ else $Tuple2([DeleteEntry(("W_" + user))], unit)
41+
42+
43+
44+@Callable(i)
45+func put_asset (airdrop) = if (!(check_whitelist(i.caller)))
46+ 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")
51+ 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)
61+ }
62+
63+
64+
65+@Callable(i)
66+func allow (airdrop,account,amount) = if (!(check_whitelist(i.caller)))
67+ then throw("Caller not in whitelist")
68+ else if ((0 >= amount))
69+ 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+ }
80+
81+
82+
83+@Callable(i)
84+func claim (airdrop,amount) = {
85+ let k_allowed = ((airdrop + "_A_") + toBase58String(i.caller.bytes))
86+ let allowed = getIntegerValue(k_allowed)
87+ if ((amount > allowed))
88+ then throw("Caller not allowed to claim")
89+ else {
90+ let k_begin = (airdrop + "_begin")
91+ let k_end = (airdrop + "_end")
92+ let begin = match getInteger(k_begin) {
93+ case j: Int =>
94+ j
95+ case _ =>
96+ 0
97+ }
98+ let end = match getInteger(k_end) {
99+ case j: Int =>
100+ j
101+ case _ =>
102+ 0
103+ }
104+ if (if ((0 >= amount))
105+ then true
106+ else (amount > 20))
107+ then throw("Wrong amount (should be in range 1 -- 20)")
108+ else if ((amount > (end - begin)))
109+ then throw("No assets in stock")
110+ else {
111+ 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 = {
113+ let $l = indices
114+ let $s = size($l)
115+ let $acc0 = $Tuple4(nil, amount, airdrop, Address(i.caller.bytes))
116+ func $f0_1 ($a,$i) = if (($i >= $s))
117+ then $a
118+ else claim_fold($a, $l[$i])
119+
120+ func $f0_2 ($a,$i) = if (($i >= $s))
121+ then $a
122+ else throw("List size exceeds 20")
123+
124+ $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)
125+ }
126+ let list = $t032583411._1
127+ let amount_ = $t032583411._2
128+ let airdrop_ = $t032583411._3
129+ let claimer_ = $t032583411._4
130+ $Tuple2(([IntegerEntry(k_allowed, (allowed - amount)), IntegerEntry(k_begin, (begin + amount))] ++ list), unit)
131+ }
132+ }
133+ }
134+
135+

github/deemru/w8io/3ef1775 
20.18 ms