tx · 4WSwKPR6AXaXvYeZkHSkWueriziSAbxQiGqWhQauph5B

3PBmmxKhFcDhb8PrDdCdvw2iGMPnp7VuwPy:  -0.01000000 Waves

2022.11.08 08:07 [3373073] smart account 3PBmmxKhFcDhb8PrDdCdvw2iGMPnp7VuwPy > SELF 0.00000000 Waves

{ "type": 13, "id": "4WSwKPR6AXaXvYeZkHSkWueriziSAbxQiGqWhQauph5B", "fee": 1000000, "feeAssetId": null, "timestamp": 1667884019820, "version": 2, "chainId": 87, "sender": "3PBmmxKhFcDhb8PrDdCdvw2iGMPnp7VuwPy", "senderPublicKey": "61mmdp2FdTQGQT6Rc3y2uY4cC5LkkG4SUiXj7d4g52FT", "proofs": [ "9HxwgqgcE3zX9P4VZ4WxsBqc3XEqT91xi7EwRwfYtRa5oTWobXEeUqJr4tunH35BWGniW4xWier3MDsqC7d5BMq" ], "script": "base64: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", "height": 3373073, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: 83Rnsvwr3kWSMYqe2xxM2Z1D1xcYABC1sTKpGeAvkVf5 Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 5 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let AINTID = fromBase58String("66DUhUoJaoZcstkKpcoN3FUcqjB6v8VJd5ZQd6RsPxhv")
5+
6+let WAVESIDSTR = "WAVES"
7+
8+let WAVESID = fromBase58String(WAVESIDSTR)
9+
10+let MULT8 = 100000000
11+
12+let PRICESTEP = (MULT8 / 10)
13+
14+let SEP = "__"
15+
16+func keyBeneficiaryAddress () = "%s__beneficiaryAddress"
17+
18+
19+func keyPrice () = "%s__price"
20+
21+
22+func keyTier () = "%s__tier"
23+
24+
25+@Callable(i)
26+func constructor (beneficiaryAddressStr58) = if ((this != i.caller))
27+ then throw("permissions denied")
28+ else {
29+ let beneficiaryAddress = addressFromStringValue(beneficiaryAddressStr58)
30+ let price = MULT8
31+ let tier = (MULT8 * 100)
32+[StringEntry(keyBeneficiaryAddress(), toString(beneficiaryAddress)), IntegerEntry(keyTier(), tier), IntegerEntry(keyPrice(), price)]
33+ }
34+
35+
36+
37+@Callable(i)
38+func deposit (hash) = {
39+ let pmt = i.payments[0]
40+ let pmtAssetId = valueOrElse(pmt.assetId, WAVESID)
41+ let amount = pmt.amount
42+ if ((size(i.payments) != 1))
43+ then throw("exact 1 payment must be attached")
44+ else if ((pmtAssetId != WAVESID))
45+ then throw("only WAVES can be used in payment")
46+ else {
47+ let key = ("%s__" + toString(i.caller))
48+ let val = ((((("%s%s__" + hash) + SEP) + toString(height)) + SEP) + toString(amount))
49+[StringEntry(key, val)]
50+ }
51+ }
52+
53+
54+
55+@Callable(i)
56+func refund (secret) = {
57+ let key = ("%s__" + toString(i.caller))
58+ let val = getStringValue(key)
59+ let hash = split(val, SEP)[1]
60+ let h = toInt(parseBigIntValue(split(val, SEP)[2]))
61+ let amount = parseIntValue(split(val, SEP)[3])
62+ if ((toBase58String(keccak256(blake2b256(toBytes(secret)))) != hash))
63+ then throw("secret is wrong")
64+ else if ((60 > (height - h)))
65+ then throw("too early to refund")
66+ else [DeleteEntry(key), ScriptTransfer(i.caller, amount, WAVESID)]
67+ }
68+
69+
70+
71+@Callable(i)
72+func mint () = {
73+ let pmt = i.payments[0]
74+ let pmtAssetId = valueOrElse(pmt.assetId, WAVESID)
75+ let amount = pmt.amount
76+ if ((size(i.payments) != 1))
77+ then throw("exact 1 payment must be attached")
78+ else if ((pmtAssetId != WAVESID))
79+ then throw("only WAVES can be used in payment")
80+ else {
81+ let price = getIntegerValue(keyPrice())
82+ let tier = getIntegerValue(keyTier())
83+ let addressBeneficiary = addressFromStringValue(getStringValue(keyBeneficiaryAddress()))
84+ let amountAint = fraction(amount, MULT8, price)
85+ let amountAintFinal = if ((tier >= amountAint))
86+ then amountAint
87+ else tier
88+ let tierNew = if ((tier >= amountAint))
89+ then (tier - amountAint)
90+ else (MULT8 * 10)
91+ let priceNew = if ((tier >= amountAint))
92+ then price
93+ else (price + PRICESTEP)
94+ let returnAmount = if ((tier >= amountAint))
95+ then 0
96+ else (amount - fraction(amount, MULT8, price))
97+ let amountBeneficirary = if ((tier >= amountAint))
98+ then amount
99+ else (amount - returnAmount)
100+ let st = ScriptTransfer(i.caller, amountAintFinal, AINTID)
101+ let preExecute = [ScriptTransfer(i.caller, amountAintFinal, AINTID), ScriptTransfer(addressBeneficiary, amountBeneficirary, unit), IntegerEntry(keyTier(), tierNew)]
102+ let execute = if ((tier >= amountAint))
103+ then preExecute
104+ else (preExecute ++ [IntegerEntry(keyPrice(), priceNew), ScriptTransfer(i.caller, returnAmount, unit)])
105+ execute
106+ }
107+ }
108+
109+

github/deemru/w8io/3ef1775 
25.65 ms