tx · DowAto9WZzUmj56e69S7MGXkFK7jRvGmbrDTntQupaib

3PBmmxKhFcDhb8PrDdCdvw2iGMPnp7VuwPy:  -0.01000000 Waves

2022.11.09 07:15 [3374492] smart account 3PBmmxKhFcDhb8PrDdCdvw2iGMPnp7VuwPy > SELF 0.00000000 Waves

{ "type": 13, "id": "DowAto9WZzUmj56e69S7MGXkFK7jRvGmbrDTntQupaib", "fee": 1000000, "feeAssetId": null, "timestamp": 1667967312642, "version": 2, "chainId": 87, "sender": "3PBmmxKhFcDhb8PrDdCdvw2iGMPnp7VuwPy", "senderPublicKey": "61mmdp2FdTQGQT6Rc3y2uY4cC5LkkG4SUiXj7d4g52FT", "proofs": [ "5fXxFur4kf3So5ejVf83nMzmjx1XhV3zaNC6gUX9s2G7pFwDBaA2Js7gEzJsQMAHYiBZRQFhtSB1Vi5EqFSzJEni" ], "script": "base64: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", "height": 3374492, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 55DQMx8Xr4f29hFRthvsedZhQEXVfiS7Aoj8xpaXMZA Next: 4Pa5Cm5WckqArLEmss17ooJEMMn5m94vmo61KzKHWwig Diff:
OldNewDifferences
8181 let price = getIntegerValue(keyPrice())
8282 let tier = getIntegerValue(keyTier())
8383 let addressBeneficiary = addressFromStringValue(getStringValue(keyBeneficiaryAddress()))
84- let amountAint = fraction(amount, MULT8, price)
84+ let amountAint = fraction(amount, MULT8, price, FLOOR)
8585 let amountAintFinal = if ((tier > amountAint))
8686 then amountAint
8787 else tier
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let AINTID = fromBase58String("BvuzJNB6qUrvEmzGt1PMBZ1QCnBNn2L7ezXHhgQKMxr7")
55
66 let WAVESIDSTR = "WAVES"
77
88 let WAVESID = fromBase58String(WAVESIDSTR)
99
1010 let MULT8 = 100000000
1111
1212 let PRICESTEP = (MULT8 / 100)
1313
1414 let SEP = "__"
1515
1616 func keyBeneficiaryAddress () = "%s__beneficiaryAddress"
1717
1818
1919 func keyPrice () = "%s__price"
2020
2121
2222 func keyTier () = "%s__tier"
2323
2424
2525 @Callable(i)
2626 func constructor (beneficiaryAddressStr58) = if ((this != i.caller))
2727 then throw("permissions denied")
2828 else {
2929 let beneficiaryAddress = addressFromStringValue(beneficiaryAddressStr58)
3030 let price = MULT8
3131 let tier = (MULT8 * 10)
3232 [StringEntry(keyBeneficiaryAddress(), toString(beneficiaryAddress)), IntegerEntry(keyTier(), tier), IntegerEntry(keyPrice(), price)]
3333 }
3434
3535
3636
3737 @Callable(i)
3838 func deposit (hash) = {
3939 let pmt = i.payments[0]
4040 let pmtAssetId = valueOrElse(pmt.assetId, WAVESID)
4141 let amount = pmt.amount
4242 if ((size(i.payments) != 1))
4343 then throw("exact 1 payment must be attached")
4444 else if ((pmtAssetId != WAVESID))
4545 then throw("only WAVES can be used in payment")
4646 else {
4747 let key = ("%s__" + toString(i.caller))
4848 let val = ((((("%s%s__" + hash) + SEP) + toString(height)) + SEP) + toString(amount))
4949 [StringEntry(key, val)]
5050 }
5151 }
5252
5353
5454
5555 @Callable(i)
5656 func refund (secret) = {
5757 let key = ("%s__" + toString(i.caller))
5858 let val = getStringValue(key)
5959 let hash = split(val, SEP)[1]
6060 let h = toInt(parseBigIntValue(split(val, SEP)[2]))
6161 let amount = parseIntValue(split(val, SEP)[3])
6262 if ((toBase58String(keccak256(blake2b256(toBytes(secret)))) != hash))
6363 then throw("secret is wrong")
6464 else if ((60 > (height - h)))
6565 then throw("too early to refund")
6666 else [DeleteEntry(key), ScriptTransfer(i.caller, amount, WAVESID)]
6767 }
6868
6969
7070
7171 @Callable(i)
7272 func mint () = {
7373 let pmt = i.payments[0]
7474 let pmtAssetId = valueOrElse(pmt.assetId, WAVESID)
7575 let amount = pmt.amount
7676 if ((size(i.payments) != 1))
7777 then throw("exact 1 payment must be attached")
7878 else if ((pmtAssetId != WAVESID))
7979 then throw("only WAVES can be used in payment")
8080 else {
8181 let price = getIntegerValue(keyPrice())
8282 let tier = getIntegerValue(keyTier())
8383 let addressBeneficiary = addressFromStringValue(getStringValue(keyBeneficiaryAddress()))
84- let amountAint = fraction(amount, MULT8, price)
84+ let amountAint = fraction(amount, MULT8, price, FLOOR)
8585 let amountAintFinal = if ((tier > amountAint))
8686 then amountAint
8787 else tier
8888 let tierNew = if ((tier > amountAint))
8989 then (tier - amountAint)
9090 else (MULT8 * 10)
9191 let priceNew = if ((tier > amountAint))
9292 then price
9393 else (price + PRICESTEP)
9494 let returnAmount = if ((tier >= amountAint))
9595 then 0
9696 else (amount - fraction(amountAintFinal, price, MULT8))
9797 let amountBeneficirary = if ((tier > amountAint))
9898 then amount
9999 else (amount - returnAmount)
100100 let st = ScriptTransfer(i.caller, amountAintFinal, AINTID)
101101 let preExecute = [ScriptTransfer(i.caller, amountAintFinal, AINTID), ScriptTransfer(addressBeneficiary, amountBeneficirary, unit), IntegerEntry(keyTier(), tierNew)]
102102 let execute = if ((tier > amountAint))
103103 then preExecute
104104 else (preExecute ++ [IntegerEntry(keyPrice(), priceNew), ScriptTransfer(i.caller, returnAmount, unit)])
105105 execute
106106 }
107107 }
108108
109109

github/deemru/w8io/3ef1775 
36.72 ms