tx · DuQnyFqcJez7WCrhuhTWo6pa2QL4RyWaEy6rfimMk4KB

3PHi8kX9EqfvRwgzHWcpjLKQt1zBAH1bX7M:  -0.01000000 Waves

2022.01.10 17:54 [2938048] smart account 3PHi8kX9EqfvRwgzHWcpjLKQt1zBAH1bX7M > SELF 0.00000000 Waves

{ "type": 13, "id": "DuQnyFqcJez7WCrhuhTWo6pa2QL4RyWaEy6rfimMk4KB", "fee": 1000000, "feeAssetId": null, "timestamp": 1641826598498, "version": 2, "chainId": 87, "sender": "3PHi8kX9EqfvRwgzHWcpjLKQt1zBAH1bX7M", "senderPublicKey": "mTQL3HhYMeLQCe34H45YtLjbQeg5QyZJ5EPyU8An8jj", "proofs": [ "4kBdaCh585km3Px7gc6rnqf6nrJpcx1iWZK2n2UKrcGno8t7sSAcKyRvLNy5qy6rhk9uHNwvkdUbLuybLbmCHsBA" ], "script": "base64:AAIFAAAAAAAAAvcIAhIAEgMKAQESABIDCgEBEgAaGAoBQRITdG90YWxXWFJld2FyZEFtb3VudBoOCgFCEglpc0NsYWltZWQaEwoBQxIOZ2V0V2FsbGV0U2hhcmUaEgoBRBINZ2V0VG90YWxTaGFyZRoVCgFFEhByb3VuZFRvdGFsUmV3YXJkGhQKAUYSD3JvdW5kVXNlclJld2FyZBoWCgFHEhFyb3VuZFRvdGFsQ2xhaW1lZBoRCgFIEgx0b3RhbENsYWltZWQaEgoBSRINaXNJbml0aWFsaXplZBoHCgFKEgJ0eBoLCgFLEgZ2ZXJpZnkaDgoBYRIJbHBBc3NldElkGhIKAWISDXJld2FyZEFzc2V0SWQaEQoBYxIMcHJveHlBZGRyZXNzGgYKAWQSAWkaDwoBZRIKc3RhcnRCbG9jaxobCgFmEhZnZXRXYWxsZXRQcmV2aW91c1NoYXJlGhUKAWcSEGxhc3REZXBvc2l0QmxvY2saFgoBaBIRbGFzdFdpZHRocmF3QmxvY2saEgoBaRINcHJldmlvdXNTaGFyZRoSCgFqEg13YWxsZXRCYWxhbmNlGhoKAWsSFWdldFRvdGFsUHJldmlvdXNTaGFyZRoRCgFsEgx0b3RhbEJhbGFuY2UaGAoBbRITd2FsbGV0UHJldmlvdXNTaGFyZRoQCgFuEgt3YWxsZXRTaGFyZRoaCgFvEhV3YWxsZXRQcmV2aW91c0JhbGFuY2UaFwoBcBISdG90YWxQcmV2aW91c1NoYXJlGg8KAXESCnRvdGFsU2hhcmUaGQoBchIUcHJldmlvdXNUb3RhbEJhbGFuY2UaEAoBcxILZGVwb3NpdENhbGwaCwoBdBIGYW1vdW50GhEKAXUSDHdpdGhkcmF3Q2FsbBoMCgF2Egdpc0VuZGVkGhEKAXcSDGlzVmFsaWRCbG9jaxoVCgF4EhBwcmV2aW91c1dYQW1vdW50GhAKAXkSC2NsYWltV1hDYWxsGhIKAXoSDXJvdW5kV1hBbW91bnQAAAADAAAAAAFhAQAAACB4p79M5F037ZUh19Z+VbL+rgR/6BH9WtYv/UMYL5a3wAAAAAABYgEAAAAgkwEcq6nHbiVXzmaecba9qmv4POhYCyru2aBOuzzcFLEAAAAAAWMJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVfqrXK1BL0qtZNZ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", "height": 2938048, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7vxJJhtche2vi4pxW9Uoj7cKPoLBPpQzn4jYvg9hzQta Next: FoCzD9WjyLwHWb6KqeDM5mgp1CyMtckgsKua3cUP2pii Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 5 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let lpAssetId = base58'97zHFp1C3cB7qfvx8Xv5f2rWp9nUSG5UnAamfPcW6txf'
5+
6+let rewardAssetId = base58'Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on'
7+
8+let proxyAddress = Address(base58'3PPKkdX1DUoA971uA5duhKwLiEfE1ce9iUN')
9+
10+@Callable(i)
11+func deposit () = if (if (if ((size(i.payments) == 1))
12+ then (i.payments[0].amount > 0)
13+ else false)
14+ then (i.payments[0].assetId == lpAssetId)
15+ else false)
16+ then {
17+ let startBlock = getIntegerValue("start_block")
18+ func getWalletPreviousShare () = {
19+ let lastDepositBlock = valueOrElse(getInteger((toString(i.caller) + "_last_deposit_block")), 0)
20+ let lastWidthrawBlock = valueOrElse(getInteger((toString(i.caller) + "_last_widthraw_block")), 0)
21+ let previousShare = if (if (if ((lastDepositBlock != 0))
22+ then (startBlock > lastDepositBlock)
23+ else false)
24+ then (startBlock > lastWidthrawBlock)
25+ else false)
26+ then {
27+ let walletBalance = valueOrElse(getInteger((toString(i.caller) + "_balance")), 0)
28+ (walletBalance * 60)
29+ }
30+ else valueOrElse(getInteger((((toString(i.caller) + "_") + toString(startBlock)) + "_share")), 0)
31+ previousShare
32+ }
33+
34+ func getTotalPreviousShare () = {
35+ let lastDepositBlock = valueOrElse(getInteger("last_deposit_block"), 0)
36+ let lastWidthrawBlock = valueOrElse(getInteger("last_widthraw_block"), 0)
37+ let previousShare = if (if (if ((lastDepositBlock != 0))
38+ then (startBlock > lastDepositBlock)
39+ else false)
40+ then (startBlock > lastWidthrawBlock)
41+ else false)
42+ then {
43+ let totalBalance = valueOrElse(getInteger("total_balance"), 0)
44+ (totalBalance * 60)
45+ }
46+ else valueOrElse(getInteger((toString(startBlock) + "_total_share")), 0)
47+ previousShare
48+ }
49+
50+ let walletPreviousShare = getWalletPreviousShare()
51+ let walletShare = (walletPreviousShare + (i.payments[0].amount * ((startBlock + 60) - height)))
52+ let walletPreviousBalance = valueOrElse(getInteger((toString(i.caller) + "_balance")), 0)
53+ let walletBalance = (walletPreviousBalance + i.payments[0].amount)
54+ let totalPreviousShare = getTotalPreviousShare()
55+ let totalShare = (totalPreviousShare + (i.payments[0].amount * ((startBlock + 60) - height)))
56+ let previousTotalBalance = valueOrElse(getInteger("total_balance"), 0)
57+ let totalBalance = (previousTotalBalance + i.payments[0].amount)
58+ let depositCall = invoke(proxyAddress, "stakeLP", nil, [AttachedPayment(i.payments[0].assetId, i.payments[0].amount)])
59+ if ((depositCall == depositCall))
60+ then $Tuple2([IntegerEntry(((((((("D_" + toString(i.caller)) + "_") + toBase58String(i.transactionId)) + "_") + toString(height)) + "_") + toString(i.payments[0].amount)), i.payments[0].amount), IntegerEntry((toString(i.caller) + "_balance"), walletBalance), IntegerEntry((((toString(i.caller) + "_") + toString(startBlock)) + "_share"), walletShare), IntegerEntry((toString(i.caller) + "_last_deposit_block"), height), IntegerEntry("total_balance", totalBalance), IntegerEntry((toString(startBlock) + "_total_share"), totalShare), IntegerEntry("last_deposit_block", height)], unit)
61+ else throw("Strict value is not equal to itself.")
62+ }
63+ else throw("")
64+
65+
66+
67+@Callable(i)
68+func withdraw (amount) = {
69+ let walletPreviousBalance = valueOrElse(getInteger((toString(i.caller) + "_balance")), 0)
70+ if (if ((walletPreviousBalance > 0))
71+ then (walletPreviousBalance >= amount)
72+ else false)
73+ then {
74+ let startBlock = getIntegerValue("start_block")
75+ func getWalletPreviousShare () = {
76+ let lastDepositBlock = valueOrElse(getInteger((toString(i.caller) + "_last_deposit_block")), 0)
77+ let lastWidthrawBlock = valueOrElse(getInteger((toString(i.caller) + "_last_widthraw_block")), 0)
78+ let previousShare = if (if ((startBlock > lastDepositBlock))
79+ then (startBlock > lastWidthrawBlock)
80+ else false)
81+ then {
82+ let walletBalance = valueOrElse(getInteger((toString(i.caller) + "_balance")), 0)
83+ (walletBalance * 60)
84+ }
85+ else valueOrElse(getInteger((((toString(i.caller) + "_") + toString(startBlock)) + "_share")), 0)
86+ previousShare
87+ }
88+
89+ func getTotalPreviousShare () = {
90+ let lastDepositBlock = valueOrElse(getInteger("last_deposit_block"), 0)
91+ let lastWidthrawBlock = valueOrElse(getInteger("last_widthraw_block"), 0)
92+ let previousShare = if (if ((startBlock > lastDepositBlock))
93+ then (startBlock > lastWidthrawBlock)
94+ else false)
95+ then {
96+ let totalBalance = valueOrElse(getInteger("total_balance"), 0)
97+ (totalBalance * 60)
98+ }
99+ else valueOrElse(getInteger((toString(startBlock) + "_total_share")), 0)
100+ previousShare
101+ }
102+
103+ let walletBalance = (walletPreviousBalance - amount)
104+ let walletShare = (getWalletPreviousShare() - (((startBlock + 60) - height) * amount))
105+ let totalBalance = (valueOrElse(getInteger("total_balance"), 0) - amount)
106+ let totalShare = (getTotalPreviousShare() - (((startBlock + 60) - height) * amount))
107+ let withdrawCall = invoke(proxyAddress, "unstakeLP", [amount], nil)
108+ if ((withdrawCall == withdrawCall))
109+ then $Tuple2([ScriptTransfer(i.caller, amount, lpAssetId), IntegerEntry(((((((("W_" + toString(i.caller)) + "_") + toBase58String(i.transactionId)) + "_") + toString(height)) + "_") + toString(amount)), amount), IntegerEntry((toString(i.caller) + "_balance"), walletBalance), IntegerEntry((((toString(i.caller) + "_") + toString(startBlock)) + "_share"), walletShare), IntegerEntry((toString(i.caller) + "_last_widthraw_block"), height), IntegerEntry("total_balance", totalBalance), IntegerEntry((toString(startBlock) + "_total_share"), totalShare), IntegerEntry("last_widthraw_block", height)], unit)
110+ else throw("Strict value is not equal to itself.")
111+ }
112+ else throw("")
113+ }
114+
115+
116+
117+@Callable(i)
118+func end () = {
119+ let startBlock = getIntegerValue("start_block")
120+ let isEnded = valueOrElse(getBoolean((("start_block_" + toString(startBlock)) + "_ended")), false)
121+ let isValidBlock = (height >= (startBlock + 60))
122+ if (if (!(isEnded))
123+ then isValidBlock
124+ else false)
125+ then {
126+ let previousWXAmount = assetBalance(this, rewardAssetId)
127+ if ((previousWXAmount == previousWXAmount))
128+ then {
129+ let claimWXCall = invoke(proxyAddress, "claim", nil, nil)
130+ if ((claimWXCall == claimWXCall))
131+ then {
132+ let roundWXAmount = (assetBalance(this, rewardAssetId) - previousWXAmount)
133+ if ((roundWXAmount == roundWXAmount))
134+ then {
135+ let totalWXRewardAmount = valueOrElse(getInteger(this, "total_wx_reward_amount"), 0)
136+ $Tuple2([ScriptTransfer(i.caller, 1, unit), IntegerEntry((("start_block_" + toString(startBlock)) + "_end_block"), height), BooleanEntry((("start_block_" + toString(startBlock)) + "_ended"), true), IntegerEntry((("start_block_" + toString(startBlock)) + "_wx_reward_amount"), roundWXAmount), IntegerEntry("total_wx_reward_amount", totalWXRewardAmount), IntegerEntry("start_block", height)], unit)
137+ }
138+ else throw("Strict value is not equal to itself.")
139+ }
140+ else throw("Strict value is not equal to itself.")
141+ }
142+ else throw("Strict value is not equal to itself.")
143+ }
144+ else throw("")
145+ }
146+
147+
148+
149+@Callable(i)
150+func claim (startBlock) = {
151+ let isEnded = valueOrElse(getBoolean((("start_block_" + toString(startBlock)) + "_ended")), false)
152+ let isClaimed = valueOrElse(getBoolean((((toString(i.caller) + "_") + toString(startBlock)) + "_claimed")), false)
153+ func getWalletShare () = {
154+ let lastDepositBlock = valueOrElse(getInteger((toString(i.caller) + "_last_deposit_block")), 0)
155+ let lastWidthrawBlock = valueOrElse(getInteger((toString(i.caller) + "_last_widthraw_block")), 0)
156+ let walletShare = if (if (if ((lastDepositBlock != 0))
157+ then (startBlock > lastDepositBlock)
158+ else false)
159+ then (startBlock > lastWidthrawBlock)
160+ else false)
161+ then {
162+ let walletBalance = valueOrElse(getInteger((toString(i.caller) + "_balance")), 0)
163+ (walletBalance * 60)
164+ }
165+ else valueOrElse(getInteger((((toString(i.caller) + "_") + toString(startBlock)) + "_share")), 0)
166+ walletShare
167+ }
168+
169+ func getTotalShare () = {
170+ let lastDepositBlock = valueOrElse(getInteger("last_deposit_block"), 0)
171+ let lastWidthrawBlock = valueOrElse(getInteger("last_widthraw_block"), 0)
172+ let totalShare = if (if (if ((lastDepositBlock != 0))
173+ then (startBlock > lastDepositBlock)
174+ else false)
175+ then (startBlock > lastWidthrawBlock)
176+ else false)
177+ then {
178+ let totalBalance = valueOrElse(getInteger("total_balance"), 0)
179+ (totalBalance * 60)
180+ }
181+ else valueOrElse(getInteger((toString(startBlock) + "_total_share")), 0)
182+ totalShare
183+ }
184+
185+ let walletShare = getWalletShare()
186+ let totalShare = getTotalShare()
187+ if (if (if (isEnded)
188+ then !(isClaimed)
189+ else false)
190+ then (walletShare > 0)
191+ else false)
192+ then {
193+ let roundTotalReward = valueOrElse(getInteger((("start_block_" + toString(startBlock)) + "_wx_reward_amount")), 0)
194+ let roundUserReward = fraction(walletShare, roundTotalReward, totalShare)
195+ let roundTotalClaimed = (valueOrElse(getInteger((toString(startBlock) + "_total_claimed_wx_reward_amount")), 0) + roundUserReward)
196+ let totalClaimed = (valueOrElse(getInteger("total_claimed_wx_reward_amount"), 0) + roundUserReward)
197+ $Tuple2([ScriptTransfer(i.caller, roundUserReward, rewardAssetId), BooleanEntry((((toString(i.caller) + "_") + toString(startBlock)) + "_claimed"), true), IntegerEntry((((toString(i.caller) + "_") + toString(startBlock)) + "_claimed_wx_reward_amount"), roundUserReward), IntegerEntry((toString(startBlock) + "_total_claimed_wx_reward_amount"), roundTotalClaimed), IntegerEntry("total_claimed_wx_reward_amount", totalClaimed)], unit)
198+ }
199+ else throw("")
200+ }
201+
202+
203+
204+@Callable(i)
205+func init () = {
206+ let isInitialized = valueOrElse(getBoolean("initialized"), false)
207+ if (!(isInitialized))
208+ then $Tuple2([BooleanEntry("initialized", true), IntegerEntry("start_block", height)], unit)
209+ else throw("")
210+ }
211+
212+
213+@Verifier(tx)
214+func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
215+

github/deemru/w8io/3ef1775 
42.00 ms