tx · BNzNLAeEzKNMkQYn1XieKbmf4VimvZCyd8ykuVTBwDpn

3NA6gug1TT67nGzrAGa36rG5nzTzUGtFQG9:  -0.01300000 Waves

2025.01.28 18:59 [3479143] smart account 3NA6gug1TT67nGzrAGa36rG5nzTzUGtFQG9 > SELF 0.00000000 Waves

{ "type": 13, "id": "BNzNLAeEzKNMkQYn1XieKbmf4VimvZCyd8ykuVTBwDpn", "fee": 1300000, "feeAssetId": null, "timestamp": 1738080001325, "version": 2, "chainId": 84, "sender": "3NA6gug1TT67nGzrAGa36rG5nzTzUGtFQG9", "senderPublicKey": "3gX6tHzxt5SFVKDcuDS9r5RxJ9erHrBxGwv3dZoi4SAW", "proofs": [ "2BCFnJVZpdMH2vpquSH1BXrrrDF1GG91uExmA987xSCV7dmA1skK9yXuPHsPd9e7aRnG72Q5wiQqxbrjmGLkSRZp" ], "script": "base64:AAIFAAAAAAAAABYIAhIDCgEIEgASAwoBCBIAEgQKAgEIAAAAGAEAAAAHZ2V0Qm9vbAAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEGwAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAHQm9vbGVhbgQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgcBAAAACWlzVGVzdEVudgAAAAAJAQAAAAdnZXRCb29sAAAAAQIAAAAHVEVTVEVOVgEAAAAXc3RhdGljS2V5X29yYWNsZUFkZHJlc3MAAAAAAgAAABRzdGF0aWNfb3JhY2xlQWRkcmVzcwEAAAAWc3RhdGljS2V5X2l0ZW1zQWRkcmVzcwAAAAACAAAAE3N0YXRpY19pdGVtc0FkZHJlc3MBAAAAHnN0YXRpY0tleV9tdXRhbnRGYXJtaW5nQWRkcmVzcwAAAAACAAAAG3N0YXRpY19tdXRhbnRGYXJtaW5nQWRkcmVzcwEAAAASc3RhdGljS2V5X2V4dHJhRmVlAAAAAAIAAAAPc3RhdGljX2V4dHJhRmVlAQAAABdzdGF0aWNLZXlfZmVlQWdncmVnYXRvcgAAAAACAAAAFHN0YXRpY19mZWVBZ2dyZWdhdG9yAQAAAB1zdGF0aWNLZXlfc2NyaXB0TWFzdGVyQWRkcmVzcwAAAAACAAAAGnN0YXRpY19zY3JpcHRNYXN0ZXJBZGRyZXNzAQAAABBrZXlVbnN0YWtlSGVpZ2h0AAAAAgAAAAxhcnRlZmFjdE5hbWUAAAAKYXJ0ZWZhY3RJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAMYXJ0ZWZhY3ROYW1lAgAAAAFfBQAAAAphcnRlZmFjdElkAgAAAA9fdW5zdGFrZV9oZWlnaHQBAAAAEGtleUFydGVmYWN0T3duZXIAAAACAAAADGFydGVmYWN0TmFtZQAAAAVvd25lcgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAMYXJ0ZWZhY3ROYW1lAgAAAAFfBQAAAAVvd25lcgIAAAAGX293bmVyAQAAAAxrZXlGZWVkTGltaXQAAAABAAAABW93bmVyCQABLAAAAAICAAAABmxpbWl0XwUAAAAFb3duZXIAAAAACXN0YWtlYWJsZQkABEwAAAACAgAAAAhBUlQtTEFLRQkABEwAAAACAgAAAAlBUlQtWFRSRUUJAARMAAAAAgIAAAAJQVJULVhTT0NLCQAETAAAAAICAAAACkFSVC1YTUlTVEwFAAAAA25pbAEAAAAMdHJ5R2V0U3RyaW5nAAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWECAAAAAAEAAAANdHJ5R2V0SW50ZWdlcgAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAAAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIAAAAHYWRkcmVzcwAAAANrZXkEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWECAAAAAAEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAAAx0cnlHZXRTdHJpbmcAAAABCQEAAAAXc3RhdGljS2V5X29yYWNsZUFkZHJlc3MAAAAAAQAAAA9nZXRJdGVtc0FkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABZzdGF0aWNLZXlfaXRlbXNBZGRyZXNzAAAAAAEAAAAQZ2V0RmVlQWdncmVnYXRvcgAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAF3N0YXRpY0tleV9mZWVBZ2dyZWdhdG9yAAAAAAEAAAAXZ2V0TXV0YW50RmFybWluZ0FkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAAB5zdGF0aWNLZXlfbXV0YW50RmFybWluZ0FkZHJlc3MAAAAAAQAAABZnZXRTY3JpcHRNYXN0ZXJBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAdc3RhdGljS2V5X3NjcmlwdE1hc3RlckFkZHJlc3MAAAAAAQAAAAhhc1N0cmluZwAAAAEAAAAFdmFsdWUEAAAAByRtYXRjaDAFAAAABXZhbHVlAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAABnN0cmluZwUAAAAHJG1hdGNoMAUAAAAGc3RyaW5nCQAAAgAAAAECAAAAHHdyb25nIHR5cGUsIGV4cGVjdGVkOiBTdHJpbmcBAAAABWFzSW50AAAAAQAAAAV2YWx1ZQQAAAAHJG1hdGNoMAUAAAAFdmFsdWUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAADaW50BQAAAAckbWF0Y2gwBQAAAANpbnQJAAACAAAAAQIAAAAZd3JvbmcgdHlwZSwgZXhwZWN0ZWQ6IEludAEAAAAWY2hlY2tBZGRpdGlvbmFsUGF5bWVudAAAAAEAAAAHcGF5bWVudAMJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkCQAAAgAAAAECAAAAGVdDQVA6IFBsZWFzZSBhdHRhY2ggd2F2ZXMEAAAACWZlZUFtb3VudAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABJzdGF0aWNLZXlfZXh0cmFGZWUAAAAAAwkBAAAAAiE9AAAAAggFAAAAB3BheW1lbnQAAAAGYW1vdW50BQAAAAlmZWVBbW91bnQJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAHFdDQVA6IFBsZWFzZSBhdHRhY2ggZXhhY3RseSAJAAGkAAAAAQUAAAAJZmVlQW1vdW50AgAAABMgYW1vdW50IG9mIHdhdmVsZXRzCQAETAAA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+hhZUZ0tU0k2w9Cj96hgGTtOBAAAAA9maXJzdFVzZXJTaWduZWQDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAAJZmlyc3RVc2VyAAAAAAAAAAABAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAEFAAAACWZpcnN0VXNlcgAAAAAAAAAAAQMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAACBQAAAAlmaXJzdFVzZXIAAAAAAAAAAAEAAAAAAAAAAAAEAAAAEHNlY29uZFVzZXJTaWduZWQDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAAKc2Vjb25kVXNlcgAAAAAAAAAAAQMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAABBQAAAApzZWNvbmRVc2VyAAAAAAAAAAABAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAIFAAAACnNlY29uZFVzZXIAAAAAAAAAAAEAAAAAAAAAAAAEAAAAD3RoaXJkVXNlclNpZ25lZAMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAABQAAAAl0aGlyZFVzZXIAAAAAAAAAAAEDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAQUAAAAJdGhpcmRVc2VyAAAAAAAAAAABAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAIFAAAACXRoaXJkVXNlcgAAAAAAAAAAAQAAAAAAAAAAAAQAAAAPc2lnbmF0dXJlc0NvdW50CQAAZAAAAAIJAABkAAAAAgUAAAAPZmlyc3RVc2VyU2lnbmVkBQAAABBzZWNvbmRVc2VyU2lnbmVkBQAAAA90aGlyZFVzZXJTaWduZWQEAAAAByRtYXRjaDAFAAAAAnR4CQAAZwAAAAIFAAAAD3NpZ25hdHVyZXNDb3VudAAAAAAAAAAAAXivPuo=", "height": 3479143, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: nJ8AUT8N1vUDwkfN5ZBmZRQmMMREzxg48wZpUd8r6Vq Next: 5mRRCsVUaXPVqKpSm48sU9papkYbHZCTNBTwV17kemxR Diff:
OldNewDifferences
2525
2626
2727 func staticKey_feeAggregator () = "static_feeAggregator"
28+
29+
30+func staticKey_scriptMasterAddress () = "static_scriptMasterAddress"
2831
2932
3033 func keyUnstakeHeight (artefactName,artefactId) = (((artefactName + "_") + artefactId) + "_unstake_height")
7275
7376
7477 func getMutantFarmingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_mutantFarmingAddress())))
78+
79+
80+func getScriptMasterAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_scriptMasterAddress())))
7581
7682
7783 func asString (value) = match value {
161167 else {
162168 let invoker = toString(i.caller)
163169 let artefactId = tryGetString(keyArtefactOwner(artefactName, invoker))
164- if ((artefactId == "ART-XSOCK"))
170+ if ((artefactName == "ART-XSOCK"))
165171 then throw("You can not unstake ART-XSOCK anymore")
166172 else if ((artefactId == ""))
167173 then throw(("You didnt stake " + artefactName))
191197 let assetId = value(i.payments[0].assetId)
192198 let artefactName = asString(invoke(getItemsAddress(), "checkArtefactDetails", [toBase58String(assetId)], nil))
193199 if ((artefactName == artefactName))
194- then if (!(contains(artefactName, "ART-FEED")))
195- then throw("You can't use this artafect to earn feedlimit!")
196- else {
197- let invoker = toString(i.caller)
198- let amount = drop(artefactName, 8)
199- let intValue = parseIntValue(amount)
200- let topup = invoke(getMutantFarmingAddress(), "topUpReward", ["FEED", (intValue / 2)], nil)
201- if ((topup == topup))
202- then ([IntegerEntry(keyFeedLimit(invoker), (tryGetInteger(keyFeedLimit(invoker)) + intValue)), Burn(assetId, 1)] ++ validPayment)
203- else throw("Strict value is not equal to itself.")
204- }
200+ then {
201+ let artefactId = tryGetString(keyArtefactOwner("ART-XSOCK", toString(i.caller)))
202+ if (!(contains(artefactName, "ART-FEED")))
203+ then throw("You can't use this artafect to earn feedlimit!")
204+ else {
205+ let invoker = toString(i.caller)
206+ let amount = drop(artefactName, 8)
207+ let intValue = parseIntValue(amount)
208+ let topup = invoke(getMutantFarmingAddress(), "topUpReward", ["FEED", (intValue / 2)], nil)
209+ if ((topup == topup))
210+ then {
211+ let bonus = if ((artefactId == ""))
212+ then 0
213+ else (intValue / 10)
214+ ([IntegerEntry(keyFeedLimit(invoker), ((tryGetInteger(keyFeedLimit(invoker)) + intValue) + bonus)), Burn(assetId, 1)] ++ validPayment)
215+ }
216+ else throw("Strict value is not equal to itself.")
217+ }
218+ }
205219 else throw("Strict value is not equal to itself.")
206220 }
207221 }
209223
210224
211225 @Callable(i)
212-func addFeedLimit (amount,address) = if ((i.caller != getMutantFarmingAddress()))
226+func addFeedLimit (amount,address) = if (if ((i.caller != getMutantFarmingAddress()))
227+ then (i.caller != getScriptMasterAddress())
228+ else false)
213229 then throw("admin only")
214230 else [IntegerEntry(keyFeedLimit(address), (tryGetInteger(keyFeedLimit(address)) + amount))]
215231
245261 let signaturesCount = ((firstUserSigned + secondUserSigned) + thirdUserSigned)
246262 match tx {
247263 case _ =>
248- (signaturesCount >= 2)
264+ (signaturesCount >= 1)
249265 }
250266 }
251267
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func getBool (key) = match getBoolean(this, key) {
55 case b: Boolean =>
66 b
77 case _ =>
88 false
99 }
1010
1111
1212 func isTestEnv () = getBool("TESTENV")
1313
1414
1515 func staticKey_oracleAddress () = "static_oracleAddress"
1616
1717
1818 func staticKey_itemsAddress () = "static_itemsAddress"
1919
2020
2121 func staticKey_mutantFarmingAddress () = "static_mutantFarmingAddress"
2222
2323
2424 func staticKey_extraFee () = "static_extraFee"
2525
2626
2727 func staticKey_feeAggregator () = "static_feeAggregator"
28+
29+
30+func staticKey_scriptMasterAddress () = "static_scriptMasterAddress"
2831
2932
3033 func keyUnstakeHeight (artefactName,artefactId) = (((artefactName + "_") + artefactId) + "_unstake_height")
3134
3235
3336 func keyArtefactOwner (artefactName,owner) = (((artefactName + "_") + owner) + "_owner")
3437
3538
3639 func keyFeedLimit (owner) = ("limit_" + owner)
3740
3841
3942 let stakeable = ["ART-LAKE", "ART-XTREE", "ART-XSOCK", "ART-XMISTL"]
4043
4144 func tryGetString (key) = match getString(this, key) {
4245 case a: String =>
4346 a
4447 case _ =>
4548 ""
4649 }
4750
4851
4952 func tryGetInteger (key) = match getInteger(this, key) {
5053 case a: Int =>
5154 a
5255 case _ =>
5356 0
5457 }
5558
5659
5760 func tryGetStringExternal (address,key) = match getString(address, key) {
5861 case a: String =>
5962 a
6063 case _ =>
6164 ""
6265 }
6366
6467
6568 func getOracle () = Address(fromBase58String(tryGetString(staticKey_oracleAddress())))
6669
6770
6871 func getItemsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_itemsAddress())))
6972
7073
7174 func getFeeAggregator () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_feeAggregator())))
7275
7376
7477 func getMutantFarmingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_mutantFarmingAddress())))
78+
79+
80+func getScriptMasterAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_scriptMasterAddress())))
7581
7682
7783 func asString (value) = match value {
7884 case string: String =>
7985 string
8086 case _ =>
8187 throw("wrong type, expected: String")
8288 }
8389
8490
8591 func asInt (value) = match value {
8692 case int: Int =>
8793 int
8894 case _ =>
8995 throw("wrong type, expected: Int")
9096 }
9197
9298
9399 func checkAdditionalPayment (payment) = if (isDefined(payment.assetId))
94100 then throw("WCAP: Please attach waves")
95101 else {
96102 let feeAmount = getIntegerValue(getOracle(), staticKey_extraFee())
97103 if ((payment.amount != feeAmount))
98104 then throw((("WCAP: Please attach exactly " + toString(feeAmount)) + " amount of wavelets"))
99105 else [ScriptTransfer(getFeeAggregator(), feeAmount, unit)]
100106 }
101107
102108
103109 func itemIsInCoolDown (artefactName,artefactId) = {
104110 let unstakeHeightLast = tryGetInteger(keyUnstakeHeight(artefactName, artefactId))
105111 let cooldownPeriod = 240
106112 if ((height > (unstakeHeightLast + cooldownPeriod)))
107113 then false
108114 else true
109115 }
110116
111117
112118 @Callable(i)
113119 func configureOracle (oracle) = if ((i.caller != this))
114120 then throw("admin only")
115121 else [StringEntry(staticKey_oracleAddress(), oracle)]
116122
117123
118124
119125 @Callable(i)
120126 func stakeItem () = {
121127 let validPayment = checkAdditionalPayment(i.payments[1])
122128 if (!(if ((size(i.payments) == 2))
123129 then (i.payments[0].amount == 1)
124130 else false))
125131 then throw("Invalid payment")
126132 else {
127133 let assetId = value(i.payments[0].assetId)
128134 let artefactName = asString(invoke(getItemsAddress(), "checkArtefactDetails", [toBase58String(assetId)], nil))
129135 if ((artefactName == artefactName))
130136 then if (!(containsElement(stakeable, artefactName)))
131137 then throw("You can't stake this artafect")
132138 else if (itemIsInCoolDown(artefactName, toBase58String(assetId)))
133139 then throw("Item can't be staked yet, it's in cooldown")
134140 else {
135141 let invoker = toString(i.caller)
136142 let artefactId = tryGetString(keyArtefactOwner(artefactName, invoker))
137143 if ((artefactId != ""))
138144 then throw(("You are already staking " + artefactName))
139145 else {
140146 let boostDuck = if ((artefactName == "ART-LAKE"))
141147 then invoke(getItemsAddress(), "manipulateBoostAccount", [2, invoker], nil)
142148 else if ((artefactName == "ART-XTREE"))
143149 then invoke(getItemsAddress(), "manipulateBoostAccount", [3, invoker], nil)
144150 else nil
145151 if ((boostDuck == boostDuck))
146152 then ([StringEntry(keyArtefactOwner(artefactName, invoker), toBase58String(assetId))] ++ validPayment)
147153 else throw("Strict value is not equal to itself.")
148154 }
149155 }
150156 else throw("Strict value is not equal to itself.")
151157 }
152158 }
153159
154160
155161
156162 @Callable(i)
157163 func unstakeItem (artefactName) = {
158164 let validPayment = checkAdditionalPayment(i.payments[0])
159165 if (!(containsElement(stakeable, artefactName)))
160166 then throw("This artefact doesn't exist")
161167 else {
162168 let invoker = toString(i.caller)
163169 let artefactId = tryGetString(keyArtefactOwner(artefactName, invoker))
164- if ((artefactId == "ART-XSOCK"))
170+ if ((artefactName == "ART-XSOCK"))
165171 then throw("You can not unstake ART-XSOCK anymore")
166172 else if ((artefactId == ""))
167173 then throw(("You didnt stake " + artefactName))
168174 else {
169175 let boostDuck = if ((artefactName == "ART-LAKE"))
170176 then invoke(getItemsAddress(), "manipulateBoostAccount", [-2, invoker], nil)
171177 else if ((artefactName == "ART-XTREE"))
172178 then invoke(getItemsAddress(), "manipulateBoostAccount", [-3, invoker], nil)
173179 else nil
174180 if ((boostDuck == boostDuck))
175181 then ([IntegerEntry(keyUnstakeHeight(artefactName, artefactId), height), ScriptTransfer(i.caller, 1, fromBase58String(artefactId)), DeleteEntry(keyArtefactOwner(artefactName, invoker))] ++ validPayment)
176182 else throw("Strict value is not equal to itself.")
177183 }
178184 }
179185 }
180186
181187
182188
183189 @Callable(i)
184190 func oneTimeUseFeed () = {
185191 let validPayment = checkAdditionalPayment(i.payments[1])
186192 if (!(if ((size(i.payments) == 2))
187193 then (i.payments[0].amount == 1)
188194 else false))
189195 then throw("Invalid payment")
190196 else {
191197 let assetId = value(i.payments[0].assetId)
192198 let artefactName = asString(invoke(getItemsAddress(), "checkArtefactDetails", [toBase58String(assetId)], nil))
193199 if ((artefactName == artefactName))
194- then if (!(contains(artefactName, "ART-FEED")))
195- then throw("You can't use this artafect to earn feedlimit!")
196- else {
197- let invoker = toString(i.caller)
198- let amount = drop(artefactName, 8)
199- let intValue = parseIntValue(amount)
200- let topup = invoke(getMutantFarmingAddress(), "topUpReward", ["FEED", (intValue / 2)], nil)
201- if ((topup == topup))
202- then ([IntegerEntry(keyFeedLimit(invoker), (tryGetInteger(keyFeedLimit(invoker)) + intValue)), Burn(assetId, 1)] ++ validPayment)
203- else throw("Strict value is not equal to itself.")
204- }
200+ then {
201+ let artefactId = tryGetString(keyArtefactOwner("ART-XSOCK", toString(i.caller)))
202+ if (!(contains(artefactName, "ART-FEED")))
203+ then throw("You can't use this artafect to earn feedlimit!")
204+ else {
205+ let invoker = toString(i.caller)
206+ let amount = drop(artefactName, 8)
207+ let intValue = parseIntValue(amount)
208+ let topup = invoke(getMutantFarmingAddress(), "topUpReward", ["FEED", (intValue / 2)], nil)
209+ if ((topup == topup))
210+ then {
211+ let bonus = if ((artefactId == ""))
212+ then 0
213+ else (intValue / 10)
214+ ([IntegerEntry(keyFeedLimit(invoker), ((tryGetInteger(keyFeedLimit(invoker)) + intValue) + bonus)), Burn(assetId, 1)] ++ validPayment)
215+ }
216+ else throw("Strict value is not equal to itself.")
217+ }
218+ }
205219 else throw("Strict value is not equal to itself.")
206220 }
207221 }
208222
209223
210224
211225 @Callable(i)
212-func addFeedLimit (amount,address) = if ((i.caller != getMutantFarmingAddress()))
226+func addFeedLimit (amount,address) = if (if ((i.caller != getMutantFarmingAddress()))
227+ then (i.caller != getScriptMasterAddress())
228+ else false)
213229 then throw("admin only")
214230 else [IntegerEntry(keyFeedLimit(address), (tryGetInteger(keyFeedLimit(address)) + amount))]
215231
216232
217233 @Verifier(tx)
218234 func verify () = if (isTestEnv())
219235 then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
220236 else {
221237 let firstUser = base58'6TdaXEfhnjYquvPf3yV7MFxt2CbgFmaqsvGwkKfXtKi4'
222238 let secondUser = base58'7DsP2WaMLocbHuUxux7pbXRjTrrZ1TFQPsi5QumS3gr8'
223239 let thirdUser = base58'BpFWP3p3JgYrrP45xfrKzeMcWMEXoinj4FVPPkUiA8D3'
224240 let firstUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], firstUser))
225241 then 1
226242 else if (sigVerify(tx.bodyBytes, tx.proofs[1], firstUser))
227243 then 1
228244 else if (sigVerify(tx.bodyBytes, tx.proofs[2], firstUser))
229245 then 1
230246 else 0
231247 let secondUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], secondUser))
232248 then 1
233249 else if (sigVerify(tx.bodyBytes, tx.proofs[1], secondUser))
234250 then 1
235251 else if (sigVerify(tx.bodyBytes, tx.proofs[2], secondUser))
236252 then 1
237253 else 0
238254 let thirdUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], thirdUser))
239255 then 1
240256 else if (sigVerify(tx.bodyBytes, tx.proofs[1], thirdUser))
241257 then 1
242258 else if (sigVerify(tx.bodyBytes, tx.proofs[2], thirdUser))
243259 then 1
244260 else 0
245261 let signaturesCount = ((firstUserSigned + secondUserSigned) + thirdUserSigned)
246262 match tx {
247263 case _ =>
248- (signaturesCount >= 2)
264+ (signaturesCount >= 1)
249265 }
250266 }
251267

github/deemru/w8io/169f3d6 
30.88 ms