tx · 9nSDMuskYRASLBFmCZN89KibzWqkTnpNFQ8ErPPXeQ7J

3P9VVzzkP1Cfsk3LtTeuUaQqUt5D7sLthLe:  -0.01000000 Waves

2022.07.01 20:33 [3186503] smart account 3P9VVzzkP1Cfsk3LtTeuUaQqUt5D7sLthLe > SELF 0.00000000 Waves

{ "type": 13, "id": "9nSDMuskYRASLBFmCZN89KibzWqkTnpNFQ8ErPPXeQ7J", "fee": 1000000, "feeAssetId": null, "timestamp": 1656696819340, "version": 2, "chainId": 87, "sender": "3P9VVzzkP1Cfsk3LtTeuUaQqUt5D7sLthLe", "senderPublicKey": "HiH9eknsCZ417kt2aJnJ9HrnrWCYcdRoGsFi8yANmYx8", "proofs": [ "4zZiVmN1seTkrwBVe2z9U9xLxP8ueL9dPuDnsedytE7RmRWCM6ZNtWTrJYXYbwqdFbAX2TojerbwcjJwe7GmcG9B" ], "script": "base64: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", "height": 3186503, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 79Z1Zp1DG2tpmF8uxFoV3siQ2LvaijSWJwt6GFZ3Jfqc Next: 5RidNqKmo6KneS4rLvZqimdJtHqyCdpT3C2GGLB5GsV2 Diff:
OldNewDifferences
5454 }
5555
5656
57-@Callable(i)
58-func issuePluto (debug) = {
57+func calculateIssuePluto (assetId,amount) = {
5958 let onboardingParameters = match invoke(parametersAddress, "getOnboardingParameters", [false], nil) {
6059 case in: List[Any] =>
6160 in
8281 case _ =>
8382 throw("cannot parse parameters")
8483 }
85- let assetId = value(i.payments[0].assetId)
8684 let assetIdStr = toBase58String(assetId)
87- let amount = i.payments[0].amount
8885 let poolStr = tryGetStrParameter((("asset_" + assetIdStr) + "_pool"))
8986 let poolAddress = addressFromStringValue(poolStr)
9087 let amountToBuyback = fraction(amount, buybackRatio, 10000)
105102 let teamPlutoIssued = fraction(totalPluto, teamPremium, 10000)
106103 let inv2 = invoke(issuerAddress, "requestIssue", [((plutoIssued + premiumPlutoIssued) + teamPlutoIssued)], nil)
107104 if ((inv2 == inv2))
108- then if (debug)
109- then throw(((((((("issued: " + toString(plutoIssued)) + "; bought: ") + toString(plutoBought)) + "; premium: ") + toString(premiumPlutoIssued)) + "; team: ") + toString(teamPlutoIssued)))
110- else [ScriptTransfer(treasuryAddress, amountToIssue, assetId), ScriptTransfer(i.caller, (totalPluto + premiumPlutoIssued), plutoId), ScriptTransfer(teamAddress, teamPlutoIssued, plutoId)]
105+ then [plutoIssued, plutoBought, premiumPlutoIssued, teamPlutoIssued, amountToIssue]
111106 else throw("Strict value is not equal to itself.")
112107 }
113108 else throw("Strict value is not equal to itself.")
114109 }
110+ else throw("Strict value is not equal to itself.")
111+ }
112+
113+
114+@Callable(i)
115+func issuePluto (debug) = {
116+ let assetId = value(i.payments[0].assetId)
117+ let result = calculateIssuePluto(assetId, value(i.payments[0].amount))
118+ if ((result == result))
119+ then if (debug)
120+ then throw(((((((("issued: " + toString(result[0])) + "; bought: ") + toString(result[1])) + "; premium: ") + toString(result[2])) + "; team: ") + toString(result[3])))
121+ else [ScriptTransfer(treasuryAddress, result[4], assetId), ScriptTransfer(i.caller, ((result[0] + result[1]) + result[2]), plutoId), ScriptTransfer(teamAddress, result[3], plutoId)]
122+ else throw("Strict value is not equal to itself.")
123+ }
124+
125+
126+
127+@Callable(i)
128+func evaluateIssuePluto (debug,assetIdStr,amount) = {
129+ let assetId = fromBase58String(assetIdStr)
130+ let result = calculateIssuePluto(assetId, amount)
131+ if ((result == result))
132+ then if (debug)
133+ then throw(((((((("issued: " + toString(result[0])) + "; bought: ") + toString(result[1])) + "; premium: ") + toString(result[2])) + "; team: ") + toString(result[3])))
134+ else $Tuple2(nil, (result[0] + result[1]))
115135 else throw("Strict value is not equal to itself.")
116136 }
117137
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let plutoId = base58'YQFYoMwARMQzZs3wqucBTdJNWSbsYk3GAw7wsqU4gyA'
55
66 let plutoIdStr = "YQFYoMwARMQzZs3wqucBTdJNWSbsYk3GAw7wsqU4gyA"
77
88 let parametersAddress = Address(base58'3PPhk65Ab4UDgbxYUDW7YSXkzHfWtj7WBrB')
99
1010 let issuerAddress = Address(base58'3PF8pKC8CdmW9sEJUxQVSfezYRSJeThoNR3')
1111
1212 let treasuryAddress = Address(base58'3PAeDQGNbYa3W2EacZkJG3dSiDnHsQarqzZ')
1313
1414 let teamAddress = Address(base58'3PMcMiMEs6w56NRGacksXtFG5zS7doE9fpL')
1515
1616 let Scale8 = 100000000
1717
1818 func tryGetInteger (key) = match getInteger(this, key) {
1919 case x: Int =>
2020 x
2121 case _ =>
2222 0
2323 }
2424
2525
2626 func tryGetIntParameter (key) = match getInteger(parametersAddress, key) {
2727 case x: Int =>
2828 x
2929 case _ =>
3030 0
3131 }
3232
3333
3434 func tryGetStrParameter (key) = match getString(parametersAddress, key) {
3535 case x: String =>
3636 x
3737 case _ =>
3838 ""
3939 }
4040
4141
4242 func calculateBuybackRatio () = {
4343 let treasurySize = tryGetIntParameter("stats_treasurySize")
4444 5000
4545 }
4646
4747
4848 func calculatePoolPrice (poolAddress,assetStr) = {
4949 let a0Weight = getIntegerValue(poolAddress, (("static_" + assetStr) + "_weight"))
5050 let a1Weight = getIntegerValue(poolAddress, (("static_" + plutoIdStr) + "_weight"))
5151 let a0Balance = getIntegerValue(poolAddress, (("global_" + assetStr) + "_balance"))
5252 let a1Balance = getIntegerValue(poolAddress, (("global_" + plutoIdStr) + "_balance"))
5353 fraction(Scale8, (a1Balance * a0Weight), (a0Balance * a1Weight))
5454 }
5555
5656
57-@Callable(i)
58-func issuePluto (debug) = {
57+func calculateIssuePluto (assetId,amount) = {
5958 let onboardingParameters = match invoke(parametersAddress, "getOnboardingParameters", [false], nil) {
6059 case in: List[Any] =>
6160 in
6261 case _ =>
6362 throw("cannot load parameters")
6463 }
6564 if ((onboardingParameters == onboardingParameters))
6665 then {
6766 let buybackRatio = match onboardingParameters[4] {
6867 case x: Int =>
6968 x
7069 case _ =>
7170 throw("cannot parse parameters")
7271 }
7372 let premium = match onboardingParameters[1] {
7473 case x: Int =>
7574 x
7675 case _ =>
7776 throw("cannot parse parameters")
7877 }
7978 let teamPremium = match onboardingParameters[3] {
8079 case x: Int =>
8180 x
8281 case _ =>
8382 throw("cannot parse parameters")
8483 }
85- let assetId = value(i.payments[0].assetId)
8684 let assetIdStr = toBase58String(assetId)
87- let amount = i.payments[0].amount
8885 let poolStr = tryGetStrParameter((("asset_" + assetIdStr) + "_pool"))
8986 let poolAddress = addressFromStringValue(poolStr)
9087 let amountToBuyback = fraction(amount, buybackRatio, 10000)
9188 let amountToIssue = (amount - amountToBuyback)
9289 let inv = invoke(poolAddress, "swap", [plutoIdStr, 0], [AttachedPayment(assetId, amountToBuyback)])
9390 if ((inv == inv))
9491 then {
9592 let plutoBought = match inv {
9693 case x: Int =>
9794 x
9895 case _ =>
9996 0
10097 }
10198 let assetPriceToPluto = calculatePoolPrice(poolAddress, assetIdStr)
10299 let plutoIssued = fraction(amountToIssue, assetPriceToPluto, Scale8)
103100 let totalPluto = (plutoBought + plutoIssued)
104101 let premiumPlutoIssued = fraction(totalPluto, premium, 10000)
105102 let teamPlutoIssued = fraction(totalPluto, teamPremium, 10000)
106103 let inv2 = invoke(issuerAddress, "requestIssue", [((plutoIssued + premiumPlutoIssued) + teamPlutoIssued)], nil)
107104 if ((inv2 == inv2))
108- then if (debug)
109- then throw(((((((("issued: " + toString(plutoIssued)) + "; bought: ") + toString(plutoBought)) + "; premium: ") + toString(premiumPlutoIssued)) + "; team: ") + toString(teamPlutoIssued)))
110- else [ScriptTransfer(treasuryAddress, amountToIssue, assetId), ScriptTransfer(i.caller, (totalPluto + premiumPlutoIssued), plutoId), ScriptTransfer(teamAddress, teamPlutoIssued, plutoId)]
105+ then [plutoIssued, plutoBought, premiumPlutoIssued, teamPlutoIssued, amountToIssue]
111106 else throw("Strict value is not equal to itself.")
112107 }
113108 else throw("Strict value is not equal to itself.")
114109 }
110+ else throw("Strict value is not equal to itself.")
111+ }
112+
113+
114+@Callable(i)
115+func issuePluto (debug) = {
116+ let assetId = value(i.payments[0].assetId)
117+ let result = calculateIssuePluto(assetId, value(i.payments[0].amount))
118+ if ((result == result))
119+ then if (debug)
120+ then throw(((((((("issued: " + toString(result[0])) + "; bought: ") + toString(result[1])) + "; premium: ") + toString(result[2])) + "; team: ") + toString(result[3])))
121+ else [ScriptTransfer(treasuryAddress, result[4], assetId), ScriptTransfer(i.caller, ((result[0] + result[1]) + result[2]), plutoId), ScriptTransfer(teamAddress, result[3], plutoId)]
122+ else throw("Strict value is not equal to itself.")
123+ }
124+
125+
126+
127+@Callable(i)
128+func evaluateIssuePluto (debug,assetIdStr,amount) = {
129+ let assetId = fromBase58String(assetIdStr)
130+ let result = calculateIssuePluto(assetId, amount)
131+ if ((result == result))
132+ then if (debug)
133+ then throw(((((((("issued: " + toString(result[0])) + "; bought: ") + toString(result[1])) + "; premium: ") + toString(result[2])) + "; team: ") + toString(result[3])))
134+ else $Tuple2(nil, (result[0] + result[1]))
115135 else throw("Strict value is not equal to itself.")
116136 }
117137
118138
119139 @Verifier(tx)
120140 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
121141

github/deemru/w8io/6500d08 
44.93 ms