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:
OldNewDifferences
150150 func withdrawTeamDao (totalAmount,lockPeriod,vestingPeriod,withdrawed,address,wKey) = {
151151 let startHeight = getIntegerValue(this, kStartHeight)
152152 let lockTill = (startHeight + lockPeriod)
153- let vestingTill = ((startHeight + lockPeriod) + vestingPeriod)
154- let canWithdraw = (fraction(totalAmount, min([(height - (startHeight + lockPeriod)), vestingTill]), vestingPeriod) - withdrawed)
153+ let canWithdraw = (fraction(totalAmount, min([(height - (startHeight + lockPeriod)), vestingPeriod]), vestingPeriod) - withdrawed)
155154 if ((lockTill >= height))
156155 then throw("Lock period is not end")
157156 else if ((0 >= canWithdraw))
160159 }
161160
162161
163-func withdrawToOther (amount,totalAmount,withdrawed,address,wKey) = if (((withdrawed + amount) > totalAmount))
164- then throw(((("You can't withdraw more than " + toString(totalAmount)) + " already withdrawed: ") + toString(withdrawed)))
165- else [IntegerEntry(wKey, (withdrawed + amount)), ScriptTransfer(address, amount, AXLYId)]
162+func withdrawToOther (amount,totalAmount,withdrawed,address,wKey) = if ((0 >= amount))
163+ then throw("amount must be positive value")
164+ else if (((withdrawed + amount) > totalAmount))
165+ then throw(((("You can't withdraw more than " + toString(totalAmount)) + " Your balance: ") + toString((totalAmount - withdrawed))))
166+ else [IntegerEntry(wKey, (withdrawed + amount)), ScriptTransfer(address, amount, AXLYId)]
166167
167168
168169 @Callable(i)
187188 else if (!(isDefined(addressFromString(mainContractAddr))))
188189 then throw("Wrong main contract address")
189190 else {
190- let $t072527350 = parseWDAOTeamParams(wDaoParams)
191- let wDaoAddress = $t072527350._1
192- let wDaoAmount = $t072527350._2
193- let wDaoLockPeriod = $t072527350._3
194- let wDaoVestingPeriod = $t072527350._4
195- let $t073537451 = parseWDAOTeamParams(teamParams)
196- let teamAddress = $t073537451._1
197- let teamAmount = $t073537451._2
198- let teamLockPeriod = $t073537451._3
199- let teamVestingPeriod = $t073537451._4
191+ let $t072697367 = parseWDAOTeamParams(wDaoParams)
192+ let wDaoAddress = $t072697367._1
193+ let wDaoAmount = $t072697367._2
194+ let wDaoLockPeriod = $t072697367._3
195+ let wDaoVestingPeriod = $t072697367._4
196+ let $t073707468 = parseWDAOTeamParams(teamParams)
197+ let teamAddress = $t073707468._1
198+ let teamAmount = $t073707468._2
199+ let teamLockPeriod = $t073707468._3
200+ let teamVestingPeriod = $t073707468._4
200201 let mAmount = parsePercentParamToAmount(marketingPercent)
201202 let pAmount = parsePercentParamToAmount(partnerPercent)
202203 let rAmount = parsePercentParamToAmount(retroDropPercent)
261262
262263
263264 @Callable(i)
264-func withdrawRetroDraop (amount,addressStr) = valueOrElse(isSelfCall(i), {
265+func withdrawRetroDrop (amount,addressStr) = valueOrElse(isSelfCall(i), {
265266 let totalAmount = getIntegerValue(this, kRetroDropAmount)
266267 let withdrawed = valueOrElse(getInteger(this, kRetroDropWithdrawed), 0)
267268 let address = addressFromStringValue(addressStr)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let INITIAL_TOKEN_AMOUNT = 1000000000000000
55
66 let PERCENT_SCALE = 1000
77
88 let kWDaoAddress = "wDaoAddress"
99
1010 let kWDaoAmount = "wDaoAmount"
1111
1212 let kWDaoLock = "wDaoLockPeriod"
1313
1414 let kWDaoVesting = "wDaoVestingPeriod"
1515
1616 let kWDaoWithdrawed = "wDaoWithdrawed"
1717
1818 let kTeamAddress = "teamAddress"
1919
2020 let kTeamAmount = "teamAmount"
2121
2222 let kTeamLock = "teamLockPeriod"
2323
2424 let kTeamVesting = "teamVestingPeriod"
2525
2626 let kTeamWithdrawed = "teamWithdrawed"
2727
2828 let kMarketingAmount = "marketAmount"
2929
3030 let kMarketingWithdrawed = "marketingWithdrawed"
3131
3232 let kPartnerAmount = "partnerAmount"
3333
3434 let kPartnersWithdrawed = "partnersWithdrawed"
3535
3636 let kRetroDropAmount = "retroDropAmount"
3737
3838 let kRetroDropWithdrawed = "retroDropWithdrawed"
3939
4040 let kLendRewardAmount = "lendRewardsAmount"
4141
4242 let kLendRewardWithdrawed = "lendRewardWithdrawed"
4343
4444 let kLPRewardAmount = "lpRewardAmount"
4545
4646 let kLPRewardWithdrawed = "lpRewardWithdrawed"
4747
4848 let kPoolInitAmount = "poolInitAmount"
4949
5050 let kPoolInitWithdrawed = "poolInitWithdrawed"
5151
5252 let kLaunchpadAmount = "launchpadAmount"
5353
5454 let kLaunchpadWithdrawed = "launchpadWithdrawed"
5555
5656 let kAXLYTokenId = "axlyTokenId"
5757
5858 let kStartHeight = "startHeight"
5959
6060 let kAdmin1PK = "group1_admin1_pub_key"
6161
6262 let kAdmin2PK = "group1_admin2_pub_key"
6363
6464 let kAdmin3PK = "group1_admin3_pub_key"
6565
6666 let kAxlyMainContract = "mainContract"
6767
6868 let kAxlyFarming = "farmingAddress"
6969
7070 let mainContract = addressFromStringValue(valueOrErrorMessage(getString(this, kAxlyMainContract), "Can't get mainContact key"))
7171
7272 let farmingAddress = addressFromStringValue(valueOrErrorMessage(getString(this, kAxlyFarming), "Can't get farmingAddress key"))
7373
7474 let admin1PK = fromBase58String(valueOrErrorMessage(getString(mainContract, kAdmin1PK), "Can't get admin1PK"))
7575
7676 let admin2PK = fromBase58String(valueOrErrorMessage(getString(mainContract, kAdmin2PK), "Can't get admin2PK"))
7777
7878 let admin3PK = fromBase58String(valueOrErrorMessage(getString(mainContract, kAdmin3PK), "Can't get admin3PK"))
7979
8080 let AXLYId = fromBase58String(getStringValue(this, kAXLYTokenId))
8181
8282 func isAdminCall (i) = if (containsElement([admin1PK, admin2PK, admin3PK], i.callerPublicKey))
8383 then unit
8484 else throw("Only admin group1 can call this function")
8585
8686
8787 func isSelfCall (i) = if ((i.caller == this))
8888 then unit
8989 else throw("Only contract itself can call this function")
9090
9191
9292 func isFarmingCall (i) = if ((i.caller == farmingAddress))
9393 then unit
9494 else throw("Only farming contract can call this function")
9595
9696
9797 func parsePercentParamToAmount (param) = {
9898 let percent = match param {
9999 case p: Int =>
100100 p
101101 case p: String =>
102102 valueOrErrorMessage(parseInt(p), "Can't parse percent in params")
103103 case _ =>
104104 throw("Match error")
105105 }
106106 if (if ((0 >= percent))
107107 then true
108108 else (percent >= PERCENT_SCALE))
109109 then throw("percent must be number between 1(0.1) and 999(99.9)")
110110 else {
111111 let amount = fraction(INITIAL_TOKEN_AMOUNT, percent, PERCENT_SCALE)
112112 amount
113113 }
114114 }
115115
116116
117117 func parseLockVestingPeriod (lockStr,vestStr) = {
118118 let lockPeriod = valueOrErrorMessage(parseInt(lockStr), "Can't parse lock period")
119119 let vestingPeriod = valueOrErrorMessage(parseInt(vestStr), "Can't parse vesting period")
120120 if (if ((0 >= lockPeriod))
121121 then true
122122 else (0 >= vestingPeriod))
123123 then throw("lockPeriod and vestingPeriod must be greater than 0")
124124 else if ((lockPeriod > vestingPeriod))
125125 then throw("vestingPeriod must be greater than lockPeriod")
126126 else $Tuple2(lockPeriod, vestingPeriod)
127127 }
128128
129129
130130 func validateAddress (aStr) = toString(valueOrErrorMessage(addressFromString(aStr), "Wrong address in params"))
131131
132132
133133 func parseWDAOTeamParams (params) = {
134134 let address = validateAddress(params[0])
135135 let amount = parsePercentParamToAmount(params[1])
136136 let $t045414619 = parseLockVestingPeriod(params[2], params[3])
137137 let lockPeriod = $t045414619._1
138138 let vestingPeriod = $t045414619._2
139139 $Tuple4(address, amount, lockPeriod, vestingPeriod)
140140 }
141141
142142
143143 func parseParams (params) = {
144144 let address = validateAddress(params[0])
145145 let amount = parsePercentParamToAmount(params[1])
146146 $Tuple2(address, amount)
147147 }
148148
149149
150150 func withdrawTeamDao (totalAmount,lockPeriod,vestingPeriod,withdrawed,address,wKey) = {
151151 let startHeight = getIntegerValue(this, kStartHeight)
152152 let lockTill = (startHeight + lockPeriod)
153- let vestingTill = ((startHeight + lockPeriod) + vestingPeriod)
154- let canWithdraw = (fraction(totalAmount, min([(height - (startHeight + lockPeriod)), vestingTill]), vestingPeriod) - withdrawed)
153+ let canWithdraw = (fraction(totalAmount, min([(height - (startHeight + lockPeriod)), vestingPeriod]), vestingPeriod) - withdrawed)
155154 if ((lockTill >= height))
156155 then throw("Lock period is not end")
157156 else if ((0 >= canWithdraw))
158157 then throw("Nothing to withdraw")
159158 else [IntegerEntry(wKey, (withdrawed + canWithdraw)), ScriptTransfer(address, canWithdraw, AXLYId)]
160159 }
161160
162161
163-func withdrawToOther (amount,totalAmount,withdrawed,address,wKey) = if (((withdrawed + amount) > totalAmount))
164- then throw(((("You can't withdraw more than " + toString(totalAmount)) + " already withdrawed: ") + toString(withdrawed)))
165- else [IntegerEntry(wKey, (withdrawed + amount)), ScriptTransfer(address, amount, AXLYId)]
162+func withdrawToOther (amount,totalAmount,withdrawed,address,wKey) = if ((0 >= amount))
163+ then throw("amount must be positive value")
164+ else if (((withdrawed + amount) > totalAmount))
165+ then throw(((("You can't withdraw more than " + toString(totalAmount)) + " Your balance: ") + toString((totalAmount - withdrawed))))
166+ else [IntegerEntry(wKey, (withdrawed + amount)), ScriptTransfer(address, amount, AXLYId)]
166167
167168
168169 @Callable(i)
169170 func init (wDaoParams,teamParams,marketingPercent,partnerPercent,retroDropPercent,lendRewardPercent,lpRewardPercent,poolInitPercent,launchpadPercent,mainContractAddr,farmingAddr) = valueOrElse(isSelfCall(i), if ((size(wDaoParams) != 4))
170171 then throw("wDaoParams must have 4 args")
171172 else if ((size(teamParams) != 4))
172173 then throw("teamParams must have 4 args")
173174 else if ((0 >= marketingPercent))
174175 then throw("marketingPercent must be > 0")
175176 else if ((0 >= partnerPercent))
176177 then throw("partnerPercent must be > 0")
177178 else if ((0 >= retroDropPercent))
178179 then throw("retroDropPercent must be > 0")
179180 else if ((0 >= lendRewardPercent))
180181 then throw("lendRewardParams must be > 0")
181182 else if ((0 >= lpRewardPercent))
182183 then throw("lpRewardParams must be > 0")
183184 else if ((0 >= poolInitPercent))
184185 then throw("poolInitParams must be > 0")
185186 else if (!(isDefined(addressFromString(farmingAddr))))
186187 then throw("Wrong farming address")
187188 else if (!(isDefined(addressFromString(mainContractAddr))))
188189 then throw("Wrong main contract address")
189190 else {
190- let $t072527350 = parseWDAOTeamParams(wDaoParams)
191- let wDaoAddress = $t072527350._1
192- let wDaoAmount = $t072527350._2
193- let wDaoLockPeriod = $t072527350._3
194- let wDaoVestingPeriod = $t072527350._4
195- let $t073537451 = parseWDAOTeamParams(teamParams)
196- let teamAddress = $t073537451._1
197- let teamAmount = $t073537451._2
198- let teamLockPeriod = $t073537451._3
199- let teamVestingPeriod = $t073537451._4
191+ let $t072697367 = parseWDAOTeamParams(wDaoParams)
192+ let wDaoAddress = $t072697367._1
193+ let wDaoAmount = $t072697367._2
194+ let wDaoLockPeriod = $t072697367._3
195+ let wDaoVestingPeriod = $t072697367._4
196+ let $t073707468 = parseWDAOTeamParams(teamParams)
197+ let teamAddress = $t073707468._1
198+ let teamAmount = $t073707468._2
199+ let teamLockPeriod = $t073707468._3
200+ let teamVestingPeriod = $t073707468._4
200201 let mAmount = parsePercentParamToAmount(marketingPercent)
201202 let pAmount = parsePercentParamToAmount(partnerPercent)
202203 let rAmount = parsePercentParamToAmount(retroDropPercent)
203204 let lAmount = parsePercentParamToAmount(lendRewardPercent)
204205 let lpAmount = parsePercentParamToAmount(lpRewardPercent)
205206 let piAmount = parsePercentParamToAmount(poolInitPercent)
206207 let laAmount = parsePercentParamToAmount(launchpadPercent)
207208 let sum = (((((((wDaoAmount + teamAmount) + mAmount) + pAmount) + rAmount) + lAmount) + lpAmount) + piAmount)
208209 if ((sum > INITIAL_TOKEN_AMOUNT))
209210 then throw("Wrong percents( > 100%)")
210211 else {
211212 let issue = Issue("AXLY", "AXLY protocol token", INITIAL_TOKEN_AMOUNT, 8, false)
212213 let idStr = toBase58String(calculateAssetId(issue))
213214 [StringEntry(kWDaoAddress, wDaoAddress), IntegerEntry(kWDaoAmount, wDaoAmount), IntegerEntry(kWDaoLock, wDaoLockPeriod), IntegerEntry(kWDaoVesting, wDaoVestingPeriod), StringEntry(kTeamAddress, teamAddress), IntegerEntry(kTeamAmount, teamAmount), IntegerEntry(kTeamLock, teamLockPeriod), IntegerEntry(kTeamVesting, teamVestingPeriod), IntegerEntry(kMarketingAmount, mAmount), IntegerEntry(kPartnerAmount, pAmount), IntegerEntry(kRetroDropAmount, rAmount), IntegerEntry(kLendRewardAmount, lAmount), IntegerEntry(kLPRewardAmount, lpAmount), IntegerEntry(kPoolInitAmount, piAmount), IntegerEntry(kLaunchpadAmount, laAmount), IntegerEntry(kStartHeight, height), StringEntry(kAxlyMainContract, mainContractAddr), StringEntry(kAxlyFarming, farmingAddr), issue, StringEntry(kAXLYTokenId, idStr)]
214215 }
215216 })
216217
217218
218219
219220 @Callable(i)
220221 func withdrawWDao () = {
221222 let amount = getIntegerValue(this, kWDaoAmount)
222223 let lockPeriod = getIntegerValue(this, kWDaoLock)
223224 let vestingPeriod = getIntegerValue(this, kWDaoVesting)
224225 let address = addressFromStringValue(getStringValue(this, kWDaoAddress))
225226 let withdrawed = valueOrElse(getInteger(this, kWDaoWithdrawed), 0)
226227 withdrawTeamDao(amount, lockPeriod, vestingPeriod, withdrawed, address, kWDaoWithdrawed)
227228 }
228229
229230
230231
231232 @Callable(i)
232233 func withdrawTeam () = {
233234 let amount = getIntegerValue(this, kTeamAmount)
234235 let lockPeriod = getIntegerValue(this, kTeamLock)
235236 let vestingPeriod = getIntegerValue(this, kTeamVesting)
236237 let address = addressFromStringValue(getStringValue(this, kTeamAddress))
237238 let withdrawed = valueOrElse(getInteger(this, kTeamWithdrawed), 0)
238239 withdrawTeamDao(amount, lockPeriod, vestingPeriod, withdrawed, address, kTeamWithdrawed)
239240 }
240241
241242
242243
243244 @Callable(i)
244245 func withdrawMarketing (amount,addressStr) = valueOrElse(isSelfCall(i), {
245246 let totalAmount = getIntegerValue(this, kMarketingAmount)
246247 let withdrawed = valueOrElse(getInteger(this, kMarketingWithdrawed), 0)
247248 let address = addressFromStringValue(addressStr)
248249 withdrawToOther(amount, totalAmount, withdrawed, address, kMarketingWithdrawed)
249250 })
250251
251252
252253
253254 @Callable(i)
254255 func withdrawPartners (amount,addressStr) = valueOrElse(isSelfCall(i), {
255256 let totalAmount = getIntegerValue(this, kPartnerAmount)
256257 let withdrawed = valueOrElse(getInteger(this, kPartnersWithdrawed), 0)
257258 let address = addressFromStringValue(addressStr)
258259 withdrawToOther(amount, totalAmount, withdrawed, address, kPartnersWithdrawed)
259260 })
260261
261262
262263
263264 @Callable(i)
264-func withdrawRetroDraop (amount,addressStr) = valueOrElse(isSelfCall(i), {
265+func withdrawRetroDrop (amount,addressStr) = valueOrElse(isSelfCall(i), {
265266 let totalAmount = getIntegerValue(this, kRetroDropAmount)
266267 let withdrawed = valueOrElse(getInteger(this, kRetroDropWithdrawed), 0)
267268 let address = addressFromStringValue(addressStr)
268269 withdrawToOther(amount, totalAmount, withdrawed, address, kRetroDropWithdrawed)
269270 })
270271
271272
272273
273274 @Callable(i)
274275 func withdrawPollInit (amount,addressStr) = valueOrElse(isSelfCall(i), {
275276 let totalAmount = getIntegerValue(this, kPoolInitAmount)
276277 let withdrawed = valueOrElse(getInteger(this, kPoolInitWithdrawed), 0)
277278 let address = addressFromStringValue(addressStr)
278279 withdrawToOther(amount, totalAmount, withdrawed, address, kPoolInitWithdrawed)
279280 })
280281
281282
282283
283284 @Callable(i)
284285 func withdrawLendReward (amount,addressToStr) = valueOrElse(isFarmingCall(i), {
285286 let totalAmount = getIntegerValue(this, kLendRewardAmount)
286287 let withdrawed = valueOrElse(getInteger(this, kLendRewardWithdrawed), 0)
287288 let address = addressFromStringValue(addressToStr)
288289 withdrawToOther(amount, totalAmount, withdrawed, address, kLendRewardWithdrawed)
289290 })
290291
291292
292293
293294 @Callable(i)
294295 func withdrawLpReward (amount,addressToStr) = valueOrElse(isFarmingCall(i), {
295296 let totalAmount = getIntegerValue(this, kLPRewardAmount)
296297 let withdrawed = valueOrElse(getInteger(this, kLPRewardWithdrawed), 0)
297298 let address = addressFromStringValue(addressToStr)
298299 withdrawToOther(amount, totalAmount, withdrawed, address, kLPRewardWithdrawed)
299300 })
300301
301302
302303
303304 @Callable(i)
304305 func withdrawLaunchpad (amount,addressToStr) = valueOrElse(isSelfCall(i), {
305306 let totalAmount = getIntegerValue(this, kLaunchpadAmount)
306307 let withdrawed = valueOrElse(getInteger(this, kLaunchpadWithdrawed), 0)
307308 let address = addressFromStringValue(addressToStr)
308309 withdrawToOther(amount, totalAmount, withdrawed, address, kLaunchpadWithdrawed)
309310 })
310311
311312
312313 @Verifier(tx)
313314 func verify () = {
314315 let multiSignedByAdmins = {
315316 let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], admin1PK))
316317 then 1
317318 else 0
318319 let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], admin2PK))
319320 then 1
320321 else 0
321322 let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], admin3PK))
322323 then 1
323324 else 0
324325 (((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) >= 2)
325326 }
326327 match tx {
327328 case inv: InvokeScriptTransaction =>
328329 let isSelf = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
329330 let isRightFee = if ((inv.fee == 100900000))
330331 then (inv.feeAssetId == unit)
331332 else false
332333 let isInitCall = (inv.function == "init")
333334 let isnoPayments = (size(inv.payments) == 0)
334335 if (if (if (if (isRightFee)
335336 then isInitCall
336337 else false)
337338 then isSelf
338339 else false)
339340 then isnoPayments
340341 else false)
341342 then true
342343 else multiSignedByAdmins
343344 case _ =>
344345 multiSignedByAdmins
345346 }
346347 }
347348

github/deemru/w8io/3ef1775 
65.67 ms