tx · GYUQfz86LU4G5ZmEe8k6jVMAE2jKs7yk6vhXuVVGCWLx 3P4YjN8nzgNTQXivKuiiZQRDyScbx5gM5pQ: -0.01400000 Waves 2022.01.10 16:13 [2937946] smart account 3P4YjN8nzgNTQXivKuiiZQRDyScbx5gM5pQ > SELF 0.00000000 Waves
{ "type": 13, "id": "GYUQfz86LU4G5ZmEe8k6jVMAE2jKs7yk6vhXuVVGCWLx", "fee": 1400000, "feeAssetId": null, "timestamp": 1641820469506, "version": 2, "chainId": 87, "sender": "3P4YjN8nzgNTQXivKuiiZQRDyScbx5gM5pQ", "senderPublicKey": "Aa5tsh5uzQYAYpDYswmQko1c79PSYLrGbwRZ5sBViNx5", "proofs": [ "3a3hMaZHN1HAMEAaxetFxhfhNAD8CgGs7UEP1xj8pYtVgnJ9iexgqRvLkybJLx23g6fACdnFzFPbTeQnfcCuw7NX" ], "script": "base64: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", "height": 2937946, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: A8DznYdD2YCa3HZsWyg8T7UaFWBoXfpDfMpU6fXgNUAV Next: C98WdTAVixuw2KviH1xQqsD4VBtfQDg2mXrxrxrDvtH2 Diff:
Old | New | Differences | |
---|---|---|---|
158 | 158 | case _ => | |
159 | 159 | throw("Match error") | |
160 | 160 | } | |
161 | - | if (if ((i.callerPublicKey == publicKey)) | |
162 | - | then !(started) | |
163 | - | else false) | |
161 | + | if (!(started)) | |
164 | 162 | then { | |
165 | - | let firstLock = invoke(wxLockAddress, "lock", [2102400], [AttachedPayment( | |
163 | + | let firstLock = invoke(wxLockAddress, "lock", [2102400], [AttachedPayment(i.payments[0].assetId, i.payments[0].amount)]) | |
166 | 164 | if ((firstLock == firstLock)) | |
167 | - | then $Tuple2([IntegerEntry("it_all_started_in_this_block", height), IntegerEntry("total_locked_wx", i.payments[0].amount), IntegerEntry("lock_duration", 2102400)], unit) | |
165 | + | then $Tuple2([IntegerEntry("it_all_started_in_this_block", height), IntegerEntry("total_locked_wx", i.payments[0].amount), IntegerEntry("lock_duration", 2102400), DeleteEntry("3PHi8kX9EqfvRwgzHWcpjLKQt1zBAH1bX7M_assetId"), DeleteEntry("3PHi8kX9EqfvRwgzHWcpjLKQt1zBAH1bX7M_whitelisted"), DeleteEntry("fee")], unit) | |
168 | 166 | else throw("Strict value is not equal to itself.") | |
169 | 167 | } | |
170 | 168 | else throw("") |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let publicKey = base58'Aa5tsh5uzQYAYpDYswmQko1c79PSYLrGbwRZ5sBViNx5' | |
5 | 5 | ||
6 | 6 | let dAppAddress = Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV') | |
7 | 7 | ||
8 | 8 | let rewardAssetId = base58'Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on' | |
9 | 9 | ||
10 | 10 | let giveawayAssetId = base58'Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on' | |
11 | 11 | ||
12 | 12 | let wxLockAddress = Address(base58'3PJL8Hn8LACaSBWLQ3UVhctA5cTQLBFwBAP') | |
13 | 13 | ||
14 | 14 | let feeAddress = Address(base58'3PH8NXNHpYR5gLn3cwtqnvmKVwQQWb7FrwY') | |
15 | 15 | ||
16 | 16 | @Callable(i) | |
17 | 17 | func stakeLP () = { | |
18 | 18 | let callerAddressString = toString(i.caller) | |
19 | 19 | let isWhitelisted = valueOrElse(getBoolean((callerAddressString + "_whitelisted")), false) | |
20 | 20 | let lpAssetId = valueOrElse(getString((callerAddressString + "_assetId")), "") | |
21 | 21 | if (if (if (if (isWhitelisted) | |
22 | 22 | then (size(i.payments) == 1) | |
23 | 23 | else false) | |
24 | 24 | then (i.payments[0].amount > 0) | |
25 | 25 | else false) | |
26 | 26 | then (i.payments[0].assetId == fromBase58String(lpAssetId)) | |
27 | 27 | else false) | |
28 | 28 | then { | |
29 | 29 | let stakeLPCall = invoke(dAppAddress, "stake", nil, [AttachedPayment(i.payments[0].assetId, i.payments[0].amount)]) | |
30 | 30 | if ((stakeLPCall == stakeLPCall)) | |
31 | 31 | then { | |
32 | 32 | let balance = (valueOrElse(getInteger((((callerAddressString + "_") + lpAssetId) + "_balance")), 0) + i.payments[0].amount) | |
33 | 33 | $Tuple2([IntegerEntry((((callerAddressString + "_") + lpAssetId) + "_balance"), balance)], unit) | |
34 | 34 | } | |
35 | 35 | else throw("Strict value is not equal to itself.") | |
36 | 36 | } | |
37 | 37 | else throw("") | |
38 | 38 | } | |
39 | 39 | ||
40 | 40 | ||
41 | 41 | ||
42 | 42 | @Callable(i) | |
43 | 43 | func unstakeLP (amount) = { | |
44 | 44 | let callerAddressString = toString(i.caller) | |
45 | 45 | let isWhitelisted = valueOrElse(getBoolean((callerAddressString + "_whitelisted")), false) | |
46 | 46 | if (isWhitelisted) | |
47 | 47 | then { | |
48 | 48 | let lpAssetId = valueOrElse(getString((callerAddressString + "_assetId")), "") | |
49 | 49 | let unstakeLPCall = invoke(dAppAddress, "unstake", [lpAssetId, amount], nil) | |
50 | 50 | if ((unstakeLPCall == unstakeLPCall)) | |
51 | 51 | then { | |
52 | 52 | let balance = (valueOrElse(getInteger((((callerAddressString + "_") + lpAssetId) + "_balance")), 0) - amount) | |
53 | 53 | $Tuple2([ScriptTransfer(i.caller, amount, fromBase58String(lpAssetId)), IntegerEntry((((callerAddressString + "_") + lpAssetId) + "_balance"), balance)], unit) | |
54 | 54 | } | |
55 | 55 | else throw("Strict value is not equal to itself.") | |
56 | 56 | } | |
57 | 57 | else throw("") | |
58 | 58 | } | |
59 | 59 | ||
60 | 60 | ||
61 | 61 | ||
62 | 62 | @Callable(i) | |
63 | 63 | func claim () = { | |
64 | 64 | let callerAddressString = toString(i.caller) | |
65 | 65 | let isWhitelisted = valueOrElse(getBoolean((callerAddressString + "_whitelisted")), false) | |
66 | 66 | if (isWhitelisted) | |
67 | 67 | then { | |
68 | 68 | let lpAssetId = valueOrElse(getString((callerAddressString + "_assetId")), "") | |
69 | 69 | let wxBalance = assetBalance(this, rewardAssetId) | |
70 | 70 | if ((wxBalance == wxBalance)) | |
71 | 71 | then { | |
72 | 72 | let claimWXCall = invoke(dAppAddress, "claimWx", [lpAssetId], nil) | |
73 | 73 | if ((claimWXCall == claimWXCall)) | |
74 | 74 | then { | |
75 | 75 | let claimedWXAmount = (assetBalance(this, rewardAssetId) - wxBalance) | |
76 | 76 | if ((claimedWXAmount == claimedWXAmount)) | |
77 | 77 | then { | |
78 | 78 | let totalClaimedWXPool = (valueOrElse(getInteger((lpAssetId + "_total_claimed_wx")), 0) + claimedWXAmount) | |
79 | 79 | let totalClaimedWX = (valueOrElse(getInteger(this, "total_claimed_wx"), 0) + claimedWXAmount) | |
80 | 80 | let feeRate = getIntegerValue(this, "fee") | |
81 | 81 | let fee = fraction(claimedWXAmount, feeRate, 100) | |
82 | 82 | let totalCollectedFeePool = (valueOrElse(getInteger((lpAssetId + "_total_collected_fee")), 0) + fee) | |
83 | 83 | let totalCollectedFee = (valueOrElse(getInteger("total_collected_fee"), 0) + fee) | |
84 | 84 | $Tuple2([ScriptTransfer(i.caller, (claimedWXAmount - fee), rewardAssetId), ScriptTransfer(feeAddress, fee, rewardAssetId), IntegerEntry((lpAssetId + "_total_claimed_wx"), totalClaimedWXPool), IntegerEntry("total_claimed_wx", totalClaimedWX), IntegerEntry((lpAssetId + "_total_collected_fee"), totalCollectedFeePool), IntegerEntry("total_collected_fee", totalCollectedFee)], unit) | |
85 | 85 | } | |
86 | 86 | else throw("Strict value is not equal to itself.") | |
87 | 87 | } | |
88 | 88 | else throw("Strict value is not equal to itself.") | |
89 | 89 | } | |
90 | 90 | else throw("Strict value is not equal to itself.") | |
91 | 91 | } | |
92 | 92 | else throw("") | |
93 | 93 | } | |
94 | 94 | ||
95 | 95 | ||
96 | 96 | ||
97 | 97 | @Callable(i) | |
98 | 98 | func whitelist (whitelistAddress,assetId) = if ((i.callerPublicKey == publicKey)) | |
99 | 99 | then $Tuple2([BooleanEntry((whitelistAddress + "_whitelisted"), true), StringEntry((whitelistAddress + "_assetId"), assetId)], unit) | |
100 | 100 | else throw("") | |
101 | 101 | ||
102 | 102 | ||
103 | 103 | ||
104 | 104 | @Callable(i) | |
105 | 105 | func setFee (fee) = if ((i.callerPublicKey == publicKey)) | |
106 | 106 | then $Tuple2([IntegerEntry("fee", fee)], unit) | |
107 | 107 | else throw("") | |
108 | 108 | ||
109 | 109 | ||
110 | 110 | ||
111 | 111 | @Callable(i) | |
112 | 112 | func giveaway () = { | |
113 | 113 | let callerAddressString = toString(i.caller) | |
114 | 114 | let isWhitelisted = valueOrElse(getBoolean((callerAddressString + "_whitelisted")), false) | |
115 | 115 | if (if (if (if (isWhitelisted) | |
116 | 116 | then (size(i.payments) == 1) | |
117 | 117 | else false) | |
118 | 118 | then (i.payments[0].assetId == giveawayAssetId) | |
119 | 119 | else false) | |
120 | 120 | then (i.payments[0].amount > 0) | |
121 | 121 | else false) | |
122 | 122 | then { | |
123 | 123 | let wxLockCall = invoke(wxLockAddress, "increaseLock", [0], [AttachedPayment(giveawayAssetId, i.payments[0].amount)]) | |
124 | 124 | if ((wxLockCall == wxLockCall)) | |
125 | 125 | then { | |
126 | 126 | let totalLockedWX = (valueOrElse(getInteger("total_locked_wx"), 0) + i.payments[0].amount) | |
127 | 127 | $Tuple2([IntegerEntry("total_locked_wx", totalLockedWX)], unit) | |
128 | 128 | } | |
129 | 129 | else throw("Strict value is not equal to itself.") | |
130 | 130 | } | |
131 | 131 | else throw("") | |
132 | 132 | } | |
133 | 133 | ||
134 | 134 | ||
135 | 135 | ||
136 | 136 | @Callable(i) | |
137 | 137 | func increaseLockDuration (duration) = if ((i.callerPublicKey == publicKey)) | |
138 | 138 | then { | |
139 | 139 | let increaseLockDurationCall = invoke(wxLockAddress, "increaseLock", [duration], nil) | |
140 | 140 | if ((increaseLockDurationCall == increaseLockDurationCall)) | |
141 | 141 | then { | |
142 | 142 | let lockDuration = (valueOrElse(getInteger("lock_duration"), 0) + duration) | |
143 | 143 | $Tuple2([IntegerEntry("lock_duration", lockDuration)], unit) | |
144 | 144 | } | |
145 | 145 | else throw("Strict value is not equal to itself.") | |
146 | 146 | } | |
147 | 147 | else throw("") | |
148 | 148 | ||
149 | 149 | ||
150 | 150 | ||
151 | 151 | @Callable(i) | |
152 | 152 | func forYou () = { | |
153 | 153 | let started = match getInteger(this, "it_all_started_in_this_block") { | |
154 | 154 | case yep: Int => | |
155 | 155 | true | |
156 | 156 | case nope: Unit => | |
157 | 157 | false | |
158 | 158 | case _ => | |
159 | 159 | throw("Match error") | |
160 | 160 | } | |
161 | - | if (if ((i.callerPublicKey == publicKey)) | |
162 | - | then !(started) | |
163 | - | else false) | |
161 | + | if (!(started)) | |
164 | 162 | then { | |
165 | - | let firstLock = invoke(wxLockAddress, "lock", [2102400], [AttachedPayment( | |
163 | + | let firstLock = invoke(wxLockAddress, "lock", [2102400], [AttachedPayment(i.payments[0].assetId, i.payments[0].amount)]) | |
166 | 164 | if ((firstLock == firstLock)) | |
167 | - | then $Tuple2([IntegerEntry("it_all_started_in_this_block", height), IntegerEntry("total_locked_wx", i.payments[0].amount), IntegerEntry("lock_duration", 2102400)], unit) | |
165 | + | then $Tuple2([IntegerEntry("it_all_started_in_this_block", height), IntegerEntry("total_locked_wx", i.payments[0].amount), IntegerEntry("lock_duration", 2102400), DeleteEntry("3PHi8kX9EqfvRwgzHWcpjLKQt1zBAH1bX7M_assetId"), DeleteEntry("3PHi8kX9EqfvRwgzHWcpjLKQt1zBAH1bX7M_whitelisted"), DeleteEntry("fee")], unit) | |
168 | 166 | else throw("Strict value is not equal to itself.") | |
169 | 167 | } | |
170 | 168 | else throw("") | |
171 | 169 | } | |
172 | 170 | ||
173 | 171 | ||
174 | 172 | @Verifier(tx) | |
175 | 173 | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
176 | 174 |
github/deemru/w8io/6500d08 36.13 ms ◑