tx · RwcodNh6mCgiBXKjzb9cD9jEvgym3Vxv3f8giKeJi2n

3P3UMGin66fAe39AhJf5whS2Yabu6dZAmCF:  -0.01400000 Waves

2022.04.17 23:10 [3078313] smart account 3P3UMGin66fAe39AhJf5whS2Yabu6dZAmCF > SELF 0.00000000 Waves

{ "type": 13, "id": "RwcodNh6mCgiBXKjzb9cD9jEvgym3Vxv3f8giKeJi2n", "fee": 1400000, "feeAssetId": null, "timestamp": 1650226211449, "version": 2, "chainId": 87, "sender": "3P3UMGin66fAe39AhJf5whS2Yabu6dZAmCF", "senderPublicKey": "EiyJJuFWHCUxca3XYDnXQScAHo35hBzyEUFPux3P2itx", "proofs": [ "2mfxAFU6Un4zBgBWjW8sHJYYPqRabJHRmwxKaGuriFnQVLdEPQQ7WmghFfTVMVLhpxztsVggqPHiHrsXRnG3yUDB" ], "script": "base64:AAIFAAAAAAAAAD4IAhIDCgEIEgMKAQESCAoGCAEEAQEBEgMKAQQSABIAEgASAwoBCBIGCgQICAEBEgMKAQgSAwoBCBIECgIICAAAAB8AAAAAC2tleU1BY2NQS2V5AgAAAAltYXN0ZXJfcGsBAAAABmdldFN0cgAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiAgAAAAAAAAAADm1BY2NQS2V5U3RyaW5nCQEAAAAGZ2V0U3RyAAAAAQUAAAALa2V5TUFjY1BLZXkAAAAACG1BY2NQS2V5CQACWQAAAAEFAAAADm1BY2NQS2V5U3RyaW5nAAAAAAhtQWNjQWRkcgkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQUAAAAIbUFjY1BLZXkAAAAACmZlZVBlcmNlbnQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAACG1BY2NBZGRyCQABLAAAAAIJAAEsAAAAAgIAAAACZl8JAAQlAAAAAQUAAAAEdGhpcwIAAAAEX2ZlZQAAAAAOc3Rha2luZ0FkZHJlc3MJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAhtQWNjQWRkcgkAASwAAAACCQABLAAAAAICAAAAAmZfCQAEJQAAAAEFAAAABHRoaXMCAAAADl9zdGFrZV9hZGRyZXNzCQABLAAAAAIJAAEsAAAAAgIAAAACZl8JAAQlAAAAAQUAAAAEdGhpcwIAAAAaX3N0YWtlX2FkZHJlc3Mgbm90IGRlZmluZWQAAAAAD2tUb3RhbExpcXVpZGl0eQIAAAAPdG90YWxfbGlxdWlkaXR5AAAAAAxrSW5pdGlhbGl6ZWQCAAAAC0lOSVRJQUxJWkVEAAAAABNrTGlxdWlkaXR5VGhyZXNob2xkAgAAABNMSVFVSURJVFlfVEhSRVNIT0xEAAAAABNrVG90YWxGYXJtaW5nUmV3YXJkAgAAABR0b3RhbF9mYXJtaW5nX3Jld2FyZAAAAAANa1NoYXJlQXNzZXRJZAIAAAAOU0hBUkVfQVNTRVRfSUQAAAAADmtJbmN1YmF0b3JEYXBwAgAAAA5JTkNVQkFUT1JfREFQUAAAAAAMa0JyZWVkZXJEYXBwAgAAAAxCUkVFREVSX0RBUFAAAAAADGtGYXJtaW5nRGFwcAIAAAAMRkFSTUlOR19EQVBQAAAAABBrTWFya2V0UHJveHlEYXBwAgAAABZNQVJLRVRQTEFDRV9QUk9YWV9EQVBQAAAAAAxrQXVjdGlvbkRhcHACAAAADEFVQ1RJT05fREFQUAAAAAAHa0xvY2tlZAIAAAAGTE9DS0VEAAAAABBrQ2VvQ29sbGVjdGVkRmVlAgAAABFjZW9fY29sbGVjdGVkX2ZlZQAAAAAXa0Nlb0NvbGxlY3RlZEZlZU92ZXJhbGwCAAAAD2Nlb19mZWVfb3ZlcmFsbAAAAAASa0xvY2tlZEludmVzdG1lbnRzAgAAABJsb2NrZWRfaW52ZXN0bWVudHMAAAAAEGtleVRvdGFsQ29tcG91bmQCAAAADnRvdGFsX2NvbXBvdW5kAAAAAA9rZXlHbG9iYWxTdGFrZWQCAAAADWdsb2JhbF9zdGFrZWQBAAAABmdldEludAAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiAAAAAAAAAAAAAQAAAAdnZXRCb29sAAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQbAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAdCb29sZWFuBAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiBQAAAAR1bml0AQAAAAdnZXRTdHJBAAAAAgAAAAFhAAAAAWsEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAABYQUAAAABawMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiAgAAAAABAAAAB2dldEludEEAAAACAAAAB2FkZHJlc3MAAAADa2V5BAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiAAAAAAAAAAAAAQAAABJnZXRNYXJrZXRQcm94eUFkZHIAAAAACQEAAAAHZ2V0U3RyQQAAAAIFAAAACG1BY2NBZGRyBQAAABBrTWFya2V0UHJveHlEYXBwAQAAAAhnZXRFZ2dJZAAAAAAJAAJZAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAIbUFjY0FkZHICAAAADEVHR19BU1NFVF9JRAEAAAAPZ2V0U2hhcmVBc3NldElkAAAAAAkAAlkAAAABCQEAAAAGZ2V0U3RyAAAAAQUAAAANa1NoYXJlQXNzZXRJZAEAAAAFYXNJbnQAAAABAAAABXZhbHVlBAAAAAckbWF0Y2gwBQAAAAV2YWx1ZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAANpbnQFAAAAByRtYXRjaDAFAAAAA2ludAkAAAIAAAABAgAAABl3cm9uZyB0eXBlLCBleHBlY3RlZDogSW50AAAADAAAAAFpAQAAAA1pbml0TWFzdGVyS2V5AAAAAQAAAAlwdWJsaWNLZXkDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMJAAACAAAAAQIAAAAZWW91IGNhbm5vdCBkbyB0aGlzIGFjdGlvbgMJAQAAAAIhPQAAAAIFAAAADm1BY2NQS2V5U3RyaW5nAgAAAAAJAAACAAAAAQIAAAAyTWFzdGVyIHB1YmxpYyBrZXkgYWxyZWFkeSBzZXQsIHlvdSBjYW4ndCBvdmVycmlkZSEJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAALa2V5TUFjY1BLZXkFAAAACXB1YmxpY0tleQUAAAADbmlsAAAAAWkBAAAAHmNhbGN1bGF0ZUNvbXBvdW5kU2hhcmVBbmRJc3N1ZQAAAAEAAAAGYW1vdW50AwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzCQAAAgAAAAECAAAAGVlvdSBjYW5ub3QgZG8gdGhpcyBhY3Rpb24DCQAAAAAAAAIJAQAAAAdnZXRCb29sAAAAAQUAAAASa0xvY2tlZEludmVzdG1lbnRzBgkABRQAAAACBQAAAANuaWwAAAAAAAAAAAAEAAAADHNoYXJlQXNzZXRJZAkBAAAAD2dldFNoYXJlQXNzZXRJZAAAAAAEAAAADXRvdGFsQ29tcG91bmQJAQAAAAdnZXRJbnRBAAAAAgUAAAAOc3Rha2luZ0FkZHJlc3MFAAAAEGtleVRvdGFsQ29tcG91bmQEAAAAC3RvdGFsU3Rha2VkCQEAAAAHZ2V0SW50QQAAAAIFAAAADnN0YWtpbmdBZGRyZXNzBQAAAA9rZXlHbG9iYWxTdGFrZWQEAAAAC3RvdGFsTG9ja2VkCQAAZAAAAAIFAAAAC3RvdGFsU3Rha2VkBQAAAA10b3RhbENvbXBvdW5kBAAAABFhbW91bnRGb3JDb21wb3VuZAkAAGsAAAADBQAAAAZhbW91bnQFAAAADXRvdGFsQ29tcG91bmQFAAAAC3RvdGFsTG9ja2VkCQAFFAAAAAIJAARMAAAAAgkBAAAAB1JlaXNzdWUAAAADBQAAAAxzaGFyZUFzc2V0SWQFAAAAEWFtb3VudEZvckNvbXBvdW5kBgUAAAADbmlsBQAAABFhbW91bnRGb3JDb21wb3VuZAAAAAFpAQAAABJpbml0Q29sbGVjdGl2ZUZhcm0AAAAGAAAABG5hbWUAAAAQbWluaW11bVRocmVzaG9sZAAAAAltaWdyYXRpb24AAAASdG90YWxGYXJtaW5nUmV3YXJkAAAADnRvdGFsTGlxdWlkaXR5AAAADnRvdGFsRmFybVRva2VuAwkAAAAAAAACBQAAAA5tQWNjUEtleVN0cmluZwIAAAAACQAAAgAAAAECAAAAJEZpcnN0IGluaXRpYXRpZSBhIG1hc3RlciBwdWJsaWMga2V5IQMJAQAAAAIhPQAAAAIIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQUAAAAIbUFjY1BLZXkJAAACAAAAAQIAAAACXzEDCQEAAAACIT0AAAACCQEAAAAHZ2V0Qm9vbAAAAAEFAAAADGtJbml0aWFsaXplZAUAAAAEdW5pdAkAAAIAAAABAgAAAAJfMgMDCQAAAAAAAAIFAAAACW1pZ3JhdGlvbgcDCQEAAAACIT0AAAACCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQAAAAAAACYloAGCQEAAAACIT0AAAACCAkAAZEAAAACCAUAAAABaQAA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bmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAAplZ2dBc3NldElkCQAAZQAAAAIFAAAAC2Ftb3VudFRvUGF5BQAAAA5hbW91bnRDb21wb3VuZAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgUAAAAMc2hhcmVBc3NldElkBQAAAA5hbW91bnRDb21wb3VuZAUAAAADbmlsAwkAAAAAAAACBQAAAAV0b3BVcAUAAAAFdG9wVXAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAE2tUb3RhbEZhcm1pbmdSZXdhcmQJAABkAAAAAgUAAAASdG90YWxGYXJtaW5nUmV3YXJkBQAAAAthbW91bnRUb1BheQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAQa0Nlb0NvbGxlY3RlZEZlZQkAAGQAAAACBQAAAA1jdXJyZW50Q2VvRmVlBQAAAA5mYXJtQ2VvRmVlU2l6ZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAXa0Nlb0NvbGxlY3RlZEZlZU92ZXJhbGwJAABkAAAAAgUAAAANY2VvRmVlT3ZlcmFsbAUAAAAOZmFybUNlb0ZlZVNpemUFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAC2NsYWltQ2VvRmVlAAAABAAAAAhhZGRyZXNzMQAAAAhhZGRyZXNzMgAAAA1hZGRyZXNzMVNoYXJlAAAADWFkZHJlc3MyU2hhcmUDCQAAZgAAAAIAAAAAAAAAAAAFAAAADWFkZHJlc3MxU2hhcmUJAAACAAAAAQIAAAAZU2hhcmUgMSBjYW4ndCBiZSBuZWdhdGl2ZQMJAABmAAAAAgAAAAAAAAAAAAUAAAANYWRkcmVzczJTaGFyZQkAAAIAAAABAgAAABlTaGFyZSAyIGNhbid0IGJlIG5lZ2F0aXZlAwkBAAAAAiE9AAAAAgkAAGQAAAACBQAAAA1hZGRyZXNzMVNoYXJlBQAAAA1hZGRyZXNzMlNoYXJlAAAAAAAA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b0ZlZQkBAAAABmdldEludAAAAAEFAAAAEGtDZW9Db2xsZWN0ZWRGZWUEAAAADWNlb0ZlZU92ZXJhbGwJAQAAAAZnZXRJbnQAAAABBQAAABdrQ2VvQ29sbGVjdGVkRmVlT3ZlcmFsbAQAAAAOZmFybUNlb0ZlZVNpemUJAABrAAAAAwUAAAAGcmV3YXJkBQAAAApmZWVQZXJjZW50AAAAAAAAAABkBAAAAAthbW91bnRUb1BheQkAAGUAAAACBQAAAAZyZXdhcmQFAAAADmZhcm1DZW9GZWVTaXplBAAAABFhbW91bnRDb21wb250Q2FsbAkAA/wAAAAEBQAAAAR0aGlzAgAAAB5jYWxjdWxhdGVDb21wb3VuZFNoYXJlQW5kSXNzdWUJAARMAAAAAgUAAAALYW1vdW50VG9QYXkFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAABFhbW91bnRDb21wb250Q2FsbAUAAAARYW1vdW50Q29tcG9udENhbGwEAAAADmFtb3VudENvbXBvdW5kCQEAAAAFYXNJbnQAAAABCQAD/AAAAAQFAAAABHRoaXMCAAAAHmNhbGN1bGF0ZUNvbXBvdW5kU2hhcmVBbmRJc3N1ZQkABEwAAAACBQAAAAthbW91bnRUb1BheQUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAADmFtb3VudENvbXBvdW5kBQAAAA5hbW91bnRDb21wb3VuZAQAAAAFdG9wVXAJAAP8AAAABAUAAAAOc3Rha2luZ0FkZHJlc3MCAAAAC3RvcFVwUmV3YXJkBQAAAANuaWwJAARMAAAAAgkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIFAAAACmVnZ0Fzc2V0SWQJAABlAAAAAgUAAAALYW1vdW50VG9QYXkFAAAADmFtb3VudENvbXBvdW5kCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAAxzaGFyZUFzc2V0SWQFAAAADmFtb3VudENvbXBvdW5kBQAAAANuaWwDCQAAAAAAAAIFAAAABXRvcFVwBQAAAAV0b3BVcAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAQa0Nlb0NvbGxlY3RlZEZlZQkAAGQAAAACBQAAAA1jdXJyZW50Q2VvRmVlBQAAAA5mYXJtQ2VvRmVlU2l6ZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAXa0Nlb0NvbGxlY3RlZEZlZU92ZXJhbGwJAABkAAAAAgUAAAANY2VvRmVlT3ZlcmFsbAUAAAAOZmFybUNlb0ZlZVNpemUFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAABAAAAAxjaGVja1N0YXJ0ZWQJAABnAAAAAgkBAAAABmdldEludAAAAAEFAAAAD2tUb3RhbExpcXVpZGl0eQkBAAAABmdldEludAAAAAEFAAAAE2tMaXF1aWRpdHlUaHJlc2hvbGQEAAAAByRtYXRjaDAFAAAAAnR4AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABdJbnZva2VTY3JpcHRUcmFuc2FjdGlvbgQAAAADaW52BQAAAAckbWF0Y2gwBAAAABRhY2NlcHRlZENhbGxzU3Rha2luZwkABEwAAAACAgAAAA9zdGFrZUZhcm1Ub2tlbnMJAARMAAAAAgIAAAALY2xhaW1SZXdhcmQJAARMAAAAAgIAAAASd2l0aGRyYXdGYXJtVG9rZW5zBQAAAANuaWwEAAAAEWFjY2VwdGVkQ2FsbHNUaGlzCQAETAAAAAICAAAAEGNhbGxVbnN0YWtlUHJveHkJAARMAAAAAgIAAAALY2xhaW1DZW9GZWUJAARMAAAAAgIAAAAPbG9ja0ludmVzdG1lbnRzCQAETAAAAAICAAAAEXVubG9ja0ludmVzdG1lbnRzBQAAAANuaWwDAwkAAAAAAAACCAUAAAADaW52AAAACGZ1bmN0aW9uAgAAAAp1bnN0YWtlTkZUBgkAAAAAAAACCAUAAAADaW52AAAACGZ1bmN0aW9uAgAAAA51bnN0YWtlSmFja3BvdAkAAAIAAAABAgAAAChZ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", "height": 3078313, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: C4YR6nFsUpjbz4ceD8tjTi6g5cNYJ8pLEj6KaoV1DGhJ Next: HVwvfwRer6duvvgJNziueZDfzDy3bCztYJqh6YZRWiRm Diff:
OldNewDifferences
180180 @Callable(i)
181181 func provideLiquidity () = {
182182 let eggAssetId = getEggId()
183- if ((getBool(kLockedInvestments) == true))
183+ if (if ((i.callerPublicKey != mAccPKey))
184+ then (getBool(kLockedInvestments) == true)
185+ else false)
184186 then throw("Contract is locked for investments by it's CEO. Please invest in another collective farm.")
185187 else if ((getBool(kLocked) == true))
186188 then throw("_22")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let keyMAccPKey = "master_pk"
55
66 func getStr (key) = match getString(this, key) {
77 case b: String =>
88 b
99 case _ =>
1010 ""
1111 }
1212
1313
1414 let mAccPKeyString = getStr(keyMAccPKey)
1515
1616 let mAccPKey = fromBase58String(mAccPKeyString)
1717
1818 let mAccAddr = addressFromPublicKey(mAccPKey)
1919
2020 let feePercent = getIntegerValue(mAccAddr, (("f_" + toString(this)) + "_fee"))
2121
2222 let stakingAddress = addressFromStringValue(valueOrErrorMessage(getString(mAccAddr, (("f_" + toString(this)) + "_stake_address")), (("f_" + toString(this)) + "_stake_address not defined")))
2323
2424 let kTotalLiquidity = "total_liquidity"
2525
2626 let kInitialized = "INITIALIZED"
2727
2828 let kLiquidityThreshold = "LIQUIDITY_THRESHOLD"
2929
3030 let kTotalFarmingReward = "total_farming_reward"
3131
3232 let kShareAssetId = "SHARE_ASSET_ID"
3333
3434 let kIncubatorDapp = "INCUBATOR_DAPP"
3535
3636 let kBreederDapp = "BREEDER_DAPP"
3737
3838 let kFarmingDapp = "FARMING_DAPP"
3939
4040 let kMarketProxyDapp = "MARKETPLACE_PROXY_DAPP"
4141
4242 let kAuctionDapp = "AUCTION_DAPP"
4343
4444 let kLocked = "LOCKED"
4545
4646 let kCeoCollectedFee = "ceo_collected_fee"
4747
4848 let kCeoCollectedFeeOverall = "ceo_fee_overall"
4949
5050 let kLockedInvestments = "locked_investments"
5151
5252 let keyTotalCompound = "total_compound"
5353
5454 let keyGlobalStaked = "global_staked"
5555
5656 func getInt (key) = match getInteger(this, key) {
5757 case b: Int =>
5858 b
5959 case _ =>
6060 0
6161 }
6262
6363
6464 func getBool (key) = match getBoolean(this, key) {
6565 case b: Boolean =>
6666 b
6767 case _ =>
6868 unit
6969 }
7070
7171
7272 func getStrA (a,k) = match getString(a, k) {
7373 case b: String =>
7474 b
7575 case _ =>
7676 ""
7777 }
7878
7979
8080 func getIntA (address,key) = match getInteger(address, key) {
8181 case b: Int =>
8282 b
8383 case _ =>
8484 0
8585 }
8686
8787
8888 func getMarketProxyAddr () = getStrA(mAccAddr, kMarketProxyDapp)
8989
9090
9191 func getEggId () = fromBase58String(getStringValue(mAccAddr, "EGG_ASSET_ID"))
9292
9393
9494 func getShareAssetId () = fromBase58String(getStr(kShareAssetId))
9595
9696
9797 func asInt (value) = match value {
9898 case int: Int =>
9999 int
100100 case _ =>
101101 throw("wrong type, expected: Int")
102102 }
103103
104104
105105 @Callable(i)
106106 func initMasterKey (publicKey) = if ((i.caller != this))
107107 then throw("You cannot do this action")
108108 else if ((mAccPKeyString != ""))
109109 then throw("Master public key already set, you can't override!")
110110 else [StringEntry(keyMAccPKey, publicKey)]
111111
112112
113113
114114 @Callable(i)
115115 func calculateCompoundShareAndIssue (amount) = if ((i.caller != this))
116116 then throw("You cannot do this action")
117117 else if ((getBool(kLockedInvestments) == true))
118118 then $Tuple2(nil, 0)
119119 else {
120120 let shareAssetId = getShareAssetId()
121121 let totalCompound = getIntA(stakingAddress, keyTotalCompound)
122122 let totalStaked = getIntA(stakingAddress, keyGlobalStaked)
123123 let totalLocked = (totalStaked + totalCompound)
124124 let amountForCompound = fraction(amount, totalCompound, totalLocked)
125125 $Tuple2([Reissue(shareAssetId, amountForCompound, true)], amountForCompound)
126126 }
127127
128128
129129
130130 @Callable(i)
131131 func initCollectiveFarm (name,minimumThreshold,migration,totalFarmingReward,totalLiquidity,totalFarmToken) = if ((mAccPKeyString == ""))
132132 then throw("First initiatie a master public key!")
133133 else if ((i.callerPublicKey != mAccPKey))
134134 then throw("_1")
135135 else if ((getBool(kInitialized) != unit))
136136 then throw("_2")
137137 else if (if ((migration == false))
138138 then if ((i.payments[0].amount != 10000000))
139139 then true
140140 else (i.payments[0].assetId != getEggId())
141141 else false)
142142 then throw("_20")
143143 else {
144144 let shareTokens = if (migration)
145145 then totalFarmToken
146146 else 10000000
147147 let shareToken = Issue(name, (("Team token for the \"" + name) + "\" collective farm"), shareTokens, 8, true)
148148 let totLiquidity = if (migration)
149149 then totalLiquidity
150150 else 10000000
151151 let totFarmingReward = if (migration)
152152 then [IntegerEntry(kTotalFarmingReward, totalFarmingReward)]
153153 else nil
154154 ([StringEntry(kShareAssetId, toBase58String(calculateAssetId(shareToken))), BooleanEntry(kInitialized, true), IntegerEntry(kTotalLiquidity, totLiquidity), shareToken, ScriptTransfer(i.caller, shareTokens, calculateAssetId(shareToken)), BooleanEntry(kLocked, false), IntegerEntry(kLiquidityThreshold, minimumThreshold)] ++ totFarmingReward)
155155 }
156156
157157
158158
159159 @Callable(i)
160160 func setLock (s) = if ((i.callerPublicKey != mAccPKey))
161161 then throw("_21")
162162 else [BooleanEntry(kLocked, s)]
163163
164164
165165
166166 @Callable(i)
167167 func lockInvestments () = if ((i.caller != this))
168168 then throw("You cannot lock this contract")
169169 else [BooleanEntry(kLockedInvestments, true)]
170170
171171
172172
173173 @Callable(i)
174174 func unlockInvestments () = if ((i.caller != this))
175175 then throw("You cannot lock this contract")
176176 else [BooleanEntry(kLockedInvestments, false)]
177177
178178
179179
180180 @Callable(i)
181181 func provideLiquidity () = {
182182 let eggAssetId = getEggId()
183- if ((getBool(kLockedInvestments) == true))
183+ if (if ((i.callerPublicKey != mAccPKey))
184+ then (getBool(kLockedInvestments) == true)
185+ else false)
184186 then throw("Contract is locked for investments by it's CEO. Please invest in another collective farm.")
185187 else if ((getBool(kLocked) == true))
186188 then throw("_22")
187189 else if ((i.payments[0].assetId != eggAssetId))
188190 then throw("_4")
189191 else if ((1000000 > i.payments[0].amount))
190192 then throw("Min amount to invest is 0.01 EGG")
191193 else {
192194 let totalLiquidity = getInt(kTotalLiquidity)
193195 let shareTokensToGive = i.payments[0].amount
194196 let shareTokensId = fromBase58String(getStr(kShareAssetId))
195197 let reissue = Reissue(getShareAssetId(), shareTokensToGive, true)
196198 let kParticipated = (("account_" + toString(i.caller)) + "_participated")
197199 let alreadyParticipated = getBool(kParticipated)
198200 $Tuple2([reissue, ScriptTransfer(i.caller, shareTokensToGive, shareTokensId), IntegerEntry(kTotalLiquidity, (totalLiquidity + value(i.payments[0].amount))), BooleanEntry(kParticipated, true)], shareTokensToGive)
199201 }
200202 }
201203
202204
203205
204206 @Callable(i)
205207 func claimFarmingRewardProxy (ids) = if ((i.callerPublicKey != mAccPKey))
206208 then throw("_23")
207209 else {
208210 let eggAssetId = getEggId()
209211 let shareAssetId = getShareAssetId()
210212 let farmingDapp = addressFromStringValue(getStrA(mAccAddr, kFarmingDapp))
211213 func claimReward (accum,nftId) = {
212214 let invRes = invoke(farmingDapp, "claimReward", [nftId], nil)
213215 if ((invRes == invRes))
214216 then match invRes {
215217 case int: Int =>
216218 (accum + int)
217219 case _ =>
218220 throw("_5")
219221 }
220222 else throw("Strict value is not equal to itself.")
221223 }
222224
223225 let nftIds = split(ids, ";")
224226 let foldResult = {
225227 let $l = nftIds
226228 let $s = size($l)
227229 let $acc0 = 0
228230 func $f0_1 ($a,$i) = if (($i >= $s))
229231 then $a
230232 else claimReward($a, $l[$i])
231233
232234 func $f0_2 ($a,$i) = if (($i >= $s))
233235 then $a
234236 else throw("List size exceeds 10")
235237
236238 $f0_2($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)
237239 }
238240 let claimedReward = match foldResult {
239241 case int: Int =>
240242 int
241243 case _ =>
242244 throw("_6")
243245 }
244246 let totalFarmingReward = getInt(kTotalFarmingReward)
245247 let farmCeoFeeSize = fraction(claimedReward, feePercent, 100)
246248 let currentCeoFee = getInt(kCeoCollectedFee)
247249 let ceoFeeOverall = getInt(kCeoCollectedFeeOverall)
248250 let amountToPay = (claimedReward - farmCeoFeeSize)
249251 let amountCompound = asInt(invoke(this, "calculateCompoundShareAndIssue", [amountToPay], nil))
250252 if ((amountCompound == amountCompound))
251253 then {
252254 let topUp = invoke(stakingAddress, "topUpReward", nil, [AttachedPayment(eggAssetId, (amountToPay - amountCompound)), AttachedPayment(shareAssetId, amountCompound)])
253255 if ((topUp == topUp))
254256 then [IntegerEntry(kTotalFarmingReward, (totalFarmingReward + amountToPay)), IntegerEntry(kCeoCollectedFee, (currentCeoFee + farmCeoFeeSize)), IntegerEntry(kCeoCollectedFeeOverall, (ceoFeeOverall + farmCeoFeeSize))]
255257 else throw("Strict value is not equal to itself.")
256258 }
257259 else throw("Strict value is not equal to itself.")
258260 }
259261
260262
261263
262264 @Callable(i)
263265 func claimCeoFee (address1,address2,address1Share,address2Share) = if ((0 > address1Share))
264266 then throw("Share 1 can't be negative")
265267 else if ((0 > address2Share))
266268 then throw("Share 2 can't be negative")
267269 else if (((address1Share + address2Share) != 100))
268270 then throw("Sum of shares should be 100")
269271 else if ((getBool(kLocked) == true))
270272 then throw("_22")
271273 else if ((i.caller == this))
272274 then {
273275 let currentCeoCollectedFee = getInt(kCeoCollectedFee)
274276 let address1Reward = if ((address2 == ""))
275277 then currentCeoCollectedFee
276278 else fraction(currentCeoCollectedFee, address1Share, 100)
277279 let address2Reward = if ((address2 == ""))
278280 then 0
279281 else fraction(currentCeoCollectedFee, address2Share, 100)
280282 let scriptTransferAddress2 = if ((address2 == ""))
281283 then nil
282284 else [ScriptTransfer(addressFromStringValue(address2), address2Reward, getEggId())]
283285 (scriptTransferAddress2 ++ [ScriptTransfer(addressFromStringValue(address1), address1Reward, getEggId()), IntegerEntry(kCeoCollectedFee, 0)])
284286 }
285287 else throw("Only manager can call the contract")
286288
287289
288290
289291 @Callable(i)
290292 func startLiquidation (auctionId) = throw("_7")
291293
292294
293295
294296 @Callable(i)
295297 func voteForLiquidation (auctionId) = throw("_7")
296298
297299
298300
299301 @Callable(i)
300302 func callUnstakeProxy (function,assetId) = if ((getBool(kLocked) == true))
301303 then throw("Contract is locked now")
302304 else if (if ((function != "unstakeNFT"))
303305 then (function != "unstakeJackpot")
304306 else false)
305307 then throw("Bad function name")
306308 else if ((i.caller != this))
307309 then throw("Can be called only by the account")
308310 else {
309311 let eggAssetId = getEggId()
310312 let shareAssetId = getShareAssetId()
311313 let farmingDappAddress = addressFromStringValue(getStrA(mAccAddr, "FARMING_DAPP"))
312314 let unstakedReward = invoke(farmingDappAddress, function, [assetId], nil)
313315 if ((unstakedReward == unstakedReward))
314316 then {
315317 let reward = match unstakedReward {
316318 case int: Int =>
317319 int
318320 case _ =>
319321 throw("Error during unstaking")
320322 }
321323 let currentCeoFee = getInt(kCeoCollectedFee)
322324 let ceoFeeOverall = getInt(kCeoCollectedFeeOverall)
323325 let farmCeoFeeSize = fraction(reward, feePercent, 100)
324326 let amountToPay = (reward - farmCeoFeeSize)
325327 let amountCompontCall = invoke(this, "calculateCompoundShareAndIssue", [amountToPay], nil)
326328 if ((amountCompontCall == amountCompontCall))
327329 then {
328330 let amountCompound = asInt(invoke(this, "calculateCompoundShareAndIssue", [amountToPay], nil))
329331 if ((amountCompound == amountCompound))
330332 then {
331333 let topUp = invoke(stakingAddress, "topUpReward", nil, [AttachedPayment(eggAssetId, (amountToPay - amountCompound)), AttachedPayment(shareAssetId, amountCompound)])
332334 if ((topUp == topUp))
333335 then [IntegerEntry(kCeoCollectedFee, (currentCeoFee + farmCeoFeeSize)), IntegerEntry(kCeoCollectedFeeOverall, (ceoFeeOverall + farmCeoFeeSize))]
334336 else throw("Strict value is not equal to itself.")
335337 }
336338 else throw("Strict value is not equal to itself.")
337339 }
338340 else throw("Strict value is not equal to itself.")
339341 }
340342 else throw("Strict value is not equal to itself.")
341343 }
342344
343345
344346 @Verifier(tx)
345347 func verify () = {
346348 let checkStarted = (getInt(kTotalLiquidity) >= getInt(kLiquidityThreshold))
347349 match tx {
348350 case inv: InvokeScriptTransaction =>
349351 let acceptedCallsStaking = ["stakeFarmTokens", "claimReward", "withdrawFarmTokens"]
350352 let acceptedCallsThis = ["callUnstakeProxy", "claimCeoFee", "lockInvestments", "unlockInvestments"]
351353 if (if ((inv.function == "unstakeNFT"))
352354 then true
353355 else (inv.function == "unstakeJackpot"))
354356 then throw("You cannot call these functions directly")
355357 else if (if (if ((addressFromRecipient(inv.dApp) == this))
356358 then (inv.function == "initMasterKey")
357359 else false)
358360 then (mAccPKeyString == "")
359361 else false)
360362 then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
361363 else if ((sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) == false))
362364 then throw("_100")
363365 else if ((checkStarted == false))
364366 then throw("_14")
365367 else if ((getBool(kLocked) == true))
366368 then throw("_22")
367369 else if (if ((inv.fee > 900000))
368370 then true
369371 else (inv.feeAssetId != unit))
370372 then throw("_15")
371373 else if ((size(inv.payments) > 2))
372374 then throw("_17")
373375 else if (if ((addressFromRecipient(inv.dApp) == this))
374376 then containsElement(acceptedCallsThis, inv.function)
375377 else false)
376378 then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
377379 else if (if ((addressFromRecipient(inv.dApp) == addressFromStringValue(getMarketProxyAddr())))
378380 then (inv.function == "callMarketplaceProxy")
379381 else false)
380382 then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
381383 else if (if ((addressFromRecipient(inv.dApp) == stakingAddress))
382384 then containsElement(acceptedCallsStaking, inv.function)
383385 else false)
384386 then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
385387 else {
386388 let allowedContracts = getStrA(mAccAddr, "allowed_contracts")
387389 let allowedContractsList = split(allowedContracts, ";")
388390 let dappToCall = toString(addressFromRecipient(inv.dApp))
389391 (indexOf(allowedContractsList, dappToCall) != unit)
390392 }
391393 case ss: SetScriptTransaction =>
392394 sigVerify(tx.bodyBytes, tx.proofs[0], mAccPKey)
393395 case mt: MassTransferTransaction =>
394396 sigVerify(tx.bodyBytes, tx.proofs[0], mAccPKey)
395397 case _ =>
396398 false
397399 }
398400 }
399401

github/deemru/w8io/6500d08 
48.25 ms