tx · 9LX9TmfgFMvNdxpdNuFmF1cnHUb3bVbQmBTqccJWMyWe

3NBqs2vfpyT5cMdUJ97mEJ1Ycp2y8GbAZDA:  -0.01300000 Waves

2023.03.24 14:58 [2504059] smart account 3NBqs2vfpyT5cMdUJ97mEJ1Ycp2y8GbAZDA > SELF 0.00000000 Waves

{ "type": 13, "id": "9LX9TmfgFMvNdxpdNuFmF1cnHUb3bVbQmBTqccJWMyWe", "fee": 1300000, "feeAssetId": null, "timestamp": 1679659141779, "version": 2, "chainId": 84, "sender": "3NBqs2vfpyT5cMdUJ97mEJ1Ycp2y8GbAZDA", "senderPublicKey": "H19CeJVbUnfsK8EYs8K6fHxwBH7pLyxw8WCDFu7D4rGQ", "proofs": [ "397XGJDYjUEY4Ej2jZZtZbWREGCvu5fE54jfb1riT2JjLBq89BvKFfscYbRFfX8uKQ848cBiJPyUR5SPvahQ1DPo" ], "script": "base64:AAIFAAAAAAAABiAIAhIJCgcIAQEBAQEIEgMKAQgSAwoBARIAEgMKAQgSABIAIgNTRVAiD2dldFN0cmluZ09yRmFpbCIHYWRkcmVzcyIDa2V5IhFrZXlGYWN0b3J5QWRkcmVzcyIZa2V5Vm90aW5nVmVyaWZpZWRDb250cmFjdCIia2V5Vm90aW5nRW1pc3Npb25DYW5kaWRhdGVDb250cmFjdCIUa2V5VXNlclBvb2xzQ29udHJhY3QiFnZvdGluZ1ZlcmlmaWVkQ29udHJhY3QiH3ZvdGluZ0VtaXNzaW9uQ2FuZGlkYXRlQ29udHJhY3QiEXVzZXJQb29sc0NvbnRyYWN0IhhJZHhGYWN0b3J5Q2ZnU3Rha2luZ0RhcHAiGUlkeEZhY3RvcnlDZmdCb29zdGluZ0RhcHAiFElkeEZhY3RvcnlDZmdJZG9EYXBwIhVJZHhGYWN0b3J5Q2ZnVGVhbURhcHAiGUlkeEZhY3RvcnlDZmdFbWlzc2lvbkRhcHAiFUlkeEZhY3RvcnlDZmdSZXN0RGFwcCIZSWR4RmFjdG9yeUNmZ1NsaXBwYWdlRGFwcCIaSWR4RmFjdG9yeUNmZ0d3eFJld2FyZERhcHAiDWtleUZhY3RvcnlDZmciGmtleUZhY3RvcnlMcDJBc3NldHNNYXBwaW5nIgpscEFzc2V0U3RyIhBrZXlGYWN0b3J5THBMaXN0IiZrZXlGYWN0b3J5THBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcyIUa2V5RmFjdG9yeVBvb2xXZWlnaHQiD2NvbnRyYWN0QWRkcmVzcyIYcmVhZEZhY3RvcnlBZGRyZXNzT3JGYWlsIgpyZWFkTHBMaXN0IhRyZWFkRmFjdG9yeUNmZ09yRmFpbCIHZmFjdG9yeSIYZ2V0Qm9vc3RpbmdBZGRyZXNzT3JGYWlsIgpmYWN0b3J5Q2ZnIhhnZXRFbWlzc2lvbkFkZHJlc3NPckZhaWwiF2dldFN0YWtpbmdBZGRyZXNzT3JGYWlsIhlnZXRHd3hSZXdhcmRBZGRyZXNzT3JGYWlsIglrZXlDb25maWciGWtleVJhdGVQZXJCbG9ja01heEN1cnJlbnQiG2tleVJhdGVQZXJCbG9ja01heFN0YXJ0RnJvbSIJdGltZXN0YW1wIgVibG9jayIWa2V5UmF0ZVBlckJsb2NrQ3VycmVudCIYa2V5UmF0ZVBlckJsb2NrU3RhcnRGcm9tIhVrZXlFbWlzc2lvblN0YXJ0QmxvY2siG2tleUVtaXNzaW9uRHVyYXRpb25JbkJsb2NrcyITa2V5RW1pc3Npb25FbmRCbG9jayINa2V5Qm9vc3RDb2VmZiIRYm9vc3RDb2VmZkRlZmF1bHQiCmJvb3N0Q29lZmYiE2tleU1hbmFnZXJQdWJsaWNLZXkiGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5IhZtYW5hZ2VyUHVibGljS2V5T3JVbml0IgckbWF0Y2gwIgFzIh1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdCILbXVzdE1hbmFnZXIiAWkiAnBkIgJwayIOZmFjdG9yeUFkZHJlc3MiD3JhdGVQZXJCbG9ja01heCIMcmF0ZVBlckJsb2NrIhJlbWlzc2lvblN0YXJ0QmxvY2siEGVtaXNzaW9uRHVyYXRpb24iFmVtaXNzaW9uU3RhcnRUaW1lc3RhbXAiDHd4QXNzZXRJZFN0ciILY2hlY2tDYWxsZXIiGXZvdGluZ1ZlcmlmaWVkQ29udHJhY3RQcm0iBmFtb3VudCIPZmFjdG9yeUNvbnRyYWN0Ig9zdGFraW5nQ29udHJhY3QiEmd3eFJld2FyZHNDb250cmFjdCIGY2FsbGVyIgl3eEFzc2V0SWQiEGJvb3N0aW5nQ29udHJhY3QiA3BtdCIHYXNzZXRJZCIJcG10QW1vdW50IhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSIVY2hlY2tNYW5hZ2VyUHVibGljS2V5IgJwbSIFaGFzUE0iB2NoZWNrUE0iAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleQAAAC0AAAAAAWECAAAAAl9fAQAAAAFiAAAAAgAAAAFjAAAAAWQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAFjBQAAAAFkCQABLAAAAAIJAAEsAAAAAgIAAAAPbWFuZGF0b3J5IHRoaXMuBQAAAAFkAgAAAA8gaXMgbm90IGRlZmluZWQBAAAAAWUAAAAAAgAAABwlcyVzX19jb25maWdfX2ZhY3RvcnlBZGRyZXNzAAAAAAFmAgAAACQlcyVzX19jb25maWdfX3ZvdGlu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", "height": 2504059, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 79LB3d775zFyxAnyhqUJveBX71FNYShdAZXHKXogKH2F Next: 7A5u8p8xKPJ1cD8oHe5VmfWhFYW1wU213LEv7ycbEKrC Diff:
OldNewDifferences
9696
9797 func keyEmissionEndBlock () = "%s%s__emission__endBlock"
9898
99+
100+func keyBoostCoeff () = "%s__boostCoeff"
101+
102+
103+let boostCoeffDefault = 3
104+
105+let boostCoeff = valueOrElse(getInteger(this, keyBoostCoeff()), boostCoeffDefault)
99106
100107 func keyManagerPublicKey () = "%s__managerPublicKey"
101108
238245 }
239246
240247
248+
249+@Callable(i)
250+func getBoostCoeffREADONLY () = $Tuple2(nil, boostCoeff)
251+
252+
241253 @Verifier(tx)
242254 func verify () = {
243255 let targetPublicKey = match managerPublicKeyOrUnit() {
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let SEP = "__"
55
66 func getStringOrFail (address,key) = valueOrErrorMessage(getString(address, key), (("mandatory this." + key) + " is not defined"))
77
88
99 func keyFactoryAddress () = "%s%s__config__factoryAddress"
1010
1111
1212 let keyVotingVerifiedContract = "%s%s__config__votingVerifiedContract"
1313
1414 let keyVotingEmissionCandidateContract = "%s%s__config__votingEmissionCandidateContract"
1515
1616 let keyUserPoolsContract = "%s%s__config__userPoolsContract"
1717
1818 let votingVerifiedContract = addressFromStringValue(getStringOrFail(this, keyVotingVerifiedContract))
1919
2020 let votingEmissionCandidateContract = addressFromStringValue(getStringOrFail(this, keyVotingEmissionCandidateContract))
2121
2222 let userPoolsContract = addressFromStringValue(getStringOrFail(this, keyUserPoolsContract))
2323
2424 let IdxFactoryCfgStakingDapp = 1
2525
2626 let IdxFactoryCfgBoostingDapp = 2
2727
2828 let IdxFactoryCfgIdoDapp = 3
2929
3030 let IdxFactoryCfgTeamDapp = 4
3131
3232 let IdxFactoryCfgEmissionDapp = 5
3333
3434 let IdxFactoryCfgRestDapp = 6
3535
3636 let IdxFactoryCfgSlippageDapp = 7
3737
3838 let IdxFactoryCfgGwxRewardDapp = 10
3939
4040 func keyFactoryCfg () = "%s__factoryConfig"
4141
4242
4343 func keyFactoryLp2AssetsMapping (lpAssetStr) = makeString(["%s%s%s", lpAssetStr, "mappings__lpAsset2PoolContract"], SEP)
4444
4545
4646 func keyFactoryLpList () = "%s__lpTokensList"
4747
4848
4949 func keyFactoryLpAssetToPoolContractAddress (lpAssetStr) = makeString(["%s%s%s", lpAssetStr, "mappings__lpAsset2PoolContract"], SEP)
5050
5151
5252 func keyFactoryPoolWeight (contractAddress) = makeString(["%s%s", "poolWeight", contractAddress], SEP)
5353
5454
5555 func readFactoryAddressOrFail () = addressFromStringValue(getStringOrFail(this, keyFactoryAddress()))
5656
5757
5858 func readLpList () = split(valueOrElse(getString(readFactoryAddressOrFail(), keyFactoryLpList()), ""), SEP)
5959
6060
6161 func readFactoryCfgOrFail (factory) = split(getStringOrFail(factory, keyFactoryCfg()), SEP)
6262
6363
6464 func getBoostingAddressOrFail (factoryCfg) = addressFromStringValue(factoryCfg[IdxFactoryCfgBoostingDapp])
6565
6666
6767 func getEmissionAddressOrFail (factoryCfg) = addressFromStringValue(factoryCfg[IdxFactoryCfgEmissionDapp])
6868
6969
7070 func getStakingAddressOrFail (factoryCfg) = addressFromStringValue(factoryCfg[IdxFactoryCfgStakingDapp])
7171
7272
7373 func getGwxRewardAddressOrFail (factoryCfg) = addressFromStringValue(factoryCfg[IdxFactoryCfgGwxRewardDapp])
7474
7575
7676 func keyConfig () = "%s__config"
7777
7878
7979 func keyRatePerBlockMaxCurrent () = "%s%s__ratePerBlockMax__current"
8080
8181
8282 func keyRatePerBlockMaxStartFrom (timestamp,block) = makeString(["%s%s%d%d__ratePerBlockMax__start", toString(timestamp), toString(block)], SEP)
8383
8484
8585 func keyRatePerBlockCurrent () = "%s%s__ratePerBlock__current"
8686
8787
8888 func keyRatePerBlockStartFrom (timestamp,block) = makeString(["%s%s%d%d__ratePerBlock__start", toString(timestamp), toString(block)], SEP)
8989
9090
9191 func keyEmissionStartBlock () = "%s%s__emission__startBlock"
9292
9393
9494 func keyEmissionDurationInBlocks () = "%s%s__emission__duration"
9595
9696
9797 func keyEmissionEndBlock () = "%s%s__emission__endBlock"
9898
99+
100+func keyBoostCoeff () = "%s__boostCoeff"
101+
102+
103+let boostCoeffDefault = 3
104+
105+let boostCoeff = valueOrElse(getInteger(this, keyBoostCoeff()), boostCoeffDefault)
99106
100107 func keyManagerPublicKey () = "%s__managerPublicKey"
101108
102109
103110 func keyPendingManagerPublicKey () = "%s__pendingManagerPublicKey"
104111
105112
106113 func managerPublicKeyOrUnit () = match getString(keyManagerPublicKey()) {
107114 case s: String =>
108115 fromBase58String(s)
109116 case _: Unit =>
110117 unit
111118 case _ =>
112119 throw("Match error")
113120 }
114121
115122
116123 func pendingManagerPublicKeyOrUnit () = match getString(keyPendingManagerPublicKey()) {
117124 case s: String =>
118125 fromBase58String(s)
119126 case _: Unit =>
120127 unit
121128 case _ =>
122129 throw("Match error")
123130 }
124131
125132
126133 func mustManager (i) = {
127134 let pd = throw("Permission denied")
128135 match managerPublicKeyOrUnit() {
129136 case pk: ByteVector =>
130137 if ((i.callerPublicKey == pk))
131138 then true
132139 else pd
133140 case _: Unit =>
134141 if ((i.caller == this))
135142 then true
136143 else pd
137144 case _ =>
138145 throw("Match error")
139146 }
140147 }
141148
142149
143150 @Callable(i)
144151 func constructor (factoryAddress,ratePerBlockMax,ratePerBlock,emissionStartBlock,emissionDuration,emissionStartTimestamp,wxAssetIdStr) = {
145152 let checkCaller = mustManager(i)
146153 if ((checkCaller == checkCaller))
147154 then [IntegerEntry(keyRatePerBlockMaxStartFrom(emissionStartTimestamp, emissionStartBlock), ratePerBlockMax), IntegerEntry(keyRatePerBlockMaxCurrent(), ratePerBlockMax), IntegerEntry(keyRatePerBlockStartFrom(emissionStartTimestamp, emissionStartBlock), ratePerBlock), IntegerEntry(keyRatePerBlockCurrent(), ratePerBlock), IntegerEntry(keyEmissionStartBlock(), emissionStartBlock), IntegerEntry(keyEmissionDurationInBlocks(), emissionDuration), IntegerEntry(keyEmissionEndBlock(), (emissionStartBlock + emissionDuration)), StringEntry(keyFactoryAddress(), factoryAddress), StringEntry(keyConfig(), ("%s__" + wxAssetIdStr))]
148155 else throw("Strict value is not equal to itself.")
149156 }
150157
151158
152159
153160 @Callable(i)
154161 func constructorV2 (votingVerifiedContractPrm) = {
155162 let checkCaller = mustManager(i)
156163 if ((checkCaller == checkCaller))
157164 then $Tuple2([StringEntry(keyVotingVerifiedContract, votingVerifiedContractPrm)], unit)
158165 else throw("Strict value is not equal to itself.")
159166 }
160167
161168
162169
163170 @Callable(i)
164171 func emit (amount) = if ((0 >= amount))
165172 then $Tuple2(nil, nil)
166173 else {
167174 let factoryContract = readFactoryAddressOrFail()
168175 let factoryCfg = readFactoryCfgOrFail(factoryContract)
169176 let stakingContract = getStakingAddressOrFail(factoryCfg)
170177 let gwxRewardsContract = getGwxRewardAddressOrFail(factoryCfg)
171178 let caller = i.caller
172179 if (if ((caller != stakingContract))
173180 then (caller != gwxRewardsContract)
174181 else false)
175182 then throw("permissions denied")
176183 else {
177184 let wxAssetIdStr = split(getStringOrFail(this, keyConfig()), SEP)[1]
178185 let wxAssetId = fromBase58String(wxAssetIdStr)
179186 $Tuple2([ScriptTransfer(caller, amount, wxAssetId)], [wxAssetId])
180187 }
181188 }
182189
183190
184191
185192 @Callable(i)
186193 func burn () = {
187194 let factoryContract = readFactoryAddressOrFail()
188195 let factoryCfg = readFactoryCfgOrFail(factoryContract)
189196 let boostingContract = getBoostingAddressOrFail(factoryCfg)
190197 if ((size(i.payments) != 1))
191198 then throw("exact one payment is allowed")
192199 else {
193200 let pmt = i.payments[0]
194201 let assetId = value(pmt.assetId)
195202 let pmtAmount = pmt.amount
196203 let wxAssetId = fromBase58String(split(getStringOrFail(this, keyConfig()), SEP)[1])
197204 if ((assetId != wxAssetId))
198205 then throw("invalid wxAssetId is passed")
199206 else if (!(containsElement([boostingContract, votingVerifiedContract, votingEmissionCandidateContract, userPoolsContract], i.caller)))
200207 then throw("permissions denied")
201208 else [Burn(assetId, pmtAmount), StringEntry(("%s%s%s__history__burn__" + toBase58String(i.transactionId)), makeString(["%d%d%d", toString(height), toString(lastBlock.timestamp), toString(pmtAmount)], SEP))]
202209 }
203210 }
204211
205212
206213
207214 @Callable(i)
208215 func setManager (pendingManagerPublicKey) = {
209216 let checkCaller = mustManager(i)
210217 if ((checkCaller == checkCaller))
211218 then {
212219 let checkManagerPublicKey = fromBase58String(pendingManagerPublicKey)
213220 if ((checkManagerPublicKey == checkManagerPublicKey))
214221 then [StringEntry(keyPendingManagerPublicKey(), pendingManagerPublicKey)]
215222 else throw("Strict value is not equal to itself.")
216223 }
217224 else throw("Strict value is not equal to itself.")
218225 }
219226
220227
221228
222229 @Callable(i)
223230 func confirmManager () = {
224231 let pm = pendingManagerPublicKeyOrUnit()
225232 let hasPM = if (isDefined(pm))
226233 then true
227234 else throw("No pending manager")
228235 if ((hasPM == hasPM))
229236 then {
230237 let checkPM = if ((i.callerPublicKey == value(pm)))
231238 then true
232239 else throw("You are not pending manager")
233240 if ((checkPM == checkPM))
234241 then [StringEntry(keyManagerPublicKey(), toBase58String(value(pm))), DeleteEntry(keyPendingManagerPublicKey())]
235242 else throw("Strict value is not equal to itself.")
236243 }
237244 else throw("Strict value is not equal to itself.")
238245 }
239246
240247
248+
249+@Callable(i)
250+func getBoostCoeffREADONLY () = $Tuple2(nil, boostCoeff)
251+
252+
241253 @Verifier(tx)
242254 func verify () = {
243255 let targetPublicKey = match managerPublicKeyOrUnit() {
244256 case pk: ByteVector =>
245257 pk
246258 case _: Unit =>
247259 tx.senderPublicKey
248260 case _ =>
249261 throw("Match error")
250262 }
251263 sigVerify(tx.bodyBytes, tx.proofs[0], targetPublicKey)
252264 }
253265

github/deemru/w8io/026f985 
75.64 ms