tx · NE2P4uUgGGCHLjRNNrpprfmqqAxYkBwFCNaLdUrakda

3N3g7W8FPoQ7g5EadbAD2GVjrZT5RWpHZZh:  -0.01600000 Waves

2022.11.01 13:52 [2297955] smart account 3N3g7W8FPoQ7g5EadbAD2GVjrZT5RWpHZZh > SELF 0.00000000 Waves

{ "type": 13, "id": "NE2P4uUgGGCHLjRNNrpprfmqqAxYkBwFCNaLdUrakda", "fee": 1600000, "feeAssetId": null, "timestamp": 1667299975043, "version": 1, "sender": "3N3g7W8FPoQ7g5EadbAD2GVjrZT5RWpHZZh", "senderPublicKey": "Ap7CkWd6fzBU34kGo4GJJzC5q4qWXuLVunzE25PchdGS", "proofs": [ "shg2tKrwQPKv2m3M1XLGQPrt6ZG6Eyz3NdpKHpdmj4L4eg9rXG9xzt6hYj45svwqyMt9iGb5sWRsQ7vP9QL8fY6" ], "script": "base64:AAIFAAAAAAAABrcIAhIICgYICBgBCAESABIICgYICAgICAgSAwoBGBIDCgEIEgASABIECgIICCIDU0VQIgx3YXZlc0Fzc2V0SWQiEWludmFsaWRQcmljZUFzc2V0Igh0aHJvd0VyciIDbXNnIgd0aHJvd1BEIhR0aHJvd0NyZWF0ZU5vdENhbGxlZCIRdGhyb3dZb3VOb3RJc3N1ZXIiD3Rocm93UG9vbEV4aXN0cyIVdGhyb3dBc3NldE5vdFZlcmlmaWVkIhZ0aHJvd0ludmFsaWRQcmljZUFzc2V0IhR0aHJvd0ludmFsaWRGZWVBc3NldCIXdGhyb3dJbnZhbGlkQW1vdW50QXNzZXQiEnRocm93SW52YWxpZFN0YXR1cyIfdGhyb3dDYW5BY3RpdmF0ZU9ubHlQZW5kaW5nUG9vbCIddGhyb3dGYWN0b3J5UmV0dXJuZWROb3RTdHJpbmciHHRocm93SW52YWxpZFByaWNlQXNzZXRBbW91bnQiD3Rocm93SW52YWxpZEZlZSITa2V5TWFuYWdlclB1YmxpY0tleSIaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiD2tleUFkbWluUHViS2V5cyIJa2V5U3RhdHVzIg1hbW91bnRBc3NldElkIgxwcmljZUFzc2V0SWQiEmtleUZhY3RvcnlDb250cmFjdCIWa2V5QXNzZXRzU3RvcmVDb250cmFjdCIJa2V5U3VmZml4IgxrZXlMYXN0SW5kZXgiC2luZGV4U3VmZml4Ig1zdGF0dXNQZW5kaW5nIg5zdGF0dXNEZWNsaW5lZCIMc3RhdHVzQWN0aXZlIghzdGF0dXNlcyIPa2V5Q3JlYXRlQ2FsbGVkIg9rZXlDcmVhdGVDYWxsZXIiFGtleUFtb3VudEFzc2V0QW1vdW50IhNrZXlQcmljZUFzc2V0QW1vdW50IglrZXlIZWlnaHQiDWtleUZlZUFzc2V0SWQiDGtleUZlZUFtb3VudCIXa2V5QW1vdW50QXNzZXRNaW5BbW91bnQiF2tleVByaWNlQXNzZXRzTWluQW1vdW50Ig5rZXlQcmljZUFzc2V0cyIPZ2V0U3RyaW5nT3JGYWlsIgNrZXkiEnN0cmluZ09wdGlvblRvTGlzdCIMc3RyaW5nT3JVbml0IgckbWF0Y2gwIgFzIg9mYWN0b3J5Q29udHJhY3QiDmlzQ3JlYXRlQ2FsbGVkIhBtdXN0Q3JlYXRlQ2FsbGVkIhZtYW5hZ2VyUHVibGljS2V5T3JVbml0Ih1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdCIJaXNNYW5hZ2VyIgFpIgJwayILbXVzdE1hbmFnZXIiCW11c3RBZG1pbiIIYWRtaW5QS3MiCmlzVmVyaWZpZWQiB2Fzc2V0SWQiDGdldElkQW5kSW5mbyIHcGF5bWVudCICaWQiBGluZm8iC3ZhbGlkU3RhdHVzIgZzdGF0dXMiEGZhY3RvcnlWMkFkZHJlc3MiEmFzc2V0c1N0b3JlQWRkcmVzcyIUcHJpY2VBc3NldHNNaW5BbW91bnQiFGFtb3VudEFzc2V0TWluQW1vdW50IgpmZWVBc3NldElkIglmZWVBbW91bnQiC2NoZWNrQ2FsbGVyIhJhbW91bnRBc3NldFBheW1lbnQiEXByaWNlQXNzZXRQYXltZW50Ig9mZWVBc3NldFBheW1lbnQiCyR0MDY0OTI2NTY0Ig9hbW91bnRBc3NldEluZm8iCyR0MDY1Njc2NjM2Ig5wcmljZUFzc2V0SW5mbyILJHQwNjYzOTY3MDIiDGZlZUFzc2V0SW5mbyIPcHJpY2VBc3NldHNMaXN0IhptYW5hZ2VyUHJpY2VBc3NldE1pbkFtb3VudCITcHJpY2VBc3NldE1pbkFtb3VudCIQcHJpY2VBc3NldHNJbmRleCIJbGFzdEluZGV4IghjdXJJbmRleCIGY2hlY2tzIgtwb29sQWRkcmVzcyIRYW1vdW50QXNzZXRUaWNrZXIiEHByaWNlQXNzZXRUaWNrZXIiBGxvZ28iEmFjdGl2YXRlTmV3UG9vbEludiIJbHBBc3NldElkIgliZWZvcmVQdXQiA3B1dCIIYWZ0ZXJQdXQiBHVzZXIiDGFkbWluUHViS2V5cyIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiFWNoZWNrTWFuYWdlclB1YmxpY0tleSICcG0iBWhhc1BNIgdjaGVja1BNIgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXkAAAA1AAAAAAFhAgAAAAJfXwAAAAABYgIAAAAFV0FWRVMAAAAAAWMCAAAAE0ludmFsaWQgcHJpY2UgYXNzZXQBAAAAAWQA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", "chainId": 84, "height": 2297955, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2B9UDNC2K9mVWMyHhKCPEJCqm4J7nsmf4vSfBXASrGre Next: Cdk7XcRrAf9juYt4Zs8evbcheNVAfAqTCdjeNHidQatG Diff:
OldNewDifferences
9696
9797
9898 func keyHeight (amountAssetId,priceAssetId) = makeString(["%s%s%s", "height", amountAssetId, priceAssetId], SEP)
99-
100-
101-func keyActivationHeight (amountAssetId,priceAssetId) = makeString(["%s%s%s", "activationHeight", amountAssetId, priceAssetId], SEP)
10299
103100
104101 func keyFeeAssetId () = makeString(["%s", "feeAssetId"], SEP)
216213 let amountAssetPayment = value(i.payments[0])
217214 let priceAssetPayment = value(i.payments[1])
218215 let feeAssetPayment = value(i.payments[2])
219- let $t066406712 = getIdAndInfo(amountAssetPayment)
220- let amountAssetId = $t066406712._1
221- let amountAssetInfo = $t066406712._2
222- let $t067156784 = getIdAndInfo(priceAssetPayment)
223- let priceAssetId = $t067156784._1
224- let priceAssetInfo = $t067156784._2
225- let $t067876850 = getIdAndInfo(feeAssetPayment)
226- let feeAssetId = $t067876850._1
227- let feeAssetInfo = $t067876850._2
216+ let $t064926564 = getIdAndInfo(amountAssetPayment)
217+ let amountAssetId = $t064926564._1
218+ let amountAssetInfo = $t064926564._2
219+ let $t065676636 = getIdAndInfo(priceAssetPayment)
220+ let priceAssetId = $t065676636._1
221+ let priceAssetInfo = $t065676636._2
222+ let $t066396702 = getIdAndInfo(feeAssetPayment)
223+ let feeAssetId = $t066396702._1
224+ let feeAssetInfo = $t066396702._2
228225 let priceAssetsList = stringOptionToList(getString(factoryContract, keyPriceAssets()))
229226 let managerPriceAssetMinAmount = 1
230227 let priceAssetMinAmount = if (isManager(i))
293290 if ((afterPut == afterPut))
294291 then {
295292 let user = value(addressFromString(value(getString(keyCreateCaller(amountAssetId, priceAssetId)))))
296-[StringEntry(keyStatus(amountAssetId, priceAssetId), statusActive), IntegerEntry(keyActivationHeight(amountAssetId, priceAssetId), height), ScriptTransfer(user, (afterPut - beforePut), fromBase58String(lpAssetId))]
293+[StringEntry(keyStatus(amountAssetId, priceAssetId), statusActive), ScriptTransfer(user, (afterPut - beforePut), fromBase58String(lpAssetId))]
297294 }
298295 else throw("Strict value is not equal to itself.")
299296 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let SEP = "__"
55
66 let wavesAssetId = "WAVES"
77
88 let invalidPriceAsset = "Invalid price asset"
99
1010 func throwErr (msg) = throw(makeString(["user_pools.ride:", msg], " "))
1111
1212
1313 func throwPD () = throwErr("Permission denied")
1414
1515
1616 func throwCreateNotCalled () = throwErr("Create is not called for assets pair")
1717
1818
1919 func throwYouNotIssuer () = throwErr("You are not amountAsset issuer")
2020
2121
2222 func throwPoolExists () = throwErr("Pool with such assets already exists")
2323
2424
2525 func throwAssetNotVerified () = throwErr("Asset is not verified")
2626
2727
2828 func throwInvalidPriceAsset () = throwErr(invalidPriceAsset)
2929
3030
3131 func throwInvalidFeeAsset () = throwErr("Invalid fee asset")
3232
3333
3434 func throwInvalidAmountAsset () = throwErr("Invalid amount asset attached")
3535
3636
3737 func throwInvalidStatus () = throwErr("Invalid status")
3838
3939
4040 func throwCanActivateOnlyPendingPool () = throwErr("Can activate pool only in 'pending' status")
4141
4242
4343 func throwFactoryReturnedNotString () = throwErr("FactoryV2 returned not string")
4444
4545
4646 func throwInvalidPriceAssetAmount () = throwErr("invalid price asset amount")
4747
4848
4949 func throwInvalidFee () = throwErr("invalid fee")
5050
5151
5252 func keyManagerPublicKey () = makeString(["%s", "managerPublicKey"], SEP)
5353
5454
5555 func keyPendingManagerPublicKey () = makeString(["%s", "pendingManagerPublicKey"], SEP)
5656
5757
5858 func keyAdminPubKeys () = makeString(["%s", "adminPubKeys"], SEP)
5959
6060
6161 func keyStatus (amountAssetId,priceAssetId) = makeString(["%s%s%s", "status", amountAssetId, priceAssetId], SEP)
6262
6363
6464 func keyFactoryContract () = makeString(["%s", "factoryContract"], SEP)
6565
6666
6767 func keyAssetsStoreContract () = makeString(["%s", "assetsStoreContract"], SEP)
6868
6969
7070 func keySuffix (amountAssetId,priceAssetId) = makeString(["%s%s%s", "suffix", amountAssetId, priceAssetId], SEP)
7171
7272
7373 func keyLastIndex () = makeString(["%s", "lastIndex"], SEP)
7474
7575
7676 let indexSuffix = "u"
7777
7878 let statusPending = "pending"
7979
8080 let statusDeclined = "declined"
8181
8282 let statusActive = "active"
8383
8484 let statuses = [statusPending, statusDeclined, statusActive]
8585
8686 func keyCreateCalled (amountAssetId,priceAssetId) = makeString(["%s%s%s", "createCalled", amountAssetId, priceAssetId], SEP)
8787
8888
8989 func keyCreateCaller (amountAssetId,priceAssetId) = makeString(["%s%s%s", "createCaller", amountAssetId, priceAssetId], SEP)
9090
9191
9292 func keyAmountAssetAmount (amountAssetId,priceAssetId) = makeString(["%s%s%s", "amountAssetAmount", amountAssetId, priceAssetId], SEP)
9393
9494
9595 func keyPriceAssetAmount (amountAssetId,priceAssetId) = makeString(["%s%s%s", "priceAssetAmount", amountAssetId, priceAssetId], SEP)
9696
9797
9898 func keyHeight (amountAssetId,priceAssetId) = makeString(["%s%s%s", "height", amountAssetId, priceAssetId], SEP)
99-
100-
101-func keyActivationHeight (amountAssetId,priceAssetId) = makeString(["%s%s%s", "activationHeight", amountAssetId, priceAssetId], SEP)
10299
103100
104101 func keyFeeAssetId () = makeString(["%s", "feeAssetId"], SEP)
105102
106103
107104 func keyFeeAmount () = makeString(["%s", "feeAmount"], SEP)
108105
109106
110107 func keyAmountAssetMinAmount () = makeString(["%s", "amountAssetMinAmount"], SEP)
111108
112109
113110 func keyPriceAssetsMinAmount () = makeString(["%s", "priceAssetsMinAmount"], SEP)
114111
115112
116113 func keyPriceAssets () = makeString(["%s", "priceAssets"], SEP)
117114
118115
119116 func getStringOrFail (key) = valueOrErrorMessage(getString(this, key), (key + " is not defined"))
120117
121118
122119 func stringOptionToList (stringOrUnit) = match stringOrUnit {
123120 case s: String =>
124121 if ((size(s) == 0))
125122 then nil
126123 else split(s, SEP)
127124 case _: Unit =>
128125 nil
129126 case _ =>
130127 throw("Match error")
131128 }
132129
133130
134131 let factoryContract = addressFromStringValue(getStringOrFail(keyFactoryContract()))
135132
136133 func isCreateCalled (amountAssetId,priceAssetId) = valueOrElse(getBoolean(keyCreateCalled(amountAssetId, priceAssetId)), false)
137134
138135
139136 func mustCreateCalled (amountAssetId,priceAssetId) = if (isCreateCalled(amountAssetId, priceAssetId))
140137 then true
141138 else throwCreateNotCalled()
142139
143140
144141 func managerPublicKeyOrUnit () = match getString(keyManagerPublicKey()) {
145142 case s: String =>
146143 fromBase58String(s)
147144 case _: Unit =>
148145 unit
149146 case _ =>
150147 throw("Match error")
151148 }
152149
153150
154151 func pendingManagerPublicKeyOrUnit () = match getString(keyPendingManagerPublicKey()) {
155152 case s: String =>
156153 fromBase58String(s)
157154 case _: Unit =>
158155 unit
159156 case _ =>
160157 throw("Match error")
161158 }
162159
163160
164161 func isManager (i) = match managerPublicKeyOrUnit() {
165162 case pk: ByteVector =>
166163 (i.callerPublicKey == pk)
167164 case _: Unit =>
168165 (i.caller == this)
169166 case _ =>
170167 throw("Match error")
171168 }
172169
173170
174171 func mustManager (i) = if (isManager(i))
175172 then true
176173 else throwPD()
177174
178175
179176 func mustAdmin (i) = {
180177 let adminPKs = stringOptionToList(getString(keyAdminPubKeys()))
181178 if (containsElement(adminPKs, toBase58String(i.callerPublicKey)))
182179 then true
183180 else mustManager(i)
184181 }
185182
186183
187184 func isVerified (assetId) = (valueOrElse(getInteger(addressFromStringValue(getStringOrFail(keyAssetsStoreContract())), (("status_<" + assetId) + ">")), 0) == 2)
188185
189186
190187 func getIdAndInfo (payment) = match payment.assetId {
191188 case id: ByteVector =>
192189 let info = value(assetInfo(id))
193190 $Tuple2(toBase58String(id), info)
194191 case _: Unit =>
195192 $Tuple2(wavesAssetId, unit)
196193 case _ =>
197194 throw("Match error")
198195 }
199196
200197
201198 func validStatus (status) = containsElement(statuses, status)
202199
203200
204201 @Callable(i)
205202 func constructor (factoryV2Address,assetsStoreAddress,priceAssetsMinAmount,amountAssetMinAmount,feeAssetId,feeAmount) = {
206203 let checkCaller = mustManager(i)
207204 if ((checkCaller == checkCaller))
208205 then [StringEntry(keyFactoryContract(), factoryV2Address), StringEntry(keyAssetsStoreContract(), assetsStoreAddress), StringEntry(keyPriceAssetsMinAmount(), makeString(priceAssetsMinAmount, SEP)), IntegerEntry(keyAmountAssetMinAmount(), amountAssetMinAmount), StringEntry(keyFeeAssetId(), feeAssetId), IntegerEntry(keyFeeAmount(), feeAmount)]
209206 else throw("Strict value is not equal to itself.")
210207 }
211208
212209
213210
214211 @Callable(i)
215212 func create () = {
216213 let amountAssetPayment = value(i.payments[0])
217214 let priceAssetPayment = value(i.payments[1])
218215 let feeAssetPayment = value(i.payments[2])
219- let $t066406712 = getIdAndInfo(amountAssetPayment)
220- let amountAssetId = $t066406712._1
221- let amountAssetInfo = $t066406712._2
222- let $t067156784 = getIdAndInfo(priceAssetPayment)
223- let priceAssetId = $t067156784._1
224- let priceAssetInfo = $t067156784._2
225- let $t067876850 = getIdAndInfo(feeAssetPayment)
226- let feeAssetId = $t067876850._1
227- let feeAssetInfo = $t067876850._2
216+ let $t064926564 = getIdAndInfo(amountAssetPayment)
217+ let amountAssetId = $t064926564._1
218+ let amountAssetInfo = $t064926564._2
219+ let $t065676636 = getIdAndInfo(priceAssetPayment)
220+ let priceAssetId = $t065676636._1
221+ let priceAssetInfo = $t065676636._2
222+ let $t066396702 = getIdAndInfo(feeAssetPayment)
223+ let feeAssetId = $t066396702._1
224+ let feeAssetInfo = $t066396702._2
228225 let priceAssetsList = stringOptionToList(getString(factoryContract, keyPriceAssets()))
229226 let managerPriceAssetMinAmount = 1
230227 let priceAssetMinAmount = if (isManager(i))
231228 then managerPriceAssetMinAmount
232229 else {
233230 let priceAssetsIndex = valueOrErrorMessage(indexOf(priceAssetsList, priceAssetId), invalidPriceAsset)
234231 value(parseInt(stringOptionToList(getString(keyPriceAssetsMinAmount()))[priceAssetsIndex]))
235232 }
236233 let lastIndex = valueOrElse(getInteger(keyLastIndex()), 0)
237234 let curIndex = (lastIndex + 1)
238235 let checks = [if (!(isCreateCalled(amountAssetId, priceAssetId)))
239236 then true
240237 else throwPoolExists(), if (if (isManager(i))
241238 then true
242239 else isVerified(amountAssetId))
243240 then true
244241 else throwAssetNotVerified(), if ((getString(keyFeeAssetId()) == feeAssetId))
245242 then true
246243 else throwInvalidFeeAsset(), if (if (isManager(i))
247244 then true
248245 else (amountAssetPayment.amount >= getIntegerValue(keyAmountAssetMinAmount())))
249246 then true
250247 else throwInvalidAmountAsset(), if (if (isManager(i))
251248 then true
252249 else (priceAssetPayment.amount >= priceAssetMinAmount))
253250 then true
254251 else throwInvalidPriceAssetAmount(), if ((feeAssetPayment.amount == getInteger(keyFeeAmount())))
255252 then true
256253 else throwInvalidFee()]
257254 if ((checks == checks))
258255 then [BooleanEntry(keyCreateCalled(amountAssetId, priceAssetId), true), StringEntry(keyCreateCaller(amountAssetId, priceAssetId), toString(i.caller)), IntegerEntry(keyLastIndex(), curIndex), StringEntry(keySuffix(amountAssetId, priceAssetId), (toString(curIndex) + indexSuffix)), IntegerEntry(keyHeight(amountAssetId, priceAssetId), height), StringEntry(keyStatus(amountAssetId, priceAssetId), statusPending), IntegerEntry(keyAmountAssetAmount(amountAssetId, priceAssetId), amountAssetPayment.amount), IntegerEntry(keyPriceAssetAmount(amountAssetId, priceAssetId), priceAssetPayment.amount)]
259256 else throw("Strict value is not equal to itself.")
260257 }
261258
262259
263260
264261 @Callable(i)
265262 func activate (poolAddress,amountAssetId,amountAssetTicker,priceAssetId,priceAssetTicker,logo) = {
266263 let checks = [mustAdmin(i), if (isCreateCalled(amountAssetId, priceAssetId))
267264 then true
268265 else throwCreateNotCalled(), if ((value(getString(keyStatus(amountAssetId, priceAssetId))) == statusPending))
269266 then true
270267 else throwCanActivateOnlyPendingPool()]
271268 if ((checks == checks))
272269 then {
273270 let activateNewPoolInv = invoke(factoryContract, "activateNewPool", [poolAddress, amountAssetId, priceAssetId, ((amountAssetTicker + priceAssetTicker) + "LP"), (((amountAssetTicker + "/") + priceAssetTicker) + " pool liquidity provider token"), 0, "VLTPOOL", logo], nil)
274271 if ((activateNewPoolInv == activateNewPoolInv))
275272 then {
276273 let lpAssetId = match activateNewPoolInv {
277274 case id: String =>
278275 id
279276 case _ =>
280277 throwFactoryReturnedNotString()
281278 }
282279 if ((lpAssetId == lpAssetId))
283280 then {
284281 let beforePut = assetBalance(this, fromBase58String(lpAssetId))
285282 if ((beforePut == beforePut))
286283 then {
287284 let put = invoke(addressFromStringValue(poolAddress), "put", [0, false], [AttachedPayment(fromBase58String(amountAssetId), value(getInteger(keyAmountAssetAmount(amountAssetId, priceAssetId)))), AttachedPayment(if ((priceAssetId == "WAVES"))
288285 then unit
289286 else fromBase58String(priceAssetId), value(getInteger(keyPriceAssetAmount(amountAssetId, priceAssetId))))])
290287 if ((put == put))
291288 then {
292289 let afterPut = assetBalance(this, fromBase58String(lpAssetId))
293290 if ((afterPut == afterPut))
294291 then {
295292 let user = value(addressFromString(value(getString(keyCreateCaller(amountAssetId, priceAssetId)))))
296-[StringEntry(keyStatus(amountAssetId, priceAssetId), statusActive), IntegerEntry(keyActivationHeight(amountAssetId, priceAssetId), height), ScriptTransfer(user, (afterPut - beforePut), fromBase58String(lpAssetId))]
293+[StringEntry(keyStatus(amountAssetId, priceAssetId), statusActive), ScriptTransfer(user, (afterPut - beforePut), fromBase58String(lpAssetId))]
297294 }
298295 else throw("Strict value is not equal to itself.")
299296 }
300297 else throw("Strict value is not equal to itself.")
301298 }
302299 else throw("Strict value is not equal to itself.")
303300 }
304301 else throw("Strict value is not equal to itself.")
305302 }
306303 else throw("Strict value is not equal to itself.")
307304 }
308305 else throw("Strict value is not equal to itself.")
309306 }
310307
311308
312309
313310 @Callable(i)
314311 func setAdmins (adminPubKeys) = {
315312 let checkCaller = mustManager(i)
316313 if ((checkCaller == checkCaller))
317314 then [StringEntry(keyAdminPubKeys(), makeString(adminPubKeys, SEP))]
318315 else throw("Strict value is not equal to itself.")
319316 }
320317
321318
322319
323320 @Callable(i)
324321 func setManager (pendingManagerPublicKey) = {
325322 let checkCaller = mustManager(i)
326323 if ((checkCaller == checkCaller))
327324 then {
328325 let checkManagerPublicKey = fromBase58String(pendingManagerPublicKey)
329326 if ((checkManagerPublicKey == checkManagerPublicKey))
330327 then [StringEntry(keyPendingManagerPublicKey(), pendingManagerPublicKey)]
331328 else throw("Strict value is not equal to itself.")
332329 }
333330 else throw("Strict value is not equal to itself.")
334331 }
335332
336333
337334
338335 @Callable(i)
339336 func confirmManager () = {
340337 let pm = pendingManagerPublicKeyOrUnit()
341338 let hasPM = if (isDefined(pm))
342339 then true
343340 else throw("No pending manager")
344341 if ((hasPM == hasPM))
345342 then {
346343 let checkPM = if ((i.callerPublicKey == value(pm)))
347344 then true
348345 else throw("You are not pending manager")
349346 if ((checkPM == checkPM))
350347 then [StringEntry(keyManagerPublicKey(), toBase58String(value(pm))), DeleteEntry(keyPendingManagerPublicKey())]
351348 else throw("Strict value is not equal to itself.")
352349 }
353350 else throw("Strict value is not equal to itself.")
354351 }
355352
356353
357354
358355 @Callable(i)
359356 func priceAssetsREADONLY () = $Tuple2(nil, stringOptionToList(getString(keyPriceAssets())))
360357
361358
362359
363360 @Callable(i)
364361 func statusREADONLY (amountAssetId,priceAssetId) = {
365362 let status = match getString(keyStatus(amountAssetId, priceAssetId)) {
366363 case s: String =>
367364 s
368365 case _ =>
369366 unit
370367 }
371368 $Tuple2(nil, status)
372369 }
373370
374371
375372 @Verifier(tx)
376373 func verify () = {
377374 let targetPublicKey = match managerPublicKeyOrUnit() {
378375 case pk: ByteVector =>
379376 pk
380377 case _: Unit =>
381378 tx.senderPublicKey
382379 case _ =>
383380 throw("Match error")
384381 }
385382 sigVerify(tx.bodyBytes, tx.proofs[0], targetPublicKey)
386383 }
387384

github/deemru/w8io/3ef1775 
63.29 ms