tx · FnMUnCPyUqRxPNPnDYcfYUiJmo8j6oYcqEtz8kDvQsxK

3N65ziw5oaWWQHthPW5jzsh9VxjYxHwpv33:  -0.01300000 Waves

2023.05.02 09:51 [2559807] smart account 3N65ziw5oaWWQHthPW5jzsh9VxjYxHwpv33 > SELF 0.00000000 Waves

{ "type": 13, "id": "FnMUnCPyUqRxPNPnDYcfYUiJmo8j6oYcqEtz8kDvQsxK", "fee": 1300000, "feeAssetId": null, "timestamp": 1683010344938, "version": 2, "chainId": 84, "sender": "3N65ziw5oaWWQHthPW5jzsh9VxjYxHwpv33", "senderPublicKey": "5yoY2Atq5TS6YzXkDHGig1DJdaYnWskuGToqK61rQWQd", "proofs": [ "4zMP83QWgQxacfZRAY3mp3ezL6hHViGGtrMVTugwT56YNPdcSYyCbeLBM6RZNQVFbd6fMA6A2qcZkQLi6V2tVYux" ], "script": "base64:BgIECAISAA0BE2tleUludmVzdFd4WHRuRGVsYXkAAhMlX19pbnZlc3RXeFh0bkRlbGF5ARdrZXlJbnZlc3RXeFh0bkFtb3VudFh0bgACFyVfX2ludmVzdFd4WHRuQW1vdW50WHRuAQxrZXlXeFh0blBvb2wAAgwlX193eFh0blBvb2wBDWtleVh0bkFzc2V0SWQAAg0lX194dG5Bc3NldElkAQprZXlXeFh0bkxwAAIKJV9fd3hYdG5McAEOa2V5THBUb0FkZHJlc3MAAg4lX19scFRvQWRkcmVzcwETa2V5TWFuYWdlclB1YmxpY0tleQACFCVzX19tYW5hZ2VyUHVibGljS2V5ARZrZXlNYW5hZ2VyVmF1bHRBZGRyZXNzAAIXJXNfX21hbmFnZXJWYXVsdEFkZHJlc3MBGGtleUludmVzdFd4WHRuTGFzdEhlaWdodAACGCVfX2ludmVzdFd4WHRuTGFzdEhlaWdodAEXZ2V0TWFuYWdlckFkZHJlc3NPckZhaWwACQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEWa2V5TWFuYWdlclZhdWx0QWRkcmVzcwABFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQABBNtYW5hZ2VyVmF1bHRBZGRyZXNzCQEXZ2V0TWFuYWdlckFkZHJlc3NPckZhaWwABAckbWF0Y2gwCQCdCAIFE21hbmFnZXJWYXVsdEFkZHJlc3MJARNrZXlNYW5hZ2VyUHVibGljS2V5AAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJANkEAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBCHRocm93RXJyAQNtc2cJAAIBCQC5CQIJAMwIAgIOaW52ZXN0b3IucmlkZToJAMwIAgUDbXNnBQNuaWwCASABC211c3RNYW5hZ2VyAQFpBAJwZAkBCHRocm93RXJyAQIRcGVybWlzc2lvbiBkZW5pZWQEByRtYXRjaDAJARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkFAnBrBgUCcGQDCQABAgUHJG1hdGNoMAIEVW5pdAMJAAACCAUBaQZjYWxsZXIFBHRoaXMGBQJwZAkAAgECC01hdGNoIGVycm9yAQFpAQtpbnZlc3RXeFh0bgAEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQIbGFzdENhbGwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBGGtleUludmVzdFd4WHRuTGFzdEhlaWdodAAAAAQFZGVsYXkJARFAZXh0ck5hdGl2ZSgxMDU1KQEJARNrZXlJbnZlc3RXeFh0bkRlbGF5AAQGY2hlY2tzCQDMCAIDCQBmAgUGaGVpZ2h0CQBkAgUIbGFzdENhbGwFBWRlbGF5BgkBCHRocm93RXJyAQIOd2FpdCB0byBpbnZlc3QFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQJbHBBc3NldElkCQDZBAEJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAQprZXlXeFh0bkxwAAQIbHBCZWZvcmUJAPAHAgUEdGhpcwUJbHBBc3NldElkAwkAAAIFCGxwQmVmb3JlBQhscEJlZm9yZQQDaW52CQD8BwQJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAQxrZXlXeFh0blBvb2wAAglwdXRPbmVUa24JAMwIAgAACQDMCAIHBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQkBEUBleHRyTmF0aXZlKDEwNTgpAQkBDWtleVh0bkFzc2V0SWQACQERQGV4dHJOYXRpdmUoMTA1NSkBCQEXa2V5SW52ZXN0V3hYdG5BbW91bnRYdG4ABQNuaWwDCQAAAgUDaW52BQNpbnYEB2xwQWZ0ZXIJAPAHAgUEdGhpcwUJbHBBc3NldElkAwkAAAIFB2xwQWZ0ZXIFB2xwQWZ0ZXIEBWxwR290CQBlAgUHbHBBZnRlcgUIbHBCZWZvcmUECW5vdFplcm9McAMJAAACBQVscEdvdAAACQEIdGhyb3dFcnIBAhFscCB0byBnZXQgaXMgemVybwUEdW5pdAMJAAACBQlub3RaZXJvTHAFCW5vdFplcm9McAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGGtleUludmVzdFd4WHRuTGFzdEhlaWdodAAFBmhlaWdodAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEOa2V5THBUb0FkZHJlc3MABQVscEdvdAUJbHBBc3NldElkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkABA90YXJnZXRQdWJsaWNLZXkEByRtYXRjaDAJARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAUCcGsDCQABAgUHJG1hdGNoMAIEVW5pdAgFAnR4D3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ90YXJnZXRQdWJsaWNLZXkoqmr3", "height": 2559807, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6wRM5vehNqyUqgQ2gVcQSKTgMW3bJymqw4xiyiuh49w2 Next: none Diff:
OldNewDifferences
2222 func keyManagerPublicKey () = "%s__managerPublicKey"
2323
2424
25-func keyPendingManagerPublicKey () = "%s__pendingManagerPublicKey"
25+func keyManagerVaultAddress () = "%s__managerVaultAddress"
2626
2727
2828 func keyInvestWxXtnLastHeight () = "%__investWxXtnLastHeight"
2929
3030
31-func managerPublicKeyOrUnit () = match getString(keyManagerPublicKey()) {
32- case s: String =>
33- fromBase58String(s)
34- case _: Unit =>
35- unit
36- case _ =>
37- throw("Match error")
38-}
31+func getManagerAddressOrFail () = addressFromStringValue(getStringValue(keyManagerVaultAddress()))
3932
4033
41-func pendingManagerPublicKeyOrUnit () = match getString(keyPendingManagerPublicKey()) {
42- case s: String =>
43- fromBase58String(s)
44- case _: Unit =>
45- unit
46- case _ =>
47- throw("Match error")
48-}
34+func managerPublicKeyOrUnit () = {
35+ let managerVaultAddress = getManagerAddressOrFail()
36+ match getString(managerVaultAddress, keyManagerPublicKey()) {
37+ case s: String =>
38+ fromBase58String(s)
39+ case _: Unit =>
40+ unit
41+ case _ =>
42+ throw("Match error")
43+ }
44+ }
4945
5046
5147 func throwErr (msg) = throw(makeString(["investor.ride:", msg], " "))
110106 }
111107
112108
113-
114-@Callable(i)
115-func setManager (pendingManagerPublicKey) = {
116- let checkCaller = mustManager(i)
117- if ((checkCaller == checkCaller))
118- then {
119- let checkManagerPublicKey = fromBase58String(pendingManagerPublicKey)
120- if ((checkManagerPublicKey == checkManagerPublicKey))
121- then [StringEntry(keyPendingManagerPublicKey(), pendingManagerPublicKey)]
122- else throw("Strict value is not equal to itself.")
123- }
124- else throw("Strict value is not equal to itself.")
125- }
126-
127-
128-
129-@Callable(i)
130-func confirmManager () = {
131- let pm = pendingManagerPublicKeyOrUnit()
132- let hasPM = if (isDefined(pm))
133- then true
134- else throw("No pending manager")
135- if ((hasPM == hasPM))
136- then {
137- let checkPM = if ((i.callerPublicKey == value(pm)))
138- then true
139- else throw("You are not pending manager")
140- if ((checkPM == checkPM))
141- then [StringEntry(keyManagerPublicKey(), toBase58String(value(pm))), DeleteEntry(keyPendingManagerPublicKey())]
142- else throw("Strict value is not equal to itself.")
143- }
144- else throw("Strict value is not equal to itself.")
145- }
146-
147-
148109 @Verifier(tx)
149110 func verify () = {
150111 let targetPublicKey = match managerPublicKeyOrUnit() {
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func keyInvestWxXtnDelay () = "%__investWxXtnDelay"
55
66
77 func keyInvestWxXtnAmountXtn () = "%__investWxXtnAmountXtn"
88
99
1010 func keyWxXtnPool () = "%__wxXtnPool"
1111
1212
1313 func keyXtnAssetId () = "%__xtnAssetId"
1414
1515
1616 func keyWxXtnLp () = "%__wxXtnLp"
1717
1818
1919 func keyLpToAddress () = "%__lpToAddress"
2020
2121
2222 func keyManagerPublicKey () = "%s__managerPublicKey"
2323
2424
25-func keyPendingManagerPublicKey () = "%s__pendingManagerPublicKey"
25+func keyManagerVaultAddress () = "%s__managerVaultAddress"
2626
2727
2828 func keyInvestWxXtnLastHeight () = "%__investWxXtnLastHeight"
2929
3030
31-func managerPublicKeyOrUnit () = match getString(keyManagerPublicKey()) {
32- case s: String =>
33- fromBase58String(s)
34- case _: Unit =>
35- unit
36- case _ =>
37- throw("Match error")
38-}
31+func getManagerAddressOrFail () = addressFromStringValue(getStringValue(keyManagerVaultAddress()))
3932
4033
41-func pendingManagerPublicKeyOrUnit () = match getString(keyPendingManagerPublicKey()) {
42- case s: String =>
43- fromBase58String(s)
44- case _: Unit =>
45- unit
46- case _ =>
47- throw("Match error")
48-}
34+func managerPublicKeyOrUnit () = {
35+ let managerVaultAddress = getManagerAddressOrFail()
36+ match getString(managerVaultAddress, keyManagerPublicKey()) {
37+ case s: String =>
38+ fromBase58String(s)
39+ case _: Unit =>
40+ unit
41+ case _ =>
42+ throw("Match error")
43+ }
44+ }
4945
5046
5147 func throwErr (msg) = throw(makeString(["investor.ride:", msg], " "))
5248
5349
5450 func mustManager (i) = {
5551 let pd = throwErr("permission denied")
5652 match managerPublicKeyOrUnit() {
5753 case pk: ByteVector =>
5854 if ((i.callerPublicKey == pk))
5955 then true
6056 else pd
6157 case _: Unit =>
6258 if ((i.caller == this))
6359 then true
6460 else pd
6561 case _ =>
6662 throw("Match error")
6763 }
6864 }
6965
7066
7167 @Callable(i)
7268 func investWxXtn () = {
7369 let checkCaller = mustManager(i)
7470 if ((checkCaller == checkCaller))
7571 then {
7672 let lastCall = valueOrElse(getInteger(keyInvestWxXtnLastHeight()), 0)
7773 let delay = getIntegerValue(keyInvestWxXtnDelay())
7874 let checks = [if ((height > (lastCall + delay)))
7975 then true
8076 else throwErr("wait to invest")]
8177 if ((checks == checks))
8278 then {
8379 let lpAssetId = fromBase58String(getStringValue(keyWxXtnLp()))
8480 let lpBefore = assetBalance(this, lpAssetId)
8581 if ((lpBefore == lpBefore))
8682 then {
8783 let inv = invoke(addressFromStringValue(getStringValue(keyWxXtnPool())), "putOneTkn", [0, false], [AttachedPayment(fromBase58String(getStringValue(keyXtnAssetId())), getIntegerValue(keyInvestWxXtnAmountXtn()))])
8884 if ((inv == inv))
8985 then {
9086 let lpAfter = assetBalance(this, lpAssetId)
9187 if ((lpAfter == lpAfter))
9288 then {
9389 let lpGot = (lpAfter - lpBefore)
9490 let notZeroLp = if ((lpGot == 0))
9591 then throwErr("lp to get is zero")
9692 else unit
9793 if ((notZeroLp == notZeroLp))
9894 then [IntegerEntry(keyInvestWxXtnLastHeight(), height), ScriptTransfer(addressFromStringValue(getStringValue(keyLpToAddress())), lpGot, lpAssetId)]
9995 else throw("Strict value is not equal to itself.")
10096 }
10197 else throw("Strict value is not equal to itself.")
10298 }
10399 else throw("Strict value is not equal to itself.")
104100 }
105101 else throw("Strict value is not equal to itself.")
106102 }
107103 else throw("Strict value is not equal to itself.")
108104 }
109105 else throw("Strict value is not equal to itself.")
110106 }
111107
112108
113-
114-@Callable(i)
115-func setManager (pendingManagerPublicKey) = {
116- let checkCaller = mustManager(i)
117- if ((checkCaller == checkCaller))
118- then {
119- let checkManagerPublicKey = fromBase58String(pendingManagerPublicKey)
120- if ((checkManagerPublicKey == checkManagerPublicKey))
121- then [StringEntry(keyPendingManagerPublicKey(), pendingManagerPublicKey)]
122- else throw("Strict value is not equal to itself.")
123- }
124- else throw("Strict value is not equal to itself.")
125- }
126-
127-
128-
129-@Callable(i)
130-func confirmManager () = {
131- let pm = pendingManagerPublicKeyOrUnit()
132- let hasPM = if (isDefined(pm))
133- then true
134- else throw("No pending manager")
135- if ((hasPM == hasPM))
136- then {
137- let checkPM = if ((i.callerPublicKey == value(pm)))
138- then true
139- else throw("You are not pending manager")
140- if ((checkPM == checkPM))
141- then [StringEntry(keyManagerPublicKey(), toBase58String(value(pm))), DeleteEntry(keyPendingManagerPublicKey())]
142- else throw("Strict value is not equal to itself.")
143- }
144- else throw("Strict value is not equal to itself.")
145- }
146-
147-
148109 @Verifier(tx)
149110 func verify () = {
150111 let targetPublicKey = match managerPublicKeyOrUnit() {
151112 case pk: ByteVector =>
152113 pk
153114 case _: Unit =>
154115 tx.senderPublicKey
155116 case _ =>
156117 throw("Match error")
157118 }
158119 sigVerify(tx.bodyBytes, tx.proofs[0], targetPublicKey)
159120 }
160121

github/deemru/w8io/873ac7e 
50.56 ms