tx · 3sPLws5tXwicZQGq4hv1AaDf27Z369MFXcftqpGZsoHa

3MwLcJy3MSb2kq6dUaUR5uBgm8zCKZMjz2S:  -0.01400000 Waves

2021.03.26 23:26 [1455189] smart account 3MwLcJy3MSb2kq6dUaUR5uBgm8zCKZMjz2S > SELF 0.00000000 Waves

{ "type": 13, "id": "3sPLws5tXwicZQGq4hv1AaDf27Z369MFXcftqpGZsoHa", "fee": 1400000, "feeAssetId": null, "timestamp": 1616790406533, "version": 2, "chainId": 84, "sender": "3MwLcJy3MSb2kq6dUaUR5uBgm8zCKZMjz2S", "senderPublicKey": "CgByewRUvLk7UtWSfRMLSYw4Ap2wT5dcdVYKideqDp9M", "proofs": [ "tUZAmPEkMACLu5KT9Vm1GydrSfg5bq3Ao6sL8vY6Btk7iDn13TpUyXGWgaw2iE1Z8bevWzPWF7x8okg14NU3MBM" ], "script": "base64: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", "height": 1455189, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Fm35RrkjvLNf4dZYggTUdmDGAtDW7KV7VRWJWcH1tMFc Next: 5R5BHKikDAGwFGHyA72uMjcsx5XfXsQJNRvZmsmcyxUB Diff:
OldNewDifferences
77
88 let totalFeeDyzraptKey = "total_fee_dyzrapt"
99
10-let priceOfDyzrapt = "dyz"
10+let priceOfDyzraptKey = "dyz"
1111
12-let priceOfEth = "eth"
12+let priceOfEthKey = "eth"
1313
1414 let oracleAddress = Address(base58'3N7G2kVtBTh94aEnDHQ9dpi4EdsDxAiDXjB')
1515
4141
4242
4343 func usdnToDyzrapt (amount) = {
44- let dyzraptPrice = valueOrErrorMessage(getInteger(oracleAddress, "dyz"), "Unable to load price")
44+ let dyzraptPrice = valueOrErrorMessage(getInteger(oracleAddress, priceOfDyzraptKey), "Unable to load price")
4545 fraction(amount, 10000, dyzraptPrice)
4646 }
4747
7676 }
7777
7878
79+
80+@Callable(i)
81+func swapEthToDyzrapt () = {
82+ let pmt = value(i.payments[0])
83+ let assetId = pmt.assetId
84+ let totalAmount = pmt.amount
85+ if ((assetId != ethAssetId))
86+ then throw("Only weth tokens are allowed for swapping")
87+ else {
88+ let fee = getFeeAmount(totalAmount)
89+ let amount = (totalAmount - fee)
90+ let ethPrice = valueOrErrorMessage(getInteger(oracleAddress, priceOfEthKey), "Unable to load price")
91+ let usdnAmount = fraction(amount, ethPrice, 10000)
92+ let dyzraptAmount = usdnToDyzrapt(usdnAmount)
93+ let savedFee = getTotalFeeEth()
94+ let totalFee = (savedFee + fee)
95+[IntegerEntry(totalFeeEthKey, totalFee), ScriptTransfer(i.caller, dyzraptAmount, dyzraptAssetId)]
96+ }
97+ }
98+
99+
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let totalFeeEthKey = "total_fee_eth"
55
66 let totalFeeUsdKey = "total_fee_usd"
77
88 let totalFeeDyzraptKey = "total_fee_dyzrapt"
99
10-let priceOfDyzrapt = "dyz"
10+let priceOfDyzraptKey = "dyz"
1111
12-let priceOfEth = "eth"
12+let priceOfEthKey = "eth"
1313
1414 let oracleAddress = Address(base58'3N7G2kVtBTh94aEnDHQ9dpi4EdsDxAiDXjB')
1515
1616 let dyzraptAssetId = base58'Bi4jxKEFjjYG2emeyxZfpkVMS88N7uAogHNsi1urkoJA'
1717
1818 let ethAssetId = base58'3JJkzB4pFXcqdJvC9TcV8ys1FLgesr5SxbhmykkpceQp'
1919
2020 let usdnAssetId = base58'9Nf5wpj6jds3VRZKDryp6Dtf3R9d8MdbjNhencLogCr5'
2121
2222 func getFeeAmount (amount) = {
2323 let fee = fraction(amount, 3, 100)
2424 fee
2525 }
2626
2727
2828 func getIntKeyData (key) = {
2929 let v = valueOrElse(getInteger(this, key), 0)
3030 v
3131 }
3232
3333
3434 func getTotalFeeEth () = getIntKeyData(totalFeeEthKey)
3535
3636
3737 func getTotalFeeUsd () = getIntKeyData(totalFeeUsdKey)
3838
3939
4040 func getTotalFeeDyzrapt () = getIntKeyData(totalFeeDyzraptKey)
4141
4242
4343 func usdnToDyzrapt (amount) = {
44- let dyzraptPrice = valueOrErrorMessage(getInteger(oracleAddress, "dyz"), "Unable to load price")
44+ let dyzraptPrice = valueOrErrorMessage(getInteger(oracleAddress, priceOfDyzraptKey), "Unable to load price")
4545 fraction(amount, 10000, dyzraptPrice)
4646 }
4747
4848
4949 @Callable(i)
5050 func test () = {
5151 let pmt = value(i.payments[0])
5252 let assetId = pmt.assetId
5353 let amount = pmt.amount
5454 if ((assetId == dyzraptAssetId))
5555 then throw(("its a dyzrapt. Amount=" + toString(amount)))
5656 else throw("its not a dyzrapt")
5757 }
5858
5959
6060
6161 @Callable(i)
6262 func swapUsdnToDyzrapt () = {
6363 let pmt = value(i.payments[0])
6464 let assetId = pmt.assetId
6565 let totalAmount = pmt.amount
6666 if ((assetId != usdnAssetId))
6767 then throw("Only usdn tokens are allowed for swapping")
6868 else {
6969 let fee = getFeeAmount(totalAmount)
7070 let amount = (totalAmount - fee)
7171 let dyzraptAmount = usdnToDyzrapt(amount)
7272 let savedFee = getTotalFeeUsd()
7373 let totalFee = (savedFee + fee)
7474 [IntegerEntry(totalFeeUsdKey, totalFee), ScriptTransfer(i.caller, dyzraptAmount, dyzraptAssetId)]
7575 }
7676 }
7777
7878
79+
80+@Callable(i)
81+func swapEthToDyzrapt () = {
82+ let pmt = value(i.payments[0])
83+ let assetId = pmt.assetId
84+ let totalAmount = pmt.amount
85+ if ((assetId != ethAssetId))
86+ then throw("Only weth tokens are allowed for swapping")
87+ else {
88+ let fee = getFeeAmount(totalAmount)
89+ let amount = (totalAmount - fee)
90+ let ethPrice = valueOrErrorMessage(getInteger(oracleAddress, priceOfEthKey), "Unable to load price")
91+ let usdnAmount = fraction(amount, ethPrice, 10000)
92+ let dyzraptAmount = usdnToDyzrapt(usdnAmount)
93+ let savedFee = getTotalFeeEth()
94+ let totalFee = (savedFee + fee)
95+[IntegerEntry(totalFeeEthKey, totalFee), ScriptTransfer(i.caller, dyzraptAmount, dyzraptAssetId)]
96+ }
97+ }
98+
99+

github/deemru/w8io/873ac7e 
44.46 ms