tx · FwCFFSqWi48XoZUA99TaBYTZtwy1N2JTPT8q2kDKtawx 3MrWxXALfo2Dw1vi4Ydk8fEn766X3ZAVPky: -0.01400000 Waves 2023.01.07 12:56 [2394379] smart account 3MrWxXALfo2Dw1vi4Ydk8fEn766X3ZAVPky > SELF 0.00000000 Waves
{ "type": 13, "id": "FwCFFSqWi48XoZUA99TaBYTZtwy1N2JTPT8q2kDKtawx", "fee": 1400000, "feeAssetId": null, "timestamp": 1673085401455, "version": 2, "chainId": 84, "sender": "3MrWxXALfo2Dw1vi4Ydk8fEn766X3ZAVPky", "senderPublicKey": "2sHRUrJCMpDhAQEcN7Zhk3LqnD9zizebpxeQXpPoscQU", "proofs": [ "4aHrK1VatVPgApNcutw86kKFedqNviVFLHi9F79v4dJT4dzV8ij82LdkjxWkYTfTkPa17YQMmqhxc5Jb4DeKL4iW" ], "script": "base64:BgIKCAISBgoEGBERCAEBEXZhbGlkYXRlQXJndW1lbnRzBApyZWNpcGllbnRzB2Ftb3VudHMKcGF5bWVudElkeAhwYXltZW50cwQOcmVjaXBpZW50c1NpemUJAJADAQUKcmVjaXBpZW50cwQLYW1vdW50c1NpemUJAJADAQUHYW1vdW50cwQOcGF5bWVudElkeFNpemUJAJADAQUKcGF5bWVudElkeAQMcGF5bWVudHNTaXplCQCQAwEFCHBheW1lbnRzBAltaW5BbW91bnQJAJcDAQUHYW1vdW50cwQNbWluUGF5bWVudElkeAkAlwMBBQpwYXltZW50SWR4BA1tYXhQYXltZW50SWR4CQCWAwEFCnBheW1lbnRJZHgKARFwYXltZW50c1ZhbGlkYXRvcgIMcGF5bWVudEFjY3VtC25leHRQYXltZW50BAkkdDA1ODM2MjAFDHBheW1lbnRBY2N1bQQNdmFsaWRQYXltZW50cwgFCSR0MDU4MzYyMAJfMQQBaggFCSR0MDU4MzYyMAJfMgMJAGcCBQFqBQxwYXltZW50c1NpemUJAJQKAgUNdmFsaWRQYXltZW50cwkAZAIFAWoAAQoBEWFtb3VudHNBZ2dyZWdhdG9yAgthbW91bnRBY2N1bQpuZXh0QW1vdW50BAkkdDA3NzU4MDQFC2Ftb3VudEFjY3VtBAZhbW91bnQIBQkkdDA3NzU4MDQCXzEEAWsIBQkkdDA3NzU4MDQCXzIDAwkAZwIFAWsFDnJlY2lwaWVudHNTaXplBgkBAiE9AgkAkQMCBQpwYXltZW50SWR4BQFrBQFqCQCUCgIFBmFtb3VudAkAZAIFAWsAAQkAlAoCCQBkAgUGYW1vdW50BQpuZXh0QW1vdW50CQBkAgUBawABBBBhZ2dyZWdhdGVkQW1vdW50CgACJGwFB2Ftb3VudHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIAAAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARFhbW91bnRzQWdncmVnYXRvcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyAwkAAAIIBRBhZ2dyZWdhdGVkQW1vdW50Al8xCAULbmV4dFBheW1lbnQGYW1vdW50CQCUCgIJAGQCBQ12YWxpZFBheW1lbnRzAAEJAGQCBQFqAAEJAJQKAgUNdmFsaWRQYXltZW50cwkAZAIFAWoAAQQScGF5bWVudHNWYWxpZGF0aW9uCgACJGwFCHBheW1lbnRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCAAAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQERcGF5bWVudHNWYWxpZGF0b3ICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoDAwMDAwMDAwkAAAIFDnJlY2lwaWVudHNTaXplBQthbW91bnRzU2l6ZQkAAAIFDnJlY2lwaWVudHNTaXplBQ5wYXltZW50SWR4U2l6ZQcJAGYCBQ5yZWNpcGllbnRzU2l6ZQAABwkAZwIAMgUOcmVjaXBpZW50c1NpemUHCQBmAgUMcGF5bWVudHNTaXplAAAHCQBmAgUJbWluQW1vdW50AAAHCQAAAgUNbWluUGF5bWVudElkeAAABwkAAAIFDW1heFBheW1lbnRJZHgJAGUCBQxwYXltZW50c1NpemUAAQcJAAACCAUScGF5bWVudHNWYWxpZGF0aW9uAl8xBQxwYXltZW50c1NpemUHAQFpAQxtYXNzVHJhbnNmZXIECnJlY2lwaWVudHMHYW1vdW50cwpwYXltZW50SWR4CmF0dGFjaG1lbnQDCQEBIQEJARF2YWxpZGF0ZUFyZ3VtZW50cwQFCnJlY2lwaWVudHMFB2Ftb3VudHMFCnBheW1lbnRJZHgIBQFpCHBheW1lbnRzCQACAQIRSW52YWxpZCBhcmd1bWVudHMEDnJlY2lwaWVudHNTaXplCQCQAwEFCnJlY2lwaWVudHMKARhzY3JpcHRUcmFuc2ZlcnNHZW5lcmF0b3ICBWFjY3VtBG5leHQECyR0MDE5MDIxOTM0BQVhY2N1bQQPc2NyaXB0VHJhbnNmZXJzCAULJHQwMTkwMjE5MzQCXzEEAWoIBQskdDAxOTAyMTkzNAJfMgMJAGcCBQFqBQ5yZWNpcGllbnRzU2l6ZQkAlAoCBQ9zY3JpcHRUcmFuc2ZlcnMJAGQCBQFqAAEJAJQKAgkAzQgCBQ9zY3JpcHRUcmFuc2ZlcnMJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUKcmVjaXBpZW50cwUBagUEbmV4dAgJAJEDAggFAWkIcGF5bWVudHMJAJEDAgUKcGF5bWVudElkeAUBagdhc3NldElkCQBkAgUBagABBAZyZXN1bHQKAAIkbAUHYW1vdW50cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBGHNjcmlwdFRyYW5zZmVyc0dlbmVyYXRvcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyCQCUCgIIBQZyZXN1bHQCXzEFBHVuaXQAmoTvlA==", "height": 2394379, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: 8EsJ1mDbE4Hqni4CLbrXLu3zoo7odSgh8aNik4Et6zho Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 6 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | func validateArguments (recipients,amounts,paymentIdx,payments) = { | |
5 | + | let recipientsSize = size(recipients) | |
6 | + | let amountsSize = size(amounts) | |
7 | + | let paymentIdxSize = size(paymentIdx) | |
8 | + | let paymentsSize = size(payments) | |
9 | + | let minAmount = min(amounts) | |
10 | + | let minPaymentIdx = min(paymentIdx) | |
11 | + | let maxPaymentIdx = max(paymentIdx) | |
12 | + | func paymentsValidator (paymentAccum,nextPayment) = { | |
13 | + | let $t0583620 = paymentAccum | |
14 | + | let validPayments = $t0583620._1 | |
15 | + | let j = $t0583620._2 | |
16 | + | if ((j >= paymentsSize)) | |
17 | + | then $Tuple2(validPayments, (j + 1)) | |
18 | + | else { | |
19 | + | func amountsAggregator (amountAccum,nextAmount) = { | |
20 | + | let $t0775804 = amountAccum | |
21 | + | let amount = $t0775804._1 | |
22 | + | let k = $t0775804._2 | |
23 | + | if (if ((k >= recipientsSize)) | |
24 | + | then true | |
25 | + | else (paymentIdx[k] != j)) | |
26 | + | then $Tuple2(amount, (k + 1)) | |
27 | + | else $Tuple2((amount + nextAmount), (k + 1)) | |
28 | + | } | |
29 | + | ||
30 | + | let aggregatedAmount = { | |
31 | + | let $l = amounts | |
32 | + | let $s = size($l) | |
33 | + | let $acc0 = $Tuple2(0, 0) | |
34 | + | func $f0_1 ($a,$i) = if (($i >= $s)) | |
35 | + | then $a | |
36 | + | else amountsAggregator($a, $l[$i]) | |
37 | + | ||
38 | + | func $f0_2 ($a,$i) = if (($i >= $s)) | |
39 | + | then $a | |
40 | + | else throw("List size exceeds 50") | |
41 | + | ||
42 | + | $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($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) | |
43 | + | } | |
44 | + | if ((aggregatedAmount._1 == nextPayment.amount)) | |
45 | + | then $Tuple2((validPayments + 1), (j + 1)) | |
46 | + | else $Tuple2(validPayments, (j + 1)) | |
47 | + | } | |
48 | + | } | |
49 | + | ||
50 | + | let paymentsValidation = { | |
51 | + | let $l = payments | |
52 | + | let $s = size($l) | |
53 | + | let $acc0 = $Tuple2(0, 0) | |
54 | + | func $f0_1 ($a,$i) = if (($i >= $s)) | |
55 | + | then $a | |
56 | + | else paymentsValidator($a, $l[$i]) | |
57 | + | ||
58 | + | func $f0_2 ($a,$i) = if (($i >= $s)) | |
59 | + | then $a | |
60 | + | else throw("List size exceeds 10") | |
61 | + | ||
62 | + | $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) | |
63 | + | } | |
64 | + | if (if (if (if (if (if (if (if ((recipientsSize == amountsSize)) | |
65 | + | then (recipientsSize == paymentIdxSize) | |
66 | + | else false) | |
67 | + | then (recipientsSize > 0) | |
68 | + | else false) | |
69 | + | then (50 >= recipientsSize) | |
70 | + | else false) | |
71 | + | then (paymentsSize > 0) | |
72 | + | else false) | |
73 | + | then (minAmount > 0) | |
74 | + | else false) | |
75 | + | then (minPaymentIdx == 0) | |
76 | + | else false) | |
77 | + | then (maxPaymentIdx == (paymentsSize - 1)) | |
78 | + | else false) | |
79 | + | then (paymentsValidation._1 == paymentsSize) | |
80 | + | else false | |
81 | + | } | |
82 | + | ||
83 | + | ||
84 | + | @Callable(i) | |
85 | + | func massTransfer (recipients,amounts,paymentIdx,attachment) = if (!(validateArguments(recipients, amounts, paymentIdx, i.payments))) | |
86 | + | then throw("Invalid arguments") | |
87 | + | else { | |
88 | + | let recipientsSize = size(recipients) | |
89 | + | func scriptTransfersGenerator (accum,next) = { | |
90 | + | let $t019021934 = accum | |
91 | + | let scriptTransfers = $t019021934._1 | |
92 | + | let j = $t019021934._2 | |
93 | + | if ((j >= recipientsSize)) | |
94 | + | then $Tuple2(scriptTransfers, (j + 1)) | |
95 | + | else $Tuple2((scriptTransfers :+ ScriptTransfer(addressFromStringValue(recipients[j]), next, i.payments[paymentIdx[j]].assetId)), (j + 1)) | |
96 | + | } | |
97 | + | ||
98 | + | let result = { | |
99 | + | let $l = amounts | |
100 | + | let $s = size($l) | |
101 | + | let $acc0 = $Tuple2(nil, 0) | |
102 | + | func $f0_1 ($a,$i) = if (($i >= $s)) | |
103 | + | then $a | |
104 | + | else scriptTransfersGenerator($a, $l[$i]) | |
105 | + | ||
106 | + | func $f0_2 ($a,$i) = if (($i >= $s)) | |
107 | + | then $a | |
108 | + | else throw("List size exceeds 50") | |
109 | + | ||
110 | + | $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($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) | |
111 | + | } | |
112 | + | $Tuple2(result._1, unit) | |
113 | + | } | |
114 | + | ||
115 | + |
github/deemru/w8io/026f985 27.07 ms ◑