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:
Old | New | Differences | |
---|---|---|---|
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 ◑