tx · C98WdTAVixuw2KviH1xQqsD4VBtfQDg2mXrxrxrDvtH2

3P4YjN8nzgNTQXivKuiiZQRDyScbx5gM5pQ:  -0.01400000 Waves

2022.01.10 17:20 [2938013] smart account 3P4YjN8nzgNTQXivKuiiZQRDyScbx5gM5pQ > SELF 0.00000000 Waves

{ "type": 13, "id": "C98WdTAVixuw2KviH1xQqsD4VBtfQDg2mXrxrxrDvtH2", "fee": 1400000, "feeAssetId": null, "timestamp": 1641824426719, "version": 2, "chainId": 87, "sender": "3P4YjN8nzgNTQXivKuiiZQRDyScbx5gM5pQ", "senderPublicKey": "Aa5tsh5uzQYAYpDYswmQko1c79PSYLrGbwRZ5sBViNx5", "proofs": [ "5psbRWcJUPjryjvgF1TtT2nfEHvkmi4awhF7VxtsYztcdF6Ti2PVMtzXjUxvBYBZ5Dob9JukT6V3KwhJwhpc986X" ], "script": "base64:AAIFAAAAAAAAACIIAhIAGgYKAWESAWkaBwoBYhICdHgaCwoBYxIGdmVyaWZ5AAAAAAAAAAEAAAABYQEAAAAEY2FsbAAAAAAJAAUUAAAAAgkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABAgAAAFgzUEhpOGtYOUVxZnZSd2d6SFdjcGpMS1F0MXpCQUgxYlg3TV85N3pIRnAxQzNjQjdxZnZ4OFh2NWYycldwOW5VU0c1VW5BYW1mUGNXNnR4Zl9iYWxhbmNlCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAECAAAAKzNQSGk4a1g5RXFmdlJ3Z3pIV2NwakxLUXQxekJBSDFiWDdNX2Fzc2V0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQIAAAAvM1BIaThrWDlFcWZ2UndnekhXY3BqTEtRdDF6QkFIMWJYN01fd2hpdGVsaXN0ZWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQIAAAADZmVlCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAECAAAAHGl0X2FsbF9zdGFydGVkX2luX3RoaXNfYmxvY2sJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQIAAAANbG9ja19kdXJhdGlvbgkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABAgAAAA90b3RhbF9sb2NrZWRfd3gFAAAAA25pbAUAAAAEdW5pdAAAAAEAAAABYgEAAAABYwAAAAAJAAH0AAAAAwgFAAAAAWIAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAFiAAAABnByb29mcwAAAAAAAAAAAAgFAAAAAWIAAAAPc2VuZGVyUHVibGljS2V5PrZy2w==", "height": 2938013, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GYUQfz86LU4G5ZmEe8k6jVMAE2jKs7yk6vhXuVVGCWLx Next: 4dTvUUBkqRo4pGQ8htgx3VHS2buCs8pewbbsKigTgpK7 Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# 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-
404
415
426 @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 (!(started))
162- then {
163- let firstLock = invoke(wxLockAddress, "lock", [2102400], [AttachedPayment(i.payments[0].assetId, i.payments[0].amount)])
164- if ((firstLock == firstLock))
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)
166- else throw("Strict value is not equal to itself.")
167- }
168- else throw("")
169- }
7+func call () = $Tuple2([DeleteEntry("3PHi8kX9EqfvRwgzHWcpjLKQt1zBAH1bX7M_97zHFp1C3cB7qfvx8Xv5f2rWp9nUSG5UnAamfPcW6txf_balance"), DeleteEntry("3PHi8kX9EqfvRwgzHWcpjLKQt1zBAH1bX7M_assetId"), DeleteEntry("3PHi8kX9EqfvRwgzHWcpjLKQt1zBAH1bX7M_whitelisted"), DeleteEntry("fee"), DeleteEntry("it_all_started_in_this_block"), DeleteEntry("lock_duration"), DeleteEntry("total_locked_wx")], unit)
1708
1719
17210 @Verifier(tx)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# 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-
404
415
426 @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 (!(started))
162- then {
163- let firstLock = invoke(wxLockAddress, "lock", [2102400], [AttachedPayment(i.payments[0].assetId, i.payments[0].amount)])
164- if ((firstLock == firstLock))
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)
166- else throw("Strict value is not equal to itself.")
167- }
168- else throw("")
169- }
7+func call () = $Tuple2([DeleteEntry("3PHi8kX9EqfvRwgzHWcpjLKQt1zBAH1bX7M_97zHFp1C3cB7qfvx8Xv5f2rWp9nUSG5UnAamfPcW6txf_balance"), DeleteEntry("3PHi8kX9EqfvRwgzHWcpjLKQt1zBAH1bX7M_assetId"), DeleteEntry("3PHi8kX9EqfvRwgzHWcpjLKQt1zBAH1bX7M_whitelisted"), DeleteEntry("fee"), DeleteEntry("it_all_started_in_this_block"), DeleteEntry("lock_duration"), DeleteEntry("total_locked_wx")], unit)
1708
1719
17210 @Verifier(tx)
17311 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
17412

github/deemru/w8io/3ef1775 
43.02 ms