tx · 5EYwLezaZQU2k2nDHNuW4iFRtNunKMW7br1YgSuzLJfy

3MsMP2pb2p8MDd6Rxb7XEXqqwEhE8ATfyai:  -0.02800000 Waves

2022.12.05 14:29 [2346999] smart account 3MsMP2pb2p8MDd6Rxb7XEXqqwEhE8ATfyai > SELF 0.00000000 Waves

{ "type": 13, "id": "5EYwLezaZQU2k2nDHNuW4iFRtNunKMW7br1YgSuzLJfy", "fee": 2800000, "feeAssetId": null, "timestamp": 1670239750977, "version": 1, "sender": "3MsMP2pb2p8MDd6Rxb7XEXqqwEhE8ATfyai", "senderPublicKey": "2JEaBjtjvMoNGKZmL9QxYefa1VkMJM3vMW8rNvTs9R2H", "proofs": [ "oo7hBdveMLXshDGzypfWnWLKgjPho33So9o2tiBkygiywktLDtRToaaCeoLrKunyECJUmYLjR8FukB6RYyNAbyU" ], "script": "base64:AAIFAAAAAAAAEeoIAhIKCggICAgICAgIARIDCgEIEgYKBAgICAgSBAoCCBgSAwoBCBIECgIIGBIDCgEIEgASAwoBGBIKCggICAgICAEICBIECgIIARIDCgEBEgMKAQESBAoCCAESBgoECAgICBIECgIICBIECgIICBIECgIICBIDCgEIEgMKAQgiBlNDQUxFOCIFTVVMVDgiB1NDQUxFMTgiBk1VTFQxOCIOUE9PTFdFSUdIVE1VTFQiDkdXWHZpcnR1YWxQT09MIgxsYWJlbFBvb2xzTHAiEWRlY2ltYWxzTXVsdFByaWNlIgNTRVAiBUVNUFRZIgpQb29sQWN0aXZlIg9Qb29sUHV0RGlzYWJsZWQiE1Bvb2xNYXRjaGVyRGlzYWJsZWQiDFBvb2xTaHV0ZG93biISaWR4SW50ZXJuYWxBc3NldElkIg9pZHhSZXN1dEFjdGlvbnMiIGlkeElmQXNzZXRJZENhbGN1bGF0aW9uUGVyZm9ybWVkIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iC2lkeFBvb2xUeXBlIhNwb29sTGFiZWxXeEVtaXNzaW9uIg92YWxpZFBvb2xMYWJlbHMiFmtleUFsbG93ZWRMcFNjcmlwdEhhc2giHGtleUFsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2giIWtleUFsbG93ZWRMcFN0YWJsZUFkZG9uU2NyaXB0SGFzaCIQa2V5RmFjdG9yeUNvbmZpZyIPa2V5THBUb2tlbnNMaXN0IhFrZXlQb29sU2NyaXB0SGFzaCINa2V5TWF0Y2hlclB1YiIYa2V5TGVnYWN5RmFjdG9yeUNvbnRyYWN0Ig5rZXlMZWdhY3lQb29scyITa2V5TWFuYWdlclB1YmxpY0tleSIaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiD2tleUFkbWluUHViS2V5cyIWa2V5QXNzZXRzU3RvcmVDb250cmFjdCIZa2V5Vm90aW5nRW1pc3Npb25Db250cmFjdCIOa2V5UHJpY2VBc3NldHMiEGtleVByaWNlRGVjaW1hbHMiE2tleUFsbFBvb2xzU2h1dGRvd24iFmtleU5leHRJbnRlcm5hbEFzc2V0SWQiD2tleVBvb2xUb1dlaWdodCILcG9vbEFkZHJlc3MiFmtleVBvb2xUb1dlaWdodEhpc3RvcnkiA251bSIfa2V5TWFwcGluZ3NJbnRlcm5hbDJiYXNlQXNzZXRJZCIRaW50ZXJuYWxCYXNlQXNzZXQiH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQiDGJhc2VBc3NldFN0ciINa2V5UG9vbENvbmZpZyITYW1vdW50QXNzZXRJbnRlcm5hbCIScHJpY2VBc3NldEludGVybmFsIiFrZXlQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiDmFzc2V0c0ludGVybmFsIgskdDAzNTg3MzY0OSIla2V5QWxsUG9vbHNPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCIda2V5TWFwcGluZ0xwQXNzZXRUb1Bvb2xBc3NldHMiCmxwQXNzZXRTdHIiHWtleU1hcHBpbmdQb29sQXNzZXRzVG9McGFzc2V0IhhpbnRlcm5hbEFtb3VudEFzc2V0SWRTdHIiF2ludGVybmFsUHJpY2VBc3NldElkU3RyIilrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cyITcG9vbENvbnRyYWN0QWRkcmVzcyIpa2V5TWFwcGluZ1Bvb2xBc3NldHNUb1Bvb2xDb250cmFjdEFkZHJlc3MiH2tleU1hcHBpbmdQb29sQ29udHJhY3RUb0xQQXNzZXQiKmtleU1hcHBpbmdQb29sTFBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcyINa2V5V3hFbWlzc2lvbiINYW1vdW50QXNzZXRJZCIMcHJpY2VBc3NldElkIg9nZXRTdHJpbmdPckZhaWwiA2tleSIQZ2V0Qm9vbGVhbk9yRmFpbCIMZ2V0SW50T3JGYWlsIhhJZHhGYWN0b3J5Q2ZnU3Rha2luZ0RhcHAiGUlkeEZhY3RvcnlDZmdCb29zdGluZ0RhcHAiFElkeEZhY3RvcnlDZmdJZG9EYXBwIhVJZHhGYWN0b3J5Q2ZnVGVhbURhcHAiGUlkeEZhY3RvcnlDZmdFbWlzc2lvbkRhcHAiFUlkeEZhY3RvcnlDZmdSZXN0RGFwcCIZSWR4RmFjdG9yeUNmZ1NsaXBwYWdlRGFwcCIUSWR4RmFjdG9yeUNmZ0Rhb0RhcHAiGklkeEZhY3RvcnlDZmdNYXJrZXRpbmdEYXBwIhpJZHhGYWN0b3J5Q2ZnR3d4UmV3YXJkRGFwcCIWSWR4RmFjdG9yeUNmZ0JpcmRzRGFwcCIYZ2V0Qm9vc3RpbmdBZGRyZXNzT3JGYWlsIgpmYWN0b3J5Q2ZnIhhnZXRFbWlzc2lvbkFkZHJlc3NPckZhaWwiF2dldFN0YWtpbmdBZGRyZXNzT3JGYWlsIhlnZXRHd3hSZXdhcmRBZGRyZXNzT3JGYWlsIg5nZXRQcmljZUFzc2V0cyIHJG1hdGNoMCIBcyIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCIdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQiFXBlcm1pc3Npb25EZW5pZWRFcnJvciIIbXVzdFRoaXMiAWkiC211c3RNYW5hZ2VyIgJwayIQZGF0YUZhY3RvcnlDZmdWMyIOc3Rha2luZ0FkZHJlc3MiD2Jvb3N0aW5nQWRkcmVzcyILaWRvQ29udHJhY3QiDHRlYW1Db250cmFjdCIQZW1pc3Npb25Db250cmFjdCIMcmVzdENvbnRyYWN0IhBzbGlwcGFnZUNvbnRyYWN0IgtkYW9Db250cmFjdCIRbWFya2V0aW5nQ29udHJhY3QiEmd3eFJld2FyZHNDb250cmFjdCINYmlyZHNDb250cmFjdCIOZGF0YUZhY3RvcnlDZmciC2RhdGFQb29sQ2ZnIgpwb29sU3RhdHVzIglscEFzc2V0SWQiDmFtb3VudEFzc2V0U3RyIg1wcmljZUFzc2V0U3RyIhNhbW91bnRBc3NldERlY2ltYWxzIhJwcmljZUFzc2V0RGVjaW1hbHMiFWFtb3VudEFzc2V0SW50ZXJuYWxJZCIUcHJpY2VBc3NldEludGVybmFsSWQiD2xwQXNzZXREZWNpbWFscyIIcG9vbFR5cGUiFWRhdGFNYXBwaW5nUG9vbEFzc2V0cyIWaW50ZXJuYWxBbW91bnRBc3NldFN0ciIVaW50ZXJuYWxQcmljZUFzc2V0U3RyIg1nZXRQb29sQ29uZmlnIgpwb29sQXNzZXRzIhpnZXRJbnRlcm5hbEFzc2V0SWRPckNyZWF0ZSIKYXNzZXRJZFN0ciILaW5jcmVtZW50b3IiD2ludGVybmFsQXNzZXRJZCIYY3VycmVudEluZGV4T2ZJbnRlcm5hbElkIgZyZXN1bHQiEm5ld0ludGVybmFsQXNzZXRJZCIJbXVzdEFkbWluIghhZG1pblBLcyIJaXNNYW5hZ2VyIg9zdGFraW5nQ29udHJhY3QiEGJvb3N0aW5nQ29udHJhY3QiEHNscGlwYWdlQ29udHJhY3QiDXByaWNlRGVjaW1hbHMiC2NoZWNrQ2FsbGVyIhBtYXRoY2hlclB1YjU4U3RyIgptYXRoY2VyUHViIhVsZWdhY3lGYWN0b3J5Q29udHJhY3QiC2xlZ2FjeVBvb2xzIhNhc3NldHNTdG9yZUNvbnRyYWN0IhZ2b3RpbmdFbWlzc2lvbkNvbnRyYWN0IgtwcmljZUFzc2V0cyIFY2hla3MiF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IhVjaGVja01hbmFnZXJQdWJsaWNLZXkiAnBtIgVoYXNQTSIHY2hlY2tQTSIMYWRtaW5QdWJLZXlzIgtscEFzc2V0TmFtZSIMbHBBc3NldERlc2NyIgpwb29sV2VpZ2h0IgRsb2dvIhdpbnRlcm5hbEFtb3VudEFzc2V0RGF0YSIVaW50ZXJuYWxBbW91bnRBc3NldElkIhZpbnRlcm5hbFByaWNlQXNzZXREYXRhIhRpbnRlcm5hbFByaWNlQXNzZXRJZCIVcG9vbEFjY291bnRTY3JpcHRIYXNoIhxldGhhbG9uUG9vbEFjY291bnRTY3JpcHRIYXNoIgpwb29sQ29uZmlnIg9wb29sQ29uZmlnVmFsdWUiFGFtb3VudEFzc2V0c0RlY2ltYWxzIhNwcmljZUFzc2V0c0RlY2ltYWxzIhJscEFzc2V0SXNzdWVBY3Rpb24iDGxwQXNzZXRJZFN0ciIYcG9vbEFjdGl2YXRlSW52b2tlUmVzdWx0IhhjcmVhdGVPclVwZGF0ZUxwQXNzZXRJbnYiEmFkZFBvb2xzTHBMYWJlbEludiIKc2V0TG9nb0ludiIQYWRkQXNzZXRzTGlua0ludiIbaW5jcmVhc2VBc3NldFBvb2xzTnVtYmVySW52IgluZXdTdGF0dXMiCmxwQXNzZXREY20iDGFtb3VudFRvRW1pdCIGY2FsbGVyIgxvcmlnaW5DYWxsZXIiEGxwQXNzZXRSZXF1ZXN0ZWQiB2xwQXNzZXQiDGFtb3VudFRvQnVybiIHcGF5bWVudCINcGF5bWVudEFtb3VudCIPaW5BbW91bnRBc3NldElkIhpscEFzc2V0UmVxdWVzdGVkRm9yQnVybmluZyIFc2hhcmUiDXBvb2xXZWlnaHRLZXkiDGd3eFdlaWdodEtleSIJZ3d4V2VpZ2h0Ig1wb29sV2VpZ2h0TmV3IhFvbk1vZGlmeVdlaWdodEludiIVZ3d4VmlydHVhbFBvb2xBY3Rpb25zIhRwb29sV2VpZ2h0SGlzdG9yeUtleSIXcG9vbFdlaWdodEhpc3RvcnlPclVuaXQiGHBvb2xXZWlnaHRIaXN0b3J5QWN0aW9ucyIOYnRjUG9vbEFkZHJlc3MiDmV0aFBvb2xBZGRyZXNzIhFldGhCdGNQb29sQWRkcmVzcyITdXNkY1VzZHRQb29sQWRkcmVzcyIPZXRoQnRjV2VpZ2h0TmV3IhF1c2RjVXNkdFdlaWdodE5ldyIPd2VpZ2h0RGVjcmVtZW50IgtzdGFraW5nRGFwcCINZ3d4UmV3YXJkRGFwcCIMYnRjV2VpZ2h0S0VZIgxldGhXZWlnaHRLRVkiD2V0aEJ0Y1dlaWdodEtFWSIRdXNkY1VzZHRXZWlnaHRLRVkiCWJ0Y1dlaWdodCIJZXRoV2VpZ2h0IgxidGNXZWlnaHROZXciDGV0aFdlaWdodE5ldyIPYnRjTHBBc3NldElkU3RyIg9ldGhMcEFzc2V0SWRTdHIiEmV0aEJ0Y0xwQXNzZXRJZFN0ciIUdXNkY1VzZHRMcEFzc2V0SWRTdHIiEW9uTW9kaWZ5V2VpZ2h0QnRjIhFvbk1vZGlmeVdlaWdodEV0aCIUb25Nb2RpZnlXZWlnaHRFdGhCdGMiFm9uTW9kaWZ5V2VpZ2h0VXNkY1VzZHQiCWhhdmVMYWJlbCIBYiIHYXNzZXRJZCIUY2hlY2tQcmljZUFzc2V0c1NpemUiAmNiIgNhY2MiCnByaWNlQXNzZXQiAXIiB2FjdGlvbnMiAiRsIgIkcyIFJGFjYzAiBSRmMF8xIgIkYSICJGkiBSRmMF8y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", "chainId": 84, "height": 2346999, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 36WEhWv7xQskRAvrDY3DuqDgrKSFmQQ7WLbhukmxGBik Next: 6Kujaw5qNvJ7gLTKo2PUbZkZHyQVmKbGdowYwajJUNU9 Diff:
OldNewDifferences
1414 let GWXvirtualPOOL = "GWXvirtualPOOL"
1515
1616 let labelPoolsLp = "POOLS_LP"
17-
18-let defaultSpread = 2000000
1917
2018 let decimalsMultPrice = ((100 * 1000) * 1000)
2119
133131
134132
135133 func keyPoolOneTokenOperationsDisabled (assetsInternal) = {
136- let $t036323694 = assetsInternal
137- let amountAssetInternal = $t036323694._1
138- let priceAssetInternal = $t036323694._2
134+ let $t035873649 = assetsInternal
135+ let amountAssetInternal = $t035873649._1
136+ let priceAssetInternal = $t035873649._2
139137 makeString(["%d%d%s", toString(amountAssetInternal), toString(priceAssetInternal), "oneTokenOperationsDisabled"], SEP)
140138 }
141139
147145
148146
149147 func keyMappingPoolAssetsToLpasset (internalAmountAssetIdStr,internalPriceAssetIdStr) = (((("%d%d%s%s__" + internalAmountAssetIdStr) + "__") + internalPriceAssetIdStr) + "__mappings__PoolAssets2LpAsset")
150-
151-
152-func keyPoolSpread (poolAddress) = ("%s%s__spread__" + poolAddress)
153148
154149
155150 func keyMappingPoolContractAddressToPoolAssets (poolContractAddress) = (("%s%s%s__" + poolContractAddress) + "__mappings__poolContract2PoolAssets")
469464 then {
470465 let increaseAssetPoolsNumberInv = invoke(assetsStoreContract, "increaseAssetPoolsNumber", [amountAssetStr], nil)
471466 if ((increaseAssetPoolsNumberInv == increaseAssetPoolsNumberInv))
472- 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), IntegerEntry(keyPoolSpread(poolAddress), defaultSpread)]), lpAssetIdStr)
467+ 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)
473468 else throw("Strict value is not equal to itself.")
474469 }
475470 else throw("Strict value is not equal to itself.")
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"
17-
18-let defaultSpread = 2000000
1917
2018 let decimalsMultPrice = ((100 * 1000) * 1000)
2119
2220 let SEP = "__"
2321
2422 let EMPTY = ""
2523
2624 let PoolActive = 1
2725
2826 let PoolPutDisabled = 2
2927
3028 let PoolMatcherDisabled = 3
3129
3230 let PoolShutdown = 4
3331
3432 let idxInternalAssetId = 1
3533
3634 let idxResutActions = 2
3735
3836 let idxIfAssetIdCalculationPerformed = 3
3937
4038 let idxPoolAddress = 1
4139
4240 let idxPoolStatus = 2
4341
4442 let idxPoolLPAssetId = 3
4543
4644 let idxAmtAssetId = 4
4745
4846 let idxPriceAssetId = 5
4947
5048 let idxAmtAssetDcm = 6
5149
5250 let idxPriceAssetDcm = 7
5351
5452 let idxIAmtAssetId = 8
5553
5654 let idxIPriceAssetId = 9
5755
5856 let idxLPAssetDcm = 10
5957
6058 let idxPoolType = 11
6159
6260 let poolLabelWxEmission = "WX_EMISSION"
6361
6462 let validPoolLabels = [poolLabelWxEmission]
6563
6664 func keyAllowedLpScriptHash () = "%s__allowedLpScriptHash"
6765
6866
6967 func keyAllowedLpStableScriptHash () = "%s__allowedLpStableScriptHash"
7068
7169
7270 func keyAllowedLpStableAddonScriptHash () = "%s__allowedLpStableAddonScriptHash"
7371
7472
7573 func keyFactoryConfig () = "%s__factoryConfig"
7674
7775
7876 func keyLpTokensList () = "%s__lpTokensList"
7977
8078
8179 func keyPoolScriptHash () = "%s%s__pool__scriptHash"
8280
8381
8482 func keyMatcherPub () = "%s%s__matcher__publicKey"
8583
8684
8785 func keyLegacyFactoryContract () = "%s__legacyFactoryContract"
8886
8987
9088 func keyLegacyPools () = "%s__legacyPools"
9189
9290
9391 func keyManagerPublicKey () = "%s__managerPublicKey"
9492
9593
9694 func keyPendingManagerPublicKey () = "%s__pendingManagerPublicKey"
9795
9896
9997 func keyAdminPubKeys () = "%s__adminPubKeys"
10098
10199
102100 func keyAssetsStoreContract () = "%s__assetsStoreContract"
103101
104102
105103 func keyVotingEmissionContract () = "%s__votingEmissionContract"
106104
107105
108106 func keyPriceAssets () = makeString(["%s", "priceAssets"], SEP)
109107
110108
111109 func keyPriceDecimals () = "%s__priceDecimals"
112110
113111
114112 func keyAllPoolsShutdown () = "%s__shutdown"
115113
116114
117115 func keyNextInternalAssetId () = "%s__nextInternalAssetId"
118116
119117
120118 func keyPoolToWeight (poolAddress) = ("%s%s__poolWeight__" + poolAddress)
121119
122120
123121 func keyPoolToWeightHistory (poolAddress,num) = ((("%s%s__poolWeight__" + poolAddress) + "__") + toString(num))
124122
125123
126124 func keyMappingsInternal2baseAssetId (internalBaseAsset) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(internalBaseAsset))
127125
128126
129127 func keyMappingsBaseAsset2internalId (baseAssetStr) = ("%s%s%s__mappings__baseAsset2internalId__" + baseAssetStr)
130128
131129
132130 func keyPoolConfig (amountAssetInternal,priceAssetInternal) = (((("%d%d%s__" + amountAssetInternal) + "__") + priceAssetInternal) + "__config")
133131
134132
135133 func keyPoolOneTokenOperationsDisabled (assetsInternal) = {
136- let $t036323694 = assetsInternal
137- let amountAssetInternal = $t036323694._1
138- let priceAssetInternal = $t036323694._2
134+ let $t035873649 = assetsInternal
135+ let amountAssetInternal = $t035873649._1
136+ let priceAssetInternal = $t035873649._2
139137 makeString(["%d%d%s", toString(amountAssetInternal), toString(priceAssetInternal), "oneTokenOperationsDisabled"], SEP)
140138 }
141139
142140
143141 func keyAllPoolsOneTokenOperationsDisabled () = makeString(["%s", "oneTokenOperationsDisabled"], SEP)
144142
145143
146144 func keyMappingLpAssetToPoolAssets (lpAssetStr) = (("%s%s%s__" + lpAssetStr) + "__mappings__lpAsset2Pool")
147145
148146
149147 func keyMappingPoolAssetsToLpasset (internalAmountAssetIdStr,internalPriceAssetIdStr) = (((("%d%d%s%s__" + internalAmountAssetIdStr) + "__") + internalPriceAssetIdStr) + "__mappings__PoolAssets2LpAsset")
150-
151-
152-func keyPoolSpread (poolAddress) = ("%s%s__spread__" + poolAddress)
153148
154149
155150 func keyMappingPoolContractAddressToPoolAssets (poolContractAddress) = (("%s%s%s__" + poolContractAddress) + "__mappings__poolContract2PoolAssets")
156151
157152
158153 func keyMappingPoolAssetsToPoolContractAddress (internalAmountAssetIdStr,internalPriceAssetIdStr) = (((("%d%d%s%s__" + toString(internalAmountAssetIdStr)) + "__") + toString(internalPriceAssetIdStr)) + "__mappings__poolAssets2PoolContract")
159154
160155
161156 func keyMappingPoolContractToLPAsset (poolContractAddress) = (("%s%s%s__" + poolContractAddress) + "__mappings__poolContract2LpAsset")
162157
163158
164159 func keyMappingPoolLPAssetToPoolContractAddress (lpAssetStr) = (("%s%s%s__" + lpAssetStr) + "__mappings__lpAsset2PoolContract")
165160
166161
167162 func keyWxEmission (amountAssetId,priceAssetId) = ((("%s%s%s__wxEmission__" + amountAssetId) + "__") + priceAssetId)
168163
169164
170165 func getStringOrFail (key) = valueOrErrorMessage(getString(this, key), ("No data for this.key=" + key))
171166
172167
173168 func getBooleanOrFail (key) = valueOrErrorMessage(getBoolean(this, key), ("No data for this.key=" + key))
174169
175170
176171 func getIntOrFail (key) = valueOrErrorMessage(getInteger(this, key), ("No data for this.key=" + key))
177172
178173
179174 let IdxFactoryCfgStakingDapp = 1
180175
181176 let IdxFactoryCfgBoostingDapp = 2
182177
183178 let IdxFactoryCfgIdoDapp = 3
184179
185180 let IdxFactoryCfgTeamDapp = 4
186181
187182 let IdxFactoryCfgEmissionDapp = 5
188183
189184 let IdxFactoryCfgRestDapp = 6
190185
191186 let IdxFactoryCfgSlippageDapp = 7
192187
193188 let IdxFactoryCfgDaoDapp = 8
194189
195190 let IdxFactoryCfgMarketingDapp = 9
196191
197192 let IdxFactoryCfgGwxRewardDapp = 10
198193
199194 let IdxFactoryCfgBirdsDapp = 11
200195
201196 func getBoostingAddressOrFail (factoryCfg) = addressFromStringValue(factoryCfg[IdxFactoryCfgBoostingDapp])
202197
203198
204199 func getEmissionAddressOrFail (factoryCfg) = addressFromStringValue(factoryCfg[IdxFactoryCfgEmissionDapp])
205200
206201
207202 func getStakingAddressOrFail (factoryCfg) = addressFromStringValue(factoryCfg[IdxFactoryCfgStakingDapp])
208203
209204
210205 func getGwxRewardAddressOrFail (factoryCfg) = addressFromStringValue(factoryCfg[IdxFactoryCfgGwxRewardDapp])
211206
212207
213208 func getPriceAssets () = match getString(keyPriceAssets()) {
214209 case s: String =>
215210 if ((size(s) == 0))
216211 then nil
217212 else split(s, SEP)
218213 case _ =>
219214 nil
220215 }
221216
222217
223218 func managerPublicKeyOrUnit () = match getString(keyManagerPublicKey()) {
224219 case s: String =>
225220 fromBase58String(s)
226221 case _: Unit =>
227222 unit
228223 case _ =>
229224 throw("Match error")
230225 }
231226
232227
233228 func pendingManagerPublicKeyOrUnit () = match getString(keyPendingManagerPublicKey()) {
234229 case s: String =>
235230 fromBase58String(s)
236231 case _: Unit =>
237232 unit
238233 case _ =>
239234 throw("Match error")
240235 }
241236
242237
243238 let permissionDeniedError = throw("Permission denied")
244239
245240 func mustThis (i) = if ((i.caller == this))
246241 then true
247242 else permissionDeniedError
248243
249244
250245 func mustManager (i) = match managerPublicKeyOrUnit() {
251246 case pk: ByteVector =>
252247 if ((i.callerPublicKey == pk))
253248 then true
254249 else permissionDeniedError
255250 case _: Unit =>
256251 mustThis(i)
257252 case _ =>
258253 throw("Match error")
259254 }
260255
261256
262257 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)
263258
264259
265260 func dataFactoryCfg (stakingAddress,boostingAddress,idoContract,teamContract,emissionContract,restContract,slippageContract) = makeString(["%s%s%s%s%s%s", stakingAddress, boostingAddress, idoContract, teamContract, emissionContract, restContract, slippageContract], SEP)
266261
267262
268263 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)
269264
270265
271266 func dataMappingPoolAssets (internalAmountAssetStr,internalPriceAssetStr) = makeString(["%d%d", toString(internalAmountAssetStr), toString(internalPriceAssetStr)], SEP)
272267
273268
274269 func getPoolConfig (poolAddress) = {
275270 let poolAssets = split(getStringOrFail(keyMappingPoolContractAddressToPoolAssets(poolAddress)), SEP)
276271 let amountAssetInternal = poolAssets[1]
277272 let priceAssetInternal = poolAssets[2]
278273 split(getStringOrFail(keyPoolConfig(amountAssetInternal, priceAssetInternal)), SEP)
279274 }
280275
281276
282277 func getInternalAssetIdOrCreate (assetIdStr,incrementor) = {
283278 let internalAssetId = valueOrElse(getInteger(this, keyMappingsBaseAsset2internalId(assetIdStr)), 0)
284279 let currentIndexOfInternalId = valueOrElse(getInteger(this, keyNextInternalAssetId()), 0)
285280 let result = if ((internalAssetId == 0))
286281 then {
287282 let newInternalAssetId = (currentIndexOfInternalId + incrementor)
288283 $Tuple3(newInternalAssetId, [IntegerEntry(keyNextInternalAssetId(), newInternalAssetId), IntegerEntry(keyMappingsBaseAsset2internalId(assetIdStr), newInternalAssetId), StringEntry(keyMappingsInternal2baseAssetId(newInternalAssetId), assetIdStr)], true)
289284 }
290285 else $Tuple3(internalAssetId, nil, false)
291286 result
292287 }
293288
294289
295290 func mustAdmin (i) = {
296291 let adminPKs = split(valueOrElse(getString(keyAdminPubKeys()), EMPTY), SEP)
297292 if (containsElement(adminPKs, toBase58String(i.callerPublicKey)))
298293 then true
299294 else {
300295 let isManager = mustManager(i)
301296 if ((isManager == isManager))
302297 then true
303298 else throw("Strict value is not equal to itself.")
304299 }
305300 }
306301
307302
308303 @Callable(i)
309304 func constructor (stakingContract,boostingContract,idoContract,teamContract,emissionContract,restContract,slpipageContract,priceDecimals) = {
310305 let checkCaller = mustManager(i)
311306 if ((checkCaller == checkCaller))
312307 then [StringEntry(keyFactoryConfig(), dataFactoryCfg(stakingContract, boostingContract, idoContract, teamContract, emissionContract, restContract, slpipageContract)), IntegerEntry(keyPriceDecimals(), priceDecimals)]
313308 else throw("Strict value is not equal to itself.")
314309 }
315310
316311
317312
318313 @Callable(i)
319314 func constructorV2 (mathcherPub58Str) = {
320315 let checkCaller = mustManager(i)
321316 if ((checkCaller == checkCaller))
322317 then {
323318 let mathcerPub = addressFromPublicKey(fromBase58String(mathcherPub58Str))
324319 if ((mathcerPub == mathcerPub))
325320 then [StringEntry(keyMatcherPub(), mathcherPub58Str)]
326321 else throw("Strict value is not equal to itself.")
327322 }
328323 else throw("Strict value is not equal to itself.")
329324 }
330325
331326
332327
333328 @Callable(i)
334329 func constructorV3 (daoContract,marketingContract,gwxRewardsContract,birdsContract) = {
335330 let checkCaller = mustManager(i)
336331 if ((checkCaller == checkCaller))
337332 then {
338333 let factoryCfg = split(getStringOrFail(keyFactoryConfig()), SEP)
339334 [StringEntry(keyFactoryConfig(), dataFactoryCfgV3(factoryCfg[1], factoryCfg[2], factoryCfg[3], factoryCfg[4], factoryCfg[5], factoryCfg[6], factoryCfg[7], daoContract, marketingContract, gwxRewardsContract, birdsContract))]
340335 }
341336 else throw("Strict value is not equal to itself.")
342337 }
343338
344339
345340
346341 @Callable(i)
347342 func constructorV4 (legacyFactoryContract,legacyPools) = {
348343 let checkCaller = mustManager(i)
349344 if ((checkCaller == checkCaller))
350345 then [StringEntry(keyLegacyFactoryContract(), legacyFactoryContract), StringEntry(keyLegacyPools(), makeString(legacyPools, SEP))]
351346 else throw("Strict value is not equal to itself.")
352347 }
353348
354349
355350
356351 @Callable(i)
357352 func constructorV5 (assetsStoreContract) = {
358353 let checkCaller = mustManager(i)
359354 if ((checkCaller == checkCaller))
360355 then [StringEntry(keyAssetsStoreContract(), assetsStoreContract)]
361356 else throw("Strict value is not equal to itself.")
362357 }
363358
364359
365360
366361 @Callable(i)
367362 func constructorV6 (votingEmissionContract,priceAssets) = {
368363 let cheks = [mustManager(i), if ((addressFromString(votingEmissionContract) != unit))
369364 then true
370365 else "invalid voting emission contract address"]
371366 if ((cheks == cheks))
372367 then [StringEntry(keyVotingEmissionContract(), votingEmissionContract), StringEntry(keyPriceAssets(), makeString(priceAssets, SEP))]
373368 else throw("Strict value is not equal to itself.")
374369 }
375370
376371
377372
378373 @Callable(i)
379374 func setManager (pendingManagerPublicKey) = {
380375 let checkCaller = mustManager(i)
381376 if ((checkCaller == checkCaller))
382377 then {
383378 let checkManagerPublicKey = fromBase58String(pendingManagerPublicKey)
384379 if ((checkManagerPublicKey == checkManagerPublicKey))
385380 then [StringEntry(keyPendingManagerPublicKey(), pendingManagerPublicKey)]
386381 else throw("Strict value is not equal to itself.")
387382 }
388383 else throw("Strict value is not equal to itself.")
389384 }
390385
391386
392387
393388 @Callable(i)
394389 func confirmManager () = {
395390 let pm = pendingManagerPublicKeyOrUnit()
396391 let hasPM = if (isDefined(pm))
397392 then true
398393 else throw("No pending manager")
399394 if ((hasPM == hasPM))
400395 then {
401396 let checkPM = if ((i.callerPublicKey == value(pm)))
402397 then true
403398 else throw("You are not pending manager")
404399 if ((checkPM == checkPM))
405400 then [StringEntry(keyManagerPublicKey(), toBase58String(value(pm))), DeleteEntry(keyPendingManagerPublicKey())]
406401 else throw("Strict value is not equal to itself.")
407402 }
408403 else throw("Strict value is not equal to itself.")
409404 }
410405
411406
412407
413408 @Callable(i)
414409 func setAdmins (adminPubKeys) = {
415410 let checkCaller = mustManager(i)
416411 if ((checkCaller == checkCaller))
417412 then [StringEntry(keyAdminPubKeys(), makeString(adminPubKeys, SEP))]
418413 else throw("Strict value is not equal to itself.")
419414 }
420415
421416
422417
423418 @Callable(i)
424419 func activateNewPool (poolAddress,amountAssetStr,priceAssetStr,lpAssetName,lpAssetDescr,poolWeight,poolType,logo) = {
425420 let checkCaller = mustAdmin(i)
426421 if ((checkCaller == checkCaller))
427422 then if (isDefined(getString(keyMappingPoolContractAddressToPoolAssets(poolAddress))))
428423 then throw((("Pool address " + poolAddress) + " already registered."))
429424 else {
430425 let internalAmountAssetData = getInternalAssetIdOrCreate(amountAssetStr, 1)
431426 let internalAmountAssetId = internalAmountAssetData._1
432427 let internalPriceAssetData = getInternalAssetIdOrCreate(priceAssetStr, if (internalAmountAssetData._3)
433428 then 2
434429 else 1)
435430 let internalPriceAssetId = internalPriceAssetData._1
436431 let poolAccountScriptHash = valueOrErrorMessage(scriptHash(addressFromStringValue(poolAddress)), ("No script has been found on pool account " + poolAddress))
437432 let ethalonPoolAccountScriptHash = getBinaryValue(keyPoolScriptHash())
438433 let poolConfig = getString(this, keyPoolConfig(toString(internalAmountAssetId), toString(internalPriceAssetId)))
439434 if (isDefined(poolConfig))
440435 then throw((((("Pool " + amountAssetStr) + "/") + priceAssetStr) + " has already been activated."))
441436 else {
442437 let poolConfigValue = value(getString(this, keyPoolConfig(toString(internalAmountAssetId), toString(internalPriceAssetId))))
443438 let amountAssetsDecimals = if ((amountAssetStr == "WAVES"))
444439 then decimalsMultPrice
445440 else pow(10, 0, value(assetInfo(fromBase58String(amountAssetStr))).decimals, 0, 0, DOWN)
446441 let priceAssetsDecimals = if ((priceAssetStr == "WAVES"))
447442 then decimalsMultPrice
448443 else pow(10, 0, value(assetInfo(fromBase58String(priceAssetStr))).decimals, 0, 0, DOWN)
449444 let lpAssetIssueAction = Issue(lpAssetName, lpAssetDescr, 1, 8, true)
450445 let lpAssetId = calculateAssetId(lpAssetIssueAction)
451446 let lpAssetIdStr = toBase58String(lpAssetId)
452447 let poolActivateInvokeResult = invoke(addressFromStringValue(poolAddress), "activate", [amountAssetStr, priceAssetStr], nil)
453448 if ((poolActivateInvokeResult == poolActivateInvokeResult))
454449 then if ((poolActivateInvokeResult != "success"))
455450 then throw("Pool initialisation error happened.")
456451 else {
457452 let assetsStoreContract = addressFromStringValue(getStringOrFail(keyAssetsStoreContract()))
458453 let createOrUpdateLpAssetInv = invoke(assetsStoreContract, "createOrUpdate", [lpAssetIdStr, lpAssetName, false], nil)
459454 if ((createOrUpdateLpAssetInv == createOrUpdateLpAssetInv))
460455 then {
461456 let addPoolsLpLabelInv = invoke(assetsStoreContract, "addLabel", [lpAssetIdStr, labelPoolsLp], nil)
462457 if ((addPoolsLpLabelInv == addPoolsLpLabelInv))
463458 then {
464459 let setLogoInv = invoke(assetsStoreContract, "setLogo", [lpAssetIdStr, logo], nil)
465460 if ((setLogoInv == setLogoInv))
466461 then {
467462 let addAssetsLinkInv = invoke(assetsStoreContract, "addAssetsLink", [amountAssetStr, priceAssetStr, lpAssetIdStr], nil)
468463 if ((addAssetsLinkInv == addAssetsLinkInv))
469464 then {
470465 let increaseAssetPoolsNumberInv = invoke(assetsStoreContract, "increaseAssetPoolsNumber", [amountAssetStr], nil)
471466 if ((increaseAssetPoolsNumberInv == increaseAssetPoolsNumberInv))
472- 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), IntegerEntry(keyPoolSpread(poolAddress), defaultSpread)]), lpAssetIdStr)
467+ 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)
473468 else throw("Strict value is not equal to itself.")
474469 }
475470 else throw("Strict value is not equal to itself.")
476471 }
477472 else throw("Strict value is not equal to itself.")
478473 }
479474 else throw("Strict value is not equal to itself.")
480475 }
481476 else throw("Strict value is not equal to itself.")
482477 }
483478 else throw("Strict value is not equal to itself.")
484479 }
485480 }
486481 else throw("Strict value is not equal to itself.")
487482 }
488483
489484
490485
491486 @Callable(i)
492487 func managePool (poolAddress,newStatus) = {
493488 let checkCaller = mustManager(i)
494489 if ((checkCaller == checkCaller))
495490 then {
496491 let poolConfig = getPoolConfig(poolAddress)
497492 let poolStatus = poolConfig[idxPoolStatus]
498493 let lpAssetIdStr = poolConfig[idxPoolLPAssetId]
499494 let amountAssetStr = poolConfig[idxAmtAssetId]
500495 let priceAssetStr = poolConfig[idxPriceAssetId]
501496 let amountAssetsDecimals = parseIntValue(poolConfig[idxAmtAssetDcm])
502497 let priceAssetsDecimals = parseIntValue(poolConfig[idxPriceAssetDcm])
503498 let internalAmountAssetId = parseIntValue(poolConfig[idxIAmtAssetId])
504499 let internalPriceAssetId = parseIntValue(poolConfig[idxIPriceAssetId])
505500 let lpAssetDcm = parseIntValue(poolConfig[idxLPAssetDcm])
506501 let poolType = poolConfig[idxPoolType]
507502 [StringEntry(keyPoolConfig(toString(internalAmountAssetId), toString(internalPriceAssetId)), dataPoolCfg(poolAddress, toString(newStatus), lpAssetIdStr, amountAssetStr, priceAssetStr, amountAssetsDecimals, priceAssetsDecimals, internalAmountAssetId, internalPriceAssetId, lpAssetDcm, poolType))]
508503 }
509504 else throw("Strict value is not equal to itself.")
510505 }
511506
512507
513508
514509 @Callable(i)
515510 func emit (amountToEmit) = {
516511 let caller = i.caller
517512 let originCaller = i.originCaller
518513 let lpAssetRequested = valueOrErrorMessage(getString(keyMappingPoolContractToLPAsset(toString(caller))), "Invalid LP address called me.")
519514 let lpAsset = fromBase58String(lpAssetRequested)
520515 let legacyPools = split(valueOrElse(getString(keyLegacyPools()), EMPTY), SEP)
521516 let legacyFactoryContract = addressFromStringValue(valueOrErrorMessage(getString(keyLegacyFactoryContract()), "Legacy factory contract does not exists."))
522517 if ((0 >= amountToEmit))
523518 then nil
524519 else if (containsElement(legacyPools, toString(caller)))
525520 then $Tuple2(nil, legacyFactoryContract)
526521 else $Tuple2([Reissue(lpAsset, amountToEmit, true), ScriptTransfer(i.caller, amountToEmit, lpAsset)], "success")
527522 }
528523
529524
530525
531526 @Callable(i)
532527 func burn (amountToBurn) = {
533528 let caller = i.caller
534529 let originCaller = i.originCaller
535530 let payment = value(i.payments[0])
536531 let paymentAmount = value(payment.amount)
537532 let inAmountAssetId = toBase58String(value(payment.assetId))
538533 let lpAssetRequestedForBurning = valueOrErrorMessage(getString(keyMappingPoolContractToLPAsset(toString(caller))), "Invalid LP address called me.")
539534 if ((inAmountAssetId != lpAssetRequestedForBurning))
540535 then throw("Invalid asset passed.")
541536 else if ((amountToBurn != paymentAmount))
542537 then throw("Invalid amount passed.")
543538 else {
544539 let lpAsset = fromBase58String(lpAssetRequestedForBurning)
545540 $Tuple2([Burn(lpAsset, amountToBurn)], "success")
546541 }
547542 }
548543
549544
550545
551546 @Callable(i)
552547 func modifyWeight (lpAssetId,share) = {
553548 let checkCaller = if ((toBase58String(i.caller.bytes) == valueOrElse(getString(this, keyVotingEmissionContract()), "")))
554549 then true
555550 else mustManager(i)
556551 if ((checkCaller == checkCaller))
557552 then {
558553 let poolContractAddress = getStringOrFail(keyMappingPoolLPAssetToPoolContractAddress(lpAssetId))
559554 let poolWeightKey = keyPoolToWeight(poolContractAddress)
560555 let gwxWeightKey = keyPoolToWeight(GWXvirtualPOOL)
561556 let gwxWeight = valueOrElse(getInteger(gwxWeightKey), 0)
562557 let poolWeight = valueOrElse(getInteger(poolWeightKey), 0)
563558 let poolWeightNew = share
564559 let factoryCfg = split(getStringOrFail(keyFactoryConfig()), SEP)
565560 let stakingContract = getStakingAddressOrFail(factoryCfg)
566561 let onModifyWeightInv = invoke(stakingContract, "onModifyWeight", [lpAssetId, poolContractAddress], nil)
567562 if ((onModifyWeightInv == onModifyWeightInv))
568563 then {
569564 let gwxVirtualPoolActions = if ((gwxWeight == 0))
570565 then nil
571566 else [IntegerEntry(gwxWeightKey, 0)]
572567 let poolWeightHistoryKey = keyPoolToWeightHistory(poolContractAddress, 0)
573568 let poolWeightHistoryOrUnit = getInteger(poolWeightHistoryKey)
574569 let poolWeightHistoryActions = if ((poolWeightHistoryOrUnit == unit))
575570 then nil
576571 else [DeleteEntry(poolWeightHistoryKey)]
577572 (([IntegerEntry(poolWeightKey, poolWeightNew)] ++ gwxVirtualPoolActions) ++ poolWeightHistoryActions)
578573 }
579574 else throw("Strict value is not equal to itself.")
580575 }
581576 else throw("Strict value is not equal to itself.")
582577 }
583578
584579
585580
586581 @Callable(i)
587582 func modifyWeights (btcPoolAddress,ethPoolAddress,ethBtcPoolAddress,usdcUsdtPoolAddress) = {
588583 let checkCaller = mustManager(i)
589584 if ((checkCaller == checkCaller))
590585 then {
591586 let ethBtcWeightNew = ((5 * POOLWEIGHTMULT) / 100)
592587 let usdcUsdtWeightNew = ((5 * POOLWEIGHTMULT) / 100)
593588 let weightDecrement = ((5 * POOLWEIGHTMULT) / 100)
594589 let factoryCfg = split(getStringOrFail(keyFactoryConfig()), SEP)
595590 let stakingDapp = getStakingAddressOrFail(factoryCfg)
596591 let gwxRewardDapp = getGwxRewardAddressOrFail(factoryCfg)
597592 let btcWeightKEY = keyPoolToWeight(btcPoolAddress)
598593 let ethWeightKEY = keyPoolToWeight(ethPoolAddress)
599594 let ethBtcWeightKEY = keyPoolToWeight(ethBtcPoolAddress)
600595 let usdcUsdtWeightKEY = keyPoolToWeight(usdcUsdtPoolAddress)
601596 let btcWeight = getIntOrFail(btcWeightKEY)
602597 let ethWeight = getIntOrFail(ethWeightKEY)
603598 let btcWeightNew = (btcWeight - weightDecrement)
604599 let ethWeightNew = (ethWeight - weightDecrement)
605600 if ((0 >= btcWeightNew))
606601 then throw(("invalid btcWeightNew: " + toString(btcWeightNew)))
607602 else if ((0 >= ethWeightNew))
608603 then throw(("invalid ethWeightNew: " + toString(ethWeightNew)))
609604 else {
610605 let btcLpAssetIdStr = getStringOrFail(keyMappingPoolContractToLPAsset(btcPoolAddress))
611606 let ethLpAssetIdStr = getStringOrFail(keyMappingPoolContractToLPAsset(ethPoolAddress))
612607 let ethBtcLpAssetIdStr = getStringOrFail(keyMappingPoolContractToLPAsset(ethBtcPoolAddress))
613608 let usdcUsdtLpAssetIdStr = getStringOrFail(keyMappingPoolContractToLPAsset(usdcUsdtPoolAddress))
614609 let onModifyWeightBtc = invoke(stakingDapp, "onModifyWeight", [btcLpAssetIdStr, btcPoolAddress], nil)
615610 if ((onModifyWeightBtc == onModifyWeightBtc))
616611 then {
617612 let onModifyWeightEth = invoke(stakingDapp, "onModifyWeight", [ethLpAssetIdStr, ethPoolAddress], nil)
618613 if ((onModifyWeightEth == onModifyWeightEth))
619614 then {
620615 let onModifyWeightEthBtc = invoke(stakingDapp, "onModifyWeight", [ethBtcLpAssetIdStr, ethBtcPoolAddress], nil)
621616 if ((onModifyWeightEthBtc == onModifyWeightEthBtc))
622617 then {
623618 let onModifyWeightUsdcUsdt = invoke(stakingDapp, "onModifyWeight", [usdcUsdtLpAssetIdStr, usdcUsdtPoolAddress], nil)
624619 if ((onModifyWeightUsdcUsdt == onModifyWeightUsdcUsdt))
625620 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)]
626621 else throw("Strict value is not equal to itself.")
627622 }
628623 else throw("Strict value is not equal to itself.")
629624 }
630625 else throw("Strict value is not equal to itself.")
631626 }
632627 else throw("Strict value is not equal to itself.")
633628 }
634629 }
635630 else throw("Strict value is not equal to itself.")
636631 }
637632
638633
639634
640635 @Callable(i)
641636 func checkWxEmissionPoolLabel (amountAssetId,priceAssetId) = {
642637 let haveLabel = match getBoolean(keyWxEmission(amountAssetId, priceAssetId)) {
643638 case b: Boolean =>
644639 b
645640 case _ =>
646641 false
647642 }
648643 $Tuple2(nil, haveLabel)
649644 }
650645
651646
652647
653648 @Callable(i)
654649 func setWxEmissionPoolLabel (amountAssetId,priceAssetId) = {
655650 let checkCaller = mustAdmin(i)
656651 if ((checkCaller == checkCaller))
657652 then $Tuple2([BooleanEntry(keyWxEmission(amountAssetId, priceAssetId), true)], unit)
658653 else throw("Strict value is not equal to itself.")
659654 }
660655
661656
662657
663658 @Callable(i)
664659 func deleteWxEmissionPoolLabel (amountAssetId,priceAssetId) = {
665660 let checkCaller = if (mustThis(i))
666661 then true
667662 else mustAdmin(i)
668663 if ((checkCaller == checkCaller))
669664 then $Tuple2([DeleteEntry(keyWxEmission(amountAssetId, priceAssetId))], unit)
670665 else throw("Strict value is not equal to itself.")
671666 }
672667
673668
674669
675670 @Callable(i)
676671 func onVerificationLoss (assetId) = {
677672 let checkCaller = if ((toBase58String(i.caller.bytes) == valueOrElse(getString(this, keyAssetsStoreContract()), "")))
678673 then true
679674 else mustManager(i)
680675 if ((checkCaller == checkCaller))
681676 then {
682677 let priceAssets = getPriceAssets()
683678 let checkPriceAssetsSize = if ((size(priceAssets) > 0))
684679 then true
685680 else throw("invalid price assets")
686681 if ((checkPriceAssetsSize == checkPriceAssetsSize))
687682 then {
688683 func cb (acc,priceAsset) = {
689684 let r = invoke(this, "deleteWxEmissionPoolLabel", [assetId, priceAsset], nil)
690685 if ((r == r))
691686 then unit
692687 else throw("Strict value is not equal to itself.")
693688 }
694689
695690 let actions = {
696691 let $l = priceAssets
697692 let $s = size($l)
698693 let $acc0 = unit
699694 func $f0_1 ($a,$i) = if (($i >= $s))
700695 then $a
701696 else cb($a, $l[$i])
702697
703698 func $f0_2 ($a,$i) = if (($i >= $s))
704699 then $a
705700 else throw("List size exceeds 3")
706701
707702 $f0_2($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3)
708703 }
709704 if ((actions == actions))
710705 then $Tuple2(nil, unit)
711706 else throw("Strict value is not equal to itself.")
712707 }
713708 else throw("Strict value is not equal to itself.")
714709 }
715710 else throw("Strict value is not equal to itself.")
716711 }
717712
718713
719714
720715 @Callable(i)
721716 func isPoolOneTokenOperationsDisabledREADONLY (poolAddress) = {
722717 let poolConfig = getPoolConfig(poolAddress)
723718 let assetsInternal = $Tuple2(parseIntValue(poolConfig[idxIAmtAssetId]), parseIntValue(poolConfig[idxIPriceAssetId]))
724719 let poolOneTokenOperationsDisabled = valueOrElse(getBoolean(keyPoolOneTokenOperationsDisabled(assetsInternal)), false)
725720 let allPoolsOneTokenOperationsDisabled = valueOrElse(getBoolean(keyAllPoolsOneTokenOperationsDisabled()), false)
726721 $Tuple2(nil, if (allPoolsOneTokenOperationsDisabled)
727722 then true
728723 else poolOneTokenOperationsDisabled)
729724 }
730725
731726
732727 @Verifier(tx)
733728 func verify () = {
734729 let targetPublicKey = match managerPublicKeyOrUnit() {
735730 case pk: ByteVector =>
736731 pk
737732 case _: Unit =>
738733 tx.senderPublicKey
739734 case _ =>
740735 throw("Match error")
741736 }
742737 sigVerify(tx.bodyBytes, tx.proofs[0], targetPublicKey)
743738 }
744739

github/deemru/w8io/169f3d6 
89.19 ms