tx · 5BA3VBgH32UAYwHy5f7vEDHN53m4CFkg8FjCM8KVcfwP

3PMLDU7uLs9diGm4vg2tHjG9TocMx5jhDMn:  -0.01000000 Waves

2022.01.23 21:11 [2957018] smart account 3PMLDU7uLs9diGm4vg2tHjG9TocMx5jhDMn > SELF 0.00000000 Waves

{ "type": 13, "id": "5BA3VBgH32UAYwHy5f7vEDHN53m4CFkg8FjCM8KVcfwP", "fee": 1000000, "feeAssetId": null, "timestamp": 1642961516933, "version": 2, "chainId": 87, "sender": "3PMLDU7uLs9diGm4vg2tHjG9TocMx5jhDMn", "senderPublicKey": "BdQ4RuEmtibshZ3dozVgwTHaHbdqTBvAUZm1gGRWvutJ", "proofs": [ "3tUjKjQeXAzbDznjJN6W96zJmvQQ74f26gtnY3MWNRYsdfdZs12iSaVcYhPnYSbe5vPVT1hcurdFvFdmjBQh4kvf" ], "script": "base64:AAIFAAAAAAAABMcIAhIAEgQKAgEEEgMKAQQSAwoBCBIAGhIKAUESDXRyeUdldEludGVnZXIaCAoBQhIDa2V5GhEKAUMSDHRyeUdldFN0cmluZxoGCgFEEgFhGhcKAUUSEmNsYWltU3Rha2luZ1Jlc3VsdBoUCgFGEg9jdXJyZW50SW50ZXJlc3QaFgoBRxIRbGFzdENoZWNrSW50ZXJlc3QaEQoBSBIMc3Rha2VkQW1vdW50GgsKAUkSBnJld2FyZBoYCgFKEhNoYW5kbGVDb21wb3VuZFRvcFVwGgsKAUsSBmFtb3VudBoPCgFMEgplZ2dBc3NldElkGhEKAU0SDGludmVzdEFtb3VudBoQCgFOEgt0b2tlbkFtb3VudBoGCgFPEgFyGgsKAVASBnN0YWtlZBoHCgFREgJ2cBoXCgFSEhJoYW5kbGVTdGFraW5nVG9wVXAaFgoBUxIRdG90YWxTdGFrZWRBbW91bnQaEgoBVBINaW50ZXJlc3REZWx0YRoGCgFVEgFpGhIKAVYSDXRvdGFsQ29tcG91bmQaEAoBVxILdG90YWxMb2NrZWQaFgoBWBIRYW1vdW50Rm9yQ29tcG91bmQaFgoBWRIRcmVzSGFuZGxlQ29tcG91bmQaFQoBWhIQYW1vdW50Rm9yU3Rha2VycxoNCgFhEghtQWNjUEtleRoWCgJhYRIQcmVzSGFuZGxlU3Rha2luZxoOCgJhYhIIY29tcG91bmQaEgoCYWMSDHNoYXJlVG9rZW5JZBoPCgJhZBIJdmlydHVhbFdkGhgKAmFlEhJrZXlTdGFrZWRDb21wb3VuZFUaFAoCYWYSDnBlcnNvbmFsU3Rha2VkGhAKAmFnEgphZGRyZXNzU3RyGg4KAmFoEghpc0xvY2tlZBoTCgJhaRINYWxyZWFkeVN0YWtlZBoUCgJhahIOcmF3U3Rha2VBbW91bnQaFgoCYWsSEGV4YWN0U3Rha2VBbW91bnQaDQoBYhIIbUFjY0FkZHIaFQoBYxIQa2V5VG90YWxDb21wb3VuZBoWCgFkEhFrZXlTdGFrZWRDb21wb3VuZBoOCgFlEglrZXlMYXN0VlAaGgoBZhIVa2V5U3Rha2VkQ29tcG91bmRVc2VyGgkKAWcSBHVzZXIaFQoBaBIQY2FsY1ZpcnR1YWxQcmljZRoQCgFpEgt0b3RhbFN0YWtl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", "height": 2957018, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FPCTbffZmR9huMVu7PGesm1ueJy4gFqvoYHvCbpvHNJh Next: D2M3fsbrWmVvYy8FzZcC7p5uzP9skSVte7yN16fVWjvU Diff:
OldNewDifferences
5757 func setCFAddress (address) = [StringEntry("CF_ADDRESS", address)]
5858
5959
60-func getShareAssetId () = fromBase58String(getStringValue(getCFAddress(), "kShareAssetId"))
60+func getShareAssetId () = fromBase58String(getStringValue(getCFAddress(), "SHARE_ASSET_ID"))
6161
6262
6363 func tryGetInteger (key) = match getInteger(this, key) {
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let mAccPKey = base58'HyXCiJpt1eh1M1zZWDpYzbVW81yZL4XBjiJjGwxZqk2'
55
66 let mAccAddr = addressFromPublicKey(mAccPKey)
77
88 let keyTotalCompound = "total_compound"
99
1010 let keyStakedCompound = "staked_compound"
1111
1212 let keyLastVP = "last_virtual_price"
1313
1414 func keyStakedCompoundUser (user) = ((toString(user) + "_") + keyStakedCompound)
1515
1616
1717 func calcVirtualPrice (totalStaked,total) = if ((total == 0))
1818 then 1
1919 else if ((totalStaked == 0))
2020 then 1
2121 else (total / totalStaked)
2222
2323
2424 let Scale = 1
2525
2626 func keyStakedAmount (address) = (toString(address) + "_farm_staked")
2727
2828
2929 func keyLastCheckInterest (address) = (toString(address) + "_lastCheck_interest")
3030
3131
3232 func keyEggClaimed (address) = (toString(address) + "_claimed")
3333
3434
3535 let keyGlobalLastInterest = "global_lastCheck_interest"
3636
3737 let keyGlobalStaked = "global_staked"
3838
3939 let keyGlobalEggEarned = "global_earnings"
4040
4141 let kLockedInvestments = "locked_investments"
4242
4343 func getCFAddress () = addressFromStringValue(getStringValue(this, "CF_ADDRESS"))
4444
4545
4646 func isCollectiveFarmLocked () = match getBoolean(getCFAddress(), kLockedInvestments) {
4747 case b: Boolean =>
4848 b
4949 case _ =>
5050 true
5151 }
5252
5353
5454 func getEggId () = fromBase58String(getStringValue(mAccAddr, "EGG_ASSET_ID"))
5555
5656
5757 func setCFAddress (address) = [StringEntry("CF_ADDRESS", address)]
5858
5959
60-func getShareAssetId () = fromBase58String(getStringValue(getCFAddress(), "kShareAssetId"))
60+func getShareAssetId () = fromBase58String(getStringValue(getCFAddress(), "SHARE_ASSET_ID"))
6161
6262
6363 func tryGetInteger (key) = match getInteger(this, key) {
6464 case b: Int =>
6565 b
6666 case _ =>
6767 0
6868 }
6969
7070
7171 func tryGetString (key) = match getString(this, key) {
7272 case a: String =>
7373 a
7474 case _ =>
7575 ""
7676 }
7777
7878
7979 func claimStakingResult (address) = {
8080 let currentInterest = tryGetInteger(keyGlobalLastInterest)
8181 let lastCheckInterest = tryGetInteger(keyLastCheckInterest(address))
8282 let stakedAmount = tryGetInteger(keyStakedAmount(address))
8383 let reward = if ((lastCheckInterest > 0))
8484 then fraction((currentInterest - lastCheckInterest), stakedAmount, Scale)
8585 else 0
8686 [IntegerEntry(keyLastCheckInterest(address), currentInterest), IntegerEntry(keyEggClaimed(address), (tryGetInteger(keyEggClaimed(address)) + reward)), ScriptTransfer(address, reward, getShareAssetId())]
8787 }
8888
8989
9090 func handleCompoundTopUp (amount) = {
9191 let eggAssetId = getEggId()
9292 let investAmount = invoke(getCFAddress(), "provideLiquidity", nil, [AttachedPayment(eggAssetId, amount)])
9393 if ((investAmount == investAmount))
9494 then {
9595 let tokenAmount = match investAmount {
9696 case r: Int =>
9797 r
9898 case _ =>
9999 throw("Incorrect invoke result, contact the administrators")
100100 }
101101 let total = (tryGetInteger(keyTotalCompound) + tokenAmount)
102102 let staked = tryGetInteger(keyStakedCompound)
103103 let vp = calcVirtualPrice(staked, total)
104104 [IntegerEntry(keyTotalCompound, total), IntegerEntry(keyLastVP, vp)]
105105 }
106106 else throw("Strict value is not equal to itself.")
107107 }
108108
109109
110110 func handleStakingTopUp (amount) = {
111111 let currentInterest = tryGetInteger(keyGlobalLastInterest)
112112 let totalStakedAmount = tryGetInteger(keyGlobalStaked)
113113 let interestDelta = if ((totalStakedAmount > 0))
114114 then fraction(amount, Scale, totalStakedAmount)
115115 else 0
116116 [IntegerEntry(keyGlobalEggEarned, (tryGetInteger(keyGlobalEggEarned) + amount)), IntegerEntry(keyGlobalLastInterest, (currentInterest + interestDelta))]
117117 }
118118
119119
120120 @Callable(i)
121121 func topUpReward () = {
122122 let totalCompound = tryGetInteger(keyTotalCompound)
123123 let totalStaked = tryGetInteger(keyGlobalStaked)
124124 let totalLocked = (totalStaked + totalCompound)
125125 let eggAssetId = getEggId()
126126 if ((i.payments[0].assetId != eggAssetId))
127127 then throw("Wrong assetId")
128128 else {
129129 let amount = fraction(i.payments[0].amount, 98, 100)
130130 let amountForCompound = fraction(amount, totalCompound, totalLocked)
131131 let resHandleCompound = handleCompoundTopUp(amountForCompound)
132132 let amountForStakers = fraction(amount, totalStaked, totalLocked)
133133 let resHandleStaking = handleStakingTopUp(amountForStakers)
134134 $Tuple2((resHandleCompound ++ resHandleStaking), true)
135135 }
136136 }
137137
138138
139139
140140 @Callable(i)
141141 func withdrawFarmTokens (amount,compound) = {
142142 let shareTokenId = getShareAssetId()
143143 if (compound)
144144 then {
145145 let staked = tryGetInteger(keyStakedCompound)
146146 let total = tryGetInteger(keyTotalCompound)
147147 let vp = calcVirtualPrice(staked, total)
148148 let virtualWd = (amount / vp)
149149 let keyStakedCompoundU = keyStakedCompoundUser(i.caller)
150150 let personalStaked = tryGetInteger(keyStakedCompoundU)
151151 if ((virtualWd > personalStaked))
152152 then throw("You don't have so much funds to withdraw")
153153 else [IntegerEntry(keyStakedCompoundU, (personalStaked - virtualWd)), IntegerEntry(keyStakedCompound, (staked - virtualWd)), IntegerEntry(keyTotalCompound, (total - amount)), ScriptTransfer(i.caller, amount, shareTokenId), IntegerEntry(keyLastVP, vp)]
154154 }
155155 else {
156156 let addressStr = toString(i.caller)
157157 let stakedAmount = tryGetInteger(keyStakedAmount(i.caller))
158158 if ((amount > stakedAmount))
159159 then throw("you don't have tokens available")
160160 else (claimStakingResult(i.caller) ++ [IntegerEntry(keyStakedAmount(i.caller), (stakedAmount - amount)), IntegerEntry(keyGlobalStaked, (tryGetInteger(keyGlobalStaked) - amount)), ScriptTransfer(i.caller, amount, shareTokenId)])
161161 }
162162 }
163163
164164
165165
166166 @Callable(i)
167167 func stakeFarmTokens (compound) = {
168168 let shareTokenId = getShareAssetId()
169169 if ((i.payments[0].assetId != shareTokenId))
170170 then throw("Wrong assetId")
171171 else if (compound)
172172 then {
173173 let isLocked = isCollectiveFarmLocked()
174174 if (isLocked)
175175 then throw("The farm is closed for investments, it can't compound")
176176 else {
177177 let keyStakedCompoundU = keyStakedCompoundUser(i.caller)
178178 let alreadyStaked = tryGetInteger(keyStakedCompoundU)
179179 let total = tryGetInteger(keyTotalCompound)
180180 let staked = tryGetInteger(keyStakedCompound)
181181 let vp = calcVirtualPrice(staked, total)
182182 let rawStakeAmount = i.payments[0].amount
183183 let exactStakeAmount = (rawStakeAmount / vp)
184184 [IntegerEntry(keyStakedCompoundU, (alreadyStaked + exactStakeAmount)), IntegerEntry(keyTotalCompound, (total + rawStakeAmount)), IntegerEntry(keyStakedCompound, (staked + exactStakeAmount)), IntegerEntry(keyLastVP, vp)]
185185 }
186186 }
187187 else {
188188 let amount = i.payments[0].amount
189189 let addressStr = toString(i.caller)
190190 let totalStakedAmount = tryGetInteger(keyGlobalStaked)
191191 if ((i.payments[0].assetId != shareTokenId))
192192 then throw("wrong asset attached")
193193 else (claimStakingResult(i.caller) ++ [IntegerEntry(keyGlobalStaked, (totalStakedAmount + amount)), IntegerEntry(keyStakedAmount(i.caller), (tryGetInteger(keyStakedAmount(i.caller)) + amount))])
194194 }
195195 }
196196
197197
198198
199199 @Callable(i)
200200 func initiateDapp (address) = if ((i.caller != this))
201201 then throw("Can be called only by the account")
202202 else setCFAddress(address)
203203
204204
205205
206206 @Callable(i)
207207 func claimReward () = claimStakingResult(i.caller)
208208
209209

github/deemru/w8io/3ef1775 
45.67 ms