tx · G1pV52N1z7QqxYVYtun2utbbnWZcCguKSv8ZGyt1wgMa

3N5ecXT7MHB6z33Ms2Pvy6thNVBMeacaACo:  -0.01500000 Waves

2023.08.17 11:16 [2714341] smart account 3N5ecXT7MHB6z33Ms2Pvy6thNVBMeacaACo > SELF 0.00000000 Waves

{ "type": 13, "id": "G1pV52N1z7QqxYVYtun2utbbnWZcCguKSv8ZGyt1wgMa", "fee": 1500000, "feeAssetId": null, "timestamp": 1692260184105, "version": 2, "chainId": 84, "sender": "3N5ecXT7MHB6z33Ms2Pvy6thNVBMeacaACo", "senderPublicKey": "3WPc9rDre1YBs13teGnzt1PnEEQZXaaSTRU1tVuqLa4Z", "proofs": [ "49ZBKCYbABVUFoGcmD4KQ4Prz2xgJeYXQqk8FpADbfUmay1u9X5YGPXPH9XomDAHgGuJ1BWBmg5rCp9uj9h5dRnP", "2VDAaZdPyoiJ2TjLeDaW1ph4fnVbZdnNjGS6HbcSDEnngosNs33RyyVQ6mQXdiunxFQERYnwYTgkLs6t5JW1AAVj" ], "script": "base64:BgI/CAISDQoLGBgBAQEBAQEBCAgSABIAEgQKAgEIEgQKAgEIEgQKAgEIEgQKAgEIEgQKAgEIEgQKAgEIEgQKAgEIMQAUSU5JVElBTF9UT0tFTl9BTU9VTlQAgICapuqv4wEADVBFUkNFTlRfU0NBTEUA6AcADGtXRGFvQWRkcmVzcwILd0Rhb0FkZHJlc3MAC2tXRGFvQW1vdW50Agp3RGFvQW1vdW50AAlrV0Rhb0xvY2sCDndEYW9Mb2NrUGVyaW9kAAxrV0Rhb1Zlc3RpbmcCEXdEYW9WZXN0aW5nUGVyaW9kAA9rV0Rhb1dpdGhkcmF3ZWQCDndEYW9XaXRoZHJhd2VkAAxrVGVhbUFkZHJlc3MCC3RlYW1BZGRyZXNzAAtrVGVhbUFtb3VudAIKdGVhbUFtb3VudAAJa1RlYW1Mb2NrAg50ZWFtTG9ja1BlcmlvZAAMa1RlYW1WZXN0aW5nAhF0ZWFtVmVzdGluZ1BlcmlvZAAPa1RlYW1XaXRoZHJhd2VkAg50ZWFtV2l0aGRyYXdlZAAQa01hcmtldGluZ0Ftb3VudAIMbWFya2V0QW1vdW50ABRrTWFya2V0aW5nV2l0aGRyYXdlZAITbWFya2V0aW5nV2l0aGRyYXdlZAAOa1BhcnRuZXJBbW91bnQCDXBhcnRuZXJBbW91bnQAE2tQYXJ0bmVyc1dpdGhkcmF3ZWQCEnBhcnRuZXJzV2l0aGRyYXdlZAAQa1JldHJvRHJvcEFtb3VudAIPcmV0cm9Ecm9wQW1vdW50ABRrUmV0cm9Ecm9wV2l0aGRyYXdlZAITcmV0cm9Ecm9wV2l0aGRyYXdlZAARa0xlbmRSZXdhcmRBbW91bnQCEWxlbmRSZXdhcmRzQW1vdW50ABVrTGVuZFJld2FyZFdpdGhkcmF3ZWQCFGxlbmRSZXdhcmRXaXRoZHJhd2VkAA9rTFBSZXdhcmRBbW91bnQCDmxwUmV3YXJkQW1vdW50ABNrTFBSZXdhcmRXaXRoZHJhd2VkAhJscFJld2FyZFdpdGhkcmF3ZWQAD2tQb29sSW5pdEFtb3VudAIOcG9vbEluaXRBbW91bnQAE2tQb29sSW5pdFdpdGhkcmF3ZWQCEnBvb2xJbml0V2l0aGRyYXdlZAAQa0xhdW5jaHBhZEFtb3VudAIPbGF1bmNocGFkQW1vdW50ABRrTGF1bmNocGFkV2l0aGRyYXdlZAITbGF1bmNocGFkV2l0aGRyYXdlZAAMa0FYTFlUb2tlbklkAgtheGx5VG9rZW5JZAAMa1N0YXJ0SGVpZ2h0AgtzdGFydEhlaWdodAAJa0FkbWluMVBLAhVncm91cDFfYWRtaW4xX3B1Yl9rZXkACWtBZG1pbjJQSwIVZ3JvdXAxX2FkbWluMl9wdWJfa2V5AAlrQWRtaW4zUEsCFWdyb3VwMV9hZG1pbjNfcHViX2tleQARa0F4bHlNYWluQ29udHJhY3QCDG1haW5Db250cmFjdAAMa0F4bHlGYXJtaW5nAg5mYXJtaW5nQWRkcmVzcwAMbWFpbkNvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwURa0F4bHlNYWluQ29udHJhY3QCGUNhbid0IGdldCBtYWluQ29udGFjdCBrZXkADmZhcm1pbmdBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUMa0F4bHlGYXJtaW5nAhxDYW4ndCBnZXQgZmFybWluZ0FkZHJlc3Mga2V5AAhhZG1pbjFQSwkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUMbWFpbkNvbnRyYWN0BQlrQWRtaW4xUEsCEkNhbid0IGdldCBhZG1pbjFQSwAIYWRtaW4yUEsJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDG1haW5Db250cmFjdAUJa0FkbWluMlBLAhJDYW4ndCBnZXQgYWRtaW4yUEsACGFkbWluM1BLCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQxtYWluQ29udHJhY3QFCWtBZG1pbjNQSwISQ2FuJ3QgZ2V0IGFkbWluM1BLAAZBWExZSWQJANkEAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUMa0FYTFlUb2tlbklkAQtpc0FkbWluQ2FsbAEBaQMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFCGFkbWluMVBLCQDMCAIFCGFkbWluMlBLCQDMCAIFCGFkbWluM1BLBQNuaWwIBQFpD2NhbGxlclB1YmxpY0tleQUEdW5pdAkAAgECKE9ubHkgYWRtaW4gZ3JvdXAxIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24BCmlzU2VsZkNhbGwBAWkDCQAAAggFAWkGY2FsbGVyBQR0aGlzBQR1bml0CQACAQIrT25seSBjb250cmFjdCBpdHNlbGYgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgENaXNGYXJtaW5nQ2FsbAEBaQMJAAACCAUBaQZjYWxsZXIFDmZhcm1pbmdBZGRyZXNzBQR1bml0CQACAQIsT25seSBmYXJtaW5nIGNvbnRyYWN0IGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24BGXBhcnNlUGVyY2VudFBhcmFtVG9BbW91bnQBBXBhcmFtBAdwZXJjZW50BAckbWF0Y2gwBQVwYXJhbQMJAAECBQckbWF0Y2gwAgNJbnQEAXAFByRtYXRjaDAFAXADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFwBQckbWF0Y2gwCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQUBcAIdQ2FuJ3QgcGFyc2UgcGVyY2VudCBpbiBwYXJhbXMJAAIBAgtNYXRjaCBlcnJvcgMDCQBnAgAABQdwZXJjZW50BgkAZwIFB3BlcmNlbnQFDVBFUkNFTlRfU0NBTEUJAAIBAjNwZXJjZW50IG11c3QgYmUgbnVtYmVyIGJldHdlZW4gMSgwLjEpIGFuZCA5OTkoOTkuOSkEBmFtb3VudAkAawMFFElOSVRJQUxfVE9LRU5fQU1PVU5UBQdwZXJjZW50BQ1QRVJDRU5UX1NDQUxFBQZhbW91bnQBFnBhcnNlTG9ja1Zlc3RpbmdQZXJpb2QCB2xvY2tTdHIHdmVzdFN0cgQKbG9ja1BlcmlvZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQC2CQEFB2xvY2tTdHICF0Nhbid0IHBhcnNlIGxvY2sgcGVyaW9kBA12ZXN0aW5nUGVyaW9kCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQUHdmVzdFN0cgIaQ2FuJ3QgcGFyc2UgdmVzdGluZyBwZXJpb2QDAwkAZwIAAAUKbG9ja1BlcmlvZAYJAGcCAAAFDXZlc3RpbmdQZXJpb2QJAAIBAjNsb2NrUGVyaW9kIGFuZCB2ZXN0aW5nUGVyaW9kIG11c3QgYmUgZ3JlYXRlciB0aGFuIDADCQBmAgUKbG9ja1BlcmlvZAUNdmVzdGluZ1BlcmlvZAkAAgECLXZlc3RpbmdQZXJpb2QgbXVzdCBiZSBncmVhdGVyIHRoYW4gbG9ja1BlcmlvZAkAlAoCBQpsb2NrUGVyaW9kBQ12ZXN0aW5nUGVyaW9kAQ92YWxpZGF0ZUFkZHJlc3MBBGFTdHIJAKUIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFBGFTdHICF1dyb25nIGFkZHJlc3MgaW4gcGFyYW1zARNwYXJzZVdEQU9UZWFtUGFyYW1zAQZwYXJhbXMEB2FkZHJlc3MJAQ92YWxpZGF0ZUFkZHJlc3MBCQCRAwIFBnBhcmFtcwAABAZhbW91bnQJARlwYXJzZVBlcmNlbnRQYXJhbVRvQW1vdW50AQkAkQMCBQZwYXJhbXMAAQQLJHQwNDU0MTQ2MTkJARZwYXJzZUxvY2tWZXN0aW5nUGVyaW9kAgkAkQMCBQZwYXJhbXMAAgkAkQMCBQZwYXJhbXMAAwQKbG9ja1BlcmlvZAgFCyR0MDQ1NDE0NjE5Al8xBA12ZXN0aW5nUGVyaW9kCAULJHQwNDU0MTQ2MTkCXzIJAJYKBAUHYWRkcmVzcwUGYW1vdW50BQpsb2NrUGVyaW9kBQ12ZXN0aW5nUGVyaW9kAQtwYXJzZVBhcmFtcwEGcGFyYW1zBAdhZGRyZXNzCQEPdmFsaWRhdGVBZGRyZXNzAQkAkQMCBQZwYXJhbXMAAAQGYW1vdW50CQEZcGFyc2VQZXJjZW50UGFyYW1Ub0Ftb3VudAEJAJEDAgUGcGFyYW1zAAEJAJQKAgUHYWRkcmVzcwUGYW1vdW50AQ93aXRoZHJhd1RlYW1EYW8GC3RvdGFsQW1vdW50CmxvY2tQZXJpb2QNdmVzdGluZ1BlcmlvZAp3aXRoZHJhd2VkB2FkZHJlc3MEd0tleQQLc3RhcnRIZWlnaHQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFDGtTdGFydEhlaWdodAQIbG9ja1RpbGwJAGQCBQtzdGFydEhlaWdodAUKbG9ja1BlcmlvZAQLdmVzdGluZ1RpbGwJAGQCCQBkAgULc3RhcnRIZWlnaHQFCmxvY2tQZXJpb2QFDXZlc3RpbmdQZXJpb2QEC2NhbldpdGhkcmF3CQBlAgkAawMFC3RvdGFsQW1vdW50CQCXAwEJAMwIAgkAZQIFBmhlaWdodAkAZAIFC3N0YXJ0SGVpZ2h0BQpsb2NrUGVyaW9kCQDMCAIFC3Zlc3RpbmdUaWxsBQNuaWwFDXZlc3RpbmdQZXJpb2QFCndpdGhkcmF3ZWQDCQBnAgUIbG9ja1RpbGwFBmhlaWdodAkAAgECFkxvY2sgcGVyaW9kIGlzIG5vdCBlbmQDCQBnAgAABQtjYW5XaXRoZHJhdwkAAgECE05vdGhpbmcgdG8gd2l0aGRyYXcJAMwIAgkBDEludGVnZXJFbnRyeQIFBHdLZXkJAGQCBQp3aXRoZHJhd2VkBQtjYW5XaXRoZHJhdwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQdhZGRyZXNzBQtjYW5XaXRoZHJhdwUGQVhMWUlkBQNuaWwBD3dpdGhkcmF3VG9PdGhlcgUGYW1vdW50C3RvdGFsQW1vdW50CndpdGhkcmF3ZWQHYWRkcmVzcwR3S2V5AwkAZgIJAGQCBQp3aXRoZHJhd2VkBQZhbW91bnQFC3RvdGFsQW1vdW50CQACAQkArAICCQCsAgIJAKwCAgIdWW91IGNhbid0IHdpdGhkcmF3IG1vcmUgdGhhbiAJAKQDAQULdG90YWxBbW91bnQCFSBhbHJlYWR5IHdpdGhkcmF3ZWQ6IAkApAMBBQp3aXRoZHJhd2VkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQR3S2V5CQBkAgUKd2l0aGRyYXdlZAUGYW1vdW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFB2FkZHJlc3MFBmFtb3VudAUGQVhMWUlkBQNuaWwKAWkBBGluaXQLCndEYW9QYXJhbXMKdGVhbVBhcmFtcxBtYXJrZXRpbmdQZXJjZW50DnBhcnRuZXJQZXJjZW50EHJldHJvRHJvcFBlcmNlbnQRbGVuZFJld2FyZFBlcmNlbnQPbHBSZXdhcmRQZXJjZW50D3Bvb2xJbml0UGVyY2VudBBsYXVuY2hwYWRQZXJjZW50EG1haW5Db250cmFjdEFkZHILZmFybWluZ0FkZHIJAQt2YWx1ZU9yRWxzZQIJAQppc1NlbGZDYWxsAQUBaQMJAQIhPQIJAJADAQUKd0Rhb1BhcmFtcwAECQACAQIbd0Rhb1BhcmFtcyBtdXN0IGhhdmUgNCBhcmdzAwkBAiE9AgkAkAMBBQp0ZWFtUGFyYW1zAAQJAAIBAht0ZWFtUGFyYW1zIG11c3QgaGF2ZSA0IGFyZ3MDCQBnAgAABRBtYXJrZXRpbmdQZXJjZW50CQACAQIcbWFya2V0aW5nUGVyY2VudCBtdXN0IGJlID4gMAMJAGcCAAAFDnBhcnRuZXJQZXJjZW50CQACAQIacGFydG5lclBlcmNlbnQgbXVzdCBiZSA+IDADCQBnAgAABRByZXRyb0Ryb3BQZXJjZW50CQACAQIccmV0cm9Ecm9wUGVyY2VudCBtdXN0IGJlID4gMAMJAGcCAAAFEWxlbmRSZXdhcmRQZXJjZW50CQACAQIcbGVuZFJld2FyZFBhcmFtcyBtdXN0IGJlID4gMAMJAGcCAAAFD2xwUmV3YXJkUGVyY2VudAkAAgECGmxwUmV3YXJkUGFyYW1zIG11c3QgYmUgPiAwAwkAZwIAAAUPcG9vbEluaXRQZXJjZW50CQACAQIacG9vbEluaXRQYXJhbXMgbXVzdCBiZSA+IDADCQEBIQEJAQlpc0RlZmluZWQBCQCmCAEFC2Zhcm1pbmdBZGRyCQACAQIVV3JvbmcgZmFybWluZyBhZGRyZXNzAwkBASEBCQEJaXNEZWZpbmVkAQkApggBBRBtYWluQ29udHJhY3RBZGRyCQACAQIbV3JvbmcgbWFpbiBjb250cmFjdCBhZGRyZXNzBAskdDA3MjUyNzM1MAkBE3BhcnNlV0RBT1RlYW1QYXJhbXMBBQp3RGFvUGFyYW1zBAt3RGFvQWRkcmVzcwgFCyR0MDcyNTI3MzUwAl8xBAp3RGFvQW1vdW50CAULJHQwNzI1MjczNTACXzIEDndEYW9Mb2NrUGVyaW9kCAULJHQwNzI1MjczNTACXzMEEXdEYW9WZXN0aW5nUGVyaW9kCAULJHQwNzI1MjczNTACXzQECyR0MDczNTM3NDUxCQETcGFyc2VXREFPVGVhbVBhcmFtcwEFCnRlYW1QYXJhbXMEC3RlYW1BZGRyZXNzCAULJHQwNzM1Mzc0NTECXzEECnRlYW1BbW91bnQIBQskdDA3MzUzNzQ1MQJfMgQOdGVhbUxvY2tQZXJpb2QIBQskdDA3MzUzNzQ1MQJfMwQRdGVhbVZlc3RpbmdQZXJpb2QIBQskdDA3MzUzNzQ1MQJfNAQHbUFtb3VudAkBGXBhcnNlUGVyY2VudFBhcmFtVG9BbW91bnQBBRBtYXJrZXRpbmdQZXJjZW50BAdwQW1vdW50CQEZcGFyc2VQZXJjZW50UGFyYW1Ub0Ftb3VudAEFDnBhcnRuZXJQZXJjZW50BAdyQW1vdW50CQEZcGFyc2VQZXJjZW50UGFyYW1Ub0Ftb3VudAEFEHJldHJvRHJvcFBlcmNlbnQEB2xBbW91bnQJARlwYXJzZVBlcmNlbnRQYXJhbVRvQW1vdW50AQURbGVuZFJld2FyZFBlcmNlbnQECGxwQW1vdW50CQEZcGFyc2VQZXJjZW50UGFyYW1Ub0Ftb3VudAEFD2xwUmV3YXJkUGVyY2VudAQIcGlBbW91bnQJARlwYXJzZVBlcmNlbnRQYXJhbVRvQW1vdW50AQUPcG9vbEluaXRQZXJjZW50BAhsYUFtb3VudAkBGXBhcnNlUGVyY2VudFBhcmFtVG9BbW91bnQBBRBsYXVuY2hwYWRQZXJjZW50BANzdW0JAGQCCQBkAgkAZAIJAGQCCQBkAgkAZAIJAGQCBQp3RGFvQW1vdW50BQp0ZWFtQW1vdW50BQdtQW1vdW50BQdwQW1vdW50BQdyQW1vdW50BQdsQW1vdW50BQhscEFtb3VudAUIcGlBbW91bnQDCQBmAgUDc3VtBRRJTklUSUFMX1RPS0VOX0FNT1VOVAkAAgECF1dyb25nIHBlcmNlbnRzKCA+IDEwMCUpBAVpc3N1ZQkAwggFAgRBWExZAhNBWExZIHByb3RvY29sIHRva2VuBRRJTklUSUFMX1RPS0VOX0FNT1VOVAAIBwQFaWRTdHIJANgEAQkAuAgBBQVpc3N1ZQkAzAgCCQELU3RyaW5nRW50cnkCBQxrV0Rhb0FkZHJlc3MFC3dEYW9BZGRyZXNzCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQtrV0Rhb0Ftb3VudAUKd0Rhb0Ftb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa1dEYW9Mb2NrBQ53RGFvTG9ja1BlcmlvZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUMa1dEYW9WZXN0aW5nBRF3RGFvVmVzdGluZ1BlcmlvZAkAzAgCCQELU3RyaW5nRW50cnkCBQxrVGVhbUFkZHJlc3MFC3RlYW1BZGRyZXNzCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQtrVGVhbUFtb3VudAUKdGVhbUFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa1RlYW1Mb2NrBQ50ZWFtTG9ja1BlcmlvZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUMa1RlYW1WZXN0aW5nBRF0ZWFtVmVzdGluZ1BlcmlvZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUQa01hcmtldGluZ0Ftb3VudAUHbUFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUOa1BhcnRuZXJBbW91bnQFB3BBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFEGtSZXRyb0Ryb3BBbW91bnQFB3JBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFEWtMZW5kUmV3YXJkQW1vdW50BQdsQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9rTFBSZXdhcmRBbW91bnQFCGxwQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9rUG9vbEluaXRBbW91bnQFCHBpQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBrTGF1bmNocGFkQW1vdW50BQhsYUFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUMa1N0YXJ0SGVpZ2h0BQZoZWlnaHQJAMwIAgkBC1N0cmluZ0VudHJ5AgURa0F4bHlNYWluQ29udHJhY3QFEG1haW5Db250cmFjdEFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgUMa0F4bHlGYXJtaW5nBQtmYXJtaW5nQWRkcgkAzAgCBQVpc3N1ZQkAzAgCCQELU3RyaW5nRW50cnkCBQxrQVhMWVRva2VuSWQFBWlkU3RyBQNuaWwBaQEMd2l0aGRyYXdXRGFvAAQGYW1vdW50CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQtrV0Rhb0Ftb3VudAQKbG9ja1BlcmlvZAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUJa1dEYW9Mb2NrBA12ZXN0aW5nUGVyaW9kCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQxrV0Rhb1Zlc3RpbmcEB2FkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFDGtXRGFvQWRkcmVzcwQKd2l0aGRyYXdlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ9rV0Rhb1dpdGhkcmF3ZWQAAAkBD3dpdGhkcmF3VGVhbURhbwYFBmFtb3VudAUKbG9ja1BlcmlvZAUNdmVzdGluZ1BlcmlvZAUKd2l0aGRyYXdlZAUHYWRkcmVzcwUPa1dEYW9XaXRoZHJhd2VkAWkBDHdpdGhkcmF3VGVhbQAEBmFtb3VudAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwULa1RlYW1BbW91bnQECmxvY2tQZXJpb2QJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFCWtUZWFtTG9jawQNdmVzdGluZ1BlcmlvZAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUMa1RlYW1WZXN0aW5nBAdhZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBQxrVGVhbUFkZHJlc3MECndpdGhkcmF3ZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUPa1RlYW1XaXRoZHJhd2VkAAAJAQ93aXRoZHJhd1RlYW1EYW8GBQZhbW91bnQFCmxvY2tQZXJpb2QFDXZlc3RpbmdQZXJpb2QFCndpdGhkcmF3ZWQFB2FkZHJlc3MFD2tUZWFtV2l0aGRyYXdlZAFpARF3aXRoZHJhd01hcmtldGluZwIGYW1vdW50CmFkZHJlc3NTdHIJAQt2YWx1ZU9yRWxzZQIJAQppc1NlbGZDYWxsAQUBaQQLdG90YWxBbW91bnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFEGtNYXJrZXRpbmdBbW91bnQECndpdGhkcmF3ZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUUa01hcmtldGluZ1dpdGhkcmF3ZWQAAAQHYWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQUKYWRkcmVzc1N0cgkBD3dpdGhkcmF3VG9PdGhlcgUFBmFtb3VudAULdG90YWxBbW91bnQFCndpdGhkcmF3ZWQFB2FkZHJlc3MFFGtNYXJrZXRpbmdXaXRoZHJhd2VkAWkBEHdpdGhkcmF3UGFydG5lcnMCBmFtb3VudAphZGRyZXNzU3RyCQELdmFsdWVPckVsc2UCCQEKaXNTZWxmQ2FsbAEFAWkEC3RvdGFsQW1vdW50CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQ5rUGFydG5lckFtb3VudAQKd2l0aGRyYXdlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRNrUGFydG5lcnNXaXRoZHJhd2VkAAAEB2FkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCmFkZHJlc3NTdHIJAQ93aXRoZHJhd1RvT3RoZXIFBQZhbW91bnQFC3RvdGFsQW1vdW50BQp3aXRoZHJhd2VkBQdhZGRyZXNzBRNrUGFydG5lcnNXaXRoZHJhd2VkAWkBEndpdGhkcmF3UmV0cm9EcmFvcAIGYW1vdW50CmFkZHJlc3NTdHIJAQt2YWx1ZU9yRWxzZQIJAQppc1NlbGZDYWxsAQUBaQQLdG90YWxBbW91bnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFEGtSZXRyb0Ryb3BBbW91bnQECndpdGhkcmF3ZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUUa1JldHJvRHJvcFdpdGhkcmF3ZWQAAAQHYWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQUKYWRkcmVzc1N0cgkBD3dpdGhkcmF3VG9PdGhlcgUFBmFtb3VudAULdG90YWxBbW91bnQFCndpdGhkcmF3ZWQFB2FkZHJlc3MFFGtSZXRyb0Ryb3BXaXRoZHJhd2VkAWkBEHdpdGhkcmF3UG9sbEluaXQCBmFtb3VudAphZGRyZXNzU3RyCQELdmFsdWVPckVsc2UCCQEKaXNTZWxmQ2FsbAEFAWkEC3RvdGFsQW1vdW50CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQ9rUG9vbEluaXRBbW91bnQECndpdGhkcmF3ZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUTa1Bvb2xJbml0V2l0aGRyYXdlZAAABAdhZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBBQphZGRyZXNzU3RyCQEPd2l0aGRyYXdUb090aGVyBQUGYW1vdW50BQt0b3RhbEFtb3VudAUKd2l0aGRyYXdlZAUHYWRkcmVzcwUTa1Bvb2xJbml0V2l0aGRyYXdlZAFpARJ3aXRoZHJhd0xlbmRSZXdhcmQCBmFtb3VudAxhZGRyZXNzVG9TdHIJAQt2YWx1ZU9yRWxzZQIJAQ1pc0Zhcm1pbmdDYWxsAQUBaQQLdG90YWxBbW91bnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFEWtMZW5kUmV3YXJkQW1vdW50BAp3aXRoZHJhd2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFFWtMZW5kUmV3YXJkV2l0aGRyYXdlZAAABAdhZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBBQxhZGRyZXNzVG9TdHIJAQ93aXRoZHJhd1RvT3RoZXIFBQZhbW91bnQFC3RvdGFsQW1vdW50BQp3aXRoZHJhd2VkBQdhZGRyZXNzBRVrTGVuZFJld2FyZFdpdGhkcmF3ZWQBaQEQd2l0aGRyYXdMcFJld2FyZAIGYW1vdW50DGFkZHJlc3NUb1N0cgkBC3ZhbHVlT3JFbHNlAgkBDWlzRmFybWluZ0NhbGwBBQFpBAt0b3RhbEFtb3VudAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUPa0xQUmV3YXJkQW1vdW50BAp3aXRoZHJhd2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFE2tMUFJld2FyZFdpdGhkcmF3ZWQAAAQHYWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQUMYWRkcmVzc1RvU3RyCQEPd2l0aGRyYXdUb090aGVyBQUGYW1vdW50BQt0b3RhbEFtb3VudAUKd2l0aGRyYXdlZAUHYWRkcmVzcwUTa0xQUmV3YXJkV2l0aGRyYXdlZAFpARF3aXRoZHJhd0xhdW5jaHBhZAIGYW1vdW50DGFkZHJlc3NUb1N0cgkBC3ZhbHVlT3JFbHNlAgkBCmlzU2VsZkNhbGwBBQFpBAt0b3RhbEFtb3VudAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUQa0xhdW5jaHBhZEFtb3VudAQKd2l0aGRyYXdlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRRrTGF1bmNocGFkV2l0aGRyYXdlZAAABAdhZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBBQxhZGRyZXNzVG9TdHIJAQ93aXRoZHJhd1RvT3RoZXIFBQZhbW91bnQFC3RvdGFsQW1vdW50BQp3aXRoZHJhd2VkBQdhZGRyZXNzBRRrTGF1bmNocGFkV2l0aGRyYXdlZAECdHgBBnZlcmlmeQAEE211bHRpU2lnbmVkQnlBZG1pbnMEEmFkbWluUHViS2V5MVNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFCGFkbWluMVBLAAEAAAQSYWRtaW5QdWJLZXkyU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAQUIYWRtaW4yUEsAAQAABBJhZG1pblB1YktleTNTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwACBQhhZG1pbjNQSwABAAAJAGcCCQBkAgkAZAIFEmFkbWluUHViS2V5MVNpZ25lZAUSYWRtaW5QdWJLZXkyU2lnbmVkBRJhZG1pblB1YktleTNTaWduZWQAAgQHJG1hdGNoMAUCdHgDCQABAgUHJG1hdGNoMAIXSW52b2tlU2NyaXB0VHJhbnNhY3Rpb24EA2ludgUHJG1hdGNoMAQGaXNTZWxmCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5BAppc1JpZ2h0RmVlAwkAAAIIBQNpbnYDZmVlAKC5jjAJAAACCAUDaW52CmZlZUFzc2V0SWQFBHVuaXQHBAppc0luaXRDYWxsCQAAAggFA2ludghmdW5jdGlvbgIEaW5pdAQMaXNub1BheW1lbnRzCQAAAgkAkAMBCAUDaW52CHBheW1lbnRzAAADAwMDBQppc1JpZ2h0RmVlBQppc0luaXRDYWxsBwUGaXNTZWxmBwUMaXNub1BheW1lbnRzBwYFE211bHRpU2lnbmVkQnlBZG1pbnMFE211bHRpU2lnbmVkQnlBZG1pbnOUG08I", "height": 2714341, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3hMEWSW212rKCDSJyXx2F4zxnjzhXQDf7yozAe43cjV3 Next: EmXYdeHoPaaskeoD2m5thsGD2SG6Nt1YJQKL8Dyd5Gbi Diff:
OldNewDifferences
243243 @Callable(i)
244244 func withdrawMarketing (amount,addressStr) = valueOrElse(isSelfCall(i), {
245245 let totalAmount = getIntegerValue(this, kMarketingAmount)
246- let withdrawed = getIntegerValue(this, kMarketingWithdrawed)
246+ let withdrawed = valueOrElse(getInteger(this, kMarketingWithdrawed), 0)
247247 let address = addressFromStringValue(addressStr)
248248 withdrawToOther(amount, totalAmount, withdrawed, address, kMarketingWithdrawed)
249249 })
253253 @Callable(i)
254254 func withdrawPartners (amount,addressStr) = valueOrElse(isSelfCall(i), {
255255 let totalAmount = getIntegerValue(this, kPartnerAmount)
256- let withdrawed = getIntegerValue(this, kPartnersWithdrawed)
256+ let withdrawed = valueOrElse(getInteger(this, kPartnersWithdrawed), 0)
257257 let address = addressFromStringValue(addressStr)
258258 withdrawToOther(amount, totalAmount, withdrawed, address, kPartnersWithdrawed)
259259 })
263263 @Callable(i)
264264 func withdrawRetroDraop (amount,addressStr) = valueOrElse(isSelfCall(i), {
265265 let totalAmount = getIntegerValue(this, kRetroDropAmount)
266- let withdrawed = getIntegerValue(this, kRetroDropWithdrawed)
266+ let withdrawed = valueOrElse(getInteger(this, kRetroDropWithdrawed), 0)
267267 let address = addressFromStringValue(addressStr)
268268 withdrawToOther(amount, totalAmount, withdrawed, address, kRetroDropWithdrawed)
269269 })
273273 @Callable(i)
274274 func withdrawPollInit (amount,addressStr) = valueOrElse(isSelfCall(i), {
275275 let totalAmount = getIntegerValue(this, kPoolInitAmount)
276- let withdrawed = getIntegerValue(this, kPoolInitWithdrawed)
276+ let withdrawed = valueOrElse(getInteger(this, kPoolInitWithdrawed), 0)
277277 let address = addressFromStringValue(addressStr)
278278 withdrawToOther(amount, totalAmount, withdrawed, address, kPoolInitWithdrawed)
279279 })
283283 @Callable(i)
284284 func withdrawLendReward (amount,addressToStr) = valueOrElse(isFarmingCall(i), {
285285 let totalAmount = getIntegerValue(this, kLendRewardAmount)
286- let withdrawed = getIntegerValue(this, kLendRewardWithdrawed)
286+ let withdrawed = valueOrElse(getInteger(this, kLendRewardWithdrawed), 0)
287287 let address = addressFromStringValue(addressToStr)
288288 withdrawToOther(amount, totalAmount, withdrawed, address, kLendRewardWithdrawed)
289289 })
293293 @Callable(i)
294294 func withdrawLpReward (amount,addressToStr) = valueOrElse(isFarmingCall(i), {
295295 let totalAmount = getIntegerValue(this, kLPRewardAmount)
296- let withdrawed = getIntegerValue(this, kLPRewardWithdrawed)
296+ let withdrawed = valueOrElse(getInteger(this, kLPRewardWithdrawed), 0)
297297 let address = addressFromStringValue(addressToStr)
298298 withdrawToOther(amount, totalAmount, withdrawed, address, kLPRewardWithdrawed)
299299 })
303303 @Callable(i)
304304 func withdrawLaunchpad (amount,addressToStr) = valueOrElse(isSelfCall(i), {
305305 let totalAmount = getIntegerValue(this, kLaunchpadAmount)
306- let withdrawed = getIntegerValue(this, kLaunchpadWithdrawed)
306+ let withdrawed = valueOrElse(getInteger(this, kLaunchpadWithdrawed), 0)
307307 let address = addressFromStringValue(addressToStr)
308308 withdrawToOther(amount, totalAmount, withdrawed, address, kLaunchpadWithdrawed)
309309 })
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)
153153 let vestingTill = ((startHeight + lockPeriod) + vestingPeriod)
154154 let canWithdraw = (fraction(totalAmount, min([(height - (startHeight + lockPeriod)), vestingTill]), vestingPeriod) - withdrawed)
155155 if ((lockTill >= height))
156156 then throw("Lock period is not end")
157157 else if ((0 >= canWithdraw))
158158 then throw("Nothing to withdraw")
159159 else [IntegerEntry(wKey, (withdrawed + canWithdraw)), ScriptTransfer(address, canWithdraw, AXLYId)]
160160 }
161161
162162
163163 func withdrawToOther (amount,totalAmount,withdrawed,address,wKey) = if (((withdrawed + amount) > totalAmount))
164164 then throw(((("You can't withdraw more than " + toString(totalAmount)) + " already withdrawed: ") + toString(withdrawed)))
165165 else [IntegerEntry(wKey, (withdrawed + amount)), ScriptTransfer(address, amount, AXLYId)]
166166
167167
168168 @Callable(i)
169169 func init (wDaoParams,teamParams,marketingPercent,partnerPercent,retroDropPercent,lendRewardPercent,lpRewardPercent,poolInitPercent,launchpadPercent,mainContractAddr,farmingAddr) = valueOrElse(isSelfCall(i), if ((size(wDaoParams) != 4))
170170 then throw("wDaoParams must have 4 args")
171171 else if ((size(teamParams) != 4))
172172 then throw("teamParams must have 4 args")
173173 else if ((0 >= marketingPercent))
174174 then throw("marketingPercent must be > 0")
175175 else if ((0 >= partnerPercent))
176176 then throw("partnerPercent must be > 0")
177177 else if ((0 >= retroDropPercent))
178178 then throw("retroDropPercent must be > 0")
179179 else if ((0 >= lendRewardPercent))
180180 then throw("lendRewardParams must be > 0")
181181 else if ((0 >= lpRewardPercent))
182182 then throw("lpRewardParams must be > 0")
183183 else if ((0 >= poolInitPercent))
184184 then throw("poolInitParams must be > 0")
185185 else if (!(isDefined(addressFromString(farmingAddr))))
186186 then throw("Wrong farming address")
187187 else if (!(isDefined(addressFromString(mainContractAddr))))
188188 then throw("Wrong main contract address")
189189 else {
190190 let $t072527350 = parseWDAOTeamParams(wDaoParams)
191191 let wDaoAddress = $t072527350._1
192192 let wDaoAmount = $t072527350._2
193193 let wDaoLockPeriod = $t072527350._3
194194 let wDaoVestingPeriod = $t072527350._4
195195 let $t073537451 = parseWDAOTeamParams(teamParams)
196196 let teamAddress = $t073537451._1
197197 let teamAmount = $t073537451._2
198198 let teamLockPeriod = $t073537451._3
199199 let teamVestingPeriod = $t073537451._4
200200 let mAmount = parsePercentParamToAmount(marketingPercent)
201201 let pAmount = parsePercentParamToAmount(partnerPercent)
202202 let rAmount = parsePercentParamToAmount(retroDropPercent)
203203 let lAmount = parsePercentParamToAmount(lendRewardPercent)
204204 let lpAmount = parsePercentParamToAmount(lpRewardPercent)
205205 let piAmount = parsePercentParamToAmount(poolInitPercent)
206206 let laAmount = parsePercentParamToAmount(launchpadPercent)
207207 let sum = (((((((wDaoAmount + teamAmount) + mAmount) + pAmount) + rAmount) + lAmount) + lpAmount) + piAmount)
208208 if ((sum > INITIAL_TOKEN_AMOUNT))
209209 then throw("Wrong percents( > 100%)")
210210 else {
211211 let issue = Issue("AXLY", "AXLY protocol token", INITIAL_TOKEN_AMOUNT, 8, false)
212212 let idStr = toBase58String(calculateAssetId(issue))
213213 [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)]
214214 }
215215 })
216216
217217
218218
219219 @Callable(i)
220220 func withdrawWDao () = {
221221 let amount = getIntegerValue(this, kWDaoAmount)
222222 let lockPeriod = getIntegerValue(this, kWDaoLock)
223223 let vestingPeriod = getIntegerValue(this, kWDaoVesting)
224224 let address = addressFromStringValue(getStringValue(this, kWDaoAddress))
225225 let withdrawed = valueOrElse(getInteger(this, kWDaoWithdrawed), 0)
226226 withdrawTeamDao(amount, lockPeriod, vestingPeriod, withdrawed, address, kWDaoWithdrawed)
227227 }
228228
229229
230230
231231 @Callable(i)
232232 func withdrawTeam () = {
233233 let amount = getIntegerValue(this, kTeamAmount)
234234 let lockPeriod = getIntegerValue(this, kTeamLock)
235235 let vestingPeriod = getIntegerValue(this, kTeamVesting)
236236 let address = addressFromStringValue(getStringValue(this, kTeamAddress))
237237 let withdrawed = valueOrElse(getInteger(this, kTeamWithdrawed), 0)
238238 withdrawTeamDao(amount, lockPeriod, vestingPeriod, withdrawed, address, kTeamWithdrawed)
239239 }
240240
241241
242242
243243 @Callable(i)
244244 func withdrawMarketing (amount,addressStr) = valueOrElse(isSelfCall(i), {
245245 let totalAmount = getIntegerValue(this, kMarketingAmount)
246- let withdrawed = getIntegerValue(this, kMarketingWithdrawed)
246+ let withdrawed = valueOrElse(getInteger(this, kMarketingWithdrawed), 0)
247247 let address = addressFromStringValue(addressStr)
248248 withdrawToOther(amount, totalAmount, withdrawed, address, kMarketingWithdrawed)
249249 })
250250
251251
252252
253253 @Callable(i)
254254 func withdrawPartners (amount,addressStr) = valueOrElse(isSelfCall(i), {
255255 let totalAmount = getIntegerValue(this, kPartnerAmount)
256- let withdrawed = getIntegerValue(this, kPartnersWithdrawed)
256+ let withdrawed = valueOrElse(getInteger(this, kPartnersWithdrawed), 0)
257257 let address = addressFromStringValue(addressStr)
258258 withdrawToOther(amount, totalAmount, withdrawed, address, kPartnersWithdrawed)
259259 })
260260
261261
262262
263263 @Callable(i)
264264 func withdrawRetroDraop (amount,addressStr) = valueOrElse(isSelfCall(i), {
265265 let totalAmount = getIntegerValue(this, kRetroDropAmount)
266- let withdrawed = getIntegerValue(this, kRetroDropWithdrawed)
266+ let withdrawed = valueOrElse(getInteger(this, kRetroDropWithdrawed), 0)
267267 let address = addressFromStringValue(addressStr)
268268 withdrawToOther(amount, totalAmount, withdrawed, address, kRetroDropWithdrawed)
269269 })
270270
271271
272272
273273 @Callable(i)
274274 func withdrawPollInit (amount,addressStr) = valueOrElse(isSelfCall(i), {
275275 let totalAmount = getIntegerValue(this, kPoolInitAmount)
276- let withdrawed = getIntegerValue(this, kPoolInitWithdrawed)
276+ let withdrawed = valueOrElse(getInteger(this, kPoolInitWithdrawed), 0)
277277 let address = addressFromStringValue(addressStr)
278278 withdrawToOther(amount, totalAmount, withdrawed, address, kPoolInitWithdrawed)
279279 })
280280
281281
282282
283283 @Callable(i)
284284 func withdrawLendReward (amount,addressToStr) = valueOrElse(isFarmingCall(i), {
285285 let totalAmount = getIntegerValue(this, kLendRewardAmount)
286- let withdrawed = getIntegerValue(this, kLendRewardWithdrawed)
286+ let withdrawed = valueOrElse(getInteger(this, kLendRewardWithdrawed), 0)
287287 let address = addressFromStringValue(addressToStr)
288288 withdrawToOther(amount, totalAmount, withdrawed, address, kLendRewardWithdrawed)
289289 })
290290
291291
292292
293293 @Callable(i)
294294 func withdrawLpReward (amount,addressToStr) = valueOrElse(isFarmingCall(i), {
295295 let totalAmount = getIntegerValue(this, kLPRewardAmount)
296- let withdrawed = getIntegerValue(this, kLPRewardWithdrawed)
296+ let withdrawed = valueOrElse(getInteger(this, kLPRewardWithdrawed), 0)
297297 let address = addressFromStringValue(addressToStr)
298298 withdrawToOther(amount, totalAmount, withdrawed, address, kLPRewardWithdrawed)
299299 })
300300
301301
302302
303303 @Callable(i)
304304 func withdrawLaunchpad (amount,addressToStr) = valueOrElse(isSelfCall(i), {
305305 let totalAmount = getIntegerValue(this, kLaunchpadAmount)
306- let withdrawed = getIntegerValue(this, kLaunchpadWithdrawed)
306+ let withdrawed = valueOrElse(getInteger(this, kLaunchpadWithdrawed), 0)
307307 let address = addressFromStringValue(addressToStr)
308308 withdrawToOther(amount, totalAmount, withdrawed, address, kLaunchpadWithdrawed)
309309 })
310310
311311
312312 @Verifier(tx)
313313 func verify () = {
314314 let multiSignedByAdmins = {
315315 let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], admin1PK))
316316 then 1
317317 else 0
318318 let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], admin2PK))
319319 then 1
320320 else 0
321321 let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], admin3PK))
322322 then 1
323323 else 0
324324 (((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) >= 2)
325325 }
326326 match tx {
327327 case inv: InvokeScriptTransaction =>
328328 let isSelf = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
329329 let isRightFee = if ((inv.fee == 100900000))
330330 then (inv.feeAssetId == unit)
331331 else false
332332 let isInitCall = (inv.function == "init")
333333 let isnoPayments = (size(inv.payments) == 0)
334334 if (if (if (if (isRightFee)
335335 then isInitCall
336336 else false)
337337 then isSelf
338338 else false)
339339 then isnoPayments
340340 else false)
341341 then true
342342 else multiSignedByAdmins
343343 case _ =>
344344 multiSignedByAdmins
345345 }
346346 }
347347

github/deemru/w8io/3ef1775 
62.74 ms