tx · 4ypGAEhcaZeUnbdPi9qe93M8NZgczVYr4xAsPuAEycR3 3Ms2ssGBpsFccHLtdb5zApeJ51jU3377r1d: -0.01000000 Waves 2023.10.12 11:38 [2795154] smart account 3Ms2ssGBpsFccHLtdb5zApeJ51jU3377r1d > SELF 0.00000000 Waves
{ "type": 13, "id": "4ypGAEhcaZeUnbdPi9qe93M8NZgczVYr4xAsPuAEycR3", "fee": 1000000, "feeAssetId": null, "timestamp": 1697099972808, "version": 2, "chainId": 84, "sender": "3Ms2ssGBpsFccHLtdb5zApeJ51jU3377r1d", "senderPublicKey": "7E4cNcg8gSYTmNbmLG2kvAiePh9KZoAT7W64shHxCc6n", "proofs": [ "4Yk7MfgoyhKQFmRB5LLq6bBLdedm3uvkziFAE5VQvqt7iq1qyN9nG6UaRwBB2aYtbJMRtLnWgLAAcrXDWiJAWaDw" ], "script": "base64:BgIPCAISBgoEGBERCBIDCgEBAwARbHBfYWRkcmVzc19wdWJrZXkBIHy+XBhI/rhv/LQUflYon8e8q0PT8nBDeExH6jeAesBrACBtYXNzdHJhbnNmZXJfd2hpdGVsaXN0ZWRfYWRkcmVzcwkApwgBBRFscF9hZGRyZXNzX3B1YmtleQERdmFsaWRhdGVBcmd1bWVudHMECnJlY2lwaWVudHMHYW1vdW50cwpwYXltZW50SWR4CHBheW1lbnRzBA5yZWNpcGllbnRzU2l6ZQkAkAMBBQpyZWNpcGllbnRzBAthbW91bnRzU2l6ZQkAkAMBBQdhbW91bnRzBA5wYXltZW50SWR4U2l6ZQkAkAMBBQpwYXltZW50SWR4BAxwYXltZW50c1NpemUJAJADAQUIcGF5bWVudHMECW1pbkFtb3VudAkAlwMBBQdhbW91bnRzBA1taW5QYXltZW50SWR4CQCXAwEFCnBheW1lbnRJZHgEDW1heFBheW1lbnRJZHgJAJYDAQUKcGF5bWVudElkeAoBEXBheW1lbnRzVmFsaWRhdG9yAgxwYXltZW50QWNjdW0LbmV4dFBheW1lbnQECSR0MDc0MDc3NwUMcGF5bWVudEFjY3VtBA12YWxpZFBheW1lbnRzCAUJJHQwNzQwNzc3Al8xBAFqCAUJJHQwNzQwNzc3Al8yAwkAZwIFAWoFDHBheW1lbnRzU2l6ZQkAlAoCBQ12YWxpZFBheW1lbnRzCQBkAgUBagABCgERYW1vdW50c0FnZ3JlZ2F0b3ICC2Ftb3VudEFjY3VtCm5leHRBbW91bnQECSR0MDkzMjk2MQULYW1vdW50QWNjdW0EBmFtb3VudAgFCSR0MDkzMjk2MQJfMQQBawgFCSR0MDkzMjk2MQJfMgMDCQBnAgUBawUOcmVjaXBpZW50c1NpemUGCQECIT0CCQCRAwIFCnBheW1lbnRJZHgFAWsFAWoJAJQKAgUGYW1vdW50CQBkAgUBawABCQCUCgIJAGQCBQZhbW91bnQFCm5leHRBbW91bnQJAGQCBQFrAAEEEGFnZ3JlZ2F0ZWRBbW91bnQKAAIkbAUHYW1vdW50cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgAAAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEWFtb3VudHNBZ2dyZWdhdG9yAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhVMaXN0IHNpemUgZXhjZWVkcyAxMDAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZAMJAAACCAUQYWdncmVnYXRlZEFtb3VudAJfMQgFC25leHRQYXltZW50BmFtb3VudAkAlAoCCQBkAgUNdmFsaWRQYXltZW50cwABCQBkAgUBagABCQCUCgIFDXZhbGlkUGF5bWVudHMJAGQCBQFqAAEEEnBheW1lbnRzVmFsaWRhdGlvbgoAAiRsBQhwYXltZW50cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgAAAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEXBheW1lbnRzVmFsaWRhdG9yAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAwMDAwMDAwMJAAACBQ5yZWNpcGllbnRzU2l6ZQULYW1vdW50c1NpemUJAAACBQ5yZWNpcGllbnRzU2l6ZQUOcGF5bWVudElkeFNpemUHCQBmAgUOcmVjaXBpZW50c1NpemUAAAcJAGcCAGQFDnJlY2lwaWVudHNTaXplBwkAZgIFDHBheW1lbnRzU2l6ZQAABwkAZgIFCW1pbkFtb3VudAAABwkAAAIFDW1pblBheW1lbnRJZHgAAAcJAAACBQ1tYXhQYXltZW50SWR4CQBlAgUMcGF5bWVudHNTaXplAAEHCQAAAggFEnBheW1lbnRzVmFsaWRhdGlvbgJfMQUMcGF5bWVudHNTaXplBwIBaQEMbWFzc1RyYW5zZmVyBApyZWNpcGllbnRzB2Ftb3VudHMKcGF5bWVudElkeAphdHRhY2htZW50BANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQFpBmNhbGxlcgUgbWFzc3RyYW5zZmVyX3doaXRlbGlzdGVkX2FkZHJlc3MJAAIBCQCsAgIJAKwCAgISTm90IGFuIEFkbWluIG9ubHkgCQClCAEFIG1hc3N0cmFuc2Zlcl93aGl0ZWxpc3RlZF9hZGRyZXNzAg0gY2FuIHNpZ24gaXQuAwkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAkAAgECK09ubHkgV2F2ZXMgaXMgYWxsb3dlZCB0byBBdHRhY2ggYXMgcGF5bWVudC4DCQEBIQEJARF2YWxpZGF0ZUFyZ3VtZW50cwQFCnJlY2lwaWVudHMFB2Ftb3VudHMFCnBheW1lbnRJZHgIBQFpCHBheW1lbnRzCQACAQIRSW52YWxpZCBhcmd1bWVudHMEDnJlY2lwaWVudHNTaXplCQCQAwEFCnJlY2lwaWVudHMKARhzY3JpcHRUcmFuc2ZlcnNHZW5lcmF0b3ICBWFjY3VtBG5leHQECyR0MDIzMTgyMzUwBQVhY2N1bQQPc2NyaXB0VHJhbnNmZXJzCAULJHQwMjMxODIzNTACXzEEAWoIBQskdDAyMzE4MjM1MAJfMgMJAGcCBQFqBQ5yZWNpcGllbnRzU2l6ZQkAlAoCBQ9zY3JpcHRUcmFuc2ZlcnMJAGQCBQFqAAEJAJQKAgkAzQgCBQ9zY3JpcHRUcmFuc2ZlcnMJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUKcmVjaXBpZW50cwUBagUEbmV4dAgJAJEDAggFAWkIcGF5bWVudHMJAJEDAgUKcGF5bWVudElkeAUBagdhc3NldElkCQBkAgUBagABBAZyZXN1bHQKAAIkbAUHYW1vdW50cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBGHNjcmlwdFRyYW5zZmVyc0dlbmVyYXRvcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIVTGlzdCBzaXplIGV4Y2VlZHMgMTAwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAYgBjAGQJAJQKAggFBnJlc3VsdAJfMQUEdW5pdAFpAQ9VcGRhdGVMUEJhbGFuY2UBFlBhaWRNYXNzVHJhbnNmZXJBbW91bnQEFHJlYWRfYWNjb3VudF9iYWxhbmNlCAkA7wcBBQR0aGlzB3JlZ3VsYXIEGXJlYWRfdG90YWxfcG9vbF9saXF1aWRpdHkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzAhRUb3RhbF9Qb29sX0xpcXVpZGl0eQIkTm8gSW5pdGlhbCBQb29sIExpcXVpZGl0eSB3YXMgRm91bmQuBBVyZWNlaXZlZF9vcmRlcl9hbW91bnQJAGUCBRRyZWFkX2FjY291bnRfYmFsYW5jZQUZcmVhZF90b3RhbF9wb29sX2xpcXVpZGl0eQQUdXBkYXRlZF9wb29sX2JhbGFuY2UJAGQCCQBlAgUZcmVhZF90b3RhbF9wb29sX2xpcXVpZGl0eQUWUGFpZE1hc3NUcmFuc2ZlckFtb3VudAUVcmVjZWl2ZWRfb3JkZXJfYW1vdW50BBtQcmV2aW91c01hc3NUcmFuc2ZlckNvdW50ZXIEByRtYXRjaDAJAJoIAgUEdGhpcwIVTWFzc19UcmFuc2Zlcl9Db3VudGVyAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBhUb3RhbE1hc3NUcmFuc2ZlckNvdW50ZXIJAGQCBRtQcmV2aW91c01hc3NUcmFuc2ZlckNvdW50ZXIAAQQYUHJldmlvdXNNYXNzVHJhbnNmZXJTZW5kBAckbWF0Y2gwCQCaCAIFBHRoaXMCGFRvdGFsX01hc3NfVHJhbnNmZXJfU2VuZAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQVVG90YWxNYXNzVHJhbnNmZXJTZW5kCQBkAgUYUHJldmlvdXNNYXNzVHJhbnNmZXJTZW5kBRZQYWlkTWFzc1RyYW5zZmVyQW1vdW50AwkBAiE9AggFAWkGY2FsbGVyBSBtYXNzdHJhbnNmZXJfd2hpdGVsaXN0ZWRfYWRkcmVzcwkAAgEJAKwCAgkArAICAiVUaGlzIEFkZHJlc3MgaXMgbm90IEF1dGhvcml6ZWQuIE9ubHkgCQClCAEFIG1hc3N0cmFuc2Zlcl93aGl0ZWxpc3RlZF9hZGRyZXNzAiIgaXMgQXV0aG9yaXplZCBBZGRyZXNzIHRvIFNpZ24gaXQuAwkAZgIFFlBhaWRNYXNzVHJhbnNmZXJBbW91bnQFGXJlYWRfdG90YWxfcG9vbF9saXF1aWRpdHkJAAIBAkNQbGFjZWQgTWFzcyBUcmFuc2ZlciBBbW91bnQgU2l6ZSBpcyBtb3JlIHRoYW4gVG90YWwgUG9vbCBMaXF1aWRpdHkuCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhRUb3RhbF9Qb29sX0xpcXVpZGl0eQUUdXBkYXRlZF9wb29sX2JhbGFuY2UJAMwIAgkBDEludGVnZXJFbnRyeQICFU1hc3NfVHJhbnNmZXJfQ291bnRlcgUYVG90YWxNYXNzVHJhbnNmZXJDb3VudGVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhhUb3RhbF9NYXNzX1RyYW5zZmVyX1NlbmQFFVRvdGFsTWFzc1RyYW5zZmVyU2VuZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCkAwEFGFRvdGFsTWFzc1RyYW5zZmVyQ291bnRlcgITX01hc3NfVHJhbnNmZXJfU2VuZAUWUGFpZE1hc3NUcmFuc2ZlckFtb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQCnCAEFEWxwX2FkZHJlc3NfcHVia2V5BRZQYWlkTWFzc1RyYW5zZmVyQW1vdW50BQR1bml0BQNuaWwAI6Xcog==", "height": 2795154, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2tE6nPEivm9YfBgF12c2mRHKRtR54QqjLSimYRgNHKg2 Next: DHWMjwPMfQHyW7eVe6TJReKP7bMv5HRkr3LR3yxUDLAz Diff:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let lp_address_pubkey = base58'9Pwum3va2xrkVwsGRNiTeGxBBBNFEDaS9sfkZiSpSvdQ' | |
5 | + | ||
6 | + | let masstransfer_whitelisted_address = addressFromPublicKey(lp_address_pubkey) | |
7 | + | ||
4 | 8 | func validateArguments (recipients,amounts,paymentIdx,payments) = { | |
5 | 9 | let recipientsSize = size(recipients) | |
6 | 10 | let amountsSize = size(amounts) | |
10 | 14 | let minPaymentIdx = min(paymentIdx) | |
11 | 15 | let maxPaymentIdx = max(paymentIdx) | |
12 | 16 | func paymentsValidator (paymentAccum,nextPayment) = { | |
13 | - | let $ | |
14 | - | let validPayments = $ | |
15 | - | let j = $ | |
17 | + | let $t0740777 = paymentAccum | |
18 | + | let validPayments = $t0740777._1 | |
19 | + | let j = $t0740777._2 | |
16 | 20 | if ((j >= paymentsSize)) | |
17 | 21 | then $Tuple2(validPayments, (j + 1)) | |
18 | 22 | else { | |
19 | 23 | func amountsAggregator (amountAccum,nextAmount) = { | |
20 | - | let $ | |
21 | - | let amount = $ | |
22 | - | let k = $ | |
24 | + | let $t0932961 = amountAccum | |
25 | + | let amount = $t0932961._1 | |
26 | + | let k = $t0932961._2 | |
23 | 27 | if (if ((k >= recipientsSize)) | |
24 | 28 | then true | |
25 | 29 | else (paymentIdx[k] != j)) | |
84 | 88 | @Callable(i) | |
85 | 89 | func massTransfer (recipients,amounts,paymentIdx,attachment) = { | |
86 | 90 | let pmt = value(i.payments[0]) | |
87 | - | let lp_address_pubkey = base58'9Pwum3va2xrkVwsGRNiTeGxBBBNFEDaS9sfkZiSpSvdQ' | |
88 | - | let masstransfer_whitelisted_address = addressFromPublicKey(lp_address_pubkey) | |
89 | 91 | if ((i.caller != masstransfer_whitelisted_address)) | |
90 | - | then throw((("Not an Admin only" + toString(masstransfer_whitelisted_address)) + " can sign it.")) | |
92 | + | then throw((("Not an Admin only " + toString(masstransfer_whitelisted_address)) + " can sign it.")) | |
91 | 93 | else if (isDefined(pmt.assetId)) | |
92 | 94 | then throw("Only Waves is allowed to Attach as payment.") | |
93 | 95 | else if (!(validateArguments(recipients, amounts, paymentIdx, i.payments))) | |
95 | 97 | else { | |
96 | 98 | let recipientsSize = size(recipients) | |
97 | 99 | func scriptTransfersGenerator (accum,next) = { | |
98 | - | let $ | |
99 | - | let scriptTransfers = $ | |
100 | - | let j = $ | |
100 | + | let $t023182350 = accum | |
101 | + | let scriptTransfers = $t023182350._1 | |
102 | + | let j = $t023182350._2 | |
101 | 103 | if ((j >= recipientsSize)) | |
102 | 104 | then $Tuple2(scriptTransfers, (j + 1)) | |
103 | 105 | else $Tuple2((scriptTransfers :+ ScriptTransfer(addressFromStringValue(recipients[j]), next, i.payments[paymentIdx[j]].assetId)), (j + 1)) | |
122 | 124 | } | |
123 | 125 | ||
124 | 126 | ||
127 | + | ||
128 | + | @Callable(i) | |
129 | + | func UpdateLPBalance (PaidMassTransferAmount) = { | |
130 | + | let read_account_balance = wavesBalance(this).regular | |
131 | + | let read_total_pool_liquidity = valueOrErrorMessage(getInteger(this, "Total_Pool_Liquidity"), "No Initial Pool Liquidity was Found.") | |
132 | + | let received_order_amount = (read_account_balance - read_total_pool_liquidity) | |
133 | + | let updated_pool_balance = ((read_total_pool_liquidity - PaidMassTransferAmount) + received_order_amount) | |
134 | + | let PreviousMassTransferCounter = match getInteger(this, "Mass_Transfer_Counter") { | |
135 | + | case a: Int => | |
136 | + | a | |
137 | + | case _ => | |
138 | + | 0 | |
139 | + | } | |
140 | + | let TotalMassTransferCounter = (PreviousMassTransferCounter + 1) | |
141 | + | let PreviousMassTransferSend = match getInteger(this, "Total_Mass_Transfer_Send") { | |
142 | + | case a: Int => | |
143 | + | a | |
144 | + | case _ => | |
145 | + | 0 | |
146 | + | } | |
147 | + | let TotalMassTransferSend = (PreviousMassTransferSend + PaidMassTransferAmount) | |
148 | + | if ((i.caller != masstransfer_whitelisted_address)) | |
149 | + | then throw((("This Address is not Authorized. Only " + toString(masstransfer_whitelisted_address)) + " is Authorized Address to Sign it.")) | |
150 | + | else if ((PaidMassTransferAmount > read_total_pool_liquidity)) | |
151 | + | then throw("Placed Mass Transfer Amount Size is more than Total Pool Liquidity.") | |
152 | + | 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(addressFromPublicKey(lp_address_pubkey), PaidMassTransferAmount, unit)] | |
153 | + | } | |
154 | + | ||
155 | + |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let lp_address_pubkey = base58'9Pwum3va2xrkVwsGRNiTeGxBBBNFEDaS9sfkZiSpSvdQ' | |
5 | + | ||
6 | + | let masstransfer_whitelisted_address = addressFromPublicKey(lp_address_pubkey) | |
7 | + | ||
4 | 8 | func validateArguments (recipients,amounts,paymentIdx,payments) = { | |
5 | 9 | let recipientsSize = size(recipients) | |
6 | 10 | let amountsSize = size(amounts) | |
7 | 11 | let paymentIdxSize = size(paymentIdx) | |
8 | 12 | let paymentsSize = size(payments) | |
9 | 13 | let minAmount = min(amounts) | |
10 | 14 | let minPaymentIdx = min(paymentIdx) | |
11 | 15 | let maxPaymentIdx = max(paymentIdx) | |
12 | 16 | func paymentsValidator (paymentAccum,nextPayment) = { | |
13 | - | let $ | |
14 | - | let validPayments = $ | |
15 | - | let j = $ | |
17 | + | let $t0740777 = paymentAccum | |
18 | + | let validPayments = $t0740777._1 | |
19 | + | let j = $t0740777._2 | |
16 | 20 | if ((j >= paymentsSize)) | |
17 | 21 | then $Tuple2(validPayments, (j + 1)) | |
18 | 22 | else { | |
19 | 23 | func amountsAggregator (amountAccum,nextAmount) = { | |
20 | - | let $ | |
21 | - | let amount = $ | |
22 | - | let k = $ | |
24 | + | let $t0932961 = amountAccum | |
25 | + | let amount = $t0932961._1 | |
26 | + | let k = $t0932961._2 | |
23 | 27 | if (if ((k >= recipientsSize)) | |
24 | 28 | then true | |
25 | 29 | else (paymentIdx[k] != j)) | |
26 | 30 | then $Tuple2(amount, (k + 1)) | |
27 | 31 | else $Tuple2((amount + nextAmount), (k + 1)) | |
28 | 32 | } | |
29 | 33 | ||
30 | 34 | let aggregatedAmount = { | |
31 | 35 | let $l = amounts | |
32 | 36 | let $s = size($l) | |
33 | 37 | let $acc0 = $Tuple2(0, 0) | |
34 | 38 | func $f0_1 ($a,$i) = if (($i >= $s)) | |
35 | 39 | then $a | |
36 | 40 | else amountsAggregator($a, $l[$i]) | |
37 | 41 | ||
38 | 42 | func $f0_2 ($a,$i) = if (($i >= $s)) | |
39 | 43 | then $a | |
40 | 44 | else throw("List size exceeds 100") | |
41 | 45 | ||
42 | 46 | $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 | 47 | } | |
44 | 48 | if ((aggregatedAmount._1 == nextPayment.amount)) | |
45 | 49 | then $Tuple2((validPayments + 1), (j + 1)) | |
46 | 50 | else $Tuple2(validPayments, (j + 1)) | |
47 | 51 | } | |
48 | 52 | } | |
49 | 53 | ||
50 | 54 | let paymentsValidation = { | |
51 | 55 | let $l = payments | |
52 | 56 | let $s = size($l) | |
53 | 57 | let $acc0 = $Tuple2(0, 0) | |
54 | 58 | func $f0_1 ($a,$i) = if (($i >= $s)) | |
55 | 59 | then $a | |
56 | 60 | else paymentsValidator($a, $l[$i]) | |
57 | 61 | ||
58 | 62 | func $f0_2 ($a,$i) = if (($i >= $s)) | |
59 | 63 | then $a | |
60 | 64 | else throw("List size exceeds 10") | |
61 | 65 | ||
62 | 66 | $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 | 67 | } | |
64 | 68 | if (if (if (if (if (if (if (if ((recipientsSize == amountsSize)) | |
65 | 69 | then (recipientsSize == paymentIdxSize) | |
66 | 70 | else false) | |
67 | 71 | then (recipientsSize > 0) | |
68 | 72 | else false) | |
69 | 73 | then (100 >= recipientsSize) | |
70 | 74 | else false) | |
71 | 75 | then (paymentsSize > 0) | |
72 | 76 | else false) | |
73 | 77 | then (minAmount > 0) | |
74 | 78 | else false) | |
75 | 79 | then (minPaymentIdx == 0) | |
76 | 80 | else false) | |
77 | 81 | then (maxPaymentIdx == (paymentsSize - 1)) | |
78 | 82 | else false) | |
79 | 83 | then (paymentsValidation._1 == paymentsSize) | |
80 | 84 | else false | |
81 | 85 | } | |
82 | 86 | ||
83 | 87 | ||
84 | 88 | @Callable(i) | |
85 | 89 | func massTransfer (recipients,amounts,paymentIdx,attachment) = { | |
86 | 90 | let pmt = value(i.payments[0]) | |
87 | - | let lp_address_pubkey = base58'9Pwum3va2xrkVwsGRNiTeGxBBBNFEDaS9sfkZiSpSvdQ' | |
88 | - | let masstransfer_whitelisted_address = addressFromPublicKey(lp_address_pubkey) | |
89 | 91 | if ((i.caller != masstransfer_whitelisted_address)) | |
90 | - | then throw((("Not an Admin only" + toString(masstransfer_whitelisted_address)) + " can sign it.")) | |
92 | + | then throw((("Not an Admin only " + toString(masstransfer_whitelisted_address)) + " can sign it.")) | |
91 | 93 | else if (isDefined(pmt.assetId)) | |
92 | 94 | then throw("Only Waves is allowed to Attach as payment.") | |
93 | 95 | else if (!(validateArguments(recipients, amounts, paymentIdx, i.payments))) | |
94 | 96 | then throw("Invalid arguments") | |
95 | 97 | else { | |
96 | 98 | let recipientsSize = size(recipients) | |
97 | 99 | func scriptTransfersGenerator (accum,next) = { | |
98 | - | let $ | |
99 | - | let scriptTransfers = $ | |
100 | - | let j = $ | |
100 | + | let $t023182350 = accum | |
101 | + | let scriptTransfers = $t023182350._1 | |
102 | + | let j = $t023182350._2 | |
101 | 103 | if ((j >= recipientsSize)) | |
102 | 104 | then $Tuple2(scriptTransfers, (j + 1)) | |
103 | 105 | else $Tuple2((scriptTransfers :+ ScriptTransfer(addressFromStringValue(recipients[j]), next, i.payments[paymentIdx[j]].assetId)), (j + 1)) | |
104 | 106 | } | |
105 | 107 | ||
106 | 108 | let result = { | |
107 | 109 | let $l = amounts | |
108 | 110 | let $s = size($l) | |
109 | 111 | let $acc0 = $Tuple2(nil, 0) | |
110 | 112 | func $f0_1 ($a,$i) = if (($i >= $s)) | |
111 | 113 | then $a | |
112 | 114 | else scriptTransfersGenerator($a, $l[$i]) | |
113 | 115 | ||
114 | 116 | func $f0_2 ($a,$i) = if (($i >= $s)) | |
115 | 117 | then $a | |
116 | 118 | else throw("List size exceeds 100") | |
117 | 119 | ||
118 | 120 | $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) | |
119 | 121 | } | |
120 | 122 | $Tuple2(result._1, unit) | |
121 | 123 | } | |
122 | 124 | } | |
123 | 125 | ||
124 | 126 | ||
127 | + | ||
128 | + | @Callable(i) | |
129 | + | func UpdateLPBalance (PaidMassTransferAmount) = { | |
130 | + | let read_account_balance = wavesBalance(this).regular | |
131 | + | let read_total_pool_liquidity = valueOrErrorMessage(getInteger(this, "Total_Pool_Liquidity"), "No Initial Pool Liquidity was Found.") | |
132 | + | let received_order_amount = (read_account_balance - read_total_pool_liquidity) | |
133 | + | let updated_pool_balance = ((read_total_pool_liquidity - PaidMassTransferAmount) + received_order_amount) | |
134 | + | let PreviousMassTransferCounter = match getInteger(this, "Mass_Transfer_Counter") { | |
135 | + | case a: Int => | |
136 | + | a | |
137 | + | case _ => | |
138 | + | 0 | |
139 | + | } | |
140 | + | let TotalMassTransferCounter = (PreviousMassTransferCounter + 1) | |
141 | + | let PreviousMassTransferSend = match getInteger(this, "Total_Mass_Transfer_Send") { | |
142 | + | case a: Int => | |
143 | + | a | |
144 | + | case _ => | |
145 | + | 0 | |
146 | + | } | |
147 | + | let TotalMassTransferSend = (PreviousMassTransferSend + PaidMassTransferAmount) | |
148 | + | if ((i.caller != masstransfer_whitelisted_address)) | |
149 | + | then throw((("This Address is not Authorized. Only " + toString(masstransfer_whitelisted_address)) + " is Authorized Address to Sign it.")) | |
150 | + | else if ((PaidMassTransferAmount > read_total_pool_liquidity)) | |
151 | + | then throw("Placed Mass Transfer Amount Size is more than Total Pool Liquidity.") | |
152 | + | 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(addressFromPublicKey(lp_address_pubkey), PaidMassTransferAmount, unit)] | |
153 | + | } | |
154 | + | ||
155 | + |
github/deemru/w8io/026f985 40.26 ms ◑