tx · AKNep1RR2qEMxh24VqU35qkHfHSZWKMQuA2LAuh7zJ4X

3PChRF3AsJG9YX78ED7wkXLwgCz6LuJBT1Z:  -0.01000000 Waves

2024.02.01 14:44 [4022890] smart account 3PChRF3AsJG9YX78ED7wkXLwgCz6LuJBT1Z > SELF 0.00000000 Waves

{ "type": 13, "id": "AKNep1RR2qEMxh24VqU35qkHfHSZWKMQuA2LAuh7zJ4X", "fee": 1000000, "feeAssetId": null, "timestamp": 1706787914560, "version": 2, "chainId": 87, "sender": "3PChRF3AsJG9YX78ED7wkXLwgCz6LuJBT1Z", "senderPublicKey": "Zqe5SqPv6kYySiE63WTvm2zCtWbEqfp7H1DwyaK8H5n", "proofs": [ "516ZBfkz6NgCBXPtf9DPjeUAWABBUMNBxCcB2g8LiajLuUChzCo7ZyDSvDRaVfzVQhCAhyTo9XMxJN3xfLUC9JEh" ], "script": "base64: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ZXlPcmFjbGVUaWNrZXJQcmljZQAAAAEAAAAGdGlja2VyCQEAAAAEam9pbgAAAAEJAARMAAAAAgIAAAAEJXMlcwkABEwAAAACAgAAAAVwcmljZQkABEwAAAACBQAAAAZ0aWNrZXIFAAAAA25pbAEAAAAOZ2V0UG9vbEFkZHJlc3MAAAAACQEAAAARQGV4dHJOYXRpdmUoMTA1OCkAAAABCQEAAAAOa2V5UG9vbEFkZHJlc3MAAAAAAQAAABVnZXRQb29sRmFjdG9yeUFkZHJlc3MAAAAACQEAAAALdmFsdWVPckVsc2UAAAACCQAEIgAAAAEJAQAAABVrZXlQb29sRmFjdG9yeUFkZHJlc3MAAAAABQAAAA9ERUZBVUxUX0ZBQ1RPUlkBAAAABHBvb2wAAAAACQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQEAAAAOZ2V0UG9vbEFkZHJlc3MAAAAAAQAAAAdmYWN0b3J5AAAAAAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkBAAAAFWdldFBvb2xGYWN0b3J5QWRkcmVzcwAAAAABAAAABm9yYWNsZQAAAAAJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCIAAAABCQEAAAAQa2V5T3JhY2xlQWRkcmVzcwAAAAACAAAAEU9yYWNsZSBpcyBub3Qgc2V0AQAAAClrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cwAAAAEAAAATcG9vbENvbnRyYWN0QWRkcmVzcwkBAAAABGpvaW4AAAABCQAETAAAAAICAAAABiVzJXMlcwkABEwAAAACBQAAABNwb29sQ29udHJhY3RBZGRyZXNzCQAETAAAAAICAAAACG1hcHBpbmdzCQAETAAAAAICAAAAF3Bvb2xDb250cmFjdDJQb29sQXNzZXRzBQAAAANuaWwBAAAADWtleVBvb2xDb25maWcAAAACAAAAE2Ftb3VudEFzc2V0SW50ZXJuYWwAAAAScHJpY2VBc3NldEludGVybmFsCQEAAAAEam9pbgAAAAEJAARMAAAAAgIAAAAGJWQlZCVzCQAETAAAAAIFAAAAE2Ftb3VudEFzc2V0SW50ZXJuYWwJAARMAAAAAgUAAAAScHJpY2VBc3NldEludGVybmFsCQAETAAAAAICAAAABmNvbmZpZwUAAAADbmlsAQAAAA1nZXRQb29sQ29uZmlnAAAAAAQAAAALcG9vbEFkZHJlc3MJAQAAAA5nZXRQb29sQWRkcmVzcwAAAAAEAAAACnBvb2xBc3NldHMJAAS1AAAAAgkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgkBAAAAB2ZhY3RvcnkAAAAACQEAAAApa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMAAAABBQAAAAtwb29sQWRkcmVzcwUAAAADU0VQBAAAABNhbW91bnRBc3NldEludGVybmFsCQABkQAAAAIFAAAACnBvb2xBc3NldHMAAAAAAAAAAAEEAAAAEnByaWNlQXNzZXRJbnRlcm5hbAkAAZEAAAACBQAAAApwb29sQXNzZXRzAAAAAAAAAAACCQAEtQAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIJAQAAAAdmYWN0b3J5AAAAAAkBAAAADWtleVBvb2xDb25maWcAAAACBQAAABNhbW91bnRBc3NldEludGVybmFsBQAAABJwcmljZUFzc2V0SW50ZXJuYWwFAAAAA1NFUAEAAAAQY2hlY2tIZWlnaHREZWx0YQAAAAEAAAALcHJpY2VIZWlnaHQEAAAADm1heEhlaWdodERlbHRhBQAAABVNQVhfUkFURV9IRUlHSFRfREVMVEEEAAAAC2N1cnJlbnREaWZmCQAAZQAAAAIIBQAAAAlsYXN0QmxvY2sAAAAGaGVpZ2h0BQAAAAtwcmljZUhlaWdodAMJAABnAAAAAgUAAAAObWF4SGVpZ2h0RGVsdGEFAAAAC2N1cnJlbnREaWZmBQAAAAR1bml0CQAAAgAAAAECAAAAEkxhcmdlIHByaWNlIGRlbHRhLgEAAAATZ2V0QW10QXNzZXRVc2RQcmljZQAAAAAEAAAABnRpY2tlcgkBAAAAEUBleHRyTmF0aXZlKDEwNTgpAAAAAQkBAAAACWtleVRpY2tlcgAAAAAEAAAAC3ByaWNlSGVpZ2h0CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACCQEAAAAGb3JhY2xlAAAAAAkBAAAAGmtleU9yYWNsZVRpY2tlclByaWNlSGVpZ2h0AAAAAQUAAAAGdGlja2VyBAAAAAtjaGVja0hlaWdodAkBAAAAEGNoZWNrSGVpZ2h0RGVsdGEAAAABBQAAAAtwcmljZUhlaWdodAMJAAAAAAAAAgUAAAALY2hlY2tIZWlnaHQFAAAAC2NoZWNrSGVpZ2h0BAAAAAVwcmljZQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgkBAAAABm9yYWNsZQAAAAAJAQAAABRrZXlPcmFjbGVUaWNrZXJQcmljZQAAAAEFAAAABnRpY2tlcgkAAGsAAAADBQAAAAVwcmljZQUAAAAJUFJFQ0lTSU9OBQAAAA9PUkFDTEVfREVDSU1BTFMJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQAAABBnZXRBc3NldFVzZFByaWNlAAAAAAQAAAADY2ZnCQEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAACWxwQXNzZXRJZAkAAlkAAAABCQABkQAAAAIFAAAAA2NmZwUAAAAQSWR4UG9vbExQQXNzZXRJZAQAAAAKYW10QXNzZXRJZAkAAZEAAAACBQAAAANjZmcFAAAADUlkeEFtdEFzc2V0SWQEAAAAC2FtdEFzc2V0RGNtCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAAA5JZHhBbXRBc3NldERjbQQAAAANcG9vbExwQmFsYW5jZQgJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAAJbHBBc3NldElkAAAACHF1YW50aXR5BAAAABJhY2NBbXRBc3NldEJhbGFuY2UJAQAAAAh0b1NjYWxlOAAAAAIJAQAAAAVhc0ludAAAAAEJAAP8AAAABAkBAAAABHBvb2wAAAAAAgAAABxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZCQAETAAAAAIFAAAACmFtdEFzc2V0SWQFAAAAA25pbAUAAAADbmlsBQAAAAthbXRBc3NldERjbQQAAAAQYWNjQW10QXNzZXRQcmljZQkBAAAAE2dldEFtdEFzc2V0VXNkUHJpY2UAAAAABAAAAAVwcmljZQkAAGsAAAADBQAAABJhY2NBbXRBc3NldEJhbGFuY2UJAABoAAAAAgUAAAAQYWNjQW10QXNzZXRQcmljZQAAAAAAAAAAAgUAAAANcG9vbExwQmFsYW5jZQkABRQAAAACBQAAAANuaWwJAARMAAAAAgUAAAAFcHJpY2UFAAAAA25pbAAAAAIAAAABaQEAAAAKaW5pdGlhbGl6ZQAAAAMAAAAOX29yYWNsZUFkZHJlc3MAAAAMX3Bvb2xBZGRyZXNzAAAAB190aWNrZXIEAAAACGRvQ2hlY2tzCQAETAAAAAIJAQAAAAxjaGVja0FkZHJlc3MAAAABBQAAAA5fb3JhY2xlQWRkcmVzcwkABEwAAAACCQEAAAAMY2hlY2tBZGRyZXNzAAAAAQUAAAAMX3Bvb2xBZGRyZXNzBQAAAANuaWwDCQAAAAAAAAIFAAAACGRvQ2hlY2tzBQAAAAhkb0NoZWNrcwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAQa2V5T3JhY2xlQWRkcmVzcwAAAAAFAAAADl9vcmFjbGVBZGRyZXNzCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA5rZXlQb29sQWRkcmVzcwAAAAAFAAAADF9wb29sQWRkcmVzcwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAJa2V5VGlja2VyAAAAAAUAAAAHX3RpY2tlcgUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAABJnZXRDdXJyZW50VXNkUHJpY2UAAAAACQAFFAAAAAIFAAAAA25pbAkBAAAAEGdldEFzc2V0VXNkUHJpY2UAAAAAAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXlKtKm4", "height": 4022890, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DSGzkF7sUbJZuFySy36kYaXajodAadhsBPdecv2qraqe Next: 8E9dR9KPwYewWocqrZc1nxfzkU3M7RBw4UsoSq61PiiF Diff:
OldNewDifferences
157157 let cfg = getPoolConfig()
158158 let lpAssetId = fromBase58String(cfg[IdxPoolLPAssetId])
159159 let amtAssetId = cfg[IdxAmtAssetId]
160- let priceAssetId = cfg[IdxPriceAssetId]
161160 let amtAssetDcm = parseIntValue(cfg[IdxAmtAssetDcm])
162- let priceAssetDcm = parseIntValue(cfg[IdxPriceAssetDcm])
163161 let poolLpBalance = value(assetInfo(lpAssetId)).quantity
164162 let accAmtAssetBalance = toScale8(asInt(invoke(pool(), "getAccBalanceWrapperREADONLY", [amtAssetId], nil)), amtAssetDcm)
165- let accPriceAssetBalance = toScale8(asInt(invoke(pool(), "getAccBalanceWrapperREADONLY", [priceAssetId], nil)), priceAssetDcm)
166- let price = if ((poolLpBalance == 0))
167- then 0
168- else parseBigIntValue({
169- let @ = ({
170- let @ = invoke(pool(), "calcPricesWrapperREADONLY", [accAmtAssetBalance, accPriceAssetBalance, poolLpBalance], nil)
171- if ($isInstanceOf(@, "List[Any]"))
172- then @
173- else throw("Couldn't cast Any to List[Any]")
174- })[0]
175- if ($isInstanceOf(@, "String"))
176- then @
177- else throw("Couldn't cast Any to String")
178- })
179- $Tuple2(nil, [poolLpBalance, accAmtAssetBalance, accPriceAssetBalance, price])
163+ let accAmtAssetPrice = getAmtAssetUsdPrice()
164+ let price = fraction(accAmtAssetBalance, (accAmtAssetPrice * 2), poolLpBalance)
165+ $Tuple2(nil, [price])
180166 }
181167
182168
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let DEFAULT_FACTORY = "3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv"
55
66 let DECIMAL_18 = 1000000000000000000
77
88 let DECIMAL_10 = 10000000000
99
1010 let DECIMAL_8 = 100000000
1111
1212 let DECIMAL_6 = 1000000
1313
1414 let SEP = "__"
1515
1616 let EMPTY = ""
1717
1818 let PRECISION = 1000000000000
1919
2020 let DECIMALS = 100000000
2121
2222 let MAX_RATE_HEIGHT_DELTA = 5
2323
2424 let ORACLE_DECIMALS = 1000000
2525
2626 func join (ar) = makeString(ar, SEP)
2727
2828
2929 func checkAddress (_address) = match addressFromString(_address) {
3030 case address: Address =>
3131 true
3232 case _: Unit =>
3333 throw("Invalid address")
3434 case _ =>
3535 throw("Match error")
3636 }
3737
3838
3939 func asInt (val) = match val {
4040 case valInt: Int =>
4141 valInt
4242 case _ =>
4343 throw("fail to cast into Int")
4444 }
4545
4646
4747 func asString (val) = match val {
4848 case valStr: String =>
4949 valStr
5050 case _ =>
5151 throw("fail to cast into String")
5252 }
5353
5454
5555 func toScale8 (val,dcm) = {
5656 let k = (DECIMAL_8 / dcm)
5757 (val * k)
5858 }
5959
6060
6161 func toIntScale8 (val) = toInt((val / toBigInt(DECIMAL_18)))
6262
6363
6464 let IdxPoolAddress = 1
6565
6666 let IdxPoolStatus = 2
6767
6868 let IdxPoolLPAssetId = 3
6969
7070 let IdxAmtAssetId = 4
7171
7272 let IdxPriceAssetId = 5
7373
7474 let IdxAmtAssetDcm = 6
7575
7676 let IdxPriceAssetDcm = 7
7777
7878 let IdxIAmtAssetId = 8
7979
8080 let IdxIPriceAssetId = 9
8181
8282 let IdxLPAssetDcm = 10
8383
8484 let IdxPoolType = 11
8585
8686 func keyPoolAddress () = join(["%s", "poolAddress"])
8787
8888
8989 func keyPoolFactoryAddress () = join(["%s", "poolFactoryAddress"])
9090
9191
9292 func keyTicker () = join(["%s", "ticker"])
9393
9494
9595 func keyOracleTickerPriceHeight (ticker) = join(["%s%s", "lastHeight", ticker])
9696
9797
9898 func keyOracleAddress () = join(["%s", "oracleAddress"])
9999
100100
101101 func keyOracleTickerPrice (ticker) = join(["%s%s", "price", ticker])
102102
103103
104104 func getPoolAddress () = getStringValue(keyPoolAddress())
105105
106106
107107 func getPoolFactoryAddress () = valueOrElse(getString(keyPoolFactoryAddress()), DEFAULT_FACTORY)
108108
109109
110110 func pool () = addressFromStringValue(getPoolAddress())
111111
112112
113113 func factory () = addressFromStringValue(getPoolFactoryAddress())
114114
115115
116116 func oracle () = addressFromStringValue(valueOrErrorMessage(getString(keyOracleAddress()), "Oracle is not set"))
117117
118118
119119 func keyMappingPoolContractAddressToPoolAssets (poolContractAddress) = join(["%s%s%s", poolContractAddress, "mappings", "poolContract2PoolAssets"])
120120
121121
122122 func keyPoolConfig (amountAssetInternal,priceAssetInternal) = join(["%d%d%s", amountAssetInternal, priceAssetInternal, "config"])
123123
124124
125125 func getPoolConfig () = {
126126 let poolAddress = getPoolAddress()
127127 let poolAssets = split(getStringValue(factory(), keyMappingPoolContractAddressToPoolAssets(poolAddress)), SEP)
128128 let amountAssetInternal = poolAssets[1]
129129 let priceAssetInternal = poolAssets[2]
130130 split(getStringValue(factory(), keyPoolConfig(amountAssetInternal, priceAssetInternal)), SEP)
131131 }
132132
133133
134134 func checkHeightDelta (priceHeight) = {
135135 let maxHeightDelta = MAX_RATE_HEIGHT_DELTA
136136 let currentDiff = (lastBlock.height - priceHeight)
137137 if ((maxHeightDelta >= currentDiff))
138138 then unit
139139 else throw("Large price delta.")
140140 }
141141
142142
143143 func getAmtAssetUsdPrice () = {
144144 let ticker = getStringValue(keyTicker())
145145 let priceHeight = getIntegerValue(oracle(), keyOracleTickerPriceHeight(ticker))
146146 let checkHeight = checkHeightDelta(priceHeight)
147147 if ((checkHeight == checkHeight))
148148 then {
149149 let price = getIntegerValue(oracle(), keyOracleTickerPrice(ticker))
150150 fraction(price, PRECISION, ORACLE_DECIMALS)
151151 }
152152 else throw("Strict value is not equal to itself.")
153153 }
154154
155155
156156 func getAssetUsdPrice () = {
157157 let cfg = getPoolConfig()
158158 let lpAssetId = fromBase58String(cfg[IdxPoolLPAssetId])
159159 let amtAssetId = cfg[IdxAmtAssetId]
160- let priceAssetId = cfg[IdxPriceAssetId]
161160 let amtAssetDcm = parseIntValue(cfg[IdxAmtAssetDcm])
162- let priceAssetDcm = parseIntValue(cfg[IdxPriceAssetDcm])
163161 let poolLpBalance = value(assetInfo(lpAssetId)).quantity
164162 let accAmtAssetBalance = toScale8(asInt(invoke(pool(), "getAccBalanceWrapperREADONLY", [amtAssetId], nil)), amtAssetDcm)
165- let accPriceAssetBalance = toScale8(asInt(invoke(pool(), "getAccBalanceWrapperREADONLY", [priceAssetId], nil)), priceAssetDcm)
166- let price = if ((poolLpBalance == 0))
167- then 0
168- else parseBigIntValue({
169- let @ = ({
170- let @ = invoke(pool(), "calcPricesWrapperREADONLY", [accAmtAssetBalance, accPriceAssetBalance, poolLpBalance], nil)
171- if ($isInstanceOf(@, "List[Any]"))
172- then @
173- else throw("Couldn't cast Any to List[Any]")
174- })[0]
175- if ($isInstanceOf(@, "String"))
176- then @
177- else throw("Couldn't cast Any to String")
178- })
179- $Tuple2(nil, [poolLpBalance, accAmtAssetBalance, accPriceAssetBalance, price])
163+ let accAmtAssetPrice = getAmtAssetUsdPrice()
164+ let price = fraction(accAmtAssetBalance, (accAmtAssetPrice * 2), poolLpBalance)
165+ $Tuple2(nil, [price])
180166 }
181167
182168
183169 @Callable(i)
184170 func initialize (_oracleAddress,_poolAddress,_ticker) = {
185171 let doChecks = [checkAddress(_oracleAddress), checkAddress(_poolAddress)]
186172 if ((doChecks == doChecks))
187173 then [StringEntry(keyOracleAddress(), _oracleAddress), StringEntry(keyPoolAddress(), _poolAddress), StringEntry(keyTicker(), _ticker)]
188174 else throw("Strict value is not equal to itself.")
189175 }
190176
191177
192178
193179 @Callable(i)
194180 func getCurrentUsdPrice () = $Tuple2(nil, getAssetUsdPrice())
195181
196182
197183 @Verifier(tx)
198184 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
199185

github/deemru/w8io/6500d08 
33.57 ms