tx · GfgPHUR3wZuqXyLsEhYdoCgeVkgFiDVaUzgE482yuX3H

3P841c8NzAnFHMzBjQhsnYHnevTu5X2CtpT:  -0.01300000 Waves

2023.03.21 17:33 [3565494] smart account 3P841c8NzAnFHMzBjQhsnYHnevTu5X2CtpT > SELF 0.00000000 Waves

{ "type": 13, "id": "GfgPHUR3wZuqXyLsEhYdoCgeVkgFiDVaUzgE482yuX3H", "fee": 1300000, "feeAssetId": null, "timestamp": 1679409295048, "version": 2, "chainId": 87, "sender": "3P841c8NzAnFHMzBjQhsnYHnevTu5X2CtpT", "senderPublicKey": "G83ncUgXtNY6aBquKgqmPJeNujm473h3XVcDtXZVhP1Z", "proofs": [ "2CcUa63RfecK1vZaTAkpNQcs3CdqwU7zVMAoegrJrsXeotYnKpmUCKz7pCkUsU9bvtNd1tn1GSja1PhMvcktTXx2" ], "script": "base64:BgILCAISABIDCgEIEgANARNrZXlJbnZlc3RXeFh0bkRlbGF5AAITJV9faW52ZXN0V3hYdG5EZWxheQEXa2V5SW52ZXN0V3hYdG5BbW91bnRYdG4AAhclX19pbnZlc3RXeFh0bkFtb3VudFh0bgEMa2V5V3hYdG5Qb29sAAIMJV9fd3hYdG5Qb29sAQ1rZXlYdG5Bc3NldElkAAINJV9feHRuQXNzZXRJZAEKa2V5V3hYdG5McAACCiVfX3d4WHRuTHABDmtleUxwVG9BZGRyZXNzAAIOJV9fbHBUb0FkZHJlc3MBE2tleU1hbmFnZXJQdWJsaWNLZXkAAhQlc19fbWFuYWdlclB1YmxpY0tleQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBGGtleUludmVzdFd4WHRuTGFzdEhlaWdodAACGCVfX2ludmVzdFd4WHRuTGFzdEhlaWdodAEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAAEByRtYXRjaDAJAKIIAQkBE2tleU1hbmFnZXJQdWJsaWNLZXkAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgEdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQABAckbWF0Y2gwCQCiCAEJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQh0aHJvd0VycgEDbXNnCQACAQkAuQkCCQDMCAICDmludmVzdG9yLnJpZGU6CQDMCAIFA21zZwUDbmlsAgEgAQttdXN0TWFuYWdlcgEBaQQCcGQJAQh0aHJvd0VycgECEXBlcm1pc3Npb24gZGVuaWVkBAckbWF0Y2gwCQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDADCQAAAggFAWkPY2FsbGVyUHVibGljS2V5BQJwawYFAnBkAwkAAQIFByRtYXRjaDACBFVuaXQDCQAAAggFAWkGY2FsbGVyBQR0aGlzBgUCcGQJAAIBAgtNYXRjaCBlcnJvcgMBaQELaW52ZXN0V3hYdG4ABAtjaGVja0NhbGxlcgkBC211c3RNYW5hZ2VyAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIECGxhc3RDYWxsCQELdmFsdWVPckVsc2UCCQCfCAEJARhrZXlJbnZlc3RXeFh0bkxhc3RIZWlnaHQAAAAEBWRlbGF5CQERQGV4dHJOYXRpdmUoMTA1NSkBCQETa2V5SW52ZXN0V3hYdG5EZWxheQAEBmNoZWNrcwkAzAgCAwkAZgIFBmhlaWdodAkAZAIFCGxhc3RDYWxsBQVkZWxheQYJAQh0aHJvd0VycgECDndhaXQgdG8gaW52ZXN0BQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MECWxwQXNzZXRJZAkA2QQBCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEKa2V5V3hYdG5McAAECGxwQmVmb3JlCQDwBwIFBHRoaXMFCWxwQXNzZXRJZAMJAAACBQhscEJlZm9yZQUIbHBCZWZvcmUEA2ludgkA/AcECQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEMa2V5V3hYdG5Qb29sAAIJcHV0T25lVGtuCQDMCAIAAAkAzAgCBwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAQ1rZXlYdG5Bc3NldElkAAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBF2tleUludmVzdFd4WHRuQW1vdW50WHRuAAUDbmlsAwkAAAIFA2ludgUDaW52BAdscEFmdGVyCQDwBwIFBHRoaXMFCWxwQXNzZXRJZAMJAAACBQdscEFmdGVyBQdscEFmdGVyBAVscEdvdAkAZQIFB2xwQWZ0ZXIFCGxwQmVmb3JlBAlub3RaZXJvTHADCQAAAgUFbHBHb3QAAAkBCHRocm93RXJyAQIRbHAgdG8gZ2V0IGlzIHplcm8FBHVuaXQDCQAAAgUJbm90WmVyb0xwBQlub3RaZXJvTHAJAMwIAgkBDEludGVnZXJFbnRyeQIJARhrZXlJbnZlc3RXeFh0bkxhc3RIZWlnaHQABQZoZWlnaHQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTgpAQkBDmtleUxwVG9BZGRyZXNzAAUFbHBHb3QFCWxwQXNzZXRJZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCnNldE1hbmFnZXIBF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BAtjaGVja0NhbGxlcgkBC211c3RNYW5hZ2VyAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIEFWNoZWNrTWFuYWdlclB1YmxpY0tleQkA2QQBBRdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQMJAAACBRVjaGVja01hbmFnZXJQdWJsaWNLZXkFFWNoZWNrTWFuYWdlclB1YmxpY0tleQkAzAgCCQELU3RyaW5nRW50cnkCCQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkABRdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDmNvbmZpcm1NYW5hZ2VyAAQCcG0JAR1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdAAEBWhhc1BNAwkBCWlzRGVmaW5lZAEFAnBtBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQVoYXNQTQUFaGFzUE0EB2NoZWNrUE0DCQAAAggFAWkPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJwbQYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUHY2hlY2tQTQUHY2hlY2tQTQkAzAgCCQELU3RyaW5nRW50cnkCCQETa2V5TWFuYWdlclB1YmxpY0tleQAJANgEAQkBBXZhbHVlAQUCcG0JAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAQPdGFyZ2V0UHVibGljS2V5BAckbWF0Y2gwCQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDAFAnBrAwkAAQIFByRtYXRjaDACBFVuaXQIBQJ0eA9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUPdGFyZ2V0UHVibGljS2V5K17qbA==", "height": 3565494, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Bq1dPDSUrRhXTg6Kuxo9zvDW5P546DPRrYQFz2Lgf4xB Next: HaqDNetMFreRWD3LaXtJrfpjbRdvRUgJrkvWWUTwqRVy Diff:
OldNewDifferences
7070
7171 @Callable(i)
7272 func investWxXtn () = {
73- let lastCall = valueOrElse(getInteger(keyInvestWxXtnLastHeight()), 0)
74- let delay = getIntegerValue(keyInvestWxXtnDelay())
75- let checks = [if ((height > (lastCall + delay)))
76- then true
77- else throwErr("wait to invest")]
78- if ((checks == checks))
73+ let checkCaller = mustManager(i)
74+ if ((checkCaller == checkCaller))
7975 then {
80- let lpAssetId = fromBase58String(getStringValue(keyWxXtnLp()))
81- let lpBefore = assetBalance(this, lpAssetId)
82- if ((lpBefore == lpBefore))
76+ let lastCall = valueOrElse(getInteger(keyInvestWxXtnLastHeight()), 0)
77+ let delay = getIntegerValue(keyInvestWxXtnDelay())
78+ let checks = [if ((height > (lastCall + delay)))
79+ then true
80+ else throwErr("wait to invest")]
81+ if ((checks == checks))
8382 then {
84- let inv = invoke(addressFromStringValue(getStringValue(keyWxXtnPool())), "putOneTkn", [0, false], [AttachedPayment(fromBase58String(getStringValue(keyXtnAssetId())), getIntegerValue(keyInvestWxXtnAmountXtn()))])
85- if ((inv == inv))
83+ let lpAssetId = fromBase58String(getStringValue(keyWxXtnLp()))
84+ let lpBefore = assetBalance(this, lpAssetId)
85+ if ((lpBefore == lpBefore))
8686 then {
87- let lpAfter = assetBalance(this, lpAssetId)
88- if ((lpAfter == lpAfter))
87+ let inv = invoke(addressFromStringValue(getStringValue(keyWxXtnPool())), "putOneTkn", [0, false], [AttachedPayment(fromBase58String(getStringValue(keyXtnAssetId())), getIntegerValue(keyInvestWxXtnAmountXtn()))])
88+ if ((inv == inv))
8989 then {
90- let lpGot = (lpAfter - lpBefore)
91- let notZeroLp = if ((lpGot == 0))
92- then throwErr("lp to get is zero")
93- else unit
94- if ((notZeroLp == notZeroLp))
95- then [IntegerEntry(keyInvestWxXtnLastHeight(), height), ScriptTransfer(addressFromStringValue(getStringValue(keyLpToAddress())), lpGot, lpAssetId)]
90+ let lpAfter = assetBalance(this, lpAssetId)
91+ if ((lpAfter == lpAfter))
92+ then {
93+ let lpGot = (lpAfter - lpBefore)
94+ let notZeroLp = if ((lpGot == 0))
95+ then throwErr("lp to get is zero")
96+ else unit
97+ if ((notZeroLp == notZeroLp))
98+ then [IntegerEntry(keyInvestWxXtnLastHeight(), height), ScriptTransfer(addressFromStringValue(getStringValue(keyLpToAddress())), lpGot, lpAssetId)]
99+ else throw("Strict value is not equal to itself.")
100+ }
96101 else throw("Strict value is not equal to itself.")
97102 }
98103 else throw("Strict value is not equal to itself.")
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
2525 func keyPendingManagerPublicKey () = "%s__pendingManagerPublicKey"
2626
2727
2828 func keyInvestWxXtnLastHeight () = "%__investWxXtnLastHeight"
2929
3030
3131 func managerPublicKeyOrUnit () = match getString(keyManagerPublicKey()) {
3232 case s: String =>
3333 fromBase58String(s)
3434 case _: Unit =>
3535 unit
3636 case _ =>
3737 throw("Match error")
3838 }
3939
4040
4141 func pendingManagerPublicKeyOrUnit () = match getString(keyPendingManagerPublicKey()) {
4242 case s: String =>
4343 fromBase58String(s)
4444 case _: Unit =>
4545 unit
4646 case _ =>
4747 throw("Match error")
4848 }
4949
5050
5151 func throwErr (msg) = throw(makeString(["investor.ride:", msg], " "))
5252
5353
5454 func mustManager (i) = {
5555 let pd = throwErr("permission denied")
5656 match managerPublicKeyOrUnit() {
5757 case pk: ByteVector =>
5858 if ((i.callerPublicKey == pk))
5959 then true
6060 else pd
6161 case _: Unit =>
6262 if ((i.caller == this))
6363 then true
6464 else pd
6565 case _ =>
6666 throw("Match error")
6767 }
6868 }
6969
7070
7171 @Callable(i)
7272 func investWxXtn () = {
73- let lastCall = valueOrElse(getInteger(keyInvestWxXtnLastHeight()), 0)
74- let delay = getIntegerValue(keyInvestWxXtnDelay())
75- let checks = [if ((height > (lastCall + delay)))
76- then true
77- else throwErr("wait to invest")]
78- if ((checks == checks))
73+ let checkCaller = mustManager(i)
74+ if ((checkCaller == checkCaller))
7975 then {
80- let lpAssetId = fromBase58String(getStringValue(keyWxXtnLp()))
81- let lpBefore = assetBalance(this, lpAssetId)
82- if ((lpBefore == lpBefore))
76+ let lastCall = valueOrElse(getInteger(keyInvestWxXtnLastHeight()), 0)
77+ let delay = getIntegerValue(keyInvestWxXtnDelay())
78+ let checks = [if ((height > (lastCall + delay)))
79+ then true
80+ else throwErr("wait to invest")]
81+ if ((checks == checks))
8382 then {
84- let inv = invoke(addressFromStringValue(getStringValue(keyWxXtnPool())), "putOneTkn", [0, false], [AttachedPayment(fromBase58String(getStringValue(keyXtnAssetId())), getIntegerValue(keyInvestWxXtnAmountXtn()))])
85- if ((inv == inv))
83+ let lpAssetId = fromBase58String(getStringValue(keyWxXtnLp()))
84+ let lpBefore = assetBalance(this, lpAssetId)
85+ if ((lpBefore == lpBefore))
8686 then {
87- let lpAfter = assetBalance(this, lpAssetId)
88- if ((lpAfter == lpAfter))
87+ let inv = invoke(addressFromStringValue(getStringValue(keyWxXtnPool())), "putOneTkn", [0, false], [AttachedPayment(fromBase58String(getStringValue(keyXtnAssetId())), getIntegerValue(keyInvestWxXtnAmountXtn()))])
88+ if ((inv == inv))
8989 then {
90- let lpGot = (lpAfter - lpBefore)
91- let notZeroLp = if ((lpGot == 0))
92- then throwErr("lp to get is zero")
93- else unit
94- if ((notZeroLp == notZeroLp))
95- then [IntegerEntry(keyInvestWxXtnLastHeight(), height), ScriptTransfer(addressFromStringValue(getStringValue(keyLpToAddress())), lpGot, lpAssetId)]
90+ let lpAfter = assetBalance(this, lpAssetId)
91+ if ((lpAfter == lpAfter))
92+ then {
93+ let lpGot = (lpAfter - lpBefore)
94+ let notZeroLp = if ((lpGot == 0))
95+ then throwErr("lp to get is zero")
96+ else unit
97+ if ((notZeroLp == notZeroLp))
98+ then [IntegerEntry(keyInvestWxXtnLastHeight(), height), ScriptTransfer(addressFromStringValue(getStringValue(keyLpToAddress())), lpGot, lpAssetId)]
99+ else throw("Strict value is not equal to itself.")
100+ }
96101 else throw("Strict value is not equal to itself.")
97102 }
98103 else throw("Strict value is not equal to itself.")
99104 }
100105 else throw("Strict value is not equal to itself.")
101106 }
102107 else throw("Strict value is not equal to itself.")
103108 }
104109 else throw("Strict value is not equal to itself.")
105110 }
106111
107112
108113
109114 @Callable(i)
110115 func setManager (pendingManagerPublicKey) = {
111116 let checkCaller = mustManager(i)
112117 if ((checkCaller == checkCaller))
113118 then {
114119 let checkManagerPublicKey = fromBase58String(pendingManagerPublicKey)
115120 if ((checkManagerPublicKey == checkManagerPublicKey))
116121 then [StringEntry(keyPendingManagerPublicKey(), pendingManagerPublicKey)]
117122 else throw("Strict value is not equal to itself.")
118123 }
119124 else throw("Strict value is not equal to itself.")
120125 }
121126
122127
123128
124129 @Callable(i)
125130 func confirmManager () = {
126131 let pm = pendingManagerPublicKeyOrUnit()
127132 let hasPM = if (isDefined(pm))
128133 then true
129134 else throw("No pending manager")
130135 if ((hasPM == hasPM))
131136 then {
132137 let checkPM = if ((i.callerPublicKey == value(pm)))
133138 then true
134139 else throw("You are not pending manager")
135140 if ((checkPM == checkPM))
136141 then [StringEntry(keyManagerPublicKey(), toBase58String(value(pm))), DeleteEntry(keyPendingManagerPublicKey())]
137142 else throw("Strict value is not equal to itself.")
138143 }
139144 else throw("Strict value is not equal to itself.")
140145 }
141146
142147
143148 @Verifier(tx)
144149 func verify () = {
145150 let targetPublicKey = match managerPublicKeyOrUnit() {
146151 case pk: ByteVector =>
147152 pk
148153 case _: Unit =>
149154 tx.senderPublicKey
150155 case _ =>
151156 throw("Match error")
152157 }
153158 sigVerify(tx.bodyBytes, tx.proofs[0], targetPublicKey)
154159 }
155160

github/deemru/w8io/6500d08 
38.83 ms