tx · 4qgaWr5UbLwUkLx2hD46bkqHCdCMeE34pJLTBE6xwEtE 3MpNtiPSRSq6NnaQYk38BfWSzZcgAYTyrQ9: -0.01000000 Waves 2022.01.19 16:58 [1885900] smart account 3MpNtiPSRSq6NnaQYk38BfWSzZcgAYTyrQ9 > SELF 0.00000000 Waves
{ "type": 13, "id": "4qgaWr5UbLwUkLx2hD46bkqHCdCMeE34pJLTBE6xwEtE", "fee": 1000000, "feeAssetId": null, "timestamp": 1642600698665, "version": 2, "chainId": 84, "sender": "3MpNtiPSRSq6NnaQYk38BfWSzZcgAYTyrQ9", "senderPublicKey": "HwnFy5MZJ9eyVKF9GSXN8nuA5uT2rcvnVqHw9vCv3DNn", "proofs": [ "U5pwBSGkahowM4xaGNSFZ8ewkJXTh1ZRBoUmm4FkAZXo97jSzBQqxnVjqLv3PAk5CMXxTkDJPYQff4PP4Zs1CWB" ], "script": "base64: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", "height": 1885900, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BmCUFSt1mDwUVQ3Mrsa4hJAoziyPzo5m2J5fdCE9mavb Next: 5REdT2ux4cjPPYzUJKKXtY9Twft5CHmXVrJBcenN4im2 Diff:
Old | New | Differences | |
---|---|---|---|
52 | 52 | } | |
53 | 53 | ||
54 | 54 | ||
55 | + | func addStringEntry (accum,nextValue) = { | |
56 | + | let result = accum | |
57 | + | let res2 = BooleanEntry((nextValue + "_whiteListed"), true) | |
58 | + | res2 | |
59 | + | } | |
60 | + | ||
61 | + | ||
55 | 62 | @Callable(i) | |
56 | 63 | func init () = [IntegerEntry("Remaining_Tokens", presaletokenamount)] | |
57 | 64 | ||
61 | 68 | func addToWhiteList (addressStr) = if ((i.caller != this)) | |
62 | 69 | then throw("you are not authorized to perform this operation") | |
63 | 70 | else [BooleanEntry((addressStr + "_whiteListed"), true)] | |
71 | + | ||
72 | + | ||
73 | + | ||
74 | + | @Callable(i) | |
75 | + | func addToMultipleWhiteList (addresses) = if ((i.caller != this)) | |
76 | + | then throw("you are not authorized to perform this operation") | |
77 | + | else { | |
78 | + | let lsize = size(addresses) | |
79 | + | [BooleanEntry("whitelistWritten", true)] | |
80 | + | } | |
64 | 81 | ||
65 | 82 | ||
66 | 83 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let shinywggid = base58'AFQS5E4ELtxex3iANtWtUU2V2oWJZSo8VVnK8z3VFmqf' | |
5 | 5 | ||
6 | 6 | let adminAddress = addressFromStringValue("3N2fmsxjTetfnJBXEUpnALKcAQeNR4EizQQ") | |
7 | 7 | ||
8 | 8 | let presaletokenamount = 50000000000000 | |
9 | 9 | ||
10 | 10 | let maxTokensperAddress = 1000000000000 | |
11 | 11 | ||
12 | 12 | let minTokensReserve = 10000000000 | |
13 | 13 | ||
14 | 14 | let usdN = base58'H7hBudkiAzfMSHz2bQ5Xcp867QVPZSkm1tqpnVoEZGWP' | |
15 | 15 | ||
16 | 16 | func tryGetInteger (key) = match getInteger(this, key) { | |
17 | 17 | case b: Int => | |
18 | 18 | b | |
19 | 19 | case _ => | |
20 | 20 | 0 | |
21 | 21 | } | |
22 | 22 | ||
23 | 23 | ||
24 | 24 | func tryGetBoolean (key) = match getBoolean(this, key) { | |
25 | 25 | case b: Boolean => | |
26 | 26 | b | |
27 | 27 | case _ => | |
28 | 28 | false | |
29 | 29 | } | |
30 | 30 | ||
31 | 31 | ||
32 | 32 | func isGameStarted () = tryGetBoolean("Game_Started") | |
33 | 33 | ||
34 | 34 | ||
35 | 35 | func isWhiteListed (addressStr) = tryGetBoolean((addressStr + "_whiteListed")) | |
36 | 36 | ||
37 | 37 | ||
38 | 38 | func calcTokentoRedeem (amnt,addressStr) = { | |
39 | 39 | let startHeight = tryGetInteger("Start_Height") | |
40 | 40 | let redeemed = tryGetInteger((addressStr + "_Redeemed")) | |
41 | 41 | if ((startHeight == 0)) | |
42 | 42 | then throw("Redeem time not started") | |
43 | 43 | else { | |
44 | 44 | let blocknum = (1440 * 180) | |
45 | 45 | if ((lastBlock.height > (startHeight + blocknum))) | |
46 | 46 | then (amnt - redeemed) | |
47 | 47 | else { | |
48 | 48 | let perblock = fraction(amnt, 1, blocknum) | |
49 | 49 | (((lastBlock.height - startHeight) * perblock) - redeemed) | |
50 | 50 | } | |
51 | 51 | } | |
52 | 52 | } | |
53 | 53 | ||
54 | 54 | ||
55 | + | func addStringEntry (accum,nextValue) = { | |
56 | + | let result = accum | |
57 | + | let res2 = BooleanEntry((nextValue + "_whiteListed"), true) | |
58 | + | res2 | |
59 | + | } | |
60 | + | ||
61 | + | ||
55 | 62 | @Callable(i) | |
56 | 63 | func init () = [IntegerEntry("Remaining_Tokens", presaletokenamount)] | |
57 | 64 | ||
58 | 65 | ||
59 | 66 | ||
60 | 67 | @Callable(i) | |
61 | 68 | func addToWhiteList (addressStr) = if ((i.caller != this)) | |
62 | 69 | then throw("you are not authorized to perform this operation") | |
63 | 70 | else [BooleanEntry((addressStr + "_whiteListed"), true)] | |
71 | + | ||
72 | + | ||
73 | + | ||
74 | + | @Callable(i) | |
75 | + | func addToMultipleWhiteList (addresses) = if ((i.caller != this)) | |
76 | + | then throw("you are not authorized to perform this operation") | |
77 | + | else { | |
78 | + | let lsize = size(addresses) | |
79 | + | [BooleanEntry("whitelistWritten", true)] | |
80 | + | } | |
64 | 81 | ||
65 | 82 | ||
66 | 83 | ||
67 | 84 | @Callable(i) | |
68 | 85 | func setStartGame (start) = if ((i.caller != this)) | |
69 | 86 | then throw("you are not authorized to perform this operation") | |
70 | 87 | else [BooleanEntry("Game_Started", start), IntegerEntry("Start_Height", lastBlock.height)] | |
71 | 88 | ||
72 | 89 | ||
73 | 90 | ||
74 | 91 | @Callable(i) | |
75 | 92 | func reserveTokens () = if (isGameStarted()) | |
76 | 93 | then throw("The pre-sale time has finished!") | |
77 | 94 | else { | |
78 | 95 | let addressStr = toString(i.caller) | |
79 | 96 | let wl = isWhiteListed(addressStr) | |
80 | 97 | if (!(wl)) | |
81 | 98 | then throw("you are not whitelisted!") | |
82 | 99 | else { | |
83 | 100 | let pmt = i.payments[0] | |
84 | 101 | if ((pmt == pmt)) | |
85 | 102 | then { | |
86 | 103 | let amountIn = value(i.payments[0].amount) | |
87 | 104 | if ((amountIn == amountIn)) | |
88 | 105 | then { | |
89 | 106 | let assetIn = pmt.assetId | |
90 | 107 | if ((assetIn == assetIn)) | |
91 | 108 | then { | |
92 | 109 | let reservedAmount = amountIn | |
93 | 110 | if ((reservedAmount == reservedAmount)) | |
94 | 111 | then { | |
95 | 112 | let alreadyReserved = tryGetInteger((addressStr + "_Reserved")) | |
96 | 113 | if ((alreadyReserved == alreadyReserved)) | |
97 | 114 | then { | |
98 | 115 | let remainingTokens = tryGetInteger("Remaining_Tokens") | |
99 | 116 | if ((assetIn != usdN)) | |
100 | 117 | then throw("ONLY USDN ALLOWED") | |
101 | 118 | else if ((minTokensReserve > amountIn)) | |
102 | 119 | then throw((("The minimum amount is " + toString(minTokensReserve)) + " SHEGG")) | |
103 | 120 | else if ((0 >= remainingTokens)) | |
104 | 121 | then throw("Presale is out of stock!") | |
105 | 122 | else if ((reservedAmount > remainingTokens)) | |
106 | 123 | then throw((("You can reserve only" + toString(remainingTokens)) + " SHEGG")) | |
107 | 124 | else { | |
108 | 125 | let reservable = (maxTokensperAddress - alreadyReserved) | |
109 | 126 | if ((alreadyReserved > reservable)) | |
110 | 127 | then throw((("You can reserve max " + toString(reservable)) + " SHEGG")) | |
111 | 128 | else { | |
112 | 129 | let remainingTokens2 = (remainingTokens - reservedAmount) | |
113 | 130 | [IntegerEntry((addressStr + "_Reserved"), (reservedAmount + alreadyReserved)), IntegerEntry("Remaining_Tokens", remainingTokens2), ScriptTransfer(adminAddress, amountIn, usdN)] | |
114 | 131 | } | |
115 | 132 | } | |
116 | 133 | } | |
117 | 134 | else throw("Strict value is not equal to itself.") | |
118 | 135 | } | |
119 | 136 | else throw("Strict value is not equal to itself.") | |
120 | 137 | } | |
121 | 138 | else throw("Strict value is not equal to itself.") | |
122 | 139 | } | |
123 | 140 | else throw("Strict value is not equal to itself.") | |
124 | 141 | } | |
125 | 142 | else throw("Strict value is not equal to itself.") | |
126 | 143 | } | |
127 | 144 | } | |
128 | 145 | ||
129 | 146 | ||
130 | 147 | ||
131 | 148 | @Callable(i) | |
132 | 149 | func redeem () = if (!(isGameStarted())) | |
133 | 150 | then throw("Cannot redeem anything before the game starts!") | |
134 | 151 | else { | |
135 | 152 | let addressStr = toString(i.caller) | |
136 | 153 | let reservedAmount = tryGetInteger((addressStr + "_Reserved")) | |
137 | 154 | let redeemed = tryGetInteger((addressStr + "_Redeemed")) | |
138 | 155 | if ((reservedAmount == 0)) | |
139 | 156 | then throw("Nothing to redeem") | |
140 | 157 | else { | |
141 | 158 | let toRedeem = calcTokentoRedeem(reservedAmount, addressStr) | |
142 | 159 | let remaining = (reservedAmount - redeemed) | |
143 | 160 | if ((toRedeem == 0)) | |
144 | 161 | then throw("No SHEGG to redeem, you may have redeemed all your SHEGG or you have to wait at least another block") | |
145 | 162 | else if ((remaining >= toRedeem)) | |
146 | 163 | then [IntegerEntry((addressStr + "_Redeemed"), (redeemed + toRedeem)), ScriptTransfer(i.caller, toRedeem, shinywggid)] | |
147 | 164 | else throw((("you can redeem max " + toString(remaining)) + " SHEGG")) | |
148 | 165 | } | |
149 | 166 | } | |
150 | 167 | ||
151 | 168 |
github/deemru/w8io/169f3d6 60.56 ms ◑![]()