tx · EmXYdeHoPaaskeoD2m5thsGD2SG6Nt1YJQKL8Dyd5Gbi 3N5ecXT7MHB6z33Ms2Pvy6thNVBMeacaACo: -0.01500000 Waves 2023.08.17 11:42 [2714369] smart account 3N5ecXT7MHB6z33Ms2Pvy6thNVBMeacaACo > SELF 0.00000000 Waves
{ "type": 13, "id": "EmXYdeHoPaaskeoD2m5thsGD2SG6Nt1YJQKL8Dyd5Gbi", "fee": 1500000, "feeAssetId": null, "timestamp": 1692261723327, "version": 2, "chainId": 84, "sender": "3N5ecXT7MHB6z33Ms2Pvy6thNVBMeacaACo", "senderPublicKey": "3WPc9rDre1YBs13teGnzt1PnEEQZXaaSTRU1tVuqLa4Z", "proofs": [ "tBGjNsML7HUbgBNwXvbBqgzRCWySgrxwzRbrZKunMW66BUSopuA3KhCaPhtfZczLA72KjefkVFDdb5M4Pg7uQsH", "2JftYc2k8epBDGKcLLvBDLCYEE8i1NBvtMLs2rpeFJLFx6RvksfpwnhC8qExkd64uGhuLuTsFib7Vzv4P3ZigFLa" ], "script": "base64:BgI/CAISDQoLGBgBAQEBAQEBCAgSABIAEgQKAgEIEgQKAgEIEgQKAgEIEgQKAgEIEgQKAgEIEgQKAgEIEgQKAgEIMQAUSU5JVElBTF9UT0tFTl9BTU9VTlQAgICapuqv4wEADVBFUkNFTlRfU0NBTEUA6AcADGtXRGFvQWRkcmVzcwILd0Rhb0FkZHJlc3MAC2tXRGFvQW1vdW50Agp3RGFvQW1vdW50AAlrV0Rhb0xvY2sCDndEYW9Mb2NrUGVyaW9kAAxrV0Rhb1Zlc3RpbmcCEXdEYW9WZXN0aW5nUGVyaW9kAA9rV0Rhb1dpdGhkcmF3ZWQCDndEYW9XaXRoZHJhd2VkAAxrVGVhbUFkZHJlc3MCC3RlYW1BZGRyZXNzAAtrVGVhbUFtb3VudAIKdGVhbUFtb3VudAAJa1RlYW1Mb2NrAg50ZWFtTG9ja1BlcmlvZAAMa1RlYW1WZXN0aW5nAhF0ZWFtVmVzdGluZ1BlcmlvZAAPa1RlYW1XaXRoZHJhd2VkAg50ZWFtV2l0aGRyYXdlZAAQa01hcmtldGluZ0Ftb3VudAIMbWFya2V0QW1vdW50ABRrTWFya2V0aW5nV2l0aGRyYXdlZAITbWFya2V0aW5nV2l0aGRyYXdlZAAOa1BhcnRuZXJBbW91bnQCDXBhcnRuZXJBbW91bnQAE2tQYXJ0bmVyc1dpdGhkcmF3ZWQCEnBhcnRuZXJzV2l0aGRyYXdlZAAQa1JldHJvRHJvcEFtb3VudAIPcmV0cm9Ecm9wQW1vdW50ABRrUmV0cm9Ecm9wV2l0aGRyYXdlZAITcmV0cm9Ecm9wV2l0aGRyYXdlZAARa0xlbmRSZXdhcmRBbW91bnQCEWxlbmRSZXdhcmRzQW1vdW50ABVrTGVuZFJld2FyZFdpdGhkcmF3ZWQCFGxlbmRSZXdhcmRXaXRoZHJhd2VkAA9rTFBSZXdhcmRBbW91bnQCDmxwUmV3YXJkQW1vdW50ABNrTFBSZXdhcmRXaXRoZHJhd2VkAhJscFJld2FyZFdpdGhkcmF3ZWQAD2tQb29sSW5pdEFtb3VudAIOcG9vbEluaXRBbW91bnQAE2tQb29sSW5pdFdpdGhkcmF3ZWQCEnBvb2xJbml0V2l0aGRyYXdlZAAQa0xhdW5jaHBhZEFtb3VudAIPbGF1bmNocGFkQW1vdW50ABRrTGF1bmNocGFkV2l0aGRyYXdlZAITbGF1bmNocGFkV2l0aGRyYXdlZAAMa0FYTFlUb2tlbklkAgtheGx5VG9rZW5JZAAMa1N0YXJ0SGVpZ2h0AgtzdGFydEhlaWdodAAJa0FkbWluMVBLAhVncm91cDFfYWRtaW4xX3B1Yl9rZXkACWtBZG1pbjJQSwIVZ3JvdXAxX2FkbWluMl9wdWJfa2V5AAlrQWRtaW4zUEsCFWdyb3VwMV9hZG1pbjNfcHViX2tleQARa0F4bHlNYWluQ29udHJhY3QCDG1haW5Db250cmFjdAAMa0F4bHlGYXJtaW5nAg5mYXJtaW5nQWRkcmVzcwAMbWFpbkNvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwURa0F4bHlNYWluQ29udHJhY3QCGUNhbid0IGdldCBtYWluQ29udGFjdCBrZXkADmZhcm1pbmdBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUMa0F4bHlGYXJtaW5nAhxDYW4ndCBnZXQgZmFybWluZ0FkZHJlc3Mga2V5AAhhZG1pbjFQSwkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUMbWFpbkNvbnRyYWN0BQlrQWRtaW4xUEsCEkNhbid0IGdldCBhZG1pbjFQSwAIYWRtaW4yUEsJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDG1haW5Db250cmFjdAUJa0FkbWluMlBLAhJDYW4ndCBnZXQgYWRtaW4yUEsACGFkbWluM1BLCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQxtYWluQ29udHJhY3QFCWtBZG1pbjNQSwISQ2FuJ3QgZ2V0IGFkbWluM1BLAAZBWExZSWQJANkEAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUMa0FYTFlUb2tlbklkAQtpc0FkbWluQ2FsbAEBaQMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFCGFkbWluMVBLCQDMCAIFCGFkbWluMlBLCQDMCAIFCGFkbWluM1BLBQNuaWwIBQFpD2NhbGxlclB1YmxpY0tleQUEdW5pdAkAAgECKE9ubHkgYWRtaW4gZ3JvdXAxIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24BCmlzU2VsZkNhbGwBAWkDCQAAAggFAWkGY2FsbGVyBQR0aGlzBQR1bml0CQACAQIrT25seSBjb250cmFjdCBpdHNlbGYgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgENaXNGYXJtaW5nQ2FsbAEBaQMJAAACCAUBaQZjYWxsZXIFDmZhcm1pbmdBZGRyZXNzBQR1bml0CQACAQIsT25seSBmYXJtaW5nIGNvbnRyYWN0IGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24BGXBhcnNlUGVyY2VudFBhcmFtVG9BbW91bnQBBXBhcmFtBAdwZXJjZW50BAckbWF0Y2gwBQVwYXJhbQMJAAECBQckbWF0Y2gwAgNJbnQEAXAFByRtYXRjaDAFAXADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFwBQckbWF0Y2gwCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQUBcAIdQ2FuJ3QgcGFyc2UgcGVyY2VudCBpbiBwYXJhbXMJAAIBAgtNYXRjaCBlcnJvcgMDCQBnAgAABQdwZXJjZW50BgkAZwIFB3BlcmNlbnQFDVBFUkNFTlRfU0NBTEUJAAIBAjNwZXJjZW50IG11c3QgYmUgbnVtYmVyIGJldHdlZW4gMSgwLjEpIGFuZCA5OTkoOTkuOSkEBmFtb3VudAkAawMFFElOSVRJQUxfVE9LRU5fQU1PVU5UBQdwZXJjZW50BQ1QRVJDRU5UX1NDQUxFBQZhbW91bnQBFnBhcnNlTG9ja1Zlc3RpbmdQZXJpb2QCB2xvY2tTdHIHdmVzdFN0cgQKbG9ja1BlcmlvZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQC2CQEFB2xvY2tTdHICF0Nhbid0IHBhcnNlIGxvY2sgcGVyaW9kBA12ZXN0aW5nUGVyaW9kCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQUHdmVzdFN0cgIaQ2FuJ3QgcGFyc2UgdmVzdGluZyBwZXJpb2QDAwkAZwIAAAUKbG9ja1BlcmlvZAYJAGcCAAAFDXZlc3RpbmdQZXJpb2QJAAIBAjNsb2NrUGVyaW9kIGFuZCB2ZXN0aW5nUGVyaW9kIG11c3QgYmUgZ3JlYXRlciB0aGFuIDADCQBmAgUKbG9ja1BlcmlvZAUNdmVzdGluZ1BlcmlvZAkAAgECLXZlc3RpbmdQZXJpb2QgbXVzdCBiZSBncmVhdGVyIHRoYW4gbG9ja1BlcmlvZAkAlAoCBQpsb2NrUGVyaW9kBQ12ZXN0aW5nUGVyaW9kAQ92YWxpZGF0ZUFkZHJlc3MBBGFTdHIJAKUIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFBGFTdHICF1dyb25nIGFkZHJlc3MgaW4gcGFyYW1zARNwYXJzZVdEQU9UZWFtUGFyYW1zAQZwYXJhbXMEB2FkZHJlc3MJAQ92YWxpZGF0ZUFkZHJlc3MBCQCRAwIFBnBhcmFtcwAABAZhbW91bnQJARlwYXJzZVBlcmNlbnRQYXJhbVRvQW1vdW50AQkAkQMCBQZwYXJhbXMAAQQLJHQwNDU0MTQ2MTkJARZwYXJzZUxvY2tWZXN0aW5nUGVyaW9kAgkAkQMCBQZwYXJhbXMAAgkAkQMCBQZwYXJhbXMAAwQKbG9ja1BlcmlvZAgFCyR0MDQ1NDE0NjE5Al8xBA12ZXN0aW5nUGVyaW9kCAULJHQwNDU0MTQ2MTkCXzIJAJYKBAUHYWRkcmVzcwUGYW1vdW50BQpsb2NrUGVyaW9kBQ12ZXN0aW5nUGVyaW9kAQtwYXJzZVBhcmFtcwEGcGFyYW1zBAdhZGRyZXNzCQEPdmFsaWRhdGVBZGRyZXNzAQkAkQMCBQZwYXJhbXMAAAQGYW1vdW50CQEZcGFyc2VQZXJjZW50UGFyYW1Ub0Ftb3VudAEJAJEDAgUGcGFyYW1zAAEJAJQKAgUHYWRkcmVzcwUGYW1vdW50AQ93aXRoZHJhd1RlYW1EYW8GC3RvdGFsQW1vdW50CmxvY2tQZXJpb2QNdmVzdGluZ1BlcmlvZAp3aXRoZHJhd2VkB2FkZHJlc3MEd0tleQQLc3RhcnRIZWlnaHQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFDGtTdGFydEhlaWdodAQIbG9ja1RpbGwJAGQCBQtzdGFydEhlaWdodAUKbG9ja1BlcmlvZAQLY2FuV2l0aGRyYXcJAGUCCQBrAwULdG90YWxBbW91bnQJAJcDAQkAzAgCCQBlAgUGaGVpZ2h0CQBkAgULc3RhcnRIZWlnaHQFCmxvY2tQZXJpb2QJAMwIAgUNdmVzdGluZ1BlcmlvZAUDbmlsBQ12ZXN0aW5nUGVyaW9kBQp3aXRoZHJhd2VkAwkAZwIFCGxvY2tUaWxsBQZoZWlnaHQJAAIBAhZMb2NrIHBlcmlvZCBpcyBub3QgZW5kAwkAZwIAAAULY2FuV2l0aGRyYXcJAAIBAhNOb3RoaW5nIHRvIHdpdGhkcmF3CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQR3S2V5CQBkAgUKd2l0aGRyYXdlZAULY2FuV2l0aGRyYXcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUHYWRkcmVzcwULY2FuV2l0aGRyYXcFBkFYTFlJZAUDbmlsAQ93aXRoZHJhd1RvT3RoZXIFBmFtb3VudAt0b3RhbEFtb3VudAp3aXRoZHJhd2VkB2FkZHJlc3MEd0tleQMJAGcCAAAFBmFtb3VudAkAAgECHWFtb3VudCBtdXN0IGJlIHBvc2l0aXZlIHZhbHVlAwkAZgIJAGQCBQp3aXRoZHJhd2VkBQZhbW91bnQFC3RvdGFsQW1vdW50CQACAQkArAICCQCsAgIJAKwCAgIdWW91IGNhbid0IHdpdGhkcmF3IG1vcmUgdGhhbiAJAKQDAQULdG90YWxBbW91bnQCDyBZb3VyIGJhbGFuY2U6IAkApAMBCQBlAgULdG90YWxBbW91bnQFCndpdGhkcmF3ZWQJAMwIAgkBDEludGVnZXJFbnRyeQIFBHdLZXkJAGQCBQp3aXRoZHJhd2VkBQZhbW91bnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUHYWRkcmVzcwUGYW1vdW50BQZBWExZSWQFA25pbAoBaQEEaW5pdAsKd0Rhb1BhcmFtcwp0ZWFtUGFyYW1zEG1hcmtldGluZ1BlcmNlbnQOcGFydG5lclBlcmNlbnQQcmV0cm9Ecm9wUGVyY2VudBFsZW5kUmV3YXJkUGVyY2VudA9scFJld2FyZFBlcmNlbnQPcG9vbEluaXRQZXJjZW50EGxhdW5jaHBhZFBlcmNlbnQQbWFpbkNvbnRyYWN0QWRkcgtmYXJtaW5nQWRkcgkBC3ZhbHVlT3JFbHNlAgkBCmlzU2VsZkNhbGwBBQFpAwkBAiE9AgkAkAMBBQp3RGFvUGFyYW1zAAQJAAIBAht3RGFvUGFyYW1zIG11c3QgaGF2ZSA0IGFyZ3MDCQECIT0CCQCQAwEFCnRlYW1QYXJhbXMABAkAAgECG3RlYW1QYXJhbXMgbXVzdCBoYXZlIDQgYXJncwMJAGcCAAAFEG1hcmtldGluZ1BlcmNlbnQJAAIBAhxtYXJrZXRpbmdQZXJjZW50IG11c3QgYmUgPiAwAwkAZwIAAAUOcGFydG5lclBlcmNlbnQJAAIBAhpwYXJ0bmVyUGVyY2VudCBtdXN0IGJlID4gMAMJAGcCAAAFEHJldHJvRHJvcFBlcmNlbnQJAAIBAhxyZXRyb0Ryb3BQZXJjZW50IG11c3QgYmUgPiAwAwkAZwIAAAURbGVuZFJld2FyZFBlcmNlbnQJAAIBAhxsZW5kUmV3YXJkUGFyYW1zIG11c3QgYmUgPiAwAwkAZwIAAAUPbHBSZXdhcmRQZXJjZW50CQACAQIabHBSZXdhcmRQYXJhbXMgbXVzdCBiZSA+IDADCQBnAgAABQ9wb29sSW5pdFBlcmNlbnQJAAIBAhpwb29sSW5pdFBhcmFtcyBtdXN0IGJlID4gMAMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQULZmFybWluZ0FkZHIJAAIBAhVXcm9uZyBmYXJtaW5nIGFkZHJlc3MDCQEBIQEJAQlpc0RlZmluZWQBCQCmCAEFEG1haW5Db250cmFjdEFkZHIJAAIBAhtXcm9uZyBtYWluIGNvbnRyYWN0IGFkZHJlc3MECyR0MDcyNjk3MzY3CQETcGFyc2VXREFPVGVhbVBhcmFtcwEFCndEYW9QYXJhbXMEC3dEYW9BZGRyZXNzCAULJHQwNzI2OTczNjcCXzEECndEYW9BbW91bnQIBQskdDA3MjY5NzM2NwJfMgQOd0Rhb0xvY2tQZXJpb2QIBQskdDA3MjY5NzM2NwJfMwQRd0Rhb1Zlc3RpbmdQZXJpb2QIBQskdDA3MjY5NzM2NwJfNAQLJHQwNzM3MDc0NjgJARNwYXJzZVdEQU9UZWFtUGFyYW1zAQUKdGVhbVBhcmFtcwQLdGVhbUFkZHJlc3MIBQskdDA3MzcwNzQ2OAJfMQQKdGVhbUFtb3VudAgFCyR0MDczNzA3NDY4Al8yBA50ZWFtTG9ja1BlcmlvZAgFCyR0MDczNzA3NDY4Al8zBBF0ZWFtVmVzdGluZ1BlcmlvZAgFCyR0MDczNzA3NDY4Al80BAdtQW1vdW50CQEZcGFyc2VQZXJjZW50UGFyYW1Ub0Ftb3VudAEFEG1hcmtldGluZ1BlcmNlbnQEB3BBbW91bnQJARlwYXJzZVBlcmNlbnRQYXJhbVRvQW1vdW50AQUOcGFydG5lclBlcmNlbnQEB3JBbW91bnQJARlwYXJzZVBlcmNlbnRQYXJhbVRvQW1vdW50AQUQcmV0cm9Ecm9wUGVyY2VudAQHbEFtb3VudAkBGXBhcnNlUGVyY2VudFBhcmFtVG9BbW91bnQBBRFsZW5kUmV3YXJkUGVyY2VudAQIbHBBbW91bnQJARlwYXJzZVBlcmNlbnRQYXJhbVRvQW1vdW50AQUPbHBSZXdhcmRQZXJjZW50BAhwaUFtb3VudAkBGXBhcnNlUGVyY2VudFBhcmFtVG9BbW91bnQBBQ9wb29sSW5pdFBlcmNlbnQECGxhQW1vdW50CQEZcGFyc2VQZXJjZW50UGFyYW1Ub0Ftb3VudAEFEGxhdW5jaHBhZFBlcmNlbnQEA3N1bQkAZAIJAGQCCQBkAgkAZAIJAGQCCQBkAgkAZAIFCndEYW9BbW91bnQFCnRlYW1BbW91bnQFB21BbW91bnQFB3BBbW91bnQFB3JBbW91bnQFB2xBbW91bnQFCGxwQW1vdW50BQhwaUFtb3VudAMJAGYCBQNzdW0FFElOSVRJQUxfVE9LRU5fQU1PVU5UCQACAQIXV3JvbmcgcGVyY2VudHMoID4gMTAwJSkEBWlzc3VlCQDCCAUCBEFYTFkCE0FYTFkgcHJvdG9jb2wgdG9rZW4FFElOSVRJQUxfVE9LRU5fQU1PVU5UAAgHBAVpZFN0cgkA2AQBCQC4CAEFBWlzc3VlCQDMCAIJAQtTdHJpbmdFbnRyeQIFDGtXRGFvQWRkcmVzcwULd0Rhb0FkZHJlc3MJAMwIAgkBDEludGVnZXJFbnRyeQIFC2tXRGFvQW1vdW50BQp3RGFvQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrV0Rhb0xvY2sFDndEYW9Mb2NrUGVyaW9kCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQxrV0Rhb1Zlc3RpbmcFEXdEYW9WZXN0aW5nUGVyaW9kCQDMCAIJAQtTdHJpbmdFbnRyeQIFDGtUZWFtQWRkcmVzcwULdGVhbUFkZHJlc3MJAMwIAgkBDEludGVnZXJFbnRyeQIFC2tUZWFtQW1vdW50BQp0ZWFtQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrVGVhbUxvY2sFDnRlYW1Mb2NrUGVyaW9kCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQxrVGVhbVZlc3RpbmcFEXRlYW1WZXN0aW5nUGVyaW9kCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBrTWFya2V0aW5nQW1vdW50BQdtQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ5rUGFydG5lckFtb3VudAUHcEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUQa1JldHJvRHJvcEFtb3VudAUHckFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgURa0xlbmRSZXdhcmRBbW91bnQFB2xBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFD2tMUFJld2FyZEFtb3VudAUIbHBBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFD2tQb29sSW5pdEFtb3VudAUIcGlBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFEGtMYXVuY2hwYWRBbW91bnQFCGxhQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQxrU3RhcnRIZWlnaHQFBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCBRFrQXhseU1haW5Db250cmFjdAUQbWFpbkNvbnRyYWN0QWRkcgkAzAgCCQELU3RyaW5nRW50cnkCBQxrQXhseUZhcm1pbmcFC2Zhcm1pbmdBZGRyCQDMCAIFBWlzc3VlCQDMCAIJAQtTdHJpbmdFbnRyeQIFDGtBWExZVG9rZW5JZAUFaWRTdHIFA25pbAFpAQx3aXRoZHJhd1dEYW8ABAZhbW91bnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFC2tXRGFvQW1vdW50BApsb2NrUGVyaW9kCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQlrV0Rhb0xvY2sEDXZlc3RpbmdQZXJpb2QJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFDGtXRGFvVmVzdGluZwQHYWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUMa1dEYW9BZGRyZXNzBAp3aXRoZHJhd2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFD2tXRGFvV2l0aGRyYXdlZAAACQEPd2l0aGRyYXdUZWFtRGFvBgUGYW1vdW50BQpsb2NrUGVyaW9kBQ12ZXN0aW5nUGVyaW9kBQp3aXRoZHJhd2VkBQdhZGRyZXNzBQ9rV0Rhb1dpdGhkcmF3ZWQBaQEMd2l0aGRyYXdUZWFtAAQGYW1vdW50CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQtrVGVhbUFtb3VudAQKbG9ja1BlcmlvZAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUJa1RlYW1Mb2NrBA12ZXN0aW5nUGVyaW9kCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQxrVGVhbVZlc3RpbmcEB2FkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFDGtUZWFtQWRkcmVzcwQKd2l0aGRyYXdlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ9rVGVhbVdpdGhkcmF3ZWQAAAkBD3dpdGhkcmF3VGVhbURhbwYFBmFtb3VudAUKbG9ja1BlcmlvZAUNdmVzdGluZ1BlcmlvZAUKd2l0aGRyYXdlZAUHYWRkcmVzcwUPa1RlYW1XaXRoZHJhd2VkAWkBEXdpdGhkcmF3TWFya2V0aW5nAgZhbW91bnQKYWRkcmVzc1N0cgkBC3ZhbHVlT3JFbHNlAgkBCmlzU2VsZkNhbGwBBQFpBAt0b3RhbEFtb3VudAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUQa01hcmtldGluZ0Ftb3VudAQKd2l0aGRyYXdlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRRrTWFya2V0aW5nV2l0aGRyYXdlZAAABAdhZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBBQphZGRyZXNzU3RyCQEPd2l0aGRyYXdUb090aGVyBQUGYW1vdW50BQt0b3RhbEFtb3VudAUKd2l0aGRyYXdlZAUHYWRkcmVzcwUUa01hcmtldGluZ1dpdGhkcmF3ZWQBaQEQd2l0aGRyYXdQYXJ0bmVycwIGYW1vdW50CmFkZHJlc3NTdHIJAQt2YWx1ZU9yRWxzZQIJAQppc1NlbGZDYWxsAQUBaQQLdG90YWxBbW91bnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFDmtQYXJ0bmVyQW1vdW50BAp3aXRoZHJhd2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFE2tQYXJ0bmVyc1dpdGhkcmF3ZWQAAAQHYWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQUKYWRkcmVzc1N0cgkBD3dpdGhkcmF3VG9PdGhlcgUFBmFtb3VudAULdG90YWxBbW91bnQFCndpdGhkcmF3ZWQFB2FkZHJlc3MFE2tQYXJ0bmVyc1dpdGhkcmF3ZWQBaQERd2l0aGRyYXdSZXRyb0Ryb3ACBmFtb3VudAphZGRyZXNzU3RyCQELdmFsdWVPckVsc2UCCQEKaXNTZWxmQ2FsbAEFAWkEC3RvdGFsQW1vdW50CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBRBrUmV0cm9Ecm9wQW1vdW50BAp3aXRoZHJhd2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFFGtSZXRyb0Ryb3BXaXRoZHJhd2VkAAAEB2FkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCmFkZHJlc3NTdHIJAQ93aXRoZHJhd1RvT3RoZXIFBQZhbW91bnQFC3RvdGFsQW1vdW50BQp3aXRoZHJhd2VkBQdhZGRyZXNzBRRrUmV0cm9Ecm9wV2l0aGRyYXdlZAFpARB3aXRoZHJhd1BvbGxJbml0AgZhbW91bnQKYWRkcmVzc1N0cgkBC3ZhbHVlT3JFbHNlAgkBCmlzU2VsZkNhbGwBBQFpBAt0b3RhbEFtb3VudAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUPa1Bvb2xJbml0QW1vdW50BAp3aXRoZHJhd2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFE2tQb29sSW5pdFdpdGhkcmF3ZWQAAAQHYWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQUKYWRkcmVzc1N0cgkBD3dpdGhkcmF3VG9PdGhlcgUFBmFtb3VudAULdG90YWxBbW91bnQFCndpdGhkcmF3ZWQFB2FkZHJlc3MFE2tQb29sSW5pdFdpdGhkcmF3ZWQBaQESd2l0aGRyYXdMZW5kUmV3YXJkAgZhbW91bnQMYWRkcmVzc1RvU3RyCQELdmFsdWVPckVsc2UCCQENaXNGYXJtaW5nQ2FsbAEFAWkEC3RvdGFsQW1vdW50CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBRFrTGVuZFJld2FyZEFtb3VudAQKd2l0aGRyYXdlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRVrTGVuZFJld2FyZFdpdGhkcmF3ZWQAAAQHYWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQUMYWRkcmVzc1RvU3RyCQEPd2l0aGRyYXdUb090aGVyBQUGYW1vdW50BQt0b3RhbEFtb3VudAUKd2l0aGRyYXdlZAUHYWRkcmVzcwUVa0xlbmRSZXdhcmRXaXRoZHJhd2VkAWkBEHdpdGhkcmF3THBSZXdhcmQCBmFtb3VudAxhZGRyZXNzVG9TdHIJAQt2YWx1ZU9yRWxzZQIJAQ1pc0Zhcm1pbmdDYWxsAQUBaQQLdG90YWxBbW91bnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFD2tMUFJld2FyZEFtb3VudAQKd2l0aGRyYXdlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRNrTFBSZXdhcmRXaXRoZHJhd2VkAAAEB2FkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEFDGFkZHJlc3NUb1N0cgkBD3dpdGhkcmF3VG9PdGhlcgUFBmFtb3VudAULdG90YWxBbW91bnQFCndpdGhkcmF3ZWQFB2FkZHJlc3MFE2tMUFJld2FyZFdpdGhkcmF3ZWQBaQERd2l0aGRyYXdMYXVuY2hwYWQCBmFtb3VudAxhZGRyZXNzVG9TdHIJAQt2YWx1ZU9yRWxzZQIJAQppc1NlbGZDYWxsAQUBaQQLdG90YWxBbW91bnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFEGtMYXVuY2hwYWRBbW91bnQECndpdGhkcmF3ZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUUa0xhdW5jaHBhZFdpdGhkcmF3ZWQAAAQHYWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQUMYWRkcmVzc1RvU3RyCQEPd2l0aGRyYXdUb090aGVyBQUGYW1vdW50BQt0b3RhbEFtb3VudAUKd2l0aGRyYXdlZAUHYWRkcmVzcwUUa0xhdW5jaHBhZFdpdGhkcmF3ZWQBAnR4AQZ2ZXJpZnkABBNtdWx0aVNpZ25lZEJ5QWRtaW5zBBJhZG1pblB1YktleTFTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQhhZG1pbjFQSwABAAAEEmFkbWluUHViS2V5MlNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAEFCGFkbWluMlBLAAEAAAQSYWRtaW5QdWJLZXkzU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAgUIYWRtaW4zUEsAAQAACQBnAgkAZAIJAGQCBRJhZG1pblB1YktleTFTaWduZWQFEmFkbWluUHViS2V5MlNpZ25lZAUSYWRtaW5QdWJLZXkzU2lnbmVkAAIEByRtYXRjaDAFAnR4AwkAAQIFByRtYXRjaDACF0ludm9rZVNjcmlwdFRyYW5zYWN0aW9uBANpbnYFByRtYXRjaDAEBmlzU2VsZgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleQQKaXNSaWdodEZlZQMJAAACCAUDaW52A2ZlZQCguY4wCQAAAggFA2ludgpmZWVBc3NldElkBQR1bml0BwQKaXNJbml0Q2FsbAkAAAIIBQNpbnYIZnVuY3Rpb24CBGluaXQEDGlzbm9QYXltZW50cwkAAAIJAJADAQgFA2ludghwYXltZW50cwAAAwMDAwUKaXNSaWdodEZlZQUKaXNJbml0Q2FsbAcFBmlzU2VsZgcFDGlzbm9QYXltZW50cwcGBRNtdWx0aVNpZ25lZEJ5QWRtaW5zBRNtdWx0aVNpZ25lZEJ5QWRtaW5z9fZ53A==", "height": 2714369, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: G1pV52N1z7QqxYVYtun2utbbnWZcCguKSv8ZGyt1wgMa Next: none Diff:
Old | New | Differences | |
---|---|---|---|
156 | 156 | func aj (ak,aa,ab,al,ag,am) = { | |
157 | 157 | let an = getIntegerValue(this, B) | |
158 | 158 | let ao = (an + aa) | |
159 | - | let ap = ((an + aa) + ab) | |
160 | - | let aq = (fraction(ak, min([(height - (an + aa)), ap]), ab) - al) | |
159 | + | let ap = (fraction(ak, min([(height - (an + aa)), ab]), ab) - al) | |
161 | 160 | if ((ao >= height)) | |
162 | 161 | then throw("Lock period is not end") | |
163 | - | else if ((0 >= | |
162 | + | else if ((0 >= ap)) | |
164 | 163 | then throw("Nothing to withdraw") | |
165 | - | else [IntegerEntry(am, (al + | |
164 | + | else [IntegerEntry(am, (al + ap)), ScriptTransfer(ag, ap, M)] | |
166 | 165 | } | |
167 | 166 | ||
168 | 167 | ||
169 | - | func ar (W,ak,al,ag,am) = if (((al + W) > ak)) | |
170 | - | then throw(((("You can't withdraw more than " + toString(ak)) + " already withdrawed: ") + toString(al))) | |
171 | - | else [IntegerEntry(am, (al + W)), ScriptTransfer(ag, W, M)] | |
168 | + | func aq (W,ak,al,ag,am) = if ((0 >= W)) | |
169 | + | then throw("amount must be positive value") | |
170 | + | else if (((al + W) > ak)) | |
171 | + | then throw(((("You can't withdraw more than " + toString(ak)) + " Your balance: ") + toString((ak - al)))) | |
172 | + | else [IntegerEntry(am, (al + W)), ScriptTransfer(ag, W, M)] | |
172 | 173 | ||
173 | 174 | ||
174 | 175 | @Callable(O) | |
175 | - | func init (as,at,au,av,aw,ax,ay,az,aA,aB | |
176 | + | func init (ar,as,at,au,av,aw,ax,ay,az,aA,aB) = valueOrElse(P(O), if ((size(ar) != 4)) | |
176 | 177 | then throw("wDaoParams must have 4 args") | |
177 | - | else if ((size( | |
178 | + | else if ((size(as) != 4)) | |
178 | 179 | then throw("teamParams must have 4 args") | |
179 | - | else if ((0 >= | |
180 | + | else if ((0 >= at)) | |
180 | 181 | then throw("marketingPercent must be > 0") | |
181 | - | else if ((0 >= | |
182 | + | else if ((0 >= au)) | |
182 | 183 | then throw("partnerPercent must be > 0") | |
183 | - | else if ((0 >= | |
184 | + | else if ((0 >= av)) | |
184 | 185 | then throw("retroDropPercent must be > 0") | |
185 | - | else if ((0 >= | |
186 | + | else if ((0 >= aw)) | |
186 | 187 | then throw("lendRewardParams must be > 0") | |
187 | - | else if ((0 >= | |
188 | + | else if ((0 >= ax)) | |
188 | 189 | then throw("lpRewardParams must be > 0") | |
189 | - | else if ((0 >= | |
190 | + | else if ((0 >= ay)) | |
190 | 191 | then throw("poolInitParams must be > 0") | |
191 | - | else if (!(isDefined(addressFromString( | |
192 | + | else if (!(isDefined(addressFromString(aB)))) | |
192 | 193 | then throw("Wrong farming address") | |
193 | - | else if (!(isDefined(addressFromString( | |
194 | + | else if (!(isDefined(addressFromString(aA)))) | |
194 | 195 | then throw("Wrong main contract address") | |
195 | 196 | else { | |
196 | - | let aD = ae(as) | |
197 | - | let aE = aD._1 | |
198 | - | let aF = aD._2 | |
199 | - | let aG = aD._3 | |
200 | - | let aH = aD._4 | |
201 | - | let aI = ae(at) | |
202 | - | let aJ = aI._1 | |
203 | - | let aK = aI._2 | |
204 | - | let aL = aI._3 | |
205 | - | let aM = aI._4 | |
197 | + | let aC = ae(ar) | |
198 | + | let aD = aC._1 | |
199 | + | let aE = aC._2 | |
200 | + | let aF = aC._3 | |
201 | + | let aG = aC._4 | |
202 | + | let aH = ae(as) | |
203 | + | let aI = aH._1 | |
204 | + | let aJ = aH._2 | |
205 | + | let aK = aH._3 | |
206 | + | let aL = aH._4 | |
207 | + | let aM = R(at) | |
206 | 208 | let aN = R(au) | |
207 | 209 | let aO = R(av) | |
208 | 210 | let aP = R(aw) | |
209 | 211 | let aQ = R(ax) | |
210 | 212 | let aR = R(ay) | |
211 | 213 | let aS = R(az) | |
212 | - | let aT = R(aA) | |
213 | - | let aU = (((((((aF + aK) + aN) + aO) + aP) + aQ) + aR) + aS) | |
214 | - | if ((aU > a)) | |
214 | + | let aT = (((((((aE + aJ) + aM) + aN) + aO) + aP) + aQ) + aR) | |
215 | + | if ((aT > a)) | |
215 | 216 | then throw("Wrong percents( > 100%)") | |
216 | 217 | else { | |
217 | - | let | |
218 | - | let | |
219 | - | [StringEntry(c, aE), IntegerEntry( | |
218 | + | let aU = Issue("AXLY", "AXLY protocol token", a, 8, false) | |
219 | + | let aV = toBase58String(calculateAssetId(aU)) | |
220 | + | [StringEntry(c, aD), IntegerEntry(d, aE), IntegerEntry(e, aF), IntegerEntry(f, aG), StringEntry(h, aI), IntegerEntry(i, aJ), IntegerEntry(j, aK), IntegerEntry(k, aL), IntegerEntry(m, aM), IntegerEntry(o, aN), IntegerEntry(q, aO), IntegerEntry(s, aP), IntegerEntry(u, aQ), IntegerEntry(w, aR), IntegerEntry(y, aS), IntegerEntry(B, height), StringEntry(F, aA), StringEntry(G, aB), aU, StringEntry(A, aV)] | |
220 | 221 | } | |
221 | 222 | }) | |
222 | 223 | ||
247 | 248 | ||
248 | 249 | ||
249 | 250 | @Callable(O) | |
250 | - | func withdrawMarketing (W, | |
251 | + | func withdrawMarketing (W,aW) = valueOrElse(P(O), { | |
251 | 252 | let ak = getIntegerValue(this, m) | |
252 | 253 | let al = valueOrElse(getInteger(this, n), 0) | |
253 | - | let ag = addressFromStringValue( | |
254 | - | | |
254 | + | let ag = addressFromStringValue(aW) | |
255 | + | aq(W, ak, al, ag, n) | |
255 | 256 | }) | |
256 | 257 | ||
257 | 258 | ||
258 | 259 | ||
259 | 260 | @Callable(O) | |
260 | - | func withdrawPartners (W, | |
261 | + | func withdrawPartners (W,aW) = valueOrElse(P(O), { | |
261 | 262 | let ak = getIntegerValue(this, o) | |
262 | 263 | let al = valueOrElse(getInteger(this, p), 0) | |
263 | - | let ag = addressFromStringValue( | |
264 | - | | |
264 | + | let ag = addressFromStringValue(aW) | |
265 | + | aq(W, ak, al, ag, p) | |
265 | 266 | }) | |
266 | 267 | ||
267 | 268 | ||
268 | 269 | ||
269 | 270 | @Callable(O) | |
270 | - | func | |
271 | + | func withdrawRetroDrop (W,aW) = valueOrElse(P(O), { | |
271 | 272 | let ak = getIntegerValue(this, q) | |
272 | 273 | let al = valueOrElse(getInteger(this, r), 0) | |
273 | - | let ag = addressFromStringValue( | |
274 | - | | |
274 | + | let ag = addressFromStringValue(aW) | |
275 | + | aq(W, ak, al, ag, r) | |
275 | 276 | }) | |
276 | 277 | ||
277 | 278 | ||
278 | 279 | ||
279 | 280 | @Callable(O) | |
280 | - | func withdrawPollInit (W, | |
281 | + | func withdrawPollInit (W,aW) = valueOrElse(P(O), { | |
281 | 282 | let ak = getIntegerValue(this, w) | |
282 | 283 | let al = valueOrElse(getInteger(this, x), 0) | |
283 | - | let ag = addressFromStringValue( | |
284 | - | | |
284 | + | let ag = addressFromStringValue(aW) | |
285 | + | aq(W, ak, al, ag, x) | |
285 | 286 | }) | |
286 | 287 | ||
287 | 288 | ||
288 | 289 | ||
289 | 290 | @Callable(O) | |
290 | - | func withdrawLendReward (W, | |
291 | + | func withdrawLendReward (W,aX) = valueOrElse(Q(O), { | |
291 | 292 | let ak = getIntegerValue(this, s) | |
292 | 293 | let al = valueOrElse(getInteger(this, t), 0) | |
293 | - | let ag = addressFromStringValue( | |
294 | - | | |
294 | + | let ag = addressFromStringValue(aX) | |
295 | + | aq(W, ak, al, ag, t) | |
295 | 296 | }) | |
296 | 297 | ||
297 | 298 | ||
298 | 299 | ||
299 | 300 | @Callable(O) | |
300 | - | func withdrawLpReward (W, | |
301 | + | func withdrawLpReward (W,aX) = valueOrElse(Q(O), { | |
301 | 302 | let ak = getIntegerValue(this, u) | |
302 | 303 | let al = valueOrElse(getInteger(this, v), 0) | |
303 | - | let ag = addressFromStringValue( | |
304 | - | | |
304 | + | let ag = addressFromStringValue(aX) | |
305 | + | aq(W, ak, al, ag, v) | |
305 | 306 | }) | |
306 | 307 | ||
307 | 308 | ||
308 | 309 | ||
309 | 310 | @Callable(O) | |
310 | - | func withdrawLaunchpad (W, | |
311 | + | func withdrawLaunchpad (W,aX) = valueOrElse(P(O), { | |
311 | 312 | let ak = getIntegerValue(this, y) | |
312 | 313 | let al = valueOrElse(getInteger(this, z), 0) | |
313 | - | let ag = addressFromStringValue( | |
314 | - | | |
314 | + | let ag = addressFromStringValue(aX) | |
315 | + | aq(W, ak, al, ag, z) | |
315 | 316 | }) | |
316 | 317 | ||
317 | 318 | ||
318 | - | @Verifier( | |
319 | - | func | |
320 | - | let | |
321 | - | let | |
319 | + | @Verifier(aY) | |
320 | + | func aZ () = { | |
321 | + | let ba = { | |
322 | + | let bb = if (sigVerify(aY.bodyBytes, aY.proofs[0], J)) | |
322 | 323 | then 1 | |
323 | 324 | else 0 | |
324 | - | let | |
325 | + | let bc = if (sigVerify(aY.bodyBytes, aY.proofs[1], K)) | |
325 | 326 | then 1 | |
326 | 327 | else 0 | |
327 | - | let | |
328 | + | let bd = if (sigVerify(aY.bodyBytes, aY.proofs[2], L)) | |
328 | 329 | then 1 | |
329 | 330 | else 0 | |
330 | - | (((bc + bd | |
331 | + | (((bb + bc) + bd) >= 2) | |
331 | 332 | } | |
332 | - | let U = | |
333 | + | let U = aY | |
333 | 334 | if ($isInstanceOf(U, "InvokeScriptTransaction")) | |
334 | 335 | then { | |
335 | - | let | |
336 | - | let | |
337 | - | let | |
338 | - | then ( | |
336 | + | let be = U | |
337 | + | let bf = sigVerify(aY.bodyBytes, aY.proofs[0], aY.senderPublicKey) | |
338 | + | let bg = if ((be.fee == 100900000)) | |
339 | + | then (be.feeAssetId == unit) | |
339 | 340 | else false | |
340 | - | let bi = (bf.function == "init") | |
341 | - | let bj = (size(bf.payments) == 0) | |
342 | - | if (if (if (if (bh) | |
341 | + | let bh = (be.function == "init") | |
342 | + | let bi = (size(be.payments) == 0) | |
343 | + | if (if (if (if (bg) | |
344 | + | then bh | |
345 | + | else false) | |
346 | + | then bf | |
347 | + | else false) | |
343 | 348 | then bi | |
344 | 349 | else false) | |
345 | - | then bg | |
346 | - | else false) | |
347 | - | then bj | |
348 | - | else false) | |
349 | 350 | then true | |
350 | - | else | |
351 | + | else ba | |
351 | 352 | } | |
352 | - | else | |
353 | + | else ba | |
353 | 354 | } | |
354 | 355 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = 1000000000000000 | |
5 | 5 | ||
6 | 6 | let b = 1000 | |
7 | 7 | ||
8 | 8 | let c = "wDaoAddress" | |
9 | 9 | ||
10 | 10 | let d = "wDaoAmount" | |
11 | 11 | ||
12 | 12 | let e = "wDaoLockPeriod" | |
13 | 13 | ||
14 | 14 | let f = "wDaoVestingPeriod" | |
15 | 15 | ||
16 | 16 | let g = "wDaoWithdrawed" | |
17 | 17 | ||
18 | 18 | let h = "teamAddress" | |
19 | 19 | ||
20 | 20 | let i = "teamAmount" | |
21 | 21 | ||
22 | 22 | let j = "teamLockPeriod" | |
23 | 23 | ||
24 | 24 | let k = "teamVestingPeriod" | |
25 | 25 | ||
26 | 26 | let l = "teamWithdrawed" | |
27 | 27 | ||
28 | 28 | let m = "marketAmount" | |
29 | 29 | ||
30 | 30 | let n = "marketingWithdrawed" | |
31 | 31 | ||
32 | 32 | let o = "partnerAmount" | |
33 | 33 | ||
34 | 34 | let p = "partnersWithdrawed" | |
35 | 35 | ||
36 | 36 | let q = "retroDropAmount" | |
37 | 37 | ||
38 | 38 | let r = "retroDropWithdrawed" | |
39 | 39 | ||
40 | 40 | let s = "lendRewardsAmount" | |
41 | 41 | ||
42 | 42 | let t = "lendRewardWithdrawed" | |
43 | 43 | ||
44 | 44 | let u = "lpRewardAmount" | |
45 | 45 | ||
46 | 46 | let v = "lpRewardWithdrawed" | |
47 | 47 | ||
48 | 48 | let w = "poolInitAmount" | |
49 | 49 | ||
50 | 50 | let x = "poolInitWithdrawed" | |
51 | 51 | ||
52 | 52 | let y = "launchpadAmount" | |
53 | 53 | ||
54 | 54 | let z = "launchpadWithdrawed" | |
55 | 55 | ||
56 | 56 | let A = "axlyTokenId" | |
57 | 57 | ||
58 | 58 | let B = "startHeight" | |
59 | 59 | ||
60 | 60 | let C = "group1_admin1_pub_key" | |
61 | 61 | ||
62 | 62 | let D = "group1_admin2_pub_key" | |
63 | 63 | ||
64 | 64 | let E = "group1_admin3_pub_key" | |
65 | 65 | ||
66 | 66 | let F = "mainContract" | |
67 | 67 | ||
68 | 68 | let G = "farmingAddress" | |
69 | 69 | ||
70 | 70 | let H = addressFromStringValue(valueOrErrorMessage(getString(this, F), "Can't get mainContact key")) | |
71 | 71 | ||
72 | 72 | let I = addressFromStringValue(valueOrErrorMessage(getString(this, G), "Can't get farmingAddress key")) | |
73 | 73 | ||
74 | 74 | let J = fromBase58String(valueOrErrorMessage(getString(H, C), "Can't get admin1PK")) | |
75 | 75 | ||
76 | 76 | let K = fromBase58String(valueOrErrorMessage(getString(H, D), "Can't get admin2PK")) | |
77 | 77 | ||
78 | 78 | let L = fromBase58String(valueOrErrorMessage(getString(H, E), "Can't get admin3PK")) | |
79 | 79 | ||
80 | 80 | let M = fromBase58String(getStringValue(this, A)) | |
81 | 81 | ||
82 | 82 | func N (O) = if (containsElement([J, K, L], O.callerPublicKey)) | |
83 | 83 | then unit | |
84 | 84 | else throw("Only admin group1 can call this function") | |
85 | 85 | ||
86 | 86 | ||
87 | 87 | func P (O) = if ((O.caller == this)) | |
88 | 88 | then unit | |
89 | 89 | else throw("Only contract itself can call this function") | |
90 | 90 | ||
91 | 91 | ||
92 | 92 | func Q (O) = if ((O.caller == I)) | |
93 | 93 | then unit | |
94 | 94 | else throw("Only farming contract can call this function") | |
95 | 95 | ||
96 | 96 | ||
97 | 97 | func R (S) = { | |
98 | 98 | let T = { | |
99 | 99 | let U = S | |
100 | 100 | if ($isInstanceOf(U, "Int")) | |
101 | 101 | then { | |
102 | 102 | let V = U | |
103 | 103 | V | |
104 | 104 | } | |
105 | 105 | else if ($isInstanceOf(U, "String")) | |
106 | 106 | then { | |
107 | 107 | let V = U | |
108 | 108 | valueOrErrorMessage(parseInt(V), "Can't parse percent in params") | |
109 | 109 | } | |
110 | 110 | else throw("Match error") | |
111 | 111 | } | |
112 | 112 | if (if ((0 >= T)) | |
113 | 113 | then true | |
114 | 114 | else (T >= b)) | |
115 | 115 | then throw("percent must be number between 1(0.1) and 999(99.9)") | |
116 | 116 | else { | |
117 | 117 | let W = fraction(a, T, b) | |
118 | 118 | W | |
119 | 119 | } | |
120 | 120 | } | |
121 | 121 | ||
122 | 122 | ||
123 | 123 | func X (Y,Z) = { | |
124 | 124 | let aa = valueOrErrorMessage(parseInt(Y), "Can't parse lock period") | |
125 | 125 | let ab = valueOrErrorMessage(parseInt(Z), "Can't parse vesting period") | |
126 | 126 | if (if ((0 >= aa)) | |
127 | 127 | then true | |
128 | 128 | else (0 >= ab)) | |
129 | 129 | then throw("lockPeriod and vestingPeriod must be greater than 0") | |
130 | 130 | else if ((aa > ab)) | |
131 | 131 | then throw("vestingPeriod must be greater than lockPeriod") | |
132 | 132 | else $Tuple2(aa, ab) | |
133 | 133 | } | |
134 | 134 | ||
135 | 135 | ||
136 | 136 | func ac (ad) = toString(valueOrErrorMessage(addressFromString(ad), "Wrong address in params")) | |
137 | 137 | ||
138 | 138 | ||
139 | 139 | func ae (af) = { | |
140 | 140 | let ag = ac(af[0]) | |
141 | 141 | let W = R(af[1]) | |
142 | 142 | let ah = X(af[2], af[3]) | |
143 | 143 | let aa = ah._1 | |
144 | 144 | let ab = ah._2 | |
145 | 145 | $Tuple4(ag, W, aa, ab) | |
146 | 146 | } | |
147 | 147 | ||
148 | 148 | ||
149 | 149 | func ai (af) = { | |
150 | 150 | let ag = ac(af[0]) | |
151 | 151 | let W = R(af[1]) | |
152 | 152 | $Tuple2(ag, W) | |
153 | 153 | } | |
154 | 154 | ||
155 | 155 | ||
156 | 156 | func aj (ak,aa,ab,al,ag,am) = { | |
157 | 157 | let an = getIntegerValue(this, B) | |
158 | 158 | let ao = (an + aa) | |
159 | - | let ap = ((an + aa) + ab) | |
160 | - | let aq = (fraction(ak, min([(height - (an + aa)), ap]), ab) - al) | |
159 | + | let ap = (fraction(ak, min([(height - (an + aa)), ab]), ab) - al) | |
161 | 160 | if ((ao >= height)) | |
162 | 161 | then throw("Lock period is not end") | |
163 | - | else if ((0 >= | |
162 | + | else if ((0 >= ap)) | |
164 | 163 | then throw("Nothing to withdraw") | |
165 | - | else [IntegerEntry(am, (al + | |
164 | + | else [IntegerEntry(am, (al + ap)), ScriptTransfer(ag, ap, M)] | |
166 | 165 | } | |
167 | 166 | ||
168 | 167 | ||
169 | - | func ar (W,ak,al,ag,am) = if (((al + W) > ak)) | |
170 | - | then throw(((("You can't withdraw more than " + toString(ak)) + " already withdrawed: ") + toString(al))) | |
171 | - | else [IntegerEntry(am, (al + W)), ScriptTransfer(ag, W, M)] | |
168 | + | func aq (W,ak,al,ag,am) = if ((0 >= W)) | |
169 | + | then throw("amount must be positive value") | |
170 | + | else if (((al + W) > ak)) | |
171 | + | then throw(((("You can't withdraw more than " + toString(ak)) + " Your balance: ") + toString((ak - al)))) | |
172 | + | else [IntegerEntry(am, (al + W)), ScriptTransfer(ag, W, M)] | |
172 | 173 | ||
173 | 174 | ||
174 | 175 | @Callable(O) | |
175 | - | func init (as,at,au,av,aw,ax,ay,az,aA,aB | |
176 | + | func init (ar,as,at,au,av,aw,ax,ay,az,aA,aB) = valueOrElse(P(O), if ((size(ar) != 4)) | |
176 | 177 | then throw("wDaoParams must have 4 args") | |
177 | - | else if ((size( | |
178 | + | else if ((size(as) != 4)) | |
178 | 179 | then throw("teamParams must have 4 args") | |
179 | - | else if ((0 >= | |
180 | + | else if ((0 >= at)) | |
180 | 181 | then throw("marketingPercent must be > 0") | |
181 | - | else if ((0 >= | |
182 | + | else if ((0 >= au)) | |
182 | 183 | then throw("partnerPercent must be > 0") | |
183 | - | else if ((0 >= | |
184 | + | else if ((0 >= av)) | |
184 | 185 | then throw("retroDropPercent must be > 0") | |
185 | - | else if ((0 >= | |
186 | + | else if ((0 >= aw)) | |
186 | 187 | then throw("lendRewardParams must be > 0") | |
187 | - | else if ((0 >= | |
188 | + | else if ((0 >= ax)) | |
188 | 189 | then throw("lpRewardParams must be > 0") | |
189 | - | else if ((0 >= | |
190 | + | else if ((0 >= ay)) | |
190 | 191 | then throw("poolInitParams must be > 0") | |
191 | - | else if (!(isDefined(addressFromString( | |
192 | + | else if (!(isDefined(addressFromString(aB)))) | |
192 | 193 | then throw("Wrong farming address") | |
193 | - | else if (!(isDefined(addressFromString( | |
194 | + | else if (!(isDefined(addressFromString(aA)))) | |
194 | 195 | then throw("Wrong main contract address") | |
195 | 196 | else { | |
196 | - | let aD = ae(as) | |
197 | - | let aE = aD._1 | |
198 | - | let aF = aD._2 | |
199 | - | let aG = aD._3 | |
200 | - | let aH = aD._4 | |
201 | - | let aI = ae(at) | |
202 | - | let aJ = aI._1 | |
203 | - | let aK = aI._2 | |
204 | - | let aL = aI._3 | |
205 | - | let aM = aI._4 | |
197 | + | let aC = ae(ar) | |
198 | + | let aD = aC._1 | |
199 | + | let aE = aC._2 | |
200 | + | let aF = aC._3 | |
201 | + | let aG = aC._4 | |
202 | + | let aH = ae(as) | |
203 | + | let aI = aH._1 | |
204 | + | let aJ = aH._2 | |
205 | + | let aK = aH._3 | |
206 | + | let aL = aH._4 | |
207 | + | let aM = R(at) | |
206 | 208 | let aN = R(au) | |
207 | 209 | let aO = R(av) | |
208 | 210 | let aP = R(aw) | |
209 | 211 | let aQ = R(ax) | |
210 | 212 | let aR = R(ay) | |
211 | 213 | let aS = R(az) | |
212 | - | let aT = R(aA) | |
213 | - | let aU = (((((((aF + aK) + aN) + aO) + aP) + aQ) + aR) + aS) | |
214 | - | if ((aU > a)) | |
214 | + | let aT = (((((((aE + aJ) + aM) + aN) + aO) + aP) + aQ) + aR) | |
215 | + | if ((aT > a)) | |
215 | 216 | then throw("Wrong percents( > 100%)") | |
216 | 217 | else { | |
217 | - | let | |
218 | - | let | |
219 | - | [StringEntry(c, aE), IntegerEntry( | |
218 | + | let aU = Issue("AXLY", "AXLY protocol token", a, 8, false) | |
219 | + | let aV = toBase58String(calculateAssetId(aU)) | |
220 | + | [StringEntry(c, aD), IntegerEntry(d, aE), IntegerEntry(e, aF), IntegerEntry(f, aG), StringEntry(h, aI), IntegerEntry(i, aJ), IntegerEntry(j, aK), IntegerEntry(k, aL), IntegerEntry(m, aM), IntegerEntry(o, aN), IntegerEntry(q, aO), IntegerEntry(s, aP), IntegerEntry(u, aQ), IntegerEntry(w, aR), IntegerEntry(y, aS), IntegerEntry(B, height), StringEntry(F, aA), StringEntry(G, aB), aU, StringEntry(A, aV)] | |
220 | 221 | } | |
221 | 222 | }) | |
222 | 223 | ||
223 | 224 | ||
224 | 225 | ||
225 | 226 | @Callable(O) | |
226 | 227 | func withdrawWDao () = { | |
227 | 228 | let W = getIntegerValue(this, d) | |
228 | 229 | let aa = getIntegerValue(this, e) | |
229 | 230 | let ab = getIntegerValue(this, f) | |
230 | 231 | let ag = addressFromStringValue(getStringValue(this, c)) | |
231 | 232 | let al = valueOrElse(getInteger(this, g), 0) | |
232 | 233 | aj(W, aa, ab, al, ag, g) | |
233 | 234 | } | |
234 | 235 | ||
235 | 236 | ||
236 | 237 | ||
237 | 238 | @Callable(O) | |
238 | 239 | func withdrawTeam () = { | |
239 | 240 | let W = getIntegerValue(this, i) | |
240 | 241 | let aa = getIntegerValue(this, j) | |
241 | 242 | let ab = getIntegerValue(this, k) | |
242 | 243 | let ag = addressFromStringValue(getStringValue(this, h)) | |
243 | 244 | let al = valueOrElse(getInteger(this, l), 0) | |
244 | 245 | aj(W, aa, ab, al, ag, l) | |
245 | 246 | } | |
246 | 247 | ||
247 | 248 | ||
248 | 249 | ||
249 | 250 | @Callable(O) | |
250 | - | func withdrawMarketing (W, | |
251 | + | func withdrawMarketing (W,aW) = valueOrElse(P(O), { | |
251 | 252 | let ak = getIntegerValue(this, m) | |
252 | 253 | let al = valueOrElse(getInteger(this, n), 0) | |
253 | - | let ag = addressFromStringValue( | |
254 | - | | |
254 | + | let ag = addressFromStringValue(aW) | |
255 | + | aq(W, ak, al, ag, n) | |
255 | 256 | }) | |
256 | 257 | ||
257 | 258 | ||
258 | 259 | ||
259 | 260 | @Callable(O) | |
260 | - | func withdrawPartners (W, | |
261 | + | func withdrawPartners (W,aW) = valueOrElse(P(O), { | |
261 | 262 | let ak = getIntegerValue(this, o) | |
262 | 263 | let al = valueOrElse(getInteger(this, p), 0) | |
263 | - | let ag = addressFromStringValue( | |
264 | - | | |
264 | + | let ag = addressFromStringValue(aW) | |
265 | + | aq(W, ak, al, ag, p) | |
265 | 266 | }) | |
266 | 267 | ||
267 | 268 | ||
268 | 269 | ||
269 | 270 | @Callable(O) | |
270 | - | func | |
271 | + | func withdrawRetroDrop (W,aW) = valueOrElse(P(O), { | |
271 | 272 | let ak = getIntegerValue(this, q) | |
272 | 273 | let al = valueOrElse(getInteger(this, r), 0) | |
273 | - | let ag = addressFromStringValue( | |
274 | - | | |
274 | + | let ag = addressFromStringValue(aW) | |
275 | + | aq(W, ak, al, ag, r) | |
275 | 276 | }) | |
276 | 277 | ||
277 | 278 | ||
278 | 279 | ||
279 | 280 | @Callable(O) | |
280 | - | func withdrawPollInit (W, | |
281 | + | func withdrawPollInit (W,aW) = valueOrElse(P(O), { | |
281 | 282 | let ak = getIntegerValue(this, w) | |
282 | 283 | let al = valueOrElse(getInteger(this, x), 0) | |
283 | - | let ag = addressFromStringValue( | |
284 | - | | |
284 | + | let ag = addressFromStringValue(aW) | |
285 | + | aq(W, ak, al, ag, x) | |
285 | 286 | }) | |
286 | 287 | ||
287 | 288 | ||
288 | 289 | ||
289 | 290 | @Callable(O) | |
290 | - | func withdrawLendReward (W, | |
291 | + | func withdrawLendReward (W,aX) = valueOrElse(Q(O), { | |
291 | 292 | let ak = getIntegerValue(this, s) | |
292 | 293 | let al = valueOrElse(getInteger(this, t), 0) | |
293 | - | let ag = addressFromStringValue( | |
294 | - | | |
294 | + | let ag = addressFromStringValue(aX) | |
295 | + | aq(W, ak, al, ag, t) | |
295 | 296 | }) | |
296 | 297 | ||
297 | 298 | ||
298 | 299 | ||
299 | 300 | @Callable(O) | |
300 | - | func withdrawLpReward (W, | |
301 | + | func withdrawLpReward (W,aX) = valueOrElse(Q(O), { | |
301 | 302 | let ak = getIntegerValue(this, u) | |
302 | 303 | let al = valueOrElse(getInteger(this, v), 0) | |
303 | - | let ag = addressFromStringValue( | |
304 | - | | |
304 | + | let ag = addressFromStringValue(aX) | |
305 | + | aq(W, ak, al, ag, v) | |
305 | 306 | }) | |
306 | 307 | ||
307 | 308 | ||
308 | 309 | ||
309 | 310 | @Callable(O) | |
310 | - | func withdrawLaunchpad (W, | |
311 | + | func withdrawLaunchpad (W,aX) = valueOrElse(P(O), { | |
311 | 312 | let ak = getIntegerValue(this, y) | |
312 | 313 | let al = valueOrElse(getInteger(this, z), 0) | |
313 | - | let ag = addressFromStringValue( | |
314 | - | | |
314 | + | let ag = addressFromStringValue(aX) | |
315 | + | aq(W, ak, al, ag, z) | |
315 | 316 | }) | |
316 | 317 | ||
317 | 318 | ||
318 | - | @Verifier( | |
319 | - | func | |
320 | - | let | |
321 | - | let | |
319 | + | @Verifier(aY) | |
320 | + | func aZ () = { | |
321 | + | let ba = { | |
322 | + | let bb = if (sigVerify(aY.bodyBytes, aY.proofs[0], J)) | |
322 | 323 | then 1 | |
323 | 324 | else 0 | |
324 | - | let | |
325 | + | let bc = if (sigVerify(aY.bodyBytes, aY.proofs[1], K)) | |
325 | 326 | then 1 | |
326 | 327 | else 0 | |
327 | - | let | |
328 | + | let bd = if (sigVerify(aY.bodyBytes, aY.proofs[2], L)) | |
328 | 329 | then 1 | |
329 | 330 | else 0 | |
330 | - | (((bc + bd | |
331 | + | (((bb + bc) + bd) >= 2) | |
331 | 332 | } | |
332 | - | let U = | |
333 | + | let U = aY | |
333 | 334 | if ($isInstanceOf(U, "InvokeScriptTransaction")) | |
334 | 335 | then { | |
335 | - | let | |
336 | - | let | |
337 | - | let | |
338 | - | then ( | |
336 | + | let be = U | |
337 | + | let bf = sigVerify(aY.bodyBytes, aY.proofs[0], aY.senderPublicKey) | |
338 | + | let bg = if ((be.fee == 100900000)) | |
339 | + | then (be.feeAssetId == unit) | |
339 | 340 | else false | |
340 | - | let bi = (bf.function == "init") | |
341 | - | let bj = (size(bf.payments) == 0) | |
342 | - | if (if (if (if (bh) | |
341 | + | let bh = (be.function == "init") | |
342 | + | let bi = (size(be.payments) == 0) | |
343 | + | if (if (if (if (bg) | |
344 | + | then bh | |
345 | + | else false) | |
346 | + | then bf | |
347 | + | else false) | |
343 | 348 | then bi | |
344 | 349 | else false) | |
345 | - | then bg | |
346 | - | else false) | |
347 | - | then bj | |
348 | - | else false) | |
349 | 350 | then true | |
350 | - | else | |
351 | + | else ba | |
351 | 352 | } | |
352 | - | else | |
353 | + | else ba | |
353 | 354 | } | |
354 | 355 |
github/deemru/w8io/169f3d6 68.83 ms ◑