tx · 56F1yA672r85ossDcqUNLeS7EVeWJHAWCjWfH4VNHEU4

3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph:  -0.01400000 Waves

2021.11.05 12:58 [1777549] smart account 3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph > SELF 0.00000000 Waves

{ "type": 13, "id": "56F1yA672r85ossDcqUNLeS7EVeWJHAWCjWfH4VNHEU4", "fee": 1400000, "feeAssetId": null, "timestamp": 1636106323085, "version": 2, "chainId": 84, "sender": "3N61Cvq5XcnPk9rxpy2Rnp3bSr4syNGUJph", "senderPublicKey": "G7cNXePvAHUHmZfXa1eHnvFeH6DuykPC5wm9v9djTKgD", "proofs": [ "4hb763hUgR2K5NDtU9axzDfw1MBmimsKW9vTBqto5s5eN9H3s6eyRaHnFDHczHc6ittjBJ29hXTTF9eK7GgjmuMD" ], "script": "base64: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bnQFAAAAEGFtb3VudFdpdGhvdXRGZWUDCQAAZwAAAAIFAAAACnVzZXJBbW91bnQFAAAABmFtb3VudAQAAAARbmV3VXNlclBvb2xBbW91bnQJAABlAAAAAgUAAAAKdXNlckFtb3VudAUAAAAQYW1vdW50V2l0aG91dEZlZQkABEwAAAACCQEAAAAEQnVybgAAAAIJAAJZAAAAAQUAAAAQZEFwcEFzc2V0QWRkcmVzcwUAAAAQYW1vdW50V2l0aG91dEZlZQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAEGFtb3VudFdpdGhvdXRGZWUJAAJZAAAAAQUAAAAVbGlxdWlkdXR5QXNzZXRBZGRyZXNzCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA1wb29sQW1vdW50S2V5BQAAAA1uZXdQb29sQW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABF1c2VyUG9vbEFtb3VudEtleQUAAAARbmV3VXNlclBvb2xBbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEXVzZXJQb29sRWFybmVkS2V5BQAAAA91c2VyRWFybmVkVG90YWwFAAAAA25pbAkAAAIAAAABAgAAACZZb3UgaGF2ZSBub3Qgc3VjaCBiYWxhbmNlIGZvciB3aXRoZHJhdwAAAAEAAAACYjYBAAAAAmI3AAAAAAkAAfQAAAADCAUAAAACYjYAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJiNgAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJiNgAAAA9zZW5kZXJQdWJsaWNLZXli1pog", "height": 1777549, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2rTfHp2rDi7Dc5BNUPyzpzcbJsBGNiPfBykWrN4YFkEb Next: HyT8bbYcakbk62xGhTdeFdUvc3nr9eS29mQW2Rdr8MCb Diff:
OldNewDifferences
2323
2424 @Callable(i)
2525 func addPools (pools) = {
26- func generatePoolKeys (accumulated,pool) = {
27- let poolIndex = value(indexOf(pools, pool))
28- let poolName = pools[poolIndex]
29-IntegerEntry((pool + "_asset_balance"), 0) :: accumulated
30- }
26+ func generatePoolKeys (accumulated,pool) = IntegerEntry((pool + "_asset_balance"), 0) :: accumulated
3127
3228 let previousRewardEntryNew = {
3329 let $l = pools
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let depositFee = 1000
55
66 let controllerFee = 10000
77
88 let platformFee = 10000
99
1010 func map (accum,next) = IntegerEntry((next + "_asset_balance"), 0) :: accum
1111
1212
1313 func mapA (accum,next) = (next - 1) :: accum
1414
1515
1616 func sum (accum,next) = (accum + next)
1717
1818
1919 @Callable(a8)
2020 func init () = [IntegerEntry("3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1_asset_balance", 7197869)]
2121
2222
2323
2424 @Callable(i)
2525 func addPools (pools) = {
26- func generatePoolKeys (accumulated,pool) = {
27- let poolIndex = value(indexOf(pools, pool))
28- let poolName = pools[poolIndex]
29-IntegerEntry((pool + "_asset_balance"), 0) :: accumulated
30- }
26+ func generatePoolKeys (accumulated,pool) = IntegerEntry((pool + "_asset_balance"), 0) :: accumulated
3127
3228 let previousRewardEntryNew = {
3329 let $l = pools
3430 let $s = size($l)
3531 let $acc0 = nil
3632 func 1 ($a,$i) = if (($i >= $s))
3733 then $a
3834 else generatePoolKeys($a, $l[$i])
3935
4036 func 2 ($a,$i) = if (($i >= $s))
4137 then $a
4238 else throw("List size exceeds 20")
4339
4440 2(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
4541 }
4642 previousRewardEntryNew
4743 }
4844
4945
5046
5147 @Callable(a8)
5248 func call () = {
5349 let a9 = Issue("Asset1", "Asset from dApp", 100000, 2, true, unit, 0)
5450 let b1 = calculateAssetId(a9)
5551 [BinaryEntry("bin", base58''), BooleanEntry("bool", true), IntegerEntry("int", 1), StringEntry("str", ""), DeleteEntry("str"), a9]
5652 }
5753
5854
5955
6056 @Callable(i)
6157 func deposit (pool) = {
6258 let amount = i.payments[0].amount
6359 let assetId = i.payments[0].assetId
6460 let poolAmountKey = (pool + "_asset_balance")
6561 let userAddress = toString(i.caller)
6662 let userPoolAmountKey = (((pool + "_") + userAddress) + "_asset_balance")
6763 let dAppAssetAddress = getStringValue(this, (pool + "_service_token"))
6864 let poolAmount = getIntegerValue(this, poolAmountKey)
6965 let userAmount = match getInteger(userPoolAmountKey) {
7066 case int: Int =>
7167 int
7268 case nothing =>
7369 0
7470 }
7571 let newPoolAmount = (poolAmount + amount)
7672 let userAmountWithoutFee = ((amount - fraction(amount, 1, depositFee, HALFUP)) - fraction(amount, 1, controllerFee, HALFUP))
7773 let newUserPoolAmount = (userAmount + userAmountWithoutFee)
7874 [Reissue(fromBase58String(dAppAssetAddress), userAmountWithoutFee, true), ScriptTransfer(i.caller, userAmountWithoutFee, fromBase58String(dAppAssetAddress)), IntegerEntry(poolAmountKey, newPoolAmount), IntegerEntry(userPoolAmountKey, newUserPoolAmount)]
7975 }
8076
8177
8278
8379 @Callable(i)
8480 func withdraw (pool,userEarned) = {
8581 let amount = i.payments[0].amount
8682 let assetId = i.payments[0].assetId
8783 let poolAmountKey = (pool + "_asset_balance")
8884 let userAddress = toString(i.caller)
8985 let userPoolAmountKey = (((pool + "_") + userAddress) + "_asset_balance")
9086 let userPoolEarnedKey = (((pool + "_") + userAddress) + "_earned")
9187 let poolAmount = getIntegerValue(this, poolAmountKey)
9288 let userAmount = match getInteger(userPoolAmountKey) {
9389 case int: Int =>
9490 int
9591 case nothing =>
9692 0
9793 }
9894 let userEarnedBefore = match getInteger(userPoolEarnedKey) {
9995 case int: Int =>
10096 int
10197 case nothing =>
10298 0
10399 }
104100 let liquidutyAssetAddress = getStringValue(this, (pool + "_liquidity_token"))
105101 let liquidityTokenDecimal = match assetInfo(fromBase58String(liquidutyAssetAddress)) {
106102 case asset: Asset =>
107103 asset.decimals
108104 case _ =>
109105 throw("Can't find asset")
110106 }
111107 let dAppAssetAddress = getStringValue(this, (pool + "_service_token"))
112108 let userEarnedTotal = (userEarned + userEarnedBefore)
113109 let amountWithoutFee = ((amount - fraction(amount, 1, platformFee, HALFUP)) - fraction(amount, 1, controllerFee, HALFUP))
114110 let newPoolAmount = (poolAmount - amountWithoutFee)
115111 if ((userAmount >= amount))
116112 then {
117113 let newUserPoolAmount = (userAmount - amountWithoutFee)
118114 [Burn(fromBase58String(dAppAssetAddress), amountWithoutFee), ScriptTransfer(i.caller, amountWithoutFee, fromBase58String(liquidutyAssetAddress)), IntegerEntry(poolAmountKey, newPoolAmount), IntegerEntry(userPoolAmountKey, newUserPoolAmount), IntegerEntry(userPoolEarnedKey, userEarnedTotal)]
119115 }
120116 else throw("You have not such balance for withdraw")
121117 }
122118
123119
124120 @Verifier(b6)
125121 func b7 () = sigVerify(b6.bodyBytes, b6.proofs[0], b6.senderPublicKey)
126122

github/deemru/w8io/169f3d6 
25.35 ms