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