tx · GfB42LQzA7o9FCay9aAyr1q7DcfRm3o5rDm8mp4uSKwU

3PACv5M5MXkWMd9881rmUL7pV7tokQGckZU:  -0.00500000 Waves

2023.01.06 01:05 [3457718] smart account 3PACv5M5MXkWMd9881rmUL7pV7tokQGckZU > SELF 0.00000000 Waves

{ "type": 13, "id": "GfB42LQzA7o9FCay9aAyr1q7DcfRm3o5rDm8mp4uSKwU", "fee": 500000, "feeAssetId": null, "timestamp": 1672956394173, "version": 1, "sender": "3PACv5M5MXkWMd9881rmUL7pV7tokQGckZU", "senderPublicKey": "4ENYtyon3koPFghbGpWDMRCNcQQvQ75Q6V46Akq13gzB", "proofs": [ "56zTW5RdD6fLrHGb5bXfaAGQDHBYMYTmY9JS5MV5JmU1ECcf9ctesxjq5oyM9BdSh7hCPQSi4i2WCaxC2n4BzCbf" ], "script": "base64:BgIKCAISBgoEEhERCAEBEXZhbGlkYXRlQXJndW1lbnRzBApyZWNpcGllbnRzB2Ftb3VudHMKcGF5bWVudElkeAhwYXltZW50cwQOcmVjaXBpZW50c1NpemUJAJADAQUKcmVjaXBpZW50cwQLYW1vdW50c1NpemUJAJADAQUHYW1vdW50cwQOcGF5bWVudElkeFNpemUJAJADAQUKcGF5bWVudElkeAQMcGF5bWVudHNTaXplCQCQAwEFCHBheW1lbnRzBAltaW5BbW91bnQJAJcDAQUHYW1vdW50cwQNbWluUGF5bWVudElkeAkAlwMBBQpwYXltZW50SWR4BA1tYXhQYXltZW50SWR4CQCWAwEFCnBheW1lbnRJZHgKARFwYXltZW50c1ZhbGlkYXRvcgIMcGF5bWVudEFjY3VtC25leHRQYXltZW50BAkkdDA1ODc2MjQFDHBheW1lbnRBY2N1bQQNdmFsaWRQYXltZW50cwgFCSR0MDU4NzYyNAJfMQQBaggFCSR0MDU4NzYyNAJfMgMJAGcCBQFqBQxwYXltZW50c1NpemUJAJQKAgUNdmFsaWRQYXltZW50cwkAZAIFAWoAAQoBEWFtb3VudHNBZ2dyZWdhdG9yAgthbW91bnRBY2N1bQpuZXh0QW1vdW50BAkkdDA3Nzk4MDgFC2Ftb3VudEFjY3VtBAZhbW91bnQIBQkkdDA3Nzk4MDgCXzEEAWsIBQkkdDA3Nzk4MDgCXzIDAwkAZwIFAWsFDnJlY2lwaWVudHNTaXplBgkBAiE9AgkAkQMCBQpwYXltZW50SWR4BQFrBQFqCQCUCgIFBmFtb3VudAkAZAIFAWsAAQkAlAoCCQBkAgUGYW1vdW50BQpuZXh0QW1vdW50CQBkAgUBawABBBBhZ2dyZWdhdGVkQW1vdW50CgACJGwFB2Ftb3VudHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIAAAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARFhbW91bnRzQWdncmVnYXRvcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIVTGlzdCBzaXplIGV4Y2VlZHMgMTAwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAYgBjAGQDCQAAAggFEGFnZ3JlZ2F0ZWRBbW91bnQCXzEIBQtuZXh0UGF5bWVudAZhbW91bnQJAJQKAgkAZAIFDXZhbGlkUGF5bWVudHMAAQkAZAIFAWoAAQkAlAoCBQ12YWxpZFBheW1lbnRzCQBkAgUBagABBBJwYXltZW50c1ZhbGlkYXRpb24KAAIkbAUIcGF5bWVudHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIAAAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARFwYXltZW50c1ZhbGlkYXRvcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgMDAwMDAwMDCQAAAgUOcmVjaXBpZW50c1NpemUFC2Ftb3VudHNTaXplCQAAAgUOcmVjaXBpZW50c1NpemUFDnBheW1lbnRJZHhTaXplBwkAZgIFDnJlY2lwaWVudHNTaXplAAAHCQBnAgBkBQ5yZWNpcGllbnRzU2l6ZQcJAGYCBQxwYXltZW50c1NpemUAAAcJAGYCBQltaW5BbW91bnQAAAcJAAACBQ1taW5QYXltZW50SWR4AAAHCQAAAgUNbWF4UGF5bWVudElkeAkAZQIFDHBheW1lbnRzU2l6ZQABBwkAAAIIBRJwYXltZW50c1ZhbGlkYXRpb24CXzEFDHBheW1lbnRzU2l6ZQcBAWkBDG1hc3NUcmFuc2ZlcgQKcmVjaXBpZW50cwdhbW91bnRzCnBheW1lbnRJZHgKYXR0YWNobWVudAMJAQEhAQkBEXZhbGlkYXRlQXJndW1lbnRzBAUKcmVjaXBpZW50cwUHYW1vdW50cwUKcGF5bWVudElkeAgFAWkIcGF5bWVudHMJAAIBAhFJbnZhbGlkIGFyZ3VtZW50cwQOcmVjaXBpZW50c1NpemUJAJADAQUKcmVjaXBpZW50cwoBGHNjcmlwdFRyYW5zZmVyc0dlbmVyYXRvcgIFYWNjdW0EbmV4dAQLJHQwMTg4NjE5MTgFBWFjY3VtBA9zY3JpcHRUcmFuc2ZlcnMIBQskdDAxODg2MTkxOAJfMQQBaggFCyR0MDE4ODYxOTE4Al8yAwkAZwIFAWoFDnJlY2lwaWVudHNTaXplCQCUCgIFD3NjcmlwdFRyYW5zZmVycwkAZAIFAWoAAQkAlAoCCQDNCAIFD3NjcmlwdFRyYW5zZmVycwkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQCRAwIFCnJlY2lwaWVudHMFAWoFBG5leHQICQCRAwIIBQFpCHBheW1lbnRzCQCRAwIFCnBheW1lbnRJZHgFAWoHYXNzZXRJZAkAZAIFAWoAAQQGcmVzdWx0CgACJGwFB2Ftb3VudHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFA25pbAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARhzY3JpcHRUcmFuc2ZlcnNHZW5lcmF0b3ICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFUxpc3Qgc2l6ZSBleGNlZWRzIDEwMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkCQCUCgIIBQZyZXN1bHQCXzEFBHVuaXQAsKQcsA==", "chainId": 87, "height": 3457718, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
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 $t0587624 = paymentAccum
14+ let validPayments = $t0587624._1
15+ let j = $t0587624._2
16+ if ((j >= paymentsSize))
17+ then $Tuple2(validPayments, (j + 1))
18+ else {
19+ func amountsAggregator (amountAccum,nextAmount) = {
20+ let $t0779808 = amountAccum
21+ let amount = $t0779808._1
22+ let k = $t0779808._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 100")
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($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($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)
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 (100 >= 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 $t018861918 = accum
91+ let scriptTransfers = $t018861918._1
92+ let j = $t018861918._2
93+ if ((j >= recipientsSize))
94+ then $Tuple2(scriptTransfers, (j + 1))
95+ else $Tuple2((scriptTransfers :+ ScriptTransfer(Address(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 100")
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($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($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)
111+ }
112+ $Tuple2(result._1, unit)
113+ }
114+
115+

github/deemru/w8io/6500d08 
34.37 ms