tx · 5L9iM798B2SFnAozFV6qCf6fgBx8ytmvxFE3ovuXYVfv

3N3en9HRhzbk3DDqeGd6DUKc1SG4rmpXguH:  -0.05990000 Waves

2020.10.18 14:47 [1225974] smart account 3N3en9HRhzbk3DDqeGd6DUKc1SG4rmpXguH > SELF 0.00000000 Waves

{ "type": 13, "id": "5L9iM798B2SFnAozFV6qCf6fgBx8ytmvxFE3ovuXYVfv", "fee": 5990000, "feeAssetId": null, "timestamp": 1603021645963, "version": 2, "chainId": 84, "sender": "3N3en9HRhzbk3DDqeGd6DUKc1SG4rmpXguH", "senderPublicKey": "3UC2eCnSLx9fHcXvssZJZLNzMshb9NM6GchfmEhx6syQ", "proofs": [ "5sJDUMuREMm1pCToFdKixnDBxtqskSsJ2zF5D3LKFWG1pBUSYoWHbWiqrkZ6Kxte9wqwgfqP1tz8RVjEKSawcy7M" ], "script": "base64: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", "height": 1225974, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DogKWkJZ2U9s7rrUKWLvtdwWRygno1fbtD1BmHA1Nf3K Next: none Diff:
OldNewDifferences
2626
2727
2828 @Callable(i)
29-func deposit () = {
29+func Stake () = {
3030 let CollateralToken = base58'5hHK64aujiyn7cNrTBwhe5yJQuxs119KTPbE9nFjLoUN'
3131 let GovernToken = base58'DeyMK8USWs9ijzAXNy2azA3soajfrXjUNiJBdSJJsvMJ'
3232 let pmt = extract(i.payment)
3434 then (extract(pmt.assetId) == CollateralToken)
3535 else false)
3636 then {
37- let currentKey = toBase58String(i.caller.bytes)
37+ let currentKey = ((toBase58String(i.caller.bytes) + "_") + toBase58String(extract(pmt.assetId)))
3838 let currentAmount = match getInteger(this, currentKey) {
3939 case a: Int =>
4040 a
4848 else ScriptResult(WriteSet([DataEntry(currentKey, 10), DataEntry(currentKey, newAmount)]), TransferSet([ScriptTransfer(i.caller, 10, GovernToken)]))
4949 }
5050 else throw("Can deposit only MyToken")
51+ }
52+
53+
54+
55+@Callable(i)
56+func PayToken () = {
57+ let GovernToken = base58'DeyMK8USWs9ijzAXNy2azA3soajfrXjUNiJBdSJJsvMJ'
58+ let pmt = extract(i.payment)
59+ if (if (isDefined(pmt.assetId))
60+ then (extract(pmt.assetId) == GovernToken)
61+ else false)
62+ then {
63+ let currentKey = ((toBase58String(i.caller.bytes) + "_") + toBase58String(extract(pmt.assetId)))
64+ let currentAmount = match getInteger(this, currentKey) {
65+ case a: Int =>
66+ a
67+ case _ =>
68+ 0
69+ }
70+ let newAmount = (currentAmount + pmt.amount)
71+ let GovernTokenAmount = assetBalance(this, GovernToken)
72+ WriteSet([DataEntry(currentKey, newAmount)])
73+ }
74+ else throw("Can deposit only Govern Token")
5175 }
5276
5377
80104
81105 @Callable(i)
82106 func ClaimPrize () = {
83- let CollateralToken = base58'5hHK64aujiyn7cNrTBwhe5yJQuxs119KTPbE9nFjLoUN'
107+ let StakedToken = base58'5hHK64aujiyn7cNrTBwhe5yJQuxs119KTPbE9nFjLoUN'
84108 let GovernToken = base58'DeyMK8USWs9ijzAXNy2azA3soajfrXjUNiJBdSJJsvMJ'
85109 let winnerPrize = "3N1QzUHdfyXmKVFAn9TPHG7iuW4uK53pfXA"
86110 let winAddress = Address(base58'3N1QzUHdfyXmKVFAn9TPHG7iuW4uK53pfXA')
87111 let FundBoxAddress = Address(base58'3NCMrhPAVqXgtLdpi2BhFWpJkMBUAFrozbD')
88112 let FundBox = "3NCMrhPAVqXgtLdpi2BhFWpJkMBUAFrozbD"
89- let currentKey = toBase58String(i.caller.bytes)
90- let CallerAmount = match getInteger(this, currentKey) {
113+ let UserGovernTokenKey = ((toBase58String(i.caller.bytes) + "_") + toBase58String(GovernToken))
114+ let UserStakedToken = ((toBase58String(i.caller.bytes) + "_") + toBase58String(GovernToken))
115+ let UserGovernTokenAmount = match getInteger(this, UserGovernTokenKey) {
116+ case a: Int =>
117+ a
118+ case _ =>
119+ 0
120+ }
121+ let UserStakedTokenAmount = match getInteger(this, UserStakedToken) {
91122 case a: Int =>
92123 a
93124 case _ =>
101132 }
102133 if ((PrizeAmount == 0))
103134 then throw("No prize to Claim")
104- else if ((currentKey != winnerPrize))
135+ else if ((UserGovernTokenKey != winnerPrize))
105136 then throw("You are not the winner hence cannot claim the reward")
106- else if ((CallerAmount > 0))
107- then ScriptResult(WriteSet([DataEntry(winnerPrize, PrizeAmount), DataEntry(FundBox, 0), DataEntry(currentKey, 1)]), TransferSet([ScriptTransfer(winAddress, PrizeAmount, CollateralToken), ScriptTransfer(i.caller, 10, GovernToken)]))
108- else throw("You need to have deposit in the Contract to claim reward")
137+ else if (if ((UserGovernTokenAmount > 100))
138+ then (UserStakedTokenAmount > 0)
139+ else false)
140+ then ScriptResult(WriteSet([DataEntry(winnerPrize, PrizeAmount), DataEntry(FundBox, 0), DataEntry(UserGovernTokenKey, 100)]), TransferSet([ScriptTransfer(winAddress, PrizeAmount, StakedToken), ScriptTransfer(i.caller, 100, GovernToken)]))
141+ else throw("You need to have STaked and GovernToken in the Contract to claim reward")
109142 }
110143
111144
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44
55
66 @Callable(i)
77 func payYield () = {
88 let GovernToken = base58'DeyMK8USWs9ijzAXNy2azA3soajfrXjUNiJBdSJJsvMJ'
99 let currentKey = toBase58String(i.caller.bytes)
1010 let currentAmount = match getInteger(this, currentKey) {
1111 case a: Int =>
1212 a
1313 case _ =>
1414 0
1515 }
1616 if ((currentAmount > 0))
1717 then {
1818 let GovernTokenAmount = assetBalance(this, GovernToken)
1919 if ((1 > GovernTokenAmount))
2020 then throw("No enough GovernToken In Contract")
2121 else ScriptResult(WriteSet([DataEntry(currentKey, 10)]), TransferSet([ScriptTransfer(i.caller, 1, GovernToken)]))
2222 }
2323 else throw("You need to deposit Collateral Token to receive Govern Token")
2424 }
2525
2626
2727
2828 @Callable(i)
29-func deposit () = {
29+func Stake () = {
3030 let CollateralToken = base58'5hHK64aujiyn7cNrTBwhe5yJQuxs119KTPbE9nFjLoUN'
3131 let GovernToken = base58'DeyMK8USWs9ijzAXNy2azA3soajfrXjUNiJBdSJJsvMJ'
3232 let pmt = extract(i.payment)
3333 if (if (isDefined(pmt.assetId))
3434 then (extract(pmt.assetId) == CollateralToken)
3535 else false)
3636 then {
37- let currentKey = toBase58String(i.caller.bytes)
37+ let currentKey = ((toBase58String(i.caller.bytes) + "_") + toBase58String(extract(pmt.assetId)))
3838 let currentAmount = match getInteger(this, currentKey) {
3939 case a: Int =>
4040 a
4141 case _ =>
4242 0
4343 }
4444 let newAmount = (currentAmount + pmt.amount)
4545 let GovernTokenAmount = assetBalance(this, GovernToken)
4646 if ((1 > GovernTokenAmount))
4747 then throw("No enough GovernToken In Contract")
4848 else ScriptResult(WriteSet([DataEntry(currentKey, 10), DataEntry(currentKey, newAmount)]), TransferSet([ScriptTransfer(i.caller, 10, GovernToken)]))
4949 }
5050 else throw("Can deposit only MyToken")
51+ }
52+
53+
54+
55+@Callable(i)
56+func PayToken () = {
57+ let GovernToken = base58'DeyMK8USWs9ijzAXNy2azA3soajfrXjUNiJBdSJJsvMJ'
58+ let pmt = extract(i.payment)
59+ if (if (isDefined(pmt.assetId))
60+ then (extract(pmt.assetId) == GovernToken)
61+ else false)
62+ then {
63+ let currentKey = ((toBase58String(i.caller.bytes) + "_") + toBase58String(extract(pmt.assetId)))
64+ let currentAmount = match getInteger(this, currentKey) {
65+ case a: Int =>
66+ a
67+ case _ =>
68+ 0
69+ }
70+ let newAmount = (currentAmount + pmt.amount)
71+ let GovernTokenAmount = assetBalance(this, GovernToken)
72+ WriteSet([DataEntry(currentKey, newAmount)])
73+ }
74+ else throw("Can deposit only Govern Token")
5175 }
5276
5377
5478
5579 @Callable(i)
5680 func withdrawFunds (amount) = {
5781 let CollateralToken = base58'5hHK64aujiyn7cNrTBwhe5yJQuxs119KTPbE9nFjLoUN'
5882 let GovernToken = base58'DeyMK8USWs9ijzAXNy2azA3soajfrXjUNiJBdSJJsvMJ'
5983 let currentKey = toBase58String(i.caller.bytes)
6084 let currentAmount = match getInteger(this, currentKey) {
6185 case a: Int =>
6286 a
6387 case _ =>
6488 0
6589 }
6690 let newAmount = (currentAmount - amount)
6791 if ((0 > amount))
6892 then throw("Can't withdraw negative amount")
6993 else if ((0 > newAmount))
7094 then throw("User cannot withdraw more than deposited funds")
7195 else {
7296 let GovernTokenAmount = assetBalance(this, GovernToken)
7397 if ((1 > GovernTokenAmount))
7498 then throw("No enough GovernToken In Contract")
7599 else ScriptResult(WriteSet([DataEntry(currentKey, 1), DataEntry(currentKey, newAmount)]), TransferSet([ScriptTransfer(i.caller, 1, GovernToken), ScriptTransfer(i.caller, amount, CollateralToken)]))
76100 }
77101 }
78102
79103
80104
81105 @Callable(i)
82106 func ClaimPrize () = {
83- let CollateralToken = base58'5hHK64aujiyn7cNrTBwhe5yJQuxs119KTPbE9nFjLoUN'
107+ let StakedToken = base58'5hHK64aujiyn7cNrTBwhe5yJQuxs119KTPbE9nFjLoUN'
84108 let GovernToken = base58'DeyMK8USWs9ijzAXNy2azA3soajfrXjUNiJBdSJJsvMJ'
85109 let winnerPrize = "3N1QzUHdfyXmKVFAn9TPHG7iuW4uK53pfXA"
86110 let winAddress = Address(base58'3N1QzUHdfyXmKVFAn9TPHG7iuW4uK53pfXA')
87111 let FundBoxAddress = Address(base58'3NCMrhPAVqXgtLdpi2BhFWpJkMBUAFrozbD')
88112 let FundBox = "3NCMrhPAVqXgtLdpi2BhFWpJkMBUAFrozbD"
89- let currentKey = toBase58String(i.caller.bytes)
90- let CallerAmount = match getInteger(this, currentKey) {
113+ let UserGovernTokenKey = ((toBase58String(i.caller.bytes) + "_") + toBase58String(GovernToken))
114+ let UserStakedToken = ((toBase58String(i.caller.bytes) + "_") + toBase58String(GovernToken))
115+ let UserGovernTokenAmount = match getInteger(this, UserGovernTokenKey) {
116+ case a: Int =>
117+ a
118+ case _ =>
119+ 0
120+ }
121+ let UserStakedTokenAmount = match getInteger(this, UserStakedToken) {
91122 case a: Int =>
92123 a
93124 case _ =>
94125 0
95126 }
96127 let PrizeAmount = match getInteger(this, FundBox) {
97128 case a: Int =>
98129 a
99130 case _ =>
100131 0
101132 }
102133 if ((PrizeAmount == 0))
103134 then throw("No prize to Claim")
104- else if ((currentKey != winnerPrize))
135+ else if ((UserGovernTokenKey != winnerPrize))
105136 then throw("You are not the winner hence cannot claim the reward")
106- else if ((CallerAmount > 0))
107- then ScriptResult(WriteSet([DataEntry(winnerPrize, PrizeAmount), DataEntry(FundBox, 0), DataEntry(currentKey, 1)]), TransferSet([ScriptTransfer(winAddress, PrizeAmount, CollateralToken), ScriptTransfer(i.caller, 10, GovernToken)]))
108- else throw("You need to have deposit in the Contract to claim reward")
137+ else if (if ((UserGovernTokenAmount > 100))
138+ then (UserStakedTokenAmount > 0)
139+ else false)
140+ then ScriptResult(WriteSet([DataEntry(winnerPrize, PrizeAmount), DataEntry(FundBox, 0), DataEntry(UserGovernTokenKey, 100)]), TransferSet([ScriptTransfer(winAddress, PrizeAmount, StakedToken), ScriptTransfer(i.caller, 100, GovernToken)]))
141+ else throw("You need to have STaked and GovernToken in the Contract to claim reward")
109142 }
110143
111144

github/deemru/w8io/3ef1775 
44.07 ms