2021.12.03 14:25 [1818028] smart account 3N8RuLPxz77EyFpJWuQMEw3zQ4NVswWyQTK > SELF 0.00000000 Waves

{ "type": 13, "id": "7vMz4FQaBHvDfuNK9MSUY96xwL1hvHYnwwsqT4Z617Q6", "fee": 1000000, "feeAssetId": null, "timestamp": 1638530705110, "version": 1, "sender": "3N8RuLPxz77EyFpJWuQMEw3zQ4NVswWyQTK", "senderPublicKey": "DdryFgsRPfamfcRxNjcmi9KXADbt4fPWamVct9YdyvMr", "proofs": [ "3Rd9ykLRoUp7XjMj3fdbiFyzGEf5x5YHUbFtTCcM2bJs3j1XNTtCn3yZPUQ35LRV1wkTR5iDG3DkCuYoVs8DyWop" ], "script": "base64:AAIFAAAAAAAAABIIAhIAEgASAwoBARIDCgEBEgAAAAAYAAAAAAZvcmFjbGUJAQAAAAdBZGRyZXNzAAAAAQEAAAAAAAAAAAdiYWxhbmNlCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAGb3JhY2xlAgAAAA9iYWxhbmNlX2FkZHJlc3MCAAAAGUVtcHR5IGtleSBiYWxhbmNlX2FkZHJlc3MAAAAAEVNXT1Bnb3Zlcm5hbmNlQWRyCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAGb3JhY2xlAgAAAA9zd29wX2dvdmVybmFuY2UCAAAAGUVtcHR5IGtleSBzd29wX2dvdmVybmFuY2UAAAAABFNXT1AJAAJZAAAAAQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAABm9yYWNsZQIAAAAEU1dPUAIAAAAORW1wdHkga2V5IFNXT1AAAAAACWNvbnN1bWVycwkABLUAAAACCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAABm9yYWNsZQIAAAAJY29uc3VtZXJzAgAAABJFbXB0eSBrZXkgY29uc3VtZXICAAAAASwAAAAABmFkbWluMQkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAZvcmFjbGUCAAAAB2FkbWluXzECAAAAEUVtcHR5IGtleSBhZG1pbl8xAAAAAAZhZG1pbjIJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAGb3JhY2xlAgAAAAdhZG1pbl8yAgAAABFFbXB0eSBrZXkgYWRtaW5fMgAAAAAGYWRtaW4zCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAABm9yYWNsZQIAAAAHYWRtaW5fMwIAAAARRW1wdHkga2V5IGFkbWluXzMAAAAABmFkbWluNAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAZvcmFjbGUCAAAAB2FkbWluXzQCAAAAEUVtcHR5IGtleSBhZG1pbl80AAAAAAZhZG1pbjUJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAGb3JhY2xlAgAAAAdhZG1pbl81AgAAABFFbXB0eSBrZXkgYWRtaW5fNQAAAAAQaXNQcm90b2NvbEFjdGl2ZQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGwAAAAIFAAAABm9yYWNsZQIAAAASaXNfcHJvdG9jb2xfYWN0aXZlAgAAABxFbXB0eSBrZXkgaXNfcHJvdG9jb2xfYWN0aXZlAAAAAAhrZXlPd25lcgIAAAAFb3duZXIAAAAAD2tleUlzRGFwcEFjdGl2ZQIAAAAOaXNfZGFwcF9hY3RpdmUAAAAADGlzRGFwcEFjdGl2ZQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGwAAAAIFAAAABHRoaXMFAAAAD2tleUlzRGFwcEFjdGl2ZQIAAAAYRW1wdHkga2V5IGlzX2RhcHBfYWN0aXZlAAAAAAhvd25lclN0cgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAACGtleU93bmVyAgAAAA5FbXB0eSBrZXlPd25lcgAAAAAFb3duZXIJAAQmAAAAAQUAAAAIb3duZXJTdHIAAAAAD2tleUxhc3RJbnRlcmVzdAIAAAANbGFzdF9pbnRlcmVzdAAAAAARa2V5VXNlclNXT1BMb2NrZWQCAAAADF9TV09QX2Ftb3VudAAAAAATa2V5VXNlckxhc3RJbnRlcmVzdAIAAAAOX2xhc3RfaW50ZXJlc3QAAAAACnNjYWxlVmFsdWUAAAAAAAX14QABAAAAE2dldExhc3RJbnRlcmVzdEluZm8AAAAABAAAAAxsYXN0SW50ZXJlc3QJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAARU1dPUGdvdmVybmFuY2VBZHIFAAAAD2tleUxhc3RJbnRlcmVzdAAAAAAAAAAAAAUAAAAMbGFzdEludGVyZXN0AQAAABFnZXRVc2VyU1dPUExvY2tlZAAAAAEAAAAEdXNlcgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAABFTV09QZ292ZXJuYW5jZUFkcgkAASwAAAACCQAEJQAAAAEFAAAABHVzZXIFAAAAEWtleVVzZXJTV09QTG9ja2VkAAAAAAAAAAAAAQAAABNnZXRVc2VySW50ZXJlc3RJbmZvAAAAAgAAAAR1c2VyAAAADGxhc3RJbnRlcmVzdAQAAAAOdXNlclNXT1BBbW91bnQJAQAAABFnZXRVc2VyU1dPUExvY2tlZAAAAAEFAAAABHVzZXIEAAAAEHVzZXJMYXN0SW50ZXJlc3QJAAQaAAAAAgUAAAARU1dPUGdvdmVybmFuY2VBZHIJAAEsAAAAAgkABCUAAAABBQAAAAR1c2VyBQAAABNrZXlVc2VyTGFzdEludGVyZXN0BAAAABV1c2VyTGFzdEludGVyZXN0VmFsdWUEAAAAByRtYXRjaDAFAAAAEHVzZXJMYXN0SW50ZXJlc3QDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAAQdXNlckxhc3RJbnRlcmVzdAUAAAAHJG1hdGNoMAUAAAAQdXNlckxhc3RJbnRlcmVzdAUAAAAMbGFzdEludGVyZXN0CQAFFAAAAAIFAAAAFXVzZXJMYXN0SW50ZXJlc3RWYWx1ZQUAAAAOdXNlclNXT1BBbW91bnQBAAAACWNsYWltQ2FsYwAAAAEAAAAGY2FsbGVyBAAAAAxsYXN0SW50ZXJlc3QJAQAAABNnZXRMYXN0SW50ZXJlc3RJbmZvAAAAAAQAAAAEdWlmbwkBAAAAE2dldFVzZXJJbnRlcmVzdEluZm8AAAACBQAAAAZjYWxsZXIFAAAADGxhc3RJbnRlcmVzdAQAAAAQdXNlckxhc3RJbnRlcmVzdAgFAAAABHVpZm8AAAACXzEEAAAADnVzZXJTV09QTG9ja2VkCAUAAAAEdWlmbwAAAAJfMgQAAAALY2xhaW1BbW91bnQJAABrAAAAAwUAAAAOdXNlclNXT1BMb2NrZWQJAABlAAAAAgUAAAAMbGFzdEludGVyZXN0BQAAABB1c2VyTGFzdEludGVyZXN0BQAAAApzY2FsZVZhbHVlBAAAAA91c2Vy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", "chainId": 84, "height": 1818028, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HkdLEa7Z2kHmnGq4k5MT4UwsNcanRrqfcsxNqzNiphwe Next: none Full:
OldNewDifferences
1-{-# STDLIB_VERSION 2 #-}
2-{-# CONTENT_TYPE EXPRESSION #-}
3-sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
1+{-# STDLIB_VERSION 5 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let oracle = Address(base58'')
5+
6+let balance = addressFromStringValue(valueOrErrorMessage(getString(oracle, "balance_address"), "Empty key balance_address"))
7+
8+let SWOPgovernanceAdr = addressFromStringValue(valueOrErrorMessage(getString(oracle, "swop_governance"), "Empty key swop_governance"))
9+
10+let SWOP = fromBase58String(valueOrErrorMessage(getString(oracle, "SWOP"), "Empty key SWOP"))
11+
12+let consumers = split(valueOrElse(getString(oracle, "consumers"), "Empty key consumer"), ",")
13+
14+let admin1 = addressFromStringValue(valueOrElse(getString(oracle, "admin_1"), "Empty key admin_1"))
15+
16+let admin2 = addressFromStringValue(valueOrElse(getString(oracle, "admin_2"), "Empty key admin_2"))
17+
18+let admin3 = addressFromStringValue(valueOrElse(getString(oracle, "admin_3"), "Empty key admin_3"))
19+
20+let admin4 = addressFromStringValue(valueOrElse(getString(oracle, "admin_4"), "Empty key admin_4"))
21+
22+let admin5 = addressFromStringValue(valueOrElse(getString(oracle, "admin_5"), "Empty key admin_5"))
23+
24+let isProtocolActive = valueOrErrorMessage(getBoolean(oracle, "is_protocol_active"), "Empty key is_protocol_active")
25+
26+let keyOwner = "owner"
27+
28+let keyIsDappActive = "is_dapp_active"
29+
30+let isDappActive = valueOrErrorMessage(getBoolean(this, keyIsDappActive), "Empty key is_dapp_active")
31+
32+let ownerStr = valueOrErrorMessage(getString(this, keyOwner), "Empty keyOwner")
33+
34+let owner = addressFromString(ownerStr)
35+
36+let keyLastInterest = "last_interest"
37+
38+let keyUserSWOPLocked = "_SWOP_amount"
39+
40+let keyUserLastInterest = "_last_interest"
41+
42+let scaleValue = 100000000
43+
44+func getLastInterestInfo () = {
45+ let lastInterest = valueOrElse(getInteger(SWOPgovernanceAdr, keyLastInterest), 0)
46+ lastInterest
47+ }
48+
49+
50+func getUserSWOPLocked (user) = valueOrElse(getInteger(SWOPgovernanceAdr, (toString(user) + keyUserSWOPLocked)), 0)
51+
52+
53+func getUserInterestInfo (user,lastInterest) = {
54+ let userSWOPAmount = getUserSWOPLocked(user)
55+ let userLastInterest = getInteger(SWOPgovernanceAdr, (toString(user) + keyUserLastInterest))
56+ let userLastInterestValue = match userLastInterest {
57+ case userLastInterest: Int =>
58+ userLastInterest
59+ case _ =>
60+ lastInterest
61+ }
62+ $Tuple2(userLastInterestValue, userSWOPAmount)
63+ }
64+
65+
66+func claimCalc (caller) = {
67+ let lastInterest = getLastInterestInfo()
68+ let uifo = getUserInterestInfo(caller, lastInterest)
69+ let userLastInterest = uifo._1
70+ let userSWOPLocked = uifo._2
71+ let claimAmount = fraction(userSWOPLocked, (lastInterest - userLastInterest), scaleValue)
72+ let userNewInterest = lastInterest
73+ $Tuple2(userNewInterest, claimAmount)
74+ }
75+
76+
77+@Callable(i)
78+func init () = if (!(isProtocolActive))
79+ then throw("Protol stopped by admin")
80+ else if (isDefined(getString(this, keyOwner)))
81+ then throw("Automate already initialized")
82+ else if ((size(i.payments) == 0))
83+ then [StringEntry(keyOwner, toString(i.caller)), BooleanEntry(keyIsDappActive, true)]
84+ else if ((size(i.payments) == 1))
85+ then {
86+ let $t033763451 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
87+ let pmtAmount = $t033763451._1
88+ let pmtAssetId = $t033763451._2
89+ if ((pmtAssetId != SWOP))
90+ then throw("Only SWOP payment available in init()")
91+ else {
92+ let z = invoke(SWOPgovernanceAdr, "lockSWOP", nil, [AttachedPayment(SWOP, pmtAmount)])
93+ if ((z == z))
94+ then [StringEntry(keyOwner, toString(i.caller)), BooleanEntry(keyIsDappActive, true)]
95+ else throw("Strict value is not equal to itself.")
96+ }
97+ }
98+ else throw("Incorrect paymemt. You should attach SWOP or empty payment")
99+
100+
101+
102+@Callable(i)
103+func governanceLockSWOP () = if (!(if (isProtocolActive)
104+ then isDappActive
105+ else false))
106+ then throw("Protol stopped by admin")
107+ else {
108+ let $t039984073 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
109+ let pmtAmount = $t039984073._1
110+ let pmtAssetId = $t039984073._2
111+ if ((pmtAssetId != SWOP))
112+ then throw("Only SWOP payment available in governanceLockSWOP()")
113+ else {
114+ let z = invoke(SWOPgovernanceAdr, "lockSWOP", nil, [AttachedPayment(SWOP, pmtAmount)])
115+ if ((z == z))
116+ then nil
117+ else throw("Strict value is not equal to itself.")
118+ }
119+ }
120+
121+
122+
123+@Callable(i)
124+func governanceClaimAndStake (minSWOPreward) = if (!(if (isProtocolActive)
125+ then isDappActive
126+ else false))
127+ then throw("Protol stopped by admin")
128+ else if (if ((i.caller != owner))
129+ then !(containsElement(consumers, toBase58String(i.caller.bytes)))
130+ else false)
131+ then throw("Only owner or admin can call this function")
132+ else {
133+ let claimAmount = claimCalc(this)._2
134+ if ((minSWOPreward > claimAmount))
135+ then throw("Amount to claim is less than minSWOPreward")
136+ else {
137+ let isFeeExtract = if ((i.caller == owner))
138+ then false
139+ else true
140+ let z = invoke(SWOPgovernanceAdr, "claimAndStakeSWOP", nil, nil)
141+ if ((z == z))
142+ then {
143+ let y = invoke(balance, "extractFee", [ownerStr, isFeeExtract], nil)
144+ if ((y == y))
145+ then nil
146+ else throw("Strict value is not equal to itself.")
147+ }
148+ else throw("Strict value is not equal to itself.")
149+ }
150+ }
151+
152+
153+
154+@Callable(i)
155+func governanceWithdraw (amtToWithdraw) = if (!(if (isProtocolActive)
156+ then isDappActive
157+ else false))
158+ then throw("Protol stopped by admin")
159+ else if ((i.caller != owner))
160+ then throw("Only owner can call this function")
161+ else {
162+ let z = invoke(SWOPgovernanceAdr, "withdrawSWOP", [amtToWithdraw], nil)
163+ if ((z == z))
164+ then [ScriptTransfer(i.caller, amtToWithdraw, SWOP)]
165+ else throw("Strict value is not equal to itself.")
166+ }
167+
168+
169+
170+@Callable(i)
171+func shutdownDapp () = if (!(if (isProtocolActive)
172+ then isDappActive
173+ else false))
174+ then throw("Protol stopped by admin")
175+ else if (if (!(containsElement([admin1, admin2, admin3, admin4, admin5, owner], i.caller)))
176+ then !(containsElement(consumers, toBase58String(i.caller.bytes)))
177+ else false)
178+ then throw("Only admin can call this function")
179+ else [BooleanEntry("is_dapp_active", false)]
180+
181+
182+@Verifier(tx)
183+func verify () = {
184+ let admin1Signed = if (valueOrElse(getBoolean(admin1, toBase58String(tx.id)), false))
185+ then 1
186+ else 0
187+ let admin2Signed = if (valueOrElse(getBoolean(admin2, toBase58String(tx.id)), false))
188+ then 1
189+ else 0
190+ let admin3Signed = if (valueOrElse(getBoolean(admin3, toBase58String(tx.id)), false))
191+ then 1
192+ else 0
193+ let admin4Signed = if (valueOrElse(getBoolean(admin4, toBase58String(tx.id)), false))
194+ then 1
195+ else 0
196+ let admin5Signed = if (valueOrElse(getBoolean(admin5, toBase58String(tx.id)), false))
197+ then 1
198+ else 0
199+ (((((admin1Signed + admin2Signed) + admin3Signed) + admin4Signed) + admin5Signed) >= 3)
200+ }
201+

github/deemru/w8io/786bc32 
30.03 ms