tx · 6MLT5BFqg4xfjE2bAeBAhyoZqo7QynoRMN8Pxy45am34 3P7VznyyJc91e2SXpWTgc9Zp2d9XWHdwLJ1: -0.00500000 Waves 2023.09.30 19:57 [3844261] smart account 3P7VznyyJc91e2SXpWTgc9Zp2d9XWHdwLJ1 > SELF 0.00000000 Waves
{ "type": 13, "id": "6MLT5BFqg4xfjE2bAeBAhyoZqo7QynoRMN8Pxy45am34", "fee": 500000, "feeAssetId": null, "timestamp": 1696093120084, "version": 2, "chainId": 87, "sender": "3P7VznyyJc91e2SXpWTgc9Zp2d9XWHdwLJ1", "senderPublicKey": "DiCe6VGgddpG7YfGhT4XXsPuQtiyzaV68EZUB8GNT3hs", "proofs": [ "ctYhb2JJzEHQwa8Xze3Zf3ZCdDGo2QrqJwmHimhTS73Njy4tbYNaC494xqs3YspAdfe4hKge3qbnNTGBr61Cahv" ], "script": "base64:BgIJCAISABIDCgEBCQAGcHJwcnByAiMzUEpFU1ZEVEhSdjhpODNYYm1IclJHUWhEYzVyZ1IzYXpRcwACbXACIzNQNHVBNWV0blppNEFtQmFiS2lucTJiTWlXVThLY25IWmRIAAdzY2FsZTE2AICAhP6m3uERAQx0cnlHZXRTdHJpbmcCA2tleQdhZGRyZXNzBAckbWF0Y2gwCQCdCAIFB2FkZHJlc3MFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWIFByRtYXRjaDAFAWICAAENdHJ5R2V0SW50ZWdlcgIDa2V5B2FkZHJlc3MEByRtYXRjaDAJAJoIAgUHYWRkcmVzcwUDa2V5AwkAAQIFByRtYXRjaDACA0ludAQBYgUHJG1hdGNoMAUBYgAAAQ5nZXRBc3NldFN0cmluZwEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFiBQckbWF0Y2gwCQDYBAEFAWICBVdBVkVTAQ1nZXRBY2NCYWxhbmNlAQdhc3NldElkAwkAAAIFB2Fzc2V0SWQCBVdBVkVTCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQDZBAEFB2Fzc2V0SWQBCWdldF9zcmF0ZQILcG9vbEFkZHJlc3MHYXNzZXRJZAkBDXRyeUdldEludGVnZXICCQCsAgIFB2Fzc2V0SWQCBl9zUmF0ZQkBB0FkZHJlc3MBCQDZBAEFC3Bvb2xBZGRyZXNzARBnZXRfcGFyYW1zX2J5X1BMAQlwbEFzc2V0SWQECXByQWRkcmVzcwkBB0FkZHJlc3MBCQDZBAEFBnBycHJwcgQHYXNzZXRJZAkBDHRyeUdldFN0cmluZwIJAKwCAgkArAICAgZzZXR1cF8FCXBsQXNzZXRJZAIIX2Fzc2V0SWQFCXByQWRkcmVzcwQLcG9vbEFkZHJlc3MJAQx0cnlHZXRTdHJpbmcCCQCsAgIJAKwCAgIGc2V0dXBfBQlwbEFzc2V0SWQCDF9wb29sQWRkcmVzcwUJcHJBZGRyZXNzBApwb29sRG9tYWluCQEMdHJ5R2V0U3RyaW5nAgkArAICCQCsAgICBnNldHVwXwUJcGxBc3NldElkAgtfcG9vbERvbWFpbgUJcHJBZGRyZXNzCQCVCgMFB2Fzc2V0SWQFC3Bvb2xBZGRyZXNzBQpwb29sRG9tYWluAgFpAQNwdHcABApwYXlBc3NldElkCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQECXBheUFtb3VudAkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQECyR0MDE0ODQxNTcwCQEQZ2V0X3BhcmFtc19ieV9QTAEJAQ5nZXRBc3NldFN0cmluZwEFCnBheUFzc2V0SWQEB2Fzc2V0SWQIBQskdDAxNDg0MTU3MAJfMQQLcG9vbEFkZHJlc3MIBQskdDAxNDg0MTU3MAJfMgQKcG9vbERvbWFpbggFCyR0MDE0ODQxNTcwAl8zBAdwb29sQWRyCQEHQWRkcmVzcwEJANkEAQULcG9vbEFkZHJlc3MECHN1cHBsQmVmCQENdHJ5R2V0SW50ZWdlcgIJAKwCAgkArAICCQClCAEFBHRoaXMCCl9zdXBwbGllZF8FB2Fzc2V0SWQFB3Bvb2xBZHIDCQAAAgUIc3VwcGxCZWYFCHN1cHBsQmVmBAZiYWxCZWYJAQ1nZXRBY2NCYWxhbmNlAQUHYXNzZXRJZAMJAAACBQZiYWxCZWYFBmJhbEJlZgQIaW1wb3J0UEwJAPwHBAkBB0FkZHJlc3MBCQDZBAEFBnBycHJwcgIIaW1wb3J0UEwJAMwIAgUKcG9vbERvbWFpbgkAzAgCCQClCAEFBHRoaXMFA25pbAgFAWkIcGF5bWVudHMDCQAAAgUIaW1wb3J0UEwFCGltcG9ydFBMBApzdXBwbEFmdGVyCQENdHJ5R2V0SW50ZWdlcgIJAKwCAgkArAICCQClCAEFBHRoaXMCCl9zdXBwbGllZF8FB2Fzc2V0SWQFB3Bvb2xBZHIDCQAAAgUKc3VwcGxBZnRlcgUKc3VwcGxBZnRlcgQQYW1vdW50VG9XaXRoZHJhdwkAawMJAGUCBQpzdXBwbEFmdGVyBQhzdXBwbEJlZgkBCWdldF9zcmF0ZQIFC3Bvb2xBZGRyZXNzBQdhc3NldElkBQdzY2FsZTE2AwkAAAIFEGFtb3VudFRvV2l0aGRyYXcFEGFtb3VudFRvV2l0aGRyYXcEB3dpdGRyYXcJAPwHBAUHcG9vbEFkcgIId2l0aGRyYXcJAMwIAgUHYXNzZXRJZAkAzAgCBRBhbW91bnRUb1dpdGhkcmF3BQNuaWwFA25pbAMJAAACBQd3aXRkcmF3BQd3aXRkcmF3BAhiYWxBZnRlcgkBDWdldEFjY0JhbGFuY2UBBQdhc3NldElkAwkAAAIFCGJhbEFmdGVyBQhiYWxBZnRlcgQKd2l0aGRyYXdlZAkAZQIFCGJhbEFmdGVyBQZiYWxCZWYDCQAAAgUKd2l0aGRyYXdlZAUKd2l0aGRyYXdlZAMGCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIDMTogCQCkAwEFCXBheUFtb3VudAIFLCAyOiAJAKQDAQUKd2l0aGRyYXdlZAIOLCBzdXBwbEFmdGVyOiAJAKQDAQUKc3VwcGxBZnRlcgIKLCBiYWxiZWY6IAkApAMBBQZiYWxCZWYCDCwgYmFsQWZ0ZXI6IAkApAMBBQhiYWxBZnRlcgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBA3d0cAEGZG9tYWluBApwYXlBc3NldElkCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQECXBheUFtb3VudAkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQECXBsQXNzZXRJZAkBDHRyeUdldFN0cmluZwIJAKwCAgkArAICCQCsAgICCXNldHVwX3BsXwkBDmdldEFzc2V0U3RyaW5nAQUKcGF5QXNzZXRJZAIBXwkApAMBBQZkb21haW4JAQdBZGRyZXNzAQkA2QQBBQZwcnBycHIECyR0MDI3OTUyODU2CQEQZ2V0X3BhcmFtc19ieV9QTAEFCXBsQXNzZXRJZAQFemFnbDEIBQskdDAyNzk1Mjg1NgJfMQQLcG9vbEFkZHJlc3MIBQskdDAyNzk1Mjg1NgJfMgQFemFnbDIIBQskdDAyNzk1Mjg1NgJfMwQHcG9vbEFkcgkBB0FkZHJlc3MBCQDZBAEFC3Bvb2xBZGRyZXNzBAhzdXBwbEJlZgkBDXRyeUdldEludGVnZXICCQCsAgIJAKwCAgkApQgBBQR0aGlzAgpfc3VwcGxpZWRfCQEOZ2V0QXNzZXRTdHJpbmcBBQpwYXlBc3NldElkBQdwb29sQWRyAwkAAAIFCHN1cHBsQmVmBQhzdXBwbEJlZgQGYmFsQmVmCQENZ2V0QWNjQmFsYW5jZQEFCXBsQXNzZXRJZAMJAAACBQZiYWxCZWYFBmJhbEJlZgQHZGVwb3NpdAkA/AcEBQdwb29sQWRyAgZzdXBwbHkFA25pbAgFAWkIcGF5bWVudHMDCQAAAgUHZGVwb3NpdAUHZGVwb3NpdAQKc3VwcGxBZnRlcgkBDXRyeUdldEludGVnZXICCQCsAgIJAKwCAgkApQgBBQR0aGlzAgpfc3VwcGxpZWRfCQEOZ2V0QXNzZXRTdHJpbmcBBQpwYXlBc3NldElkBQdwb29sQWRyAwkAAAIFCnN1cHBsQWZ0ZXIFCnN1cHBsQWZ0ZXIECXRvX2V4cG9ydAkAZQIFCnN1cHBsQWZ0ZXIFCHN1cHBsQmVmAwkAAAIFCXRvX2V4cG9ydAUJdG9fZXhwb3J0BAZleHBvcnQJAPwHBAkBB0FkZHJlc3MBCQDZBAEFBnBycHJwcgIIZXhwb3J0UEwJAMwIAgUGZG9tYWluCQDMCAIFCnBheUFzc2V0SWQJAMwIAgUJdG9fZXhwb3J0BQNuaWwFA25pbAMJAAACBQZleHBvcnQFBmV4cG9ydAQIYmFsQWZ0ZXIJAQ1nZXRBY2NCYWxhbmNlAQUJcGxBc3NldElkAwkAAAIFCGJhbEFmdGVyBQhiYWxBZnRlcgQIZXhwb3J0ZWQJAGUCBQhiYWxBZnRlcgUGYmFsQmVmAwkAAAIFCGV4cG9ydGVkBQhleHBvcnRlZAMGCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIDMTogCQCkAwEFCXBheUFtb3VudAIFLCAyOiAJAKQDAQUIZXhwb3J0ZWQCDiwgc3VwcGxBZnRlcjogCQCkAwEFCnN1cHBsQWZ0ZXICCiwgYmFsYmVmOiAJAKQDAQUGYmFsQmVmAgwsIGJhbEFmdGVyOiAJAKQDAQUIYmFsQWZ0ZXIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgCjYMzH", "height": 3844261, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9hCtv3AmrEwk8J6i3Ny7MEEMm7wZP8NwobNd4mHCRHn3 Next: 5atBRxy2EitM6RUq9Gis8jPKo2TTKi82MqzJ3utx17bU Diff:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let | |
4 | + | let prprpr = "3PJESVDTHRv8i83XbmHrRGQhDc5rgR3azQs" | |
5 | 5 | ||
6 | - | let | |
6 | + | let mp = "3P4uA5etnZi4AmBabKinq2bMiWU8KcnHZdH" | |
7 | 7 | ||
8 | - | let pl_proxy = "3PJESVDTHRv8i83XbmHrRGQhDc5rgR3azQs" | |
9 | - | ||
10 | - | let K_am_as_id = "%s__amountAsset" | |
11 | - | ||
12 | - | let K_pr_as_id = "%s__priceAsset" | |
13 | - | ||
14 | - | let K_amp = "%s__amp" | |
15 | - | ||
16 | - | let K_share = "%s%s__shareAssetBalance__YiNbofFzC17jEHHCMwrRcpy9MrrjabMMLZxg8g5xmf7" | |
17 | - | ||
18 | - | let K_staked = "%s%s__stakedBalance__WAVES" | |
19 | - | ||
20 | - | let K_a_as_id = "A_asset_id" | |
21 | - | ||
22 | - | let K_b_as_id = "B_asset_id" | |
23 | - | ||
24 | - | let K_a_as_bal = "A_asset_balance" | |
25 | - | ||
26 | - | let K_b_as_bal = "B_asset_balance" | |
27 | - | ||
28 | - | let K_fee = "commission" | |
29 | - | ||
30 | - | let K_asset_ids = "static_tokenIds" | |
31 | - | ||
32 | - | let K_fee_puz = "static_fee" | |
33 | - | ||
34 | - | let K_feeToken = "static_feeToken" | |
35 | - | ||
36 | - | let tsn_swapper = "3PKz5jnJLohF2GjShQ7bG5H4BebdoA98zZ2" | |
37 | - | ||
38 | - | let tsn_swapper_addr = Address(fromBase58String(tsn_swapper)) | |
39 | - | ||
40 | - | let k_fee = "k_fee" | |
41 | - | ||
42 | - | let k_rebate = "k_rebate" | |
43 | - | ||
44 | - | let k_feeToStakersPercent = "k_feeToStakersPercent" | |
45 | - | ||
46 | - | let k_excessBalance = "k_excessBalance" | |
47 | - | ||
48 | - | let k_freeBalance = "k_freeBalance" | |
49 | - | ||
50 | - | let k_maxSpotUtilization = "k_maxSpotUtilization" | |
51 | - | ||
52 | - | let k_totalSupply = "k_totalSupply" | |
53 | - | ||
54 | - | let k_rate = "k_rate" | |
55 | - | ||
56 | - | let k_bsAstR = "k_bsAstR" | |
57 | - | ||
58 | - | let k_bsAstW = "k_bsAstW" | |
59 | - | ||
60 | - | let k_qtAstR = "k_qtAstR" | |
61 | - | ||
62 | - | let k_qtAstW = "k_qtAstW" | |
63 | - | ||
64 | - | let k_maxPriceImpact = "k_maxPriceImpact" | |
65 | - | ||
66 | - | let k_maxPriceSpread = "k_maxPriceSpread" | |
67 | - | ||
68 | - | let k_totalPositionSize = "k_totalPositionSize" | |
69 | - | ||
70 | - | let k_baseOracle = "k_baseOracle" | |
71 | - | ||
72 | - | func get_domain (poolAddress) = match poolAddress { | |
73 | - | case _ => | |
74 | - | if (("3P4uA5etnZi4AmBabKinq2bMiWU8KcnHZdH" == $match0)) | |
75 | - | then "1" | |
76 | - | else "0" | |
77 | - | } | |
78 | - | ||
79 | - | ||
80 | - | func k_plToken (asset_id,domain) = ((("setup_pl_" + asset_id) + "_") + domain) | |
81 | - | ||
82 | - | ||
83 | - | func k_total_supplied (asset_id) = ("total_supplied_" + asset_id) | |
84 | - | ||
85 | - | ||
86 | - | func k_sRate (asset_id) = (asset_id + "_sRate") | |
87 | - | ||
88 | - | ||
89 | - | func k_total_borrowed (asset_id) = ("total_borrowed_" + asset_id) | |
90 | - | ||
91 | - | ||
92 | - | func k_bRate (asset_id) = (asset_id + "_bRate") | |
93 | - | ||
94 | - | ||
95 | - | func k_maxSupply (asset_id) = ("setup_maxSupply_" + asset_id) | |
96 | - | ||
97 | - | ||
98 | - | let k_lastRateHeight = "lastRateHeight" | |
99 | - | ||
100 | - | func getPuzBalanceKey (assetId) = (("global_" + assetId) + "_balance") | |
101 | - | ||
102 | - | ||
103 | - | func getPuzWeightKey (assetId) = (("static_" + assetId) + "_weight") | |
104 | - | ||
105 | - | ||
106 | - | func getBPAK (address) = (address + "_staticAssetsIds") | |
107 | - | ||
8 | + | let scale16 = 10000000000000000 | |
108 | 9 | ||
109 | 10 | func tryGetString (key,address) = match getString(address, key) { | |
110 | 11 | case b: String => | |
111 | 12 | b | |
112 | 13 | case _ => | |
113 | 14 | "" | |
114 | - | } | |
115 | - | ||
116 | - | ||
117 | - | func tryGetBool (key,address) = match getBoolean(address, key) { | |
118 | - | case b: Boolean => | |
119 | - | b | |
120 | - | case _ => | |
121 | - | false | |
122 | 15 | } | |
123 | 16 | ||
124 | 17 | ||
130 | 23 | } | |
131 | 24 | ||
132 | 25 | ||
133 | - | func | |
134 | - | case b: | |
135 | - | b | |
26 | + | func getAssetString (assetId) = match assetId { | |
27 | + | case b: ByteVector => | |
28 | + | toBase58String(b) | |
136 | 29 | case _ => | |
137 | - | | |
30 | + | "WAVES" | |
138 | 31 | } | |
139 | 32 | ||
140 | 33 | ||
141 | - | func getAssetBalance (address,assetId) = { | |
142 | - | let a = assetBalance(address, assetId) | |
143 | - | a | |
144 | - | } | |
34 | + | func getAccBalance (assetId) = if ((assetId == "WAVES")) | |
35 | + | then wavesBalance(this).available | |
36 | + | else assetBalance(this, fromBase58String(assetId)) | |
145 | 37 | ||
146 | 38 | ||
147 | - | func getWavesBalance (address) = { | |
148 | - | let w = wavesBalance(address).available | |
149 | - | w | |
150 | - | } | |
39 | + | func get_srate (poolAddress,assetId) = tryGetInteger((assetId + "_sRate"), Address(fromBase58String(poolAddress))) | |
151 | 40 | ||
152 | 41 | ||
153 | - | func getBalance (result,assetId) = { | |
154 | - | let address = take(result, 35) | |
155 | - | let addr = Address(fromBase58String(address)) | |
156 | - | let balance = if ((assetId == "WAVES")) | |
157 | - | then getWavesBalance(addr) | |
158 | - | else { | |
159 | - | let aId = fromBase58String(assetId) | |
160 | - | getAssetBalance(addr, aId) | |
161 | - | } | |
162 | - | let len = size(result) | |
163 | - | (((((address + drop(result, 35)) + assetId) + ":") + toString(balance)) + ",") | |
164 | - | } | |
165 | - | ||
166 | - | ||
167 | - | func getWxData (address) = { | |
168 | - | let addr = Address(fromBase58String(address)) | |
169 | - | let amountId = tryGetString(K_am_as_id, addr) | |
170 | - | let priceId = tryGetString(K_pr_as_id, addr) | |
171 | - | let amp = tryGetString(K_amp, addr) | |
172 | - | let share = tryGetInteger(K_share, addr) | |
173 | - | let stake = tryGetInteger(K_staked, addr) | |
174 | - | $Tuple2(((amountId + ",") + priceId), ((((amp + ",") + toString(share)) + ",") + toString(stake))) | |
175 | - | } | |
176 | - | ||
177 | - | ||
178 | - | func getSwData (address) = { | |
179 | - | let addr = Address(fromBase58String(address)) | |
180 | - | let A_id = tryGetString(K_a_as_id, addr) | |
181 | - | let B_id = tryGetString(K_b_as_id, addr) | |
182 | - | let A_balance = tryGetInteger(K_a_as_bal, addr) | |
183 | - | let B_balance = tryGetInteger(K_b_as_bal, addr) | |
184 | - | let fee = tryGetIntegerWithDef(K_fee, addr, 6000) | |
185 | - | let deprecated = tryGetBool(("deprecated_" + address), Address(fromBase58String(swopfi_oracle))) | |
186 | - | ((((((((((A_id + ":") + toString(A_balance)) + ",") + B_id) + ":") + toString(B_balance)) + ",") + toString(fee)) + ",") + toString(deprecated)) | |
187 | - | } | |
188 | - | ||
189 | - | ||
190 | - | func collectPuzAssetsData (result,assetId) = { | |
191 | - | let len = size(result) | |
192 | - | let address = result[(len - 1)] | |
193 | - | let addr = Address(fromBase58String(address)) | |
194 | - | let balanceKey = getPuzBalanceKey(assetId) | |
195 | - | let weightKey = getPuzWeightKey(assetId) | |
196 | - | let balance = tryGetInteger(balanceKey, addr) | |
197 | - | let weight = tryGetInteger(weightKey, addr) | |
198 | - | let res = ((((assetId + ",") + toString(balance)) + ",") + toString(weight)) | |
199 | - | res :: result | |
200 | - | } | |
201 | - | ||
202 | - | ||
203 | - | func getPzData (address) = { | |
204 | - | let addr = Address(fromBase58String(address)) | |
205 | - | let fee1 = tryGetInteger(K_fee_puz, addr) | |
206 | - | let feeToken = tryGetString(K_feeToken, addr) | |
207 | - | let assetsStr1 = tryGetString(K_asset_ids, addr) | |
208 | - | let $t055915744 = if ((assetsStr1 == "")) | |
209 | - | then $Tuple2(tryGetString(getBPAK(address), this), 200) | |
210 | - | else $Tuple2(assetsStr1, fee1) | |
211 | - | let assetsStr = $t055915744._1 | |
212 | - | let fee = $t055915744._2 | |
213 | - | let assets = split(assetsStr, ",") | |
214 | - | let assetsData = { | |
215 | - | let $l = assets | |
216 | - | let $s = size($l) | |
217 | - | let $acc0 = [address] | |
218 | - | func $f0_1 ($a,$i) = if (($i >= $s)) | |
219 | - | then $a | |
220 | - | else collectPuzAssetsData($a, $l[$i]) | |
221 | - | ||
222 | - | func $f0_2 ($a,$i) = if (($i >= $s)) | |
223 | - | then $a | |
224 | - | else throw("List size exceeds 10") | |
225 | - | ||
226 | - | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
227 | - | } | |
228 | - | let len = size(assetsData) | |
229 | - | let assetsArr = removeByIndex(assetsData, (len - 1)) | |
230 | - | let assetsDataStr = makeString_2C(assetsArr, ";") | |
231 | - | $Tuple3(fee, feeToken, assetsDataStr) | |
232 | - | } | |
233 | - | ||
234 | - | ||
235 | - | func getTsnData (address,asset_id) = { | |
236 | - | let addr = Address(fromBase58String(address)) | |
237 | - | let bsAstR = tryGetInteger(k_bsAstR, addr) | |
238 | - | let bsAstW = tryGetInteger(k_bsAstW, addr) | |
239 | - | let qtAstR = tryGetInteger(k_qtAstR, addr) | |
240 | - | let qtAstW = tryGetInteger(k_qtAstW, addr) | |
241 | - | let maxPriceImpact = tryGetInteger(k_maxPriceImpact, addr) | |
242 | - | let maxPriceSpread = tryGetInteger(k_maxPriceSpread, addr) | |
243 | - | let totalPositionSize = tryGetInteger(k_totalPositionSize, addr) | |
244 | - | let oracleString = tryGetString(k_baseOracle, addr) | |
245 | - | let arr = split(oracleString, ",") | |
246 | - | let $t066416689 = $Tuple2(arr[0], arr[1]) | |
247 | - | let oracleAddress = $t066416689._1 | |
248 | - | let priceKey = $t066416689._2 | |
249 | - | let oracleAddr = Address(fromBase58String(oracleAddress)) | |
250 | - | let oraclePrice = tryGetInteger(priceKey, oracleAddr) | |
251 | - | let vault = tryGetString(("k_asset_vault_" + asset_id), tsn_swapper_addr) | |
252 | - | let vault_addr = Address(fromBase58String(vault)) | |
253 | - | let excessBalance = tryGetInteger(k_excessBalance, vault_addr) | |
254 | - | let freeBalance = tryGetInteger(k_freeBalance, vault_addr) | |
255 | - | let maxSpotUtilization = tryGetInteger(k_maxSpotUtilization, vault_addr) | |
256 | - | let totalSupply = tryGetInteger(k_totalSupply, vault_addr) | |
257 | - | let rate = tryGetInteger(k_rate, vault_addr) | |
258 | - | $Tuple13(bsAstR, bsAstW, qtAstR, qtAstW, totalPositionSize, maxPriceImpact, maxPriceSpread, oraclePrice, excessBalance, freeBalance, maxSpotUtilization, totalSupply, rate) | |
259 | - | } | |
260 | - | ||
261 | - | ||
262 | - | func getPLData (pool_address,asset_id) = { | |
263 | - | let domain = get_domain(pool_address) | |
264 | - | let poolAdr = Address(fromBase58String(pool_address)) | |
265 | - | let plTokenId = tryGetString(k_plToken(asset_id, domain), Address(fromBase58String(pl_proxy))) | |
266 | - | let sRate = tryGetInteger(k_sRate(asset_id), poolAdr) | |
267 | - | let bRate = tryGetInteger(k_bRate(asset_id), poolAdr) | |
268 | - | let totalSupplied = tryGetInteger(k_total_supplied(asset_id), poolAdr) | |
269 | - | let totalBorrowed = tryGetInteger(k_total_borrowed(asset_id), poolAdr) | |
270 | - | let maxSupply = tryGetInteger(k_maxSupply(asset_id), poolAdr) | |
271 | - | let lastHeight = tryGetInteger(k_lastRateHeight, poolAdr) | |
272 | - | let curHeight = height | |
273 | - | $Tuple9(asset_id, plTokenId, sRate, bRate, totalSupplied, totalBorrowed, maxSupply, lastHeight, curHeight) | |
274 | - | } | |
275 | - | ||
276 | - | ||
277 | - | func test_loop (result,ele) = ele :: result | |
278 | - | ||
279 | - | ||
280 | - | func getBalancesStr (assetsStr,address) = { | |
281 | - | let assets = split_4C(assetsStr, ",") | |
282 | - | let res = { | |
283 | - | let $l = assets | |
284 | - | let $s = size($l) | |
285 | - | let $acc0 = address | |
286 | - | func $f0_1 ($a,$i) = if (($i >= $s)) | |
287 | - | then $a | |
288 | - | else getBalance($a, $l[$i]) | |
289 | - | ||
290 | - | func $f0_2 ($a,$i) = if (($i >= $s)) | |
291 | - | then $a | |
292 | - | else throw("List size exceeds 2") | |
293 | - | ||
294 | - | $f0_2($f0_1($f0_1($acc0, 0), 1), 2) | |
295 | - | } | |
296 | - | let balances = drop(res, 35) | |
297 | - | let bals = dropRight(balances, 1) | |
298 | - | bals | |
299 | - | } | |
300 | - | ||
301 | - | ||
302 | - | func processWX (result,address) = { | |
303 | - | let $t086528695 = getWxData(address) | |
304 | - | let assetsStr = $t086528695._1 | |
305 | - | let datas = $t086528695._2 | |
306 | - | let assetsString = getBalancesStr(assetsStr, address) | |
307 | - | let resItem = ((((address + "/") + assetsString) + "/") + datas) | |
308 | - | resItem :: result | |
309 | - | } | |
310 | - | ||
311 | - | ||
312 | - | func processSW (result,address) = { | |
313 | - | let assetsString = getSwData(address) | |
314 | - | let resItem = ((address + "/") + assetsString) | |
315 | - | resItem :: result | |
316 | - | } | |
317 | - | ||
318 | - | ||
319 | - | func processPZ (result,address) = { | |
320 | - | let $t090959149 = getPzData(address) | |
321 | - | let fee = $t090959149._1 | |
322 | - | let feeToken = $t090959149._2 | |
323 | - | let assetsString = $t090959149._3 | |
324 | - | let resItem = ((((((address + "/") + toString(fee)) + "/") + feeToken) + "/") + assetsString) | |
325 | - | resItem :: result | |
326 | - | } | |
327 | - | ||
328 | - | ||
329 | - | func processTSN (result,label) = { | |
330 | - | let arr = split(label, "_") | |
331 | - | let $t093669408 = $Tuple2(arr[0], arr[1]) | |
332 | - | let address = $t093669408._1 | |
333 | - | let asset_id = $t093669408._2 | |
334 | - | let $t094149613 = getTsnData(address, asset_id) | |
335 | - | let bsAstR = $t094149613._1 | |
336 | - | let bsAstW = $t094149613._2 | |
337 | - | let qtAstR = $t094149613._3 | |
338 | - | let qtAstW = $t094149613._4 | |
339 | - | let totalPositionSize = $t094149613._5 | |
340 | - | let maxPriceImpact = $t094149613._6 | |
341 | - | let maxPriceSpread = $t094149613._7 | |
342 | - | let oraclePrice = $t094149613._8 | |
343 | - | let excessBalance = $t094149613._9 | |
344 | - | let freeBalance = $t094149613._10 | |
345 | - | let maxSpotUtilization = $t094149613._11 | |
346 | - | let totalSupply = $t094149613._12 | |
347 | - | let rate = $t094149613._13 | |
348 | - | let asset_decimals = if ((asset_id == "WAVES")) | |
349 | - | then 8 | |
350 | - | else valueOrErrorMessage(assetInfo(fromBase58String(asset_id)), ("Ivalid asset " + asset_id)).decimals | |
351 | - | let resItem = ((((((((((((((((((((((((((((((address + ",") + asset_id) + ",") + toString(asset_decimals)) + ",") + toString(bsAstR)) + ",") + toString(bsAstW)) + ",") + toString(qtAstR)) + ",") + toString(qtAstW)) + ",") + toString(totalPositionSize)) + ",") + toString(maxPriceImpact)) + ",") + toString(maxPriceSpread)) + ",") + toString(oraclePrice)) + ",") + toString(excessBalance)) + ",") + toString(freeBalance)) + ",") + toString(maxSpotUtilization)) + ",") + toString(totalSupply)) + ",") + toString(rate)) | |
352 | - | resItem :: result | |
353 | - | } | |
354 | - | ||
355 | - | ||
356 | - | func processPL (result,label) = { | |
357 | - | let arr = split(label, "-") | |
358 | - | let $t01041010457 = $Tuple2(arr[0], arr[1]) | |
359 | - | let pool_address = $t01041010457._1 | |
360 | - | let asset_id = $t01041010457._2 | |
361 | - | let $t01046310603 = getPLData(pool_address, asset_id) | |
362 | - | let asset_idd = $t01046310603._1 | |
363 | - | let plTokenId = $t01046310603._2 | |
364 | - | let sRate = $t01046310603._3 | |
365 | - | let bRate = $t01046310603._4 | |
366 | - | let totalSupplied = $t01046310603._5 | |
367 | - | let totalBorrowed = $t01046310603._6 | |
368 | - | let maxSupply = $t01046310603._7 | |
369 | - | let lastHeight = $t01046310603._8 | |
370 | - | let curHeight = $t01046310603._9 | |
371 | - | let resItem = ((((((((((((((((((label + ",") + asset_idd) + ",") + plTokenId) + ",") + toString(sRate)) + ",") + toString(bRate)) + ",") + toString(totalSupplied)) + ",") + toString(totalBorrowed)) + ",") + toString(maxSupply)) + ",") + toString(lastHeight)) + ",") + toString(curHeight)) | |
372 | - | resItem :: result | |
373 | - | } | |
374 | - | ||
375 | - | ||
376 | - | func getWX (params) = { | |
377 | - | let pools = split_51C(params, ",") | |
378 | - | let resArr = { | |
379 | - | let $l = pools | |
380 | - | let $s = size($l) | |
381 | - | let $acc0 = nil | |
382 | - | func $f0_1 ($a,$i) = if (($i >= $s)) | |
383 | - | then $a | |
384 | - | else processWX($a, $l[$i]) | |
385 | - | ||
386 | - | func $f0_2 ($a,$i) = if (($i >= $s)) | |
387 | - | then $a | |
388 | - | else throw("List size exceeds 120") | |
389 | - | ||
390 | - | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100), 101), 102), 103), 104), 105), 106), 107), 108), 109), 110), 111), 112), 113), 114), 115), 116), 117), 118), 119), 120) | |
391 | - | } | |
392 | - | let result = makeString_11C(resArr, "|") | |
393 | - | result | |
394 | - | } | |
395 | - | ||
396 | - | ||
397 | - | func getSW (params) = { | |
398 | - | let pools = split_4C(params, ",") | |
399 | - | let resArr = { | |
400 | - | let $l = pools | |
401 | - | let $s = size($l) | |
402 | - | let $acc0 = nil | |
403 | - | func $f0_1 ($a,$i) = if (($i >= $s)) | |
404 | - | then $a | |
405 | - | else processSW($a, $l[$i]) | |
406 | - | ||
407 | - | func $f0_2 ($a,$i) = if (($i >= $s)) | |
408 | - | then $a | |
409 | - | else throw("List size exceeds 100") | |
410 | - | ||
411 | - | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100) | |
412 | - | } | |
413 | - | let result = makeString_11C(resArr, "|") | |
414 | - | result | |
415 | - | } | |
416 | - | ||
417 | - | ||
418 | - | func getPZ (params) = { | |
419 | - | let pools = split_4C(params, ",") | |
420 | - | let resArr = { | |
421 | - | let $l = pools | |
422 | - | let $s = size($l) | |
423 | - | let $acc0 = nil | |
424 | - | func $f0_1 ($a,$i) = if (($i >= $s)) | |
425 | - | then $a | |
426 | - | else processPZ($a, $l[$i]) | |
427 | - | ||
428 | - | func $f0_2 ($a,$i) = if (($i >= $s)) | |
429 | - | then $a | |
430 | - | else throw("List size exceeds 100") | |
431 | - | ||
432 | - | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100) | |
433 | - | } | |
434 | - | let result = makeString_11C(resArr, "|") | |
435 | - | result | |
436 | - | } | |
437 | - | ||
438 | - | ||
439 | - | func getTSN (params) = { | |
440 | - | let vaults_labels = split(params, ",") | |
441 | - | let resArr = { | |
442 | - | let $l = vaults_labels | |
443 | - | let $s = size($l) | |
444 | - | let $acc0 = nil | |
445 | - | func $f0_1 ($a,$i) = if (($i >= $s)) | |
446 | - | then $a | |
447 | - | else processTSN($a, $l[$i]) | |
448 | - | ||
449 | - | func $f0_2 ($a,$i) = if (($i >= $s)) | |
450 | - | then $a | |
451 | - | else throw("List size exceeds 10") | |
452 | - | ||
453 | - | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
454 | - | } | |
455 | - | let result = makeString_2C(resArr, "|") | |
456 | - | let fee = tryGetInteger(k_fee, tsn_swapper_addr) | |
457 | - | let rebate = tryGetInteger(k_rebate, tsn_swapper_addr) | |
458 | - | let feeToStakersPercent = tryGetInteger(k_feeToStakersPercent, tsn_swapper_addr) | |
459 | - | ((((((toString(fee) + ",") + toString(rebate)) + ",") + toString(feeToStakersPercent)) + "/") + result) | |
460 | - | } | |
461 | - | ||
462 | - | ||
463 | - | func getPL (params) = { | |
464 | - | let pools = split(params, ",") | |
465 | - | let resArr = { | |
466 | - | let $l = pools | |
467 | - | let $s = size($l) | |
468 | - | let $acc0 = nil | |
469 | - | func $f0_1 ($a,$i) = if (($i >= $s)) | |
470 | - | then $a | |
471 | - | else processPL($a, $l[$i]) | |
472 | - | ||
473 | - | func $f0_2 ($a,$i) = if (($i >= $s)) | |
474 | - | then $a | |
475 | - | else throw("List size exceeds 10") | |
476 | - | ||
477 | - | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
478 | - | } | |
479 | - | let result = makeString_2C(resArr, "|") | |
480 | - | result | |
42 | + | func get_params_by_PL (plAssetId) = { | |
43 | + | let prAddress = Address(fromBase58String(prprpr)) | |
44 | + | let assetId = tryGetString((("setup_" + plAssetId) + "_assetId"), prAddress) | |
45 | + | let poolAddress = tryGetString((("setup_" + plAssetId) + "_poolAddress"), prAddress) | |
46 | + | let poolDomain = tryGetString((("setup_" + plAssetId) + "_poolDomain"), prAddress) | |
47 | + | $Tuple3(assetId, poolAddress, poolDomain) | |
481 | 48 | } | |
482 | 49 | ||
483 | 50 | ||
484 | 51 | @Callable(i) | |
485 | - | func test (s) = { | |
486 | - | let r = tryGetBool("deprecated_3P286TkTHARtrJzxUhPoHXardvutC37a9rM", Address(fromBase58String(swopfi_oracle))) | |
487 | - | throw(toString(r)) | |
52 | + | func ptw () = { | |
53 | + | let payAssetId = i.payments[0].assetId | |
54 | + | let payAmount = value(i.payments[0].amount) | |
55 | + | let $t014841570 = get_params_by_PL(getAssetString(payAssetId)) | |
56 | + | let assetId = $t014841570._1 | |
57 | + | let poolAddress = $t014841570._2 | |
58 | + | let poolDomain = $t014841570._3 | |
59 | + | let poolAdr = Address(fromBase58String(poolAddress)) | |
60 | + | let supplBef = tryGetInteger(((toString(this) + "_supplied_") + assetId), poolAdr) | |
61 | + | if ((supplBef == supplBef)) | |
62 | + | then { | |
63 | + | let balBef = getAccBalance(assetId) | |
64 | + | if ((balBef == balBef)) | |
65 | + | then { | |
66 | + | let importPL = invoke(Address(fromBase58String(prprpr)), "importPL", [poolDomain, toString(this)], i.payments) | |
67 | + | if ((importPL == importPL)) | |
68 | + | then { | |
69 | + | let supplAfter = tryGetInteger(((toString(this) + "_supplied_") + assetId), poolAdr) | |
70 | + | if ((supplAfter == supplAfter)) | |
71 | + | then { | |
72 | + | let amountToWithdraw = fraction((supplAfter - supplBef), get_srate(poolAddress, assetId), scale16) | |
73 | + | if ((amountToWithdraw == amountToWithdraw)) | |
74 | + | then { | |
75 | + | let witdraw = invoke(poolAdr, "withdraw", [assetId, amountToWithdraw], nil) | |
76 | + | if ((witdraw == witdraw)) | |
77 | + | then { | |
78 | + | let balAfter = getAccBalance(assetId) | |
79 | + | if ((balAfter == balAfter)) | |
80 | + | then { | |
81 | + | let withdrawed = (balAfter - balBef) | |
82 | + | if ((withdrawed == withdrawed)) | |
83 | + | then if (true) | |
84 | + | then throw(((((((((("1: " + toString(payAmount)) + ", 2: ") + toString(withdrawed)) + ", supplAfter: ") + toString(supplAfter)) + ", balbef: ") + toString(balBef)) + ", balAfter: ") + toString(balAfter))) | |
85 | + | else nil | |
86 | + | else throw("Strict value is not equal to itself.") | |
87 | + | } | |
88 | + | else throw("Strict value is not equal to itself.") | |
89 | + | } | |
90 | + | else throw("Strict value is not equal to itself.") | |
91 | + | } | |
92 | + | else throw("Strict value is not equal to itself.") | |
93 | + | } | |
94 | + | else throw("Strict value is not equal to itself.") | |
95 | + | } | |
96 | + | else throw("Strict value is not equal to itself.") | |
97 | + | } | |
98 | + | else throw("Strict value is not equal to itself.") | |
99 | + | } | |
100 | + | else throw("Strict value is not equal to itself.") | |
101 | + | } | |
102 | + | ||
103 | + | ||
104 | + | ||
105 | + | @Callable(i) | |
106 | + | func wtp (domain) = { | |
107 | + | let payAssetId = i.payments[0].assetId | |
108 | + | let payAmount = value(i.payments[0].amount) | |
109 | + | let plAssetId = tryGetString(((("setup_pl_" + getAssetString(payAssetId)) + "_") + toString(domain)), Address(fromBase58String(prprpr))) | |
110 | + | let $t027952856 = get_params_by_PL(plAssetId) | |
111 | + | let zagl1 = $t027952856._1 | |
112 | + | let poolAddress = $t027952856._2 | |
113 | + | let zagl2 = $t027952856._3 | |
114 | + | let poolAdr = Address(fromBase58String(poolAddress)) | |
115 | + | let supplBef = tryGetInteger(((toString(this) + "_supplied_") + getAssetString(payAssetId)), poolAdr) | |
116 | + | if ((supplBef == supplBef)) | |
117 | + | then { | |
118 | + | let balBef = getAccBalance(plAssetId) | |
119 | + | if ((balBef == balBef)) | |
120 | + | then { | |
121 | + | let deposit = invoke(poolAdr, "supply", nil, i.payments) | |
122 | + | if ((deposit == deposit)) | |
123 | + | then { | |
124 | + | let supplAfter = tryGetInteger(((toString(this) + "_supplied_") + getAssetString(payAssetId)), poolAdr) | |
125 | + | if ((supplAfter == supplAfter)) | |
126 | + | then { | |
127 | + | let to_export = (supplAfter - supplBef) | |
128 | + | if ((to_export == to_export)) | |
129 | + | then { | |
130 | + | let export = invoke(Address(fromBase58String(prprpr)), "exportPL", [domain, payAssetId, to_export], nil) | |
131 | + | if ((export == export)) | |
132 | + | then { | |
133 | + | let balAfter = getAccBalance(plAssetId) | |
134 | + | if ((balAfter == balAfter)) | |
135 | + | then { | |
136 | + | let exported = (balAfter - balBef) | |
137 | + | if ((exported == exported)) | |
138 | + | then if (true) | |
139 | + | then throw(((((((((("1: " + toString(payAmount)) + ", 2: ") + toString(exported)) + ", supplAfter: ") + toString(supplAfter)) + ", balbef: ") + toString(balBef)) + ", balAfter: ") + toString(balAfter))) | |
140 | + | else nil | |
141 | + | else throw("Strict value is not equal to itself.") | |
142 | + | } | |
143 | + | else throw("Strict value is not equal to itself.") | |
144 | + | } | |
145 | + | else throw("Strict value is not equal to itself.") | |
146 | + | } | |
147 | + | else throw("Strict value is not equal to itself.") | |
148 | + | } | |
149 | + | else throw("Strict value is not equal to itself.") | |
150 | + | } | |
151 | + | else throw("Strict value is not equal to itself.") | |
152 | + | } | |
153 | + | else throw("Strict value is not equal to itself.") | |
154 | + | } | |
155 | + | else throw("Strict value is not equal to itself.") | |
488 | 156 | } | |
489 | 157 | ||
490 | 158 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let | |
4 | + | let prprpr = "3PJESVDTHRv8i83XbmHrRGQhDc5rgR3azQs" | |
5 | 5 | ||
6 | - | let | |
6 | + | let mp = "3P4uA5etnZi4AmBabKinq2bMiWU8KcnHZdH" | |
7 | 7 | ||
8 | - | let pl_proxy = "3PJESVDTHRv8i83XbmHrRGQhDc5rgR3azQs" | |
9 | - | ||
10 | - | let K_am_as_id = "%s__amountAsset" | |
11 | - | ||
12 | - | let K_pr_as_id = "%s__priceAsset" | |
13 | - | ||
14 | - | let K_amp = "%s__amp" | |
15 | - | ||
16 | - | let K_share = "%s%s__shareAssetBalance__YiNbofFzC17jEHHCMwrRcpy9MrrjabMMLZxg8g5xmf7" | |
17 | - | ||
18 | - | let K_staked = "%s%s__stakedBalance__WAVES" | |
19 | - | ||
20 | - | let K_a_as_id = "A_asset_id" | |
21 | - | ||
22 | - | let K_b_as_id = "B_asset_id" | |
23 | - | ||
24 | - | let K_a_as_bal = "A_asset_balance" | |
25 | - | ||
26 | - | let K_b_as_bal = "B_asset_balance" | |
27 | - | ||
28 | - | let K_fee = "commission" | |
29 | - | ||
30 | - | let K_asset_ids = "static_tokenIds" | |
31 | - | ||
32 | - | let K_fee_puz = "static_fee" | |
33 | - | ||
34 | - | let K_feeToken = "static_feeToken" | |
35 | - | ||
36 | - | let tsn_swapper = "3PKz5jnJLohF2GjShQ7bG5H4BebdoA98zZ2" | |
37 | - | ||
38 | - | let tsn_swapper_addr = Address(fromBase58String(tsn_swapper)) | |
39 | - | ||
40 | - | let k_fee = "k_fee" | |
41 | - | ||
42 | - | let k_rebate = "k_rebate" | |
43 | - | ||
44 | - | let k_feeToStakersPercent = "k_feeToStakersPercent" | |
45 | - | ||
46 | - | let k_excessBalance = "k_excessBalance" | |
47 | - | ||
48 | - | let k_freeBalance = "k_freeBalance" | |
49 | - | ||
50 | - | let k_maxSpotUtilization = "k_maxSpotUtilization" | |
51 | - | ||
52 | - | let k_totalSupply = "k_totalSupply" | |
53 | - | ||
54 | - | let k_rate = "k_rate" | |
55 | - | ||
56 | - | let k_bsAstR = "k_bsAstR" | |
57 | - | ||
58 | - | let k_bsAstW = "k_bsAstW" | |
59 | - | ||
60 | - | let k_qtAstR = "k_qtAstR" | |
61 | - | ||
62 | - | let k_qtAstW = "k_qtAstW" | |
63 | - | ||
64 | - | let k_maxPriceImpact = "k_maxPriceImpact" | |
65 | - | ||
66 | - | let k_maxPriceSpread = "k_maxPriceSpread" | |
67 | - | ||
68 | - | let k_totalPositionSize = "k_totalPositionSize" | |
69 | - | ||
70 | - | let k_baseOracle = "k_baseOracle" | |
71 | - | ||
72 | - | func get_domain (poolAddress) = match poolAddress { | |
73 | - | case _ => | |
74 | - | if (("3P4uA5etnZi4AmBabKinq2bMiWU8KcnHZdH" == $match0)) | |
75 | - | then "1" | |
76 | - | else "0" | |
77 | - | } | |
78 | - | ||
79 | - | ||
80 | - | func k_plToken (asset_id,domain) = ((("setup_pl_" + asset_id) + "_") + domain) | |
81 | - | ||
82 | - | ||
83 | - | func k_total_supplied (asset_id) = ("total_supplied_" + asset_id) | |
84 | - | ||
85 | - | ||
86 | - | func k_sRate (asset_id) = (asset_id + "_sRate") | |
87 | - | ||
88 | - | ||
89 | - | func k_total_borrowed (asset_id) = ("total_borrowed_" + asset_id) | |
90 | - | ||
91 | - | ||
92 | - | func k_bRate (asset_id) = (asset_id + "_bRate") | |
93 | - | ||
94 | - | ||
95 | - | func k_maxSupply (asset_id) = ("setup_maxSupply_" + asset_id) | |
96 | - | ||
97 | - | ||
98 | - | let k_lastRateHeight = "lastRateHeight" | |
99 | - | ||
100 | - | func getPuzBalanceKey (assetId) = (("global_" + assetId) + "_balance") | |
101 | - | ||
102 | - | ||
103 | - | func getPuzWeightKey (assetId) = (("static_" + assetId) + "_weight") | |
104 | - | ||
105 | - | ||
106 | - | func getBPAK (address) = (address + "_staticAssetsIds") | |
107 | - | ||
8 | + | let scale16 = 10000000000000000 | |
108 | 9 | ||
109 | 10 | func tryGetString (key,address) = match getString(address, key) { | |
110 | 11 | case b: String => | |
111 | 12 | b | |
112 | 13 | case _ => | |
113 | 14 | "" | |
114 | - | } | |
115 | - | ||
116 | - | ||
117 | - | func tryGetBool (key,address) = match getBoolean(address, key) { | |
118 | - | case b: Boolean => | |
119 | - | b | |
120 | - | case _ => | |
121 | - | false | |
122 | 15 | } | |
123 | 16 | ||
124 | 17 | ||
125 | 18 | func tryGetInteger (key,address) = match getInteger(address, key) { | |
126 | 19 | case b: Int => | |
127 | 20 | b | |
128 | 21 | case _ => | |
129 | 22 | 0 | |
130 | 23 | } | |
131 | 24 | ||
132 | 25 | ||
133 | - | func | |
134 | - | case b: | |
135 | - | b | |
26 | + | func getAssetString (assetId) = match assetId { | |
27 | + | case b: ByteVector => | |
28 | + | toBase58String(b) | |
136 | 29 | case _ => | |
137 | - | | |
30 | + | "WAVES" | |
138 | 31 | } | |
139 | 32 | ||
140 | 33 | ||
141 | - | func getAssetBalance (address,assetId) = { | |
142 | - | let a = assetBalance(address, assetId) | |
143 | - | a | |
144 | - | } | |
34 | + | func getAccBalance (assetId) = if ((assetId == "WAVES")) | |
35 | + | then wavesBalance(this).available | |
36 | + | else assetBalance(this, fromBase58String(assetId)) | |
145 | 37 | ||
146 | 38 | ||
147 | - | func getWavesBalance (address) = { | |
148 | - | let w = wavesBalance(address).available | |
149 | - | w | |
150 | - | } | |
39 | + | func get_srate (poolAddress,assetId) = tryGetInteger((assetId + "_sRate"), Address(fromBase58String(poolAddress))) | |
151 | 40 | ||
152 | 41 | ||
153 | - | func getBalance (result,assetId) = { | |
154 | - | let address = take(result, 35) | |
155 | - | let addr = Address(fromBase58String(address)) | |
156 | - | let balance = if ((assetId == "WAVES")) | |
157 | - | then getWavesBalance(addr) | |
158 | - | else { | |
159 | - | let aId = fromBase58String(assetId) | |
160 | - | getAssetBalance(addr, aId) | |
161 | - | } | |
162 | - | let len = size(result) | |
163 | - | (((((address + drop(result, 35)) + assetId) + ":") + toString(balance)) + ",") | |
164 | - | } | |
165 | - | ||
166 | - | ||
167 | - | func getWxData (address) = { | |
168 | - | let addr = Address(fromBase58String(address)) | |
169 | - | let amountId = tryGetString(K_am_as_id, addr) | |
170 | - | let priceId = tryGetString(K_pr_as_id, addr) | |
171 | - | let amp = tryGetString(K_amp, addr) | |
172 | - | let share = tryGetInteger(K_share, addr) | |
173 | - | let stake = tryGetInteger(K_staked, addr) | |
174 | - | $Tuple2(((amountId + ",") + priceId), ((((amp + ",") + toString(share)) + ",") + toString(stake))) | |
175 | - | } | |
176 | - | ||
177 | - | ||
178 | - | func getSwData (address) = { | |
179 | - | let addr = Address(fromBase58String(address)) | |
180 | - | let A_id = tryGetString(K_a_as_id, addr) | |
181 | - | let B_id = tryGetString(K_b_as_id, addr) | |
182 | - | let A_balance = tryGetInteger(K_a_as_bal, addr) | |
183 | - | let B_balance = tryGetInteger(K_b_as_bal, addr) | |
184 | - | let fee = tryGetIntegerWithDef(K_fee, addr, 6000) | |
185 | - | let deprecated = tryGetBool(("deprecated_" + address), Address(fromBase58String(swopfi_oracle))) | |
186 | - | ((((((((((A_id + ":") + toString(A_balance)) + ",") + B_id) + ":") + toString(B_balance)) + ",") + toString(fee)) + ",") + toString(deprecated)) | |
187 | - | } | |
188 | - | ||
189 | - | ||
190 | - | func collectPuzAssetsData (result,assetId) = { | |
191 | - | let len = size(result) | |
192 | - | let address = result[(len - 1)] | |
193 | - | let addr = Address(fromBase58String(address)) | |
194 | - | let balanceKey = getPuzBalanceKey(assetId) | |
195 | - | let weightKey = getPuzWeightKey(assetId) | |
196 | - | let balance = tryGetInteger(balanceKey, addr) | |
197 | - | let weight = tryGetInteger(weightKey, addr) | |
198 | - | let res = ((((assetId + ",") + toString(balance)) + ",") + toString(weight)) | |
199 | - | res :: result | |
200 | - | } | |
201 | - | ||
202 | - | ||
203 | - | func getPzData (address) = { | |
204 | - | let addr = Address(fromBase58String(address)) | |
205 | - | let fee1 = tryGetInteger(K_fee_puz, addr) | |
206 | - | let feeToken = tryGetString(K_feeToken, addr) | |
207 | - | let assetsStr1 = tryGetString(K_asset_ids, addr) | |
208 | - | let $t055915744 = if ((assetsStr1 == "")) | |
209 | - | then $Tuple2(tryGetString(getBPAK(address), this), 200) | |
210 | - | else $Tuple2(assetsStr1, fee1) | |
211 | - | let assetsStr = $t055915744._1 | |
212 | - | let fee = $t055915744._2 | |
213 | - | let assets = split(assetsStr, ",") | |
214 | - | let assetsData = { | |
215 | - | let $l = assets | |
216 | - | let $s = size($l) | |
217 | - | let $acc0 = [address] | |
218 | - | func $f0_1 ($a,$i) = if (($i >= $s)) | |
219 | - | then $a | |
220 | - | else collectPuzAssetsData($a, $l[$i]) | |
221 | - | ||
222 | - | func $f0_2 ($a,$i) = if (($i >= $s)) | |
223 | - | then $a | |
224 | - | else throw("List size exceeds 10") | |
225 | - | ||
226 | - | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
227 | - | } | |
228 | - | let len = size(assetsData) | |
229 | - | let assetsArr = removeByIndex(assetsData, (len - 1)) | |
230 | - | let assetsDataStr = makeString_2C(assetsArr, ";") | |
231 | - | $Tuple3(fee, feeToken, assetsDataStr) | |
232 | - | } | |
233 | - | ||
234 | - | ||
235 | - | func getTsnData (address,asset_id) = { | |
236 | - | let addr = Address(fromBase58String(address)) | |
237 | - | let bsAstR = tryGetInteger(k_bsAstR, addr) | |
238 | - | let bsAstW = tryGetInteger(k_bsAstW, addr) | |
239 | - | let qtAstR = tryGetInteger(k_qtAstR, addr) | |
240 | - | let qtAstW = tryGetInteger(k_qtAstW, addr) | |
241 | - | let maxPriceImpact = tryGetInteger(k_maxPriceImpact, addr) | |
242 | - | let maxPriceSpread = tryGetInteger(k_maxPriceSpread, addr) | |
243 | - | let totalPositionSize = tryGetInteger(k_totalPositionSize, addr) | |
244 | - | let oracleString = tryGetString(k_baseOracle, addr) | |
245 | - | let arr = split(oracleString, ",") | |
246 | - | let $t066416689 = $Tuple2(arr[0], arr[1]) | |
247 | - | let oracleAddress = $t066416689._1 | |
248 | - | let priceKey = $t066416689._2 | |
249 | - | let oracleAddr = Address(fromBase58String(oracleAddress)) | |
250 | - | let oraclePrice = tryGetInteger(priceKey, oracleAddr) | |
251 | - | let vault = tryGetString(("k_asset_vault_" + asset_id), tsn_swapper_addr) | |
252 | - | let vault_addr = Address(fromBase58String(vault)) | |
253 | - | let excessBalance = tryGetInteger(k_excessBalance, vault_addr) | |
254 | - | let freeBalance = tryGetInteger(k_freeBalance, vault_addr) | |
255 | - | let maxSpotUtilization = tryGetInteger(k_maxSpotUtilization, vault_addr) | |
256 | - | let totalSupply = tryGetInteger(k_totalSupply, vault_addr) | |
257 | - | let rate = tryGetInteger(k_rate, vault_addr) | |
258 | - | $Tuple13(bsAstR, bsAstW, qtAstR, qtAstW, totalPositionSize, maxPriceImpact, maxPriceSpread, oraclePrice, excessBalance, freeBalance, maxSpotUtilization, totalSupply, rate) | |
259 | - | } | |
260 | - | ||
261 | - | ||
262 | - | func getPLData (pool_address,asset_id) = { | |
263 | - | let domain = get_domain(pool_address) | |
264 | - | let poolAdr = Address(fromBase58String(pool_address)) | |
265 | - | let plTokenId = tryGetString(k_plToken(asset_id, domain), Address(fromBase58String(pl_proxy))) | |
266 | - | let sRate = tryGetInteger(k_sRate(asset_id), poolAdr) | |
267 | - | let bRate = tryGetInteger(k_bRate(asset_id), poolAdr) | |
268 | - | let totalSupplied = tryGetInteger(k_total_supplied(asset_id), poolAdr) | |
269 | - | let totalBorrowed = tryGetInteger(k_total_borrowed(asset_id), poolAdr) | |
270 | - | let maxSupply = tryGetInteger(k_maxSupply(asset_id), poolAdr) | |
271 | - | let lastHeight = tryGetInteger(k_lastRateHeight, poolAdr) | |
272 | - | let curHeight = height | |
273 | - | $Tuple9(asset_id, plTokenId, sRate, bRate, totalSupplied, totalBorrowed, maxSupply, lastHeight, curHeight) | |
274 | - | } | |
275 | - | ||
276 | - | ||
277 | - | func test_loop (result,ele) = ele :: result | |
278 | - | ||
279 | - | ||
280 | - | func getBalancesStr (assetsStr,address) = { | |
281 | - | let assets = split_4C(assetsStr, ",") | |
282 | - | let res = { | |
283 | - | let $l = assets | |
284 | - | let $s = size($l) | |
285 | - | let $acc0 = address | |
286 | - | func $f0_1 ($a,$i) = if (($i >= $s)) | |
287 | - | then $a | |
288 | - | else getBalance($a, $l[$i]) | |
289 | - | ||
290 | - | func $f0_2 ($a,$i) = if (($i >= $s)) | |
291 | - | then $a | |
292 | - | else throw("List size exceeds 2") | |
293 | - | ||
294 | - | $f0_2($f0_1($f0_1($acc0, 0), 1), 2) | |
295 | - | } | |
296 | - | let balances = drop(res, 35) | |
297 | - | let bals = dropRight(balances, 1) | |
298 | - | bals | |
299 | - | } | |
300 | - | ||
301 | - | ||
302 | - | func processWX (result,address) = { | |
303 | - | let $t086528695 = getWxData(address) | |
304 | - | let assetsStr = $t086528695._1 | |
305 | - | let datas = $t086528695._2 | |
306 | - | let assetsString = getBalancesStr(assetsStr, address) | |
307 | - | let resItem = ((((address + "/") + assetsString) + "/") + datas) | |
308 | - | resItem :: result | |
309 | - | } | |
310 | - | ||
311 | - | ||
312 | - | func processSW (result,address) = { | |
313 | - | let assetsString = getSwData(address) | |
314 | - | let resItem = ((address + "/") + assetsString) | |
315 | - | resItem :: result | |
316 | - | } | |
317 | - | ||
318 | - | ||
319 | - | func processPZ (result,address) = { | |
320 | - | let $t090959149 = getPzData(address) | |
321 | - | let fee = $t090959149._1 | |
322 | - | let feeToken = $t090959149._2 | |
323 | - | let assetsString = $t090959149._3 | |
324 | - | let resItem = ((((((address + "/") + toString(fee)) + "/") + feeToken) + "/") + assetsString) | |
325 | - | resItem :: result | |
326 | - | } | |
327 | - | ||
328 | - | ||
329 | - | func processTSN (result,label) = { | |
330 | - | let arr = split(label, "_") | |
331 | - | let $t093669408 = $Tuple2(arr[0], arr[1]) | |
332 | - | let address = $t093669408._1 | |
333 | - | let asset_id = $t093669408._2 | |
334 | - | let $t094149613 = getTsnData(address, asset_id) | |
335 | - | let bsAstR = $t094149613._1 | |
336 | - | let bsAstW = $t094149613._2 | |
337 | - | let qtAstR = $t094149613._3 | |
338 | - | let qtAstW = $t094149613._4 | |
339 | - | let totalPositionSize = $t094149613._5 | |
340 | - | let maxPriceImpact = $t094149613._6 | |
341 | - | let maxPriceSpread = $t094149613._7 | |
342 | - | let oraclePrice = $t094149613._8 | |
343 | - | let excessBalance = $t094149613._9 | |
344 | - | let freeBalance = $t094149613._10 | |
345 | - | let maxSpotUtilization = $t094149613._11 | |
346 | - | let totalSupply = $t094149613._12 | |
347 | - | let rate = $t094149613._13 | |
348 | - | let asset_decimals = if ((asset_id == "WAVES")) | |
349 | - | then 8 | |
350 | - | else valueOrErrorMessage(assetInfo(fromBase58String(asset_id)), ("Ivalid asset " + asset_id)).decimals | |
351 | - | let resItem = ((((((((((((((((((((((((((((((address + ",") + asset_id) + ",") + toString(asset_decimals)) + ",") + toString(bsAstR)) + ",") + toString(bsAstW)) + ",") + toString(qtAstR)) + ",") + toString(qtAstW)) + ",") + toString(totalPositionSize)) + ",") + toString(maxPriceImpact)) + ",") + toString(maxPriceSpread)) + ",") + toString(oraclePrice)) + ",") + toString(excessBalance)) + ",") + toString(freeBalance)) + ",") + toString(maxSpotUtilization)) + ",") + toString(totalSupply)) + ",") + toString(rate)) | |
352 | - | resItem :: result | |
353 | - | } | |
354 | - | ||
355 | - | ||
356 | - | func processPL (result,label) = { | |
357 | - | let arr = split(label, "-") | |
358 | - | let $t01041010457 = $Tuple2(arr[0], arr[1]) | |
359 | - | let pool_address = $t01041010457._1 | |
360 | - | let asset_id = $t01041010457._2 | |
361 | - | let $t01046310603 = getPLData(pool_address, asset_id) | |
362 | - | let asset_idd = $t01046310603._1 | |
363 | - | let plTokenId = $t01046310603._2 | |
364 | - | let sRate = $t01046310603._3 | |
365 | - | let bRate = $t01046310603._4 | |
366 | - | let totalSupplied = $t01046310603._5 | |
367 | - | let totalBorrowed = $t01046310603._6 | |
368 | - | let maxSupply = $t01046310603._7 | |
369 | - | let lastHeight = $t01046310603._8 | |
370 | - | let curHeight = $t01046310603._9 | |
371 | - | let resItem = ((((((((((((((((((label + ",") + asset_idd) + ",") + plTokenId) + ",") + toString(sRate)) + ",") + toString(bRate)) + ",") + toString(totalSupplied)) + ",") + toString(totalBorrowed)) + ",") + toString(maxSupply)) + ",") + toString(lastHeight)) + ",") + toString(curHeight)) | |
372 | - | resItem :: result | |
373 | - | } | |
374 | - | ||
375 | - | ||
376 | - | func getWX (params) = { | |
377 | - | let pools = split_51C(params, ",") | |
378 | - | let resArr = { | |
379 | - | let $l = pools | |
380 | - | let $s = size($l) | |
381 | - | let $acc0 = nil | |
382 | - | func $f0_1 ($a,$i) = if (($i >= $s)) | |
383 | - | then $a | |
384 | - | else processWX($a, $l[$i]) | |
385 | - | ||
386 | - | func $f0_2 ($a,$i) = if (($i >= $s)) | |
387 | - | then $a | |
388 | - | else throw("List size exceeds 120") | |
389 | - | ||
390 | - | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100), 101), 102), 103), 104), 105), 106), 107), 108), 109), 110), 111), 112), 113), 114), 115), 116), 117), 118), 119), 120) | |
391 | - | } | |
392 | - | let result = makeString_11C(resArr, "|") | |
393 | - | result | |
394 | - | } | |
395 | - | ||
396 | - | ||
397 | - | func getSW (params) = { | |
398 | - | let pools = split_4C(params, ",") | |
399 | - | let resArr = { | |
400 | - | let $l = pools | |
401 | - | let $s = size($l) | |
402 | - | let $acc0 = nil | |
403 | - | func $f0_1 ($a,$i) = if (($i >= $s)) | |
404 | - | then $a | |
405 | - | else processSW($a, $l[$i]) | |
406 | - | ||
407 | - | func $f0_2 ($a,$i) = if (($i >= $s)) | |
408 | - | then $a | |
409 | - | else throw("List size exceeds 100") | |
410 | - | ||
411 | - | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100) | |
412 | - | } | |
413 | - | let result = makeString_11C(resArr, "|") | |
414 | - | result | |
415 | - | } | |
416 | - | ||
417 | - | ||
418 | - | func getPZ (params) = { | |
419 | - | let pools = split_4C(params, ",") | |
420 | - | let resArr = { | |
421 | - | let $l = pools | |
422 | - | let $s = size($l) | |
423 | - | let $acc0 = nil | |
424 | - | func $f0_1 ($a,$i) = if (($i >= $s)) | |
425 | - | then $a | |
426 | - | else processPZ($a, $l[$i]) | |
427 | - | ||
428 | - | func $f0_2 ($a,$i) = if (($i >= $s)) | |
429 | - | then $a | |
430 | - | else throw("List size exceeds 100") | |
431 | - | ||
432 | - | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100) | |
433 | - | } | |
434 | - | let result = makeString_11C(resArr, "|") | |
435 | - | result | |
436 | - | } | |
437 | - | ||
438 | - | ||
439 | - | func getTSN (params) = { | |
440 | - | let vaults_labels = split(params, ",") | |
441 | - | let resArr = { | |
442 | - | let $l = vaults_labels | |
443 | - | let $s = size($l) | |
444 | - | let $acc0 = nil | |
445 | - | func $f0_1 ($a,$i) = if (($i >= $s)) | |
446 | - | then $a | |
447 | - | else processTSN($a, $l[$i]) | |
448 | - | ||
449 | - | func $f0_2 ($a,$i) = if (($i >= $s)) | |
450 | - | then $a | |
451 | - | else throw("List size exceeds 10") | |
452 | - | ||
453 | - | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
454 | - | } | |
455 | - | let result = makeString_2C(resArr, "|") | |
456 | - | let fee = tryGetInteger(k_fee, tsn_swapper_addr) | |
457 | - | let rebate = tryGetInteger(k_rebate, tsn_swapper_addr) | |
458 | - | let feeToStakersPercent = tryGetInteger(k_feeToStakersPercent, tsn_swapper_addr) | |
459 | - | ((((((toString(fee) + ",") + toString(rebate)) + ",") + toString(feeToStakersPercent)) + "/") + result) | |
460 | - | } | |
461 | - | ||
462 | - | ||
463 | - | func getPL (params) = { | |
464 | - | let pools = split(params, ",") | |
465 | - | let resArr = { | |
466 | - | let $l = pools | |
467 | - | let $s = size($l) | |
468 | - | let $acc0 = nil | |
469 | - | func $f0_1 ($a,$i) = if (($i >= $s)) | |
470 | - | then $a | |
471 | - | else processPL($a, $l[$i]) | |
472 | - | ||
473 | - | func $f0_2 ($a,$i) = if (($i >= $s)) | |
474 | - | then $a | |
475 | - | else throw("List size exceeds 10") | |
476 | - | ||
477 | - | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
478 | - | } | |
479 | - | let result = makeString_2C(resArr, "|") | |
480 | - | result | |
42 | + | func get_params_by_PL (plAssetId) = { | |
43 | + | let prAddress = Address(fromBase58String(prprpr)) | |
44 | + | let assetId = tryGetString((("setup_" + plAssetId) + "_assetId"), prAddress) | |
45 | + | let poolAddress = tryGetString((("setup_" + plAssetId) + "_poolAddress"), prAddress) | |
46 | + | let poolDomain = tryGetString((("setup_" + plAssetId) + "_poolDomain"), prAddress) | |
47 | + | $Tuple3(assetId, poolAddress, poolDomain) | |
481 | 48 | } | |
482 | 49 | ||
483 | 50 | ||
484 | 51 | @Callable(i) | |
485 | - | func test (s) = { | |
486 | - | let r = tryGetBool("deprecated_3P286TkTHARtrJzxUhPoHXardvutC37a9rM", Address(fromBase58String(swopfi_oracle))) | |
487 | - | throw(toString(r)) | |
52 | + | func ptw () = { | |
53 | + | let payAssetId = i.payments[0].assetId | |
54 | + | let payAmount = value(i.payments[0].amount) | |
55 | + | let $t014841570 = get_params_by_PL(getAssetString(payAssetId)) | |
56 | + | let assetId = $t014841570._1 | |
57 | + | let poolAddress = $t014841570._2 | |
58 | + | let poolDomain = $t014841570._3 | |
59 | + | let poolAdr = Address(fromBase58String(poolAddress)) | |
60 | + | let supplBef = tryGetInteger(((toString(this) + "_supplied_") + assetId), poolAdr) | |
61 | + | if ((supplBef == supplBef)) | |
62 | + | then { | |
63 | + | let balBef = getAccBalance(assetId) | |
64 | + | if ((balBef == balBef)) | |
65 | + | then { | |
66 | + | let importPL = invoke(Address(fromBase58String(prprpr)), "importPL", [poolDomain, toString(this)], i.payments) | |
67 | + | if ((importPL == importPL)) | |
68 | + | then { | |
69 | + | let supplAfter = tryGetInteger(((toString(this) + "_supplied_") + assetId), poolAdr) | |
70 | + | if ((supplAfter == supplAfter)) | |
71 | + | then { | |
72 | + | let amountToWithdraw = fraction((supplAfter - supplBef), get_srate(poolAddress, assetId), scale16) | |
73 | + | if ((amountToWithdraw == amountToWithdraw)) | |
74 | + | then { | |
75 | + | let witdraw = invoke(poolAdr, "withdraw", [assetId, amountToWithdraw], nil) | |
76 | + | if ((witdraw == witdraw)) | |
77 | + | then { | |
78 | + | let balAfter = getAccBalance(assetId) | |
79 | + | if ((balAfter == balAfter)) | |
80 | + | then { | |
81 | + | let withdrawed = (balAfter - balBef) | |
82 | + | if ((withdrawed == withdrawed)) | |
83 | + | then if (true) | |
84 | + | then throw(((((((((("1: " + toString(payAmount)) + ", 2: ") + toString(withdrawed)) + ", supplAfter: ") + toString(supplAfter)) + ", balbef: ") + toString(balBef)) + ", balAfter: ") + toString(balAfter))) | |
85 | + | else nil | |
86 | + | else throw("Strict value is not equal to itself.") | |
87 | + | } | |
88 | + | else throw("Strict value is not equal to itself.") | |
89 | + | } | |
90 | + | else throw("Strict value is not equal to itself.") | |
91 | + | } | |
92 | + | else throw("Strict value is not equal to itself.") | |
93 | + | } | |
94 | + | else throw("Strict value is not equal to itself.") | |
95 | + | } | |
96 | + | else throw("Strict value is not equal to itself.") | |
97 | + | } | |
98 | + | else throw("Strict value is not equal to itself.") | |
99 | + | } | |
100 | + | else throw("Strict value is not equal to itself.") | |
101 | + | } | |
102 | + | ||
103 | + | ||
104 | + | ||
105 | + | @Callable(i) | |
106 | + | func wtp (domain) = { | |
107 | + | let payAssetId = i.payments[0].assetId | |
108 | + | let payAmount = value(i.payments[0].amount) | |
109 | + | let plAssetId = tryGetString(((("setup_pl_" + getAssetString(payAssetId)) + "_") + toString(domain)), Address(fromBase58String(prprpr))) | |
110 | + | let $t027952856 = get_params_by_PL(plAssetId) | |
111 | + | let zagl1 = $t027952856._1 | |
112 | + | let poolAddress = $t027952856._2 | |
113 | + | let zagl2 = $t027952856._3 | |
114 | + | let poolAdr = Address(fromBase58String(poolAddress)) | |
115 | + | let supplBef = tryGetInteger(((toString(this) + "_supplied_") + getAssetString(payAssetId)), poolAdr) | |
116 | + | if ((supplBef == supplBef)) | |
117 | + | then { | |
118 | + | let balBef = getAccBalance(plAssetId) | |
119 | + | if ((balBef == balBef)) | |
120 | + | then { | |
121 | + | let deposit = invoke(poolAdr, "supply", nil, i.payments) | |
122 | + | if ((deposit == deposit)) | |
123 | + | then { | |
124 | + | let supplAfter = tryGetInteger(((toString(this) + "_supplied_") + getAssetString(payAssetId)), poolAdr) | |
125 | + | if ((supplAfter == supplAfter)) | |
126 | + | then { | |
127 | + | let to_export = (supplAfter - supplBef) | |
128 | + | if ((to_export == to_export)) | |
129 | + | then { | |
130 | + | let export = invoke(Address(fromBase58String(prprpr)), "exportPL", [domain, payAssetId, to_export], nil) | |
131 | + | if ((export == export)) | |
132 | + | then { | |
133 | + | let balAfter = getAccBalance(plAssetId) | |
134 | + | if ((balAfter == balAfter)) | |
135 | + | then { | |
136 | + | let exported = (balAfter - balBef) | |
137 | + | if ((exported == exported)) | |
138 | + | then if (true) | |
139 | + | then throw(((((((((("1: " + toString(payAmount)) + ", 2: ") + toString(exported)) + ", supplAfter: ") + toString(supplAfter)) + ", balbef: ") + toString(balBef)) + ", balAfter: ") + toString(balAfter))) | |
140 | + | else nil | |
141 | + | else throw("Strict value is not equal to itself.") | |
142 | + | } | |
143 | + | else throw("Strict value is not equal to itself.") | |
144 | + | } | |
145 | + | else throw("Strict value is not equal to itself.") | |
146 | + | } | |
147 | + | else throw("Strict value is not equal to itself.") | |
148 | + | } | |
149 | + | else throw("Strict value is not equal to itself.") | |
150 | + | } | |
151 | + | else throw("Strict value is not equal to itself.") | |
152 | + | } | |
153 | + | else throw("Strict value is not equal to itself.") | |
154 | + | } | |
155 | + | else throw("Strict value is not equal to itself.") | |
488 | 156 | } | |
489 | 157 | ||
490 | 158 |
github/deemru/w8io/3ef1775 51.44 ms ◑