tx · G6kVMsA5qBtvDJapoJjCqiCzoq4V1grMbnDaTdVsmrXo 3P2ZpdHdm8cpi7oS2dBPiLVo21ryZm6DDkH: -0.01000000 Waves 2022.01.19 19:34 [2951122] smart account 3P2ZpdHdm8cpi7oS2dBPiLVo21ryZm6DDkH > SELF 0.00000000 Waves
{ "type": 13, "id": "G6kVMsA5qBtvDJapoJjCqiCzoq4V1grMbnDaTdVsmrXo", "fee": 1000000, "feeAssetId": null, "timestamp": 1642610123887, "version": 2, "chainId": 87, "sender": "3P2ZpdHdm8cpi7oS2dBPiLVo21ryZm6DDkH", "senderPublicKey": "Bb5dk4R8sczo5DEiiL3sk5CG35EZbNWQHX2tc7sx31P7", "proofs": [ "3sg3VDraYoXc6of5sNzXa57h3SXvwkydqdBeoLzF1AybK7io2BFKkThMw7dY1mJESauo4UHw33sWikxCP6Kp9Ltd" ], "script": "base64:AAIFAAAAAAAAA5sIAhIAEgMKAQESABIAEgMKAQESBQoDCAgBEgUKAwEICBIAEgMKAQEaDwoBQRIKd3hMb2NrQ2FsbBoSCgFCEg10b3RhbExvY2tlZFdYGhIKAUMSDXd4YkFsbG9jYXRpb24aGAoBRBITdG90YWxDbGFpbWVkV1hCUG9vbBoUCgFFEg90b3RhbENsYWltZWRXWEIaEAoBRhILaW5pdGlhbGl6ZWQaDgoBRxIJZmlyc3RMb2NrGhUKAUgSEHdoaXRlbGlzdEFkZHJlc3MaDAoBSRIHYXNzZXRJZBoPCgFKEgphbGxvY2F0aW9uGhQKAUsSD3RvdGFsR2l2ZWF3YXlXWBoNCgFMEghkdXJhdGlvbhodCgFNEhhpbmNyZWFzZUxvY2tEdXJhdGlvbkNhbGwaEQoBThIMbG9ja0R1cmF0aW9uGgcKAU8SAnR4GgsKAVASBnZlcmlmeRoXCgFREhJhZG1pblB1YktleTFTaWduZWQaFwoBUhISYWRtaW5QdWJLZXkyU2lnbmVkGhcKAVMSEmFkbWluUHViS2V5M1NpZ25lZBoXCgFUEhJhZG1pblB1YktleTRTaWduZWQaEAoBYRILZEFwcEFkZHJlc3MaDgoBYhIJd3hBc3NldElkGg8KAWMSCnd4YkFzc2V0SWQaFAoBZBIPZ2l2ZWF3YXlBc3NldElkGhIKAWUSDXd4TG9ja0FkZHJlc3MaEQoBZhIMYWRtaW5QdWJLZXkxGhEKAWcSDGFkbWluUHViS2V5MhoRCgFoEgxhZG1pblB1YktleTMaEQoBaRIMYWRtaW5QdWJLZXk0GgYKAWoSAWkaGAoBaxITY2FsbGVyQWRkcmVzc1N0cmluZxoSCgFsEg1pc1doaXRlbGlzdGVkGg4KAW0SCWxwQXNzZXRJZBoQCgFuEgtzdGFrZUxQQ2FsbBoMCgFvEgdiYWxhbmNlGgsKAXASBmFtb3VudBoSCgFxEg11bnN0YWtlTFBDYWxsGg4KAXISCXd4QmFsYW5jZRoQCgFzEgtjbGFpbVdYQ2FsbBoUCgF0Eg9jbGFpbWVkV1hBbW91bnQaFwoBdRISdG90YWxDbGFpbWVkV1hQb29sGhMKAXYSDnRvdGFsQ2xhaW1lZFdYGgwKAXcSB2ZlZVJhdGUaCAoBeBIDZmVlGhoKAXkSFXRvdGFsQ29sbGVj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", "height": 2951122, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: CN7vNQF15aMo3AVCcDXc9jFpVodJqJMHvvYAUkz5MCd1 Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 5 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let dAppAddress = Address(base58'3PPNhHYkkEy13gRWDCaruQyhNbX2GrjYSyV') | |
5 | + | ||
6 | + | let wxAssetId = base58'Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on' | |
7 | + | ||
8 | + | let wxbAssetId = base58'BbP9tmd5Zxk345y9zipXkYaqDfxDG1suTj64eJmy1BAT' | |
9 | + | ||
10 | + | let giveawayAssetId = base58'Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on' | |
11 | + | ||
12 | + | let wxLockAddress = Address(base58'3PJL8Hn8LACaSBWLQ3UVhctA5cTQLBFwBAP') | |
13 | + | ||
14 | + | let adminPubKey1 = base58'8CPfYYUFZvLwMYqdhtwKnrQMAAnWiVakm3mf8MRGKtzN' | |
15 | + | ||
16 | + | let adminPubKey2 = base58'Aa5tsh5uzQYAYpDYswmQko1c79PSYLrGbwRZ5sBViNx5' | |
17 | + | ||
18 | + | let adminPubKey3 = base58'mTQL3HhYMeLQCe34H45YtLjbQeg5QyZJ5EPyU8An8jj' | |
19 | + | ||
20 | + | let adminPubKey4 = base58'HrzjFpn3V1Y5bB8r3JKGgR6qWUixJxuvToFXGJ4WDQu9' | |
21 | + | ||
22 | + | @Callable(i) | |
23 | + | func stakeLP () = { | |
24 | + | let callerAddressString = toString(i.caller) | |
25 | + | let isWhitelisted = valueOrElse(getBoolean((callerAddressString + "_whitelisted")), false) | |
26 | + | let lpAssetId = valueOrElse(getString((callerAddressString + "_assetId")), "") | |
27 | + | if (if (if (if (isWhitelisted) | |
28 | + | then (size(i.payments) == 1) | |
29 | + | else false) | |
30 | + | then (i.payments[0].amount > 0) | |
31 | + | else false) | |
32 | + | then (i.payments[0].assetId == fromBase58String(lpAssetId)) | |
33 | + | else false) | |
34 | + | then { | |
35 | + | let stakeLPCall = invoke(dAppAddress, "stake", nil, [AttachedPayment(i.payments[0].assetId, i.payments[0].amount)]) | |
36 | + | if ((stakeLPCall == stakeLPCall)) | |
37 | + | then { | |
38 | + | let balance = (valueOrElse(getInteger((((callerAddressString + "_") + lpAssetId) + "_balance")), 0) + i.payments[0].amount) | |
39 | + | $Tuple2([IntegerEntry((((callerAddressString + "_") + lpAssetId) + "_balance"), balance)], unit) | |
40 | + | } | |
41 | + | else throw("Strict value is not equal to itself.") | |
42 | + | } | |
43 | + | else throw("") | |
44 | + | } | |
45 | + | ||
46 | + | ||
47 | + | ||
48 | + | @Callable(i) | |
49 | + | func unstakeLP (amount) = { | |
50 | + | let callerAddressString = toString(i.caller) | |
51 | + | let isWhitelisted = valueOrElse(getBoolean((callerAddressString + "_whitelisted")), false) | |
52 | + | if (isWhitelisted) | |
53 | + | then { | |
54 | + | let lpAssetId = valueOrElse(getString((callerAddressString + "_assetId")), "") | |
55 | + | let unstakeLPCall = invoke(dAppAddress, "unstake", [lpAssetId, amount], nil) | |
56 | + | if ((unstakeLPCall == unstakeLPCall)) | |
57 | + | then { | |
58 | + | let balance = (valueOrElse(getInteger((((callerAddressString + "_") + lpAssetId) + "_balance")), 0) - amount) | |
59 | + | $Tuple2([ScriptTransfer(i.caller, amount, fromBase58String(lpAssetId)), IntegerEntry((((callerAddressString + "_") + lpAssetId) + "_balance"), balance)], unit) | |
60 | + | } | |
61 | + | else throw("Strict value is not equal to itself.") | |
62 | + | } | |
63 | + | else throw("") | |
64 | + | } | |
65 | + | ||
66 | + | ||
67 | + | ||
68 | + | @Callable(i) | |
69 | + | func claim () = { | |
70 | + | let callerAddressString = toString(i.caller) | |
71 | + | let isWhitelisted = valueOrElse(getBoolean((callerAddressString + "_whitelisted")), false) | |
72 | + | if (isWhitelisted) | |
73 | + | then { | |
74 | + | let lpAssetId = valueOrElse(getString((callerAddressString + "_assetId")), "") | |
75 | + | let wxBalance = assetBalance(this, wxAssetId) | |
76 | + | if ((wxBalance == wxBalance)) | |
77 | + | then { | |
78 | + | let claimWXCall = invoke(dAppAddress, "claimWx", [lpAssetId], nil) | |
79 | + | if ((claimWXCall == claimWXCall)) | |
80 | + | then { | |
81 | + | let claimedWXAmount = (assetBalance(this, wxAssetId) - wxBalance) | |
82 | + | if ((claimedWXAmount == claimedWXAmount)) | |
83 | + | then { | |
84 | + | let totalClaimedWXPool = (valueOrElse(getInteger((((callerAddressString + "_") + lpAssetId) + "_total_claimed_wx")), 0) + claimedWXAmount) | |
85 | + | let totalClaimedWX = (valueOrElse(getInteger(this, "total_claimed_wx"), 0) + claimedWXAmount) | |
86 | + | let feeRate = getIntegerValue(this, "fee") | |
87 | + | let fee = fraction(claimedWXAmount, feeRate, 100) | |
88 | + | let totalCollectedFeePool = (valueOrElse(getInteger((((callerAddressString + "_") + lpAssetId) + "_total_collected_fee")), 0) + fee) | |
89 | + | let totalCollectedFee = (valueOrElse(getInteger("total_collected_fee"), 0) + fee) | |
90 | + | let wxLockCall = invoke(wxLockAddress, "increaseLock", [0], [AttachedPayment(wxAssetId, fee)]) | |
91 | + | if ((wxLockCall == wxLockCall)) | |
92 | + | then { | |
93 | + | let totalLockedWX = (valueOrElse(getInteger("total_locked_wx"), 0) + fee) | |
94 | + | let wxbAllocation = valueOrElse(getInteger((((callerAddressString + "_") + lpAssetId) + "_wxb_allocation")), 0) | |
95 | + | let totalClaimedWXBPool = (valueOrElse(getInteger((((callerAddressString + "_") + lpAssetId) + "_total_claimed_wxb")), 0) + wxbAllocation) | |
96 | + | let totalClaimedWXB = (valueOrElse(getInteger("total_claimed_wxb"), 0) + wxbAllocation) | |
97 | + | $Tuple2([ScriptTransfer(i.caller, (claimedWXAmount - fee), wxAssetId), ScriptTransfer(i.caller, wxbAllocation, wxbAssetId), IntegerEntry("total_locked_wx", totalLockedWX), IntegerEntry((((callerAddressString + "_") + lpAssetId) + "_total_claimed_wx"), totalClaimedWXPool), IntegerEntry("total_claimed_wx", totalClaimedWX), IntegerEntry((((callerAddressString + "_") + lpAssetId) + "_total_claimed_wxb"), totalClaimedWXPool), IntegerEntry("total_claimed_wxb", totalClaimedWXB), IntegerEntry((((callerAddressString + "_") + lpAssetId) + "_total_collected_fee"), totalCollectedFeePool), IntegerEntry("total_collected_fee", totalCollectedFee)], unit) | |
98 | + | } | |
99 | + | else throw("Strict value is not equal to itself.") | |
100 | + | } | |
101 | + | else throw("Strict value is not equal to itself.") | |
102 | + | } | |
103 | + | else throw("Strict value is not equal to itself.") | |
104 | + | } | |
105 | + | else throw("Strict value is not equal to itself.") | |
106 | + | } | |
107 | + | else throw("") | |
108 | + | } | |
109 | + | ||
110 | + | ||
111 | + | ||
112 | + | @Callable(i) | |
113 | + | func init () = { | |
114 | + | let initialized = valueOrElse(getBoolean("initialized"), false) | |
115 | + | if (!(initialized)) | |
116 | + | then { | |
117 | + | let firstLock = invoke(wxLockAddress, "lock", [2102400], [AttachedPayment(i.payments[0].assetId, i.payments[0].amount)]) | |
118 | + | if ((firstLock == firstLock)) | |
119 | + | then $Tuple2([BooleanEntry("initialized", true), IntegerEntry("it_all_started_in_this_block", height), IntegerEntry("total_locked_wx", i.payments[0].amount), IntegerEntry("lock_duration", (2102400 + height)), IntegerEntry("fee", 10)], unit) | |
120 | + | else throw("Strict value is not equal to itself.") | |
121 | + | } | |
122 | + | else throw("") | |
123 | + | } | |
124 | + | ||
125 | + | ||
126 | + | ||
127 | + | @Callable(i) | |
128 | + | func setFee (fee) = if ((i.caller == this)) | |
129 | + | then $Tuple2([IntegerEntry("fee", fee)], unit) | |
130 | + | else throw("") | |
131 | + | ||
132 | + | ||
133 | + | ||
134 | + | @Callable(i) | |
135 | + | func whitelist (whitelistAddress,assetId,allocation) = if ((i.caller == this)) | |
136 | + | then $Tuple2([BooleanEntry((whitelistAddress + "_whitelisted"), true), StringEntry((whitelistAddress + "_assetId"), assetId), IntegerEntry((((whitelistAddress + "_") + assetId) + "_wxb_allocation"), allocation)], unit) | |
137 | + | else throw("") | |
138 | + | ||
139 | + | ||
140 | + | ||
141 | + | @Callable(i) | |
142 | + | func setAllocation (amount,whitelistAddress,assetId) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3, adminPubKey4], i.callerPublicKey)) | |
143 | + | then [IntegerEntry((((whitelistAddress + "_") + assetId) + "_wxb_allocation"), amount)] | |
144 | + | else throw("") | |
145 | + | ||
146 | + | ||
147 | + | ||
148 | + | @Callable(i) | |
149 | + | func giveaway () = { | |
150 | + | let callerAddressString = toString(i.caller) | |
151 | + | let isWhitelisted = valueOrElse(getBoolean((callerAddressString + "_whitelisted")), false) | |
152 | + | if (if (if (if (isWhitelisted) | |
153 | + | then (size(i.payments) == 1) | |
154 | + | else false) | |
155 | + | then (i.payments[0].assetId == giveawayAssetId) | |
156 | + | else false) | |
157 | + | then (i.payments[0].amount > 0) | |
158 | + | else false) | |
159 | + | then { | |
160 | + | let wxLockCall = invoke(wxLockAddress, "increaseLock", [0], [AttachedPayment(giveawayAssetId, i.payments[0].amount)]) | |
161 | + | if ((wxLockCall == wxLockCall)) | |
162 | + | then { | |
163 | + | let totalLockedWX = (valueOrElse(getInteger("total_locked_wx"), 0) + i.payments[0].amount) | |
164 | + | let totalGiveawayWX = (valueOrElse(getInteger("total_giveaway_wx"), 0) + i.payments[0].amount) | |
165 | + | $Tuple2([IntegerEntry("total_locked_wx", totalLockedWX), IntegerEntry("total_giveaway_wx", totalGiveawayWX)], unit) | |
166 | + | } | |
167 | + | else throw("Strict value is not equal to itself.") | |
168 | + | } | |
169 | + | else throw("") | |
170 | + | } | |
171 | + | ||
172 | + | ||
173 | + | ||
174 | + | @Callable(i) | |
175 | + | func increaseLockDuration (duration) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3, adminPubKey4], i.callerPublicKey)) | |
176 | + | then { | |
177 | + | let increaseLockDurationCall = invoke(wxLockAddress, "increaseLock", [duration], nil) | |
178 | + | if ((increaseLockDurationCall == increaseLockDurationCall)) | |
179 | + | then { | |
180 | + | let lockDuration = (getIntegerValue("lock_duration") + duration) | |
181 | + | $Tuple2([IntegerEntry("lock_duration", lockDuration)], unit) | |
182 | + | } | |
183 | + | else throw("Strict value is not equal to itself.") | |
184 | + | } | |
185 | + | else throw("") | |
186 | + | ||
187 | + | ||
188 | + | @Verifier(tx) | |
189 | + | func verify () = { | |
190 | + | let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1)) | |
191 | + | then 1 | |
192 | + | else 0 | |
193 | + | let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2)) | |
194 | + | then 1 | |
195 | + | else 0 | |
196 | + | let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3)) | |
197 | + | then 1 | |
198 | + | else 0 | |
199 | + | let adminPubKey4Signed = if (sigVerify(tx.bodyBytes, tx.proofs[3], adminPubKey4)) | |
200 | + | then 1 | |
201 | + | else 0 | |
202 | + | ((((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) + adminPubKey4Signed) >= 3) | |
203 | + | } | |
204 | + |
github/deemru/w8io/3ef1775 26.52 ms ◑