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:
OldNewDifferences
5252 }
5353
5454
55+func addStringEntry (accum,nextValue) = {
56+ let result = accum
57+ let res2 = BooleanEntry((nextValue + "_whiteListed"), true)
58+ res2
59+ }
60+
61+
5562 @Callable(i)
5663 func init () = [IntegerEntry("Remaining_Tokens", presaletokenamount)]
5764
6168 func addToWhiteList (addressStr) = if ((i.caller != this))
6269 then throw("you are not authorized to perform this operation")
6370 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+ }
6481
6582
6683
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let shinywggid = base58'AFQS5E4ELtxex3iANtWtUU2V2oWJZSo8VVnK8z3VFmqf'
55
66 let adminAddress = addressFromStringValue("3N2fmsxjTetfnJBXEUpnALKcAQeNR4EizQQ")
77
88 let presaletokenamount = 50000000000000
99
1010 let maxTokensperAddress = 1000000000000
1111
1212 let minTokensReserve = 10000000000
1313
1414 let usdN = base58'H7hBudkiAzfMSHz2bQ5Xcp867QVPZSkm1tqpnVoEZGWP'
1515
1616 func tryGetInteger (key) = match getInteger(this, key) {
1717 case b: Int =>
1818 b
1919 case _ =>
2020 0
2121 }
2222
2323
2424 func tryGetBoolean (key) = match getBoolean(this, key) {
2525 case b: Boolean =>
2626 b
2727 case _ =>
2828 false
2929 }
3030
3131
3232 func isGameStarted () = tryGetBoolean("Game_Started")
3333
3434
3535 func isWhiteListed (addressStr) = tryGetBoolean((addressStr + "_whiteListed"))
3636
3737
3838 func calcTokentoRedeem (amnt,addressStr) = {
3939 let startHeight = tryGetInteger("Start_Height")
4040 let redeemed = tryGetInteger((addressStr + "_Redeemed"))
4141 if ((startHeight == 0))
4242 then throw("Redeem time not started")
4343 else {
4444 let blocknum = (1440 * 180)
4545 if ((lastBlock.height > (startHeight + blocknum)))
4646 then (amnt - redeemed)
4747 else {
4848 let perblock = fraction(amnt, 1, blocknum)
4949 (((lastBlock.height - startHeight) * perblock) - redeemed)
5050 }
5151 }
5252 }
5353
5454
55+func addStringEntry (accum,nextValue) = {
56+ let result = accum
57+ let res2 = BooleanEntry((nextValue + "_whiteListed"), true)
58+ res2
59+ }
60+
61+
5562 @Callable(i)
5663 func init () = [IntegerEntry("Remaining_Tokens", presaletokenamount)]
5764
5865
5966
6067 @Callable(i)
6168 func addToWhiteList (addressStr) = if ((i.caller != this))
6269 then throw("you are not authorized to perform this operation")
6370 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+ }
6481
6582
6683
6784 @Callable(i)
6885 func setStartGame (start) = if ((i.caller != this))
6986 then throw("you are not authorized to perform this operation")
7087 else [BooleanEntry("Game_Started", start), IntegerEntry("Start_Height", lastBlock.height)]
7188
7289
7390
7491 @Callable(i)
7592 func reserveTokens () = if (isGameStarted())
7693 then throw("The pre-sale time has finished!")
7794 else {
7895 let addressStr = toString(i.caller)
7996 let wl = isWhiteListed(addressStr)
8097 if (!(wl))
8198 then throw("you are not whitelisted!")
8299 else {
83100 let pmt = i.payments[0]
84101 if ((pmt == pmt))
85102 then {
86103 let amountIn = value(i.payments[0].amount)
87104 if ((amountIn == amountIn))
88105 then {
89106 let assetIn = pmt.assetId
90107 if ((assetIn == assetIn))
91108 then {
92109 let reservedAmount = amountIn
93110 if ((reservedAmount == reservedAmount))
94111 then {
95112 let alreadyReserved = tryGetInteger((addressStr + "_Reserved"))
96113 if ((alreadyReserved == alreadyReserved))
97114 then {
98115 let remainingTokens = tryGetInteger("Remaining_Tokens")
99116 if ((assetIn != usdN))
100117 then throw("ONLY USDN ALLOWED")
101118 else if ((minTokensReserve > amountIn))
102119 then throw((("The minimum amount is " + toString(minTokensReserve)) + " SHEGG"))
103120 else if ((0 >= remainingTokens))
104121 then throw("Presale is out of stock!")
105122 else if ((reservedAmount > remainingTokens))
106123 then throw((("You can reserve only" + toString(remainingTokens)) + " SHEGG"))
107124 else {
108125 let reservable = (maxTokensperAddress - alreadyReserved)
109126 if ((alreadyReserved > reservable))
110127 then throw((("You can reserve max " + toString(reservable)) + " SHEGG"))
111128 else {
112129 let remainingTokens2 = (remainingTokens - reservedAmount)
113130 [IntegerEntry((addressStr + "_Reserved"), (reservedAmount + alreadyReserved)), IntegerEntry("Remaining_Tokens", remainingTokens2), ScriptTransfer(adminAddress, amountIn, usdN)]
114131 }
115132 }
116133 }
117134 else throw("Strict value is not equal to itself.")
118135 }
119136 else throw("Strict value is not equal to itself.")
120137 }
121138 else throw("Strict value is not equal to itself.")
122139 }
123140 else throw("Strict value is not equal to itself.")
124141 }
125142 else throw("Strict value is not equal to itself.")
126143 }
127144 }
128145
129146
130147
131148 @Callable(i)
132149 func redeem () = if (!(isGameStarted()))
133150 then throw("Cannot redeem anything before the game starts!")
134151 else {
135152 let addressStr = toString(i.caller)
136153 let reservedAmount = tryGetInteger((addressStr + "_Reserved"))
137154 let redeemed = tryGetInteger((addressStr + "_Redeemed"))
138155 if ((reservedAmount == 0))
139156 then throw("Nothing to redeem")
140157 else {
141158 let toRedeem = calcTokentoRedeem(reservedAmount, addressStr)
142159 let remaining = (reservedAmount - redeemed)
143160 if ((toRedeem == 0))
144161 then throw("No SHEGG to redeem, you may have redeemed all your SHEGG or you have to wait at least another block")
145162 else if ((remaining >= toRedeem))
146163 then [IntegerEntry((addressStr + "_Redeemed"), (redeemed + toRedeem)), ScriptTransfer(i.caller, toRedeem, shinywggid)]
147164 else throw((("you can redeem max " + toString(remaining)) + " SHEGG"))
148165 }
149166 }
150167
151168

github/deemru/w8io/169f3d6 
60.56 ms