tx · DM77BjUsvQyoKa55eQotWncpuMWoQuEtTWxY1Vt1Y5WJ

3PChRF3AsJG9YX78ED7wkXLwgCz6LuJBT1Z:  -0.01000000 Waves

2024.01.31 23:45 [4021994] smart account 3PChRF3AsJG9YX78ED7wkXLwgCz6LuJBT1Z > SELF 0.00000000 Waves

{ "type": 13, "id": "DM77BjUsvQyoKa55eQotWncpuMWoQuEtTWxY1Vt1Y5WJ", "fee": 1000000, "feeAssetId": null, "timestamp": 1706733990540, "version": 2, "chainId": 87, "sender": "3PChRF3AsJG9YX78ED7wkXLwgCz6LuJBT1Z", "senderPublicKey": "Zqe5SqPv6kYySiE63WTvm2zCtWbEqfp7H1DwyaK8H5n", "proofs": [ "4MvkppZ3YPcZ51YQ8L1cJ9PBr6sph3kBFQhi96Ei2DSH78CTX7DJkaYVrigfKnGgYS3CBB6Hhao91JxtUxBKgjLX" ], "script": "base64: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dHMAAAABBQAAAAtwb29sQWRkcmVzcwUAAAADU0VQBAAAABNhbW91bnRBc3NldEludGVybmFsCQABkQAAAAIFAAAACnBvb2xBc3NldHMAAAAAAAAAAAEEAAAAEnByaWNlQXNzZXRJbnRlcm5hbAkAAZEAAAACBQAAAApwb29sQXNzZXRzAAAAAAAAAAACCQAEtQAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIJAQAAAAdmYWN0b3J5AAAAAAkBAAAADWtleVBvb2xDb25maWcAAAACBQAAABNhbW91bnRBc3NldEludGVybmFsBQAAABJwcmljZUFzc2V0SW50ZXJuYWwFAAAAA1NFUAEAAAAQY2hlY2tIZWlnaHREZWx0YQAAAAEAAAALcHJpY2VIZWlnaHQEAAAADm1heEhlaWdodERlbHRhBQAAABVNQVhfUkFURV9IRUlHSFRfREVMVEEEAAAAC2N1cnJlbnREaWZmCQAAZQAAAAIIBQAAAAlsYXN0QmxvY2sAAAAGaGVpZ2h0BQAAAAtwcmljZUhlaWdodAMJAABnAAAAAgUAAAAObWF4SGVpZ2h0RGVsdGEFAAAAC2N1cnJlbnREaWZmBQAAAAR1bml0CQAAAgAAAAECAAAAEkxhcmdlIHByaWNlIGRlbHRhLgEAAAATZ2V0QW10QXNzZXRVc2RQcmljZQAAAAAEAAAABnRpY2tlcgkBAAAAEUBleHRyTmF0aXZlKDEwNTgpAAAAAQkBAAAACWtleVRpY2tlcgAAAAAEAAAAC3ByaWNlSGVpZ2h0CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACCQEAAAAGb3JhY2xlAAAAAAkBAAAAGmtleU9yYWNsZVRpY2tlclByaWNlSGVpZ2h0AAAAAQUAAAAGdGlja2VyBAAAAAtjaGVja0hlaWdodAkBAAAAEGNoZWNrSGVpZ2h0RGVsdGEAAAABBQAAAAtwcmljZUhlaWdodAMJAAAAAAAAAgUAAAALY2hlY2tIZWlnaHQFAAAAC2NoZWNrSGVpZ2h0BAAAAAVwcmljZQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgkBAAAABm9yYWNsZQAAAAAJAQAAABRrZXlPcmFjbGVUaWNrZXJQcmljZQAAAAEFAAAABnRpY2tlcgkAAGsAAAADBQAA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", "height": 4021994, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GofunWbxsiT3b2hQ3VqZFzkAYzr7rZ8iWn6uP9y51zTw Next: J4onXqBPbCNGEtt7Wo7Xx66FaiD6DZzip8SJeuEqshFd Diff:
OldNewDifferences
33 {-# CONTENT_TYPE DAPP #-}
44 let DEFAULT_FACTORY = "3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv"
55
6-let DECIMAL_18 = 1000000000000000000
6+let DECIMAL_18 = toBigInt(1000000000000000000)
77
88 let SEP = "__"
99
144144 let amtAssetId = cfg[IdxAmtAssetId]
145145 let priceAssetId = cfg[IdxPriceAssetId]
146146 let poolLpBalance = value(assetInfo(lpAssetId)).quantity
147- let accAmtAssetBalance = asInt(invoke(pool(), "getAccBalanceWrapperREADONLY", [amtAssetId], nil))
148- let accPriceAssetBalance = asInt(invoke(pool(), "getAccBalanceWrapperREADONLY", [priceAssetId], nil))
147+ let accAmtAssetBalance = toBigInt(asInt(invoke(pool(), "getAccBalanceWrapperREADONLY", [amtAssetId], nil)))
148+ let accPriceAssetBalance = toBigInt(asInt(invoke(pool(), "getAccBalanceWrapperREADONLY", [priceAssetId], nil)))
149149 let accPriceAssetPrice = if ((poolLpBalance == 0))
150- then 0
150+ then toBigInt(0)
151151 else parseBigIntValue({
152152 let @ = ({
153153 let @ = invoke(pool(), "calcPricesWrapperREADONLY", [accAmtAssetBalance, accPriceAssetBalance, poolLpBalance], nil)
159159 then @
160160 else throw("Couldn't cast Any to String")
161161 })
162- $Tuple2(nil, accPriceAssetPrice)
162+ let accAmtAssetEq = (accAmtAssetBalance + fraction(accPriceAssetBalance, DECIMAL_18, accPriceAssetPrice))
163+ let accAmtAssetPrice = getAmtAssetUsdPrice()
164+ $Tuple2(nil, accAmtAssetEq)
163165 }
164166
165167
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let DEFAULT_FACTORY = "3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv"
55
6-let DECIMAL_18 = 1000000000000000000
6+let DECIMAL_18 = toBigInt(1000000000000000000)
77
88 let SEP = "__"
99
1010 let EMPTY = ""
1111
1212 let PRECISION = 1000000000000
1313
1414 let DECIMALS = 100000000
1515
1616 let MAX_RATE_HEIGHT_DELTA = 5
1717
1818 let ORACLE_DECIMALS = 1000000
1919
2020 func join (ar) = makeString(ar, SEP)
2121
2222
2323 func checkAddress (_address) = match addressFromString(_address) {
2424 case address: Address =>
2525 true
2626 case _: Unit =>
2727 throw("Invalid address")
2828 case _ =>
2929 throw("Match error")
3030 }
3131
3232
3333 let IdxPoolAddress = 1
3434
3535 let IdxPoolStatus = 2
3636
3737 let IdxPoolLPAssetId = 3
3838
3939 let IdxAmtAssetId = 4
4040
4141 let IdxPriceAssetId = 5
4242
4343 let IdxAmtAssetDcm = 6
4444
4545 let IdxPriceAssetDcm = 7
4646
4747 let IdxIAmtAssetId = 8
4848
4949 let IdxIPriceAssetId = 9
5050
5151 let IdxLPAssetDcm = 10
5252
5353 let IdxPoolType = 11
5454
5555 func keyPoolAddress () = join(["%s", "poolAddress"])
5656
5757
5858 func keyPoolFactoryAddress () = join(["%s", "poolFactoryAddress"])
5959
6060
6161 func keyTicker () = join(["%s", "ticker"])
6262
6363
6464 func keyOracleTickerPriceHeight (ticker) = join(["%s%s", "lastHeight", ticker])
6565
6666
6767 func keyOracleAddress () = join(["%s", "oracleAddress"])
6868
6969
7070 func keyOracleTickerPrice (ticker) = join(["%s%s", "price", ticker])
7171
7272
7373 func getPoolAddress () = getStringValue(keyPoolAddress())
7474
7575
7676 func getPoolFactoryAddress () = valueOrElse(getString(keyPoolFactoryAddress()), DEFAULT_FACTORY)
7777
7878
7979 func pool () = addressFromStringValue(getPoolAddress())
8080
8181
8282 func factory () = addressFromStringValue(getPoolFactoryAddress())
8383
8484
8585 func oracle () = addressFromStringValue(valueOrErrorMessage(getString(keyOracleAddress()), "Oracle is not set"))
8686
8787
8888 func keyMappingPoolContractAddressToPoolAssets (poolContractAddress) = join(["%s%s%s", poolContractAddress, "mappings", "poolContract2PoolAssets"])
8989
9090
9191 func keyPoolConfig (amountAssetInternal,priceAssetInternal) = join(["%d%d%s", amountAssetInternal, priceAssetInternal, "config"])
9292
9393
9494 func asInt (val) = match val {
9595 case valInt: Int =>
9696 valInt
9797 case _ =>
9898 throw("fail to cast into Int")
9999 }
100100
101101
102102 func asString (val) = match val {
103103 case valStr: String =>
104104 valStr
105105 case _ =>
106106 throw("fail to cast into String")
107107 }
108108
109109
110110 func getPoolConfig () = {
111111 let poolAddress = getPoolAddress()
112112 let poolAssets = split(getStringValue(factory(), keyMappingPoolContractAddressToPoolAssets(poolAddress)), SEP)
113113 let amountAssetInternal = poolAssets[1]
114114 let priceAssetInternal = poolAssets[2]
115115 split(getStringValue(factory(), keyPoolConfig(amountAssetInternal, priceAssetInternal)), SEP)
116116 }
117117
118118
119119 func checkHeightDelta (priceHeight) = {
120120 let maxHeightDelta = MAX_RATE_HEIGHT_DELTA
121121 let currentDiff = (lastBlock.height - priceHeight)
122122 if ((maxHeightDelta >= currentDiff))
123123 then unit
124124 else throw("Large price delta.")
125125 }
126126
127127
128128 func getAmtAssetUsdPrice () = {
129129 let ticker = getStringValue(keyTicker())
130130 let priceHeight = getIntegerValue(oracle(), keyOracleTickerPriceHeight(ticker))
131131 let checkHeight = checkHeightDelta(priceHeight)
132132 if ((checkHeight == checkHeight))
133133 then {
134134 let price = getIntegerValue(oracle(), keyOracleTickerPrice(ticker))
135135 fraction(price, PRECISION, ORACLE_DECIMALS)
136136 }
137137 else throw("Strict value is not equal to itself.")
138138 }
139139
140140
141141 func getAssetUsdPrice () = {
142142 let cfg = getPoolConfig()
143143 let lpAssetId = fromBase58String(cfg[IdxPoolLPAssetId])
144144 let amtAssetId = cfg[IdxAmtAssetId]
145145 let priceAssetId = cfg[IdxPriceAssetId]
146146 let poolLpBalance = value(assetInfo(lpAssetId)).quantity
147- let accAmtAssetBalance = asInt(invoke(pool(), "getAccBalanceWrapperREADONLY", [amtAssetId], nil))
148- let accPriceAssetBalance = asInt(invoke(pool(), "getAccBalanceWrapperREADONLY", [priceAssetId], nil))
147+ let accAmtAssetBalance = toBigInt(asInt(invoke(pool(), "getAccBalanceWrapperREADONLY", [amtAssetId], nil)))
148+ let accPriceAssetBalance = toBigInt(asInt(invoke(pool(), "getAccBalanceWrapperREADONLY", [priceAssetId], nil)))
149149 let accPriceAssetPrice = if ((poolLpBalance == 0))
150- then 0
150+ then toBigInt(0)
151151 else parseBigIntValue({
152152 let @ = ({
153153 let @ = invoke(pool(), "calcPricesWrapperREADONLY", [accAmtAssetBalance, accPriceAssetBalance, poolLpBalance], nil)
154154 if ($isInstanceOf(@, "List[Any]"))
155155 then @
156156 else throw("Couldn't cast Any to List[Any]")
157157 })[0]
158158 if ($isInstanceOf(@, "String"))
159159 then @
160160 else throw("Couldn't cast Any to String")
161161 })
162- $Tuple2(nil, accPriceAssetPrice)
162+ let accAmtAssetEq = (accAmtAssetBalance + fraction(accPriceAssetBalance, DECIMAL_18, accPriceAssetPrice))
163+ let accAmtAssetPrice = getAmtAssetUsdPrice()
164+ $Tuple2(nil, accAmtAssetEq)
163165 }
164166
165167
166168 @Callable(i)
167169 func initialize (_oracleAddress,_poolAddress,_ticker) = {
168170 let doChecks = [checkAddress(_oracleAddress), checkAddress(_poolAddress)]
169171 if ((doChecks == doChecks))
170172 then [StringEntry(keyOracleAddress(), _oracleAddress), StringEntry(keyPoolAddress(), _poolAddress), StringEntry(keyTicker(), _ticker)]
171173 else throw("Strict value is not equal to itself.")
172174 }
173175
174176
175177
176178 @Callable(i)
177179 func getCurrentUsdPrice () = $Tuple2(nil, getAssetUsdPrice())
178180
179181
180182 @Verifier(tx)
181183 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
182184

github/deemru/w8io/6500d08 
35.96 ms