tx · 5beiRjoTnTtQw4owjoz4WQSxDU81eJXZo6sqqoAVMLAY

3MxfEq17wZjAWQfckWycU9o4oTkvf9nfNQX:  -0.01000000 Waves

2021.12.13 17:33 [1832609] smart account 3MxfEq17wZjAWQfckWycU9o4oTkvf9nfNQX > SELF 0.00000000 Waves

{ "type": 13, "id": "5beiRjoTnTtQw4owjoz4WQSxDU81eJXZo6sqqoAVMLAY", "fee": 1000000, "feeAssetId": null, "timestamp": 1639406061926, "version": 2, "chainId": 84, "sender": "3MxfEq17wZjAWQfckWycU9o4oTkvf9nfNQX", "senderPublicKey": "HUca7AqRs4Zs9sU1AFcufmBC4XpT4sN79aFScNRT4LxQ", "proofs": [ "4F5MEDJUvdFWefGLuBPMhkZwUSrPgHacVfzRUUW3v4SGb6puk2doiA9PqxodVS7oxuT8mw7fVXNpGetksk1oi2yj" ], "script": "base64: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", "height": 1832609, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Ef4zUYQLan7cq9i7PQdrnzxMutz4F6sC3DBD3NDHouuT Next: BhJoDvRVLnKoYs5XQomCxYwJqsVdDiZXHLEfryuzARMb Diff:
OldNewDifferences
9797
9898 @Callable(i)
9999 func buy () = {
100- let currenttime = match blockInfoByHeight(height) {
101- case block: BlockInfo =>
102- block.timestamp
103- case _ =>
104- throw("Can't find block")
105- }
106100 let balance = assetBalance(airdrop, token)
107101 let sellamount = (1000 * tokend)
108102 let burnamounts = [0, (10 * sellamount), (20 * sellamount)]
109103 let prices = [0, (1 * 100000000), (2 * 100000000)]
110104 let callerAdress = Address(i.caller.bytes)
111105 let callerData = valueOrElse(getString(toBase58String(i.caller.bytes)), "")
112- let callerReceived = if ((take(callerData, 8) == "received"))
113- then true
114- else false
115- let callerBuylevel = if (callerReceived)
116- then size(split(callerData, "|"))
117- else 0
106+ let datarecs = split(callerData, "|")
107+ let callerBuylevel = size(datarecs)
108+ let callerPrice = prices[callerBuylevel]
118109 let burnamount = burnamounts[callerBuylevel]
119110 let balanceok = if ((balance >= (sellamount + burnamount)))
120111 then true
121112 else false
122- let callerCanBuy = if (if (callerReceived)
123- then if ((callerBuylevel == 0))
124- then true
125- else (callerBuylevel == 1)
126- else false)
113+ let callerCanBuy = if (if ((callerBuylevel == 1))
114+ then true
115+ else (callerBuylevel == 2))
127116 then true
128117 else false
129- let callerPrice = prices[callerBuylevel]
130118 let pmtok = if ((size(i.payments) == 1))
131119 then if (if (!(isDefined(i.payments[0].assetId)))
132120 then (i.payments[0].amount >= callerPrice)
139127 else ("" + (if (!(pmtok))
140128 then "not enough payment"
141129 else ("" + (if (!(balanceok))
142- then "you are lost... not enough ballance"
130+ then "you lost... not enough ballance"
143131 else ""))))
144- let datarecs = split(callerData, "|")
145- let newdata = if ((callerBuylevel == 0))
146- then (datarecs[0] + "|bought1")
147- else if ((callerBuylevel == 1))
148- then (datarecs[0] + "|bought1|bought2")
149- else ""
132+ let newdata = if ((callerBuylevel == 1))
133+ then "received|bought1"
134+ else if ((callerBuylevel == 2))
135+ then "received|bought1|bought2"
136+ else callerData
150137 let deal = if (if (if (balanceok)
151138 then callerCanBuy
152139 else false)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let token = base58'FeCdHqomybB47PWv1JVvfFpQ6WPmHGYgped6WAxpU7Nv'
55
66 let tokend = 100000000
77
88 let airdrop = Address(base58'3MxfEq17wZjAWQfckWycU9o4oTkvf9nfNQX')
99
1010 let teamAdress = Address(base58'3MovsLjXpJr9HD2vBqmAf7Gze6jwuRxX1fX')
1111
1212 let deadline = 1639310400000
1313
1414 let burndeadline = 9639332000000
1515
1616 @Callable(i)
1717 func reset () = [DeleteEntry(toBase58String(i.caller.bytes)), IntegerEntry("burnt", 0), IntegerEntry("dropped", 0), IntegerEntry("sold1", 0), IntegerEntry("sold2", 0), IntegerEntry("teamgift", 0), IntegerEntry("issued", (1000000000 * 100000000)), StringEntry("burningstage", "waiting"), DeleteEntry((toBase58String(i.caller.bytes) + "_error"))]
1818
1919
2020
2121 @Callable(i)
2222 func free (id58) = {
2323 let dropamount = (1000 * tokend)
2424 let teamgift = (10 * tokend)
2525 let trid = fromBase58String(id58)
2626 let callerAdress = Address(i.caller.bytes)
2727 let currenttime = match blockInfoByHeight(height) {
2828 case block: BlockInfo =>
2929 block.timestamp
3030 case _ =>
3131 throw("Can't find block")
3232 }
3333 let balance = assetBalance(airdrop, token)
3434 let burnamount = if (if ((currenttime > burndeadline))
3535 then (getStringValue("burningstage") == "waiting")
3636 else false)
3737 then balance
3838 else 0
3939 let isenough = if ((balance > dropamount))
4040 then true
4141 else false
4242 if ((isenough == isenough))
4343 then {
4444 let trexists = match transferTransactionById(trid) {
4545 case ttx: TransferTransaction =>
4646 true
4747 case _ =>
4848 false
4949 }
5050 let trtime = match transferTransactionById(trid) {
5151 case ttx: TransferTransaction =>
5252 ttx.timestamp
5353 case _ =>
5454 9999999999999
5555 }
5656 let trsender = match transferTransactionById(trid) {
5757 case ttx: TransferTransaction =>
5858 ttx.sender
5959 case _ =>
6060 airdrop
6161 }
6262 let received = if ((take(valueOrElse(getString(toBase58String(i.caller.bytes)), ""), 8) == "received"))
6363 then true
6464 else false
6565 let isprooved = if (if (if (if ((trtime > deadline))
6666 then true
6767 else (callerAdress != trsender))
6868 then true
6969 else received)
7070 then true
7171 else !(isenough))
7272 then false
7373 else true
7474 let result = if (trexists)
7575 then if ((trtime > deadline))
7676 then ("transaction is out of time range: " + toString(trtime))
7777 else ("" + (if ((callerAdress != trsender))
7878 then ((("it is incorrect sender: " + toString(callerAdress)) + " / ") + toString(trsender))
7979 else ("" + (if (received)
8080 then "allready received"
8181 else ("" + (if (isprooved)
8282 then "received"
8383 else ("" + (if (!(isenough))
8484 then (("airdrop ended: " + toString(getIntegerValue("burnt"))) + " burnt")
8585 else ""))))))))
8686 else "can`t find transaction"
8787 if ((burnamount > 0))
8888 then [StringEntry((toBase58String(i.caller.bytes) + "_error"), (("airdrop ended: " + toString(getIntegerValue("burnt"))) + " burnt")), Burn(token, burnamount), StringEntry("burningstage", "them all burnt"), IntegerEntry("burnt", (getIntegerValue("burnt") + burnamount))]
8989 else if (isprooved)
9090 then [ScriptTransfer(callerAdress, dropamount, token), ScriptTransfer(teamAdress, teamgift, token), StringEntry(toBase58String(i.caller.bytes), result), IntegerEntry("dropped", (getIntegerValue("dropped") + dropamount)), IntegerEntry("teamgift", (getIntegerValue("teamgift") + teamgift)), DeleteEntry((toBase58String(i.caller.bytes) + "_error"))]
9191 else [StringEntry((toBase58String(i.caller.bytes) + "_error"), result)]
9292 }
9393 else throw("Strict value is not equal to itself.")
9494 }
9595
9696
9797
9898 @Callable(i)
9999 func buy () = {
100- let currenttime = match blockInfoByHeight(height) {
101- case block: BlockInfo =>
102- block.timestamp
103- case _ =>
104- throw("Can't find block")
105- }
106100 let balance = assetBalance(airdrop, token)
107101 let sellamount = (1000 * tokend)
108102 let burnamounts = [0, (10 * sellamount), (20 * sellamount)]
109103 let prices = [0, (1 * 100000000), (2 * 100000000)]
110104 let callerAdress = Address(i.caller.bytes)
111105 let callerData = valueOrElse(getString(toBase58String(i.caller.bytes)), "")
112- let callerReceived = if ((take(callerData, 8) == "received"))
113- then true
114- else false
115- let callerBuylevel = if (callerReceived)
116- then size(split(callerData, "|"))
117- else 0
106+ let datarecs = split(callerData, "|")
107+ let callerBuylevel = size(datarecs)
108+ let callerPrice = prices[callerBuylevel]
118109 let burnamount = burnamounts[callerBuylevel]
119110 let balanceok = if ((balance >= (sellamount + burnamount)))
120111 then true
121112 else false
122- let callerCanBuy = if (if (callerReceived)
123- then if ((callerBuylevel == 0))
124- then true
125- else (callerBuylevel == 1)
126- else false)
113+ let callerCanBuy = if (if ((callerBuylevel == 1))
114+ then true
115+ else (callerBuylevel == 2))
127116 then true
128117 else false
129- let callerPrice = prices[callerBuylevel]
130118 let pmtok = if ((size(i.payments) == 1))
131119 then if (if (!(isDefined(i.payments[0].assetId)))
132120 then (i.payments[0].amount >= callerPrice)
133121 else false)
134122 then true
135123 else false
136124 else false
137125 let mess = if (!(callerCanBuy))
138126 then "not prooved for buy"
139127 else ("" + (if (!(pmtok))
140128 then "not enough payment"
141129 else ("" + (if (!(balanceok))
142- then "you are lost... not enough ballance"
130+ then "you lost... not enough ballance"
143131 else ""))))
144- let datarecs = split(callerData, "|")
145- let newdata = if ((callerBuylevel == 0))
146- then (datarecs[0] + "|bought1")
147- else if ((callerBuylevel == 1))
148- then (datarecs[0] + "|bought1|bought2")
149- else ""
132+ let newdata = if ((callerBuylevel == 1))
133+ then "received|bought1"
134+ else if ((callerBuylevel == 2))
135+ then "received|bought1|bought2"
136+ else callerData
150137 let deal = if (if (if (balanceok)
151138 then callerCanBuy
152139 else false)
153140 then pmtok
154141 else false)
155142 then true
156143 else false
157144 if (deal)
158145 then [StringEntry(toBase58String(i.caller.bytes), newdata), ScriptTransfer(teamAdress, callerPrice, unit), ScriptTransfer(callerAdress, sellamount, token), Burn(token, burnamount), IntegerEntry("burnt", (getIntegerValue("burnt") + burnamount)), IntegerEntry(("sold" + toString(callerBuylevel)), (getIntegerValue(("sold" + toString(callerBuylevel))) + sellamount)), DeleteEntry((toBase58String(i.caller.bytes) + "_error"))]
159146 else [StringEntry((toBase58String(i.caller.bytes) + "_error"), mess)]
160147 }
161148
162149

github/deemru/w8io/873ac7e 
25.91 ms