tx · 5VyiDTUwoBk1r5BhpGBRCuc8iPCsmoZg9rjkNLjkvdZ3

3N3g7W8FPoQ7g5EadbAD2GVjrZT5RWpHZZh:  -0.01600000 Waves

2023.01.19 12:48 [2411648] smart account 3N3g7W8FPoQ7g5EadbAD2GVjrZT5RWpHZZh > SELF 0.00000000 Waves

{ "type": 13, "id": "5VyiDTUwoBk1r5BhpGBRCuc8iPCsmoZg9rjkNLjkvdZ3", "fee": 1600000, "feeAssetId": null, "timestamp": 1674121740258, "version": 1, "sender": "3N3g7W8FPoQ7g5EadbAD2GVjrZT5RWpHZZh", "senderPublicKey": "Ap7CkWd6fzBU34kGo4GJJzC5q4qWXuLVunzE25PchdGS", "proofs": [ "33yEP8tu1fGQXkvYB8JzWCG92GVTjzhmVQyazpx4S3ropg7yxEbymJMrA7mXgYbX7xyhcXAXRVR9ZCL5G8SDhyFU" ], "script": "base64:AAIFAAAAAAAABrcIAhIICgYICBgBCAESABIICgYICAgICAgSAwoBGBIDCgEIEgASABIECgIICCIDU0VQIgx3YXZlc0Fzc2V0SWQiEWludmFsaWRQcmljZUFzc2V0Igh0aHJvd0VyciIDbXNnIgd0aHJvd1BEIhR0aHJvd0NyZWF0ZU5vdENhbGxlZCIRdGhyb3dZb3VOb3RJc3N1ZXIiD3Rocm93UG9vbEV4aXN0cyIVdGhyb3dBc3NldE5vdFZlcmlmaWVkIhZ0aHJvd0ludmFsaWRQcmljZUFzc2V0IhR0aHJvd0ludmFsaWRGZWVBc3NldCIXdGhyb3dJbnZhbGlkQW1vdW50QXNzZXQiEnRocm93SW52YWxpZFN0YXR1cyIfdGhyb3dDYW5BY3RpdmF0ZU9ubHlQZW5kaW5nUG9vbCIddGhyb3dGYWN0b3J5UmV0dXJuZWROb3RTdHJpbmciHHRocm93SW52YWxpZFByaWNlQXNzZXRBbW91bnQiD3Rocm93SW52YWxpZEZlZSITa2V5TWFuYWdlclB1YmxpY0tleSIaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiD2tleUFkbWluUHViS2V5cyIJa2V5U3RhdHVzIg1hbW91bnRBc3NldElkIgxwcmljZUFzc2V0SWQiEmtleUZhY3RvcnlDb250cmFjdCIWa2V5QXNzZXRzU3RvcmVDb250cmFjdCIJa2V5U3VmZml4IgxrZXlMYXN0SW5kZXgiC2luZGV4U3VmZml4Ig1zdGF0dXNQZW5kaW5nIg5zdGF0dXNEZWNsaW5lZCIMc3RhdHVzQWN0aXZlIghzdGF0dXNlcyIPa2V5Q3JlYXRlQ2FsbGVkIg9rZXlDcmVhdGVDYWxsZXIiFGtleUFtb3VudEFzc2V0QW1vdW50IhNrZXlQcmljZUFzc2V0QW1vdW50IglrZXlIZWlnaHQiDWtleUZlZUFzc2V0SWQiDGtleUZlZUFtb3VudCIXa2V5QW1vdW50QXNzZXRNaW5BbW91bnQiF2tleVByaWNlQXNzZXRzTWluQW1vdW50Ig5rZXlQcmljZUFzc2V0cyIPZ2V0U3RyaW5nT3JGYWlsIgNrZXkiEnN0cmluZ09wdGlvblRvTGlzdCIMc3RyaW5nT3JVbml0IgckbWF0Y2gwIgFzIg9mYWN0b3J5Q29udHJhY3QiDmlzQ3JlYXRlQ2FsbGVkIhBtdXN0Q3JlYXRlQ2FsbGVkIhZtYW5hZ2VyUHVibGljS2V5T3JVbml0Ih1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdCIJaXNNYW5hZ2VyIgFpIgJwayILbXVzdE1hbmFnZXIiCW11c3RBZG1pbiIIYWRtaW5QS3MiCmlzVmVyaWZpZWQiB2Fzc2V0SWQiDGdldElkQW5kSW5mbyIHcGF5bWVudCICaWQiBGluZm8iC3ZhbGlkU3RhdHVzIgZzdGF0dXMiEGZhY3RvcnlWMkFkZHJlc3MiEmFzc2V0c1N0b3JlQWRkcmVzcyIUcHJpY2VBc3NldHNNaW5BbW91bnQiFGFtb3VudEFzc2V0TWluQW1vdW50IgpmZWVBc3NldElkIglmZWVBbW91bnQiC2NoZWNrQ2FsbGVyIhJhbW91bnRBc3NldFBheW1lbnQiEXByaWNlQXNzZXRQYXltZW50Ig9mZWVBc3NldFBheW1lbnQiCyR0MDY0OTI2NTY0Ig9hbW91bnRBc3NldEluZm8iCyR0MDY1Njc2NjM2Ig5wcmljZUFzc2V0SW5mbyILJHQwNjYzOTY3MDIiDGZlZUFzc2V0SW5mbyIPcHJpY2VBc3NldHNMaXN0IhptYW5hZ2VyUHJpY2VBc3NldE1pbkFtb3VudCITcHJpY2VBc3NldE1pbkFtb3VudCIQcHJpY2VBc3NldHNJbmRleCIJbGFzdEluZGV4IghjdXJJbmRleCIGY2hlY2tzIgtwb29sQWRkcmVzcyIRYW1vdW50QXNzZXRUaWNrZXIiEHByaWNlQXNzZXRUaWNrZXIiBGxvZ28iEmFjdGl2YXRlTmV3UG9vbEludiIJbHBBc3NldElkIgliZWZvcmVQdXQiA3B1dCIIYWZ0ZXJQdXQiBHVzZXIiDGFkbWluUHViS2V5cyIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiFWNoZWNrTWFuYWdlclB1YmxpY0tleSICcG0iBWhhc1BNIgdjaGVja1BNIgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXkAAAA1AAAAAAFhAgAAAAJfXwAAAAABYgIAAAAFV0FWRVMAAAAAAWMCAAAAE0ludmFsaWQgcHJpY2UgYXNzZXQBAAAAAWQA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", "chainId": 84, "height": 2411648, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: AZiP2VDawge6qnHUL3WmQdRzAjdjDUC3DA2X1RAxBE1n Next: 4UVbEFEj1Eji37zVRuxKutfbCVxWQs5m8f2jZ4Xc87hc Diff:
OldNewDifferences
6565
6666
6767 func keyAssetsStoreContract () = makeString(["%s", "assetsStoreContract"], SEP)
68-
69-
70-func keyEmissionContract () = makeString(["%s", "emissionContract"], SEP)
7168
7269
7370 func keySuffix (amountAssetId,priceAssetId) = makeString(["%s%s%s", "suffix", amountAssetId, priceAssetId], SEP)
202199
203200
204201 @Callable(i)
205-func constructor (factoryV2Address,assetsStoreAddress,emissionAddress,priceAssetsMinAmount,amountAssetMinAmount,feeAssetId,feeAmount) = {
202+func constructor (factoryV2Address,assetsStoreAddress,priceAssetsMinAmount,amountAssetMinAmount,feeAssetId,feeAmount) = {
206203 let checkCaller = mustManager(i)
207204 if ((checkCaller == checkCaller))
208- then [StringEntry(keyFactoryContract(), factoryV2Address), StringEntry(keyAssetsStoreContract(), assetsStoreAddress), StringEntry(keyEmissionContract(), emissionAddress), StringEntry(keyPriceAssetsMinAmount(), makeString(priceAssetsMinAmount, SEP)), IntegerEntry(keyAmountAssetMinAmount(), amountAssetMinAmount), StringEntry(keyFeeAssetId(), feeAssetId), IntegerEntry(keyFeeAmount(), feeAmount)]
205+ 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
216213 let amountAssetPayment = value(i.payments[0])
217214 let priceAssetPayment = value(i.payments[1])
218215 let feeAssetPayment = value(i.payments[2])
219- let $t066466718 = getIdAndInfo(amountAssetPayment)
220- let amountAssetId = $t066466718._1
221- let amountAssetInfo = $t066466718._2
222- let $t067216790 = getIdAndInfo(priceAssetPayment)
223- let priceAssetId = $t067216790._1
224- let priceAssetInfo = $t067216790._2
225- let $t067936856 = getIdAndInfo(feeAssetPayment)
226- let feeAssetId = $t067936856._1
227- let feeAssetInfo = $t067936856._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))
235232 }
236233 let lastIndex = valueOrElse(getInteger(keyLastIndex()), 0)
237234 let curIndex = (lastIndex + 1)
238- let emissionContract = addressFromStringValue(getStringOrFail(keyEmissionContract()))
239235 let checks = [if (!(isCreateCalled(amountAssetId, priceAssetId)))
240236 then true
241237 else throwPoolExists(), if (if (isManager(i))
256252 then true
257253 else throwInvalidFee()]
258254 if ((checks == checks))
259- then {
260- let burnEmissionInv = invoke(emissionContract, "burn", nil, [AttachedPayment(fromBase58String(feeAssetId), feeAssetPayment.amount)])
261- if ((burnEmissionInv == burnEmissionInv))
262- 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)]
263- else throw("Strict value is not equal to itself.")
264- }
255+ 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)]
265256 else throw("Strict value is not equal to itself.")
266257 }
267258
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)
68-
69-
70-func keyEmissionContract () = makeString(["%s", "emissionContract"], SEP)
7168
7269
7370 func keySuffix (amountAssetId,priceAssetId) = makeString(["%s%s%s", "suffix", amountAssetId, priceAssetId], SEP)
7471
7572
7673 func keyLastIndex () = makeString(["%s", "lastIndex"], SEP)
7774
7875
7976 let indexSuffix = "u"
8077
8178 let statusPending = "pending"
8279
8380 let statusDeclined = "declined"
8481
8582 let statusActive = "active"
8683
8784 let statuses = [statusPending, statusDeclined, statusActive]
8885
8986 func keyCreateCalled (amountAssetId,priceAssetId) = makeString(["%s%s%s", "createCalled", amountAssetId, priceAssetId], SEP)
9087
9188
9289 func keyCreateCaller (amountAssetId,priceAssetId) = makeString(["%s%s%s", "createCaller", amountAssetId, priceAssetId], SEP)
9390
9491
9592 func keyAmountAssetAmount (amountAssetId,priceAssetId) = makeString(["%s%s%s", "amountAssetAmount", amountAssetId, priceAssetId], SEP)
9693
9794
9895 func keyPriceAssetAmount (amountAssetId,priceAssetId) = makeString(["%s%s%s", "priceAssetAmount", amountAssetId, priceAssetId], SEP)
9996
10097
10198 func keyHeight (amountAssetId,priceAssetId) = makeString(["%s%s%s", "height", 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)
205-func constructor (factoryV2Address,assetsStoreAddress,emissionAddress,priceAssetsMinAmount,amountAssetMinAmount,feeAssetId,feeAmount) = {
202+func constructor (factoryV2Address,assetsStoreAddress,priceAssetsMinAmount,amountAssetMinAmount,feeAssetId,feeAmount) = {
206203 let checkCaller = mustManager(i)
207204 if ((checkCaller == checkCaller))
208- then [StringEntry(keyFactoryContract(), factoryV2Address), StringEntry(keyAssetsStoreContract(), assetsStoreAddress), StringEntry(keyEmissionContract(), emissionAddress), StringEntry(keyPriceAssetsMinAmount(), makeString(priceAssetsMinAmount, SEP)), IntegerEntry(keyAmountAssetMinAmount(), amountAssetMinAmount), StringEntry(keyFeeAssetId(), feeAssetId), IntegerEntry(keyFeeAmount(), feeAmount)]
205+ 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 $t066466718 = getIdAndInfo(amountAssetPayment)
220- let amountAssetId = $t066466718._1
221- let amountAssetInfo = $t066466718._2
222- let $t067216790 = getIdAndInfo(priceAssetPayment)
223- let priceAssetId = $t067216790._1
224- let priceAssetInfo = $t067216790._2
225- let $t067936856 = getIdAndInfo(feeAssetPayment)
226- let feeAssetId = $t067936856._1
227- let feeAssetInfo = $t067936856._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)
238- let emissionContract = addressFromStringValue(getStringOrFail(keyEmissionContract()))
239235 let checks = [if (!(isCreateCalled(amountAssetId, priceAssetId)))
240236 then true
241237 else throwPoolExists(), if (if (isManager(i))
242238 then true
243239 else isVerified(amountAssetId))
244240 then true
245241 else throwAssetNotVerified(), if ((getString(keyFeeAssetId()) == feeAssetId))
246242 then true
247243 else throwInvalidFeeAsset(), if (if (isManager(i))
248244 then true
249245 else (amountAssetPayment.amount >= getIntegerValue(keyAmountAssetMinAmount())))
250246 then true
251247 else throwInvalidAmountAsset(), if (if (isManager(i))
252248 then true
253249 else (priceAssetPayment.amount >= priceAssetMinAmount))
254250 then true
255251 else throwInvalidPriceAssetAmount(), if ((feeAssetPayment.amount == getInteger(keyFeeAmount())))
256252 then true
257253 else throwInvalidFee()]
258254 if ((checks == checks))
259- then {
260- let burnEmissionInv = invoke(emissionContract, "burn", nil, [AttachedPayment(fromBase58String(feeAssetId), feeAssetPayment.amount)])
261- if ((burnEmissionInv == burnEmissionInv))
262- 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)]
263- else throw("Strict value is not equal to itself.")
264- }
255+ 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)]
265256 else throw("Strict value is not equal to itself.")
266257 }
267258
268259
269260
270261 @Callable(i)
271262 func activate (poolAddress,amountAssetId,amountAssetTicker,priceAssetId,priceAssetTicker,logo) = {
272263 let checks = [mustAdmin(i), if (isCreateCalled(amountAssetId, priceAssetId))
273264 then true
274265 else throwCreateNotCalled(), if ((value(getString(keyStatus(amountAssetId, priceAssetId))) == statusPending))
275266 then true
276267 else throwCanActivateOnlyPendingPool()]
277268 if ((checks == checks))
278269 then {
279270 let activateNewPoolInv = invoke(factoryContract, "activateNewPool", [poolAddress, amountAssetId, priceAssetId, ((amountAssetTicker + priceAssetTicker) + "LP"), (((amountAssetTicker + "/") + priceAssetTicker) + " pool liquidity provider token"), 0, "VLTPOOL", logo], nil)
280271 if ((activateNewPoolInv == activateNewPoolInv))
281272 then {
282273 let lpAssetId = match activateNewPoolInv {
283274 case id: String =>
284275 id
285276 case _ =>
286277 throwFactoryReturnedNotString()
287278 }
288279 if ((lpAssetId == lpAssetId))
289280 then {
290281 let beforePut = assetBalance(this, fromBase58String(lpAssetId))
291282 if ((beforePut == beforePut))
292283 then {
293284 let put = invoke(addressFromStringValue(poolAddress), "put", [0, false], [AttachedPayment(if ((amountAssetId == "WAVES"))
294285 then unit
295286 else fromBase58String(amountAssetId), value(getInteger(keyAmountAssetAmount(amountAssetId, priceAssetId)))), AttachedPayment(if ((priceAssetId == "WAVES"))
296287 then unit
297288 else fromBase58String(priceAssetId), value(getInteger(keyPriceAssetAmount(amountAssetId, priceAssetId))))])
298289 if ((put == put))
299290 then {
300291 let afterPut = assetBalance(this, fromBase58String(lpAssetId))
301292 if ((afterPut == afterPut))
302293 then {
303294 let user = value(addressFromString(value(getString(keyCreateCaller(amountAssetId, priceAssetId)))))
304295 [StringEntry(keyStatus(amountAssetId, priceAssetId), statusActive), ScriptTransfer(user, (afterPut - beforePut), fromBase58String(lpAssetId))]
305296 }
306297 else throw("Strict value is not equal to itself.")
307298 }
308299 else throw("Strict value is not equal to itself.")
309300 }
310301 else throw("Strict value is not equal to itself.")
311302 }
312303 else throw("Strict value is not equal to itself.")
313304 }
314305 else throw("Strict value is not equal to itself.")
315306 }
316307 else throw("Strict value is not equal to itself.")
317308 }
318309
319310
320311
321312 @Callable(i)
322313 func setAdmins (adminPubKeys) = {
323314 let checkCaller = mustManager(i)
324315 if ((checkCaller == checkCaller))
325316 then [StringEntry(keyAdminPubKeys(), makeString(adminPubKeys, SEP))]
326317 else throw("Strict value is not equal to itself.")
327318 }
328319
329320
330321
331322 @Callable(i)
332323 func setManager (pendingManagerPublicKey) = {
333324 let checkCaller = mustManager(i)
334325 if ((checkCaller == checkCaller))
335326 then {
336327 let checkManagerPublicKey = fromBase58String(pendingManagerPublicKey)
337328 if ((checkManagerPublicKey == checkManagerPublicKey))
338329 then [StringEntry(keyPendingManagerPublicKey(), pendingManagerPublicKey)]
339330 else throw("Strict value is not equal to itself.")
340331 }
341332 else throw("Strict value is not equal to itself.")
342333 }
343334
344335
345336
346337 @Callable(i)
347338 func confirmManager () = {
348339 let pm = pendingManagerPublicKeyOrUnit()
349340 let hasPM = if (isDefined(pm))
350341 then true
351342 else throw("No pending manager")
352343 if ((hasPM == hasPM))
353344 then {
354345 let checkPM = if ((i.callerPublicKey == value(pm)))
355346 then true
356347 else throw("You are not pending manager")
357348 if ((checkPM == checkPM))
358349 then [StringEntry(keyManagerPublicKey(), toBase58String(value(pm))), DeleteEntry(keyPendingManagerPublicKey())]
359350 else throw("Strict value is not equal to itself.")
360351 }
361352 else throw("Strict value is not equal to itself.")
362353 }
363354
364355
365356
366357 @Callable(i)
367358 func priceAssetsREADONLY () = $Tuple2(nil, stringOptionToList(getString(keyPriceAssets())))
368359
369360
370361
371362 @Callable(i)
372363 func statusREADONLY (amountAssetId,priceAssetId) = {
373364 let status = match getString(keyStatus(amountAssetId, priceAssetId)) {
374365 case s: String =>
375366 s
376367 case _ =>
377368 unit
378369 }
379370 $Tuple2(nil, status)
380371 }
381372
382373
383374 @Verifier(tx)
384375 func verify () = {
385376 let targetPublicKey = match managerPublicKeyOrUnit() {
386377 case pk: ByteVector =>
387378 pk
388379 case _: Unit =>
389380 tx.senderPublicKey
390381 case _ =>
391382 throw("Match error")
392383 }
393384 sigVerify(tx.bodyBytes, tx.proofs[0], targetPublicKey)
394385 }
395386

github/deemru/w8io/026f985 
50.57 ms