tx · 79Z1Zp1DG2tpmF8uxFoV3siQ2LvaijSWJwt6GFZ3Jfqc

3P9VVzzkP1Cfsk3LtTeuUaQqUt5D7sLthLe:  -0.00900000 Waves

2022.06.29 14:24 [3183263] smart account 3P9VVzzkP1Cfsk3LtTeuUaQqUt5D7sLthLe > SELF 0.00000000 Waves

{ "type": 13, "id": "79Z1Zp1DG2tpmF8uxFoV3siQ2LvaijSWJwt6GFZ3Jfqc", "fee": 900000, "feeAssetId": null, "timestamp": 1656501861454, "version": 2, "chainId": 87, "sender": "3P9VVzzkP1Cfsk3LtTeuUaQqUt5D7sLthLe", "senderPublicKey": "HiH9eknsCZ417kt2aJnJ9HrnrWCYcdRoGsFi8yANmYx8", "proofs": [ "yTEb9Lhq9SSuFK2wn54wnwhD1L1DtcX7wDXxCZCu366aEvpjZnERNd2TwFBXswP51Qiaz9ihEmGFNpACdT7d7Nt" ], "script": "base64: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", "height": 3183263, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 68X3HfnHdEtWDa2Ni5DxEyAz5uFQGy7tXik4oFieAwSD Next: 9nSDMuskYRASLBFmCZN89KibzWqkTnpNFQ8ErPPXeQ7J Diff:
OldNewDifferences
1010 let issuerAddress = Address(base58'3PF8pKC8CdmW9sEJUxQVSfezYRSJeThoNR3')
1111
1212 let treasuryAddress = Address(base58'3PAeDQGNbYa3W2EacZkJG3dSiDnHsQarqzZ')
13+
14+let teamAddress = Address(base58'3PMcMiMEs6w56NRGacksXtFG5zS7doE9fpL')
1315
1416 let Scale8 = 100000000
1517
7476 case _ =>
7577 throw("cannot parse parameters")
7678 }
79+ let teamPremium = match onboardingParameters[3] {
80+ case x: Int =>
81+ x
82+ case _ =>
83+ throw("cannot parse parameters")
84+ }
7785 let assetId = value(i.payments[0].assetId)
7886 let assetIdStr = toBase58String(assetId)
7987 let amount = i.payments[0].amount
94102 let plutoIssued = fraction(amountToIssue, assetPriceToPluto, Scale8)
95103 let totalPluto = (plutoBought + plutoIssued)
96104 let premiumPlutoIssued = fraction(totalPluto, premium, 10000)
97- let inv2 = invoke(issuerAddress, "requestIssue", [(plutoIssued + premiumPlutoIssued)], nil)
105+ let teamPlutoIssued = fraction(totalPluto, teamPremium, 10000)
106+ let inv2 = invoke(issuerAddress, "requestIssue", [((plutoIssued + premiumPlutoIssued) + teamPlutoIssued)], nil)
98107 if ((inv2 == inv2))
99108 then if (debug)
100- then throw(((((("issued: " + toString(plutoIssued)) + "; bought: ") + toString(plutoBought)) + "; premium: ") + toString(premiumPlutoIssued)))
101- else [ScriptTransfer(treasuryAddress, amountToIssue, assetId), ScriptTransfer(i.caller, (totalPluto + premiumPlutoIssued), plutoId)]
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)]
102111 else throw("Strict value is not equal to itself.")
103112 }
104113 else throw("Strict value is not equal to itself.")
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')
13+
14+let teamAddress = Address(base58'3PMcMiMEs6w56NRGacksXtFG5zS7doE9fpL')
1315
1416 let Scale8 = 100000000
1517
1618 func tryGetInteger (key) = match getInteger(this, key) {
1719 case x: Int =>
1820 x
1921 case _ =>
2022 0
2123 }
2224
2325
2426 func tryGetIntParameter (key) = match getInteger(parametersAddress, key) {
2527 case x: Int =>
2628 x
2729 case _ =>
2830 0
2931 }
3032
3133
3234 func tryGetStrParameter (key) = match getString(parametersAddress, key) {
3335 case x: String =>
3436 x
3537 case _ =>
3638 ""
3739 }
3840
3941
4042 func calculateBuybackRatio () = {
4143 let treasurySize = tryGetIntParameter("stats_treasurySize")
4244 5000
4345 }
4446
4547
4648 func calculatePoolPrice (poolAddress,assetStr) = {
4749 let a0Weight = getIntegerValue(poolAddress, (("static_" + assetStr) + "_weight"))
4850 let a1Weight = getIntegerValue(poolAddress, (("static_" + plutoIdStr) + "_weight"))
4951 let a0Balance = getIntegerValue(poolAddress, (("global_" + assetStr) + "_balance"))
5052 let a1Balance = getIntegerValue(poolAddress, (("global_" + plutoIdStr) + "_balance"))
5153 fraction(Scale8, (a1Balance * a0Weight), (a0Balance * a1Weight))
5254 }
5355
5456
5557 @Callable(i)
5658 func issuePluto (debug) = {
5759 let onboardingParameters = match invoke(parametersAddress, "getOnboardingParameters", [false], nil) {
5860 case in: List[Any] =>
5961 in
6062 case _ =>
6163 throw("cannot load parameters")
6264 }
6365 if ((onboardingParameters == onboardingParameters))
6466 then {
6567 let buybackRatio = match onboardingParameters[4] {
6668 case x: Int =>
6769 x
6870 case _ =>
6971 throw("cannot parse parameters")
7072 }
7173 let premium = match onboardingParameters[1] {
7274 case x: Int =>
7375 x
7476 case _ =>
7577 throw("cannot parse parameters")
7678 }
79+ let teamPremium = match onboardingParameters[3] {
80+ case x: Int =>
81+ x
82+ case _ =>
83+ throw("cannot parse parameters")
84+ }
7785 let assetId = value(i.payments[0].assetId)
7886 let assetIdStr = toBase58String(assetId)
7987 let amount = i.payments[0].amount
8088 let poolStr = tryGetStrParameter((("asset_" + assetIdStr) + "_pool"))
8189 let poolAddress = addressFromStringValue(poolStr)
8290 let amountToBuyback = fraction(amount, buybackRatio, 10000)
8391 let amountToIssue = (amount - amountToBuyback)
8492 let inv = invoke(poolAddress, "swap", [plutoIdStr, 0], [AttachedPayment(assetId, amountToBuyback)])
8593 if ((inv == inv))
8694 then {
8795 let plutoBought = match inv {
8896 case x: Int =>
8997 x
9098 case _ =>
9199 0
92100 }
93101 let assetPriceToPluto = calculatePoolPrice(poolAddress, assetIdStr)
94102 let plutoIssued = fraction(amountToIssue, assetPriceToPluto, Scale8)
95103 let totalPluto = (plutoBought + plutoIssued)
96104 let premiumPlutoIssued = fraction(totalPluto, premium, 10000)
97- let inv2 = invoke(issuerAddress, "requestIssue", [(plutoIssued + premiumPlutoIssued)], nil)
105+ let teamPlutoIssued = fraction(totalPluto, teamPremium, 10000)
106+ let inv2 = invoke(issuerAddress, "requestIssue", [((plutoIssued + premiumPlutoIssued) + teamPlutoIssued)], nil)
98107 if ((inv2 == inv2))
99108 then if (debug)
100- then throw(((((("issued: " + toString(plutoIssued)) + "; bought: ") + toString(plutoBought)) + "; premium: ") + toString(premiumPlutoIssued)))
101- else [ScriptTransfer(treasuryAddress, amountToIssue, assetId), ScriptTransfer(i.caller, (totalPluto + premiumPlutoIssued), plutoId)]
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)]
102111 else throw("Strict value is not equal to itself.")
103112 }
104113 else throw("Strict value is not equal to itself.")
105114 }
106115 else throw("Strict value is not equal to itself.")
107116 }
108117
109118
110119 @Verifier(tx)
111120 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
112121

github/deemru/w8io/6500d08 
48.26 ms