2022.02.11 19:00 [2984244] smart account 3PA7Ltf9QeX5H95FoGqgsPnyRNsa1Q7a8A8 > SELF 0.00000000 Waves

{ "type": 13, "id": "GfxBcgXRaUn1rgorQQABejWpi89ohBtFu75xoK3Z8dSF", "fee": 1000000, "feeAssetId": null, "timestamp": 1644595311846, "version": 2, "chainId": 87, "sender": "3PA7Ltf9QeX5H95FoGqgsPnyRNsa1Q7a8A8", "senderPublicKey": "8znHEexmcGCGdFwoyxjvgTj4YUke8B5whsVWAtXrohML", "proofs": [ "3271scRy1YhtkNBiZQ5SWQBxvMg4GUTyf1oVjoKJjVgkoR4nNNcvU22RAs5EUNknUTR3KkQing5W6j52UFeVJYva" ], "script": "base64:AAIFAAAAAAAAABUIAhIDCgEIEgMKARgSAwoBBBIAEgAAAAARAAAAAApzaGlueXdnZ2lkAQAAACCGKLEZX4aTB7txPBRrEZbfW42EKb/sqd2HQ6Im8j0hDgAAAAAMYWRtaW5BZGRyZXNzCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABAgAAACMzUDlvdFM1cFBCN0JDa3BWR29wdkVDZGFSQVdONGc4VjdTQgAAAAATbWF4VG9rZW5zcGVyQWRkcmVzcwAAAAkYTnKgAAAAAAAQbWluVG9rZW5zUmVzZXJ2ZQAAAAAAO5rKAAAAAAAEdXNkTgEAAAAgtiYpwwT1zlORpA5LdSQvZIxRsfrfr1QpvUjSHSqyqtEAAAAAA0VnZwEAAAAgo59/TyNyUdEs4iGSYohNDAvz6iJugdWv/AuTF85tsckAAAAACGFzc2V0SWRzCQAETAAAAAIFAAAABHVuaXQJAARMAAAAAgUAAAAEdXNkTgkABEwAAAACBQAAAANFZ2cFAAAAA25pbAAAAAANQXNzZXRzV2VpZ2h0cwkABEwAAAACAAAAAAAAAAAUCQAETAAAAAIAAAAAAAAAAA8JAARMAAAAAgAAAAAAAAAACgUAAAADbmlsAAAAAAhEZWNpbWFscwkABEwAAAACAAAAAAAAAAAICQAETAAAAAIAAAAAAAAAAAYJAARMAAAAAgAAAAAAAAAACAUAAAADbmlsAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWIFAAAAByRtYXRjaDAFAAAAAWIAAAAAAAAAAAABAAAADXRyeUdldEJvb2xlYW4AAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABBsAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAB0Jvb2xlYW4EAAAAAWIFAAAAByRtYXRjaDAFAAAAAWIHAQAAAA5nZXRBc3NldFN0cmluZwAAAAEAAAAHYXNzZXRJZAQAAAAHJG1hdGNoMAUAAAAHYXNzZXRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAABYgUAAAAHJG1hdGNoMAkAAlgAAAABBQAAAAFiAgAAAAVXQVZFUwEAAAASY2FsY3VsYXRlVXNkblZhbHVlAAAAAgAAAAdhc3NldElkAAAABmFtb3VudAQAAAAKdXNkbldlaWdodAkAAZEAAAACBQAAAA1Bc3NldHNXZWlnaHRzCQEAAAAFdmFsdWUAAAABCQAETwAAAAIFAAAACGFzc2V0SWRzBQAAAAR1c2ROBAAAAAthc3NldFdlaWdodAkAAZEAAAACBQAAAA1Bc3NldHNXZWlnaHRzCQEAAAAFdmFsdWUAAAABCQAETwAAAAIFAAAACGFzc2V0SWRzBQAAAAdhc3NldElkBAAAAA1wdXp6bGVhZGRyZXNzCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFXgs7czeV18JqlDG280GWIiBicvr2VMP+zBAAAAAt1c2RuQmFsYW5jZQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAANcHV6emxlYWRkcmVzcwkAASwAAAACCQABLAAAAAICAAAAB2dsb2JhbF8JAQAAAA5nZXRBc3NldFN0cmluZwAAAAEFAAAABHVzZE4CAAAACF9iYWxhbmNlBAAAAAhhQmFsYW5jZQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAANcHV6emxlYWRkcmVzcwkAASwAAAACCQABLAAAAAICAAAAB2dsb2JhbF8JAQAAAA5nZXRBc3NldFN0cmluZwAAAAEFAAAAB2Fzc2V0SWQCAAAACF9iYWxhbmNlCQAAawAAAAMFAAAABmFtb3VudAkAAGkAAAACBQAAAAt1c2RuQmFsYW5jZQUAAAAKdXNkbldlaWdodAkAAGkAAAACBQAAAAhhQmFsYW5jZQUAAAALYXNzZXRXZWlnaHQBAAAADWlzR2FtZVN0YXJ0ZWQAAAAACQEAAAANdHJ5R2V0Qm9vbGVhbgAAAAECAAAADEdhbWVfU3RhcnRlZAEAAAANaXNXaGl0ZUxpc3RlZAAAAAEAAAAKYWRkcmVzc1N0cgkBAAAADXRyeUdldEJvb2xlYW4AAAABCQABLAAAAAIFAAAACmFkZHJlc3NTdHICAAAADF93aGl0ZUxpc3RlZAEAAAARY2FsY1Rva2VudG9SZWRlZW0AAAACAAAABGFtbnQAAAAKYWRkcmVzc1N0cgQA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", "height": 2984244, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HxMaaGg4RoM5xZhe96B76MviZzVer8FxzCnZP4Lt3ZEo Next: 3aBMQoPKjJ67CqnaTh2KA8kNFutXYK5mAdNMp5TM2nkC Diff:
OldNewDifferences
153153 if ((alreadyReserved == alreadyReserved))
154154 then {
155155 let globalreserved = tryGetInteger("global_reserved")
156- let remainingTokens = (assetBalance(this, shinywggid) - globalreserved)
156+ let globalRemainingTokens = (assetBalance(this, shinywggid) - globalreserved)
157157 if ((minTokensReserve > convertedAmount))
158158 then throw((("The minimum amount is " + toString(fraction(minTokensReserve, 1, 100000000))) + " $HEG"))
159- else if ((0 >= remainingTokens))
159+ else if ((0 >= globalRemainingTokens))
160160 then throw("Presale is out of stock!")
161- else if ((convertedAmount > remainingTokens))
162- then throw((("You can reserve only" + toString(fraction(remainingTokens, 1, 100000000))) + " $HEG"))
161+ else if ((convertedAmount > globalRemainingTokens))
162+ then throw((("You can reserve only" + toString(fraction(globalRemainingTokens, 1, 100000000))) + " $HEG"))
163163 else {
164164 let reservable = (maxTokensperAddress - alreadyReserved)
165165 if ((convertedAmount > reservable))
166166 then throw((("You can reserve max " + toString(fraction(reservable, 1, 100000000))) + " $HEG"))
167167 else {
168- let remainingTokens2 = (remainingTokens - convertedAmount)
169-[IntegerEntry("global_reserved", (globalreserved - convertedAmount)), IntegerEntry((addressStr + "_Reserved"), (convertedAmount + alreadyReserved)), ScriptTransfer(adminAddress, amountIn, pmt.assetId)]
168+ let globalRemainingTokens2 = (globalRemainingTokens - convertedAmount)
169+[IntegerEntry("global_reserved", globalRemainingTokens2), IntegerEntry((addressStr + "_Reserved"), (convertedAmount + alreadyReserved)), ScriptTransfer(adminAddress, amountIn, pmt.assetId)]
170170 }
171171 }
172172 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let shinywggid = base58'A2hcw6RV23Fc8Y8FNfV35Sq5QeS9Tgp6n8hbrESiRvXX'
55
66 let adminAddress = addressFromStringValue("3P9otS5pPB7BCkpVGopvECdaRAWN4g8V7SB")
77
88 let maxTokensperAddress = 10000000000000
99
1010 let minTokensReserve = 1000000000
1111
1212 let usdN = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
1313
1414 let Egg = base58'C1iWsKGqLwjHUndiQ7iXpdmPum9PeCDFfyXBdJJosDRS'
1515
1616 let assetIds = [unit, usdN, Egg]
1717
1818 let AssetsWeights = [20, 15, 10]
1919
2020 let Decimals = [8, 6, 8]
2121
2222 func tryGetInteger (key) = match getInteger(this, key) {
2323 case b: Int =>
2424 b
2525 case _ =>
2626 0
2727 }
2828
2929
3030 func tryGetBoolean (key) = match getBoolean(this, key) {
3131 case b: Boolean =>
3232 b
3333 case _ =>
3434 false
3535 }
3636
3737
3838 func getAssetString (assetId) = match assetId {
3939 case b: ByteVector =>
4040 toBase58String(b)
4141 case _ =>
4242 "WAVES"
4343 }
4444
4545
4646 func calculateUsdnValue (assetId,amount) = {
4747 let usdnWeight = AssetsWeights[value(indexOf(assetIds, usdN))]
4848 let assetWeight = AssetsWeights[value(indexOf(assetIds, assetId))]
4949 let puzzleaddress = Address(base58'3PDrYPF6izza2sXWffzTPF7e2Fcir2CMpki')
5050 let usdnBalance = getIntegerValue(puzzleaddress, (("global_" + getAssetString(usdN)) + "_balance"))
5151 let aBalance = getIntegerValue(puzzleaddress, (("global_" + getAssetString(assetId)) + "_balance"))
5252 fraction(amount, (usdnBalance / usdnWeight), (aBalance / assetWeight))
5353 }
5454
5555
5656 func isGameStarted () = tryGetBoolean("Game_Started")
5757
5858
5959 func isWhiteListed (addressStr) = tryGetBoolean((addressStr + "_whiteListed"))
6060
6161
6262 func calcTokentoRedeem (amnt,addressStr) = {
6363 let startHeight = tryGetInteger("Start_Height")
6464 let redeemed = tryGetInteger((addressStr + "_Redeemed"))
6565 if ((startHeight == 0))
6666 then throw("Redeem time not started")
6767 else {
6868 let blocknum = (1440 * 180)
6969 if ((lastBlock.height > (startHeight + blocknum)))
7070 then (amnt - redeemed)
7171 else {
7272 let perblock = fraction(amnt, 1, blocknum)
7373 (((lastBlock.height - startHeight) * perblock) - redeemed)
7474 }
7575 }
7676 }
7777
7878
7979 func addStringEntry (accum,nextValue) = (accum :+ BooleanEntry((nextValue + "_whiteListed"), true))
8080
8181
8282 @Callable(i)
8383 func addToWhiteList (addressStr) = if ((i.caller != this))
8484 then throw("you are not authorized to perform this operation")
8585 else [BooleanEntry((addressStr + "_whiteListed"), true)]
8686
8787
8888
8989 @Callable(i)
9090 func addToMultipleWhiteList (addresses) = if ((i.caller != this))
9191 then throw("you are not authorized to perform this operation")
9292 else {
9393 let lsize = size(addresses)
9494 if ((lsize > 10))
9595 then throw("you can insert max 10 addresses per time")
9696 else ({
9797 let $l = addresses
9898 let $s = size($l)
9999 let $acc0 = nil
100100 func $f0_1 ($a,$i) = if (($i >= $s))
101101 then $a
102102 else addStringEntry($a, $l[$i])
103103
104104 func $f0_2 ($a,$i) = if (($i >= $s))
105105 then $a
106106 else throw("List size exceeds 10")
107107
108108 $f0_2($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)
109109 } :+ BooleanEntry("whitelistWritten", true))
110110 }
111111
112112
113113
114114 @Callable(i)
115115 func setStartGame (start) = if ((i.caller != this))
116116 then throw("you are not authorized to perform this operation")
117117 else [BooleanEntry("Game_Started", start), IntegerEntry("Start_Height", lastBlock.height)]
118118
119119
120120
121121 @Callable(i)
122122 func reserveTokens () = if (isGameStarted())
123123 then throw("The pre-sale time has finished!")
124124 else {
125125 let addressStr = toString(i.caller)
126126 let wl = isWhiteListed(addressStr)
127127 if (!(wl))
128128 then throw("you are not whitelisted!")
129129 else {
130130 let pmt = i.payments[0]
131131 if ((pmt == pmt))
132132 then {
133133 let amountIn = value(i.payments[0].amount)
134134 if ((amountIn == amountIn))
135135 then {
136136 let assetIn = pmt.assetId
137137 if ((assetIn == assetIn))
138138 then if (!(containsElement(assetIds, assetIn)))
139139 then throw("ONLY USDN, WAVES and EGGS ALLOWED")
140140 else {
141141 let index = indexOf(assetIds, assetIn)
142142 let dec = Decimals[value(index)]
143143 let diff = (8 - dec)
144144 let conv = pow(10, 0, diff, 0, 0, FLOOR)
145145 let mult = calculateUsdnValue(pmt.assetId, pow(10, 0, dec, 0, 0, FLOOR))
146146 let reservedAmount = (amountIn * conv)
147147 if ((reservedAmount == reservedAmount))
148148 then {
149149 let convertedAmount = fraction(reservedAmount, mult, 1000000)
150150 if ((convertedAmount == convertedAmount))
151151 then {
152152 let alreadyReserved = tryGetInteger((addressStr + "_Reserved"))
153153 if ((alreadyReserved == alreadyReserved))
154154 then {
155155 let globalreserved = tryGetInteger("global_reserved")
156- let remainingTokens = (assetBalance(this, shinywggid) - globalreserved)
156+ let globalRemainingTokens = (assetBalance(this, shinywggid) - globalreserved)
157157 if ((minTokensReserve > convertedAmount))
158158 then throw((("The minimum amount is " + toString(fraction(minTokensReserve, 1, 100000000))) + " $HEG"))
159- else if ((0 >= remainingTokens))
159+ else if ((0 >= globalRemainingTokens))
160160 then throw("Presale is out of stock!")
161- else if ((convertedAmount > remainingTokens))
162- then throw((("You can reserve only" + toString(fraction(remainingTokens, 1, 100000000))) + " $HEG"))
161+ else if ((convertedAmount > globalRemainingTokens))
162+ then throw((("You can reserve only" + toString(fraction(globalRemainingTokens, 1, 100000000))) + " $HEG"))
163163 else {
164164 let reservable = (maxTokensperAddress - alreadyReserved)
165165 if ((convertedAmount > reservable))
166166 then throw((("You can reserve max " + toString(fraction(reservable, 1, 100000000))) + " $HEG"))
167167 else {
168- let remainingTokens2 = (remainingTokens - convertedAmount)
169-[IntegerEntry("global_reserved", (globalreserved - convertedAmount)), IntegerEntry((addressStr + "_Reserved"), (convertedAmount + alreadyReserved)), ScriptTransfer(adminAddress, amountIn, pmt.assetId)]
168+ let globalRemainingTokens2 = (globalRemainingTokens - convertedAmount)
169+[IntegerEntry("global_reserved", globalRemainingTokens2), IntegerEntry((addressStr + "_Reserved"), (convertedAmount + alreadyReserved)), ScriptTransfer(adminAddress, amountIn, pmt.assetId)]
170170 }
171171 }
172172 }
173173 else throw("Strict value is not equal to itself.")
174174 }
175175 else throw("Strict value is not equal to itself.")
176176 }
177177 else throw("Strict value is not equal to itself.")
178178 }
179179 else throw("Strict value is not equal to itself.")
180180 }
181181 else throw("Strict value is not equal to itself.")
182182 }
183183 else throw("Strict value is not equal to itself.")
184184 }
185185 }
186186
187187
188188
189189 @Callable(i)
190190 func redeem () = if (!(isGameStarted()))
191191 then throw("Cannot redeem anything before the game starts!")
192192 else {
193193 let addressStr = toString(i.caller)
194194 let reservedAmount = tryGetInteger((addressStr + "_Reserved"))
195195 let redeemed = tryGetInteger((addressStr + "_Redeemed"))
196196 if ((reservedAmount == 0))
197197 then throw("Nothing to redeem")
198198 else {
199199 let toRedeem = calcTokentoRedeem(reservedAmount, addressStr)
200200 let remaining = (reservedAmount - redeemed)
201201 if ((toRedeem == 0))
202202 then throw("No SHEG to redeem, you may have redeemed all your SHEG or you have to wait at least another block")
203203 else if ((remaining >= toRedeem))
204204 then [IntegerEntry((addressStr + "_Redeemed"), (redeemed + toRedeem)), ScriptTransfer(i.caller, toRedeem, shinywggid)]
205205 else throw((("you can redeem max " + toString(fraction(remaining, 1, 100000000))) + " SHEG"))
206206 }
207207 }
208208
209209

github/deemru/w8io/786bc32 
47.30 ms