tx · GoDpj2M2uUBcvLmVpofnbD2cp1iJyTL5aLpKiLyVYGLY

3PLUS2LnNbseGKcsQ68UVNSf1WxomDwpTAD:  -0.01000000 Waves

2022.12.18 21:01 [3431563] smart account 3PLUS2LnNbseGKcsQ68UVNSf1WxomDwpTAD > SELF 0.00000000 Waves

{ "type": 13, "id": "GoDpj2M2uUBcvLmVpofnbD2cp1iJyTL5aLpKiLyVYGLY", "fee": 1000000, "feeAssetId": null, "timestamp": 1671386499951, "version": 2, "chainId": 87, "sender": "3PLUS2LnNbseGKcsQ68UVNSf1WxomDwpTAD", "senderPublicKey": "9Qqr9p7WJJ3AXftyViHnjYj2bsqaJHufSgGPnWMegxP2", "proofs": [ "42qmsNvq1VbtBCxAwD2sKsEiCn2AzG2qzgGR2djoFjoRMAYVeUALAmcHyDUjdshHzPzPB4zZFNCSDcme4N1iyAju" ], "script": "base64:BgIGCAISABIAGAALYmVuZWZpY2lhcnkJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQNjRxRVZ6dUd6Qkp1WWZEWFlpc0Z0b2tKQ2hTUmE4dWphAAtrb2xraG96RGFwcAkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1BFMmZlWThDcEJ0V0JSUHh0TFM3ZHQzWUprU3Q0S21lNlUADWR1eHBsb3JlckRhcHAJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQSnM0cG9CV0FNRlVNMVZuN1Q4N212Tm9acnRzNGVzUWJ0AAptYXJ2aW5EYXBwCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUDV6ZmdYdGNqSnh5TVp2ZXMyc2ZTcUdvYWJoemFNdVBwWgAMbWFzdGVyQ0ZBZGRyCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUERrdHN4RFZFY29vYnBFQkpjYXVzbktvNGVuaGNXVURFRgALZmFybWluZ0RhcHAJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQQUVUVHR1VzdhU2l5S3RuOUd1TUwzUmd0VjF4ZHExbVFXABVrZXlHbG9iYWxMYXN0SW50ZXJlc3QCGWdsb2JhbF9sYXN0Q2hlY2tfaW50ZXJlc3QABU1VTFQ4AIDC1y8ABXNjYWxlAJBOAAprZXlNeUR1Y2tzAg5kdWNrc09uRmFybWluZwAIbUFjY0FkZHIJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQRGt0c3hEVkVjb29icEVCSmNhdXNuS280ZW5oY1dVREVGAQ10cnlHZXRJbnRlZ2VyAgdhZGRyZXNzA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQdhZGRyZXNzBQNrZXkAAAEUa2V5TGFzdENoZWNrSW50ZXJlc3QBB2FkZHJlc3MJAKwCAgkApQgBBQdhZGRyZXNzAhNfbGFzdENoZWNrX2ludGVyZXN0AQ9rZXlTdGFrZWRBbW91bnQBB2FkZHJlc3MJAKwCAgkApQgBBQdhZGRyZXNzAgxfZmFybV9zdGFrZWQBCGdldEVnZ0lkAAkA2QQBCQERQGV4dHJOYXRpdmUoMTA1MykCBQhtQWNjQWRkcgIMRUdHX0FTU0VUX0lEARJjbGFpbVN0YWtpbmdSZXN1bHQCBGRBcHAHYWRkcmVzcwQPY3VycmVudEludGVyZXN0CQENdHJ5R2V0SW50ZWdlcgIFBGRBcHAFFWtleUdsb2JhbExhc3RJbnRlcmVzdAQRbGFzdENoZWNrSW50ZXJlc3QJAQ10cnlHZXRJbnRlZ2VyAgUEZEFwcAkBFGtleUxhc3RDaGVja0ludGVyZXN0AQUHYWRkcmVzcwQMc3Rha2VkQW1vdW50CQENdHJ5R2V0SW50ZWdlcgIFBGRBcHAJAQ9rZXlTdGFrZWRBbW91bnQBBQdhZGRyZXNzAwkAZgIFEWxhc3RDaGVja0ludGVyZXN0AAAJAGsDCQBlAgUPY3VycmVudEludGVyZXN0BRFsYXN0Q2hlY2tJbnRlcmVzdAUMc3Rha2VkQW1vdW50BQVNVUxUOAAAAQJjZgEEZEFwcAQGcmV3YXJkCQESY2xhaW1TdGFraW5nUmVzdWx0AgUEZEFwcAUEdGhpcwMJAGYCBQZyZXdhcmQAgNrECQQBawkA/AcEBQRkQXBwAgtjbGFpbVJld2FyZAUDbmlsBQNuaWwDCQAAAgUBawUBawUGcmV3YXJkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAABHWdldExhc3RLbm93bkFzc2V0RmFybWluZ1Bvd2VyAgdhZGRyZXNzB2Fzc2V0SWQJAQ10cnlHZXRJbnRlZ2VyAgULZmFybWluZ0RhcHAJAKwCAgkArAICCQCsAgIJAKwCAgIIYWRkcmVzc18FB2FkZHJlc3MCB19hc3NldF8FB2Fzc2V0SWQCDV9mYXJtaW5nUG93ZXIBEWdldFJld2FyZFBlckJsb2NrAACsBQEMY2FsY0ludGVyZXN0AxBwcmV2aW91c0ludGVyZXN0FnByZXZpb3VzSW50ZXJlc3RIZWlnaHQRdG90YWxGYXJtaW5nUG93ZXIJAGQCBRBwcmV2aW91c0ludGVyZXN0CQBpAgkAaAIJAGgCBQVzY2FsZQkBEWdldFJld2FyZFBlckJsb2NrAAkAZQIFBmhlaWdodAUWcHJldmlvdXNJbnRlcmVzdEhlaWdodAURdG90YWxGYXJtaW5nUG93ZXIBEmdldEN1cnJlbnRJbnRlcmVzdAADCQBmAgkBDXRyeUdldEludGVnZXICBQtmYXJtaW5nRGFwcAISdG90YWxfZmFybWluZ1Bvd2VyAAAEEHByZXZpb3VzSW50ZXJlc3QJAQ10cnlHZXRJbnRlZ2VyAgULZmFybWluZ0RhcHACF3RvdGFsX2xhc3RDaGVja0ludGVyZXN0BBZwcmV2aW91c0ludGVyZXN0SGVpZ2h0CQENdHJ5R2V0SW50ZWdlcgIFC2Zhcm1pbmdEYXBwAh10b3RhbF9sYXN0Q2hlY2tJbnRlcmVzdEhlaWdodAQRdG90YWxGYXJtaW5nUG93ZXIJAQ10cnlHZXRJbnRlZ2VyAgULZmFybWluZ0RhcHACEnRvdGFsX2Zhcm1pbmdQb3dlcgkBDGNhbGNJbnRlcmVzdAMFEHByZXZpb3VzSW50ZXJlc3QFFnByZXZpb3VzSW50ZXJlc3RIZWlnaHQFEXRvdGFsRmFybWluZ1Bvd2VyAwkBAiE9AgkBDXRyeUdldEludGVnZXICBQtmYXJtaW5nRGFwcAIRdG90YWxfc3RhcnRIZWlnaHQAAAkBDXRyeUdldEludGVnZXICBQtmYXJtaW5nRGFwcAIXdG90YWxfbGFzdENoZWNrSW50ZXJlc3QJAAIBAhxmYXJtaW5nIGlzIG5vdCBsYXVuY2hlZCwgeWV0ARRjYWxjQXNzZXRSZXdhcmREZWx0YQMHYWRkcmVzcwdhc3NldElkEWFzc2V0RmFybWluZ1Bvd2VyBBZsYXN0Q2hlY2tBc3NldEludGVyZXN0CQENdHJ5R2V0SW50ZWdlcgIFC2Zhcm1pbmdEYXBwCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQdhZGRyZXNzAgdfYXNzZXRfBQdhc3NldElkAhJfbGFzdENoZWNrSW50ZXJlc3QED2N1cnJlbnRJbnRlcmVzdAkBEmdldEN1cnJlbnRJbnRlcmVzdAAJAGgCBRFhc3NldEZhcm1pbmdQb3dlcgkAZQIFD2N1cnJlbnRJbnRlcmVzdAUWbGFzdENoZWNrQXNzZXRJbnRlcmVzdAESY2xhaW1GYXJtaW5nUmVzdWx0AQVhc3NldAQGbXlBZGRyCQClCAEFBHRoaXMEEWFzc2V0RmFybWluZ1Bvd2VyCQEdZ2V0TGFzdEtub3duQXNzZXRGYXJtaW5nUG93ZXICBQZteUFkZHIFBWFzc2V0BBBhc3NldFJld2FyZERlbHRhCQEUY2FsY0Fzc2V0UmV3YXJkRGVsdGEDBQZteUFkZHIFBWFzc2V0BRFhc3NldEZhcm1pbmdQb3dlcgQMZmFybWVkQW1vdW50CQBkAgUQYXNzZXRSZXdhcmREZWx0YQkBDXRyeUdldEludGVnZXICBQtmYXJtaW5nRGFwcAkArAICCQCsAgIJAKwCAgkArAICAghhZGRyZXNzXwUGbXlBZGRyAgdfYXNzZXRfBQVhc3NldAIWX2xhc3RDaGVja0Zhcm1lZEFtb3VudAQPd2l0aGRyYXduQW1vdW50CQENdHJ5R2V0SW50ZWdlcgIFC2Zhcm1pbmdEYXBwCQCsAgIJAKwCAgkArAICCQCsAgICCGFkZHJlc3NfBQZteUFkZHICB19hc3NldF8FBWFzc2V0AhBfd2l0aGRyYXduQW1vdW50CQBpAgkAZQIFDGZhcm1lZEFtb3VudAUPd2l0aGRyYXduQW1vdW50CQBoAgUFc2NhbGUAZAEFY2xhaW0BB2Fzc2V0SWQEBnJld2FyZAkBEmNsYWltRmFybWluZ1Jlc3VsdAEFB2Fzc2V0SWQDCQBmAgUGcmV3YXJkAIDaxAkEAWsJAPwHBAULZmFybWluZ0RhcHACC2NsYWltUmV3YXJkCQDMCAIFB2Fzc2V0SWQFA25pbAUDbmlsAwkAAAIFAWsFAWsFBnJld2FyZAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAgFpAQxnZXRDRnJld2FyZHMABAt0b3RhbFJld2FyZAkAZAIJAGQCCQECY2YBBQtrb2xraG96RGFwcAkBAmNmAQUNZHV4cGxvcmVyRGFwcAkBAmNmAQUKbWFydmluRGFwcAQIdHJhbnNmZXIDCQBmAgULdG90YWxSZXdhcmQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQtiZW5lZmljaWFyeQULdG90YWxSZXdhcmQJAQhnZXRFZ2dJZAAFA25pbAkAAgECGlJld2FyZCBpcyB0b28gbG93IHRvIGNsYWltCQCUCgIFCHRyYW5zZmVyBQt0b3RhbFJld2FyZAFpAQ5mYXJtaW5nUmV3YXJkcwAEDGR1Y2tzTGlzdFN0cgkBBXZhbHVlAQkAoggBBQprZXlNeUR1Y2tzBAlkdWNrc0xpc3QJAL0JAgUMZHVja3NMaXN0U3RyAgFfCgEHY2xhaW1lcgIDYWNjBGVsZW0JAJQKAgkAZAIIBQNhY2MCXzEJAQVjbGFpbQEFBGVsZW0FBGVsZW0EBnJlc3VsdAoAAiRsBQlkdWNrc0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIAAAIACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdjbGFpbWVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAyMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQEC3RvdGFsUmV3YXJkCAUGcmVzdWx0Al8xBBFsYXN0UHJvY2Vzc2VkRHVjawgFBnJlc3VsdAJfMgQFcGFydHMJAL0JAgUMZHVja3NMaXN0U3RyCQCsAgIJAKwCAgIBXwURbGFzdFByb2Nlc3NlZER1Y2sCAV8DCQECIT0CCQCQAwEFBXBhcnRzAAIJAAIBAglCYWQgc3BsaXQECm5ld0xpc3RTdHIJALsJAgkAzAgCCQCRAwIFBXBhcnRzAAEJAMwIAgkAkQMCBQVwYXJ0cwAACQDMCAIFEWxhc3RQcm9jZXNzZWREdWNrBQNuaWwCAV8ECHRyYW5zZmVyAwkAZgIFC3RvdGFsUmV3YXJkAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULYmVuZWZpY2lhcnkFC3RvdGFsUmV3YXJkCQEIZ2V0RWdnSWQACQDMCAIJAQtTdHJpbmdFbnRyeQIFCmtleU15RHVja3MFCm5ld0xpc3RTdHIFA25pbAkAAgECGlJld2FyZCBpcyB0b28gbG93IHRvIGNsYWltCQCUCgIFCHRyYW5zZmVyBQt0b3RhbFJld2FyZACpTB4G", "height": 3431563, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Ci6VyPRz2Gdc1j3HUSQptRGsGqSsbnNHuU8X6S4g72pc Next: GpAZG2VPFe41Tp6eqbwBNbMfWwi4n4iSDk5XFjVTYurj Diff:
OldNewDifferences
123123 @Callable(i)
124124 func farmingRewards () = {
125125 let ducksListStr = value(getString(keyMyDucks))
126- let ducksList = split(ducksListStr, "_")
126+ let ducksList = split_51C(ducksListStr, "_")
127127 func claimer (acc,elem) = $Tuple2((acc._1 + claim(elem)), elem)
128128
129129 let result = {
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let beneficiary = addressFromStringValue("3P64qEVzuGzBJuYfDXYisFtokJChSRa8uja")
55
66 let kolkhozDapp = addressFromStringValue("3PE2feY8CpBtWBRPxtLS7dt3YJkSt4Kme6U")
77
88 let duxplorerDapp = addressFromStringValue("3PJs4poBWAMFUM1Vn7T87mvNoZrts4esQbt")
99
1010 let marvinDapp = addressFromStringValue("3P5zfgXtcjJxyMZves2sfSqGoabhzaMuPpZ")
1111
1212 let masterCFAddr = addressFromStringValue("3PDktsxDVEcoobpEBJcausnKo4enhcWUDEF")
1313
1414 let farmingDapp = addressFromStringValue("3PAETTtuW7aSiyKtn9GuML3RgtV1xdq1mQW")
1515
1616 let keyGlobalLastInterest = "global_lastCheck_interest"
1717
1818 let MULT8 = 100000000
1919
2020 let scale = 10000
2121
2222 let keyMyDucks = "ducksOnFarming"
2323
2424 let mAccAddr = addressFromStringValue("3PDktsxDVEcoobpEBJcausnKo4enhcWUDEF")
2525
2626 func tryGetInteger (address,key) = valueOrElse(getInteger(address, key), 0)
2727
2828
2929 func keyLastCheckInterest (address) = (toString(address) + "_lastCheck_interest")
3030
3131
3232 func keyStakedAmount (address) = (toString(address) + "_farm_staked")
3333
3434
3535 func getEggId () = fromBase58String(getStringValue(mAccAddr, "EGG_ASSET_ID"))
3636
3737
3838 func claimStakingResult (dApp,address) = {
3939 let currentInterest = tryGetInteger(dApp, keyGlobalLastInterest)
4040 let lastCheckInterest = tryGetInteger(dApp, keyLastCheckInterest(address))
4141 let stakedAmount = tryGetInteger(dApp, keyStakedAmount(address))
4242 if ((lastCheckInterest > 0))
4343 then fraction((currentInterest - lastCheckInterest), stakedAmount, MULT8)
4444 else 0
4545 }
4646
4747
4848 func cf (dApp) = {
4949 let reward = claimStakingResult(dApp, this)
5050 if ((reward > 20000000))
5151 then {
5252 let k = invoke(dApp, "claimReward", nil, nil)
5353 if ((k == k))
5454 then reward
5555 else throw("Strict value is not equal to itself.")
5656 }
5757 else 0
5858 }
5959
6060
6161 func getLastKnownAssetFarmingPower (address,assetId) = tryGetInteger(farmingDapp, (((("address_" + address) + "_asset_") + assetId) + "_farmingPower"))
6262
6363
6464 func getRewardPerBlock () = 684
6565
6666
6767 func calcInterest (previousInterest,previousInterestHeight,totalFarmingPower) = (previousInterest + (((scale * getRewardPerBlock()) * (height - previousInterestHeight)) / totalFarmingPower))
6868
6969
7070 func getCurrentInterest () = if ((tryGetInteger(farmingDapp, "total_farmingPower") > 0))
7171 then {
7272 let previousInterest = tryGetInteger(farmingDapp, "total_lastCheckInterest")
7373 let previousInterestHeight = tryGetInteger(farmingDapp, "total_lastCheckInterestHeight")
7474 let totalFarmingPower = tryGetInteger(farmingDapp, "total_farmingPower")
7575 calcInterest(previousInterest, previousInterestHeight, totalFarmingPower)
7676 }
7777 else if ((tryGetInteger(farmingDapp, "total_startHeight") != 0))
7878 then tryGetInteger(farmingDapp, "total_lastCheckInterest")
7979 else throw("farming is not launched, yet")
8080
8181
8282 func calcAssetRewardDelta (address,assetId,assetFarmingPower) = {
8383 let lastCheckAssetInterest = tryGetInteger(farmingDapp, (((("address_" + address) + "_asset_") + assetId) + "_lastCheckInterest"))
8484 let currentInterest = getCurrentInterest()
8585 (assetFarmingPower * (currentInterest - lastCheckAssetInterest))
8686 }
8787
8888
8989 func claimFarmingResult (asset) = {
9090 let myAddr = toString(this)
9191 let assetFarmingPower = getLastKnownAssetFarmingPower(myAddr, asset)
9292 let assetRewardDelta = calcAssetRewardDelta(myAddr, asset, assetFarmingPower)
9393 let farmedAmount = (assetRewardDelta + tryGetInteger(farmingDapp, (((("address_" + myAddr) + "_asset_") + asset) + "_lastCheckFarmedAmount")))
9494 let withdrawnAmount = tryGetInteger(farmingDapp, (((("address_" + myAddr) + "_asset_") + asset) + "_withdrawnAmount"))
9595 ((farmedAmount - withdrawnAmount) / (scale * 100))
9696 }
9797
9898
9999 func claim (assetId) = {
100100 let reward = claimFarmingResult(assetId)
101101 if ((reward > 20000000))
102102 then {
103103 let k = invoke(farmingDapp, "claimReward", [assetId], nil)
104104 if ((k == k))
105105 then reward
106106 else throw("Strict value is not equal to itself.")
107107 }
108108 else 0
109109 }
110110
111111
112112 @Callable(i)
113113 func getCFrewards () = {
114114 let totalReward = ((cf(kolkhozDapp) + cf(duxplorerDapp)) + cf(marvinDapp))
115115 let transfer = if ((totalReward > 0))
116116 then [ScriptTransfer(beneficiary, totalReward, getEggId())]
117117 else throw("Reward is too low to claim")
118118 $Tuple2(transfer, totalReward)
119119 }
120120
121121
122122
123123 @Callable(i)
124124 func farmingRewards () = {
125125 let ducksListStr = value(getString(keyMyDucks))
126- let ducksList = split(ducksListStr, "_")
126+ let ducksList = split_51C(ducksListStr, "_")
127127 func claimer (acc,elem) = $Tuple2((acc._1 + claim(elem)), elem)
128128
129129 let result = {
130130 let $l = ducksList
131131 let $s = size($l)
132132 let $acc0 = $Tuple2(0, "")
133133 func $f0_1 ($a,$i) = if (($i >= $s))
134134 then $a
135135 else claimer($a, $l[$i])
136136
137137 func $f0_2 ($a,$i) = if (($i >= $s))
138138 then $a
139139 else throw("List size exceeds 20")
140140
141141 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
142142 }
143143 let totalReward = result._1
144144 let lastProcessedDuck = result._2
145145 let parts = split_51C(ducksListStr, (("_" + lastProcessedDuck) + "_"))
146146 if ((size(parts) != 2))
147147 then throw("Bad split")
148148 else {
149149 let newListStr = makeString_11C([parts[1], parts[0], lastProcessedDuck], "_")
150150 let transfer = if ((totalReward > 0))
151151 then [ScriptTransfer(beneficiary, totalReward, getEggId()), StringEntry(keyMyDucks, newListStr)]
152152 else throw("Reward is too low to claim")
153153 $Tuple2(transfer, totalReward)
154154 }
155155 }
156156
157157

github/deemru/w8io/3ef1775 
44.13 ms