tx · 8VQgwNkHaKpZopkHeR6bspTEDnj6DxiPz6bX5ZmtYebt

3PEZngxRNSDEJz2MiNUG3jAVBhhVFTNFQz2:  -0.01400000 Waves

2021.09.16 00:50 [2769653] smart account 3PEZngxRNSDEJz2MiNUG3jAVBhhVFTNFQz2 > SELF 0.00000000 Waves

{ "type": 13, "id": "8VQgwNkHaKpZopkHeR6bspTEDnj6DxiPz6bX5ZmtYebt", "fee": 1400000, "feeAssetId": null, "timestamp": 1631742642782, "version": 2, "chainId": 87, "sender": "3PEZngxRNSDEJz2MiNUG3jAVBhhVFTNFQz2", "senderPublicKey": "8HhthX4cRpH5QMaK46KDBbQZhK75SQZYUjJZzBwHkaTK", "proofs": [ "4v8Euu1jChYDdNcboaGYiJKe3h9HxqAB6yWzPHj8GQLfB2rFL3nif7iso1QgeK17jNxuxKb8b9RwhNM52rvUecDJ" ], "script": "base64:AAIFAAAAAAAADDcIAhIECgIIARIDCgEEEgASABIAEgMKAQgSAwoBCBIDCgEIEgMKAQgSBAoCCAgSAwoBCBIECgIIARIAGg4KAmExEghtQWNjUEtleRoOCgJhMhIIbUFjY0FkZHIaEAoCYTMSCmZlZVBlcmNlbnQaEwoCYTQSDW9sZEVnZ0Fzc2V0SWQaGAoCYTUSEnN3YXBFZ2dEYXBwQWRkcmVzcxoVCgJhNhIPa1RvdGFsTGlxdWlkaXR5GhIKAmE3EgxrSW5pdGlhbGl6ZWQaGQoCYTgSE2tMaXF1aWRpdHlUaHJlc2hvbGQaFwoCYTkSEWtGYXJtUGFydGljaXBhbnRzGhcKAmIxEhFrVG90YWxTaGFyZVRva2VucxoTCgJiMhINa1NoYXJlQXNzZXRJZBoSCgJiMxIMa0Zhcm1pbmdEYXBwGhYKAmI0EhBrTWFya2V0UHJveHlEYXBwGg0KAmI1EgdrTG9ja2VkGhkKAmI2EhNrVG90YWxGYXJtaW5nUmV3YXJkGhYKAmI3EhBrQ2VvQ29sbGVjdGVkRmVlGh0KAmI4EhdrQ2VvQ29sbGVjdGVkRmVlT3ZlcmFsbBoOCgJiORIIa1RvRGlzdHIaFQoCYzESD2tVbnN0YWtlZFJld2FyZBoYCgJjMhISa0xvY2tlZEludmVzdG1lbnRzGgwKAmMzEgZnZXRJbnQaCQoCYzQSA2tleRoNCgJjNRIHJG1hdGNoMBoHCgJjNhIBYhoMCgJjNxIGZ2V0U3RyGg0KAmM4EgdnZXRCb29sGg0KAmM5EgdnZXRTdHJBGgcKAmQxEgFhGgcKAmQyEgFrGhgKAmQzEhJnZXRNYXJrZXRQcm94eUFkZHIaDgoCZDQSCGdldEVnZ0lkGhUKAmQ1Eg9nZXRTaGFyZUFzc2V0SWQaBwoCZDYSAWkaCgoCZDcSBG5hbWUaFgoCZDgSEG1pbmltdW1UaHJlc2hvbGQaEQoCZDkSC3NoYXJlVG9rZW5zGhAKAmUxEgpzaGFyZVRva2VuGgcKAmUyEgFzGhAKAmUzEgplZ2dBc3NldElkGhQKAmU0Eg50b3RhbExpcXVpZGl0eRoWCgJlNRIQdG90YWxTaGFyZVRva2VucxocCgJlNhIWY3VycmVudExpcXVpZGl0eUFtb3VudBoXCgJlNxIRc2hhcmVUb2tlbnNUb0dpdmUaEwoCZTgSDXNoYXJlVG9rZW5zSWQaDQoCZTkSB3JlaXNzdWUaFgoCZjESEGZhcm1QYXJ0aWNpcGFudHMaEwoCZjISDWtQYXJ0aWNpcGF0ZWQaGQoCZjMSE2FscmVhZHlQYXJ0aWNpcGF0ZWQaGQoCZjQSE25ld0Zhcm1QYXJ0aWNpcGFudHMaCQoCZjUSA2lkcxoRCgJmNhILZmFybWluZ0RhcHAaEQoCZjcSC2NsYWltUmV3YXJkGgsKAmY4EgVhY2N1bRoLCgJmORIFbmZ0SWQaDAoCZzESBmludlJlcxoJCgJnMhIDaW50GgwKAmczEgZuZnRJZHMaEAoCZzQSCmZvbGRSZXN1bHQaEwoCZzUSDSRsaXN0NTcyMDU3NTIaEwoCZzYSDSRzaXplNTcyMDU3NTIaEwoCZzcSDSRhY2MwNTcyMDU3NTIaEwoCZzgSDSRhY2MxNTcyMDU3NTIaEwoCZzkSDSRhY2MyNTcyMDU3NTIaEwoCaDESDSRhY2MzNTcyMDU3NTIaEwoCaDISDSRhY2M0NTcyMDU3NTIaEwoCaDMSDSRhY2M1NTcyMDU3NTIaEwoCaDQSDSRhY2M2NTcyMDU3NTIaEwoCaDUSDSRhY2M3NTcyMDU3NTIaEwoCaDYSDSRhY2M4NTcyMDU3NTIaEwoCaDcSDSRhY2M5NTcyMDU3NTIaFAoCaDgSDiRhY2MxMDU3MjA1NzUyGhQKAmg5Eg4kYWNjMTE1NzIwNTc1MhoTCgJpMRINY2xhaW1lZFJld2FyZBoUCgJpMhIOZmFybUNlb0ZlZVNpemUaDQoCaTMSB3RvRGlzdHIaGAoCaTQSEnRvdGFsRmFybWluZ1Jld2FyZBoTCgJpNRINY3VycmVudENlb0ZlZRoTCgJpNhINY2VvRmVlT3ZlcmFsbBoNCgJpNxIHYWRkcmVzcxocCgJpOBIWY3VycmVudENlb0NvbGxlY3RlZEZlZRoPCgJpORIJYXVjdGlvbklkGg4KAmoxEghmdW5jdGlvbhoNCgJqMhIHYXNzZXRJZBoYCgJqMxISZmFybWluZ0RhcHBBZGRyZXNzGhMKAmo0Eg11c3Rha2VkUmV3YXJkGhcKAmo1EhF1bnN0YWtlZFJld2FyZE5vdxoXCgJqNhIRbmV3VW5zdGFrZWRSZXdhcmQaCgoCajcSBHR4SWQaCAoCajgSAnR4Gg8KAmo5EglrUmV2ZXJ0ZWQaEAoCazESCnR4UmV2ZXJ0ZWQaEAoCazISCm1pbkJhbGFuY2UaFwoCazMSEWN1cnJlbnRFZ2dCYWxhbmNlGg8KAms0EglhZGRyZXNzZXMaIgoCazUSHHRvdGFsU2hhcmVUb2tlbnNUb0Rpc3RyaWJ1dGUaEgoCazYSDGFkZHJlc3NQYWlycxoUCgJrNxIOcHJvY2Vzc0FkZHJlc3MaEQoCazgSC2FkZHJlc3NQYWlyGhIKAms5EgxhZGRyZXNzUGFydHMaEAoCbDESCmFkZHJlc3NTdHIaEwoCbDISDWVnZ2xldHNBbW91bnQaDAoCbDMSBmNoYW5nZRoRCgJsNBILa0FkZHJFYXJuZWQaFQoCbDUSD2FkZHJUb3RhbEVhcm5lZBoUCgJsNhIOdG90YWxSZXdhcmROb3caEQoCbDcSC2tBZGRyQ2hhbmdlGhMKAmw4Eg1lYXJuZWRMYXN0RGF5GgkKAmw5EgNyZXMaDAoCbTESBnJlc3VsdBoVCgJtMhIPJGxpc3QxMDcxNDEwNzYxGhUKAm0zEg8kc2l6ZTEwNzE0MTA3NjEaFQoCbTQSDyRhY2MwMTA3MTQxMDc2MRoVCgJtNRIPJGFjYzExMDcxNDEwNzYxGhUKAm02Eg8kYWNjMjEwNzE0MTA3NjEaFQoCbTcSDyRhY2MzMTA3MTQxMDc2MRoVCgJtOBIPJGFjYzQxMDcxNDEwNzYxGhUKAm05Eg8kYWNjNTEwNzE0MTA3NjEaFQoCbjESDyRhY2M2MTA3MTQxMDc2MRoVCgJuMhIPJGFjYzcxMDcxNDEwNzYxGhUKAm4zEg8kYWNjODEwNzE0MTA3NjEaFQoCbjQSDyRhY2M5MTA3MTQxMDc2MRoWCgJuNRIQJGFjYzEwMTA3MTQxMDc2MRoWCgJuNhIQJGFjYzExMTA3MTQxMDc2MRoWCgJuNxIQJGFjYzEyMTA3MTQxMDc2MRoWCgJuOBIQJGFjYzEzMTA3MTQxMDc2MRoWCgJuORIQJGFjYzE0MTA3MTQxMDc2MRoWCgJvMRIQJGFjYzE1MTA3MTQxMDc2MRoWCgJvMhIQJGFjYzE2MTA3MTQxMDc2MRoWCgJvMxIQJGFjYzE3MTA3MTQxMDc2MRoWCgJvNBIQJGFjYzE4MTA3MTQxMDc2MRoWCgJvNRIQJGFjYzE5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", "height": 2769653, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6gVJbMguCmXPAF2HojzBF1WbeubBh6bWwPEPURivkzEM Next: AwT4F5vYA7go9HxcJEFA5a2qdC9gnEgLEtWgZkCboocW Diff:
OldNewDifferences
477477 }
478478
479479
480-
481-@Callable(i)
482-func payChange (addresses) = if ((i.caller != mAccAddr))
483- then throw("Method can be called only by main account")
484- else {
485- let addressValues = split(addresses, ";")
486- if ((size(addressValues) > 20))
487- then throw("Can't send more than 20 transfers at once")
488- else {
489- func processAddress (accum,addressStr) = {
490- let kAddrChange = (("address_" + addressStr) + "_change")
491- let kAddrEarned = (("address_" + addressStr) + "_total_earned")
492- let changeValue = getInt(kAddrChange)
493-[IntegerEntry(kAddrChange, 0), IntegerEntry(kAddrEarned, 0), ScriptTransfer(addressFromStringValue(addressStr), changeValue, getEggId())]
494- }
495-
496- let result = {
497- let $list1208712130 = addressValues
498- let $size1208712130 = size($list1208712130)
499- let $acc01208712130 = nil
500- if (($size1208712130 == 0))
501- then $acc01208712130
502- else {
503- let $acc11208712130 = processAddress($acc01208712130, $list1208712130[0])
504- if (($size1208712130 == 1))
505- then $acc11208712130
506- else {
507- let $acc21208712130 = processAddress($acc11208712130, $list1208712130[1])
508- if (($size1208712130 == 2))
509- then $acc21208712130
510- else {
511- let $acc31208712130 = processAddress($acc21208712130, $list1208712130[2])
512- if (($size1208712130 == 3))
513- then $acc31208712130
514- else {
515- let $acc41208712130 = processAddress($acc31208712130, $list1208712130[3])
516- if (($size1208712130 == 4))
517- then $acc41208712130
518- else {
519- let $acc51208712130 = processAddress($acc41208712130, $list1208712130[4])
520- if (($size1208712130 == 5))
521- then $acc51208712130
522- else {
523- let $acc61208712130 = processAddress($acc51208712130, $list1208712130[5])
524- if (($size1208712130 == 6))
525- then $acc61208712130
526- else {
527- let $acc71208712130 = processAddress($acc61208712130, $list1208712130[6])
528- if (($size1208712130 == 7))
529- then $acc71208712130
530- else {
531- let $acc81208712130 = processAddress($acc71208712130, $list1208712130[7])
532- if (($size1208712130 == 8))
533- then $acc81208712130
534- else {
535- let $acc91208712130 = processAddress($acc81208712130, $list1208712130[8])
536- if (($size1208712130 == 9))
537- then $acc91208712130
538- else {
539- let $acc101208712130 = processAddress($acc91208712130, $list1208712130[9])
540- if (($size1208712130 == 10))
541- then $acc101208712130
542- else {
543- let $acc111208712130 = processAddress($acc101208712130, $list1208712130[10])
544- if (($size1208712130 == 11))
545- then $acc111208712130
546- else {
547- let $acc121208712130 = processAddress($acc111208712130, $list1208712130[11])
548- if (($size1208712130 == 12))
549- then $acc121208712130
550- else {
551- let $acc131208712130 = processAddress($acc121208712130, $list1208712130[12])
552- if (($size1208712130 == 13))
553- then $acc131208712130
554- else {
555- let $acc141208712130 = processAddress($acc131208712130, $list1208712130[13])
556- if (($size1208712130 == 14))
557- then $acc141208712130
558- else {
559- let $acc151208712130 = processAddress($acc141208712130, $list1208712130[14])
560- if (($size1208712130 == 15))
561- then $acc151208712130
562- else {
563- let $acc161208712130 = processAddress($acc151208712130, $list1208712130[15])
564- if (($size1208712130 == 16))
565- then $acc161208712130
566- else {
567- let $acc171208712130 = processAddress($acc161208712130, $list1208712130[16])
568- if (($size1208712130 == 17))
569- then $acc171208712130
570- else {
571- let $acc181208712130 = processAddress($acc171208712130, $list1208712130[17])
572- if (($size1208712130 == 18))
573- then $acc181208712130
574- else {
575- let $acc191208712130 = processAddress($acc181208712130, $list1208712130[18])
576- if (($size1208712130 == 19))
577- then $acc191208712130
578- else {
579- let $acc201208712130 = processAddress($acc191208712130, $list1208712130[19])
580- if (($size1208712130 == 20))
581- then $acc201208712130
582- else {
583- let $acc211208712130 = processAddress($acc201208712130, $list1208712130[20])
584- throw("List size exceed 20")
585- }
586- }
587- }
588- }
589- }
590- }
591- }
592- }
593- }
594- }
595- }
596- }
597- }
598- }
599- }
600- }
601- }
602- }
603- }
604- }
605- }
606- }
607- result
608- }
609- }
610-
611-
612480 @Verifier(tx)
613481 func verify () = {
614482 let checkStarted = (getInt(kTotalLiquidity) >= getInt(kLiquidityThreshold))
640508 else if ((size(inv.payments) > 2))
641509 then throw("_17")
642510 else if ((minBalance > ((assetBalance(this, getEggId()) - {
643- let $list1335413396 = inv.payments
644- let $size1335413396 = size($list1335413396)
645- let $acc01335413396 = 0
646- if (($size1335413396 == 0))
647- then $acc01335413396
511+ let $list1251412556 = inv.payments
512+ let $size1251412556 = size($list1251412556)
513+ let $acc01251412556 = 0
514+ if (($size1251412556 == 0))
515+ then $acc01251412556
648516 else {
649- let $acc11335413396 = totalEggSpending($acc01335413396, $list1335413396[0])
650- if (($size1335413396 == 1))
651- then $acc11335413396
517+ let $acc11251412556 = totalEggSpending($acc01251412556, $list1251412556[0])
518+ if (($size1251412556 == 1))
519+ then $acc11251412556
652520 else {
653- let $acc21335413396 = totalEggSpending($acc11335413396, $list1335413396[1])
654- if (($size1335413396 == 2))
655- then $acc21335413396
521+ let $acc21251412556 = totalEggSpending($acc11251412556, $list1251412556[1])
522+ if (($size1251412556 == 2))
523+ then $acc21251412556
656524 else {
657- let $acc31335413396 = totalEggSpending($acc21335413396, $list1335413396[2])
658- if (($size1335413396 == 3))
659- then $acc31335413396
525+ let $acc31251412556 = totalEggSpending($acc21251412556, $list1251412556[2])
526+ if (($size1251412556 == 3))
527+ then $acc31251412556
660528 else {
661- let $acc41335413396 = totalEggSpending($acc31335413396, $list1335413396[3])
529+ let $acc41251412556 = totalEggSpending($acc31251412556, $list1251412556[3])
662530 throw("List size exceed 3")
663531 }
664532 }
694562 let dappToCall = toString(addressFromRecipient(inv.dApp))
695563 (indexOf(allowedContractsList, dappToCall) != unit)
696564 }
565+ case mt: MassTransferTransaction =>
566+ sigVerify(tx.bodyBytes, tx.proofs[0], mAccPKey)
567+ case dt: DataTransaction =>
568+ sigVerify(tx.bodyBytes, tx.proofs[0], mAccPKey)
697569 case ss: SetScriptTransaction =>
698570 sigVerify(tx.bodyBytes, tx.proofs[0], mAccPKey)
699571 case _ =>
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let mAccPKey = base58'23NWm7kUDQqbTVkirjd5JXWRZaWVoS4ZesmRNHicBa3T'
55
66 let mAccAddr = addressFromPublicKey(mAccPKey)
77
88 let feePercent = getIntegerValue(mAccAddr, (("f_" + toString(this)) + "_fee"))
99
1010 let oldEggAssetId = base58'JCGDtrVy64cCJ1wCKfCaiNQMnyYwii71TbE5QeAHfxgF'
1111
1212 let swapEggDappAddress = addressFromStringValue("3PJQUUiJdvz9etUKED9ju7o7VrcNMtnkXBU")
1313
1414 let kTotalLiquidity = "total_liquidity"
1515
1616 let kInitialized = "INITIALIZED"
1717
1818 let kLiquidityThreshold = "LIQUIDITY_THRESHOLD"
1919
2020 let kFarmParticipants = "farm_participants"
2121
2222 let kTotalShareTokens = "total_share_tokens"
2323
2424 let kShareAssetId = "SHARE_ASSET_ID"
2525
2626 let kFarmingDapp = "FARMING_DAPP"
2727
2828 let kMarketProxyDapp = "MARKETPLACE_PROXY_DAPP"
2929
3030 let kLocked = "LOCKED"
3131
3232 let kTotalFarmingReward = "total_farming_reward"
3333
3434 let kCeoCollectedFee = "ceo_collected_fee"
3535
3636 let kCeoCollectedFeeOverall = "ceo_fee_overall"
3737
3838 let kToDistr = "to_distribute"
3939
4040 let kUnstakedReward = "unstaked_reward"
4141
4242 let kLockedInvestments = "locked_investments"
4343
4444 func getInt (key) = match getInteger(this, key) {
4545 case b: Int =>
4646 b
4747 case _ =>
4848 0
4949 }
5050
5151
5252 func getStr (key) = match getString(this, key) {
5353 case b: String =>
5454 b
5555 case _ =>
5656 ""
5757 }
5858
5959
6060 func getBool (key) = match getBoolean(this, key) {
6161 case b: Boolean =>
6262 b
6363 case _ =>
6464 unit
6565 }
6666
6767
6868 func getStrA (a,k) = match getString(a, k) {
6969 case b: String =>
7070 b
7171 case _ =>
7272 ""
7373 }
7474
7575
7676 func getMarketProxyAddr () = getStrA(mAccAddr, kMarketProxyDapp)
7777
7878
7979 func getEggId () = fromBase58String(getStringValue(mAccAddr, "EGG_ASSET_ID"))
8080
8181
8282 func getShareAssetId () = fromBase58String(getStr(kShareAssetId))
8383
8484
8585 @Callable(i)
8686 func initCollectiveFarm (name,minimumThreshold) = if ((i.callerPublicKey != mAccPKey))
8787 then throw("_1")
8888 else if ((getBool(kInitialized) != unit))
8989 then throw("_2")
9090 else if (if ((i.payments[0].amount != 10))
9191 then true
9292 else (i.payments[0].assetId != getEggId()))
9393 then throw("_20")
9494 else {
9595 let shareTokens = 10000000
9696 let shareToken = Issue(name, (("Share token for the \"" + name) + "\" collective farm"), shareTokens, 8, true)
9797 [StringEntry(kShareAssetId, toBase58String(calculateAssetId(shareToken))), BooleanEntry(kInitialized, true), IntegerEntry(kTotalLiquidity, 10), IntegerEntry(kTotalShareTokens, shareTokens), shareToken, ScriptTransfer(i.caller, shareTokens, calculateAssetId(shareToken)), BooleanEntry(kLocked, false), IntegerEntry(kLiquidityThreshold, minimumThreshold)]
9898 }
9999
100100
101101
102102 @Callable(i)
103103 func setLock (s) = if ((i.callerPublicKey != mAccPKey))
104104 then throw("_21")
105105 else [BooleanEntry(kLocked, s)]
106106
107107
108108
109109 @Callable(i)
110110 func lockInvestments () = if ((i.caller != this))
111111 then throw("You cannot lock this contract")
112112 else [BooleanEntry(kLockedInvestments, true)]
113113
114114
115115
116116 @Callable(i)
117117 func unlockInvestments () = if ((i.caller != this))
118118 then throw("You cannot lock this contract")
119119 else [BooleanEntry(kLockedInvestments, false)]
120120
121121
122122
123123 @Callable(i)
124124 func provideLiquidity () = {
125125 let eggAssetId = getEggId()
126126 if ((getBool(kLockedInvestments) == true))
127127 then throw("Contract is locked for investments by it's CEO. Please invest in another collective farm.")
128128 else if ((getBool(kLocked) == true))
129129 then throw("_22")
130130 else if ((i.payments[0].assetId != eggAssetId))
131131 then throw("_4")
132132 else if ((1000000 > i.payments[0].amount))
133133 then throw("Min amount to invest is 0.01 EGG")
134134 else {
135135 let totalLiquidity = getInt(kTotalLiquidity)
136136 let totalShareTokens = getInt(kTotalShareTokens)
137137 let currentLiquidityAmount = i.payments[0].amount
138138 let shareTokensToGive = currentLiquidityAmount
139139 let shareTokensId = fromBase58String(getStr(kShareAssetId))
140140 let reissue = Reissue(getShareAssetId(), shareTokensToGive, true)
141141 let farmParticipants = getInt(kFarmParticipants)
142142 let kParticipated = (("account_" + toString(i.caller)) + "_participated")
143143 let alreadyParticipated = getBool(kParticipated)
144144 let newFarmParticipants = if ((alreadyParticipated == unit))
145145 then (farmParticipants + 1)
146146 else farmParticipants
147147 [reissue, ScriptTransfer(i.caller, shareTokensToGive, shareTokensId), IntegerEntry(kTotalShareTokens, (totalShareTokens + shareTokensToGive)), IntegerEntry(kTotalLiquidity, (totalLiquidity + value(i.payments[0].amount))), IntegerEntry(kFarmParticipants, newFarmParticipants), BooleanEntry(kParticipated, true)]
148148 }
149149 }
150150
151151
152152
153153 @Callable(i)
154154 func claimFarmingRewardProxy (ids) = if ((i.callerPublicKey != mAccPKey))
155155 then throw("_23")
156156 else {
157157 let farmingDapp = addressFromStringValue(getStrA(mAccAddr, kFarmingDapp))
158158 func claimReward (accum,nftId) = {
159159 let invRes = invoke(farmingDapp, "claimReward", [nftId], nil)
160160 if ((invRes == invRes))
161161 then match invRes {
162162 case int: Int =>
163163 (accum + int)
164164 case _ =>
165165 throw("_5")
166166 }
167167 else throw("Strict value is not equal to itself.")
168168 }
169169
170170 let nftIds = split(ids, ";")
171171 let foldResult = {
172172 let $list57205752 = nftIds
173173 let $size57205752 = size($list57205752)
174174 let $acc057205752 = 0
175175 if (($size57205752 == 0))
176176 then $acc057205752
177177 else {
178178 let $acc157205752 = claimReward($acc057205752, $list57205752[0])
179179 if (($size57205752 == 1))
180180 then $acc157205752
181181 else {
182182 let $acc257205752 = claimReward($acc157205752, $list57205752[1])
183183 if (($size57205752 == 2))
184184 then $acc257205752
185185 else {
186186 let $acc357205752 = claimReward($acc257205752, $list57205752[2])
187187 if (($size57205752 == 3))
188188 then $acc357205752
189189 else {
190190 let $acc457205752 = claimReward($acc357205752, $list57205752[3])
191191 if (($size57205752 == 4))
192192 then $acc457205752
193193 else {
194194 let $acc557205752 = claimReward($acc457205752, $list57205752[4])
195195 if (($size57205752 == 5))
196196 then $acc557205752
197197 else {
198198 let $acc657205752 = claimReward($acc557205752, $list57205752[5])
199199 if (($size57205752 == 6))
200200 then $acc657205752
201201 else {
202202 let $acc757205752 = claimReward($acc657205752, $list57205752[6])
203203 if (($size57205752 == 7))
204204 then $acc757205752
205205 else {
206206 let $acc857205752 = claimReward($acc757205752, $list57205752[7])
207207 if (($size57205752 == 8))
208208 then $acc857205752
209209 else {
210210 let $acc957205752 = claimReward($acc857205752, $list57205752[8])
211211 if (($size57205752 == 9))
212212 then $acc957205752
213213 else {
214214 let $acc1057205752 = claimReward($acc957205752, $list57205752[9])
215215 if (($size57205752 == 10))
216216 then $acc1057205752
217217 else {
218218 let $acc1157205752 = claimReward($acc1057205752, $list57205752[10])
219219 throw("List size exceed 10")
220220 }
221221 }
222222 }
223223 }
224224 }
225225 }
226226 }
227227 }
228228 }
229229 }
230230 }
231231 }
232232 let claimedReward = match foldResult {
233233 case int: Int =>
234234 int
235235 case _ =>
236236 throw("_6")
237237 }
238238 let farmCeoFeeSize = fraction(claimedReward, feePercent, 100)
239239 let toDistr = getInt(kToDistr)
240240 let totalFarmingReward = getInt(kTotalFarmingReward)
241241 let currentCeoFee = getInt(kCeoCollectedFee)
242242 let ceoFeeOverall = getInt(kCeoCollectedFeeOverall)
243243 [IntegerEntry(kTotalFarmingReward, ((totalFarmingReward + claimedReward) - farmCeoFeeSize)), IntegerEntry(kToDistr, ((toDistr + claimedReward) - farmCeoFeeSize)), IntegerEntry(kCeoCollectedFee, (currentCeoFee + farmCeoFeeSize)), IntegerEntry(kCeoCollectedFeeOverall, (ceoFeeOverall + farmCeoFeeSize))]
244244 }
245245
246246
247247
248248 @Callable(i)
249249 func claimCeoFee (address) = if ((getBool(kLocked) == true))
250250 then throw("_22")
251251 else if ((i.caller == this))
252252 then {
253253 let currentCeoCollectedFee = getInt(kCeoCollectedFee)
254254 [ScriptTransfer(addressFromStringValue(address), currentCeoCollectedFee, getEggId()), IntegerEntry(kCeoCollectedFee, 0)]
255255 }
256256 else throw("_8")
257257
258258
259259
260260 @Callable(i)
261261 func startLiquidation (auctionId) = throw("_7")
262262
263263
264264
265265 @Callable(i)
266266 func voteForLiquidation (auctionId) = throw("_7")
267267
268268
269269
270270 @Callable(i)
271271 func callUnstakeProxy (function,assetId) = if ((getBool(kLocked) == true))
272272 then throw("Contract is locked now")
273273 else if (if ((function != "unstakeNFT"))
274274 then (function != "unstakeJackpot")
275275 else false)
276276 then throw("Bad function name")
277277 else if ((i.caller != this))
278278 then throw("Can be called only by the account")
279279 else {
280280 let farmingDappAddress = addressFromStringValue(getStrA(mAccAddr, "FARMING_DAPP"))
281281 let ustakedReward = invoke(farmingDappAddress, function, [assetId], nil)
282282 if ((ustakedReward == ustakedReward))
283283 then {
284284 let unstakedRewardNow = getInt(kUnstakedReward)
285285 let newUnstakedReward = match ustakedReward {
286286 case int: Int =>
287287 (unstakedRewardNow + int)
288288 case _ =>
289289 throw("Error during unstaking")
290290 }
291291 let currentCeoFee = getInt(kCeoCollectedFee)
292292 let ceoFeeOverall = getInt(kCeoCollectedFeeOverall)
293293 let farmCeoFeeSize = fraction(unstakedRewardNow, feePercent, 100)
294294 [IntegerEntry(kCeoCollectedFee, (currentCeoFee + farmCeoFeeSize)), IntegerEntry(kCeoCollectedFeeOverall, (ceoFeeOverall + farmCeoFeeSize)), IntegerEntry(kUnstakedReward, newUnstakedReward)]
295295 }
296296 else throw("Strict value is not equal to itself.")
297297 }
298298
299299
300300
301301 @Callable(i)
302302 func revertTransfer (txId) = if ((getBool(kLocked) == true))
303303 then throw("Contract is locked now")
304304 else if ((i.caller != this))
305305 then throw("Can be called only by the account")
306306 else {
307307 let tx = value(transferTransactionById(fromBase58String(txId)))
308308 let kReverted = ("tx_revert_" + txId)
309309 let txReverted = getBool(kReverted)
310310 let unstakedRewardNow = getInt(kUnstakedReward)
311311 let toDistr = getInt(kToDistr)
312312 let minBalance = (unstakedRewardNow + toDistr)
313313 let currentEggBalance = assetBalance(this, getEggId())
314314 if ((txReverted == true))
315315 then throw("Tx already reverted")
316316 else if ((tx.recipient != this))
317317 then throw("Tx recipient is another account")
318318 else if (if ((tx.assetId != getEggId()))
319319 then (tx.assetId != getShareAssetId())
320320 else false)
321321 then throw("Transaction is not with EGG or share tokens")
322322 else if ((minBalance > (currentEggBalance - tx.amount)))
323323 then throw("Revert makes balance too low")
324324 else [ScriptTransfer(tx.sender, tx.amount, tx.assetId), BooleanEntry(kReverted, true)]
325325 }
326326
327327
328328
329329 @Callable(i)
330330 func distributeRewards (addresses,totalShareTokensToDistribute) = if ((i.caller != mAccAddr))
331331 then throw("Method can be called only by master account")
332332 else {
333333 let addressPairs = split(addresses, ";")
334334 func processAddress (accum,addressPair) = {
335335 let addressParts = split(addressPair, "=")
336336 let addressStr = addressParts[0]
337337 let address = addressFromStringValue(addressStr)
338338 let eggletsAmount = parseIntValue(addressParts[1])
339339 let change = parseIntValue(addressParts[2])
340340 let kAddrEarned = (("address_" + addressStr) + "_total_earned")
341341 let addrTotalEarned = getInt(kAddrEarned)
342342 let totalRewardNow = ((eggletsAmount * 1000000) + change)
343343 let kAddrChange = (("address_" + addressStr) + "_change")
344344 let earnedLastDay = (totalRewardNow - getInt(kAddrChange))
345345 let res = [IntegerEntry(kAddrChange, change), IntegerEntry(kAddrEarned, (addrTotalEarned + earnedLastDay)), IntegerEntry(((("address_" + addressStr) + "_reward_") + toString(lastBlock.timestamp)), earnedLastDay)]
346346 if ((eggletsAmount > 0))
347347 then $Tuple2((accum._1 + eggletsAmount), ((accum._2 ++ res) ++ [ScriptTransfer(address, eggletsAmount, getEggId())]))
348348 else $Tuple2(accum._1, (accum._2 ++ res))
349349 }
350350
351351 let result = {
352352 let $list1071410761 = addressPairs
353353 let $size1071410761 = size($list1071410761)
354354 let $acc01071410761 = $Tuple2(0, nil)
355355 if (($size1071410761 == 0))
356356 then $acc01071410761
357357 else {
358358 let $acc11071410761 = processAddress($acc01071410761, $list1071410761[0])
359359 if (($size1071410761 == 1))
360360 then $acc11071410761
361361 else {
362362 let $acc21071410761 = processAddress($acc11071410761, $list1071410761[1])
363363 if (($size1071410761 == 2))
364364 then $acc21071410761
365365 else {
366366 let $acc31071410761 = processAddress($acc21071410761, $list1071410761[2])
367367 if (($size1071410761 == 3))
368368 then $acc31071410761
369369 else {
370370 let $acc41071410761 = processAddress($acc31071410761, $list1071410761[3])
371371 if (($size1071410761 == 4))
372372 then $acc41071410761
373373 else {
374374 let $acc51071410761 = processAddress($acc41071410761, $list1071410761[4])
375375 if (($size1071410761 == 5))
376376 then $acc51071410761
377377 else {
378378 let $acc61071410761 = processAddress($acc51071410761, $list1071410761[5])
379379 if (($size1071410761 == 6))
380380 then $acc61071410761
381381 else {
382382 let $acc71071410761 = processAddress($acc61071410761, $list1071410761[6])
383383 if (($size1071410761 == 7))
384384 then $acc71071410761
385385 else {
386386 let $acc81071410761 = processAddress($acc71071410761, $list1071410761[7])
387387 if (($size1071410761 == 8))
388388 then $acc81071410761
389389 else {
390390 let $acc91071410761 = processAddress($acc81071410761, $list1071410761[8])
391391 if (($size1071410761 == 9))
392392 then $acc91071410761
393393 else {
394394 let $acc101071410761 = processAddress($acc91071410761, $list1071410761[9])
395395 if (($size1071410761 == 10))
396396 then $acc101071410761
397397 else {
398398 let $acc111071410761 = processAddress($acc101071410761, $list1071410761[10])
399399 if (($size1071410761 == 11))
400400 then $acc111071410761
401401 else {
402402 let $acc121071410761 = processAddress($acc111071410761, $list1071410761[11])
403403 if (($size1071410761 == 12))
404404 then $acc121071410761
405405 else {
406406 let $acc131071410761 = processAddress($acc121071410761, $list1071410761[12])
407407 if (($size1071410761 == 13))
408408 then $acc131071410761
409409 else {
410410 let $acc141071410761 = processAddress($acc131071410761, $list1071410761[13])
411411 if (($size1071410761 == 14))
412412 then $acc141071410761
413413 else {
414414 let $acc151071410761 = processAddress($acc141071410761, $list1071410761[14])
415415 if (($size1071410761 == 15))
416416 then $acc151071410761
417417 else {
418418 let $acc161071410761 = processAddress($acc151071410761, $list1071410761[15])
419419 if (($size1071410761 == 16))
420420 then $acc161071410761
421421 else {
422422 let $acc171071410761 = processAddress($acc161071410761, $list1071410761[16])
423423 if (($size1071410761 == 17))
424424 then $acc171071410761
425425 else {
426426 let $acc181071410761 = processAddress($acc171071410761, $list1071410761[17])
427427 if (($size1071410761 == 18))
428428 then $acc181071410761
429429 else {
430430 let $acc191071410761 = processAddress($acc181071410761, $list1071410761[18])
431431 if (($size1071410761 == 19))
432432 then $acc191071410761
433433 else {
434434 let $acc201071410761 = processAddress($acc191071410761, $list1071410761[19])
435435 if (($size1071410761 == 20))
436436 then $acc201071410761
437437 else {
438438 let $acc211071410761 = processAddress($acc201071410761, $list1071410761[20])
439439 throw("List size exceed 20")
440440 }
441441 }
442442 }
443443 }
444444 }
445445 }
446446 }
447447 }
448448 }
449449 }
450450 }
451451 }
452452 }
453453 }
454454 }
455455 }
456456 }
457457 }
458458 }
459459 }
460460 }
461461 }
462462 let toDistr = getInt(kToDistr)
463463 (result._2 ++ [IntegerEntry(kToDistr, (toDistr - (result._1 * 1000000))), IntegerEntry(kUnstakedReward, 0)])
464464 }
465465
466466
467467
468468 @Callable(i)
469469 func swapEgg () = if ((i.caller != mAccAddr))
470470 then throw("Method can be called by master account only")
471471 else {
472472 let oldEggBalance = assetBalance(this, oldEggAssetId)
473473 let swapTx = invoke(swapEggDappAddress, "swapEgg", nil, [AttachedPayment(oldEggAssetId, oldEggBalance)])
474474 if ((swapTx == swapTx))
475475 then [BooleanEntry("swapped_egg", true), IntegerEntry("swapped_egg_amount", oldEggBalance)]
476476 else throw("Strict value is not equal to itself.")
477477 }
478478
479479
480-
481-@Callable(i)
482-func payChange (addresses) = if ((i.caller != mAccAddr))
483- then throw("Method can be called only by main account")
484- else {
485- let addressValues = split(addresses, ";")
486- if ((size(addressValues) > 20))
487- then throw("Can't send more than 20 transfers at once")
488- else {
489- func processAddress (accum,addressStr) = {
490- let kAddrChange = (("address_" + addressStr) + "_change")
491- let kAddrEarned = (("address_" + addressStr) + "_total_earned")
492- let changeValue = getInt(kAddrChange)
493-[IntegerEntry(kAddrChange, 0), IntegerEntry(kAddrEarned, 0), ScriptTransfer(addressFromStringValue(addressStr), changeValue, getEggId())]
494- }
495-
496- let result = {
497- let $list1208712130 = addressValues
498- let $size1208712130 = size($list1208712130)
499- let $acc01208712130 = nil
500- if (($size1208712130 == 0))
501- then $acc01208712130
502- else {
503- let $acc11208712130 = processAddress($acc01208712130, $list1208712130[0])
504- if (($size1208712130 == 1))
505- then $acc11208712130
506- else {
507- let $acc21208712130 = processAddress($acc11208712130, $list1208712130[1])
508- if (($size1208712130 == 2))
509- then $acc21208712130
510- else {
511- let $acc31208712130 = processAddress($acc21208712130, $list1208712130[2])
512- if (($size1208712130 == 3))
513- then $acc31208712130
514- else {
515- let $acc41208712130 = processAddress($acc31208712130, $list1208712130[3])
516- if (($size1208712130 == 4))
517- then $acc41208712130
518- else {
519- let $acc51208712130 = processAddress($acc41208712130, $list1208712130[4])
520- if (($size1208712130 == 5))
521- then $acc51208712130
522- else {
523- let $acc61208712130 = processAddress($acc51208712130, $list1208712130[5])
524- if (($size1208712130 == 6))
525- then $acc61208712130
526- else {
527- let $acc71208712130 = processAddress($acc61208712130, $list1208712130[6])
528- if (($size1208712130 == 7))
529- then $acc71208712130
530- else {
531- let $acc81208712130 = processAddress($acc71208712130, $list1208712130[7])
532- if (($size1208712130 == 8))
533- then $acc81208712130
534- else {
535- let $acc91208712130 = processAddress($acc81208712130, $list1208712130[8])
536- if (($size1208712130 == 9))
537- then $acc91208712130
538- else {
539- let $acc101208712130 = processAddress($acc91208712130, $list1208712130[9])
540- if (($size1208712130 == 10))
541- then $acc101208712130
542- else {
543- let $acc111208712130 = processAddress($acc101208712130, $list1208712130[10])
544- if (($size1208712130 == 11))
545- then $acc111208712130
546- else {
547- let $acc121208712130 = processAddress($acc111208712130, $list1208712130[11])
548- if (($size1208712130 == 12))
549- then $acc121208712130
550- else {
551- let $acc131208712130 = processAddress($acc121208712130, $list1208712130[12])
552- if (($size1208712130 == 13))
553- then $acc131208712130
554- else {
555- let $acc141208712130 = processAddress($acc131208712130, $list1208712130[13])
556- if (($size1208712130 == 14))
557- then $acc141208712130
558- else {
559- let $acc151208712130 = processAddress($acc141208712130, $list1208712130[14])
560- if (($size1208712130 == 15))
561- then $acc151208712130
562- else {
563- let $acc161208712130 = processAddress($acc151208712130, $list1208712130[15])
564- if (($size1208712130 == 16))
565- then $acc161208712130
566- else {
567- let $acc171208712130 = processAddress($acc161208712130, $list1208712130[16])
568- if (($size1208712130 == 17))
569- then $acc171208712130
570- else {
571- let $acc181208712130 = processAddress($acc171208712130, $list1208712130[17])
572- if (($size1208712130 == 18))
573- then $acc181208712130
574- else {
575- let $acc191208712130 = processAddress($acc181208712130, $list1208712130[18])
576- if (($size1208712130 == 19))
577- then $acc191208712130
578- else {
579- let $acc201208712130 = processAddress($acc191208712130, $list1208712130[19])
580- if (($size1208712130 == 20))
581- then $acc201208712130
582- else {
583- let $acc211208712130 = processAddress($acc201208712130, $list1208712130[20])
584- throw("List size exceed 20")
585- }
586- }
587- }
588- }
589- }
590- }
591- }
592- }
593- }
594- }
595- }
596- }
597- }
598- }
599- }
600- }
601- }
602- }
603- }
604- }
605- }
606- }
607- result
608- }
609- }
610-
611-
612480 @Verifier(tx)
613481 func verify () = {
614482 let checkStarted = (getInt(kTotalLiquidity) >= getInt(kLiquidityThreshold))
615483 func totalEggSpending (accum,payment) = if ((payment.assetId == getEggId()))
616484 then (accum + payment.amount)
617485 else accum
618486
619487 match tx {
620488 case inv: InvokeScriptTransaction =>
621489 let unstakedRewardNow = getInt(kUnstakedReward)
622490 let toDistr = getInt(kToDistr)
623491 let minBalance = (unstakedRewardNow + toDistr)
624492 if (if ((inv.function == "unstakeNFT"))
625493 then true
626494 else (inv.function == "unstakeJackpot"))
627495 then throw("You cannot call these functions directly")
628496 else if ((sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) == false))
629497 then throw("_100")
630498 else if ((checkStarted == false))
631499 then throw("_14")
632500 else if ((getBool(kLocked) == true))
633501 then throw("_22")
634502 else if (if ((inv.fee > 900000))
635503 then true
636504 else (inv.feeAssetId != unit))
637505 then throw("_15")
638506 else if ((inv.function == "claimReward"))
639507 then throw("_16")
640508 else if ((size(inv.payments) > 2))
641509 then throw("_17")
642510 else if ((minBalance > ((assetBalance(this, getEggId()) - {
643- let $list1335413396 = inv.payments
644- let $size1335413396 = size($list1335413396)
645- let $acc01335413396 = 0
646- if (($size1335413396 == 0))
647- then $acc01335413396
511+ let $list1251412556 = inv.payments
512+ let $size1251412556 = size($list1251412556)
513+ let $acc01251412556 = 0
514+ if (($size1251412556 == 0))
515+ then $acc01251412556
648516 else {
649- let $acc11335413396 = totalEggSpending($acc01335413396, $list1335413396[0])
650- if (($size1335413396 == 1))
651- then $acc11335413396
517+ let $acc11251412556 = totalEggSpending($acc01251412556, $list1251412556[0])
518+ if (($size1251412556 == 1))
519+ then $acc11251412556
652520 else {
653- let $acc21335413396 = totalEggSpending($acc11335413396, $list1335413396[1])
654- if (($size1335413396 == 2))
655- then $acc21335413396
521+ let $acc21251412556 = totalEggSpending($acc11251412556, $list1251412556[1])
522+ if (($size1251412556 == 2))
523+ then $acc21251412556
656524 else {
657- let $acc31335413396 = totalEggSpending($acc21335413396, $list1335413396[2])
658- if (($size1335413396 == 3))
659- then $acc31335413396
525+ let $acc31251412556 = totalEggSpending($acc21251412556, $list1251412556[2])
526+ if (($size1251412556 == 3))
527+ then $acc31251412556
660528 else {
661- let $acc41335413396 = totalEggSpending($acc31335413396, $list1335413396[3])
529+ let $acc41251412556 = totalEggSpending($acc31251412556, $list1251412556[3])
662530 throw("List size exceed 3")
663531 }
664532 }
665533 }
666534 }
667535 }) * 1000000)))
668536 then throw(("Your minimal balance should be = " + toString(minBalance)))
669537 else if (if ((addressFromRecipient(inv.dApp) == this))
670538 then (inv.function == "callUnstakeProxy")
671539 else false)
672540 then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
673541 else if (if ((addressFromRecipient(inv.dApp) == this))
674542 then (inv.function == "revertTransfer")
675543 else false)
676544 then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
677545 else if (if ((addressFromRecipient(inv.dApp) == this))
678546 then (inv.function == "claimCeoFee")
679547 else false)
680548 then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
681549 else if (if ((addressFromRecipient(inv.dApp) == this))
682550 then if ((inv.function == "lockInvestments"))
683551 then true
684552 else (inv.function == "unlockInvestments")
685553 else false)
686554 then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
687555 else if (if ((addressFromRecipient(inv.dApp) == addressFromStringValue(getMarketProxyAddr())))
688556 then (inv.function == "callMarketplaceProxy")
689557 else false)
690558 then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
691559 else {
692560 let allowedContracts = getStrA(mAccAddr, "allowed_contracts")
693561 let allowedContractsList = split(allowedContracts, ";")
694562 let dappToCall = toString(addressFromRecipient(inv.dApp))
695563 (indexOf(allowedContractsList, dappToCall) != unit)
696564 }
565+ case mt: MassTransferTransaction =>
566+ sigVerify(tx.bodyBytes, tx.proofs[0], mAccPKey)
567+ case dt: DataTransaction =>
568+ sigVerify(tx.bodyBytes, tx.proofs[0], mAccPKey)
697569 case ss: SetScriptTransaction =>
698570 sigVerify(tx.bodyBytes, tx.proofs[0], mAccPKey)
699571 case _ =>
700572 false
701573 }
702574 }
703575

github/deemru/w8io/6500d08 
114.91 ms