tx · 6pUER8tFpdFJWuPB4eUFp4r4tz79ErsRz23d9q9V59Hr

3N61a18jDqUAySZYY83Xxe6d2JJLWjcBHD1:  -0.01400000 Waves

2021.10.26 22:43 [1763694] smart account 3N61a18jDqUAySZYY83Xxe6d2JJLWjcBHD1 > SELF 0.00000000 Waves

{ "type": 13, "id": "6pUER8tFpdFJWuPB4eUFp4r4tz79ErsRz23d9q9V59Hr", "fee": 1400000, "feeAssetId": null, "timestamp": 1635277400572, "version": 1, "sender": "3N61a18jDqUAySZYY83Xxe6d2JJLWjcBHD1", "senderPublicKey": "Bi9wBgMGD9s1wkPPTrHGkSFECRUYshbQiSoC8g6i8Z3u", "proofs": [ "U2s24CPmvKRrJqkLbX9Z4pKvwYsbciQrS3PtH6P7a6a5qL6nzwL56NDwKGaGmUcV536rXVaBW5Zt6epfRbw29Ca" ], "script": "base64:AAIFAAAAAAAAABAIAhIAEgASAwoBARIDCgEBAAAAFAAAAAAHYmFsYW5jZQkBAAAAB0FkZHJlc3MAAAABAQAAABoBVKMjU/C0oWt5judpFHXM19dztnXKmPy+aQAAAAARU1dPUGdvdmVybmFuY2VBZHIJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAAB2JhbGFuY2UCAAAAD1NXT1BfZ292ZXJuYW5jZQIAAAAVRW1wdHkgU1dPUF9nb3Zlcm5hbmNlAAAAABdkZWZpaGVscGVyTWFuYWdlclB1YktleQkAAlkAAAABCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAAB2JhbGFuY2UCAAAAGWRlZmloZWxwZXJfbWFuYWdlcl9QdWJLZXkCAAAAI0VtcHR5IGtleSBkZWZpaGVscGVyX21hbmFnZXJfUHViS2V5AAAAAAxhZG1pblB1YktleTEBAAAAIJI0rvSL2N+4Jd3ss8OgEArwbahdnCXQKg1y+jLzTuJDAAAAAAxhZG1pblB1YktleTIBAAAAIJI0rvSL2N+4Jd3ss8OgEArwbahdnCXQKg1y+jLzTuJDAAAAAAxhZG1pblB1YktleTMBAAAAIJI0rvSL2N+4Jd3ss8OgEArwbahdnCXQKg1y+jLzTuJDAAAAAAhrZXlPd25lcgIAAAAFb3duZXIAAAAAE2tleUlzUHJvdG9jb2xBY3RpdmUCAAAAEGlzUHJvdG9jb2xBY3RpdmUAAAAABW93bmVyCQAEJgAAAAEJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAR0aGlzBQAAAAhrZXlPd25lcgIAAAAORW1wdHkga2V5T3duZXIAAAAACG93bmVyU3RyCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAAIa2V5T3duZXICAAAADkVtcHR5IGtleU93bmVyAAAAABBpc1Byb3RvY29sQWN0aXZlCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQbAAAAAgUAAAAHYmFsYW5jZQUAAAATa2V5SXNQcm90b2NvbEFjdGl2ZQIAAAAaRW1wdHkga2V5IGlzUHJvdG9jb2xBY3RpdmUAAAAAD2tleUxhc3RJbnRlcmVzdAIAAAANbGFzdF9pbnRlcmVzdAAAAAARa2V5VXNlclNXT1BMb2NrZWQCAAAADF9TV09QX2Ftb3VudAAAAAATa2V5VXNlckxhc3RJbnRlcmVzdAIAAAAOX2xhc3RfaW50ZXJlc3QAAAAABFNXT1ABAAAAIKyUuGOGsPbsU6hw8+u99mb0VELAEVHGE8ldKEb5UFi7AAAAAApzY2FsZVZhbHVlAAAAAAAF9eEAAQAAABNnZXRMYXN0SW50ZXJlc3RJbmZvAAAAAAQAAAAMbGFzdEludGVyZXN0CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAAEVNXT1Bnb3Zlcm5hbmNlQWRyBQAAAA9rZXlMYXN0SW50ZXJlc3QAAAAAAAAAAAAFAAAADGxhc3RJbnRlcmVzdAEAAAARZ2V0VXNlclNXT1BMb2NrZWQAAAABAAAABHVzZXIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAARU1dPUGdvdmVybmFuY2VBZHIJAAEsAAAAAgkABCUAAAABBQAAAAR1c2VyBQAAABFrZXlVc2VyU1dPUExvY2tlZAAAAAAAAAAAAAEAAAATZ2V0VXNlckludGVyZXN0SW5mbwAAAAIAAAAEdXNlcgAAAAxsYXN0SW50ZXJlc3QEAAAADnVzZXJTV09QQW1vdW50CQEAAAARZ2V0VXNlclNXT1BMb2NrZWQAAAABBQAAAAR1c2VyBAAAABB1c2VyTGFzdEludGVyZXN0CQAEGgAAAAIFAAAAEVNXT1Bnb3Zlcm5hbmNlQWRyCQABLAAAAAIJAAQlAAAAAQUAAAAEdXNlcgUAAAATa2V5VXNlckxhc3RJbnRlcmVzdAQAAAAVdXNlckxhc3RJbnRlcmVzdFZhbHVlBAAAAAckbWF0Y2gwBQAAABB1c2VyTGFzdEludGVyZXN0AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAEHVzZXJMYXN0SW50ZXJlc3QFAAAAByRtYXRjaDAFAAAAEHVzZXJMYXN0SW50ZXJlc3QFAAAADGxhc3RJbnRlcmVzdAkABRQAAAACBQAAABV1c2VyTGFzdEludGVyZXN0VmFsdWUFAAAADnVz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", "chainId": 84, "height": 1763694, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 5 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let balance = Address(base58'3N4ngEpA29qJdUKnRto5zUzXvJJLwUuNs5J')
5+
6+let SWOPgovernanceAdr = value(addressFromString(valueOrErrorMessage(getString(balance, "SWOP_governance"), "Empty SWOP_governance")))
7+
8+let defihelperManagerPubKey = fromBase58String(valueOrElse(getString(balance, "defihelper_manager_PubKey"), "Empty key defihelper_manager_PubKey"))
9+
10+let adminPubKey1 = base58'Aqj7onZFvn779uRCiW2zCmXG1RKsGeA6k3SWXmH7s5Lv'
11+
12+let adminPubKey2 = base58'Aqj7onZFvn779uRCiW2zCmXG1RKsGeA6k3SWXmH7s5Lv'
13+
14+let adminPubKey3 = base58'Aqj7onZFvn779uRCiW2zCmXG1RKsGeA6k3SWXmH7s5Lv'
15+
16+let keyOwner = "owner"
17+
18+let keyIsProtocolActive = "isProtocolActive"
19+
20+let owner = addressFromString(valueOrErrorMessage(getString(this, keyOwner), "Empty keyOwner"))
21+
22+let ownerStr = valueOrErrorMessage(getString(this, keyOwner), "Empty keyOwner")
23+
24+let isProtocolActive = valueOrErrorMessage(getBoolean(balance, keyIsProtocolActive), "Empty key isProtocolActive")
25+
26+let keyLastInterest = "last_interest"
27+
28+let keyUserSWOPLocked = "_SWOP_amount"
29+
30+let keyUserLastInterest = "_last_interest"
31+
32+let SWOP = base58'Ccgesc9iWMSg1f8CqFP5nZwgF6xsGirReDhpvNp1JAWW'
33+
34+let scaleValue = 100000000
35+
36+func getLastInterestInfo () = {
37+ let lastInterest = valueOrElse(getInteger(SWOPgovernanceAdr, keyLastInterest), 0)
38+ lastInterest
39+ }
40+
41+
42+func getUserSWOPLocked (user) = valueOrElse(getInteger(SWOPgovernanceAdr, (toString(user) + keyUserSWOPLocked)), 0)
43+
44+
45+func getUserInterestInfo (user,lastInterest) = {
46+ let userSWOPAmount = getUserSWOPLocked(user)
47+ let userLastInterest = getInteger(SWOPgovernanceAdr, (toString(user) + keyUserLastInterest))
48+ let userLastInterestValue = match userLastInterest {
49+ case userLastInterest: Int =>
50+ userLastInterest
51+ case _ =>
52+ lastInterest
53+ }
54+ $Tuple2(userLastInterestValue, userSWOPAmount)
55+ }
56+
57+
58+func claimCalc (caller) = {
59+ let lastInterest = getLastInterestInfo()
60+ let uifo = getUserInterestInfo(caller, lastInterest)
61+ let userLastInterest = uifo._1
62+ let userSWOPLocked = uifo._2
63+ let claimAmount = fraction(userSWOPLocked, (lastInterest - userLastInterest), scaleValue)
64+ let userNewInterest = lastInterest
65+ $Tuple2(userNewInterest, claimAmount)
66+ }
67+
68+
69+@Callable(i)
70+func init () = if (isDefined(getString(this, keyOwner)))
71+ then throw("Automate already initialized")
72+ else if ((size(i.payments) == 0))
73+ then [StringEntry(keyOwner, toString(i.caller))]
74+ else if ((size(i.payments) == 1))
75+ then {
76+ let $t027652840 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
77+ let pmtAmount = $t027652840._1
78+ let pmtAssetId = $t027652840._2
79+ if ((pmtAssetId != SWOP))
80+ then throw("Only SWOP payment available in init()")
81+ else {
82+ let z = invoke(SWOPgovernanceAdr, "lockSWOP", nil, [AttachedPayment(SWOP, pmtAmount)])
83+ if ((z == z))
84+ then [StringEntry(keyOwner, toString(i.caller))]
85+ else throw("Strict value is not equal to itself.")
86+ }
87+ }
88+ else throw("Incorrect paynemt. You should attach SWOP or empty payment")
89+
90+
91+
92+@Callable(i)
93+func governanceLockSWOP () = {
94+ let $t032543329 = $Tuple2(i.payments[0].amount, i.payments[0].assetId)
95+ let pmtAmount = $t032543329._1
96+ let pmtAssetId = $t032543329._2
97+ if ((pmtAssetId != SWOP))
98+ then throw("Only SWOP payment available in governanceLockSWOP()")
99+ else {
100+ let z = invoke(SWOPgovernanceAdr, "lockSWOP", nil, [AttachedPayment(SWOP, pmtAmount)])
101+ if ((z == z))
102+ then nil
103+ else throw("Strict value is not equal to itself.")
104+ }
105+ }
106+
107+
108+
109+@Callable(i)
110+func governanceClaimAndStake (minSWOPreward) = if (if ((i.caller != owner))
111+ then (i.callerPublicKey != defihelperManagerPubKey)
112+ else false)
113+ then throw("Only owner or admin can call this function")
114+ else {
115+ let claimAmount = claimCalc(this)._2
116+ if ((minSWOPreward > claimAmount))
117+ then throw("Amount to claim is less than minSWOPreward")
118+ else {
119+ let isFeeExtract = if ((i.caller == owner))
120+ then false
121+ else true
122+ let z = invoke(SWOPgovernanceAdr, "claimAndStakeSWOP", nil, nil)
123+ if ((z == z))
124+ then {
125+ let y = invoke(balance, "extractFee", [ownerStr, isFeeExtract], nil)
126+ if ((y == y))
127+ then nil
128+ else throw("Strict value is not equal to itself.")
129+ }
130+ else throw("Strict value is not equal to itself.")
131+ }
132+ }
133+
134+
135+
136+@Callable(i)
137+func governanceWithdraw (amtToWithdraw) = if ((i.caller != owner))
138+ then throw("Only owner can call this function")
139+ else {
140+ let z = invoke(SWOPgovernanceAdr, "withdrawSWOP", [amtToWithdraw], nil)
141+ if ((z == z))
142+ then [ScriptTransfer(i.caller, amtToWithdraw, SWOP)]
143+ else throw("Strict value is not equal to itself.")
144+ }
145+
146+

github/deemru/w8io/873ac7e 
17.52 ms