tx · GngxbqYY5PN6eCySDS6dke4anHrDrGh55zPHiEP7AC4D

3MpNtiPSRSq6NnaQYk38BfWSzZcgAYTyrQ9:  -0.01000000 Waves

2022.01.18 15:07 [1884352] smart account 3MpNtiPSRSq6NnaQYk38BfWSzZcgAYTyrQ9 > SELF 0.00000000 Waves

{ "type": 13, "id": "GngxbqYY5PN6eCySDS6dke4anHrDrGh55zPHiEP7AC4D", "fee": 1000000, "feeAssetId": null, "timestamp": 1642507648802, "version": 2, "chainId": 84, "sender": "3MpNtiPSRSq6NnaQYk38BfWSzZcgAYTyrQ9", "senderPublicKey": "HwnFy5MZJ9eyVKF9GSXN8nuA5uT2rcvnVqHw9vCv3DNn", "proofs": [ "ALRJnFjhWQSgenRF3Z41EM21w2swPbGQbEjECvmwt2njBtpfSjaAZMHRy32ShSggRo4TSPVnsJyQ8crz1tCCtPX" ], "script": "base64:AAIFAAAAAAAAAjoIAhIAEgMKAQgSAwoBBBIAEgAaEwoBQRIOcmVzZXJ2ZWRBbW91bnQaFAoBQhIPYWxyZWFkeVJlc2VydmVkGhQKAUMSD3JlbWFpbmluZ1Rva2VucxoPCgFEEgpyZXNlcnZhYmxlGhUKAUUSEHJlbWFpbmluZ1Rva2VuczIaDQoBRhIIdG9SZWRlZW0aDgoBRxIJcmVtYWluaW5nGg8KAWESCnNoaW55d2dnaWQaEQoBYhIMYWRtaW5BZGRyZXNzGhcKAWMSEnByZXNhbGV0b2tlbmFtb3VudBoYCgFkEhNtYXhUb2tlbnNwZXJBZGRyZXNzGhUKAWUSEG1pblRva2Vuc1Jlc2VydmUaCQoBZhIEdXNkThoSCgFnEg10cnlHZXRJbnRlZ2VyGggKAWgSA2tleRoMCgFpEgckbWF0Y2gwGgYKAWoSAWIaEgoBaxINdHJ5R2V0Qm9vbGVhbhoSCgFsEg1pc0dhbWVTdGFydGVkGhIKAW0SDWlzV2hpdGVMaXN0ZWQaDwoBbhIKYWRkcmVzc1N0choWCgFvEhFjYWxjVG9rZW50b1JlZGVlbRoJCgFwEgRhbW50GhAKAXESC3N0YXJ0SGVpZ2h0Gg0KAXISCHJlZGVlbWVkGg0KAXMSCGJsb2NrbnVtGg0KAXQSCHBlcmJsb2NrGgYKAXUSAWkaCgoBdhIFc3RhcnQaBwoBdxICd2waCAoBeBIDcG10Gg0KAXkSCGFtb3VudEluGgwKAXoSB2Fzc2V0SW4AAAALAAAAAAFhAQAAACCJac8C/7a6udRxltd5uJl2JrB00Hd59HNuhvD0c58GJgAAAAABYgkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQIAAAAjM04yZm1zeGpUZXRmbkpCWEVVcG5BTEtjQVFlTlI0RWl6UVEAAAAAAWMAAAAteYg9IAAAAAAAAWQAAAAAAAAAJxAAAAAAAWUAAAAAAAAAAGQAAAAAAWYBAAAAIO9x6p0lKlCaJQuUyeE5sqy+bihE8e/NtaE/9rKaYZ/UAQAAAAFnAAAAAQAAAAFoBAAAAAFpCQAEGgAAAAIFAAAABHRoaXMFAAAAAWgDCQAAAQAAAAIFAAAAAWkCAAAAA0ludAQAAAABagUAAAABaQUAAAABagAAAAAAAAAAAAEAAAABawAAAAEAAAABaAQAAAABaQkABBsAAAACBQAAAAR0aGlzBQAAAAFoAwkAAAEAAAACBQAAAAFpAgAAAAdCb29sZWFuBAAAAAFqBQAAAAFpBQAAAAFqBwEAAAABbAAAAAAJAQAAAAFrAAAAAQIAAAAMR2FtZV9TdGFydGVkAQAAAAFtAAAAAQAAAAFuCQEAAAABawAAAAEJAAEsAAAAAgUAAAABbgIAAAAMX3doaXRlTGlzdGVkAQAAAAFvAAAAAgAAAAFwAAAAAW4EAAAAAXEJAQAAAAFnAAAAAQIAAAAMU3RhcnRfSGVpZ2h0BAAAAAFyCQEAAAABZwAAAAEJAAEsAAAAAgUAAAABbgIAAAAJX1JlZGVlbWVkAwkAAAAAAAACBQAAAAFxAAAAAAAAAAAACQAAAgAAAAECAAAAF1JlZGVlbSB0aW1lIG5vdCBzdGFydGVkBAAAAAFzCQAAaAAAAAIAAAAAAAAABaAAAAAAAAAAALQDCQAAZgAAAAIIBQAAAAlsYXN0QmxvY2sAAAAGaGVpZ2h0CQAAZAAAAAIFAAAAAXEFAAAAAXMJAABlAAAAAgUAAAABcAUAAAABcgQAAAABdAkAAGsAAAADBQAAAAFwAAAAAAAAAAABBQAAAAFzCQAAZQAAAAIJAABoAAAAAgkAAGUAAAACCAUAAAAJbGFzdEJsb2NrAAAABmhlaWdodAUAAAABcQUAAAABdAUAAAABcgAAAAUAAAABdQEAAAAEaW5pdAAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAEFJlbWFpbmluZ19Ub2tlbnMFAAAAAWMFAAAAA25pbAAAAAF1AQAAAA5hZGRUb1doaXRlTGlzdAAAAAEAAAABbgMJAQAAAAIhPQAAAAIIBQAAAAF1AAAABmNhbGxlcgUAAAAEdGhpcwkAAAIAAAABAgAAADB5b3UgYXJlIG5vdCBhdXRob3JpemVkIHRvIHBlcmZvcm0gdGhpcyBvcGVyYXRpb24JAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAAEsAAAAAgUAAAABbgIAAAAMX3doaXRlTGlzdGVkBgUAAAADbmlsAAAAAXUBAAAADHNldFN0YXJ0R2FtZQAAAAEAAAABdgMJAQAAAAIhPQAAAAIIBQAAAAF1AAAABmNhbGxlcgUAAAAEdGhpcwkAAAIAAAABAgAAADB5b3UgYXJlIG5vdCBhdXRob3JpemVkIHRvIHBlcmZvcm0gdGhpcyBvcGVyYXRpb24JAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAICAAAADEdhbWVfU3RhcnRlZAUAAAABdgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAMU3RhcnRfSGVpZ2h0CAUAAAAJbGFzdEJsb2NrAAAABmhlaWdodAUAAAADbmlsAAAAAXUBAAAADXJlc2VydmVUb2tlbnMAAAAAAwkBAAAAAWwAAAAACQAAAgAAAAECAAAAH1RoZSBwcmUtc2FsZSB0aW1lIGhhcyBmaW5pc2hlZCEEAAAAAW4JAAQlAAAAAQgFAAAAAXUAAAAGY2FsbGVyBAAAAAF3CQEAAAABbQAAAAEFAAAAAW4DCQEAAAABIQAAAAEFAAAAAXcJAAACAAAAAQIAAAAYeW91IGFyZSBub3Qgd2hpdGVsaXN0ZWQhBAAAAAF4CQABkQAAAAIIBQAAAAF1AAAACHBheW1lbnRzAAAAAAAAAAAAAwkAAAAAAAACBQAAAAF4BQAAAAF4BAAAAAF5CQEAAAAFdmFsdWUAAAABCAkAAZEAAAACCAUAAAABdQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQDCQAAAAAAAAIFAAAAAXkFAAAAAXkEAAAAAXoIBQAAAAF4AAAAB2Fzc2V0SWQDCQAAAAAAAAIFAAAAAXoFAAAAAXoEAAAAAUEFAAAAAXkDCQAAAAAAAAIFAAAAAUEFAAAAAUEEAAAAAUIJAQAAAAFnAAAAAQkAASwAAAACBQAAAAFuAgAAAAlfUmVzZXJ2ZWQDCQAAAAAAAAIFAAAAAUIFAAAAAUIEAAAAAUMJAQAAAAFnAAAAAQIAAAAQUmVtYWluaW5nX1Rva2VucwMJAQAAAAIhPQAAAAIFAAAAAXoFAAAAAWYJAAACAAAAAQIAAAART05MWSBVU0ROIEFMTE9XRUQDCQAAZgAAAAIFAAAAAWUFAAAAAXkJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAFlRoZSBtaW5pbXVtIGFtb3VudCBpcyAJAAGkAAAAAQUAAAABZQIAAAAGIFNIRUdHAwkAAGcAAAACAAAAAAAAAAAABQAAAAFDCQAAAgAAAAECAAAAGFByZXNhbGUgaXMgb3V0IG9mIHN0b2NrIQMJAABmAAAAAgUAAAABQQUAAAABQwkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAUWW91IGNhbiByZXNlcnZlIG9ubHkJAAGkAAAAAQUAAAABQwIAAAAGIFNIRUdHBAAAAAFECQAAZQAAAAIFAAAAAWQFAAAAAUIDCQAAZgAAAAIFAAAAAUIFAAAAAUQJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAFFlvdSBjYW4gcmVzZXJ2ZSBtYXggCQABpAAAAAEFAAAAAUQCAAAABiBTSEVHRwQAAAABRQkAAGUAAAACBQAAAAFDBQAAAAFBCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAAAW4CAAAACV9SZXNlcnZlZAkAAGQAAAACBQAAAAFBBQAAAAFCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABBSZW1haW5pbmdfVG9rZW5zBQAAAAFFCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAAWIFAAAAAXkFAAAAAWYFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAXUBAAAABnJlZGVlbQAAAAADCQEAAAABIQAAAAEJAQAAAAFsAAAAAAkAAAIAAAABAgAAAC5DYW5ub3QgcmVkZWVtIGFueXRoaW5nIGJlZm9yZSB0aGUgZ2FtZSBzdGFydHMhBAAAAAFuCQAEJQAAAAEIBQAAAAF1AAAABmNhbGxlcgQAAAABQQkBAAAAAWcAAAABCQABLAAAAAIFAAAAAW4CAAAACV9SZXNlcnZlZAQAAAABcgkBAAAAAWcAAAABCQABLAAAAAIFAAAAAW4CAAAACV9SZWRlZW1lZAMJAAAAAAAAAgUAAAABQQAAAAAAAAAAAAkAAAIAAAABAgAAABFOb3RoaW5nIHRvIHJlZGVlbQQAAAABRgkBAAAAAW8AAAACBQAAAAFBBQAAAAFuBAAAAAFHCQAAZQAAAAIFAAAAAUEFAAAAAXIDCQAAAAAAAAIFAAAAAUYAAAAAAAAAAAAJAAACAAAAAQIAAABjTm8gU0hFR0cgdG8gcmVkZWVtLCB5b3UgbWF5IGhhdmUgcmVkZWVtZWQgYWxsIHlvdXIgU0hFR0cgb3IgeW91IGhhdmUgdG8gd2FpdCBhdCBsZWFzdCBhbm90aGVyIGJsb2NrAwkAAGcAAAACBQAAAAFHBQAAAAFGCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAAAW4CAAAACV9SZWRlZW1lZAkAAGQAAAACBQAAAAFyBQAAAAFGCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAF1AAAABmNhbGxlcgUAAAABRgUAAAABYQUAAAADbmlsCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAABN5b3UgY2FuIHJlZGVlbSBtYXggCQABpAAAAAEFAAAAAUcCAAAABiBTSEVHRwAAAAD0OSWO", "height": 1884352, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BCfnZQsxWZ5Gkf2v9ZfYtPLPaVC1EXfQueXdgRrCCdAY Next: BmCUFSt1mDwUVQ3Mrsa4hJAoziyPzo5m2J5fdCE9mavb Diff:
OldNewDifferences
99
1010 let maxTokensperAddress = 10000
1111
12-let usdN = unit
12+let minTokensReserve = 100
13+
14+let usdN = base58'H7hBudkiAzfMSHz2bQ5Xcp867QVPZSkm1tqpnVoEZGWP'
1315
1416 func tryGetInteger (key) = match getInteger(this, key) {
1517 case b: Int =>
7072
7173
7274 @Callable(i)
73-func reserveTokens () = {
74- let addressStr = toString(i.caller)
75- let wl = isWhiteListed(addressStr)
76- if (!(wl))
77- then throw("you are not whitelisted!")
78- else {
79- let pmt = i.payments[0]
80- if ((pmt == pmt))
81- then {
82- let amountIn = value(i.payments[0].amount)
83- if ((amountIn == amountIn))
84- then {
85- let assetIn = pmt.assetId
86- if ((assetIn == assetIn))
87- then {
88- let reservedAmount = amountIn
89- if ((reservedAmount == reservedAmount))
90- then {
91- let alreadyReserved = tryGetInteger((addressStr + "_Reserved"))
92- if ((alreadyReserved == alreadyReserved))
93- then {
94- let remainingTokens = tryGetInteger("Remaining_Tokens")
95- if ((assetIn != usdN))
96- then throw("ONLY USDN ALLOWED")
97- else if ((0 >= remainingTokens))
98- then throw("Presale is out of stock!")
99- else if ((reservedAmount > remainingTokens))
100- then throw((("You can reserve only" + toString(remainingTokens)) + " SHEGG"))
101- else {
102- let reservable = (maxTokensperAddress - alreadyReserved)
103- if ((alreadyReserved > reservable))
104- then throw((("You can reserve max " + toString(reservable)) + " SHEGG"))
75+func reserveTokens () = if (isGameStarted())
76+ then throw("The pre-sale time has finished!")
77+ else {
78+ let addressStr = toString(i.caller)
79+ let wl = isWhiteListed(addressStr)
80+ if (!(wl))
81+ then throw("you are not whitelisted!")
82+ else {
83+ let pmt = i.payments[0]
84+ if ((pmt == pmt))
85+ then {
86+ let amountIn = value(i.payments[0].amount)
87+ if ((amountIn == amountIn))
88+ then {
89+ let assetIn = pmt.assetId
90+ if ((assetIn == assetIn))
91+ then {
92+ let reservedAmount = amountIn
93+ if ((reservedAmount == reservedAmount))
94+ then {
95+ let alreadyReserved = tryGetInteger((addressStr + "_Reserved"))
96+ if ((alreadyReserved == alreadyReserved))
97+ then {
98+ let remainingTokens = tryGetInteger("Remaining_Tokens")
99+ if ((assetIn != usdN))
100+ then throw("ONLY USDN ALLOWED")
101+ else if ((minTokensReserve > amountIn))
102+ then throw((("The minimum amount is " + toString(minTokensReserve)) + " SHEGG"))
103+ else if ((0 >= remainingTokens))
104+ then throw("Presale is out of stock!")
105+ else if ((reservedAmount > remainingTokens))
106+ then throw((("You can reserve only" + toString(remainingTokens)) + " SHEGG"))
105107 else {
106- let remainingTokens2 = (remainingTokens - reservedAmount)
108+ let reservable = (maxTokensperAddress - alreadyReserved)
109+ if ((alreadyReserved > reservable))
110+ then throw((("You can reserve max " + toString(reservable)) + " SHEGG"))
111+ else {
112+ let remainingTokens2 = (remainingTokens - reservedAmount)
107113 [IntegerEntry((addressStr + "_Reserved"), (reservedAmount + alreadyReserved)), IntegerEntry("Remaining_Tokens", remainingTokens2), ScriptTransfer(adminAddress, amountIn, usdN)]
114+ }
108115 }
109- }
110- }
111- else throw("Strict value is not equal to itself.")
112- }
113- else throw("Strict value is not equal to itself.")
114- }
115- else throw("Strict value is not equal to itself.")
116- }
117- else throw("Strict value is not equal to itself.")
118- }
119- else throw("Strict value is not equal to itself.")
120- }
121- }
116+ }
117+ else throw("Strict value is not equal to itself.")
118+ }
119+ else throw("Strict value is not equal to itself.")
120+ }
121+ else throw("Strict value is not equal to itself.")
122+ }
123+ else throw("Strict value is not equal to itself.")
124+ }
125+ else throw("Strict value is not equal to itself.")
126+ }
127+ }
122128
123129
124130
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 = 10000
1111
12-let usdN = unit
12+let minTokensReserve = 100
13+
14+let usdN = base58'H7hBudkiAzfMSHz2bQ5Xcp867QVPZSkm1tqpnVoEZGWP'
1315
1416 func tryGetInteger (key) = match getInteger(this, key) {
1517 case b: Int =>
1618 b
1719 case _ =>
1820 0
1921 }
2022
2123
2224 func tryGetBoolean (key) = match getBoolean(this, key) {
2325 case b: Boolean =>
2426 b
2527 case _ =>
2628 false
2729 }
2830
2931
3032 func isGameStarted () = tryGetBoolean("Game_Started")
3133
3234
3335 func isWhiteListed (addressStr) = tryGetBoolean((addressStr + "_whiteListed"))
3436
3537
3638 func calcTokentoRedeem (amnt,addressStr) = {
3739 let startHeight = tryGetInteger("Start_Height")
3840 let redeemed = tryGetInteger((addressStr + "_Redeemed"))
3941 if ((startHeight == 0))
4042 then throw("Redeem time not started")
4143 else {
4244 let blocknum = (1440 * 180)
4345 if ((lastBlock.height > (startHeight + blocknum)))
4446 then (amnt - redeemed)
4547 else {
4648 let perblock = fraction(amnt, 1, blocknum)
4749 (((lastBlock.height - startHeight) * perblock) - redeemed)
4850 }
4951 }
5052 }
5153
5254
5355 @Callable(i)
5456 func init () = [IntegerEntry("Remaining_Tokens", presaletokenamount)]
5557
5658
5759
5860 @Callable(i)
5961 func addToWhiteList (addressStr) = if ((i.caller != this))
6062 then throw("you are not authorized to perform this operation")
6163 else [BooleanEntry((addressStr + "_whiteListed"), true)]
6264
6365
6466
6567 @Callable(i)
6668 func setStartGame (start) = if ((i.caller != this))
6769 then throw("you are not authorized to perform this operation")
6870 else [BooleanEntry("Game_Started", start), IntegerEntry("Start_Height", lastBlock.height)]
6971
7072
7173
7274 @Callable(i)
73-func reserveTokens () = {
74- let addressStr = toString(i.caller)
75- let wl = isWhiteListed(addressStr)
76- if (!(wl))
77- then throw("you are not whitelisted!")
78- else {
79- let pmt = i.payments[0]
80- if ((pmt == pmt))
81- then {
82- let amountIn = value(i.payments[0].amount)
83- if ((amountIn == amountIn))
84- then {
85- let assetIn = pmt.assetId
86- if ((assetIn == assetIn))
87- then {
88- let reservedAmount = amountIn
89- if ((reservedAmount == reservedAmount))
90- then {
91- let alreadyReserved = tryGetInteger((addressStr + "_Reserved"))
92- if ((alreadyReserved == alreadyReserved))
93- then {
94- let remainingTokens = tryGetInteger("Remaining_Tokens")
95- if ((assetIn != usdN))
96- then throw("ONLY USDN ALLOWED")
97- else if ((0 >= remainingTokens))
98- then throw("Presale is out of stock!")
99- else if ((reservedAmount > remainingTokens))
100- then throw((("You can reserve only" + toString(remainingTokens)) + " SHEGG"))
101- else {
102- let reservable = (maxTokensperAddress - alreadyReserved)
103- if ((alreadyReserved > reservable))
104- then throw((("You can reserve max " + toString(reservable)) + " SHEGG"))
75+func reserveTokens () = if (isGameStarted())
76+ then throw("The pre-sale time has finished!")
77+ else {
78+ let addressStr = toString(i.caller)
79+ let wl = isWhiteListed(addressStr)
80+ if (!(wl))
81+ then throw("you are not whitelisted!")
82+ else {
83+ let pmt = i.payments[0]
84+ if ((pmt == pmt))
85+ then {
86+ let amountIn = value(i.payments[0].amount)
87+ if ((amountIn == amountIn))
88+ then {
89+ let assetIn = pmt.assetId
90+ if ((assetIn == assetIn))
91+ then {
92+ let reservedAmount = amountIn
93+ if ((reservedAmount == reservedAmount))
94+ then {
95+ let alreadyReserved = tryGetInteger((addressStr + "_Reserved"))
96+ if ((alreadyReserved == alreadyReserved))
97+ then {
98+ let remainingTokens = tryGetInteger("Remaining_Tokens")
99+ if ((assetIn != usdN))
100+ then throw("ONLY USDN ALLOWED")
101+ else if ((minTokensReserve > amountIn))
102+ then throw((("The minimum amount is " + toString(minTokensReserve)) + " SHEGG"))
103+ else if ((0 >= remainingTokens))
104+ then throw("Presale is out of stock!")
105+ else if ((reservedAmount > remainingTokens))
106+ then throw((("You can reserve only" + toString(remainingTokens)) + " SHEGG"))
105107 else {
106- let remainingTokens2 = (remainingTokens - reservedAmount)
108+ let reservable = (maxTokensperAddress - alreadyReserved)
109+ if ((alreadyReserved > reservable))
110+ then throw((("You can reserve max " + toString(reservable)) + " SHEGG"))
111+ else {
112+ let remainingTokens2 = (remainingTokens - reservedAmount)
107113 [IntegerEntry((addressStr + "_Reserved"), (reservedAmount + alreadyReserved)), IntegerEntry("Remaining_Tokens", remainingTokens2), ScriptTransfer(adminAddress, amountIn, usdN)]
114+ }
108115 }
109- }
110- }
111- else throw("Strict value is not equal to itself.")
112- }
113- else throw("Strict value is not equal to itself.")
114- }
115- else throw("Strict value is not equal to itself.")
116- }
117- else throw("Strict value is not equal to itself.")
118- }
119- else throw("Strict value is not equal to itself.")
120- }
121- }
116+ }
117+ else throw("Strict value is not equal to itself.")
118+ }
119+ else throw("Strict value is not equal to itself.")
120+ }
121+ else throw("Strict value is not equal to itself.")
122+ }
123+ else throw("Strict value is not equal to itself.")
124+ }
125+ else throw("Strict value is not equal to itself.")
126+ }
127+ }
122128
123129
124130
125131 @Callable(i)
126132 func redeem () = if (!(isGameStarted()))
127133 then throw("Cannot redeem anything before the game starts!")
128134 else {
129135 let addressStr = toString(i.caller)
130136 let reservedAmount = tryGetInteger((addressStr + "_Reserved"))
131137 let redeemed = tryGetInteger((addressStr + "_Redeemed"))
132138 if ((reservedAmount == 0))
133139 then throw("Nothing to redeem")
134140 else {
135141 let toRedeem = calcTokentoRedeem(reservedAmount, addressStr)
136142 let remaining = (reservedAmount - redeemed)
137143 if ((toRedeem == 0))
138144 then throw("No SHEGG to redeem, you may have redeemed all your SHEGG or you have to wait at least another block")
139145 else if ((remaining >= toRedeem))
140146 then [IntegerEntry((addressStr + "_Redeemed"), (redeemed + toRedeem)), ScriptTransfer(i.caller, toRedeem, shinywggid)]
141147 else throw((("you can redeem max " + toString(remaining)) + " SHEGG"))
142148 }
143149 }
144150
145151

github/deemru/w8io/169f3d6 
53.34 ms