tx · 4wCuD9oHXA3f2BHoJSx8EK5dbCMhbi36Am9de4WuvX75

3N1Epwa6GQuTQr2K9WzeUcqSFCdERwuvL5T:  -0.01900000 Waves

2022.12.27 13:01 [2378533] smart account 3N1Epwa6GQuTQr2K9WzeUcqSFCdERwuvL5T > SELF 0.00000000 Waves

{ "type": 13, "id": "4wCuD9oHXA3f2BHoJSx8EK5dbCMhbi36Am9de4WuvX75", "fee": 1900000, "feeAssetId": null, "timestamp": 1672135306968, "version": 1, "sender": "3N1Epwa6GQuTQr2K9WzeUcqSFCdERwuvL5T", "senderPublicKey": "7iXEgsFNsnbLZ3ca4tmz8jffnyxMu9keuBV6CuQPJLuA", "proofs": [ "5tP4AbcvuMAQfG7p8mhV6YhLSHQ9iD4kMmMdLQ8isQmUM4MhVrsZxJCt89H2grETYLGAQv2ZRJE6r69BKSPzNGPS" ], "script": "base64:AAIFAAAAAAAABlcIAhINCgsICAgICAgBCAEIARIDCgEBEgQKAggIEgUKAwgIBBIECgIICBIDCgEBEgMKAQESBAoCCAgSAwoBCBIAIglzZXBhcmF0b3IiDGtleUZlZUFtb3VudCIOa2V5VXNkbkFzc2V0SWQiDmtleUVwb2NoTGVuZ3RoIhFrZXlGaW5hbGl6ZVJld2FyZCIMa2V5V3hBc3NldElkIhZrZXlBc3NldHNTdG9yZUNvbnRyYWN0IhNrZXlVc2VyUG9vbENvbnRyYWN0IhNrZXlFbWlzc2lvbkNvbnRyYWN0IhNrZXlCb29zdGluZ0NvbnRyYWN0IhJrZXlGYWN0b3J5Q29udHJhY3QiGWtleVZvdGluZ0VtaXNzaW9uQ29udHJhY3QiDGtleVRocmVzaG9sZCIPZ2V0U3RyaW5nT3JGYWlsIgNrZXkiDGdldEludE9yRmFpbCIQa2V5SW5MaXN0QXNzZXRJZCINYW1vdW50QXNzZXRJZCIMcHJpY2VBc3NldElkIg9rZXlTdWdnZXN0SW5kZXgiDmtleVN0YXJ0SGVpZ2h0IgxzdWdnZXN0SW5kZXgiD2tleVZvdGluZ1Jlc3VsdCIKdG90YWxWb3RlcyIIdG90YWxZZXMiB3RvdGFsTm8iB2tleVZvdGUiDHZvdGVyQWRkcmVzcyIMa2V5Vm90ZVZhbHVlIglnd3hBbW91bnQiBHZvdGUiCWtleUluTGlzdCIEcG9vbCILJHQwMjQ2MzI1MDMiE2tleU1hbmFnZXJQdWJsaWNLZXkiGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5IhNhc3NldHNTdG9yZUNvbnRyYWN0IhBib29zdGluZ0NvbnRyYWN0IhBlbWlzc2lvbkNvbnRyYWN0Ig9mYWN0b3J5Q29udHJhY3QiEHVzZXJQb29sQ29udHJhY3QiFnZvdGluZ0VtaXNzaW9uQ29udHJhY3QiFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiByRtYXRjaDAiAXMiHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0Iglpc01hbmFnZXIiAWkiAnBrIgttdXN0TWFuYWdlciIFYXNJbnQiA3ZhbCIGdmFsSW50IhZhc3NldHNTdG9yZUNvbnRyYWN0UHJtIhNib29zdGluZ0NvbnRyYWN0UHJtIhNlbWlzc2lvbkNvbnRyYWN0UHJtIhJmYWN0b3J5Q29udHJhY3RQcm0iE3VzZXJQb29sQ29udHJhY3RQcm0iGXZvdGluZ0VtaXNzaW9uQ29udHJhY3RQcm0iDGZlZUFtb3VudFBybSIMd3hBc3NldElkUHJtIhF2b3RpbmdEdXJhdGlvblBybSIOdXNkbkFzc2V0SWRQcm0iEWZpbmFsaXplUmV3YXJkUHJtIgZjaGVja3MiCXRocmVzaG9sZCIHcGF5bWVudCIQY2hlY2tBbW91bnRBc3NldCIEaW5mbyIMZW5zdXJlQWN0aXZlIhllbnN1cmVBbW91bnRBc3NldFZlcmlmaWVkIgNpbnYiAWIiCmJ1cm5GZWVJbnYiD25ld1N1Z2dlc3RJbmRleCIDaW50IgdpbkZhdm9yIhJ2b3RpbmdGaW5pc2hIZWlnaHQiB25vdFplcm8iCXZvdGVWYWx1ZSIIdm90ZVR5cGUiEWlzVm90ZVR5cGVTaW1pbGFyIhJpc1ZvdGVWYWx1ZVNpbWlsYXIiEGlzTmV3Vm90ZVNpbWlsYXIiAXUiDHZvdGluZ1Jlc3VsdCINcG9zaXRpdmVWb3RlcyINbmVnYXRpdmVWb3RlcyIbbmV3UG9zaXRpdmVBbmROZWdhdGl2ZVZvdGVzIhBuZXdQb3NpdGl2ZVZvdGVzIhBuZXdOZWdhdGl2ZVZvdGVzIgd2b3RlS2V5Igt1c2VyQWRkcmVzcyIHYWN0aW9ucyIGbmV3RmVlIgxuZXdUaHJlc2hvbGQiCGFsbFZvdGVzIgNyZXMiEXZvdGluZ0VtaXNzaW9uSW52IhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSILY2hlY2tDYWxsZXIiFWNoZWNrTWFuYWdlclB1YmxpY0tleSICcG0iBWhhc1BNIgdjaGVja1BNIgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXkAAAAkAAAAAAFhAgAAAAJfXwAAAAABYgkABLkAAAACCQAETAAAAAICAAAAAiVzCQAETAAAAAICAAAAA2ZlZQUAAAADbmlsBQAAAAFhAAAAAAFjCQAEuQAAAAIJAARMAAAAAgIAAAACJXMJAARMAAAAAgIAAAALdXNkbkFzc2V0SWQFAAAAA25pbAUAAAABYQAAAAABZAkABLkAAAACCQAETAAAAAIC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", "chainId": 84, "height": 2378533, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8PNFMSFik4u3es5veAJi7nZdGpmqVvDmWR7C4TaGgmga Next: HSSgoJad1EMVsHSohxX4DnygKLKyTtTbDVE7L62fGfXh Diff:
OldNewDifferences
174174 func suggest (amountAssetId,priceAssetId) = {
175175 let pool = $Tuple2(amountAssetId, priceAssetId)
176176 let payment = value(i.payments[0])
177- let info = valueOrErrorMessage(assetInfo(fromBase58String(amountAssetId)), "invalid amountAssetId ID")
178- let checks = [if ((info.scripted == false))
179- then true
180- else throw("asset is smart"), if ((toBase58String(value(payment.assetId)) == value(getString(keyWxAssetId))))
181- then true
182- else throw("invalid fee asset"), if ((payment.amount == value(getInteger(keyFeeAmount))))
183- then true
184- else throw("invalid fee amount"), if ((getInteger(keyInListAssetId(amountAssetId, priceAssetId)) == unit))
185- then true
186- else throw("already in voting list"), if (!(valueOrElse(getBoolean(votingEmissionContract, keyInList(pool)), false)))
187- then true
188- else throw("pool is in emission voting list")]
189- if ((checks == checks))
177+ let checkAmountAsset = if ((amountAssetId == "WAVES"))
178+ then unit
179+ else {
180+ let info = valueOrErrorMessage(assetInfo(fromBase58String(amountAssetId)), "invalid amountAssetId ID")
181+ if ((info.scripted == false))
182+ then true
183+ else throw("asset is smart")
184+ }
185+ if ((checkAmountAsset == checkAmountAsset))
190186 then {
191- let ensureActive = match invoke(userPoolContract, "statusREADONLY", [amountAssetId, priceAssetId], nil) {
192- case s: String =>
193- if ((s == "active"))
194- then true
195- else throw("user pool is not active")
196- case _ =>
197- throw("user pool is not active")
198- }
199- if ((ensureActive == ensureActive))
187+ let checks = [if ((toBase58String(value(payment.assetId)) == value(getString(keyWxAssetId))))
188+ then true
189+ else throw("invalid fee asset"), if ((payment.amount == value(getInteger(keyFeeAmount))))
190+ then true
191+ else throw("invalid fee amount"), if ((getInteger(keyInListAssetId(amountAssetId, priceAssetId)) == unit))
192+ then true
193+ else throw("already in voting list"), if (!(valueOrElse(getBoolean(votingEmissionContract, keyInList(pool)), false)))
194+ then true
195+ else throw("pool is in emission voting list")]
196+ if ((checks == checks))
200197 then {
201- let ensureAmountAssetVerified = if (isManager(i))
202- then unit
203- else {
204- let inv = match invoke(assetsStoreContract, "isVerifiedREADONLY", [amountAssetId], nil) {
205- case b: Boolean =>
206- if (b)
207- then true
208- else throw("asset is not verified")
209- case _ =>
210- throw("asset is not verified")
211- }
212- if ((inv == inv))
198+ let ensureActive = match invoke(userPoolContract, "statusREADONLY", [amountAssetId, priceAssetId], nil) {
199+ case s: String =>
200+ if ((s == "active"))
201+ then true
202+ else throw("user pool is not active")
203+ case _ =>
204+ throw("user pool is not active")
205+ }
206+ if ((ensureActive == ensureActive))
207+ then {
208+ let ensureAmountAssetVerified = if (isManager(i))
213209 then unit
214- else throw("Strict value is not equal to itself.")
215- }
216- if ((ensureAmountAssetVerified == ensureAmountAssetVerified))
217- then {
218- let burnFeeInv = invoke(emissionContract, "burn", nil, [AttachedPayment(payment.assetId, payment.amount)])
219- if ((burnFeeInv == burnFeeInv))
210+ else {
211+ let inv = match invoke(assetsStoreContract, "isVerifiedREADONLY", [amountAssetId], nil) {
212+ case b: Boolean =>
213+ if (b)
214+ then true
215+ else throw("asset is not verified")
216+ case _ =>
217+ throw("asset is not verified")
218+ }
219+ if ((inv == inv))
220+ then unit
221+ else throw("Strict value is not equal to itself.")
222+ }
223+ if ((ensureAmountAssetVerified == ensureAmountAssetVerified))
220224 then {
221- let newSuggestIndex = match getInteger(keySuggestIndex(amountAssetId, priceAssetId)) {
222- case int: Int =>
223- (int + 1)
224- case _ =>
225- 0
226- }
227- $Tuple2([IntegerEntry(keyInListAssetId(amountAssetId, priceAssetId), newSuggestIndex), IntegerEntry(keyStartHeight(amountAssetId, priceAssetId, newSuggestIndex), height), StringEntry(keyVotingResult(amountAssetId, priceAssetId, newSuggestIndex), totalVotes("0", "0")), IntegerEntry(keySuggestIndex(amountAssetId, priceAssetId), newSuggestIndex)], unit)
225+ let burnFeeInv = invoke(emissionContract, "burn", nil, [AttachedPayment(payment.assetId, payment.amount)])
226+ if ((burnFeeInv == burnFeeInv))
227+ then {
228+ let newSuggestIndex = match getInteger(keySuggestIndex(amountAssetId, priceAssetId)) {
229+ case int: Int =>
230+ (int + 1)
231+ case _ =>
232+ 0
233+ }
234+ $Tuple2([IntegerEntry(keyInListAssetId(amountAssetId, priceAssetId), newSuggestIndex), IntegerEntry(keyStartHeight(amountAssetId, priceAssetId, newSuggestIndex), height), StringEntry(keyVotingResult(amountAssetId, priceAssetId, newSuggestIndex), totalVotes("0", "0")), IntegerEntry(keySuggestIndex(amountAssetId, priceAssetId), newSuggestIndex)], unit)
235+ }
236+ else throw("Strict value is not equal to itself.")
228237 }
229238 else throw("Strict value is not equal to itself.")
230239 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let separator = "__"
55
66 let keyFeeAmount = makeString(["%s", "fee"], separator)
77
88 let keyUsdnAssetId = makeString(["%s", "usdnAssetId"], separator)
99
1010 let keyEpochLength = makeString(["%s", "epochLength"], separator)
1111
1212 let keyFinalizeReward = makeString(["%s", "finalizeReward"], separator)
1313
1414 let keyWxAssetId = makeString(["%s", "wxAssetId"], separator)
1515
1616 let keyAssetsStoreContract = makeString(["%s", "assetsStoreContract"], separator)
1717
1818 let keyUserPoolContract = makeString(["%s", "userPoolContract"], separator)
1919
2020 let keyEmissionContract = makeString(["%s", "emissionContract"], separator)
2121
2222 let keyBoostingContract = makeString(["%s", "boostingContract"], separator)
2323
2424 let keyFactoryContract = makeString(["%s", "factoryContract"], separator)
2525
2626 let keyVotingEmissionContract = makeString(["%s", "votingEmissionContract"], separator)
2727
2828 let keyThreshold = makeString(["%s", "votingThreshold"], separator)
2929
3030 func getStringOrFail (key) = valueOrErrorMessage(getString(this, key), (key + " is not defined"))
3131
3232
3333 func getIntOrFail (key) = valueOrErrorMessage(getInteger(this, key), (key + " is not defined"))
3434
3535
3636 func keyInListAssetId (amountAssetId,priceAssetId) = makeString(["%s%s%s", "inList", amountAssetId, priceAssetId], separator)
3737
3838
3939 func keySuggestIndex (amountAssetId,priceAssetId) = makeString(["%s%s%s", "suggestIndex", amountAssetId, priceAssetId], separator)
4040
4141
4242 func keyStartHeight (amountAssetId,priceAssetId,suggestIndex) = makeString(["%s%s%s%d", "startHeight", amountAssetId, priceAssetId, toString(suggestIndex)], separator)
4343
4444
4545 func keyVotingResult (amountAssetId,priceAssetId,suggestIndex) = makeString(["%s%s%s%d", "votingResult", amountAssetId, priceAssetId, toString(suggestIndex)], separator)
4646
4747
4848 func totalVotes (totalYes,totalNo) = makeString(["%d%d", totalYes, totalNo], separator)
4949
5050
5151 func keyVote (amountAssetId,priceAssetId,suggestIndex,voterAddress) = makeString(["%s%s%s%d%s", "vote", amountAssetId, priceAssetId, toString(suggestIndex), voterAddress], separator)
5252
5353
5454 func keyVoteValue (gwxAmount,vote) = {
5555 let key = if (vote)
5656 then makeString(["%d%s", gwxAmount, "yes"], separator)
5757 else makeString(["%d%s", gwxAmount, "no"], separator)
5858 key
5959 }
6060
6161
6262 func keyInList (pool) = {
6363 let $t024632503 = pool
6464 let amountAssetId = $t024632503._1
6565 let priceAssetId = $t024632503._2
6666 makeString(["%s%s%s", "inList", amountAssetId, priceAssetId], separator)
6767 }
6868
6969
7070 func keyManagerPublicKey () = "%s__managerPublicKey"
7171
7272
7373 func keyPendingManagerPublicKey () = "%s__pendingManagerPublicKey"
7474
7575
7676 let assetsStoreContract = addressFromStringValue(getStringOrFail(keyAssetsStoreContract))
7777
7878 let boostingContract = addressFromStringValue(getStringOrFail(keyBoostingContract))
7979
8080 let emissionContract = addressFromStringValue(getStringOrFail(keyEmissionContract))
8181
8282 let factoryContract = addressFromStringValue(getStringOrFail(keyFactoryContract))
8383
8484 let userPoolContract = addressFromStringValue(getStringOrFail(keyUserPoolContract))
8585
8686 let votingEmissionContract = addressFromStringValue(getStringOrFail(keyVotingEmissionContract))
8787
8888 func managerPublicKeyOrUnit () = match getString(keyManagerPublicKey()) {
8989 case s: String =>
9090 fromBase58String(s)
9191 case _: Unit =>
9292 unit
9393 case _ =>
9494 throw("Match error")
9595 }
9696
9797
9898 func pendingManagerPublicKeyOrUnit () = match getString(keyPendingManagerPublicKey()) {
9999 case s: String =>
100100 fromBase58String(s)
101101 case _: Unit =>
102102 unit
103103 case _ =>
104104 throw("Match error")
105105 }
106106
107107
108108 func isManager (i) = match managerPublicKeyOrUnit() {
109109 case pk: ByteVector =>
110110 (i.callerPublicKey == pk)
111111 case _: Unit =>
112112 (i.caller == this)
113113 case _ =>
114114 throw("Match error")
115115 }
116116
117117
118118 func mustManager (i) = if (isManager(i))
119119 then true
120120 else throw("permission denied")
121121
122122
123123 func asInt (val) = match val {
124124 case valInt: Int =>
125125 valInt
126126 case _ =>
127127 throw("failed to cast into Integer")
128128 }
129129
130130
131131 @Callable(i)
132132 func constructor (assetsStoreContractPrm,boostingContractPrm,emissionContractPrm,factoryContractPrm,userPoolContractPrm,votingEmissionContractPrm,feeAmountPrm,wxAssetIdPrm,votingDurationPrm,usdnAssetIdPrm,finalizeRewardPrm) = {
133133 let checks = [mustManager(i), if (isDefined(addressFromString(assetsStoreContractPrm)))
134134 then true
135135 else throw("Invalid asset_store contract address"), if (isDefined(addressFromString(boostingContractPrm)))
136136 then true
137137 else throw("Invalid boosting contract address"), if (isDefined(addressFromString(userPoolContractPrm)))
138138 then true
139139 else throw("Invalid user_pools contract address"), if (isDefined(addressFromString(emissionContractPrm)))
140140 then true
141141 else throw("Invalid emission contract address"), if (isDefined(addressFromString(factoryContractPrm)))
142142 then true
143143 else throw("Invalid factory contract address"), if ((feeAmountPrm >= 0))
144144 then true
145145 else throw("Invalid fee amount"), if ((votingDurationPrm > 0))
146146 then true
147147 else throw("Invalid voting duration"), if ((finalizeRewardPrm >= 0))
148148 then true
149149 else throw("Invalid finalize reward"), if (isDefined(assetInfo(fromBase58String(wxAssetIdPrm))))
150150 then true
151151 else throw("Invalid WX asset ID"), if (isDefined(assetInfo(fromBase58String(usdnAssetIdPrm))))
152152 then true
153153 else throw("Invalid USDN asset ID")]
154154 if ((checks == checks))
155155 then $Tuple2([StringEntry(keyAssetsStoreContract, assetsStoreContractPrm), StringEntry(keyBoostingContract, boostingContractPrm), StringEntry(keyEmissionContract, emissionContractPrm), StringEntry(keyFactoryContract, factoryContractPrm), StringEntry(keyUserPoolContract, userPoolContractPrm), StringEntry(keyVotingEmissionContract, votingEmissionContractPrm), IntegerEntry(keyFeeAmount, feeAmountPrm), IntegerEntry(keyEpochLength, votingDurationPrm), IntegerEntry(keyFinalizeReward, finalizeRewardPrm), StringEntry(keyWxAssetId, wxAssetIdPrm), StringEntry(keyUsdnAssetId, usdnAssetIdPrm)], unit)
156156 else throw("Strict value is not equal to itself.")
157157 }
158158
159159
160160
161161 @Callable(i)
162162 func constructorV2 (threshold) = {
163163 let checks = [mustManager(i), if ((threshold > 0))
164164 then true
165165 else throw("invalid threshold")]
166166 if ((checks == checks))
167167 then $Tuple2([IntegerEntry(keyThreshold, threshold)], unit)
168168 else throw("Strict value is not equal to itself.")
169169 }
170170
171171
172172
173173 @Callable(i)
174174 func suggest (amountAssetId,priceAssetId) = {
175175 let pool = $Tuple2(amountAssetId, priceAssetId)
176176 let payment = value(i.payments[0])
177- let info = valueOrErrorMessage(assetInfo(fromBase58String(amountAssetId)), "invalid amountAssetId ID")
178- let checks = [if ((info.scripted == false))
179- then true
180- else throw("asset is smart"), if ((toBase58String(value(payment.assetId)) == value(getString(keyWxAssetId))))
181- then true
182- else throw("invalid fee asset"), if ((payment.amount == value(getInteger(keyFeeAmount))))
183- then true
184- else throw("invalid fee amount"), if ((getInteger(keyInListAssetId(amountAssetId, priceAssetId)) == unit))
185- then true
186- else throw("already in voting list"), if (!(valueOrElse(getBoolean(votingEmissionContract, keyInList(pool)), false)))
187- then true
188- else throw("pool is in emission voting list")]
189- if ((checks == checks))
177+ let checkAmountAsset = if ((amountAssetId == "WAVES"))
178+ then unit
179+ else {
180+ let info = valueOrErrorMessage(assetInfo(fromBase58String(amountAssetId)), "invalid amountAssetId ID")
181+ if ((info.scripted == false))
182+ then true
183+ else throw("asset is smart")
184+ }
185+ if ((checkAmountAsset == checkAmountAsset))
190186 then {
191- let ensureActive = match invoke(userPoolContract, "statusREADONLY", [amountAssetId, priceAssetId], nil) {
192- case s: String =>
193- if ((s == "active"))
194- then true
195- else throw("user pool is not active")
196- case _ =>
197- throw("user pool is not active")
198- }
199- if ((ensureActive == ensureActive))
187+ let checks = [if ((toBase58String(value(payment.assetId)) == value(getString(keyWxAssetId))))
188+ then true
189+ else throw("invalid fee asset"), if ((payment.amount == value(getInteger(keyFeeAmount))))
190+ then true
191+ else throw("invalid fee amount"), if ((getInteger(keyInListAssetId(amountAssetId, priceAssetId)) == unit))
192+ then true
193+ else throw("already in voting list"), if (!(valueOrElse(getBoolean(votingEmissionContract, keyInList(pool)), false)))
194+ then true
195+ else throw("pool is in emission voting list")]
196+ if ((checks == checks))
200197 then {
201- let ensureAmountAssetVerified = if (isManager(i))
202- then unit
203- else {
204- let inv = match invoke(assetsStoreContract, "isVerifiedREADONLY", [amountAssetId], nil) {
205- case b: Boolean =>
206- if (b)
207- then true
208- else throw("asset is not verified")
209- case _ =>
210- throw("asset is not verified")
211- }
212- if ((inv == inv))
198+ let ensureActive = match invoke(userPoolContract, "statusREADONLY", [amountAssetId, priceAssetId], nil) {
199+ case s: String =>
200+ if ((s == "active"))
201+ then true
202+ else throw("user pool is not active")
203+ case _ =>
204+ throw("user pool is not active")
205+ }
206+ if ((ensureActive == ensureActive))
207+ then {
208+ let ensureAmountAssetVerified = if (isManager(i))
213209 then unit
214- else throw("Strict value is not equal to itself.")
215- }
216- if ((ensureAmountAssetVerified == ensureAmountAssetVerified))
217- then {
218- let burnFeeInv = invoke(emissionContract, "burn", nil, [AttachedPayment(payment.assetId, payment.amount)])
219- if ((burnFeeInv == burnFeeInv))
210+ else {
211+ let inv = match invoke(assetsStoreContract, "isVerifiedREADONLY", [amountAssetId], nil) {
212+ case b: Boolean =>
213+ if (b)
214+ then true
215+ else throw("asset is not verified")
216+ case _ =>
217+ throw("asset is not verified")
218+ }
219+ if ((inv == inv))
220+ then unit
221+ else throw("Strict value is not equal to itself.")
222+ }
223+ if ((ensureAmountAssetVerified == ensureAmountAssetVerified))
220224 then {
221- let newSuggestIndex = match getInteger(keySuggestIndex(amountAssetId, priceAssetId)) {
222- case int: Int =>
223- (int + 1)
224- case _ =>
225- 0
226- }
227- $Tuple2([IntegerEntry(keyInListAssetId(amountAssetId, priceAssetId), newSuggestIndex), IntegerEntry(keyStartHeight(amountAssetId, priceAssetId, newSuggestIndex), height), StringEntry(keyVotingResult(amountAssetId, priceAssetId, newSuggestIndex), totalVotes("0", "0")), IntegerEntry(keySuggestIndex(amountAssetId, priceAssetId), newSuggestIndex)], unit)
225+ let burnFeeInv = invoke(emissionContract, "burn", nil, [AttachedPayment(payment.assetId, payment.amount)])
226+ if ((burnFeeInv == burnFeeInv))
227+ then {
228+ let newSuggestIndex = match getInteger(keySuggestIndex(amountAssetId, priceAssetId)) {
229+ case int: Int =>
230+ (int + 1)
231+ case _ =>
232+ 0
233+ }
234+ $Tuple2([IntegerEntry(keyInListAssetId(amountAssetId, priceAssetId), newSuggestIndex), IntegerEntry(keyStartHeight(amountAssetId, priceAssetId, newSuggestIndex), height), StringEntry(keyVotingResult(amountAssetId, priceAssetId, newSuggestIndex), totalVotes("0", "0")), IntegerEntry(keySuggestIndex(amountAssetId, priceAssetId), newSuggestIndex)], unit)
235+ }
236+ else throw("Strict value is not equal to itself.")
228237 }
229238 else throw("Strict value is not equal to itself.")
230239 }
231240 else throw("Strict value is not equal to itself.")
232241 }
233242 else throw("Strict value is not equal to itself.")
234243 }
235244 else throw("Strict value is not equal to itself.")
236245 }
237246
238247
239248
240249 @Callable(i)
241250 func vote (amountAssetId,priceAssetId,inFavor) = {
242251 let suggestIndex = value(getInteger(keyInListAssetId(amountAssetId, priceAssetId)))
243252 let votingFinishHeight = (value(getInteger(keyStartHeight(amountAssetId, priceAssetId, suggestIndex))) + value(getInteger(keyEpochLength)))
244253 let checks = [if (isDefined(getInteger(keyInListAssetId(amountAssetId, priceAssetId))))
245254 then true
246255 else throw("the token isn't on the voting list"), if ((votingFinishHeight > height))
247256 then true
248257 else throw("too late to vote")]
249258 if ((checks == checks))
250259 then {
251260 let gwxAmount = invoke(boostingContract, "getUserGwxAmountAtHeightREADONLY", [toString(i.caller), votingFinishHeight], nil)
252261 let notZero = if ((asInt(gwxAmount) > 0))
253262 then true
254263 else throw("you don't have gwx")
255264 if ((notZero == notZero))
256265 then {
257266 let vote = match getString(keyVote(amountAssetId, priceAssetId, suggestIndex, toString(i.caller))) {
258267 case s: String =>
259268 let vote = split(s, separator)
260269 let voteValue = vote[1]
261270 let voteType = vote[2]
262271 let isVoteTypeSimilar = if (if ((voteType == "yes"))
263272 then (inFavor == true)
264273 else false)
265274 then true
266275 else if ((voteType == "no"))
267276 then (inFavor == false)
268277 else false
269278 let isVoteValueSimilar = if (isVoteTypeSimilar)
270279 then (asInt(gwxAmount) == parseIntValue(voteValue))
271280 else false
272281 let isNewVoteSimilar = if (if (isVoteTypeSimilar)
273282 then isVoteValueSimilar
274283 else false)
275284 then throw("you already voted")
276285 else invoke(this, "cancelVote", [amountAssetId, priceAssetId], nil)
277286 isNewVoteSimilar
278287 case u: Unit =>
279288 u
280289 case _ =>
281290 throw("Match error")
282291 }
283292 if ((vote == vote))
284293 then {
285294 let votingResult = split(value(getString(keyVotingResult(amountAssetId, priceAssetId, suggestIndex))), separator)
286295 let positiveVotes = votingResult[1]
287296 let negativeVotes = votingResult[2]
288297 let newPositiveAndNegativeVotes = if (inFavor)
289298 then {
290299 let newPositiveVotes = (parseIntValue(positiveVotes) + asInt(gwxAmount))
291300 [toString(newPositiveVotes), negativeVotes]
292301 }
293302 else {
294303 let newNegativeVotes = (parseIntValue(negativeVotes) + asInt(gwxAmount))
295304 [positiveVotes, toString(newNegativeVotes)]
296305 }
297306 let voteKey = keyVote(amountAssetId, priceAssetId, suggestIndex, toString(i.caller))
298307 let voteValue = keyVoteValue(toString(asInt(gwxAmount)), inFavor)
299308 $Tuple2([StringEntry(keyVotingResult(amountAssetId, priceAssetId, suggestIndex), totalVotes(newPositiveAndNegativeVotes[0], newPositiveAndNegativeVotes[1])), StringEntry(voteKey, voteValue)], unit)
300309 }
301310 else throw("Strict value is not equal to itself.")
302311 }
303312 else throw("Strict value is not equal to itself.")
304313 }
305314 else throw("Strict value is not equal to itself.")
306315 }
307316
308317
309318
310319 @Callable(i)
311320 func cancelVote (amountAssetId,priceAssetId) = {
312321 let userAddress = if ((i.caller == this))
313322 then toString(i.originCaller)
314323 else toString(i.caller)
315324 let suggestIndex = value(getInteger(keyInListAssetId(amountAssetId, priceAssetId)))
316325 let checks = [if (isDefined(getString(keyVotingResult(amountAssetId, priceAssetId, suggestIndex))))
317326 then true
318327 else throw("no vote for assets pair")]
319328 if ((checks == checks))
320329 then {
321330 let vote = split(value(getString(keyVote(amountAssetId, priceAssetId, suggestIndex, userAddress))), separator)
322331 let voteValue = vote[1]
323332 let voteType = vote[2]
324333 let votingResult = split(value(getString(keyVotingResult(amountAssetId, priceAssetId, suggestIndex))), separator)
325334 let positiveVotes = votingResult[1]
326335 let negativeVotes = votingResult[2]
327336 let actions = if ((voteType == "yes"))
328337 then {
329338 let newPositiveVotes = (parseIntValue(positiveVotes) - parseIntValue(voteValue))
330339 $Tuple2([StringEntry(keyVotingResult(amountAssetId, priceAssetId, suggestIndex), totalVotes(toString(newPositiveVotes), negativeVotes)), DeleteEntry(keyVote(amountAssetId, priceAssetId, suggestIndex, userAddress))], unit)
331340 }
332341 else {
333342 let newNegativeVotes = (parseIntValue(negativeVotes) - parseIntValue(voteValue))
334343 $Tuple2([StringEntry(keyVotingResult(amountAssetId, priceAssetId, suggestIndex), totalVotes(positiveVotes, toString(newNegativeVotes))), DeleteEntry(keyVote(amountAssetId, priceAssetId, suggestIndex, userAddress))], unit)
335344 }
336345 actions
337346 }
338347 else throw("Strict value is not equal to itself.")
339348 }
340349
341350
342351
343352 @Callable(i)
344353 func setFee (newFee) = {
345354 let checks = [mustManager(i)]
346355 if ((checks == checks))
347356 then [IntegerEntry(keyFeeAmount, newFee)]
348357 else throw("Strict value is not equal to itself.")
349358 }
350359
351360
352361
353362 @Callable(i)
354363 func setThreshold (newThreshold) = {
355364 let checks = [mustManager(i), if ((newThreshold > 0))
356365 then true
357366 else throw("invalid threshold")]
358367 if ((checks == checks))
359368 then $Tuple2([IntegerEntry(keyThreshold, newThreshold)], unit)
360369 else throw("Strict value is not equal to itself.")
361370 }
362371
363372
364373
365374 @Callable(i)
366375 func finalize (amountAssetId,priceAssetId) = {
367376 let suggestIndex = value(getInteger(keyInListAssetId(amountAssetId, priceAssetId)))
368377 let votingFinishHeight = (value(getInteger(keyStartHeight(amountAssetId, priceAssetId, suggestIndex))) + value(getInteger(keyEpochLength)))
369378 let checks = [if (isDefined(getInteger(keyInListAssetId(amountAssetId, priceAssetId))))
370379 then true
371380 else throw("no assets pair"), if ((height >= votingFinishHeight))
372381 then true
373382 else throw("insufficient height for completion")]
374383 if ((checks == checks))
375384 then {
376385 let votingResult = split(value(getString(keyVotingResult(amountAssetId, priceAssetId, suggestIndex))), separator)
377386 let positiveVotes = parseIntValue(votingResult[1])
378387 let negativeVotes = parseIntValue(votingResult[2])
379388 let allVotes = (positiveVotes + negativeVotes)
380389 let threshold = getIntOrFail(keyThreshold)
381390 let actions = if (if ((allVotes >= threshold))
382391 then (positiveVotes > negativeVotes)
383392 else false)
384393 then {
385394 let res = invoke(factoryContract, "setWxEmissionPoolLabel", [amountAssetId, priceAssetId], nil)
386395 if ((res == res))
387396 then {
388397 let votingEmissionInv = invoke(votingEmissionContract, "create", [amountAssetId, priceAssetId], nil)
389398 if ((votingEmissionInv == votingEmissionInv))
390399 then $Tuple2([DeleteEntry(keyInListAssetId(amountAssetId, priceAssetId))], unit)
391400 else throw("Strict value is not equal to itself.")
392401 }
393402 else throw("Strict value is not equal to itself.")
394403 }
395404 else $Tuple2([DeleteEntry(keyInListAssetId(amountAssetId, priceAssetId))], unit)
396405 actions
397406 }
398407 else throw("Strict value is not equal to itself.")
399408 }
400409
401410
402411
403412 @Callable(i)
404413 func setManager (pendingManagerPublicKey) = {
405414 let checkCaller = mustManager(i)
406415 if ((checkCaller == checkCaller))
407416 then {
408417 let checkManagerPublicKey = fromBase58String(pendingManagerPublicKey)
409418 if ((checkManagerPublicKey == checkManagerPublicKey))
410419 then [StringEntry(keyPendingManagerPublicKey(), pendingManagerPublicKey)]
411420 else throw("Strict value is not equal to itself.")
412421 }
413422 else throw("Strict value is not equal to itself.")
414423 }
415424
416425
417426
418427 @Callable(i)
419428 func confirmManager () = {
420429 let pm = pendingManagerPublicKeyOrUnit()
421430 let hasPM = if (isDefined(pm))
422431 then true
423432 else throw("no pending manager")
424433 if ((hasPM == hasPM))
425434 then {
426435 let checkPM = if ((i.callerPublicKey == value(pm)))
427436 then true
428437 else throw("you are not pending manager")
429438 if ((checkPM == checkPM))
430439 then [StringEntry(keyManagerPublicKey(), toBase58String(value(pm))), DeleteEntry(keyPendingManagerPublicKey())]
431440 else throw("Strict value is not equal to itself.")
432441 }
433442 else throw("Strict value is not equal to itself.")
434443 }
435444
436445
437446 @Verifier(tx)
438447 func verify () = {
439448 let targetPublicKey = match managerPublicKeyOrUnit() {
440449 case pk: ByteVector =>
441450 pk
442451 case _: Unit =>
443452 tx.senderPublicKey
444453 case _ =>
445454 throw("Match error")
446455 }
447456 sigVerify(tx.bodyBytes, tx.proofs[0], targetPublicKey)
448457 }
449458

github/deemru/w8io/873ac7e 
55.43 ms