tx · 2YNjFpGgKgw4E9zFmqoJ3auPoUMF72DbQ1qQtGd6gBTS

3MwLcJy3MSb2kq6dUaUR5uBgm8zCKZMjz2S:  -0.01400000 Waves

2021.03.26 23:49 [1455211] smart account 3MwLcJy3MSb2kq6dUaUR5uBgm8zCKZMjz2S > SELF 0.00000000 Waves

{ "type": 13, "id": "2YNjFpGgKgw4E9zFmqoJ3auPoUMF72DbQ1qQtGd6gBTS", "fee": 1400000, "feeAssetId": null, "timestamp": 1616791781559, "version": 2, "chainId": 84, "sender": "3MwLcJy3MSb2kq6dUaUR5uBgm8zCKZMjz2S", "senderPublicKey": "CgByewRUvLk7UtWSfRMLSYw4Ap2wT5dcdVYKideqDp9M", "proofs": [ "5y41RtWQepG9tZuAWqok6qkFken7M58tuWqp6zWrVCjbZx22xAGMsPupoc6U3BQ72cjsDnZVi4bZ5mVGuDmCeaLQ" ], "script": "base64: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C3RvdGFsQW1vdW50BQAAAANmZWUEAAAADWR5enJhcHRBbW91bnQJAQAAAA11c2RuVG9EeXpyYXB0AAAAAQUAAAAGYW1vdW50BAAAAAhzYXZlZEZlZQkBAAAADmdldFRvdGFsRmVlVXNkAAAAAAQAAAAIdG90YWxGZWUJAABkAAAAAgUAAAAIc2F2ZWRGZWUFAAAAA2ZlZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAOdG90YWxGZWVVc2RLZXkFAAAACHRvdGFsRmVlCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAANZHl6cmFwdEFtb3VudAUAAAAOZHl6cmFwdEFzc2V0SWQFAAAAA25pbAAAAAFpAQAAABBzd2FwRXRoVG9EeXpyYXB0AAAAAAQAAAADcG10CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAAdhc3NldElkCAUAAAADcG10AAAAB2Fzc2V0SWQEAAAAC3RvdGFsQW1vdW50CAUAAAADcG10AAAABmFtb3VudAMJAQAAAAIhPQAAAAIFAAAAB2Fzc2V0SWQFAAAACmV0aEFzc2V0SWQJAAACAAAAAQIAAAApT25seSBXRVRIIHRva2VucyBhcmUgYWxsb3dlZCBmb3Igc3dhcHBpbmcEAAAAA2ZlZQkBAAAADGdldEZlZUFtb3VudAAAAAEFAAAAC3RvdGFsQW1vdW50BAAAAAZhbW91bnQJAABlAAAAAgUAAAALdG90YWxBbW91bnQFAAAAA2ZlZQQAAAAIZXRoUHJpY2UJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAA1vcmFjbGVBZGRyZXNzBQAAAA1wcmljZU9mRXRoS2V5AgAAABRVbmFibGUgdG8gbG9hZCBwcmljZQQAAAAKdXNkbkFtb3VudAkAAGsAAAADBQAAAAZhbW91bnQFAAAACGV0aFByaWNlAAAAAAAAACcQBAAAAA1keXpyYXB0QW1vdW50CQEAAAANdXNkblRvRHl6cmFwdAAAAAEFAAAACnVzZG5BbW91bnQEAAAACHNhdmVkRmVlCQEAAAAOZ2V0VG90YWxGZWVFdGgAAAAABAAAAAh0b3RhbEZlZQkAAGQAAAACBQAAAAhzYXZlZEZlZQUAAAADZmVlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA50b3RhbEZlZUV0aEtleQUAAAAIdG90YWxGZWUJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAA1keXpyYXB0QW1vdW50BQAAAA5keXpyYXB0QXNzZXRJZAUAAAADbmlsAAAAAWkBAAAAEXN3YXBEeXpyYXB0VG9Vc2RuAAAAAAQAAAADcG10CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAAdhc3NldElkCAUAAAADcG10AAAAB2Fzc2V0SWQEAAAAC3RvdGFsQW1vdW50CAUAAAADcG10AAAABmFtb3VudAMJAQAAAAIhPQAAAAIFAAAAB2Fzc2V0SWQFAAAADmR5enJhcHRBc3NldElkCQAAAgAAAAECAAAALE9ubHkgRFlaUkFQVCB0b2tlbnMgYXJlIGFsbG93ZWQgZm9yIHN3YXBwaW5nBAAAAANmZWUJAQAAAAxnZXRGZWVBbW91bnQAAAABBQAAAAt0b3RhbEFtb3VudAQAAAAGYW1vdW50CQAAZQAAAAIFAAAAC3RvdGFsQW1vdW50BQAAAANmZWUEAAAACnVzZG5BbW91bnQJAQAAAA1keXpyYXB0VG9Vc2RuAAAAAQUAAAAGYW1vdW50BAAAAAhzYXZlZEZlZQkBAAAAEmdldFRvdGFsRmVlRHl6cmFwdAAAAAAEAAAACHRvdGFsRmVlCQAAZAAAAAIFAAAACHNhdmVkRmVlBQAAAANmZWUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEnRvdGFsRmVlRHl6cmFwdEtleQUAAAAIdG90YWxGZWUJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAp1c2RuQW1vdW50BQAAAAt1c2RuQXNzZXRJZAUAAAADbmlsAAAAAWkBAAAAEHN3YXBEeXpyYXB0VG9FdGgAAAAABAAAAANwbXQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAAB2Fzc2V0SWQIBQAAAANwbXQAAAAHYXNzZXRJZAQAAAALdG90YWxBbW91bnQIBQAAAANwbXQAAAAGYW1vdW50AwkBAAAAAiE9AAAAAgUAAAAHYXNzZXRJZAUAAAAOZHl6cmFwdEFzc2V0SWQJAAACAAAAAQIAAAAsT25seSBEWVpSQVBUIHRva2VucyBhcmUgYWxsb3dlZCBmb3Igc3dhcHBpbmcEAAAAA2ZlZQkBAAAADGdldEZlZUFtb3VudAAAAAEFAAAAC3RvdGFsQW1vdW50BAAAAAZhbW91bnQJAABlAAAAAgUAAAALdG90YWxBbW91bnQFAAAAA2ZlZQQAAAAKdXNkbkFtb3VudAkBAAAADWR5enJhcHRUb1VzZG4AAAABBQAAAAZhbW91bnQEAAAACGV0aFByaWNlCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAANb3JhY2xlQWRkcmVzcwUAAAANcHJpY2VPZkV0aEtleQIAAAAUVW5hYmxlIHRvIGxvYWQgcHJpY2UEAAAACWV0aEFtb3VudAkAAGsAAAADBQAAAAp1c2RuQW1vdW50BQAAAAhldGhQcmljZQAAAAAAAAAnEAQAAAAIc2F2ZWRGZWUJAQAAABJnZXRUb3RhbEZlZUR5enJhcHQAAAAABAAAAAh0b3RhbEZlZQkAAGQAAAACBQAAAAhzYXZlZEZlZQUAAAADZmVlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJ0b3RhbEZlZUR5enJhcHRLZXkFAAAACHRvdGFsRmVlCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAJZXRoQW1vdW50BQAAAApldGhBc3NldElkBQAAAANuaWwAAAAAaDkjRQ==", "height": 1455211, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5R5BHKikDAGwFGHyA72uMjcsx5XfXsQJNRvZmsmcyxUB Next: 7f6YdXZ6iZt2Wh1sF2ZXYe5rRqCAasqoZ6RpExkGM423 Diff:
OldNewDifferences
117117 let usdnAmount = dyzraptToUsdn(amount)
118118 let savedFee = getTotalFeeDyzrapt()
119119 let totalFee = (savedFee + fee)
120-[IntegerEntry(totalFeeUsdKey, totalFee), ScriptTransfer(i.caller, usdnAmount, usdnAssetId)]
120+[IntegerEntry(totalFeeDyzraptKey, totalFee), ScriptTransfer(i.caller, usdnAmount, usdnAssetId)]
121+ }
122+ }
123+
124+
125+
126+@Callable(i)
127+func swapDyzraptToEth () = {
128+ let pmt = value(i.payments[0])
129+ let assetId = pmt.assetId
130+ let totalAmount = pmt.amount
131+ if ((assetId != dyzraptAssetId))
132+ then throw("Only DYZRAPT tokens are allowed for swapping")
133+ else {
134+ let fee = getFeeAmount(totalAmount)
135+ let amount = (totalAmount - fee)
136+ let usdnAmount = dyzraptToUsdn(amount)
137+ let ethPrice = valueOrErrorMessage(getInteger(oracleAddress, priceOfEthKey), "Unable to load price")
138+ let ethAmount = fraction(usdnAmount, ethPrice, 10000)
139+ let savedFee = getTotalFeeDyzrapt()
140+ let totalFee = (savedFee + fee)
141+[IntegerEntry(totalFeeDyzraptKey, totalFee), ScriptTransfer(i.caller, ethAmount, ethAssetId)]
121142 }
122143 }
123144
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
1010 let priceOfDyzraptKey = "dyz"
1111
1212 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) = {
4444 let dyzraptPrice = valueOrErrorMessage(getInteger(oracleAddress, priceOfDyzraptKey), "Unable to load price")
4545 fraction(amount, 10000, dyzraptPrice)
4646 }
4747
4848
4949 func dyzraptToUsdn (amount) = {
5050 let dyzraptPrice = valueOrErrorMessage(getInteger(oracleAddress, priceOfDyzraptKey), "Unable to load price")
5151 fraction(amount, dyzraptPrice, 10000)
5252 }
5353
5454
5555 @Callable(i)
5656 func test () = {
5757 let pmt = value(i.payments[0])
5858 let assetId = pmt.assetId
5959 let amount = pmt.amount
6060 if ((assetId == dyzraptAssetId))
6161 then throw(("its a dyzrapt. Amount=" + toString(amount)))
6262 else throw("its not a dyzrapt")
6363 }
6464
6565
6666
6767 @Callable(i)
6868 func swapUsdnToDyzrapt () = {
6969 let pmt = value(i.payments[0])
7070 let assetId = pmt.assetId
7171 let totalAmount = pmt.amount
7272 if ((assetId != usdnAssetId))
7373 then throw("Only USDN tokens are allowed for swapping")
7474 else {
7575 let fee = getFeeAmount(totalAmount)
7676 let amount = (totalAmount - fee)
7777 let dyzraptAmount = usdnToDyzrapt(amount)
7878 let savedFee = getTotalFeeUsd()
7979 let totalFee = (savedFee + fee)
8080 [IntegerEntry(totalFeeUsdKey, totalFee), ScriptTransfer(i.caller, dyzraptAmount, dyzraptAssetId)]
8181 }
8282 }
8383
8484
8585
8686 @Callable(i)
8787 func swapEthToDyzrapt () = {
8888 let pmt = value(i.payments[0])
8989 let assetId = pmt.assetId
9090 let totalAmount = pmt.amount
9191 if ((assetId != ethAssetId))
9292 then throw("Only WETH tokens are allowed for swapping")
9393 else {
9494 let fee = getFeeAmount(totalAmount)
9595 let amount = (totalAmount - fee)
9696 let ethPrice = valueOrErrorMessage(getInteger(oracleAddress, priceOfEthKey), "Unable to load price")
9797 let usdnAmount = fraction(amount, ethPrice, 10000)
9898 let dyzraptAmount = usdnToDyzrapt(usdnAmount)
9999 let savedFee = getTotalFeeEth()
100100 let totalFee = (savedFee + fee)
101101 [IntegerEntry(totalFeeEthKey, totalFee), ScriptTransfer(i.caller, dyzraptAmount, dyzraptAssetId)]
102102 }
103103 }
104104
105105
106106
107107 @Callable(i)
108108 func swapDyzraptToUsdn () = {
109109 let pmt = value(i.payments[0])
110110 let assetId = pmt.assetId
111111 let totalAmount = pmt.amount
112112 if ((assetId != dyzraptAssetId))
113113 then throw("Only DYZRAPT tokens are allowed for swapping")
114114 else {
115115 let fee = getFeeAmount(totalAmount)
116116 let amount = (totalAmount - fee)
117117 let usdnAmount = dyzraptToUsdn(amount)
118118 let savedFee = getTotalFeeDyzrapt()
119119 let totalFee = (savedFee + fee)
120-[IntegerEntry(totalFeeUsdKey, totalFee), ScriptTransfer(i.caller, usdnAmount, usdnAssetId)]
120+[IntegerEntry(totalFeeDyzraptKey, totalFee), ScriptTransfer(i.caller, usdnAmount, usdnAssetId)]
121+ }
122+ }
123+
124+
125+
126+@Callable(i)
127+func swapDyzraptToEth () = {
128+ let pmt = value(i.payments[0])
129+ let assetId = pmt.assetId
130+ let totalAmount = pmt.amount
131+ if ((assetId != dyzraptAssetId))
132+ then throw("Only DYZRAPT tokens are allowed for swapping")
133+ else {
134+ let fee = getFeeAmount(totalAmount)
135+ let amount = (totalAmount - fee)
136+ let usdnAmount = dyzraptToUsdn(amount)
137+ let ethPrice = valueOrErrorMessage(getInteger(oracleAddress, priceOfEthKey), "Unable to load price")
138+ let ethAmount = fraction(usdnAmount, ethPrice, 10000)
139+ let savedFee = getTotalFeeDyzrapt()
140+ let totalFee = (savedFee + fee)
141+[IntegerEntry(totalFeeDyzraptKey, totalFee), ScriptTransfer(i.caller, ethAmount, ethAssetId)]
121142 }
122143 }
123144
124145

github/deemru/w8io/873ac7e 
38.25 ms