tx · CN7vNQF15aMo3AVCcDXc9jFpVodJqJMHvvYAUkz5MCd1

3P2ZpdHdm8cpi7oS2dBPiLVo21ryZm6DDkH:  -0.01400000 Waves

2022.01.20 17:45 [2952480] smart account 3P2ZpdHdm8cpi7oS2dBPiLVo21ryZm6DDkH > SELF 0.00000000 Waves

{ "type": 13, "id": "CN7vNQF15aMo3AVCcDXc9jFpVodJqJMHvvYAUkz5MCd1", "fee": 1400000, "feeAssetId": null, "timestamp": 1642689893710, "version": 2, "chainId": 87, "sender": "3P2ZpdHdm8cpi7oS2dBPiLVo21ryZm6DDkH", "senderPublicKey": "Bb5dk4R8sczo5DEiiL3sk5CG35EZbNWQHX2tc7sx31P7", "proofs": [ "4dFVZm3SApGZU4bt3pY5goXSxKZHWviy9ntSJ1B8X1bYqhMqfDn8iAMF62TzRQ9UzkS89ozDW8vCnkK7ERVQ6HJw", "3kkcbd3bbjDVT3ptrABAkJho8w9oS24ZToYN3ogReaXcX8bY85MYBFeHXhkouBaJ42QY4WMGiypHga7QmoRyNQoW", "AFAiRc8GBjqRZX2uc4LyEBCkX3pbCNWMhu5r68zG9nC9oYJpGMcZ9WbK3wfcfdWs5D114Qz4dfeTmCpL6HFUMVA" ], "script": "base64:AAIFAAAAAAAAACIIAhIAGgYKAWESAWkaBwoBYhICdHgaCwoBYxIGdmVyaWZ5AAAAAAAAAAEAAAABYQEAAAAEY2FsbAAAAAAJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQIAAABfM1A4MURCUnlYOWc1WXZwNUp3YkZVQ2lmQ0VhQ0pLTll3SDNfN0taYkpyVm9wd0poa2R3YmUxZUZEQmJleDRka1k2M014alROanFYdHJ6ajFfd3hiX2FsbG9jYXRpb24JAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQIAAAArM1A4MURCUnlYOWc1WXZwNUp3YkZVQ2lmQ0VhQ0pLTll3SDNfYXNzZXRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABAgAAAC8zUDgxREJSeVg5ZzVZdnA1SndiRlVDaWZDRWFDSktOWXdIM193aGl0ZWxpc3RlZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABAgAAAF8zUDhDcDlRWkJNb2RMcTV0cFhCdWZaTlROOFhLZXRkaHdVcl84V2hINUNDSjZOYWtQdkV2QUpjaXpxcUQ3SDZheGh1cGRZSERGdW1TRHdzeV93eGJfYWxsb2NhdGlvbgkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABAgAAACszUDhDcDlRWkJNb2RMcTV0cFhCdWZaTlROOFhLZXRkaHdVcl9hc3NldElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAECAAAALzNQOENwOVFaQk1vZExxNXRwWEJ1ZlpOVE44WEtldGRod1VyX3doaXRlbGlzdGVkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAECAAAAXzNQOGhEWkVQRW1pWmc2dVN6VEpFeUZ0SDFDclNkZlpaREZmXzZndGdCRDEyeFprVVRuekdvZm9GSnBNZzVnWUcxRlA2UGFHeUx2aVZRamJoX3d4Yl9hbGxvY2F0aW9uCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAECAAAAKzNQOGhEWkVQRW1pWmc2dVN6VEpFeUZ0SDFDclNkZlpaREZmX2Fzc2V0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQIAAAAvM1A4aERaRVBFbWlaZzZ1U3pUSkV5RnRIMUNyU2RmWlpERmZfd2hpdGVsaXN0ZWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQIAAABfM1BIWkNxdlA0SGFzN2VnWWVieWtaTXRHVXNyRXlNWWJNYWNfRjJBS2tBNTEzazV5SEVKa0xzVTZ2V3hDWVlrODExR3BqTGh3RXYyV0d3Wjlfd3hiX2FsbG9jYXRpb24JAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQIAAAArM1BIWkNxdlA0SGFzN2VnWWVieWtaTXRHVXNyRXlNWWJNYWNfYXNzZXRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABAgAAAC8zUEhaQ3F2UDRIYXM3ZWdZZWJ5a1pNdEdVc3JFeU1ZYk1hY193aGl0ZWxpc3RlZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABAgAAAFgzUFEyRnFIazRmUGZwY29GMnFmUUFUR1ZQc2d4d2dQVHNxb185N3pIRnAxQzNjQjdxZnZ4OFh2NWYycldwOW5VU0c1VW5BYW1mUGNXNnR4Zl9iYWxhbmNlCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAECAAAAXzNQUTJGcUhrNGZQZnBjb0YycWZRQVRHVlBzZ3h3Z1BUc3FvXzk3ekhGcDFDM2NCN3Fmdng4WHY1ZjJyV3A5blVTRzVVbkFhbWZQY1c2dHhmX3d4Yl9hbGxvY2F0aW9uCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAECAAAAKzNQUTJGcUhrNGZQZnBjb0YycWZRQVRHVlBzZ3h3Z1BUc3FvX2Fzc2V0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQIAAAAvM1BRMkZxSGs0ZlBmcGNvRjJxZlFBVEdWUHNneHdnUFRzcW9fd2hpdGVsaXN0ZWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQIAAAADZmVlCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAECAAAAC2luaXRpYWxpemVkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAECAAAAHGl0X2FsbF9zdGFydGVkX2luX3RoaXNfYmxvY2sJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQIAAAANbG9ja19kdXJhdGlvbgkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABAgAAAA90b3RhbF9sb2NrZWRfd3gFAAAAA25pbAAAAAEAAAABYgEAAAABYwAAAAAJAAH0AAAAAwgFAAAAAWIAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAFiAAAABnByb29mcwAAAAAAAAAAAAgFAAAAAWIAAAAPc2VuZGVyUHVibGljS2V5hfl8sw==", "height": 2952480, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: G6kVMsA5qBtvDJapoJjCqiCzoq4V1grMbnDaTdVsmrXo Next: 8MaJsTRbuChq8u7uSf3kvecvU2kJ8JJu3jS2FGV6wEFr Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# 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-
464
475
486 @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("")
7+func call () = [DeleteEntry("3P81DBRyX9g5Yvp5JwbFUCifCEaCJKNYwH3_7KZbJrVopwJhkdwbe1eFDBbex4dkY63MxjTNjqXtrzj1_wxb_allocation"), DeleteEntry("3P81DBRyX9g5Yvp5JwbFUCifCEaCJKNYwH3_assetId"), DeleteEntry("3P81DBRyX9g5Yvp5JwbFUCifCEaCJKNYwH3_whitelisted"), DeleteEntry("3P8Cp9QZBModLq5tpXBufZNTN8XKetdhwUr_8WhH5CCJ6NakPvEvAJcizqqD7H6axhupdYHDFumSDwsy_wxb_allocation"), DeleteEntry("3P8Cp9QZBModLq5tpXBufZNTN8XKetdhwUr_assetId"), DeleteEntry("3P8Cp9QZBModLq5tpXBufZNTN8XKetdhwUr_whitelisted"), DeleteEntry("3P8hDZEPEmiZg6uSzTJEyFtH1CrSdfZZDFf_6gtgBD12xZkUTnzGofoFJpMg5gYG1FP6PaGyLviVQjbh_wxb_allocation"), DeleteEntry("3P8hDZEPEmiZg6uSzTJEyFtH1CrSdfZZDFf_assetId"), DeleteEntry("3P8hDZEPEmiZg6uSzTJEyFtH1CrSdfZZDFf_whitelisted"), DeleteEntry("3PHZCqvP4Has7egYebykZMtGUsrEyMYbMac_F2AKkA513k5yHEJkLsU6vWxCYYk811GpjLhwEv2WGwZ9_wxb_allocation"), DeleteEntry("3PHZCqvP4Has7egYebykZMtGUsrEyMYbMac_assetId"), DeleteEntry("3PHZCqvP4Has7egYebykZMtGUsrEyMYbMac_whitelisted"), DeleteEntry("3PQ2FqHk4fPfpcoF2qfQATGVPsgxwgPTsqo_97zHFp1C3cB7qfvx8Xv5f2rWp9nUSG5UnAamfPcW6txf_balance"), DeleteEntry("3PQ2FqHk4fPfpcoF2qfQATGVPsgxwgPTsqo_97zHFp1C3cB7qfvx8Xv5f2rWp9nUSG5UnAamfPcW6txf_wxb_allocation"), DeleteEntry("3PQ2FqHk4fPfpcoF2qfQATGVPsgxwgPTsqo_assetId"), DeleteEntry("3PQ2FqHk4fPfpcoF2qfQATGVPsgxwgPTsqo_whitelisted"), DeleteEntry("fee"), DeleteEntry("initialized"), DeleteEntry("it_all_started_in_this_block"), DeleteEntry("lock_duration"), DeleteEntry("total_locked_wx")]
1868
1879
18810 @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- }
11+func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
20412

github/deemru/w8io/6500d08 
39.92 ms