tx · DUd3FvVSS6eD7sdFHd5xyJM6UaUoVo3r86CEwwmwKGu4

3Mwe3wUHrsNMLXXhVyGowCYHk2nbXq748Wu:  -0.00900000 Waves

2022.06.28 13:34 [2116173] smart account 3Mwe3wUHrsNMLXXhVyGowCYHk2nbXq748Wu > SELF 0.00000000 Waves

{ "type": 13, "id": "DUd3FvVSS6eD7sdFHd5xyJM6UaUoVo3r86CEwwmwKGu4", "fee": 900000, "feeAssetId": null, "timestamp": 1656412532710, "version": 2, "chainId": 84, "sender": "3Mwe3wUHrsNMLXXhVyGowCYHk2nbXq748Wu", "senderPublicKey": "8gh5umGWLgKR753skjYwFpBbUhx3hsmmyqBM3KQyLYaE", "proofs": [ "565VXxQy4pjZnfzmPf61vqxk4MFCWHhfAQSQWJoufxqptwEfDpyXAnVTuktdUnKPq3thaAT6YFZQDEuCw5VqRiuv" ], "script": "base64:AAIFAAAAAAAAAAwIAhIAEgASABIAEgAAAAAPAAAAAAh1c2RuVXNkdAEAAAAgeKe/TORdN+2VIdfWflWy/q4Ef+gR/VrWL/1DGC+Wt8AAAAAADXVzZG5Vc2R0TFBUQ0kBAAAAIBG6tC/qJMhI0cdjddgUOO1bmK5/To9FHcuj/RydMcYtAAAAAAh3eFVzZG5MUAEAAAAAAAAAAAt3eFVzZG5MUFRDSQEAAAAAAAAAAAlpc1N0b3BwZWQHAAAAAAtrZXlVc2R0VXNkbgIAAAAJU1RBS0VEX0xQAAAAAAtrZXlDb21wb3VuZAIAAAANRnJvbV9Db21wb3VuZAAAAAAOd3hVc2RuQ29tcG91bmQCAAAAEFdYX1VTRE5fY29tcG91bmQAAAAACWtleVdYVVNETgIAAAAHV1hfVVNETgAAAAAMa2V5V0FWRVNVU0ROAgAAAApXQVZFU19VU0ROAAAAABBrZXlXYXZlc0NvbXBvdW5kAgAAABNXQVZFU19VU0ROX0NPTVBPVU5EAAAAAAprZXlCdGNVc2RuAgAAAAhCVENfVVNETgAAAAASa2V5QnRjVXNkbkNvbXBvdW5kAgAAABFCVENfVVNETl9DT01QT1VORAAAAAAKa2V5RXRoVXNkbgIAAAAIRVRIX1VTRE4AAAAAEmtleUV0aFVzZG5Db21wb3VuZAIAAAARRVRIX1VTRE5fQ09NUE9VTkQAAAAFAAAAAWkBAAAAD2RlcG9zaXRXeFVzZG5MUAAAAAAEAAAAA3BtdAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAJcG10QW1vdW50CAUAAAADcG10AAAABmFtb3VudAMJAQAAAAIhPQAAAAIIBQAAAANwbXQAAAAHYXNzZXRJZAUAAAAId3hVc2RuTFAJAAACAAAAAQIAAAAbYXR0YWNoIFdYVVNETkxQIHRva2VucyBvbmx5AwUAAAAJaXNTdG9wcGVkCQAAAgAAAAECAAAAGXNtYXJ0IGNvbnRyYWN0IGlzIG9uIGxvY2sEAAAACHRrU3Rha2VkCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAACWtleVdYVVNETgAAAAAAAAAAAAQAAAALdG90YWxJc3N1ZWQEAAAAByRt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", "height": 2116173, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8BZs4EjCBDW81poHWgtwibtSbS3d7bcRmjPy1DBA5T8Z Next: Fca1YJz2U9oLEW4P7WtYsP7Uif4T3PnCTqZy3jAv9fje Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let token = base58'Fm4qczu6Pepz8KUhh3Heb6LeTVfpSMX5vvNgw3x764CS'
4+let usdnUsdt = base58'97zHFp1C3cB7qfvx8Xv5f2rWp9nUSG5UnAamfPcW6txf'
55
6-let lpTCI = base58'DKaehEck2SuSrCWyUBY6bR4gEvAMZaEm9pqwiNSPXSvn'
6+let usdnUsdtLPTCI = base58'2CD44HANZzsdU7yqRsmz7L9eA2Foh4YYMC4azMbaZEj6'
7+
8+let wxUsdnLP = base58''
9+
10+let wxUsdnLPTCI = base58''
711
812 let isStopped = false
913
10-let keyStaked = "STAKED_LP"
14+let keyUsdtUsdn = "STAKED_LP"
1115
1216 let keyCompound = "From_Compound"
1317
18+let wxUsdnCompound = "WX_USDN_compound"
19+
20+let keyWXUSDN = "WX_USDN"
21+
22+let keyWAVESUSDN = "WAVES_USDN"
23+
24+let keyWavesCompound = "WAVES_USDN_COMPOUND"
25+
26+let keyBtcUsdn = "BTC_USDN"
27+
28+let keyBtcUsdnCompound = "BTC_USDN_COMPOUND"
29+
30+let keyEthUsdn = "ETH_USDN"
31+
32+let keyEthUsdnCompound = "ETH_USDN_COMPOUND"
33+
1434 @Callable(i)
15-func stake () = {
35+func depositWxUsdnLP () = {
1636 let pmt = value(i.payments[0])
1737 let pmtAmount = pmt.amount
18- if ((pmt.assetId != token))
19- then throw("attach USDTUSDNLP tokens only")
38+ if ((pmt.assetId != wxUsdnLP))
39+ then throw("attach WXUSDNLP tokens only")
2040 else if (isStopped)
2141 then throw("smart contract is on lock")
2242 else {
23- let tkStaked = valueOrElse(getInteger(this, keyStaked), 0)
43+ let tkStaked = valueOrElse(getInteger(this, keyWXUSDN), 0)
44+ let totalIssued = match assetInfo(wxUsdnLPTCI) {
45+ case asset: Asset =>
46+ asset.quantity
47+ case _ =>
48+ throw("Can't find asset")
49+ }
2450 let fromCompound = valueOrElse(getInteger(this, keyCompound), 0)
25- let updateState = IntegerEntry(keyStaked, (tkStaked + i.payments[0].amount))
26- if ((updateState == updateState))
51+ let forOne = fraction(totalIssued, 100000000, tkStaked)
52+ let toIssue = fraction(pmtAmount, forOne, 100000000)
53+ let updateState = IntegerEntry(keyUsdtUsdn, (tkStaked + pmtAmount))
54+ let LPstake = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [pmt])
55+ if ((LPstake == LPstake))
2756 then {
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)
57+ let LPIssue = Reissue(wxUsdnLPTCI, toIssue, true)
58+ let transfer = ScriptTransfer(i.caller, toIssue, wxUsdnLPTCI)
4159 [LPIssue, transfer, updateState]
42- }
43- else throw("Strict value is not equal to itself.")
4460 }
4561 else throw("Strict value is not equal to itself.")
4662 }
4965
5066
5167 @Callable(i)
52-func compound () = {
68+func depositUsdtUsdnLP () = {
69+ let pmt = value(i.payments[0])
70+ let pmtAmount = pmt.amount
71+ if ((pmt.assetId != usdnUsdt))
72+ then throw("attach USDTUSDNLP tokens only")
73+ else if (isStopped)
74+ then throw("smart contract is on lock")
75+ else {
76+ let tkStaked = valueOrElse(getInteger(this, keyUsdtUsdn), 0)
77+ let totalIssued = match assetInfo(usdnUsdtLPTCI) {
78+ case asset: Asset =>
79+ asset.quantity
80+ case _ =>
81+ throw("Can't find asset")
82+ }
83+ let fromCompound = valueOrElse(getInteger(this, keyCompound), 0)
84+ let forOne = fraction(totalIssued, 100000000, tkStaked)
85+ let toIssue = fraction(pmtAmount, forOne, 100000000)
86+ let updateState = IntegerEntry(keyUsdtUsdn, (tkStaked + pmtAmount))
87+ let LPstake = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [pmt])
88+ if ((LPstake == LPstake))
89+ then {
90+ let LPIssue = Reissue(usdnUsdtLPTCI, toIssue, true)
91+ let transfer = ScriptTransfer(i.caller, toIssue, usdnUsdtLPTCI)
92+[LPIssue, transfer, updateState]
93+ }
94+ else throw("Strict value is not equal to itself.")
95+ }
96+ }
97+
98+
99+
100+@Callable(i)
101+func compoundUSDTUSDNLP () = {
53102 let compound = value(i.payments[0])
54103 let ca = compound.amount
55- if ((compound.assetId != token))
104+ if ((compound.assetId != usdnUsdt))
56105 then throw("attach USDTUSDNLP tokens only")
57106 else {
58107 let fromCompound = valueOrElse(getInteger(this, keyCompound), 0)
59- let totalStaked = valueOrElse(getInteger(this, keyStaked), 0)
108+ let totalStaked = valueOrElse(getInteger(this, keyUsdtUsdn), 0)
60109 let stakeC = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [compound])
61110 if ((stakeC == stakeC))
62111 then {
63- let updateState = IntegerEntry(keyStaked, (totalStaked + ca))
112+ let updateState = IntegerEntry(keyUsdtUsdn, (totalStaked + ca))
113+ let tc = IntegerEntry(keyCompound, (fromCompound + ca))
114+[updateState, tc]
115+ }
116+ else throw("Strict value is not equal to itself.")
117+ }
118+ }
119+
120+
121+
122+@Callable(i)
123+func compoundWXUSDNLP () = {
124+ let compound = value(i.payments[0])
125+ let ca = compound.amount
126+ if ((compound.assetId != wxUsdnLP))
127+ then throw("attach WXUSDNLP tokens only")
128+ else {
129+ let fromCompound = valueOrElse(getInteger(this, keyCompound), 0)
130+ let totalStaked = valueOrElse(getInteger(this, keyUsdtUsdn), 0)
131+ let stakeC = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [compound])
132+ if ((stakeC == stakeC))
133+ then {
134+ let updateState = IntegerEntry(keyUsdtUsdn, (totalStaked + ca))
64135 let tc = IntegerEntry(keyCompound, (fromCompound + ca))
65136 [updateState, tc]
66137 }
73144 @Callable(i)
74145 func default () = {
75146 let defSt = 100000000
76- let update = IntegerEntry(keyStaked, defSt)
147+ let update = IntegerEntry(keyWXUSDN, defSt)
77148 [update]
78149 }
79150
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let token = base58'Fm4qczu6Pepz8KUhh3Heb6LeTVfpSMX5vvNgw3x764CS'
4+let usdnUsdt = base58'97zHFp1C3cB7qfvx8Xv5f2rWp9nUSG5UnAamfPcW6txf'
55
6-let lpTCI = base58'DKaehEck2SuSrCWyUBY6bR4gEvAMZaEm9pqwiNSPXSvn'
6+let usdnUsdtLPTCI = base58'2CD44HANZzsdU7yqRsmz7L9eA2Foh4YYMC4azMbaZEj6'
7+
8+let wxUsdnLP = base58''
9+
10+let wxUsdnLPTCI = base58''
711
812 let isStopped = false
913
10-let keyStaked = "STAKED_LP"
14+let keyUsdtUsdn = "STAKED_LP"
1115
1216 let keyCompound = "From_Compound"
1317
18+let wxUsdnCompound = "WX_USDN_compound"
19+
20+let keyWXUSDN = "WX_USDN"
21+
22+let keyWAVESUSDN = "WAVES_USDN"
23+
24+let keyWavesCompound = "WAVES_USDN_COMPOUND"
25+
26+let keyBtcUsdn = "BTC_USDN"
27+
28+let keyBtcUsdnCompound = "BTC_USDN_COMPOUND"
29+
30+let keyEthUsdn = "ETH_USDN"
31+
32+let keyEthUsdnCompound = "ETH_USDN_COMPOUND"
33+
1434 @Callable(i)
15-func stake () = {
35+func depositWxUsdnLP () = {
1636 let pmt = value(i.payments[0])
1737 let pmtAmount = pmt.amount
18- if ((pmt.assetId != token))
19- then throw("attach USDTUSDNLP tokens only")
38+ if ((pmt.assetId != wxUsdnLP))
39+ then throw("attach WXUSDNLP tokens only")
2040 else if (isStopped)
2141 then throw("smart contract is on lock")
2242 else {
23- let tkStaked = valueOrElse(getInteger(this, keyStaked), 0)
43+ let tkStaked = valueOrElse(getInteger(this, keyWXUSDN), 0)
44+ let totalIssued = match assetInfo(wxUsdnLPTCI) {
45+ case asset: Asset =>
46+ asset.quantity
47+ case _ =>
48+ throw("Can't find asset")
49+ }
2450 let fromCompound = valueOrElse(getInteger(this, keyCompound), 0)
25- let updateState = IntegerEntry(keyStaked, (tkStaked + i.payments[0].amount))
26- if ((updateState == updateState))
51+ let forOne = fraction(totalIssued, 100000000, tkStaked)
52+ let toIssue = fraction(pmtAmount, forOne, 100000000)
53+ let updateState = IntegerEntry(keyUsdtUsdn, (tkStaked + pmtAmount))
54+ let LPstake = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [pmt])
55+ if ((LPstake == LPstake))
2756 then {
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)
57+ let LPIssue = Reissue(wxUsdnLPTCI, toIssue, true)
58+ let transfer = ScriptTransfer(i.caller, toIssue, wxUsdnLPTCI)
4159 [LPIssue, transfer, updateState]
42- }
43- else throw("Strict value is not equal to itself.")
4460 }
4561 else throw("Strict value is not equal to itself.")
4662 }
4763 }
4864
4965
5066
5167 @Callable(i)
52-func compound () = {
68+func depositUsdtUsdnLP () = {
69+ let pmt = value(i.payments[0])
70+ let pmtAmount = pmt.amount
71+ if ((pmt.assetId != usdnUsdt))
72+ then throw("attach USDTUSDNLP tokens only")
73+ else if (isStopped)
74+ then throw("smart contract is on lock")
75+ else {
76+ let tkStaked = valueOrElse(getInteger(this, keyUsdtUsdn), 0)
77+ let totalIssued = match assetInfo(usdnUsdtLPTCI) {
78+ case asset: Asset =>
79+ asset.quantity
80+ case _ =>
81+ throw("Can't find asset")
82+ }
83+ let fromCompound = valueOrElse(getInteger(this, keyCompound), 0)
84+ let forOne = fraction(totalIssued, 100000000, tkStaked)
85+ let toIssue = fraction(pmtAmount, forOne, 100000000)
86+ let updateState = IntegerEntry(keyUsdtUsdn, (tkStaked + pmtAmount))
87+ let LPstake = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [pmt])
88+ if ((LPstake == LPstake))
89+ then {
90+ let LPIssue = Reissue(usdnUsdtLPTCI, toIssue, true)
91+ let transfer = ScriptTransfer(i.caller, toIssue, usdnUsdtLPTCI)
92+[LPIssue, transfer, updateState]
93+ }
94+ else throw("Strict value is not equal to itself.")
95+ }
96+ }
97+
98+
99+
100+@Callable(i)
101+func compoundUSDTUSDNLP () = {
53102 let compound = value(i.payments[0])
54103 let ca = compound.amount
55- if ((compound.assetId != token))
104+ if ((compound.assetId != usdnUsdt))
56105 then throw("attach USDTUSDNLP tokens only")
57106 else {
58107 let fromCompound = valueOrElse(getInteger(this, keyCompound), 0)
59- let totalStaked = valueOrElse(getInteger(this, keyStaked), 0)
108+ let totalStaked = valueOrElse(getInteger(this, keyUsdtUsdn), 0)
60109 let stakeC = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [compound])
61110 if ((stakeC == stakeC))
62111 then {
63- let updateState = IntegerEntry(keyStaked, (totalStaked + ca))
112+ let updateState = IntegerEntry(keyUsdtUsdn, (totalStaked + ca))
113+ let tc = IntegerEntry(keyCompound, (fromCompound + ca))
114+[updateState, tc]
115+ }
116+ else throw("Strict value is not equal to itself.")
117+ }
118+ }
119+
120+
121+
122+@Callable(i)
123+func compoundWXUSDNLP () = {
124+ let compound = value(i.payments[0])
125+ let ca = compound.amount
126+ if ((compound.assetId != wxUsdnLP))
127+ then throw("attach WXUSDNLP tokens only")
128+ else {
129+ let fromCompound = valueOrElse(getInteger(this, keyCompound), 0)
130+ let totalStaked = valueOrElse(getInteger(this, keyUsdtUsdn), 0)
131+ let stakeC = invoke(Address(base58'3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz'), "stake", nil, [compound])
132+ if ((stakeC == stakeC))
133+ then {
134+ let updateState = IntegerEntry(keyUsdtUsdn, (totalStaked + ca))
64135 let tc = IntegerEntry(keyCompound, (fromCompound + ca))
65136 [updateState, tc]
66137 }
67138 else throw("Strict value is not equal to itself.")
68139 }
69140 }
70141
71142
72143
73144 @Callable(i)
74145 func default () = {
75146 let defSt = 100000000
76- let update = IntegerEntry(keyStaked, defSt)
147+ let update = IntegerEntry(keyWXUSDN, defSt)
77148 [update]
78149 }
79150
80151
81152 @Verifier(tx)
82153 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
83154

github/deemru/w8io/3ef1775 
51.36 ms