tx · 8xQzJTZudgLJk66B2PShisYssdn8SGgFx2Wg7ZNTkkZu

3N4wBgYtWgJW2LTRef2ekWQTrEXCRfXmGLh:  -0.01000000 Waves

2023.10.16 13:15 [2801033] smart account 3N4wBgYtWgJW2LTRef2ekWQTrEXCRfXmGLh > SELF 0.00000000 Waves

{ "type": 13, "id": "8xQzJTZudgLJk66B2PShisYssdn8SGgFx2Wg7ZNTkkZu", "fee": 1000000, "feeAssetId": null, "timestamp": 1697451364386, "version": 2, "chainId": 84, "sender": "3N4wBgYtWgJW2LTRef2ekWQTrEXCRfXmGLh", "senderPublicKey": "7hRYZBcZCcRPgMoWSZsJ7jspEBuJt9Tc58d12xK3DWMp", "proofs": [ "33eR4o6CQUDJPJMbhG6ZsK4V7jERqusnDFWTCzfWLV5z2jxH5Geo8AKwn1FEandLPSy1KNJ6hai7e9dcUBtF3ooQ" ], "script": "base64:BgIWCAISBgoEGBERCBIAEgMKAQESAwoBAQYAEWxwX2FkZHJlc3NfcHVia2V5ASDI7Zjahu5VNVhgxzyW6CpbYvUiMMUf5OyBUQlo584acwAgbWFzc3RyYW5zZmVyX3doaXRlbGlzdGVkX2FkZHJlc3MJAKcIAQURbHBfYWRkcmVzc19wdWJrZXkAFGxwX2RlcG9zaXRvcl9hZGRyZXNzASACswHowiMqNbuuC0Vd0yxVVNtwKBLhy9jYvB2EmzVmeQAUbHBfd2hpdGVsaXN0X2FkZHJlc3MJAKcIAQUUbHBfZGVwb3NpdG9yX2FkZHJlc3MAC25ldHdvcmtfZmVlAKDCHgEddmFsaWRhdGVNYXNzVHJhbnNmZXJBcmd1bWVudHMECnJlY2lwaWVudHMHYW1vdW50cwpwYXltZW50SWR4CHBheW1lbnRzBA5yZWNpcGllbnRzU2l6ZQkAkAMBBQpyZWNpcGllbnRzBAthbW91bnRzU2l6ZQkAkAMBBQdhbW91bnRzBA5wYXltZW50SWR4U2l6ZQkAkAMBBQpwYXltZW50SWR4BAxwYXltZW50c1NpemUJAJADAQUIcGF5bWVudHMECW1pbkFtb3VudAkAlwMBBQdhbW91bnRzBA1taW5QYXltZW50SWR4CQCXAwEFCnBheW1lbnRJZHgEDW1heFBheW1lbnRJZHgJAJYDAQUKcGF5bWVudElkeAoBEXBheW1lbnRzVmFsaWRhdG9yAgxwYXltZW50QWNjdW0LbmV4dFBheW1lbnQECyR0MDEzNTYxMzkzBQxwYXltZW50QWNjdW0EDXZhbGlkUGF5bWVudHMIBQskdDAxMzU2MTM5MwJfMQQBaggFCyR0MDEzNTYxMzkzAl8yAwkAZwIFAWoFDHBheW1lbnRzU2l6ZQkAlAoCBQ12YWxpZFBheW1lbnRzCQBkAgUBagABCgERYW1vdW50c0FnZ3JlZ2F0b3ICC2Ftb3VudEFjY3VtCm5leHRBbW91bnQECyR0MDE1NDgxNTc3BQthbW91bnRBY2N1bQQGYW1vdW50CAULJHQwMTU0ODE1NzcCXzEEAWsIBQskdDAxNTQ4MTU3NwJfMgMDCQBnAgUBawUOcmVjaXBpZW50c1NpemUGCQECIT0CCQCRAwIFCnBheW1lbnRJZHgFAWsFAWoJAJQKAgUGYW1vdW50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AAACBQ5yZWNpcGllbnRzU2l6ZQULYW1vdW50c1NpemUJAAACBQ5yZWNpcGllbnRzU2l6ZQUOcGF5bWVudElkeFNpemUHCQBmAgUOcmVjaXBpZW50c1NpemUAAAcJAGcCAGQFDnJlY2lwaWVudHNTaXplBwkAZgIFDHBheW1lbnRzU2l6ZQAABwkAZgIFCW1pbkFtb3VudAAABwkAAAIFDW1pblBheW1lbnRJZHgAAAcJAAACBQ1tYXhQYXltZW50SWR4CQBlAgUMcGF5bWVudHNTaXplAAEHCQAAAggFEnBheW1lbnRzVmFsaWRhdGlvbgJfMQUMcGF5bWVudHNTaXplBwQBaQEMbWFzc1RyYW5zZmVyBApyZWNpcGllbnRzB2Ftb3VudHMKcGF5bWVudElkeAphdHRhY2htZW50BANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQFpBmNhbGxlcgUgbWFzc3RyYW5zZmVyX3doaXRlbGlzdGVkX2FkZHJlc3MJAAIBCQCsAgIJAKwCAgISTm90IGFuIEFkbWluIG9ubHkgCQClCAEFIG1hc3N0cmFuc2Zlcl93aGl0ZWxpc3RlZF9hZGRyZXNzAg0gY2FuIHNpZ24gaXQuAwkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAkAAgECK09ubHkgV2F2ZXMgaXMgYWxsb3dlZCB0byBBdHRhY2ggYXMgcGF5bWVudC4DCQEBIQEJAR12YWxpZGF0ZU1hc3NUcmFuc2ZlckFyZ3VtZW50cwQFCnJlY2lwaWVudHMFB2Ftb3VudHMFCnBheW1lbnRJZHgIBQFpCHBheW1lbnRzCQACAQIRSW52YWxpZCBhcmd1bWVudHMEDnJlY2lwaWVudHNTaXplCQCQAwEFCnJlY2lwaWVudHMKARhzY3JpcHRUcmFuc2ZlcnNHZW5lcmF0b3ICBWFjY3VtBG5leHQECyR0MDI5NDYyOTc4BQVhY2N1bQQPc2NyaXB0VHJhbnNmZXJzCAULJHQwMjk0NjI5NzgCXzEEAWoIBQskdDAyOTQ2Mjk3OAJfMgMJAGcCBQFqBQ5yZWNpcGllbnRzU2l6ZQkAlAoCBQ9zY3JpcHRUcmFuc2ZlcnMJAGQCBQFqAAEJAJQKAgkAzQgCBQ9zY3JpcHRUcmFu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RnVuZHNBZGRlZFRvUG9vbGJ5Q29tcGFueQgFA3BtdAZhbW91bnQEFVByZXZpb3VzUG9vbExpcXVpZGl0eQQHJG1hdGNoMAkAmggCBQR0aGlzAhRUb3RhbF9Qb29sX0xpcXVpZGl0eQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQSVG90YWxQb29sTGlxdWlkaXR5CQBkAgUVUHJldmlvdXNQb29sTGlxdWlkaXR5CAUDcG10BmFtb3VudAQYUHJldmlvdXNMUERlcG9zaXRDb3VudGVyBAckbWF0Y2gwCQCaCAIFBHRoaXMCEkxQX0RlcG9zaXRfQ291bnRlcgMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQVVG90YWxMUERlcG9zaXRDb3VudGVyCQBkAgUYUHJldmlvdXNMUERlcG9zaXRDb3VudGVyAAEDCQECIT0CCAUBaQZjYWxsZXIFFGxwX3doaXRlbGlzdF9hZGRyZXNzCQACAQkArAICCQCsAgICJVRoaXMgQWRkcmVzcyBpcyBub3QgQXV0aG9yaXplZC4gT25seSAJAKUIAQUUbHBfd2hpdGVsaXN0X2FkZHJlc3MCIiBpcyBBdXRob3JpemVkIEFkZHJlc3MgdG8gU2lnbiBpdC4DCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkCQACAQIuT25seSBXQVZFUyBpcyBhbGxvd2VkIHRvIGRlcG9zaXQgYXQgdGhlIG1vbWVudAkAzAgCCQEMSW50ZWdlckVudHJ5AgIUVG90YWxfUG9vbF9MaXF1aWRpdHkFElRvdGFsUG9vbExpcXVpZGl0eQkAzAgCCQEMSW50ZWdlckVudHJ5AgISTFBfRGVwb3NpdF9Db3VudGVyBRVUb3RhbExQRGVwb3NpdENvdW50ZXIJAMwIAgkBDEludGVnZXJFbnRyeQICDlRvdGFsX0xQX0FkZGVkBR5Ub3RhbEZ1bmRzQWRkZWRUb1Bvb2xieUNvbXBhbnkFA25pbAFpAQ9VcGRhdGVMUEJhbGFuY2UBFlBhaWRNYXNzVHJhbnNmZXJBbW91bnQEFHJlYWRfYWNjb3VudF9iYWxhbmNlCAkA7wcBBQR0aGlzB3JlZ3VsYXIEGXJlYWRfdG90YWxfcG9vbF9saXF1aWRpdHkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzAhRUb3RhbF9Qb29sX0xpcXVpZGl0eQIkTm8gSW5pdGlhbCBQb29sIExpcXVpZGl0eSB3YXMgRm91bmQuBBVyZWNlaXZlZF9vcmRlcl9hbW91bnQJAGUCCQBlAgUUcmVhZF9hY2NvdW50X2JhbGFuY2UFGXJlYWRfdG90YWxfcG9vbF9saXF1aWRpdHkFC25ldHdvcmtfZmVlBBR1cGRhdGVkX3Bvb2xfYmFsYW5jZQkAZAIJAGUCBRlyZWFkX3RvdGFsX3Bvb2xfbGlxdWlkaXR5BRZQYWlkTWFzc1RyYW5zZmVyQW1vdW50BRVyZWNlaXZlZF9vcmRlcl9hbW91bnQEG1ByZXZpb3VzTWFzc1RyYW5zZmVyQ291bnRlcgQHJG1hdGNoMAkAmggCBQR0aGlzAhVNYXNzX1RyYW5zZmVyX0NvdW50ZXIDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEGFRvdGFsTWFzc1RyYW5zZmVyQ291bnRlcgkAZAIFG1ByZXZpb3VzTWFzc1RyYW5zZmVyQ291bnRlcgABBBhQcmV2aW91c01hc3NUcmFuc2ZlclNlbmQEByRtYXRjaDAJAJoIAgUEdGhpcwIYVG90YWxfTWFzc19UcmFuc2Zlcl9TZW5kAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBVUb3RhbE1hc3NUcmFuc2ZlclNlbmQJAGQCBRhQcmV2aW91c01hc3NUcmFuc2ZlclNlbmQFFlBhaWRNYXNzVHJhbnNmZXJBbW91bnQDCQECIT0CCAUBaQZjYWxsZXIFIG1hc3N0cmFuc2Zlcl93aGl0ZWxpc3RlZF9hZGRyZXNzCQACAQkArAICCQCsAgICJVRoaXMgQWRkcmVzcyBpcyBub3QgQXV0aG9yaXplZC4gT25seSAJAKUIAQUgbWFzc3RyYW5zZmVyX3doaXRlbGlzdGVkX2FkZHJlc3MCIiBpcyBBdXRob3JpemVkIEFkZHJlc3MgdG8gU2lnbiBpdC4DCQBmAgUWUGFpZE1hc3NUcmFuc2ZlckFtb3VudAUZcmVhZF90b3RhbF9wb29sX2xpcXVpZGl0eQkAAgECQ1BsYWNlZCBNYXNzIFRyYW5zZmVyIEFtb3VudCBTaXplIGlzIG1vcmUgdGhhbiBUb3RhbCBQb29sIExpcXVpZGl0eS4JAMwIAgkBDEludGVnZXJFbnRyeQICFFRvdGFsX1Bvb2xfTGlxdWlkaXR5BRR1cGRhdGVkX3Bvb2xfYmFsYW5jZQkAzAgCCQEMSW50ZWdlckVudHJ5AgIVTWFzc19UcmFuc2Zlcl9Db3VudGVyBRhUb3RhbE1hc3NUcmFuc2ZlckNvdW50ZXIJAMwIAgkBDEludGVnZXJFbnRyeQICGFRvdGFsX01hc3NfVHJhbnNmZXJfU2VuZAUVVG90YWxNYXNzVHJhbnNmZXJTZW5kCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKQDAQUYVG90YWxNYXNzVHJhbnNmZXJDb3VudGVyAhNfTWFzc19UcmFuc2Zlcl9TZW5kBRZQYWlkTWFzc1RyYW5zZmVyQW1vdW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFIG1hc3N0cmFuc2Zlcl93aGl0ZWxpc3RlZF9hZGRyZXNzBRZQYWlkTWFzc1RyYW5zZmVyQW1vdW50BQR1bml0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFIG1hc3N0cmFuc2Zlcl93aGl0ZWxpc3RlZF9hZGRyZXNzBQtuZXR3b3JrX2ZlZQUEdW5pdAUDbmlsAWkBEVdpdGhkcmF3TFBCYWxhbmNlAQ5XaXRoZHJhd0Ftb3VudAQZcmVhZF90b3RhbF9wb29sX2xpcXVpZGl0eQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMCFFRvdGFsX1Bvb2xfTGlxdWlkaXR5AiRObyBJbml0aWFsIFBvb2wgTGlxdWlkaXR5IHdhcyBGb3VuZC4EFHVwZGF0ZWRfcG9vbF9iYWxhbmNlCQBlAgUZcmVhZF90b3RhbF9wb29sX2xpcXVpZGl0eQUOV2l0aGRyYXdBbW91bnQEGVByZXZpb3VzTFBXaXRoZHJhd0NvdW50ZXIEByRtYXRjaDAJAJoIAgUEdGhpcwITTFBfV2l0aGRyYXdfQ291bnRlcgMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQWVG90YWxMUFdpdGhkcmF3Q291bnRlcgkAZAIFGVByZXZpb3VzTFBXaXRoZHJhd0NvdW50ZXIAAQQSUHJldmlvdXNMUFdpdGhkcmF3BAckbWF0Y2gwCQCaCAIFBHRoaXMCEVRvdGFsX0xQX1dpdGhkcmF3AwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABA9Ub3RhbExQV2l0aGRyYXcJAGQCBRJQcmV2aW91c0xQV2l0aGRyYXcFDldpdGhkcmF3QW1vdW50AwkBAiE9AggFAWkGY2FsbGVyBRRscF93aGl0ZWxpc3RfYWRkcmVzcwkAAgEJAKwCAgkArAICAiVUaGlzIEFkZHJlc3MgaXMgbm90IEF1dGhvcml6ZWQuIE9ubHkgCQClCAEFFGxwX3doaXRlbGlzdF9hZGRyZXNzAiIgaXMgQXV0aG9yaXplZCBBZGRyZXNzIHRvIFNpZ24gaXQuAwkAZgIFDldpdGhkcmF3QW1vdW50BRlyZWFkX3RvdGFsX3Bvb2xfbGlxdWlkaXR5CQACAQI+UGxhY2VkIFdpdGhkcmF3IEFtb3VudCBTaXplIGlzIG1vcmUgdGhhbiBUb3RhbCBQb29sIExpcXVpZGl0eS4JAMwIAgkBDEludGVnZXJFbnRyeQICFFRvdGFsX1Bvb2xfTGlxdWlkaXR5BRR1cGRhdGVkX3Bvb2xfYmFsYW5jZQkAzAgCCQEMSW50ZWdlckVudHJ5AgITTFBfV2l0aGRyYXdfQ291bnRlcgUWVG90YWxMUFdpdGhkcmF3Q291bnRlcgkAzAgCCQEMSW50ZWdlckVudHJ5AgIRVG90YWxfTFBfV2l0aGRyYXcFD1RvdGFsTFBXaXRoZHJhdwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCkAwEFFlRvdGFsTFBXaXRoZHJhd0NvdW50ZXICDF9MUF9XaXRoZHJhdwUOV2l0aGRyYXdBbW91bnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUUbHBfd2hpdGVsaXN0X2FkZHJlc3MFDldpdGhkcmF3QW1vdW50BQR1bml0BQNuaWwBAnR4AQZ2ZXJpZnkABAckbWF0Y2gwBQJ0eAMDCQABAgUHJG1hdGNoMAIFT3JkZXIGAwkAAQIFByRtYXRjaDACE0V4Y2hhbmdlVHJhbnNhY3Rpb24GCQABAgUHJG1hdGNoMAITVHJhbnNmZXJUcmFuc2FjdGlvbgQBdAUHJG1hdGNoMAcJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXm+S1Ho", "height": 2801033, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: 5ifMDAaSpBkaEB5z2xrDyqzA2DZHH8G1Fgk4znhHsoo9 Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 6 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let lp_address_pubkey = base58'EXLfxKmqhQPiProBaoPatTentUSZX5Dd8A8bYDcmfNwt'
5+
6+let masstransfer_whitelisted_address = addressFromPublicKey(lp_address_pubkey)
7+
8+let lp_depositor_address = base58'BY8Zzs9J1T1DuiWMW4QKgbVAC99HYARVSxV4gd8fN7A'
9+
10+let lp_whitelist_address = addressFromPublicKey(lp_depositor_address)
11+
12+let network_fee = 500000
13+
14+func validateMassTransferArguments (recipients,amounts,paymentIdx,payments) = {
15+ let recipientsSize = size(recipients)
16+ let amountsSize = size(amounts)
17+ let paymentIdxSize = size(paymentIdx)
18+ let paymentsSize = size(payments)
19+ let minAmount = min(amounts)
20+ let minPaymentIdx = min(paymentIdx)
21+ let maxPaymentIdx = max(paymentIdx)
22+ func paymentsValidator (paymentAccum,nextPayment) = {
23+ let $t013561393 = paymentAccum
24+ let validPayments = $t013561393._1
25+ let j = $t013561393._2
26+ if ((j >= paymentsSize))
27+ then $Tuple2(validPayments, (j + 1))
28+ else {
29+ func amountsAggregator (amountAccum,nextAmount) = {
30+ let $t015481577 = amountAccum
31+ let amount = $t015481577._1
32+ let k = $t015481577._2
33+ if (if ((k >= recipientsSize))
34+ then true
35+ else (paymentIdx[k] != j))
36+ then $Tuple2(amount, (k + 1))
37+ else $Tuple2((amount + nextAmount), (k + 1))
38+ }
39+
40+ let aggregatedAmount = {
41+ let $l = amounts
42+ let $s = size($l)
43+ let $acc0 = $Tuple2(0, 0)
44+ func $f0_1 ($a,$i) = if (($i >= $s))
45+ then $a
46+ else amountsAggregator($a, $l[$i])
47+
48+ func $f0_2 ($a,$i) = if (($i >= $s))
49+ then $a
50+ else throw("List size exceeds 100")
51+
52+ $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)
53+ }
54+ if ((aggregatedAmount._1 == nextPayment.amount))
55+ then $Tuple2((validPayments + 1), (j + 1))
56+ else $Tuple2(validPayments, (j + 1))
57+ }
58+ }
59+
60+ let paymentsValidation = {
61+ let $l = payments
62+ let $s = size($l)
63+ let $acc0 = $Tuple2(0, 0)
64+ func $f0_1 ($a,$i) = if (($i >= $s))
65+ then $a
66+ else paymentsValidator($a, $l[$i])
67+
68+ func $f0_2 ($a,$i) = if (($i >= $s))
69+ then $a
70+ else throw("List size exceeds 10")
71+
72+ $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)
73+ }
74+ if (if (if (if (if (if (if (if ((recipientsSize == amountsSize))
75+ then (recipientsSize == paymentIdxSize)
76+ else false)
77+ then (recipientsSize > 0)
78+ else false)
79+ then (100 >= recipientsSize)
80+ else false)
81+ then (paymentsSize > 0)
82+ else false)
83+ then (minAmount > 0)
84+ else false)
85+ then (minPaymentIdx == 0)
86+ else false)
87+ then (maxPaymentIdx == (paymentsSize - 1))
88+ else false)
89+ then (paymentsValidation._1 == paymentsSize)
90+ else false
91+ }
92+
93+
94+@Callable(i)
95+func massTransfer (recipients,amounts,paymentIdx,attachment) = {
96+ let pmt = value(i.payments[0])
97+ if ((i.caller != masstransfer_whitelisted_address))
98+ then throw((("Not an Admin only " + toString(masstransfer_whitelisted_address)) + " can sign it."))
99+ else if (isDefined(pmt.assetId))
100+ then throw("Only Waves is allowed to Attach as payment.")
101+ else if (!(validateMassTransferArguments(recipients, amounts, paymentIdx, i.payments)))
102+ then throw("Invalid arguments")
103+ else {
104+ let recipientsSize = size(recipients)
105+ func scriptTransfersGenerator (accum,next) = {
106+ let $t029462978 = accum
107+ let scriptTransfers = $t029462978._1
108+ let j = $t029462978._2
109+ if ((j >= recipientsSize))
110+ then $Tuple2(scriptTransfers, (j + 1))
111+ else $Tuple2((scriptTransfers :+ ScriptTransfer(addressFromStringValue(recipients[j]), next, i.payments[paymentIdx[j]].assetId)), (j + 1))
112+ }
113+
114+ let result = {
115+ let $l = amounts
116+ let $s = size($l)
117+ let $acc0 = $Tuple2(nil, 0)
118+ func $f0_1 ($a,$i) = if (($i >= $s))
119+ then $a
120+ else scriptTransfersGenerator($a, $l[$i])
121+
122+ func $f0_2 ($a,$i) = if (($i >= $s))
123+ then $a
124+ else throw("List size exceeds 100")
125+
126+ $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)
127+ }
128+ $Tuple2(result._1, unit)
129+ }
130+ }
131+
132+
133+
134+@Callable(i)
135+func AddPoolLiquidity () = {
136+ let calleraddress = toBase58String(i.caller.bytes)
137+ let pmt = if ((size(i.payments) == 1))
138+ then i.payments[0]
139+ else throw("No payment attached, Please Attach only Whitelisted Tokens in payment[1].")
140+ let PreviousFundsAddedToPoolbyCompany = match getInteger(this, "Total_LP_Added") {
141+ case a: Int =>
142+ a
143+ case _ =>
144+ 0
145+ }
146+ let TotalFundsAddedToPoolbyCompany = (PreviousFundsAddedToPoolbyCompany + pmt.amount)
147+ let PreviousPoolLiquidity = match getInteger(this, "Total_Pool_Liquidity") {
148+ case a: Int =>
149+ a
150+ case _ =>
151+ 0
152+ }
153+ let TotalPoolLiquidity = (PreviousPoolLiquidity + pmt.amount)
154+ let PreviousLPDepositCounter = match getInteger(this, "LP_Deposit_Counter") {
155+ case a: Int =>
156+ a
157+ case _ =>
158+ 0
159+ }
160+ let TotalLPDepositCounter = (PreviousLPDepositCounter + 1)
161+ if ((i.caller != lp_whitelist_address))
162+ then throw((("This Address is not Authorized. Only " + toString(lp_whitelist_address)) + " is Authorized Address to Sign it."))
163+ else if (isDefined(pmt.assetId))
164+ then throw("Only WAVES is allowed to deposit at the moment")
165+ else [IntegerEntry("Total_Pool_Liquidity", TotalPoolLiquidity), IntegerEntry("LP_Deposit_Counter", TotalLPDepositCounter), IntegerEntry("Total_LP_Added", TotalFundsAddedToPoolbyCompany)]
166+ }
167+
168+
169+
170+@Callable(i)
171+func UpdateLPBalance (PaidMassTransferAmount) = {
172+ let read_account_balance = wavesBalance(this).regular
173+ let read_total_pool_liquidity = valueOrErrorMessage(getInteger(this, "Total_Pool_Liquidity"), "No Initial Pool Liquidity was Found.")
174+ let received_order_amount = ((read_account_balance - read_total_pool_liquidity) - network_fee)
175+ let updated_pool_balance = ((read_total_pool_liquidity - PaidMassTransferAmount) + received_order_amount)
176+ let PreviousMassTransferCounter = match getInteger(this, "Mass_Transfer_Counter") {
177+ case a: Int =>
178+ a
179+ case _ =>
180+ 0
181+ }
182+ let TotalMassTransferCounter = (PreviousMassTransferCounter + 1)
183+ let PreviousMassTransferSend = match getInteger(this, "Total_Mass_Transfer_Send") {
184+ case a: Int =>
185+ a
186+ case _ =>
187+ 0
188+ }
189+ let TotalMassTransferSend = (PreviousMassTransferSend + PaidMassTransferAmount)
190+ if ((i.caller != masstransfer_whitelisted_address))
191+ then throw((("This Address is not Authorized. Only " + toString(masstransfer_whitelisted_address)) + " is Authorized Address to Sign it."))
192+ else if ((PaidMassTransferAmount > read_total_pool_liquidity))
193+ then throw("Placed Mass Transfer Amount Size is more than Total Pool Liquidity.")
194+ else [IntegerEntry("Total_Pool_Liquidity", updated_pool_balance), IntegerEntry("Mass_Transfer_Counter", TotalMassTransferCounter), IntegerEntry("Total_Mass_Transfer_Send", TotalMassTransferSend), IntegerEntry((toString(TotalMassTransferCounter) + "_Mass_Transfer_Send"), PaidMassTransferAmount), ScriptTransfer(masstransfer_whitelisted_address, PaidMassTransferAmount, unit), ScriptTransfer(masstransfer_whitelisted_address, network_fee, unit)]
195+ }
196+
197+
198+
199+@Callable(i)
200+func WithdrawLPBalance (WithdrawAmount) = {
201+ let read_total_pool_liquidity = valueOrErrorMessage(getInteger(this, "Total_Pool_Liquidity"), "No Initial Pool Liquidity was Found.")
202+ let updated_pool_balance = (read_total_pool_liquidity - WithdrawAmount)
203+ let PreviousLPWithdrawCounter = match getInteger(this, "LP_Withdraw_Counter") {
204+ case a: Int =>
205+ a
206+ case _ =>
207+ 0
208+ }
209+ let TotalLPWithdrawCounter = (PreviousLPWithdrawCounter + 1)
210+ let PreviousLPWithdraw = match getInteger(this, "Total_LP_Withdraw") {
211+ case a: Int =>
212+ a
213+ case _ =>
214+ 0
215+ }
216+ let TotalLPWithdraw = (PreviousLPWithdraw + WithdrawAmount)
217+ if ((i.caller != lp_whitelist_address))
218+ then throw((("This Address is not Authorized. Only " + toString(lp_whitelist_address)) + " is Authorized Address to Sign it."))
219+ else if ((WithdrawAmount > read_total_pool_liquidity))
220+ then throw("Placed Withdraw Amount Size is more than Total Pool Liquidity.")
221+ else [IntegerEntry("Total_Pool_Liquidity", updated_pool_balance), IntegerEntry("LP_Withdraw_Counter", TotalLPWithdrawCounter), IntegerEntry("Total_LP_Withdraw", TotalLPWithdraw), IntegerEntry((toString(TotalLPWithdrawCounter) + "_LP_Withdraw"), WithdrawAmount), ScriptTransfer(lp_whitelist_address, WithdrawAmount, unit)]
222+ }
223+
224+
225+@Verifier(tx)
226+func verify () = match tx {
227+ case t: Order|ExchangeTransaction|TransferTransaction =>
228+ false
229+ case _ =>
230+ sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
231+}
232+

github/deemru/w8io/c3f4982 
23.95 ms