tx · 96Gx3GQsjJADE4KRw1spA3YBZYLWkk4ujUvY78a64UWW

3MsMP2pb2p8MDd6Rxb7XEXqqwEhE8ATfyai:  -0.02800000 Waves

2022.11.17 14:56 [2321078] smart account 3MsMP2pb2p8MDd6Rxb7XEXqqwEhE8ATfyai > SELF 0.00000000 Waves

{ "type": 13, "id": "96Gx3GQsjJADE4KRw1spA3YBZYLWkk4ujUvY78a64UWW", "fee": 2800000, "feeAssetId": null, "timestamp": 1668686206915, "version": 1, "sender": "3MsMP2pb2p8MDd6Rxb7XEXqqwEhE8ATfyai", "senderPublicKey": "2JEaBjtjvMoNGKZmL9QxYefa1VkMJM3vMW8rNvTs9R2H", "proofs": [ "XMoBowvdcymvoHcSUdhGjbHyim1T3iv4gae9DpJXS9Rr8kWrcqXV773mm9NnNFDE1caEifbzKtJBRCKACarTgjG" ], "script": "base64:AAIFAAAAAAAAEeoIAhIKCggICAgICAgIARIDCgEIEgYKBAgICAgSBAoCCBgSAwoBCBIECgIIGBIDCgEIEgASAwoBGBIKCggICAgICAEICBIECgIIARIDCgEBEgMKAQESBAoCCAESBgoECAgICBIECgIICBIECgIICBIECgIICBIDCgEIEgMKAQgiBlNDQUxFOCIFTVVMVDgiB1NDQUxFMTgiBk1VTFQxOCIOUE9PTFdFSUdIVE1VTFQiDkdXWHZpcnR1YWxQT09MIgxsYWJlbFBvb2xzTHAiEWRlY2ltYWxzTXVsdFByaWNlIgNTRVAiBUVNUFRZIgpQb29sQWN0aXZlIg9Qb29sUHV0RGlzYWJsZWQiE1Bvb2xNYXRjaGVyRGlzYWJsZWQiDFBvb2xTaHV0ZG93biISaWR4SW50ZXJuYWxBc3NldElkIg9pZHhSZXN1dEFjdGlvbnMiIGlkeElmQXNzZXRJZENhbGN1bGF0aW9uUGVyZm9ybWVkIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iC2lkeFBvb2xUeXBlIhNwb29sTGFiZWxXeEVtaXNzaW9uIg92YWxpZFBvb2xMYWJlbHMiFmtleUFsbG93ZWRMcFNjcmlwdEhhc2giHGtleUFsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2giIWtleUFsbG93ZWRMcFN0YWJsZUFkZG9uU2NyaXB0SGFzaCIQa2V5RmFjdG9yeUNvbmZpZyIPa2V5THBUb2tlbnNMaXN0IhFrZXlQb29sU2NyaXB0SGFzaCINa2V5TWF0Y2hlclB1YiIYa2V5TGVnYWN5RmFjdG9yeUNvbnRyYWN0Ig5rZXlMZWdhY3lQb29scyITa2V5TWFuYWdlclB1YmxpY0tleSIaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiD2tleUFkbWluUHViS2V5cyIWa2V5QXNzZXRzU3RvcmVDb250cmFjdCIZa2V5Vm90aW5nRW1pc3Npb25Db250cmFjdCIOa2V5UHJpY2VBc3NldHMiEGtleVByaWNlRGVjaW1hbHMiE2tleUFsbFBvb2xzU2h1dGRvd24iFmtleU5leHRJbnRlcm5hbEFzc2V0SWQiD2tleVBvb2xUb1dlaWdodCILcG9vbEFkZHJlc3MiFmtleVBvb2xUb1dlaWdodEhpc3RvcnkiA251bSIfa2V5TWFwcGluZ3NJbnRlcm5hbDJiYXNlQXNzZXRJZCIRaW50ZXJuYWxCYXNlQXNzZXQiH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQiDGJhc2VBc3NldFN0ciINa2V5UG9vbENvbmZpZyITYW1vdW50QXNzZXRJbnRlcm5hbCIScHJpY2VBc3NldEludGVybmFsIiFrZXlQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiDmFzc2V0c0ludGVybmFsIgskdDAzNTg3MzY0OSIla2V5QWxsUG9vbHNPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCIda2V5TWFwcGluZ0xwQXNzZXRUb1Bvb2xBc3NldHMiCmxwQXNzZXRTdHIiHWtleU1hcHBpbmdQb29sQXNzZXRzVG9McGFzc2V0IhhpbnRlcm5hbEFtb3VudEFzc2V0SWRTdHIiF2ludGVybmFsUHJpY2VBc3NldElkU3RyIilrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cyITcG9vbENvbnRyYWN0QWRkcmVzcyIpa2V5TWFwcGluZ1Bvb2xBc3NldHNUb1Bvb2xDb250cmFjdEFkZHJlc3MiH2tleU1hcHBpbmdQb29sQ29udHJhY3RUb0xQQXNzZXQiKmtleU1hcHBpbmdQb29sTFBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcyINa2V5V3hFbWlzc2lvbiINYW1vdW50QXNzZXRJZCIMcHJpY2VBc3NldElkIg9nZXRTdHJpbmdPckZhaWwiA2tleSIQZ2V0Qm9vbGVhbk9yRmFpbCIMZ2V0SW50T3JGYWlsIhhJZHhGYWN0b3J5Q2ZnU3Rha2luZ0RhcHAiGUlkeEZhY3RvcnlDZmdCb29zdGluZ0RhcHAiFElkeEZhY3RvcnlDZmdJZG9EYXBwIhVJZHhGYWN0b3J5Q2ZnVGVhbURhcHAiGUlkeEZhY3RvcnlDZmdFbWlzc2lvbkRhcHAiFUlkeEZhY3RvcnlDZmdSZXN0RGFwcCIZSWR4RmFjdG9yeUNmZ1NsaXBwYWdlRGFwcCIUSWR4RmFjdG9yeUNmZ0Rhb0RhcHAiGklkeEZhY3RvcnlDZmdNYXJrZXRpbmdEYXBwIhpJZHhGYWN0b3J5Q2ZnR3d4UmV3YXJkRGFwcCIWSWR4RmFjdG9yeUNmZ0JpcmRzRGFwcCIYZ2V0Qm9vc3RpbmdBZGRyZXNzT3JGYWlsIgpmYWN0b3J5Q2ZnIhhnZXRFbWlzc2lvbkFkZHJlc3NPckZhaWwiF2dldFN0YWtpbmdBZGRyZXNzT3JGYWlsIhlnZXRHd3hSZXdhcmRBZGRyZXNzT3JGYWlsIg5nZXRQcmljZUFzc2V0cyIHJG1hdGNoMCIBcyIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCIdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQiFXBlcm1pc3Npb25EZW5pZWRFcnJvciIIbXVzdFRoaXMiAWkiC211c3RNYW5hZ2VyIgJwayIQZGF0YUZhY3RvcnlDZmdWMyIOc3Rha2luZ0FkZHJlc3MiD2Jvb3N0aW5nQWRkcmVzcyILaWRvQ29udHJhY3QiDHRlYW1Db250cmFjdCIQZW1pc3Npb25Db250cmFjdCIMcmVzdENvbnRyYWN0IhBzbGlwcGFnZUNvbnRyYWN0IgtkYW9Db250cmFjdCIRbWFya2V0aW5nQ29udHJhY3QiEmd3eFJld2FyZHNDb250cmFjdCINYmlyZHNDb250cmFjdCIOZGF0YUZhY3RvcnlDZmciC2RhdGFQb29sQ2ZnIgpwb29sU3RhdHVzIglscEFzc2V0SWQiDmFtb3VudEFzc2V0U3RyIg1wcmljZUFzc2V0U3RyIhNhbW91bnRBc3NldERlY2ltYWxzIhJwcmljZUFzc2V0RGVjaW1hbHMiFWFtb3VudEFzc2V0SW50ZXJuYWxJZCIUcHJpY2VBc3NldEludGVybmFsSWQiD2xwQXNzZXREZWNpbWFscyIIcG9vbFR5cGUiFWRhdGFNYXBwaW5nUG9vbEFzc2V0cyIWaW50ZXJuYWxBbW91bnRBc3NldFN0ciIVaW50ZXJuYWxQcmljZUFzc2V0U3RyIg1nZXRQb29sQ29uZmlnIgpwb29sQXNzZXRzIhpnZXRJbnRlcm5hbEFzc2V0SWRPckNyZWF0ZSIKYXNzZXRJZFN0ciILaW5jcmVtZW50b3IiD2ludGVybmFsQXNzZXRJZCIYY3VycmVudEluZGV4T2ZJbnRlcm5hbElkIgZyZXN1bHQiEm5ld0ludGVybmFsQXNzZXRJZCIJbXVzdEFkbWluIghhZG1pblBLcyIJaXNNYW5hZ2VyIg9zdGFraW5nQ29udHJhY3QiEGJvb3N0aW5nQ29udHJhY3QiEHNscGlwYWdlQ29udHJhY3QiDXByaWNlRGVjaW1hbHMiC2NoZWNrQ2FsbGVyIhBtYXRoY2hlclB1YjU4U3RyIgptYXRoY2VyUHViIhVsZWdhY3lGYWN0b3J5Q29udHJhY3QiC2xlZ2FjeVBvb2xzIhNhc3NldHNTdG9yZUNvbnRyYWN0IhZ2b3RpbmdFbWlzc2lvbkNvbnRyYWN0IgtwcmljZUFzc2V0cyIFY2hla3MiF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IhVjaGVja01hbmFnZXJQdWJsaWNLZXkiAnBtIgVoYXNQTSIHY2hlY2tQTSIMYWRtaW5QdWJLZXlzIgtscEFzc2V0TmFtZSIMbHBBc3NldERlc2NyIgpwb29sV2VpZ2h0IgRsb2dvIhdpbnRlcm5hbEFtb3VudEFzc2V0RGF0YSIVaW50ZXJuYWxBbW91bnRBc3NldElkIhZpbnRlcm5hbFByaWNlQXNzZXREYXRhIhRpbnRlcm5hbFByaWNlQXNzZXRJZCIVcG9vbEFjY291bnRTY3JpcHRIYXNoIhxldGhhbG9uUG9vbEFjY291bnRTY3JpcHRIYXNoIgpwb29sQ29uZmlnIg9wb29sQ29uZmlnVmFsdWUiFGFtb3VudEFzc2V0c0RlY2ltYWxzIhNwcmljZUFzc2V0c0RlY2ltYWxzIhJscEFzc2V0SXNzdWVBY3Rpb24iDGxwQXNzZXRJZFN0ciIYcG9vbEFjdGl2YXRlSW52b2tlUmVzdWx0IhhjcmVhdGVPclVwZGF0ZUxwQXNzZXRJbnYiEmFkZFBvb2xzTHBMYWJlbEludiIKc2V0TG9nb0ludiIQYWRkQXNzZXRzTGlua0ludiIbaW5jcmVhc2VBc3NldFBvb2xzTnVtYmVySW52IgluZXdTdGF0dXMiCmxwQXNzZXREY20iDGFtb3VudFRvRW1pdCIGY2FsbGVyIgxvcmlnaW5DYWxsZXIiEGxwQXNzZXRSZXF1ZXN0ZWQiB2xwQXNzZXQiDGFtb3VudFRvQnVybiIHcGF5bWVudCINcGF5bWVudEFtb3VudCIPaW5BbW91bnRBc3NldElkIhpscEFzc2V0UmVxdWVzdGVkRm9yQnVybmluZyIFc2hhcmUiDXBvb2xXZWlnaHRLZXkiDGd3eFdlaWdodEtleSIJZ3d4V2VpZ2h0Ig1wb29sV2VpZ2h0TmV3IhFvbk1vZGlmeVdlaWdodEludiIVZ3d4VmlydHVhbFBvb2xBY3Rpb25zIhRwb29sV2VpZ2h0SGlzdG9yeUtleSIXcG9vbFdlaWdodEhpc3RvcnlPclVuaXQiGHBvb2xXZWlnaHRIaXN0b3J5QWN0aW9ucyIOYnRjUG9vbEFkZHJlc3MiDmV0aFBvb2xBZGRyZXNzIhFldGhCdGNQb29sQWRkcmVzcyITdXNkY1VzZHRQb29sQWRkcmVzcyIPZXRoQnRjV2VpZ2h0TmV3IhF1c2RjVXNkdFdlaWdodE5ldyIPd2VpZ2h0RGVjcmVtZW50IgtzdGFraW5nRGFwcCINZ3d4UmV3YXJkRGFwcCIMYnRjV2VpZ2h0S0VZIgxldGhXZWlnaHRLRVkiD2V0aEJ0Y1dlaWdodEtFWSIRdXNkY1VzZHRXZWlnaHRLRVkiCWJ0Y1dlaWdodCIJZXRoV2VpZ2h0IgxidGNXZWlnaHROZXciDGV0aFdlaWdodE5ldyIPYnRjTHBBc3NldElkU3RyIg9ldGhMcEFzc2V0SWRTdHIiEmV0aEJ0Y0xwQXNzZXRJZFN0ciIUdXNkY1VzZHRMcEFzc2V0SWRTdHIiEW9uTW9kaWZ5V2VpZ2h0QnRjIhFvbk1vZGlmeVdlaWdodEV0aCIUb25Nb2RpZnlXZWlnaHRFdGhCdGMiFm9uTW9kaWZ5V2VpZ2h0VXNkY1VzZHQiCWhhdmVMYWJlbCIBYiIHYXNzZXRJZCIUY2hlY2tQcmljZUFzc2V0c1NpemUiAmNiIgNhY2MiCnByaWNlQXNzZXQiAXIiB2FjdGlvbnMiAiRsIgIkcyIFJGFjYzAiBSRmMF8xIgIkYSICJGkiBSRmMF8y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", "chainId": 84, "height": 2321078, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HFVk3sQq8KciTKCj6xFBjxVejZ6Yy1ctyFQ8m2nYFFFe Next: 36WEhWv7xQskRAvrDY3DuqDgrKSFmQQ7WLbhukmxGBik Diff:
OldNewDifferences
717717 let poolConfig = getPoolConfig(poolAddress)
718718 let assetsInternal = $Tuple2(parseIntValue(poolConfig[idxIAmtAssetId]), parseIntValue(poolConfig[idxIPriceAssetId]))
719719 let poolOneTokenOperationsDisabled = valueOrElse(getBoolean(keyPoolOneTokenOperationsDisabled(assetsInternal)), false)
720- let allPoolsOntTokenOperationsDisabled = valueOrElse(getBoolean(keyAllPoolsOneTokenOperationsDisabled()), false)
721- $Tuple2(nil, if (allPoolsOntTokenOperationsDisabled)
720+ let allPoolsOneTokenOperationsDisabled = valueOrElse(getBoolean(keyAllPoolsOneTokenOperationsDisabled()), false)
721+ $Tuple2(nil, if (allPoolsOneTokenOperationsDisabled)
722722 then true
723723 else poolOneTokenOperationsDisabled)
724724 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let SCALE8 = 8
55
66 let MULT8 = 100000000
77
88 let SCALE18 = 18
99
1010 let MULT18 = toBigInt(1000000000000000000)
1111
1212 let POOLWEIGHTMULT = MULT8
1313
1414 let GWXvirtualPOOL = "GWXvirtualPOOL"
1515
1616 let labelPoolsLp = "POOLS_LP"
1717
1818 let decimalsMultPrice = ((100 * 1000) * 1000)
1919
2020 let SEP = "__"
2121
2222 let EMPTY = ""
2323
2424 let PoolActive = 1
2525
2626 let PoolPutDisabled = 2
2727
2828 let PoolMatcherDisabled = 3
2929
3030 let PoolShutdown = 4
3131
3232 let idxInternalAssetId = 1
3333
3434 let idxResutActions = 2
3535
3636 let idxIfAssetIdCalculationPerformed = 3
3737
3838 let idxPoolAddress = 1
3939
4040 let idxPoolStatus = 2
4141
4242 let idxPoolLPAssetId = 3
4343
4444 let idxAmtAssetId = 4
4545
4646 let idxPriceAssetId = 5
4747
4848 let idxAmtAssetDcm = 6
4949
5050 let idxPriceAssetDcm = 7
5151
5252 let idxIAmtAssetId = 8
5353
5454 let idxIPriceAssetId = 9
5555
5656 let idxLPAssetDcm = 10
5757
5858 let idxPoolType = 11
5959
6060 let poolLabelWxEmission = "WX_EMISSION"
6161
6262 let validPoolLabels = [poolLabelWxEmission]
6363
6464 func keyAllowedLpScriptHash () = "%s__allowedLpScriptHash"
6565
6666
6767 func keyAllowedLpStableScriptHash () = "%s__allowedLpStableScriptHash"
6868
6969
7070 func keyAllowedLpStableAddonScriptHash () = "%s__allowedLpStableAddonScriptHash"
7171
7272
7373 func keyFactoryConfig () = "%s__factoryConfig"
7474
7575
7676 func keyLpTokensList () = "%s__lpTokensList"
7777
7878
7979 func keyPoolScriptHash () = "%s%s__pool__scriptHash"
8080
8181
8282 func keyMatcherPub () = "%s%s__matcher__publicKey"
8383
8484
8585 func keyLegacyFactoryContract () = "%s__legacyFactoryContract"
8686
8787
8888 func keyLegacyPools () = "%s__legacyPools"
8989
9090
9191 func keyManagerPublicKey () = "%s__managerPublicKey"
9292
9393
9494 func keyPendingManagerPublicKey () = "%s__pendingManagerPublicKey"
9595
9696
9797 func keyAdminPubKeys () = "%s__adminPubKeys"
9898
9999
100100 func keyAssetsStoreContract () = "%s__assetsStoreContract"
101101
102102
103103 func keyVotingEmissionContract () = "%s__votingEmissionContract"
104104
105105
106106 func keyPriceAssets () = makeString(["%s", "priceAssets"], SEP)
107107
108108
109109 func keyPriceDecimals () = "%s__priceDecimals"
110110
111111
112112 func keyAllPoolsShutdown () = "%s__shutdown"
113113
114114
115115 func keyNextInternalAssetId () = "%s__nextInternalAssetId"
116116
117117
118118 func keyPoolToWeight (poolAddress) = ("%s%s__poolWeight__" + poolAddress)
119119
120120
121121 func keyPoolToWeightHistory (poolAddress,num) = ((("%s%s__poolWeight__" + poolAddress) + "__") + toString(num))
122122
123123
124124 func keyMappingsInternal2baseAssetId (internalBaseAsset) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(internalBaseAsset))
125125
126126
127127 func keyMappingsBaseAsset2internalId (baseAssetStr) = ("%s%s%s__mappings__baseAsset2internalId__" + baseAssetStr)
128128
129129
130130 func keyPoolConfig (amountAssetInternal,priceAssetInternal) = (((("%d%d%s__" + amountAssetInternal) + "__") + priceAssetInternal) + "__config")
131131
132132
133133 func keyPoolOneTokenOperationsDisabled (assetsInternal) = {
134134 let $t035873649 = assetsInternal
135135 let amountAssetInternal = $t035873649._1
136136 let priceAssetInternal = $t035873649._2
137137 makeString(["%d%d%s", toString(amountAssetInternal), toString(priceAssetInternal), "oneTokenOperationsDisabled"], SEP)
138138 }
139139
140140
141141 func keyAllPoolsOneTokenOperationsDisabled () = makeString(["%s", "oneTokenOperationsDisabled"], SEP)
142142
143143
144144 func keyMappingLpAssetToPoolAssets (lpAssetStr) = (("%s%s%s__" + lpAssetStr) + "__mappings__lpAsset2Pool")
145145
146146
147147 func keyMappingPoolAssetsToLpasset (internalAmountAssetIdStr,internalPriceAssetIdStr) = (((("%d%d%s%s__" + internalAmountAssetIdStr) + "__") + internalPriceAssetIdStr) + "__mappings__PoolAssets2LpAsset")
148148
149149
150150 func keyMappingPoolContractAddressToPoolAssets (poolContractAddress) = (("%s%s%s__" + poolContractAddress) + "__mappings__poolContract2PoolAssets")
151151
152152
153153 func keyMappingPoolAssetsToPoolContractAddress (internalAmountAssetIdStr,internalPriceAssetIdStr) = (((("%d%d%s%s__" + toString(internalAmountAssetIdStr)) + "__") + toString(internalPriceAssetIdStr)) + "__mappings__poolAssets2PoolContract")
154154
155155
156156 func keyMappingPoolContractToLPAsset (poolContractAddress) = (("%s%s%s__" + poolContractAddress) + "__mappings__poolContract2LpAsset")
157157
158158
159159 func keyMappingPoolLPAssetToPoolContractAddress (lpAssetStr) = (("%s%s%s__" + lpAssetStr) + "__mappings__lpAsset2PoolContract")
160160
161161
162162 func keyWxEmission (amountAssetId,priceAssetId) = ((("%s%s%s__wxEmission__" + amountAssetId) + "__") + priceAssetId)
163163
164164
165165 func getStringOrFail (key) = valueOrErrorMessage(getString(this, key), ("No data for this.key=" + key))
166166
167167
168168 func getBooleanOrFail (key) = valueOrErrorMessage(getBoolean(this, key), ("No data for this.key=" + key))
169169
170170
171171 func getIntOrFail (key) = valueOrErrorMessage(getInteger(this, key), ("No data for this.key=" + key))
172172
173173
174174 let IdxFactoryCfgStakingDapp = 1
175175
176176 let IdxFactoryCfgBoostingDapp = 2
177177
178178 let IdxFactoryCfgIdoDapp = 3
179179
180180 let IdxFactoryCfgTeamDapp = 4
181181
182182 let IdxFactoryCfgEmissionDapp = 5
183183
184184 let IdxFactoryCfgRestDapp = 6
185185
186186 let IdxFactoryCfgSlippageDapp = 7
187187
188188 let IdxFactoryCfgDaoDapp = 8
189189
190190 let IdxFactoryCfgMarketingDapp = 9
191191
192192 let IdxFactoryCfgGwxRewardDapp = 10
193193
194194 let IdxFactoryCfgBirdsDapp = 11
195195
196196 func getBoostingAddressOrFail (factoryCfg) = addressFromStringValue(factoryCfg[IdxFactoryCfgBoostingDapp])
197197
198198
199199 func getEmissionAddressOrFail (factoryCfg) = addressFromStringValue(factoryCfg[IdxFactoryCfgEmissionDapp])
200200
201201
202202 func getStakingAddressOrFail (factoryCfg) = addressFromStringValue(factoryCfg[IdxFactoryCfgStakingDapp])
203203
204204
205205 func getGwxRewardAddressOrFail (factoryCfg) = addressFromStringValue(factoryCfg[IdxFactoryCfgGwxRewardDapp])
206206
207207
208208 func getPriceAssets () = match getString(keyPriceAssets()) {
209209 case s: String =>
210210 if ((size(s) == 0))
211211 then nil
212212 else split(s, SEP)
213213 case _ =>
214214 nil
215215 }
216216
217217
218218 func managerPublicKeyOrUnit () = match getString(keyManagerPublicKey()) {
219219 case s: String =>
220220 fromBase58String(s)
221221 case _: Unit =>
222222 unit
223223 case _ =>
224224 throw("Match error")
225225 }
226226
227227
228228 func pendingManagerPublicKeyOrUnit () = match getString(keyPendingManagerPublicKey()) {
229229 case s: String =>
230230 fromBase58String(s)
231231 case _: Unit =>
232232 unit
233233 case _ =>
234234 throw("Match error")
235235 }
236236
237237
238238 let permissionDeniedError = throw("Permission denied")
239239
240240 func mustThis (i) = if ((i.caller == this))
241241 then true
242242 else permissionDeniedError
243243
244244
245245 func mustManager (i) = match managerPublicKeyOrUnit() {
246246 case pk: ByteVector =>
247247 if ((i.callerPublicKey == pk))
248248 then true
249249 else permissionDeniedError
250250 case _: Unit =>
251251 mustThis(i)
252252 case _ =>
253253 throw("Match error")
254254 }
255255
256256
257257 func dataFactoryCfgV3 (stakingAddress,boostingAddress,idoContract,teamContract,emissionContract,restContract,slippageContract,daoContract,marketingContract,gwxRewardsContract,birdsContract) = makeString(["%s%s%s%s%s%s%s%s%s%s%s", stakingAddress, boostingAddress, idoContract, teamContract, emissionContract, restContract, slippageContract, daoContract, marketingContract, gwxRewardsContract, birdsContract], SEP)
258258
259259
260260 func dataFactoryCfg (stakingAddress,boostingAddress,idoContract,teamContract,emissionContract,restContract,slippageContract) = makeString(["%s%s%s%s%s%s", stakingAddress, boostingAddress, idoContract, teamContract, emissionContract, restContract, slippageContract], SEP)
261261
262262
263263 func dataPoolCfg (poolAddress,poolStatus,lpAssetId,amountAssetStr,priceAssetStr,amountAssetDecimals,priceAssetDecimals,amountAssetInternalId,priceAssetInternalId,lpAssetDecimals,poolType) = makeString(["%s%d%s%s%s%d%d%d%d%d%s", poolAddress, poolStatus, lpAssetId, amountAssetStr, priceAssetStr, toString(amountAssetDecimals), toString(priceAssetDecimals), toString(amountAssetInternalId), toString(priceAssetInternalId), toString(lpAssetDecimals), poolType], SEP)
264264
265265
266266 func dataMappingPoolAssets (internalAmountAssetStr,internalPriceAssetStr) = makeString(["%d%d", toString(internalAmountAssetStr), toString(internalPriceAssetStr)], SEP)
267267
268268
269269 func getPoolConfig (poolAddress) = {
270270 let poolAssets = split(getStringOrFail(keyMappingPoolContractAddressToPoolAssets(poolAddress)), SEP)
271271 let amountAssetInternal = poolAssets[1]
272272 let priceAssetInternal = poolAssets[2]
273273 split(getStringOrFail(keyPoolConfig(amountAssetInternal, priceAssetInternal)), SEP)
274274 }
275275
276276
277277 func getInternalAssetIdOrCreate (assetIdStr,incrementor) = {
278278 let internalAssetId = valueOrElse(getInteger(this, keyMappingsBaseAsset2internalId(assetIdStr)), 0)
279279 let currentIndexOfInternalId = valueOrElse(getInteger(this, keyNextInternalAssetId()), 0)
280280 let result = if ((internalAssetId == 0))
281281 then {
282282 let newInternalAssetId = (currentIndexOfInternalId + incrementor)
283283 $Tuple3(newInternalAssetId, [IntegerEntry(keyNextInternalAssetId(), newInternalAssetId), IntegerEntry(keyMappingsBaseAsset2internalId(assetIdStr), newInternalAssetId), StringEntry(keyMappingsInternal2baseAssetId(newInternalAssetId), assetIdStr)], true)
284284 }
285285 else $Tuple3(internalAssetId, nil, false)
286286 result
287287 }
288288
289289
290290 func mustAdmin (i) = {
291291 let adminPKs = split(valueOrElse(getString(keyAdminPubKeys()), EMPTY), SEP)
292292 if (containsElement(adminPKs, toBase58String(i.callerPublicKey)))
293293 then true
294294 else {
295295 let isManager = mustManager(i)
296296 if ((isManager == isManager))
297297 then true
298298 else throw("Strict value is not equal to itself.")
299299 }
300300 }
301301
302302
303303 @Callable(i)
304304 func constructor (stakingContract,boostingContract,idoContract,teamContract,emissionContract,restContract,slpipageContract,priceDecimals) = {
305305 let checkCaller = mustManager(i)
306306 if ((checkCaller == checkCaller))
307307 then [StringEntry(keyFactoryConfig(), dataFactoryCfg(stakingContract, boostingContract, idoContract, teamContract, emissionContract, restContract, slpipageContract)), IntegerEntry(keyPriceDecimals(), priceDecimals)]
308308 else throw("Strict value is not equal to itself.")
309309 }
310310
311311
312312
313313 @Callable(i)
314314 func constructorV2 (mathcherPub58Str) = {
315315 let checkCaller = mustManager(i)
316316 if ((checkCaller == checkCaller))
317317 then {
318318 let mathcerPub = addressFromPublicKey(fromBase58String(mathcherPub58Str))
319319 if ((mathcerPub == mathcerPub))
320320 then [StringEntry(keyMatcherPub(), mathcherPub58Str)]
321321 else throw("Strict value is not equal to itself.")
322322 }
323323 else throw("Strict value is not equal to itself.")
324324 }
325325
326326
327327
328328 @Callable(i)
329329 func constructorV3 (daoContract,marketingContract,gwxRewardsContract,birdsContract) = {
330330 let checkCaller = mustManager(i)
331331 if ((checkCaller == checkCaller))
332332 then {
333333 let factoryCfg = split(getStringOrFail(keyFactoryConfig()), SEP)
334334 [StringEntry(keyFactoryConfig(), dataFactoryCfgV3(factoryCfg[1], factoryCfg[2], factoryCfg[3], factoryCfg[4], factoryCfg[5], factoryCfg[6], factoryCfg[7], daoContract, marketingContract, gwxRewardsContract, birdsContract))]
335335 }
336336 else throw("Strict value is not equal to itself.")
337337 }
338338
339339
340340
341341 @Callable(i)
342342 func constructorV4 (legacyFactoryContract,legacyPools) = {
343343 let checkCaller = mustManager(i)
344344 if ((checkCaller == checkCaller))
345345 then [StringEntry(keyLegacyFactoryContract(), legacyFactoryContract), StringEntry(keyLegacyPools(), makeString(legacyPools, SEP))]
346346 else throw("Strict value is not equal to itself.")
347347 }
348348
349349
350350
351351 @Callable(i)
352352 func constructorV5 (assetsStoreContract) = {
353353 let checkCaller = mustManager(i)
354354 if ((checkCaller == checkCaller))
355355 then [StringEntry(keyAssetsStoreContract(), assetsStoreContract)]
356356 else throw("Strict value is not equal to itself.")
357357 }
358358
359359
360360
361361 @Callable(i)
362362 func constructorV6 (votingEmissionContract,priceAssets) = {
363363 let cheks = [mustManager(i), if ((addressFromString(votingEmissionContract) != unit))
364364 then true
365365 else "invalid voting emission contract address"]
366366 if ((cheks == cheks))
367367 then [StringEntry(keyVotingEmissionContract(), votingEmissionContract), StringEntry(keyPriceAssets(), makeString(priceAssets, SEP))]
368368 else throw("Strict value is not equal to itself.")
369369 }
370370
371371
372372
373373 @Callable(i)
374374 func setManager (pendingManagerPublicKey) = {
375375 let checkCaller = mustManager(i)
376376 if ((checkCaller == checkCaller))
377377 then {
378378 let checkManagerPublicKey = fromBase58String(pendingManagerPublicKey)
379379 if ((checkManagerPublicKey == checkManagerPublicKey))
380380 then [StringEntry(keyPendingManagerPublicKey(), pendingManagerPublicKey)]
381381 else throw("Strict value is not equal to itself.")
382382 }
383383 else throw("Strict value is not equal to itself.")
384384 }
385385
386386
387387
388388 @Callable(i)
389389 func confirmManager () = {
390390 let pm = pendingManagerPublicKeyOrUnit()
391391 let hasPM = if (isDefined(pm))
392392 then true
393393 else throw("No pending manager")
394394 if ((hasPM == hasPM))
395395 then {
396396 let checkPM = if ((i.callerPublicKey == value(pm)))
397397 then true
398398 else throw("You are not pending manager")
399399 if ((checkPM == checkPM))
400400 then [StringEntry(keyManagerPublicKey(), toBase58String(value(pm))), DeleteEntry(keyPendingManagerPublicKey())]
401401 else throw("Strict value is not equal to itself.")
402402 }
403403 else throw("Strict value is not equal to itself.")
404404 }
405405
406406
407407
408408 @Callable(i)
409409 func setAdmins (adminPubKeys) = {
410410 let checkCaller = mustManager(i)
411411 if ((checkCaller == checkCaller))
412412 then [StringEntry(keyAdminPubKeys(), makeString(adminPubKeys, SEP))]
413413 else throw("Strict value is not equal to itself.")
414414 }
415415
416416
417417
418418 @Callable(i)
419419 func activateNewPool (poolAddress,amountAssetStr,priceAssetStr,lpAssetName,lpAssetDescr,poolWeight,poolType,logo) = {
420420 let checkCaller = mustAdmin(i)
421421 if ((checkCaller == checkCaller))
422422 then if (isDefined(getString(keyMappingPoolContractAddressToPoolAssets(poolAddress))))
423423 then throw((("Pool address " + poolAddress) + " already registered."))
424424 else {
425425 let internalAmountAssetData = getInternalAssetIdOrCreate(amountAssetStr, 1)
426426 let internalAmountAssetId = internalAmountAssetData._1
427427 let internalPriceAssetData = getInternalAssetIdOrCreate(priceAssetStr, if (internalAmountAssetData._3)
428428 then 2
429429 else 1)
430430 let internalPriceAssetId = internalPriceAssetData._1
431431 let poolAccountScriptHash = valueOrErrorMessage(scriptHash(addressFromStringValue(poolAddress)), ("No script has been found on pool account " + poolAddress))
432432 let ethalonPoolAccountScriptHash = getBinaryValue(keyPoolScriptHash())
433433 let poolConfig = getString(this, keyPoolConfig(toString(internalAmountAssetId), toString(internalPriceAssetId)))
434434 if (isDefined(poolConfig))
435435 then throw((((("Pool " + amountAssetStr) + "/") + priceAssetStr) + " has already been activated."))
436436 else {
437437 let poolConfigValue = value(getString(this, keyPoolConfig(toString(internalAmountAssetId), toString(internalPriceAssetId))))
438438 let amountAssetsDecimals = if ((amountAssetStr == "WAVES"))
439439 then decimalsMultPrice
440440 else pow(10, 0, value(assetInfo(fromBase58String(amountAssetStr))).decimals, 0, 0, DOWN)
441441 let priceAssetsDecimals = if ((priceAssetStr == "WAVES"))
442442 then decimalsMultPrice
443443 else pow(10, 0, value(assetInfo(fromBase58String(priceAssetStr))).decimals, 0, 0, DOWN)
444444 let lpAssetIssueAction = Issue(lpAssetName, lpAssetDescr, 1, 8, true)
445445 let lpAssetId = calculateAssetId(lpAssetIssueAction)
446446 let lpAssetIdStr = toBase58String(lpAssetId)
447447 let poolActivateInvokeResult = invoke(addressFromStringValue(poolAddress), "activate", [amountAssetStr, priceAssetStr], nil)
448448 if ((poolActivateInvokeResult == poolActivateInvokeResult))
449449 then if ((poolActivateInvokeResult != "success"))
450450 then throw("Pool initialisation error happened.")
451451 else {
452452 let assetsStoreContract = addressFromStringValue(getStringOrFail(keyAssetsStoreContract()))
453453 let createOrUpdateLpAssetInv = invoke(assetsStoreContract, "createOrUpdate", [lpAssetIdStr, lpAssetName, false], nil)
454454 if ((createOrUpdateLpAssetInv == createOrUpdateLpAssetInv))
455455 then {
456456 let addPoolsLpLabelInv = invoke(assetsStoreContract, "addLabel", [lpAssetIdStr, labelPoolsLp], nil)
457457 if ((addPoolsLpLabelInv == addPoolsLpLabelInv))
458458 then {
459459 let setLogoInv = invoke(assetsStoreContract, "setLogo", [lpAssetIdStr, logo], nil)
460460 if ((setLogoInv == setLogoInv))
461461 then {
462462 let addAssetsLinkInv = invoke(assetsStoreContract, "addAssetsLink", [amountAssetStr, priceAssetStr, lpAssetIdStr], nil)
463463 if ((addAssetsLinkInv == addAssetsLinkInv))
464464 then {
465465 let increaseAssetPoolsNumberInv = invoke(assetsStoreContract, "increaseAssetPoolsNumber", [amountAssetStr], nil)
466466 if ((increaseAssetPoolsNumberInv == increaseAssetPoolsNumberInv))
467467 then $Tuple2(((internalAmountAssetData._2 ++ internalPriceAssetData._2) ++ [lpAssetIssueAction, Burn(lpAssetId, 1), StringEntry(keyPoolConfig(toString(internalAmountAssetId), toString(internalPriceAssetId)), dataPoolCfg(poolAddress, toString(PoolActive), lpAssetIdStr, amountAssetStr, priceAssetStr, amountAssetsDecimals, priceAssetsDecimals, internalAmountAssetId, internalPriceAssetId, decimalsMultPrice, poolType)), StringEntry(keyMappingLpAssetToPoolAssets(lpAssetIdStr), dataMappingPoolAssets(internalAmountAssetId, internalPriceAssetId)), StringEntry(keyMappingPoolAssetsToLpasset(toString(internalAmountAssetId), toString(internalPriceAssetId)), ("%s__" + lpAssetIdStr)), StringEntry(keyMappingPoolContractAddressToPoolAssets(poolAddress), dataMappingPoolAssets(internalAmountAssetId, internalPriceAssetId)), StringEntry(keyMappingPoolAssetsToPoolContractAddress(internalAmountAssetId, internalPriceAssetId), poolAddress), StringEntry(keyMappingPoolLPAssetToPoolContractAddress(lpAssetIdStr), poolAddress), StringEntry(keyMappingPoolContractToLPAsset(poolAddress), lpAssetIdStr), IntegerEntry(keyPoolToWeight(poolAddress), poolWeight)]), lpAssetIdStr)
468468 else throw("Strict value is not equal to itself.")
469469 }
470470 else throw("Strict value is not equal to itself.")
471471 }
472472 else throw("Strict value is not equal to itself.")
473473 }
474474 else throw("Strict value is not equal to itself.")
475475 }
476476 else throw("Strict value is not equal to itself.")
477477 }
478478 else throw("Strict value is not equal to itself.")
479479 }
480480 }
481481 else throw("Strict value is not equal to itself.")
482482 }
483483
484484
485485
486486 @Callable(i)
487487 func managePool (poolAddress,newStatus) = {
488488 let checkCaller = mustManager(i)
489489 if ((checkCaller == checkCaller))
490490 then {
491491 let poolConfig = getPoolConfig(poolAddress)
492492 let poolStatus = poolConfig[idxPoolStatus]
493493 let lpAssetIdStr = poolConfig[idxPoolLPAssetId]
494494 let amountAssetStr = poolConfig[idxAmtAssetId]
495495 let priceAssetStr = poolConfig[idxPriceAssetId]
496496 let amountAssetsDecimals = parseIntValue(poolConfig[idxAmtAssetDcm])
497497 let priceAssetsDecimals = parseIntValue(poolConfig[idxPriceAssetDcm])
498498 let internalAmountAssetId = parseIntValue(poolConfig[idxIAmtAssetId])
499499 let internalPriceAssetId = parseIntValue(poolConfig[idxIPriceAssetId])
500500 let lpAssetDcm = parseIntValue(poolConfig[idxLPAssetDcm])
501501 let poolType = poolConfig[idxPoolType]
502502 [StringEntry(keyPoolConfig(toString(internalAmountAssetId), toString(internalPriceAssetId)), dataPoolCfg(poolAddress, toString(newStatus), lpAssetIdStr, amountAssetStr, priceAssetStr, amountAssetsDecimals, priceAssetsDecimals, internalAmountAssetId, internalPriceAssetId, lpAssetDcm, poolType))]
503503 }
504504 else throw("Strict value is not equal to itself.")
505505 }
506506
507507
508508
509509 @Callable(i)
510510 func emit (amountToEmit) = {
511511 let caller = i.caller
512512 let originCaller = i.originCaller
513513 let lpAssetRequested = valueOrErrorMessage(getString(keyMappingPoolContractToLPAsset(toString(caller))), "Invalid LP address called me.")
514514 let lpAsset = fromBase58String(lpAssetRequested)
515515 let legacyPools = split(valueOrElse(getString(keyLegacyPools()), EMPTY), SEP)
516516 let legacyFactoryContract = addressFromStringValue(valueOrErrorMessage(getString(keyLegacyFactoryContract()), "Legacy factory contract does not exists."))
517517 if ((0 >= amountToEmit))
518518 then nil
519519 else if (containsElement(legacyPools, toString(caller)))
520520 then $Tuple2(nil, legacyFactoryContract)
521521 else $Tuple2([Reissue(lpAsset, amountToEmit, true), ScriptTransfer(i.caller, amountToEmit, lpAsset)], "success")
522522 }
523523
524524
525525
526526 @Callable(i)
527527 func burn (amountToBurn) = {
528528 let caller = i.caller
529529 let originCaller = i.originCaller
530530 let payment = value(i.payments[0])
531531 let paymentAmount = value(payment.amount)
532532 let inAmountAssetId = toBase58String(value(payment.assetId))
533533 let lpAssetRequestedForBurning = valueOrErrorMessage(getString(keyMappingPoolContractToLPAsset(toString(caller))), "Invalid LP address called me.")
534534 if ((inAmountAssetId != lpAssetRequestedForBurning))
535535 then throw("Invalid asset passed.")
536536 else if ((amountToBurn != paymentAmount))
537537 then throw("Invalid amount passed.")
538538 else {
539539 let lpAsset = fromBase58String(lpAssetRequestedForBurning)
540540 $Tuple2([Burn(lpAsset, amountToBurn)], "success")
541541 }
542542 }
543543
544544
545545
546546 @Callable(i)
547547 func modifyWeight (lpAssetId,share) = {
548548 let checkCaller = if ((toBase58String(i.caller.bytes) == valueOrElse(getString(this, keyVotingEmissionContract()), "")))
549549 then true
550550 else mustManager(i)
551551 if ((checkCaller == checkCaller))
552552 then {
553553 let poolContractAddress = getStringOrFail(keyMappingPoolLPAssetToPoolContractAddress(lpAssetId))
554554 let poolWeightKey = keyPoolToWeight(poolContractAddress)
555555 let gwxWeightKey = keyPoolToWeight(GWXvirtualPOOL)
556556 let gwxWeight = valueOrElse(getInteger(gwxWeightKey), 0)
557557 let poolWeight = valueOrElse(getInteger(poolWeightKey), 0)
558558 let poolWeightNew = share
559559 let factoryCfg = split(getStringOrFail(keyFactoryConfig()), SEP)
560560 let stakingContract = getStakingAddressOrFail(factoryCfg)
561561 let onModifyWeightInv = invoke(stakingContract, "onModifyWeight", [lpAssetId, poolContractAddress], nil)
562562 if ((onModifyWeightInv == onModifyWeightInv))
563563 then {
564564 let gwxVirtualPoolActions = if ((gwxWeight == 0))
565565 then nil
566566 else [IntegerEntry(gwxWeightKey, 0)]
567567 let poolWeightHistoryKey = keyPoolToWeightHistory(poolContractAddress, 0)
568568 let poolWeightHistoryOrUnit = getInteger(poolWeightHistoryKey)
569569 let poolWeightHistoryActions = if ((poolWeightHistoryOrUnit == unit))
570570 then nil
571571 else [DeleteEntry(poolWeightHistoryKey)]
572572 (([IntegerEntry(poolWeightKey, poolWeightNew)] ++ gwxVirtualPoolActions) ++ poolWeightHistoryActions)
573573 }
574574 else throw("Strict value is not equal to itself.")
575575 }
576576 else throw("Strict value is not equal to itself.")
577577 }
578578
579579
580580
581581 @Callable(i)
582582 func modifyWeights (btcPoolAddress,ethPoolAddress,ethBtcPoolAddress,usdcUsdtPoolAddress) = {
583583 let checkCaller = mustManager(i)
584584 if ((checkCaller == checkCaller))
585585 then {
586586 let ethBtcWeightNew = ((5 * POOLWEIGHTMULT) / 100)
587587 let usdcUsdtWeightNew = ((5 * POOLWEIGHTMULT) / 100)
588588 let weightDecrement = ((5 * POOLWEIGHTMULT) / 100)
589589 let factoryCfg = split(getStringOrFail(keyFactoryConfig()), SEP)
590590 let stakingDapp = getStakingAddressOrFail(factoryCfg)
591591 let gwxRewardDapp = getGwxRewardAddressOrFail(factoryCfg)
592592 let btcWeightKEY = keyPoolToWeight(btcPoolAddress)
593593 let ethWeightKEY = keyPoolToWeight(ethPoolAddress)
594594 let ethBtcWeightKEY = keyPoolToWeight(ethBtcPoolAddress)
595595 let usdcUsdtWeightKEY = keyPoolToWeight(usdcUsdtPoolAddress)
596596 let btcWeight = getIntOrFail(btcWeightKEY)
597597 let ethWeight = getIntOrFail(ethWeightKEY)
598598 let btcWeightNew = (btcWeight - weightDecrement)
599599 let ethWeightNew = (ethWeight - weightDecrement)
600600 if ((0 >= btcWeightNew))
601601 then throw(("invalid btcWeightNew: " + toString(btcWeightNew)))
602602 else if ((0 >= ethWeightNew))
603603 then throw(("invalid ethWeightNew: " + toString(ethWeightNew)))
604604 else {
605605 let btcLpAssetIdStr = getStringOrFail(keyMappingPoolContractToLPAsset(btcPoolAddress))
606606 let ethLpAssetIdStr = getStringOrFail(keyMappingPoolContractToLPAsset(ethPoolAddress))
607607 let ethBtcLpAssetIdStr = getStringOrFail(keyMappingPoolContractToLPAsset(ethBtcPoolAddress))
608608 let usdcUsdtLpAssetIdStr = getStringOrFail(keyMappingPoolContractToLPAsset(usdcUsdtPoolAddress))
609609 let onModifyWeightBtc = invoke(stakingDapp, "onModifyWeight", [btcLpAssetIdStr, btcPoolAddress], nil)
610610 if ((onModifyWeightBtc == onModifyWeightBtc))
611611 then {
612612 let onModifyWeightEth = invoke(stakingDapp, "onModifyWeight", [ethLpAssetIdStr, ethPoolAddress], nil)
613613 if ((onModifyWeightEth == onModifyWeightEth))
614614 then {
615615 let onModifyWeightEthBtc = invoke(stakingDapp, "onModifyWeight", [ethBtcLpAssetIdStr, ethBtcPoolAddress], nil)
616616 if ((onModifyWeightEthBtc == onModifyWeightEthBtc))
617617 then {
618618 let onModifyWeightUsdcUsdt = invoke(stakingDapp, "onModifyWeight", [usdcUsdtLpAssetIdStr, usdcUsdtPoolAddress], nil)
619619 if ((onModifyWeightUsdcUsdt == onModifyWeightUsdcUsdt))
620620 then [IntegerEntry(btcWeightKEY, btcWeightNew), IntegerEntry(ethWeightKEY, ethWeightNew), IntegerEntry(ethBtcWeightKEY, ethBtcWeightNew), IntegerEntry(usdcUsdtWeightKEY, usdcUsdtWeightNew), IntegerEntry(keyPoolToWeightHistory(btcPoolAddress, 0), btcWeight), IntegerEntry(keyPoolToWeightHistory(ethPoolAddress, 0), ethWeight), IntegerEntry(keyPoolToWeightHistory(ethBtcPoolAddress, 0), ethBtcWeightNew), IntegerEntry(keyPoolToWeightHistory(usdcUsdtPoolAddress, 0), usdcUsdtWeightNew)]
621621 else throw("Strict value is not equal to itself.")
622622 }
623623 else throw("Strict value is not equal to itself.")
624624 }
625625 else throw("Strict value is not equal to itself.")
626626 }
627627 else throw("Strict value is not equal to itself.")
628628 }
629629 }
630630 else throw("Strict value is not equal to itself.")
631631 }
632632
633633
634634
635635 @Callable(i)
636636 func checkWxEmissionPoolLabel (amountAssetId,priceAssetId) = {
637637 let haveLabel = match getBoolean(keyWxEmission(amountAssetId, priceAssetId)) {
638638 case b: Boolean =>
639639 b
640640 case _ =>
641641 false
642642 }
643643 $Tuple2(nil, haveLabel)
644644 }
645645
646646
647647
648648 @Callable(i)
649649 func setWxEmissionPoolLabel (amountAssetId,priceAssetId) = {
650650 let checkCaller = mustAdmin(i)
651651 if ((checkCaller == checkCaller))
652652 then $Tuple2([BooleanEntry(keyWxEmission(amountAssetId, priceAssetId), true)], unit)
653653 else throw("Strict value is not equal to itself.")
654654 }
655655
656656
657657
658658 @Callable(i)
659659 func deleteWxEmissionPoolLabel (amountAssetId,priceAssetId) = {
660660 let checkCaller = if (mustThis(i))
661661 then true
662662 else mustAdmin(i)
663663 if ((checkCaller == checkCaller))
664664 then $Tuple2([DeleteEntry(keyWxEmission(amountAssetId, priceAssetId))], unit)
665665 else throw("Strict value is not equal to itself.")
666666 }
667667
668668
669669
670670 @Callable(i)
671671 func onVerificationLoss (assetId) = {
672672 let checkCaller = if ((toBase58String(i.caller.bytes) == valueOrElse(getString(this, keyAssetsStoreContract()), "")))
673673 then true
674674 else mustManager(i)
675675 if ((checkCaller == checkCaller))
676676 then {
677677 let priceAssets = getPriceAssets()
678678 let checkPriceAssetsSize = if ((size(priceAssets) > 0))
679679 then true
680680 else throw("invalid price assets")
681681 if ((checkPriceAssetsSize == checkPriceAssetsSize))
682682 then {
683683 func cb (acc,priceAsset) = {
684684 let r = invoke(this, "deleteWxEmissionPoolLabel", [assetId, priceAsset], nil)
685685 if ((r == r))
686686 then unit
687687 else throw("Strict value is not equal to itself.")
688688 }
689689
690690 let actions = {
691691 let $l = priceAssets
692692 let $s = size($l)
693693 let $acc0 = unit
694694 func $f0_1 ($a,$i) = if (($i >= $s))
695695 then $a
696696 else cb($a, $l[$i])
697697
698698 func $f0_2 ($a,$i) = if (($i >= $s))
699699 then $a
700700 else throw("List size exceeds 3")
701701
702702 $f0_2($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3)
703703 }
704704 if ((actions == actions))
705705 then $Tuple2(nil, unit)
706706 else throw("Strict value is not equal to itself.")
707707 }
708708 else throw("Strict value is not equal to itself.")
709709 }
710710 else throw("Strict value is not equal to itself.")
711711 }
712712
713713
714714
715715 @Callable(i)
716716 func isPoolOneTokenOperationsDisabledREADONLY (poolAddress) = {
717717 let poolConfig = getPoolConfig(poolAddress)
718718 let assetsInternal = $Tuple2(parseIntValue(poolConfig[idxIAmtAssetId]), parseIntValue(poolConfig[idxIPriceAssetId]))
719719 let poolOneTokenOperationsDisabled = valueOrElse(getBoolean(keyPoolOneTokenOperationsDisabled(assetsInternal)), false)
720- let allPoolsOntTokenOperationsDisabled = valueOrElse(getBoolean(keyAllPoolsOneTokenOperationsDisabled()), false)
721- $Tuple2(nil, if (allPoolsOntTokenOperationsDisabled)
720+ let allPoolsOneTokenOperationsDisabled = valueOrElse(getBoolean(keyAllPoolsOneTokenOperationsDisabled()), false)
721+ $Tuple2(nil, if (allPoolsOneTokenOperationsDisabled)
722722 then true
723723 else poolOneTokenOperationsDisabled)
724724 }
725725
726726
727727 @Verifier(tx)
728728 func verify () = {
729729 let targetPublicKey = match managerPublicKeyOrUnit() {
730730 case pk: ByteVector =>
731731 pk
732732 case _: Unit =>
733733 tx.senderPublicKey
734734 case _ =>
735735 throw("Match error")
736736 }
737737 sigVerify(tx.bodyBytes, tx.proofs[0], targetPublicKey)
738738 }
739739

github/deemru/w8io/169f3d6 
74.00 ms