tx · EuSSwPKioMX8Tri7W5idNmTQoB5QjGy4qCzFEkLhXtHm 3NBbFNBed9tcU5AmsJAuExWvgJyNmJxqjWq: -0.01000000 Waves 2023.09.09 23:46 [2748350] smart account 3NBbFNBed9tcU5AmsJAuExWvgJyNmJxqjWq > SELF 0.00000000 Waves
{ "type": 13, "id": "EuSSwPKioMX8Tri7W5idNmTQoB5QjGy4qCzFEkLhXtHm", "fee": 1000000, "feeAssetId": null, "timestamp": 1694292416220, "version": 2, "chainId": 84, "sender": "3NBbFNBed9tcU5AmsJAuExWvgJyNmJxqjWq", "senderPublicKey": "ERewvWFUFQfR1eCnipNAv9n7SdQhof2ESP6PGVjTueLd", "proofs": [ "5XeopnvXDQM6eCGuamZWuaCuTJpWcjxNpyHncwct2BhfdqXcndC87n7KkJVCmA7KjiA6xN8HaXqk68Qgx16vo1LN" ], "script": "base64:BgIJCAISABIDCgEBBwAGdXNkbklkASAP8hwSrOTEPJrsRhqrJaiw7LoHK0bMbYhy8LXikkkBtAAOd2F2ZXMyTFRva2VuSWQBIOTNKeq7wReVNlE2S+RpfYhOUVOtu4YUhfwJjtl3b86xAAxwdXp6bGVMZW5kU0MCIzNOM0RuVmZmblV5WnR6Mk1SYms1VTdnaU4xMTJXZW1wTU5kABBmYWtlUHV6emxlU3dhcFNDAiMzTXM4ZnFiWE00UmhtTTZDUFRyNDRoVXdIZTJDQ21WQ2ZWQQAOdXNkbkFkZHJlc3NTdHICLDI1RkVxRWpSa3FLNnlDa2lUN0x6NlNBWXo3Z1VGQ3R4ZkNDaG5yVkZENUFUAA93YXZlczJMVG9rZW5TdHICLEdROVFOVkxHZllTYk5aNGRTOE5SeXZHR0VMWkw0c1dQS2lWajg4Q1YxckpMAQ10cnlHZXRJbnRlZ2VyAQNrZXkEByRtYXRjaDAJAJoIAgUEdGhpcwUDa2V5AwkAAQIFByRtYXRjaDACA0ludAQBYgUHJG1hdGNoMAUBYgAAAgFpAQltaW50TG9uZzIAAwMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQYJAAACCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAAACQACAQIcMSBwYXltZW50IGhhcyB0byBiZSBhdHRhY2hlZAQNZmlyc3RBbW91bnRJbggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQECGNhbGxlcklkCQClCAEIBQFpBmNhbGxlcgQXZmlyc3RTd2FwcGVkV2F2ZXNBbW91bnQJAPwHBAkBEUBleHRyTmF0aXZlKDEwNjIpAQUQZmFrZVB1enpsZVN3YXBTQwILc3dhcFRvV2F2ZXMJAMwIAgkApQgBCAUBaQZjYWxsZXIFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUGdXNkbklkBQ1maXJzdEFtb3VudEluBQNuaWwDCQAAAgUXZmlyc3RTd2FwcGVkV2F2ZXNBbW91bnQFF2ZpcnN0U3dhcHBlZFdhdmVzQW1vdW50BAckbWF0Y2gwBRdmaXJzdFN3YXBwZWRXYXZlc0Ftb3VudAMJAAECBQckbWF0Y2gwAgNJbnQEF2ZpcnN0U3dhcHBlZEFtb3VudFZhbHVlBQckbWF0Y2gwBBlmaXJzdERlcG9zaXRlZFdhdmVzQW1vdW50CQD8BwQJARFAZXh0ck5hdGl2ZSgxMDYyKQEFDHB1enpsZUxlbmRTQwIGc3VwcGx5BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBHVuaXQFF2ZpcnN0U3dhcHBlZEFtb3VudFZhbHVlBQNuaWwDCQAAAgUZZmlyc3REZXBvc2l0ZWRXYXZlc0Ftb3VudAUZZmlyc3REZXBvc2l0ZWRXYXZlc0Ftb3VudAQObGlzdFBlcmNlbnRhZ2UJAMwIAgDwogQJAMwIAgDo/gIJAMwIAgD8iwIJAMwIAgDKuwEJAMwIAgCngwEFA25pbAoBCnJlcGVhdEZ1bmMCBWFjY3VtBG5leHQEDGJvcnJvd2VkVXNkbgkA/AcECQERQGV4dHJOYXRpdmUoMTA2MikBBQxwdXp6bGVMZW5kU0MCBmJvcnJvdwkAzAgCBQ51c2RuQWRkcmVzc1N0cgkAzAgCCQBpAgkAaAIFDWZpcnN0QW1vdW50SW4FBWFjY3VtAKCNBgUDbmlsBQNuaWwDCQAAAgUMYm9ycm93ZWRVc2RuBQxib3Jyb3dlZFVzZG4EDXN3YXBwZWRBbW91bnQJAPwHBAkBEUBleHRyTmF0aXZlKDEwNjIpAQUQZmFrZVB1enpsZVN3YXBTQwILc3dhcFRvV2F2ZXMJAMwIAgkApQgBCAUBaQZjYWxsZXIFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUGdXNkbklkCQBpAgkAaAIFF2ZpcnN0U3dhcHBlZEFtb3VudFZhbHVlBQVhY2N1bQCgjQYFA25pbAMJAAACBQ1zd2FwcGVkQW1vdW50BQ1zd2FwcGVkQW1vdW50BAckbWF0Y2gxBQ1zd2FwcGVkQW1vdW50AwkAAQIFByRtYXRjaDECA0ludAQSc3dhcHBlZEFtb3VudFZhbHVlBQckbWF0Y2gxBA5kZXBvc2l0ZWRXYXZlcwkA/AcECQERQGV4dHJOYXRpdmUoMTA2MikBBQxwdXp6bGVMZW5kU0MCBnN1cHBseQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQR1bml0BRJzd2FwcGVkQW1vdW50VmFsdWUFA25pbAMJAAACBQ5kZXBvc2l0ZWRXYXZlcwUOZGVwb3NpdGVkV2F2ZXMJAGQCCQBpAgkAaAIFF2ZpcnN0U3dhcHBlZEFtb3VudFZhbHVlBQVhY2N1bQCgjQYJAGkCCQBoAgUXZmlyc3RTd2FwcGVkQW1vdW50VmFsdWUFBG5leHQAoI0GCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIXSW5jb3JyZWN0IGludm9rZSByZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EA3JlcwoAAiRsBQ5saXN0UGVyY2VudGFnZQoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKcmVwZWF0RnVuYwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQNyZXMFDndhdmVzMkxUb2tlbklkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAhdJbmNvcnJlY3QgaW52b2tlIHJlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQZyZWRlZW0BC3dhdmVzQW1vdW50BAt1c2VyQWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEEnJlZGVlbWVkVVNETkFtb3VudAkA/AcECQERQGV4dHJOYXRpdmUoMTA2MikBBRBmYWtlUHV6emxlU3dhcFNDAgpzd2FwVG9VU0ROCQDMCAIFC3dhdmVzQW1vdW50CQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwFA25pbAMJAAACBRJyZWRlZW1lZFVTRE5BbW91bnQFEnJlZGVlbWVkVVNETkFtb3VudAQHJG1hdGNoMAUScmVkZWVtZWRVU0ROQW1vdW50AwkAAQIFByRtYXRjaDACA0ludAQTcmVkZWVtZWRBbW91bnRWYWx1ZQUHJG1hdGNoMAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQt1c2VyQWRkcmVzcwIJX3JlZGVlbWVkBRNyZWRlZW1lZEFtb3VudFZhbHVlBQNuaWwJAAIBAhdJbmNvcnJlY3QgaW52b2tlIHJlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXm2kdJA", "height": 2748350, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2axgvjparvkHKf2zfrHS1MSim3fuasvTBpzk1gSz5LWd Next: dSjJVMRmd1r5FXLnNbt9m3ikBnauQym5AgyuKTtciq2 Diff:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let waves1LId = Address(base58'CygdaJKZfxRrHyYMwkNdz9ZgSD5FpJLtk5s5B4q1DKV6') | |
5 | - | ||
6 | - | let waves3LId = Address(base58'92rW5ucGkH84YeXLnLs8dMN1P7RAFocmR8zfBqUy4gPM') | |
7 | - | ||
8 | - | let waves5LId = Address(base58'2qUH6Nh6cgC8dxj8fwH3bTJi261PNr5nMQKRbBXBuwmM') | |
9 | - | ||
10 | 4 | let usdnId = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT' | |
11 | 5 | ||
12 | - | let | |
6 | + | let waves2LTokenId = base58'GQ9QNVLGfYSbNZ4dS8NRyvGGELZL4sWPKiVj88CV1rJL' | |
13 | 7 | ||
14 | - | let | |
8 | + | let puzzleLendSC = "3N3DnVffnUyZtz2MRbk5U7giN112WempMNd" | |
15 | 9 | ||
16 | - | let | |
10 | + | let fakePuzzleSwapSC = "3Ms8fqbXM4RhmM6CPTr44hUwHe2CCmVCfVA" | |
17 | 11 | ||
18 | - | ||
12 | + | let usdnAddressStr = "25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT" | |
19 | 13 | ||
20 | - | ||
21 | - | func getBalance (assetIdStr,address) = if ((assetIdStr == "WAVES")) | |
22 | - | then wavesBalance(address).available | |
23 | - | else assetBalance(address, fromBase58String(assetIdStr)) | |
24 | - | ||
25 | - | ||
26 | - | func getCurrentPrice (assetIdStr) = if ((assetIdStr == "WAVES")) | |
27 | - | then 2 | |
28 | - | else throw("Error") | |
29 | - | ||
30 | - | ||
31 | - | func getWavesCurrentPrice () = 2000000 | |
32 | - | ||
33 | - | ||
34 | - | func getWavesNewPrice () = 3000000 | |
35 | - | ||
36 | - | ||
37 | - | func getWaves3LCurrentPrice () = 1200000 | |
38 | - | ||
39 | - | ||
40 | - | func getWaves3LNewPrice () = 2000000 | |
41 | - | ||
14 | + | let waves2LTokenStr = "GQ9QNVLGfYSbNZ4dS8NRyvGGELZL4sWPKiVj88CV1rJL" | |
42 | 15 | ||
43 | 16 | func tryGetInteger (key) = match getInteger(this, key) { | |
44 | 17 | case b: Int => | |
49 | 22 | ||
50 | 23 | ||
51 | 24 | @Callable(i) | |
52 | - | func mintWaves3L_v1 () = if (if ((size(i.payments) != 1)) | |
53 | - | then true | |
54 | - | else (i.payments[0].amount == 0)) | |
55 | - | then throw("1 payment has to be attached") | |
56 | - | else { | |
57 | - | let address = toString(i.caller) | |
58 | - | let stableCoinAmount = i.payments[0].amount | |
59 | - | let convertedWavesAmount = ((stableCoinAmount / getWavesCurrentPrice()) * 100000000) | |
60 | - | let userWavesAmount = getBalance("WAVES", i.caller) | |
61 | - | if ((userWavesAmount > convertedWavesAmount)) | |
62 | - | then { | |
63 | - | let depositResult = invoke(addressFromStringValue("3N3DnVffnUyZtz2MRbk5U7giN112WempMNd"), "supply", nil, [AttachedPayment(unit, convertedWavesAmount)]) | |
64 | - | if ((depositResult == depositResult)) | |
65 | - | then { | |
66 | - | func repeatFunc (accum,next) = { | |
67 | - | let borrowResult = invoke(addressFromStringValue("3N3DnVffnUyZtz2MRbk5U7giN112WempMNd"), "borrow", ["25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT", stableCoinAmount], nil) | |
68 | - | if ((borrowResult == borrowResult)) | |
69 | - | then (accum + next) | |
70 | - | else throw("Strict value is not equal to itself.") | |
71 | - | } | |
72 | - | ||
73 | - | let array = [stableCoinAmount, stableCoinAmount, stableCoinAmount] | |
74 | - | let res = { | |
75 | - | let $l = array | |
76 | - | let $s = size($l) | |
77 | - | let $acc0 = 0 | |
78 | - | func $f0_1 ($a,$i) = if (($i >= $s)) | |
79 | - | then $a | |
80 | - | else repeatFunc($a, $l[$i]) | |
81 | - | ||
82 | - | func $f0_2 ($a,$i) = if (($i >= $s)) | |
83 | - | then $a | |
84 | - | else throw("List size exceeds 3") | |
85 | - | ||
86 | - | $f0_2($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3) | |
87 | - | } | |
88 | - | let returnedTokenAmount = ((res / getWaves3LCurrentPrice()) * 1000000) | |
89 | - | [IntegerEntry((address + "_gave_USDN"), stableCoinAmount), IntegerEntry((address + "_deposited_WAVES"), convertedWavesAmount), IntegerEntry(((address + "_borrowed_") + "25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT"), res), IntegerEntry((address + "_received_WAVES3L"), returnedTokenAmount), ScriptTransfer(i.caller, returnedTokenAmount, base58'92rW5ucGkH84YeXLnLs8dMN1P7RAFocmR8zfBqUy4gPM')] | |
90 | - | } | |
91 | - | else throw("Strict value is not equal to itself.") | |
92 | - | } | |
93 | - | else throw("Not enough WAVES to deposit!") | |
94 | - | } | |
95 | - | ||
96 | - | ||
97 | - | ||
98 | - | @Callable(i) | |
99 | - | func redeemWaves3L_v1 () = if (if ((size(i.payments) != 1)) | |
100 | - | then true | |
101 | - | else (i.payments[0].amount == 0)) | |
102 | - | then throw("1 payment has to be attached") | |
103 | - | else { | |
104 | - | let address = toString(i.caller) | |
105 | - | let tokenAmount = i.payments[0].amount | |
106 | - | let returnedUSDNAmount = (tokenAmount * (getWaves3LNewPrice() / 1000000)) | |
107 | - | [IntegerEntry((address + "_redeemed_WAVES3L"), tokenAmount), IntegerEntry((address + "_received_USDN"), returnedUSDNAmount), ScriptTransfer(i.caller, returnedUSDNAmount, base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT')] | |
108 | - | } | |
109 | - | ||
110 | - | ||
111 | - | ||
112 | - | @Callable(i) | |
113 | - | func mintWaves3L_v2 () = if (if ((size(i.payments) != 1)) | |
114 | - | then true | |
115 | - | else (i.payments[0].amount == 0)) | |
116 | - | then throw("1 payment has to be attached") | |
117 | - | else { | |
118 | - | let address = toString(i.caller) | |
119 | - | let stableCoinAmount = i.payments[0].amount | |
120 | - | let convertedWavesAmount = ((stableCoinAmount / 2000000) * 100000000) | |
121 | - | let userWavesAmount = getBalance("WAVES", i.caller) | |
122 | - | let bedingung = ((3 - 1) * getWavesCurrentPrice()) | |
123 | - | if ((stableCoinAmount >= bedingung)) | |
124 | - | then { | |
125 | - | let depositResult = invoke(addressFromStringValue("3N3DnVffnUyZtz2MRbk5U7giN112WempMNd"), "supply", nil, [AttachedPayment(unit, convertedWavesAmount)]) | |
126 | - | if ((depositResult == depositResult)) | |
127 | - | then { | |
128 | - | func repeatFunc (accum,next) = { | |
129 | - | let borrowResult = invoke(addressFromStringValue("3N3DnVffnUyZtz2MRbk5U7giN112WempMNd"), "borrow", ["25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT", stableCoinAmount], nil) | |
130 | - | if ((borrowResult == borrowResult)) | |
131 | - | then (accum + next) | |
132 | - | else throw("Strict value is not equal to itself.") | |
133 | - | } | |
134 | - | ||
135 | - | let array = [stableCoinAmount, stableCoinAmount, stableCoinAmount] | |
136 | - | let res = { | |
137 | - | let $l = array | |
138 | - | let $s = size($l) | |
139 | - | let $acc0 = 0 | |
140 | - | func $f0_1 ($a,$i) = if (($i >= $s)) | |
141 | - | then $a | |
142 | - | else repeatFunc($a, $l[$i]) | |
143 | - | ||
144 | - | func $f0_2 ($a,$i) = if (($i >= $s)) | |
145 | - | then $a | |
146 | - | else throw("List size exceeds 3") | |
147 | - | ||
148 | - | $f0_2($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3) | |
149 | - | } | |
150 | - | let byWavesKaufen = ((res / getWavesCurrentPrice()) * 100000000) | |
151 | - | [IntegerEntry((address + "_gave_USDN"), stableCoinAmount), IntegerEntry((address + "_deposited_WAVES"), convertedWavesAmount), IntegerEntry(((address + "_borrowed_") + "25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT"), res), IntegerEntry((address + "_received_WAVES3L"), 1000000), ScriptTransfer(i.caller, 1000000, base58'92rW5ucGkH84YeXLnLs8dMN1P7RAFocmR8zfBqUy4gPM')] | |
152 | - | } | |
153 | - | else throw("Strict value is not equal to itself.") | |
154 | - | } | |
155 | - | else throw("Not enough WAVES to deposit!") | |
156 | - | } | |
157 | - | ||
158 | - | ||
159 | - | ||
160 | - | @Callable(i) | |
161 | - | func redeemWaves3L_v2 () = if (if ((size(i.payments) != 1)) | |
162 | - | then true | |
163 | - | else (i.payments[0].amount == 0)) | |
164 | - | then throw("1 payment has to be attached") | |
165 | - | else { | |
166 | - | let address = toString(i.caller) | |
167 | - | let tokenAmount = 6 | |
168 | - | let returnedUSDNAmount = (((tokenAmount * (getWavesNewPrice() / 1000000)) - 4) * 1000000) | |
169 | - | [IntegerEntry((address + "_redeemed_WAVES3L"), tokenAmount), IntegerEntry((address + "_received_USDN"), returnedUSDNAmount), ScriptTransfer(i.caller, returnedUSDNAmount, base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT')] | |
170 | - | } | |
171 | - | ||
172 | - | ||
173 | - | ||
174 | - | @Callable(i) | |
175 | - | func long2 () = if (if ((size(i.payments) != 1)) | |
25 | + | func mintLong2 () = if (if ((size(i.payments) != 1)) | |
176 | 26 | then true | |
177 | 27 | else (i.payments[0].amount == 0)) | |
178 | 28 | then throw("1 payment has to be attached") | |
179 | 29 | else { | |
180 | 30 | let firstAmountIn = i.payments[0].amount | |
181 | - | let firstSwappedAmount = invoke(addressFromStringValue("3Ms8fqbXM4RhmM6CPTr44hUwHe2CCmVCfVA"), "swapToWaves", nil, [AttachedPayment(usdnId, firstAmountIn)]) | |
182 | - | if ((firstSwappedAmount == firstSwappedAmount)) | |
183 | - | then match firstSwappedAmount { | |
184 | - | case r: Int => | |
185 | - | let fistDepositResult = invoke(addressFromStringValue("3N3DnVffnUyZtz2MRbk5U7giN112WempMNd"), "supply", nil, [AttachedPayment(unit, r)]) | |
186 | - | if ((fistDepositResult == fistDepositResult)) | |
31 | + | let callerId = toString(i.caller) | |
32 | + | let firstSwappedWavesAmount = invoke(addressFromStringValue(fakePuzzleSwapSC), "swapToWaves", [toString(i.caller)], [AttachedPayment(usdnId, firstAmountIn)]) | |
33 | + | if ((firstSwappedWavesAmount == firstSwappedWavesAmount)) | |
34 | + | then match firstSwappedWavesAmount { | |
35 | + | case firstSwappedAmountValue: Int => | |
36 | + | let firstDepositedWavesAmount = invoke(addressFromStringValue(puzzleLendSC), "supply", nil, [AttachedPayment(unit, firstSwappedAmountValue)]) | |
37 | + | if ((firstDepositedWavesAmount == firstDepositedWavesAmount)) | |
187 | 38 | then { | |
188 | - | let firstBorrowResult = invoke(addressFromStringValue("3N3DnVffnUyZtz2MRbk5U7giN112WempMNd"), "borrow", ["25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT", ((firstAmountIn * 75) / 100)], nil) | |
189 | - | if ((firstBorrowResult == firstBorrowResult)) | |
190 | - | then { | |
191 | - | func repeatFunc (accum,next) = (accum + next) | |
39 | + | let listPercentage = [70000, 49000, 34300, 24010, 16807] | |
40 | + | func repeatFunc (accum,next) = { | |
41 | + | let borrowedUsdn = invoke(addressFromStringValue(puzzleLendSC), "borrow", [usdnAddressStr, ((firstAmountIn * accum) / 100000)], nil) | |
42 | + | if ((borrowedUsdn == borrowedUsdn)) | |
43 | + | then { | |
44 | + | let swappedAmount = invoke(addressFromStringValue(fakePuzzleSwapSC), "swapToWaves", [toString(i.caller)], [AttachedPayment(usdnId, ((firstSwappedAmountValue * accum) / 100000))]) | |
45 | + | if ((swappedAmount == swappedAmount)) | |
46 | + | then match swappedAmount { | |
47 | + | case swappedAmountValue: Int => | |
48 | + | let depositedWaves = invoke(addressFromStringValue(puzzleLendSC), "supply", nil, [AttachedPayment(unit, swappedAmountValue)]) | |
49 | + | if ((depositedWaves == depositedWaves)) | |
50 | + | then (((firstSwappedAmountValue * accum) / 100000) + ((firstSwappedAmountValue * next) / 100000)) | |
51 | + | else throw("Strict value is not equal to itself.") | |
52 | + | case _ => | |
53 | + | throw("Incorrect invoke result") | |
54 | + | } | |
55 | + | else throw("Strict value is not equal to itself.") | |
56 | + | } | |
57 | + | else throw("Strict value is not equal to itself.") | |
58 | + | } | |
192 | 59 | ||
193 | - | let array = [1, 1, 1, 1] | |
194 | - | let res = { | |
195 | - | let $l = array | |
196 | - | let $s = size($l) | |
197 | - | let $acc0 = 0 | |
198 | - | func $f0_1 ($a,$i) = if (($i >= $s)) | |
199 | - | then $a | |
200 | - | else repeatFunc($a, $l[$i]) | |
60 | + | let res = { | |
61 | + | let $l = listPercentage | |
62 | + | let $s = size($l) | |
63 | + | let $acc0 = 0 | |
64 | + | func $f0_1 ($a,$i) = if (($i >= $s)) | |
65 | + | then $a | |
66 | + | else repeatFunc($a, $l[$i]) | |
201 | 67 | ||
202 | - | ||
203 | - | ||
204 | - | ||
68 | + | func $f0_2 ($a,$i) = if (($i >= $s)) | |
69 | + | then $a | |
70 | + | else throw("List size exceeds 5") | |
205 | 71 | ||
206 | - | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5) | |
207 | - | } | |
208 | - | nil | |
209 | - | } | |
210 | - | else throw("Strict value is not equal to itself.") | |
72 | + | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5) | |
73 | + | } | |
74 | + | [ScriptTransfer(i.caller, res, waves2LTokenId)] | |
211 | 75 | } | |
212 | 76 | else throw("Strict value is not equal to itself.") | |
213 | 77 | case _ => | |
219 | 83 | ||
220 | 84 | ||
221 | 85 | @Callable(i) | |
222 | - | func long2test () = if (if ((size(i.payments) != 1)) | |
223 | - | then true | |
224 | - | else (i.payments[0].amount == 0)) | |
225 | - | then throw("1 payment has to be attached") | |
226 | - | else { | |
227 | - | let firstAmountIn = i.payments[0].amount | |
228 | - | let callerId = toString(i.caller) | |
229 | - | let firstSwappedAmount = invoke(addressFromStringValue("3Ms8fqbXM4RhmM6CPTr44hUwHe2CCmVCfVA"), "swapToWaves", [toString(i.caller)], [AttachedPayment(usdnId, firstAmountIn)]) | |
230 | - | if ((firstSwappedAmount == firstSwappedAmount)) | |
231 | - | then match firstSwappedAmount { | |
232 | - | case r: Int => | |
233 | - | let initList = [r, 2000000, 2000000, 2000000] | |
234 | - | func filterEven (accum,next) = if ((next != 2000000)) | |
235 | - | then (accum :+ next) | |
236 | - | else { | |
237 | - | let swappedAmount = invoke(addressFromStringValue("3Ms8fqbXM4RhmM6CPTr44hUwHe2CCmVCfVA"), "swapToWaves", [toString(i.caller)], [AttachedPayment(usdnId, next)]) | |
238 | - | if ((swappedAmount == swappedAmount)) | |
239 | - | then (accum :+ swappedAmount) | |
240 | - | else throw("Strict value is not equal to itself.") | |
241 | - | } | |
242 | - | ||
243 | - | let result = { | |
244 | - | let $l = initList | |
245 | - | let $s = size($l) | |
246 | - | let $acc0 = nil | |
247 | - | func $f0_1 ($a,$i) = if (($i >= $s)) | |
248 | - | then $a | |
249 | - | else filterEven($a, $l[$i]) | |
250 | - | ||
251 | - | func $f0_2 ($a,$i) = if (($i >= $s)) | |
252 | - | then $a | |
253 | - | else throw("List size exceeds 4") | |
254 | - | ||
255 | - | $f0_2($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4) | |
256 | - | } | |
257 | - | [IntegerEntry("Returned_SwappedAmount", r), IntegerEntry("First_Borrow", ((firstAmountIn * 70) / 100)), StringEntry(toBase58String(i.caller.bytes), ((((((toString(result[0]) + "_") + toString(result[1])) + "_") + toString(result[2])) + "_") + toString(result[3])))] | |
258 | - | case _ => | |
259 | - | throw("Incorrect invoke result") | |
260 | - | } | |
261 | - | else throw("Strict value is not equal to itself.") | |
86 | + | func redeem (wavesAmount) = { | |
87 | + | let userAddress = toString(i.caller) | |
88 | + | let redeemedUSDNAmount = invoke(addressFromStringValue(fakePuzzleSwapSC), "swapToUSDN", [wavesAmount, userAddress], nil) | |
89 | + | if ((redeemedUSDNAmount == redeemedUSDNAmount)) | |
90 | + | then match redeemedUSDNAmount { | |
91 | + | case redeemedAmountValue: Int => | |
92 | + | [IntegerEntry((userAddress + "_redeemed"), redeemedAmountValue)] | |
93 | + | case _ => | |
94 | + | throw("Incorrect invoke result") | |
262 | 95 | } | |
263 | - | ||
264 | - | ||
265 | - | ||
266 | - | @Callable(i) | |
267 | - | func long2test_v1 () = if (if ((size(i.payments) != 1)) | |
268 | - | then true | |
269 | - | else (i.payments[0].amount == 0)) | |
270 | - | then throw("1 payment has to be attached") | |
271 | - | else { | |
272 | - | let firstAmountIn = i.payments[0].amount | |
273 | - | let callerId = toString(i.caller) | |
274 | - | let firstSwappedAmount = invoke(addressFromStringValue("3Ms8fqbXM4RhmM6CPTr44hUwHe2CCmVCfVA"), "swapToWaves", [toString(i.caller)], [AttachedPayment(usdnId, firstAmountIn)]) | |
275 | - | if ((firstSwappedAmount == firstSwappedAmount)) | |
276 | - | then match firstSwappedAmount { | |
277 | - | case r: Int => | |
278 | - | let firstDepositedWaves = invoke(addressFromStringValue("3N3DnVffnUyZtz2MRbk5U7giN112WempMNd"), "supply", nil, [AttachedPayment(unit, r)]) | |
279 | - | if ((firstDepositedWaves == firstDepositedWaves)) | |
280 | - | then { | |
281 | - | let firstBorrowedUSDN = invoke(addressFromStringValue("3N3DnVffnUyZtz2MRbk5U7giN112WempMNd"), "borrow", ["25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT", ((firstAmountIn * 70) / 100)], nil) | |
282 | - | if ((firstBorrowedUSDN == firstBorrowedUSDN)) | |
283 | - | then { | |
284 | - | let secondSwappedAmount = invoke(addressFromStringValue("3Ms8fqbXM4RhmM6CPTr44hUwHe2CCmVCfVA"), "swapToWaves", [toString(i.caller)], [AttachedPayment(usdnId, ((firstAmountIn * 70) / 100))]) | |
285 | - | if ((secondSwappedAmount == secondSwappedAmount)) | |
286 | - | then match secondSwappedAmount { | |
287 | - | case secondSwap: Int => | |
288 | - | let secondDepositedWaves = invoke(addressFromStringValue("3N3DnVffnUyZtz2MRbk5U7giN112WempMNd"), "supply", nil, [AttachedPayment(unit, secondSwap)]) | |
289 | - | if ((secondDepositedWaves == secondDepositedWaves)) | |
290 | - | then { | |
291 | - | let secondBorrowedUSDN = invoke(addressFromStringValue("3N3DnVffnUyZtz2MRbk5U7giN112WempMNd"), "borrow", ["25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT", ((((firstAmountIn * 70) / 100) * 70) / 100)], nil) | |
292 | - | if ((secondBorrowedUSDN == secondBorrowedUSDN)) | |
293 | - | then { | |
294 | - | let thirdSwappedAmount = invoke(addressFromStringValue("3Ms8fqbXM4RhmM6CPTr44hUwHe2CCmVCfVA"), "swapToWaves", [toString(i.caller)], [AttachedPayment(usdnId, ((((firstAmountIn * 70) / 100) * 70) / 100))]) | |
295 | - | if ((thirdSwappedAmount == thirdSwappedAmount)) | |
296 | - | then [IntegerEntry("Returned_Second_SwappedAmount", secondSwap), IntegerEntry("Second_Borrow", ((((firstAmountIn * 70) / 100) * 70) / 100))] | |
297 | - | else throw("Strict value is not equal to itself.") | |
298 | - | } | |
299 | - | else throw("Strict value is not equal to itself.") | |
300 | - | } | |
301 | - | else throw("Strict value is not equal to itself.") | |
302 | - | case _ => | |
303 | - | throw("Incorrect invoke result") | |
304 | - | } | |
305 | - | else throw("Strict value is not equal to itself.") | |
306 | - | } | |
307 | - | else throw("Strict value is not equal to itself.") | |
308 | - | } | |
309 | - | else throw("Strict value is not equal to itself.") | |
310 | - | case _ => | |
311 | - | throw("Incorrect invoke result") | |
312 | - | } | |
313 | - | else throw("Strict value is not equal to itself.") | |
314 | - | } | |
96 | + | else throw("Strict value is not equal to itself.") | |
97 | + | } | |
315 | 98 | ||
316 | 99 | ||
317 | 100 | @Verifier(tx) |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let waves1LId = Address(base58'CygdaJKZfxRrHyYMwkNdz9ZgSD5FpJLtk5s5B4q1DKV6') | |
5 | - | ||
6 | - | let waves3LId = Address(base58'92rW5ucGkH84YeXLnLs8dMN1P7RAFocmR8zfBqUy4gPM') | |
7 | - | ||
8 | - | let waves5LId = Address(base58'2qUH6Nh6cgC8dxj8fwH3bTJi261PNr5nMQKRbBXBuwmM') | |
9 | - | ||
10 | 4 | let usdnId = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT' | |
11 | 5 | ||
12 | - | let | |
6 | + | let waves2LTokenId = base58'GQ9QNVLGfYSbNZ4dS8NRyvGGELZL4sWPKiVj88CV1rJL' | |
13 | 7 | ||
14 | - | let | |
8 | + | let puzzleLendSC = "3N3DnVffnUyZtz2MRbk5U7giN112WempMNd" | |
15 | 9 | ||
16 | - | let | |
10 | + | let fakePuzzleSwapSC = "3Ms8fqbXM4RhmM6CPTr44hUwHe2CCmVCfVA" | |
17 | 11 | ||
18 | - | ||
12 | + | let usdnAddressStr = "25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT" | |
19 | 13 | ||
20 | - | ||
21 | - | func getBalance (assetIdStr,address) = if ((assetIdStr == "WAVES")) | |
22 | - | then wavesBalance(address).available | |
23 | - | else assetBalance(address, fromBase58String(assetIdStr)) | |
24 | - | ||
25 | - | ||
26 | - | func getCurrentPrice (assetIdStr) = if ((assetIdStr == "WAVES")) | |
27 | - | then 2 | |
28 | - | else throw("Error") | |
29 | - | ||
30 | - | ||
31 | - | func getWavesCurrentPrice () = 2000000 | |
32 | - | ||
33 | - | ||
34 | - | func getWavesNewPrice () = 3000000 | |
35 | - | ||
36 | - | ||
37 | - | func getWaves3LCurrentPrice () = 1200000 | |
38 | - | ||
39 | - | ||
40 | - | func getWaves3LNewPrice () = 2000000 | |
41 | - | ||
14 | + | let waves2LTokenStr = "GQ9QNVLGfYSbNZ4dS8NRyvGGELZL4sWPKiVj88CV1rJL" | |
42 | 15 | ||
43 | 16 | func tryGetInteger (key) = match getInteger(this, key) { | |
44 | 17 | case b: Int => | |
45 | 18 | b | |
46 | 19 | case _ => | |
47 | 20 | 0 | |
48 | 21 | } | |
49 | 22 | ||
50 | 23 | ||
51 | 24 | @Callable(i) | |
52 | - | func mintWaves3L_v1 () = if (if ((size(i.payments) != 1)) | |
53 | - | then true | |
54 | - | else (i.payments[0].amount == 0)) | |
55 | - | then throw("1 payment has to be attached") | |
56 | - | else { | |
57 | - | let address = toString(i.caller) | |
58 | - | let stableCoinAmount = i.payments[0].amount | |
59 | - | let convertedWavesAmount = ((stableCoinAmount / getWavesCurrentPrice()) * 100000000) | |
60 | - | let userWavesAmount = getBalance("WAVES", i.caller) | |
61 | - | if ((userWavesAmount > convertedWavesAmount)) | |
62 | - | then { | |
63 | - | let depositResult = invoke(addressFromStringValue("3N3DnVffnUyZtz2MRbk5U7giN112WempMNd"), "supply", nil, [AttachedPayment(unit, convertedWavesAmount)]) | |
64 | - | if ((depositResult == depositResult)) | |
65 | - | then { | |
66 | - | func repeatFunc (accum,next) = { | |
67 | - | let borrowResult = invoke(addressFromStringValue("3N3DnVffnUyZtz2MRbk5U7giN112WempMNd"), "borrow", ["25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT", stableCoinAmount], nil) | |
68 | - | if ((borrowResult == borrowResult)) | |
69 | - | then (accum + next) | |
70 | - | else throw("Strict value is not equal to itself.") | |
71 | - | } | |
72 | - | ||
73 | - | let array = [stableCoinAmount, stableCoinAmount, stableCoinAmount] | |
74 | - | let res = { | |
75 | - | let $l = array | |
76 | - | let $s = size($l) | |
77 | - | let $acc0 = 0 | |
78 | - | func $f0_1 ($a,$i) = if (($i >= $s)) | |
79 | - | then $a | |
80 | - | else repeatFunc($a, $l[$i]) | |
81 | - | ||
82 | - | func $f0_2 ($a,$i) = if (($i >= $s)) | |
83 | - | then $a | |
84 | - | else throw("List size exceeds 3") | |
85 | - | ||
86 | - | $f0_2($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3) | |
87 | - | } | |
88 | - | let returnedTokenAmount = ((res / getWaves3LCurrentPrice()) * 1000000) | |
89 | - | [IntegerEntry((address + "_gave_USDN"), stableCoinAmount), IntegerEntry((address + "_deposited_WAVES"), convertedWavesAmount), IntegerEntry(((address + "_borrowed_") + "25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT"), res), IntegerEntry((address + "_received_WAVES3L"), returnedTokenAmount), ScriptTransfer(i.caller, returnedTokenAmount, base58'92rW5ucGkH84YeXLnLs8dMN1P7RAFocmR8zfBqUy4gPM')] | |
90 | - | } | |
91 | - | else throw("Strict value is not equal to itself.") | |
92 | - | } | |
93 | - | else throw("Not enough WAVES to deposit!") | |
94 | - | } | |
95 | - | ||
96 | - | ||
97 | - | ||
98 | - | @Callable(i) | |
99 | - | func redeemWaves3L_v1 () = if (if ((size(i.payments) != 1)) | |
100 | - | then true | |
101 | - | else (i.payments[0].amount == 0)) | |
102 | - | then throw("1 payment has to be attached") | |
103 | - | else { | |
104 | - | let address = toString(i.caller) | |
105 | - | let tokenAmount = i.payments[0].amount | |
106 | - | let returnedUSDNAmount = (tokenAmount * (getWaves3LNewPrice() / 1000000)) | |
107 | - | [IntegerEntry((address + "_redeemed_WAVES3L"), tokenAmount), IntegerEntry((address + "_received_USDN"), returnedUSDNAmount), ScriptTransfer(i.caller, returnedUSDNAmount, base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT')] | |
108 | - | } | |
109 | - | ||
110 | - | ||
111 | - | ||
112 | - | @Callable(i) | |
113 | - | func mintWaves3L_v2 () = if (if ((size(i.payments) != 1)) | |
114 | - | then true | |
115 | - | else (i.payments[0].amount == 0)) | |
116 | - | then throw("1 payment has to be attached") | |
117 | - | else { | |
118 | - | let address = toString(i.caller) | |
119 | - | let stableCoinAmount = i.payments[0].amount | |
120 | - | let convertedWavesAmount = ((stableCoinAmount / 2000000) * 100000000) | |
121 | - | let userWavesAmount = getBalance("WAVES", i.caller) | |
122 | - | let bedingung = ((3 - 1) * getWavesCurrentPrice()) | |
123 | - | if ((stableCoinAmount >= bedingung)) | |
124 | - | then { | |
125 | - | let depositResult = invoke(addressFromStringValue("3N3DnVffnUyZtz2MRbk5U7giN112WempMNd"), "supply", nil, [AttachedPayment(unit, convertedWavesAmount)]) | |
126 | - | if ((depositResult == depositResult)) | |
127 | - | then { | |
128 | - | func repeatFunc (accum,next) = { | |
129 | - | let borrowResult = invoke(addressFromStringValue("3N3DnVffnUyZtz2MRbk5U7giN112WempMNd"), "borrow", ["25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT", stableCoinAmount], nil) | |
130 | - | if ((borrowResult == borrowResult)) | |
131 | - | then (accum + next) | |
132 | - | else throw("Strict value is not equal to itself.") | |
133 | - | } | |
134 | - | ||
135 | - | let array = [stableCoinAmount, stableCoinAmount, stableCoinAmount] | |
136 | - | let res = { | |
137 | - | let $l = array | |
138 | - | let $s = size($l) | |
139 | - | let $acc0 = 0 | |
140 | - | func $f0_1 ($a,$i) = if (($i >= $s)) | |
141 | - | then $a | |
142 | - | else repeatFunc($a, $l[$i]) | |
143 | - | ||
144 | - | func $f0_2 ($a,$i) = if (($i >= $s)) | |
145 | - | then $a | |
146 | - | else throw("List size exceeds 3") | |
147 | - | ||
148 | - | $f0_2($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3) | |
149 | - | } | |
150 | - | let byWavesKaufen = ((res / getWavesCurrentPrice()) * 100000000) | |
151 | - | [IntegerEntry((address + "_gave_USDN"), stableCoinAmount), IntegerEntry((address + "_deposited_WAVES"), convertedWavesAmount), IntegerEntry(((address + "_borrowed_") + "25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT"), res), IntegerEntry((address + "_received_WAVES3L"), 1000000), ScriptTransfer(i.caller, 1000000, base58'92rW5ucGkH84YeXLnLs8dMN1P7RAFocmR8zfBqUy4gPM')] | |
152 | - | } | |
153 | - | else throw("Strict value is not equal to itself.") | |
154 | - | } | |
155 | - | else throw("Not enough WAVES to deposit!") | |
156 | - | } | |
157 | - | ||
158 | - | ||
159 | - | ||
160 | - | @Callable(i) | |
161 | - | func redeemWaves3L_v2 () = if (if ((size(i.payments) != 1)) | |
162 | - | then true | |
163 | - | else (i.payments[0].amount == 0)) | |
164 | - | then throw("1 payment has to be attached") | |
165 | - | else { | |
166 | - | let address = toString(i.caller) | |
167 | - | let tokenAmount = 6 | |
168 | - | let returnedUSDNAmount = (((tokenAmount * (getWavesNewPrice() / 1000000)) - 4) * 1000000) | |
169 | - | [IntegerEntry((address + "_redeemed_WAVES3L"), tokenAmount), IntegerEntry((address + "_received_USDN"), returnedUSDNAmount), ScriptTransfer(i.caller, returnedUSDNAmount, base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT')] | |
170 | - | } | |
171 | - | ||
172 | - | ||
173 | - | ||
174 | - | @Callable(i) | |
175 | - | func long2 () = if (if ((size(i.payments) != 1)) | |
25 | + | func mintLong2 () = if (if ((size(i.payments) != 1)) | |
176 | 26 | then true | |
177 | 27 | else (i.payments[0].amount == 0)) | |
178 | 28 | then throw("1 payment has to be attached") | |
179 | 29 | else { | |
180 | 30 | let firstAmountIn = i.payments[0].amount | |
181 | - | let firstSwappedAmount = invoke(addressFromStringValue("3Ms8fqbXM4RhmM6CPTr44hUwHe2CCmVCfVA"), "swapToWaves", nil, [AttachedPayment(usdnId, firstAmountIn)]) | |
182 | - | if ((firstSwappedAmount == firstSwappedAmount)) | |
183 | - | then match firstSwappedAmount { | |
184 | - | case r: Int => | |
185 | - | let fistDepositResult = invoke(addressFromStringValue("3N3DnVffnUyZtz2MRbk5U7giN112WempMNd"), "supply", nil, [AttachedPayment(unit, r)]) | |
186 | - | if ((fistDepositResult == fistDepositResult)) | |
31 | + | let callerId = toString(i.caller) | |
32 | + | let firstSwappedWavesAmount = invoke(addressFromStringValue(fakePuzzleSwapSC), "swapToWaves", [toString(i.caller)], [AttachedPayment(usdnId, firstAmountIn)]) | |
33 | + | if ((firstSwappedWavesAmount == firstSwappedWavesAmount)) | |
34 | + | then match firstSwappedWavesAmount { | |
35 | + | case firstSwappedAmountValue: Int => | |
36 | + | let firstDepositedWavesAmount = invoke(addressFromStringValue(puzzleLendSC), "supply", nil, [AttachedPayment(unit, firstSwappedAmountValue)]) | |
37 | + | if ((firstDepositedWavesAmount == firstDepositedWavesAmount)) | |
187 | 38 | then { | |
188 | - | let firstBorrowResult = invoke(addressFromStringValue("3N3DnVffnUyZtz2MRbk5U7giN112WempMNd"), "borrow", ["25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT", ((firstAmountIn * 75) / 100)], nil) | |
189 | - | if ((firstBorrowResult == firstBorrowResult)) | |
190 | - | then { | |
191 | - | func repeatFunc (accum,next) = (accum + next) | |
39 | + | let listPercentage = [70000, 49000, 34300, 24010, 16807] | |
40 | + | func repeatFunc (accum,next) = { | |
41 | + | let borrowedUsdn = invoke(addressFromStringValue(puzzleLendSC), "borrow", [usdnAddressStr, ((firstAmountIn * accum) / 100000)], nil) | |
42 | + | if ((borrowedUsdn == borrowedUsdn)) | |
43 | + | then { | |
44 | + | let swappedAmount = invoke(addressFromStringValue(fakePuzzleSwapSC), "swapToWaves", [toString(i.caller)], [AttachedPayment(usdnId, ((firstSwappedAmountValue * accum) / 100000))]) | |
45 | + | if ((swappedAmount == swappedAmount)) | |
46 | + | then match swappedAmount { | |
47 | + | case swappedAmountValue: Int => | |
48 | + | let depositedWaves = invoke(addressFromStringValue(puzzleLendSC), "supply", nil, [AttachedPayment(unit, swappedAmountValue)]) | |
49 | + | if ((depositedWaves == depositedWaves)) | |
50 | + | then (((firstSwappedAmountValue * accum) / 100000) + ((firstSwappedAmountValue * next) / 100000)) | |
51 | + | else throw("Strict value is not equal to itself.") | |
52 | + | case _ => | |
53 | + | throw("Incorrect invoke result") | |
54 | + | } | |
55 | + | else throw("Strict value is not equal to itself.") | |
56 | + | } | |
57 | + | else throw("Strict value is not equal to itself.") | |
58 | + | } | |
192 | 59 | ||
193 | - | let array = [1, 1, 1, 1] | |
194 | - | let res = { | |
195 | - | let $l = array | |
196 | - | let $s = size($l) | |
197 | - | let $acc0 = 0 | |
198 | - | func $f0_1 ($a,$i) = if (($i >= $s)) | |
199 | - | then $a | |
200 | - | else repeatFunc($a, $l[$i]) | |
60 | + | let res = { | |
61 | + | let $l = listPercentage | |
62 | + | let $s = size($l) | |
63 | + | let $acc0 = 0 | |
64 | + | func $f0_1 ($a,$i) = if (($i >= $s)) | |
65 | + | then $a | |
66 | + | else repeatFunc($a, $l[$i]) | |
201 | 67 | ||
202 | - | ||
203 | - | ||
204 | - | ||
68 | + | func $f0_2 ($a,$i) = if (($i >= $s)) | |
69 | + | then $a | |
70 | + | else throw("List size exceeds 5") | |
205 | 71 | ||
206 | - | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5) | |
207 | - | } | |
208 | - | nil | |
209 | - | } | |
210 | - | else throw("Strict value is not equal to itself.") | |
72 | + | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5) | |
73 | + | } | |
74 | + | [ScriptTransfer(i.caller, res, waves2LTokenId)] | |
211 | 75 | } | |
212 | 76 | else throw("Strict value is not equal to itself.") | |
213 | 77 | case _ => | |
214 | 78 | throw("Incorrect invoke result") | |
215 | 79 | } | |
216 | 80 | else throw("Strict value is not equal to itself.") | |
217 | 81 | } | |
218 | 82 | ||
219 | 83 | ||
220 | 84 | ||
221 | 85 | @Callable(i) | |
222 | - | func long2test () = if (if ((size(i.payments) != 1)) | |
223 | - | then true | |
224 | - | else (i.payments[0].amount == 0)) | |
225 | - | then throw("1 payment has to be attached") | |
226 | - | else { | |
227 | - | let firstAmountIn = i.payments[0].amount | |
228 | - | let callerId = toString(i.caller) | |
229 | - | let firstSwappedAmount = invoke(addressFromStringValue("3Ms8fqbXM4RhmM6CPTr44hUwHe2CCmVCfVA"), "swapToWaves", [toString(i.caller)], [AttachedPayment(usdnId, firstAmountIn)]) | |
230 | - | if ((firstSwappedAmount == firstSwappedAmount)) | |
231 | - | then match firstSwappedAmount { | |
232 | - | case r: Int => | |
233 | - | let initList = [r, 2000000, 2000000, 2000000] | |
234 | - | func filterEven (accum,next) = if ((next != 2000000)) | |
235 | - | then (accum :+ next) | |
236 | - | else { | |
237 | - | let swappedAmount = invoke(addressFromStringValue("3Ms8fqbXM4RhmM6CPTr44hUwHe2CCmVCfVA"), "swapToWaves", [toString(i.caller)], [AttachedPayment(usdnId, next)]) | |
238 | - | if ((swappedAmount == swappedAmount)) | |
239 | - | then (accum :+ swappedAmount) | |
240 | - | else throw("Strict value is not equal to itself.") | |
241 | - | } | |
242 | - | ||
243 | - | let result = { | |
244 | - | let $l = initList | |
245 | - | let $s = size($l) | |
246 | - | let $acc0 = nil | |
247 | - | func $f0_1 ($a,$i) = if (($i >= $s)) | |
248 | - | then $a | |
249 | - | else filterEven($a, $l[$i]) | |
250 | - | ||
251 | - | func $f0_2 ($a,$i) = if (($i >= $s)) | |
252 | - | then $a | |
253 | - | else throw("List size exceeds 4") | |
254 | - | ||
255 | - | $f0_2($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4) | |
256 | - | } | |
257 | - | [IntegerEntry("Returned_SwappedAmount", r), IntegerEntry("First_Borrow", ((firstAmountIn * 70) / 100)), StringEntry(toBase58String(i.caller.bytes), ((((((toString(result[0]) + "_") + toString(result[1])) + "_") + toString(result[2])) + "_") + toString(result[3])))] | |
258 | - | case _ => | |
259 | - | throw("Incorrect invoke result") | |
260 | - | } | |
261 | - | else throw("Strict value is not equal to itself.") | |
86 | + | func redeem (wavesAmount) = { | |
87 | + | let userAddress = toString(i.caller) | |
88 | + | let redeemedUSDNAmount = invoke(addressFromStringValue(fakePuzzleSwapSC), "swapToUSDN", [wavesAmount, userAddress], nil) | |
89 | + | if ((redeemedUSDNAmount == redeemedUSDNAmount)) | |
90 | + | then match redeemedUSDNAmount { | |
91 | + | case redeemedAmountValue: Int => | |
92 | + | [IntegerEntry((userAddress + "_redeemed"), redeemedAmountValue)] | |
93 | + | case _ => | |
94 | + | throw("Incorrect invoke result") | |
262 | 95 | } | |
263 | - | ||
264 | - | ||
265 | - | ||
266 | - | @Callable(i) | |
267 | - | func long2test_v1 () = if (if ((size(i.payments) != 1)) | |
268 | - | then true | |
269 | - | else (i.payments[0].amount == 0)) | |
270 | - | then throw("1 payment has to be attached") | |
271 | - | else { | |
272 | - | let firstAmountIn = i.payments[0].amount | |
273 | - | let callerId = toString(i.caller) | |
274 | - | let firstSwappedAmount = invoke(addressFromStringValue("3Ms8fqbXM4RhmM6CPTr44hUwHe2CCmVCfVA"), "swapToWaves", [toString(i.caller)], [AttachedPayment(usdnId, firstAmountIn)]) | |
275 | - | if ((firstSwappedAmount == firstSwappedAmount)) | |
276 | - | then match firstSwappedAmount { | |
277 | - | case r: Int => | |
278 | - | let firstDepositedWaves = invoke(addressFromStringValue("3N3DnVffnUyZtz2MRbk5U7giN112WempMNd"), "supply", nil, [AttachedPayment(unit, r)]) | |
279 | - | if ((firstDepositedWaves == firstDepositedWaves)) | |
280 | - | then { | |
281 | - | let firstBorrowedUSDN = invoke(addressFromStringValue("3N3DnVffnUyZtz2MRbk5U7giN112WempMNd"), "borrow", ["25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT", ((firstAmountIn * 70) / 100)], nil) | |
282 | - | if ((firstBorrowedUSDN == firstBorrowedUSDN)) | |
283 | - | then { | |
284 | - | let secondSwappedAmount = invoke(addressFromStringValue("3Ms8fqbXM4RhmM6CPTr44hUwHe2CCmVCfVA"), "swapToWaves", [toString(i.caller)], [AttachedPayment(usdnId, ((firstAmountIn * 70) / 100))]) | |
285 | - | if ((secondSwappedAmount == secondSwappedAmount)) | |
286 | - | then match secondSwappedAmount { | |
287 | - | case secondSwap: Int => | |
288 | - | let secondDepositedWaves = invoke(addressFromStringValue("3N3DnVffnUyZtz2MRbk5U7giN112WempMNd"), "supply", nil, [AttachedPayment(unit, secondSwap)]) | |
289 | - | if ((secondDepositedWaves == secondDepositedWaves)) | |
290 | - | then { | |
291 | - | let secondBorrowedUSDN = invoke(addressFromStringValue("3N3DnVffnUyZtz2MRbk5U7giN112WempMNd"), "borrow", ["25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT", ((((firstAmountIn * 70) / 100) * 70) / 100)], nil) | |
292 | - | if ((secondBorrowedUSDN == secondBorrowedUSDN)) | |
293 | - | then { | |
294 | - | let thirdSwappedAmount = invoke(addressFromStringValue("3Ms8fqbXM4RhmM6CPTr44hUwHe2CCmVCfVA"), "swapToWaves", [toString(i.caller)], [AttachedPayment(usdnId, ((((firstAmountIn * 70) / 100) * 70) / 100))]) | |
295 | - | if ((thirdSwappedAmount == thirdSwappedAmount)) | |
296 | - | then [IntegerEntry("Returned_Second_SwappedAmount", secondSwap), IntegerEntry("Second_Borrow", ((((firstAmountIn * 70) / 100) * 70) / 100))] | |
297 | - | else throw("Strict value is not equal to itself.") | |
298 | - | } | |
299 | - | else throw("Strict value is not equal to itself.") | |
300 | - | } | |
301 | - | else throw("Strict value is not equal to itself.") | |
302 | - | case _ => | |
303 | - | throw("Incorrect invoke result") | |
304 | - | } | |
305 | - | else throw("Strict value is not equal to itself.") | |
306 | - | } | |
307 | - | else throw("Strict value is not equal to itself.") | |
308 | - | } | |
309 | - | else throw("Strict value is not equal to itself.") | |
310 | - | case _ => | |
311 | - | throw("Incorrect invoke result") | |
312 | - | } | |
313 | - | else throw("Strict value is not equal to itself.") | |
314 | - | } | |
96 | + | else throw("Strict value is not equal to itself.") | |
97 | + | } | |
315 | 98 | ||
316 | 99 | ||
317 | 100 | @Verifier(tx) | |
318 | 101 | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
319 | 102 |
github/deemru/w8io/169f3d6 49.95 ms ◑![]()