tx · 4yEFNrXitLRCPT7qGQUjxmcFdNua4vPiXREGixMd6vJD

3Mu3rHXsZEzEFRmstTmo2ibxjvaHNd4hU6t:  -0.01400000 Waves

2022.05.27 10:00 [2069749] smart account 3Mu3rHXsZEzEFRmstTmo2ibxjvaHNd4hU6t > SELF 0.00000000 Waves

{ "type": 13, "id": "4yEFNrXitLRCPT7qGQUjxmcFdNua4vPiXREGixMd6vJD", "fee": 1400000, "feeAssetId": null, "timestamp": 1653634830650, "version": 2, "chainId": 84, "sender": "3Mu3rHXsZEzEFRmstTmo2ibxjvaHNd4hU6t", "senderPublicKey": "Cn7Ky2YAx4p6dx8e7Mcb9rTQ2Z5TD9MrRbLA8AXDsumJ", "proofs": [ "571foCzfFhxJM6q9tF9pxgNgKdZifQCzcNqFbM1NMiDRsCxNwRCk6s4TVqSShYfb2AYaZegNiMhwrCdDqLiq1Q54" ], "script": "base64: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", "height": 2069749, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8Meps3iCGHiJDuR6VvknXuRaRA6Lqjgj77YKXe8rEScS Next: 2yvs7h94JprVLZpYmyDDR84DAABDifeyfyTQpK6ezs5Z Diff:
OldNewDifferences
99
1010 let keyStaked = "STAKED_LP"
1111
12-let keyCompound = "COMPOUND"
12+let keyCompound = "From_Compound"
1313
1414 @Callable(i)
15-func default () = {
16- let pmt = i.payments[0]
17- let am = pmt.amount
18- if ((0 >= am))
19- then throw("Negative or zero amount")
20- else if ((pmt.assetId != token))
21- then throw("Invalid token")
15+func stake () = {
16+ let pmt = value(i.payments[0])
17+ let pmtAmount = pmt.amount
18+ if ((pmt.assetId != token))
19+ then throw("attach USDTUSDNLP tokens only")
20+ else if (isStopped)
21+ then throw("smart contract is on lock")
2222 else {
23- let c = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [pmt])
24- if ((c == c))
23+ let tkStaked = valueOrElse(getInteger(this, keyStaked), assetBalance(this, token))
24+ let fromCompound = valueOrElse(getInteger(this, keyCompound), 0)
25+ let updateState = IntegerEntry(keyStaked, ((tkStaked + i.payments[0].amount) - assetBalance(this, token)))
26+ if ((updateState == updateState))
2527 then {
26- let setData = IntegerEntry(keyStaked, am)
27-[setData]
28+ let totalIssued = match assetInfo(lpTCI) {
29+ case asset: Asset =>
30+ asset.quantity
31+ case _ =>
32+ throw("Can't find asset")
33+ }
34+ let forOne = fraction(totalIssued, 100000000, tkStaked)
35+ let toIssue = fraction(pmtAmount, forOne, 100000000)
36+ let LPstake = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [pmt])
37+ if ((LPstake == LPstake))
38+ then {
39+ let LPIssue = Reissue(lpTCI, toIssue, true)
40+ let transfer = ScriptTransfer(i.caller, toIssue, lpTCI)
41+[LPIssue, transfer, updateState]
42+ }
43+ else throw("Strict value is not equal to itself.")
2844 }
2945 else throw("Strict value is not equal to itself.")
3046 }
47+ }
48+
49+
50+
51+@Callable(i)
52+func compound () = {
53+ let compound = value(i.payments[0])
54+ let ca = compound.amount
55+ if ((compound.assetId != token))
56+ then throw("attach USDTUSDNLP tokens only")
57+ else {
58+ let fromCompound = valueOrElse(getInteger(this, keyCompound), 0)
59+ let totalStaked = valueOrElse(getInteger(this, keyStaked), 0)
60+ let stakeC = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [compound])
61+ if ((stakeC == stakeC))
62+ then {
63+ let updateState = IntegerEntry(keyStaked, (totalStaked + ca))
64+ let tc = IntegerEntry(keyCompound, (fromCompound + ca))
65+[updateState, tc]
66+ }
67+ else throw("Strict value is not equal to itself.")
68+ }
69+ }
70+
71+
72+
73+@Callable(i)
74+func init () = {
75+ let pm = i.payments[0]
76+ let am = pm.amount
77+ if ((pm.assetId != token))
78+ then throw("Unexpected token")
79+ else {
80+ let s = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [pm])
81+ if ((s == s))
82+ then {
83+ let upd = IntegerEntry(keyStaked, am)
84+ let updK = IntegerEntry(keyCompound, 0)
85+[upd]
86+ }
87+ else throw("Strict value is not equal to itself.")
88+ }
3189 }
3290
3391
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let token = base58'Fm4qczu6Pepz8KUhh3Heb6LeTVfpSMX5vvNgw3x764CS'
55
66 let lpTCI = base58'FpG53PqcPPUmMwjHd2SQrpLPMXYHUBpdoM1ynBbMzsAk'
77
88 let isStopped = false
99
1010 let keyStaked = "STAKED_LP"
1111
12-let keyCompound = "COMPOUND"
12+let keyCompound = "From_Compound"
1313
1414 @Callable(i)
15-func default () = {
16- let pmt = i.payments[0]
17- let am = pmt.amount
18- if ((0 >= am))
19- then throw("Negative or zero amount")
20- else if ((pmt.assetId != token))
21- then throw("Invalid token")
15+func stake () = {
16+ let pmt = value(i.payments[0])
17+ let pmtAmount = pmt.amount
18+ if ((pmt.assetId != token))
19+ then throw("attach USDTUSDNLP tokens only")
20+ else if (isStopped)
21+ then throw("smart contract is on lock")
2222 else {
23- let c = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [pmt])
24- if ((c == c))
23+ let tkStaked = valueOrElse(getInteger(this, keyStaked), assetBalance(this, token))
24+ let fromCompound = valueOrElse(getInteger(this, keyCompound), 0)
25+ let updateState = IntegerEntry(keyStaked, ((tkStaked + i.payments[0].amount) - assetBalance(this, token)))
26+ if ((updateState == updateState))
2527 then {
26- let setData = IntegerEntry(keyStaked, am)
27-[setData]
28+ let totalIssued = match assetInfo(lpTCI) {
29+ case asset: Asset =>
30+ asset.quantity
31+ case _ =>
32+ throw("Can't find asset")
33+ }
34+ let forOne = fraction(totalIssued, 100000000, tkStaked)
35+ let toIssue = fraction(pmtAmount, forOne, 100000000)
36+ let LPstake = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [pmt])
37+ if ((LPstake == LPstake))
38+ then {
39+ let LPIssue = Reissue(lpTCI, toIssue, true)
40+ let transfer = ScriptTransfer(i.caller, toIssue, lpTCI)
41+[LPIssue, transfer, updateState]
42+ }
43+ else throw("Strict value is not equal to itself.")
2844 }
2945 else throw("Strict value is not equal to itself.")
3046 }
47+ }
48+
49+
50+
51+@Callable(i)
52+func compound () = {
53+ let compound = value(i.payments[0])
54+ let ca = compound.amount
55+ if ((compound.assetId != token))
56+ then throw("attach USDTUSDNLP tokens only")
57+ else {
58+ let fromCompound = valueOrElse(getInteger(this, keyCompound), 0)
59+ let totalStaked = valueOrElse(getInteger(this, keyStaked), 0)
60+ let stakeC = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [compound])
61+ if ((stakeC == stakeC))
62+ then {
63+ let updateState = IntegerEntry(keyStaked, (totalStaked + ca))
64+ let tc = IntegerEntry(keyCompound, (fromCompound + ca))
65+[updateState, tc]
66+ }
67+ else throw("Strict value is not equal to itself.")
68+ }
69+ }
70+
71+
72+
73+@Callable(i)
74+func init () = {
75+ let pm = i.payments[0]
76+ let am = pm.amount
77+ if ((pm.assetId != token))
78+ then throw("Unexpected token")
79+ else {
80+ let s = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [pm])
81+ if ((s == s))
82+ then {
83+ let upd = IntegerEntry(keyStaked, am)
84+ let updK = IntegerEntry(keyCompound, 0)
85+[upd]
86+ }
87+ else throw("Strict value is not equal to itself.")
88+ }
3189 }
3290
3391
3492 @Verifier(tx)
3593 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
3694

github/deemru/w8io/3ef1775 
50.65 ms