tx · DNG1ASrAMjGfQj9Gshq7KX6Ttv4r1CZ69cxLFmPPvE4Q 3PJ6BKNEdH6mtdNyUhnBbqrGz3GGywz2h5f: -0.14000000 Waves 2021.11.12 17:36 [2852954] smart account 3PJ6BKNEdH6mtdNyUhnBbqrGz3GGywz2h5f > SELF 0.00000000 Waves
{ "type": 13, "id": "DNG1ASrAMjGfQj9Gshq7KX6Ttv4r1CZ69cxLFmPPvE4Q", "fee": 14000000, "feeAssetId": null, "timestamp": 1636727074755, "version": 1, "sender": "3PJ6BKNEdH6mtdNyUhnBbqrGz3GGywz2h5f", "senderPublicKey": "Eaf4FwUufqN2GjEDu6h1w8UT5zB58jCghAoQRg1H3Pv1", "proofs": [ "5EKTspzwNqe3GVAP24eXvg2GEyFFvDEhKFiaaMqeChKu1EhwJbum8SaA2pvmYfcnSEXqQkA6kZYrzpQye2jFbRx6", "4XFnwvRFtD66KcruBqvvGGspgxHj1psuQRN6WDi4z9GyZDjgNHygPTDNj6V3nBCzxCypftzvfFhtKyuF5qBcd5G3", "2pzRZX4BtrZCE5YAU88W8jGDJAe6GrgJC5MoQpzTHRjfNnYyGCLDRGiLZ4bRe7A5MkvG9KGwoakVhWwZF5z1ok8W" ], "script": "base64:AAIFAAAAAAAAACUIAhIGCgQBAQgBEgMKAQQSABIDCgEBEgASAwoBARIAEgASABIAAAAAJQAAAAAMYWRtaW5QdWJLZXkxAQAAACDJxyCCGGPk89xsFxmaDibmd1jcSfgQ8HxDeftk0Ox5KgAAAAAMYWRtaW5QdWJLZXkyAQAAACAFlOXQtBg57mpe7DIjiXEM78kSjmiuR1bbRsgmpwU5UgAAAAAMYWRtaW5QdWJLZXkzAQAAACDTUBhYnt/E8QhwUloSu1wIouwGc+6gQELZanNZDnVkQgAAAAAUYWRtaW5QdWJLZXlTdGFydFN0b3ABAAAAIMnHIIIYY+Tz3GwXGZoOJuZ3WNxJ+BDwfEN5+2TQ7HkqAAAAAAlrZXlBY3RpdmUCAAAABmFjdGl2ZQAAAAAIa2V5Q2F1c2UCAAAADnNodXRkb3duX2NhdXNlAAAAAAxrZXlWb3RlU3RhcnQCAAAAEXZvdGVfc3RhcnRfaGVpZ2h0AAAAAAprZXlWb3RlRW5kAgAAAA92b3RlX2VuZF9oZWlnaHQAAAAACmtleVZvdGVZZXMCAAAACnllc19hbW91bnQAAAAACWtleVZvdGVObwIAAAAJbm9fYW1vdW50AAAAABBrZXlVc2VyRU5OT1ZvdGVkAgAAAApfRU5OT192b3RlAAAAABZrZXlVc2VyRU5OT1ZvdGVkSGVpZ2h0AgAAABFfRU5OT192b3RlX2hlaWdodAAAAAAVa2V5VXNlckVOTk9Wb3RlZFZhbHVlAgAAABBfRU5OT192b3RlX3ZhbHVlAAAAABhrZXlVc2VyRU5OT1ZvdGVkWUVTVmFsdWUCAAAAFF9FTk5PX3ZvdGVfeWVzX3NoYXJlAAAAABBrZXlUb3RhbFllc1ZvdGVkAgAAABN0b3RhbF9FTk5PX3ZvdGVfeWVzAAAAABFrZXlVc2VyRU5OT0xvY2tlZAIAAAAMX0VOTk9fYW1vdW50AAAAABJrZXlUb3RhbEVOTk9Mb2NrZWQCAAAAEXRvdGFsX0VOTk9fYW1vdW50AAAAAA1rZXlUb3RhbFZvdGVkAgAAAA90b3RhbF9FTk5PX3ZvdGUAAAAAEWtleVRvdGFsVm90ZVNoYXJlAgAAABV0b3RhbF9FTk5PX3ZvdGVfc2hhcmUAAAAAEmFjdGl2ZUFpcmRyb3BUb2tlbgIAAAAUYWN0aXZlX2FpcmRyb3BfdG9rZW4AAAAAE2FjdGl2ZUFpcmRyb3BBbW91bnQCAAAAFWFjdGl2ZV9haXJkcm9wX2Ftb3VudAAAAAAOY2xhaW1BdmFpbGFibGUCAAAAG2FjdGl2ZV9haXJkcm9wX2NsYWltX3N0YXR1cwAAAAAYa2V5VXNlckVOTk9DbGFpbWVkQW1vdW50AgAAABRfRU5OT19jbGFpbWVkX2Ftb3VudAAAAAAca2V5VXNlckVOTk9MYXN0Q2xhaW1lZEFtb3VudAIAAAAZX0VOTk9fbGFzdF9jbGFpbWVkX2Ftb3VudAAAAAAUa2V5VXNlckVOTk9Mb2NrZWRUYWcCAAAABnNoYXJlXwAAAAAIaXNBY3RpdmUJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQbAAAAAgUAAAAEdGhpcwUAAAAJa2V5QWN0aXZlBgAAAAAOaXNBaXJkcm9wQ2xhaW0JAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQbAAAAAgUAAAAEdGhpcwUAAAAOY2xhaW1BdmFpbGFibGUHAAAAAAlzaGFyZURhdGEBAAAAIG3IBDbpYf8bmAHP4MQ+Rk/Qfh4B8YlACVSQiDBoutsJAAAAAARFTk5PAQAAACBeG1FcwSnygBgFC21hvr32B2lOIrzncH9MUU0TMHZSswEAAAAHc3VzcGVuZAAAAAEAAAAFY2F1c2UJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIFAAAACWtleUFjdGl2ZQcJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAIa2V5Q2F1c2UFAAAABWNhdXNlBQAAAANuaWwBAAAAEWdldFVzZXJFTk5PTG9ja2VkAAAAAQAAAAR1c2VyCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgkABCUAAAABBQAAAAR1c2VyBQAAABFrZXlVc2VyRU5OT0xvY2tlZAAAAAAAAAAAAAEAAAASZ2V0VG90YWxFTk5PTG9ja2VkAAAAAAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAABJrZXlUb3RhbEVOTk9Mb2NrZWQAAAAAAAAAAAABAAAAD2dldFVzZXJWb3RlRGF0YQAAAAIAAAAEdXNlcgAAAANr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AAEFAAAACmtleVZvdGVFbmQJAAACAAAAAQIAAAAZVm90aW5nIGhhcyBhbHJlYWR5IGVuZGVkLgQAAAAIdG90YWxZZXMJAQAAAAZnZXRWYWwAAAABBQAAABBrZXlUb3RhbFllc1ZvdGVkBAAAABJhaXJkcm9wVG9rZW5TdHJpbmcJAAEsAAAAAgIAAAABXwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAR0aGlzBQAAABJhY3RpdmVBaXJkcm9wVG9rZW4CAAAAA04vQQQAAAAMdXNlclZvdGVkWWVzCQEAAAAPZ2V0VXNlclZvdGVEYXRhAAAAAggFAAAAAWkAAAAGY2FsbGVyCQABLAAAAAIFAAAAEmFpcmRyb3BUb2tlblN0cmluZwUAAAAYa2V5VXNlckVOTk9Wb3RlZFlFU1ZhbHVlBAAAAA11c2VyRU5OT1ZvdGVkCQEAAAAPZ2V0VXNlclZvdGVEYXRhAAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAABBrZXlVc2VyRU5OT1ZvdGVkBAAAAA51c2VyRU5OT0xvY2tlZAkBAAAAD2dldFVzZXJWb3RlRGF0YQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAARa2V5VXNlckVOTk9Mb2NrZWQEAAAAEHVzZXJFTk5PVm90ZWROZXcJAABkAAAAAgUAAAANdXNlckVOTk9Wb3RlZAUAAAAKdm90ZUFtb3VudAMJAABmAAAAAgAAAAAAAAAAAAUAAAAQdXNlckVOTk9Wb3RlZE5ldwkAAAIAAAABAgAAABlWb3RlIG11c3QgYmUgbW9yZSB0aGFuIDAuBAAAAA1hdmFpbGFibGVWb3RlCQAAZQAAAAIFAAAADnVzZXJFTk5PTG9ja2VkBQAAAA11c2VyRU5OT1ZvdGVkBAAAAA11c2VyVm90ZVZhbHVlCQEAAAAIc2V0U2hhcmUAAAABBQAAAAp2b3RlQW1vdW50AwkAAGYAAAACBQAAAAp2b3RlQW1vdW50BQAAAA1hdmFpbGFibGVWb3RlCQAAAgAAAAECAAAAI1ZvdGUgYW1vdW50IGlzIG1vcmUgdGhhbiBhdmFpbGFibGUuBAAAABV1c2VyRU5OT1ZvdGVkTmV3U2hhcmUJAABkAAAAAgUAAAAMdXNlclZvdGVkWWVzBQAAAA11c2VyVm90ZVZhbHVlBAAAABBuZXdUb3RhbFllc1ZvdGVkCQAAZAAAAAIFAAAACHRvdGFsWWVzBQAAAA11c2VyVm90ZVZhbHVlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAEmFpcmRyb3BUb2tlblN0cmluZwUAAAAYa2V5VXNlckVOTk9Wb3RlZFlFU1ZhbHVlBQAAABV1c2VyRU5OT1ZvdGVkTmV3U2hhcmUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAEGtleVVzZXJFTk5PVm90ZWQFAAAAEHVzZXJFTk5PVm90ZWROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEGtleVRvdGFsWWVzVm90ZWQFAAAAEG5ld1RvdGFsWWVzVm90ZWQFAAAAA25pbAAAAAFpAQAAAAhsb2NrRU5OTwAAAAADCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQEAAAACyR0MDY2Njc2NzQyCQAFFAAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAQAAAAJcG10QW1vdW50CAUAAAALJHQwNjY2NzY3NDIAAAACXzEEAAAACnBtdEFzc2V0SWQIBQAAAAskdDA2NjY3Njc0MgAAAAJfMgMJAQAAAAIhPQAAAAIFAAAACnBtdEFzc2V0SWQFAAAABEVOTk8JAAACAAAAAQIAAAA0SW5jb3JyZWN0IHBheW1lbnQgYXNzZXRJZCBvbmx5IEVubm8gQ2FzaCBpcyBhbGxvd2VkLgQAAAAOdXNlckVOTk9Mb2NrZWQJAQAAABFnZXRVc2VyRU5OT0xvY2tlZAAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAARdXNlckVOTk9Mb2NrZWROZXcJAABkAAAAAgUAAAAOdXNlckVOTk9Mb2NrZWQFAAAACXBtdEFtb3VudAQAAAAPdG90YWxFTk5PTG9ja2VkCQEAAAASZ2V0VG90YWxFTk5PTG9ja2VkAAAAAAQAAAASdG90YWxFTk5PTG9ja2VkTmV3CQAAZAAAAAIFAAAAD3RvdGFsRU5OT0xvY2tlZAUAAAAJcG10QW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABFrZXlVc2VyRU5OT0xvY2tlZAUAAAARdXNlckVOTk9Mb2NrZWROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEmtleVRvdGFsRU5OT0xvY2tlZAUAAAASdG90YWxFTk5PTG9ja2VkTmV3BQAAAANuaWwAAAABaQEAAAAMd2l0aGRyYXdFTk5PAAAAAQAAAA53aXRoZHJhd0Ftb3VudAMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAAACAAAAAQIAAAAfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAQAAAAOdXNlckVOTk9Mb2NrZWQJAQAAABFnZXRVc2VyRU5OT0xvY2tlZAAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAATYXZhaWxhYmxlVG9XaXRoZHJhdwkAAGUAAAACBQAAAA51c2VyRU5OT0xvY2tlZAkBAAAABmdldFZhbAAAAAEJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAEGtleVVzZXJFTk5PVm90ZWQDCQAAZgAAAAIFAAAADndpdGhkcmF3QW1vdW50BQAAABNhdmFpbGFibGVUb1dpdGhkcmF3CQAAAgAAAAECAAAAE1lvdXIgRW5ubyBpcyBsb2NrZWQDCQAAZwAAAAIAAAAAAAAAAAAFAAAADndpdGhkcmF3QW1vdW50CQAAAgAAAAECAAAAE3dpdGhkcmF3QW1vdW50IDw9IDAEAAAAD3RvdGFsRU5OT0xvY2tlZAkBAAAAEmdldFRvdGFsRU5OT0xvY2tlZAAAAAADCQAAZgAAAAIFAAAADndpdGhkcmF3QW1vdW50BQAAAA90b3RhbEVOTk9Mb2NrZWQJAAACAAAAAQIAAAAxd2l0aGRyYXdBbW91bnQgaXMgbW9yZSB0aGFuIGF2YWlsYWJsZSB0byB3aXRoZHJhdwMJAABmAAAAAgUAAAAOd2l0aGRyYXdBbW91bnQFAAAADnVzZXJFTk5PTG9ja2VkCQAAAgAAAAECAAAANFlvdSBhcmUgdHJ5aW5nIHRvIHVuc3Rha2UgbW9yZSB0aGFuIHlvdSBoYXZlIHN0YWtlZC4EAAAAEnRvdGFsRU5OT0xvY2tlZE5ldwkAAGUAAAACBQAAAA90b3RhbEVOTk9Mb2NrZWQFAAAADndpdGhkcmF3QW1vdW50BAAAABF1c2VyRU5OT2Ftb3VudE5ldwkAAGUAAAACBQAAAA51c2VyRU5OT0xvY2tlZAUAAAAOd2l0aGRyYXdBbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAEWtleVVzZXJFTk5PTG9ja2VkBQAAABF1c2VyRU5OT2Ftb3VudE5ldwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAASa2V5VG90YWxFTk5PTG9ja2VkBQAAABJ0b3RhbEVOTk9Mb2NrZWROZXcJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAA53aXRoZHJhd0Ftb3VudAUAAAAERU5OTwUAAAADbmlsAAAAAWkBAAAAFGNsYWltQW5kV2l0aGRyYXdFTk5PAAAAAAMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAAACAAAAAQIAAAAfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAQAAAAJdXNlclNoYXJlCQEAAAAOZ2V0Q2FsbGVyU2hhcmUAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIEAAAAEXVzZXJDbGFpbWVkQW1vdW50CQEAAAAQZ2V0Q2xhaW1lZEFtb3VudAAAAAEIBQAAAAFpAAAADG9yaWdpbkNhbGxlcgQAAAALY2xhaW1BbW91bnQJAABlAAAAAgUAAAAJdXNlclNoYXJlBQAAABF1c2VyQ2xhaW1lZEFtb3VudAQAAAAPdG90YWxFTk5PTG9ja2VkCQEAAAASZ2V0VG90YWxFTk5PTG9ja2VkAAAAAAMJAABmAAAAAgUAAAALY2xhaW1BbW91bnQFAAAAD3RvdGFsRU5OT0xvY2tlZAkAAAIAAAABAgAAAC5jbGFpbUFtb3VudCBpcyBtb3JlIHRoYW4gYXZhaWxhYmxlIHRvIHdpdGhkcmF3AwkAAGcAAAACAAAAAAAAAAAABQAAAAtjbGFpbUFtb3VudAkAAAIAAAABAgAAACJDbGFpbSBhbW91bnQgbXVzdCBiZSBiaWdnZXIgdGhhbiAwBAAAABR1c2VyQ2xhaW1lZEFtb3VudE5ldwkAAGQAAAACBQAAABF1c2VyQ2xhaW1lZEFtb3VudAUAAAALY2xhaW1BbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIFAAAAGGtleVVzZXJFTk5PQ2xhaW1lZEFtb3VudAUAAAAUdXNlckNsYWltZWRBbW91bnROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIFAAAAHGtleVVzZXJFTk5PTGFzdENsYWltZWRBbW91bnQFAAAAC2NsYWltQW1vdW50CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAADG9yaWdpbkNhbGxlcgUAAAALY2xhaW1BbW91bnQFAAAABEVOTk8FAAAAA25pbAAAAAFpAQAAABFjbGFpbUFuZFN0YWtlRU5OTwAAAAADCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQEAAAACXVzZXJTaGFyZQkBAAAADmdldENhbGxlclNoYXJlAAAAAQgFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyBAAAABF1c2VyQ2xhaW1lZEFtb3VudAkBAAAAEGdldENsYWltZWRBbW91bnQAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIEAAAAC2NsYWltQW1vdW50CQAAZQAAAAIFAAAACXVzZXJTaGFyZQUAAAARdXNlckNsYWltZWRBbW91bnQDCQAAZwAAAAIAAAAAAAAAAAAFAAAAC2NsYWltQW1vdW50CQAAAgAAAAECAAAAIkNsYWltIGFtb3VudCBtdXN0IGJlIGJpZ2dlciB0aGFuIDAEAAAAFHVzZXJDbGFpbWVkQW1vdW50TmV3CQAAZAAAAAIFAAAAEXVzZXJDbGFpbWVkQW1vdW50BQAAAAtjbGFpbUFtb3VudAQAAAAOdXNlckVOTk9Mb2NrZWQJAQAAABFnZXRVc2VyRU5OT0xvY2tlZAAAAAEIBQAAAAFpAAAADG9yaWdpbkNhbGxlcgQAAAARdXNlckVOTk9Mb2NrZWROZXcJAABkAAAAAgUAAAAOdXNlckVOTk9Mb2NrZWQFAAAAC2NsYWltQW1vdW50BAAAAA90b3RhbEVOTk9Mb2NrZWQJAQAAABJnZXRUb3RhbEVOTk9Mb2NrZWQAAAAABAAAABJ0b3RhbEVOTk9Mb2NrZWROZXcJAABkAAAAAgUAAAAPdG90YWxFTk5PTG9ja2VkBQAAAAtjbGFpbUFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQAEJQAAAAEIBQAAAAFpAAAADG9yaWdpbkNhbGxlcgUAAAARa2V5VXNlckVOTk9Mb2NrZWQFAAAAEXVzZXJFTk5PTG9ja2VkTmV3CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyBQAAABhrZXlVc2VyRU5OT0NsYWltZWRBbW91bnQFAAAAFHVzZXJDbGFpbWVkQW1vdW50TmV3CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyBQAAABxrZXlVc2VyRU5OT0xhc3RDbGFpbWVkQW1vdW50BQAAAAtjbGFpbUFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAASa2V5VG90YWxFTk5PTG9ja2VkBQAAABJ0b3RhbEVOTk9Mb2NrZWROZXcFAAAAA25pbAAAAAFpAQAAAAhzaHV0ZG93bgAAAAADCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAEJAAEsAAAAAgIAAAAiREFwcCBpcyBhbHJlYWR5IHN1c3BlbmRlZC4gQ2F1c2U6IAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAR0aGlzBQAAAAhrZXlDYXVzZQIAAAAadGhlIGNhdXNlIHdhc24ndCBzcGVjaWZpZWQDCQEAAAABIQAAAAEJAQAAAA9jb250YWluc0VsZW1lbnQAAAACCQAETAAAAAIFAAAADGFkbWluUHViS2V5MQkABEwAAAACBQAAAAxhZG1pblB1YktleTIJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkzCQAETAAAAAIFAAAAFGFkbWluUHViS2V5U3RhcnRTdG9wBQAAAANuaWwIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQkAAAIAAAABAgAAACFPbmx5IGFkbWluIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24JAQAAAAdzdXNwZW5kAAAAAQIAAAAPUGF1c2VkIGJ5IGFkbWluAAAAAWkBAAAACGFjdGl2YXRlAAAAAAMFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAFkRBcHAgaXMgYWxyZWFkeSBhY3RpdmUDCQEAAAABIQAAAAEJAQAAAA9jb250YWluc0VsZW1lbnQAAAACCQAETAAAAAIFAAAADGFkbWluUHViS2V5MQkABEwAAAACBQAAAAxhZG1pblB1YktleTIJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkzCQAETAAAAAIFAAAAFGFkbWluUHViS2V5U3RhcnRTdG9wBQAAAANuaWwIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQkAAAIAAAABAgAAACFPbmx5IGFkbWluIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24JAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIFAAAACWtleUFjdGl2ZQYJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAAIa2V5Q2F1c2UFAAAAA25pbAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAEAAAAEmFkbWluUHViS2V5MVNpZ25lZAMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAABQAAAAxhZG1pblB1YktleTEAAAAAAAAAAAEAAAAAAAAAAAAEAAAAEmFkbWluUHViS2V5MlNpZ25lZAMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAABBQAAAAxhZG1pblB1YktleTIAAAAAAAAAAAEAAAAAAAAAAAAEAAAAEmFkbWluUHViS2V5M1NpZ25lZAMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAACBQAAAAxhZG1pblB1YktleTMAAAAAAAAAAAEAAAAAAAAAAAAJAABnAAAAAgkAAGQAAAACCQAAZAAAAAIFAAAAEmFkbWluUHViS2V5MVNpZ25lZAUAAAASYWRtaW5QdWJLZXkyU2lnbmVkBQAAABJhZG1pblB1YktleTNTaWduZWQAAAAAAAAAAAKYqFuf", "chainId": 87, "height": 2852954, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: TWan5v11bdfqrFGvtPjsq8MW4kbLkFD9cmJ7GckLxcQ Next: none Diff:
Old | New | Differences | |
---|---|---|---|
13 | 13 | ||
14 | 14 | let f = "shutdown_cause" | |
15 | 15 | ||
16 | - | let g = "_ | |
16 | + | let g = "vote_start_height" | |
17 | 17 | ||
18 | - | let h = " | |
18 | + | let h = "vote_end_height" | |
19 | 19 | ||
20 | - | let i = " | |
20 | + | let i = "yes_amount" | |
21 | 21 | ||
22 | - | let j = " | |
22 | + | let j = "no_amount" | |
23 | 23 | ||
24 | - | let k = " | |
24 | + | let k = "_ENNO_vote" | |
25 | 25 | ||
26 | - | let l = | |
26 | + | let l = "_ENNO_vote_height" | |
27 | 27 | ||
28 | - | let m = | |
28 | + | let m = "_ENNO_vote_value" | |
29 | 29 | ||
30 | - | let n = | |
30 | + | let n = "_ENNO_vote_yes_share" | |
31 | 31 | ||
32 | - | func o (p) = [BooleanEntry(e, false), StringEntry(f, p)] | |
32 | + | let o = "total_ENNO_vote_yes" | |
33 | + | ||
34 | + | let p = "_ENNO_amount" | |
35 | + | ||
36 | + | let q = "total_ENNO_amount" | |
37 | + | ||
38 | + | let r = "total_ENNO_vote" | |
39 | + | ||
40 | + | let s = "total_ENNO_vote_share" | |
41 | + | ||
42 | + | let t = "active_airdrop_token" | |
43 | + | ||
44 | + | let u = "active_airdrop_amount" | |
45 | + | ||
46 | + | let v = "active_airdrop_claim_status" | |
47 | + | ||
48 | + | let w = "_ENNO_claimed_amount" | |
49 | + | ||
50 | + | let x = "_ENNO_last_claimed_amount" | |
51 | + | ||
52 | + | let y = "share_" | |
53 | + | ||
54 | + | let z = valueOrElse(getBoolean(this, e), true) | |
55 | + | ||
56 | + | let A = valueOrElse(getBoolean(this, v), false) | |
57 | + | ||
58 | + | let B = base58'8PYLQhGnktNwGZo5AKLxwBLnAvUc25v4Cw52ihHM6iyE' | |
59 | + | ||
60 | + | let C = base58'7LMV3s1J4dKpMQZqge5sKYoFkZRLojnnU49aerqos4yg' | |
61 | + | ||
62 | + | func D (E) = [BooleanEntry(e, false), StringEntry(f, E)] | |
33 | 63 | ||
34 | 64 | ||
35 | - | func | |
65 | + | func F (G) = valueOrElse(getInteger(this, (toString(G) + p)), 0) | |
36 | 66 | ||
37 | 67 | ||
38 | - | func | |
68 | + | func H () = valueOrElse(getInteger(this, q), 0) | |
39 | 69 | ||
40 | 70 | ||
41 | - | func t (u) = { | |
42 | - | let v = getInteger(addressFromPublicKey(m), (k + toString(u))) | |
43 | - | let w = { | |
44 | - | let x = v | |
45 | - | if ($isInstanceOf(x, "Int")) | |
71 | + | func I (G,J) = valueOrElse(getInteger(this, (toString(G) + J)), 0) | |
72 | + | ||
73 | + | ||
74 | + | func K (J) = valueOrElse(getInteger(this, J), 0) | |
75 | + | ||
76 | + | ||
77 | + | func L (M) = { | |
78 | + | let N = getInteger(addressFromPublicKey(B), (y + toString(M))) | |
79 | + | let O = { | |
80 | + | let P = N | |
81 | + | if ($isInstanceOf(P, "Int")) | |
46 | 82 | then { | |
47 | - | let | |
48 | - | | |
83 | + | let Q = P | |
84 | + | Q | |
49 | 85 | } | |
50 | - | else if ($isInstanceOf( | |
86 | + | else if ($isInstanceOf(P, "Unit")) | |
51 | 87 | then { | |
52 | - | let | |
88 | + | let Q = P | |
53 | 89 | throw("Only governance qualifiers can call this function.") | |
54 | 90 | } | |
55 | 91 | else throw("Match error") | |
56 | 92 | } | |
57 | - | | |
93 | + | O | |
58 | 94 | } | |
59 | 95 | ||
60 | 96 | ||
61 | - | func | |
62 | - | let | |
63 | - | let | |
64 | - | let | |
65 | - | if ($isInstanceOf( | |
97 | + | func R (M) = { | |
98 | + | let S = getInteger(this, (toString(M) + w)) | |
99 | + | let T = { | |
100 | + | let P = S | |
101 | + | if ($isInstanceOf(P, "Int")) | |
66 | 102 | then { | |
67 | - | let | |
68 | - | | |
103 | + | let Q = P | |
104 | + | Q | |
69 | 105 | } | |
70 | - | else if ($isInstanceOf( | |
106 | + | else if ($isInstanceOf(P, "Unit")) | |
71 | 107 | then { | |
72 | - | let | |
108 | + | let Q = P | |
73 | 109 | 0 | |
74 | 110 | } | |
75 | 111 | else throw("Match error") | |
76 | 112 | } | |
77 | - | | |
113 | + | T | |
78 | 114 | } | |
79 | 115 | ||
80 | 116 | ||
81 | - | @Callable(C) | |
82 | - | func lockENNO () = if (!(l)) | |
117 | + | func U (V) = { | |
118 | + | let W = (K(h) - height) | |
119 | + | let Q = fraction(V, W, 100000000) | |
120 | + | Q | |
121 | + | } | |
122 | + | ||
123 | + | ||
124 | + | @Callable(X) | |
125 | + | func initVote (Y,Z,aa,V) = if (!(z)) | |
126 | + | then throw("DApp is inactive at this moment") | |
127 | + | else if (!(containsElement([a, b, c, d], X.callerPublicKey))) | |
128 | + | then throw("Only admin can call this function") | |
129 | + | else [StringEntry(t, aa), IntegerEntry(u, V), IntegerEntry(g, Y), IntegerEntry(h, Z), IntegerEntry(o, 0), BooleanEntry(v, false)] | |
130 | + | ||
131 | + | ||
132 | + | ||
133 | + | @Callable(X) | |
134 | + | func activateAirdropClaim (ab) = if (!(z)) | |
135 | + | then throw("DApp is inactive at this moment") | |
136 | + | else if (!(containsElement([a, b, c, d], X.callerPublicKey))) | |
137 | + | then throw("Only admin can call this function") | |
138 | + | else [BooleanEntry(v, ab)] | |
139 | + | ||
140 | + | ||
141 | + | ||
142 | + | @Callable(X) | |
143 | + | func claimAirdrop () = if (!(z)) | |
144 | + | then throw("DApp is inactive at this moment") | |
145 | + | else if (!(A)) | |
146 | + | then throw("Claim has not started yet.") | |
147 | + | else if ((K(g) > height)) | |
148 | + | then throw("Voting has not started yet.") | |
149 | + | else if ((K(h) > height)) | |
150 | + | then throw("Voting has not ended yet.") | |
151 | + | else { | |
152 | + | let aa = getStringValue(this, t) | |
153 | + | let ac = K(u) | |
154 | + | let ad = fromBase58String(aa) | |
155 | + | let ae = ("_" + aa) | |
156 | + | let Q = K(((toString(X.caller) + ae) + n)) | |
157 | + | if ((0 >= Q)) | |
158 | + | then throw("You already claimed or you have not participated.") | |
159 | + | else { | |
160 | + | let af = K(o) | |
161 | + | let ag = fraction(Q, ac, af) | |
162 | + | [DeleteEntry(((toString(X.caller) + ae) + n)), DeleteEntry((toString(X.caller) + k)), ScriptTransfer(X.caller, ag, ad)] | |
163 | + | } | |
164 | + | } | |
165 | + | ||
166 | + | ||
167 | + | ||
168 | + | @Callable(X) | |
169 | + | func vote (ah) = if (!(z)) | |
170 | + | then throw("DApp is inactive at this moment") | |
171 | + | else if ((K(g) > height)) | |
172 | + | then throw("Voting has not started yet.") | |
173 | + | else if ((height > K(h))) | |
174 | + | then throw("Voting has already ended.") | |
175 | + | else { | |
176 | + | let ai = K(o) | |
177 | + | let ae = ("_" + valueOrElse(getString(this, t), "N/A")) | |
178 | + | let aj = I(X.caller, (ae + n)) | |
179 | + | let ak = I(X.caller, k) | |
180 | + | let al = I(X.caller, p) | |
181 | + | let am = (ak + ah) | |
182 | + | if ((0 > am)) | |
183 | + | then throw("Vote must be more than 0.") | |
184 | + | else { | |
185 | + | let an = (al - ak) | |
186 | + | let ao = U(ah) | |
187 | + | if ((ah > an)) | |
188 | + | then throw("Vote amount is more than available.") | |
189 | + | else { | |
190 | + | let ap = (aj + ao) | |
191 | + | let aq = (ai + ao) | |
192 | + | [IntegerEntry(((toString(X.caller) + ae) + n), ap), IntegerEntry((toString(X.caller) + k), am), IntegerEntry(o, aq)] | |
193 | + | } | |
194 | + | } | |
195 | + | } | |
196 | + | ||
197 | + | ||
198 | + | ||
199 | + | @Callable(X) | |
200 | + | func lockENNO () = if (!(z)) | |
83 | 201 | then throw("DApp is inactive at this moment") | |
84 | 202 | else { | |
85 | - | let | |
86 | - | let | |
87 | - | let | |
88 | - | if (( | |
203 | + | let ar = $Tuple2(X.payments[0].amount, X.payments[0].assetId) | |
204 | + | let as = ar._1 | |
205 | + | let at = ar._2 | |
206 | + | if ((at != C)) | |
89 | 207 | then throw("Incorrect payment assetId only Enno Cash is allowed.") | |
90 | 208 | else { | |
91 | - | let | |
92 | - | let | |
93 | - | let | |
94 | - | let | |
95 | - | [IntegerEntry((toString( | |
209 | + | let al = F(X.caller) | |
210 | + | let au = (al + as) | |
211 | + | let av = H() | |
212 | + | let aw = (av + as) | |
213 | + | [IntegerEntry((toString(X.caller) + p), au), IntegerEntry(q, aw)] | |
96 | 214 | } | |
97 | 215 | } | |
98 | 216 | ||
99 | 217 | ||
100 | 218 | ||
101 | - | @Callable(C) | |
102 | - | func withdrawENNO (K) = if (!(l)) | |
103 | - | then throw("DApp is inactive at this moment") | |
104 | - | else if ((0 >= K)) | |
105 | - | then throw("withdrawAmount <= 0") | |
106 | - | else { | |
107 | - | let I = s() | |
108 | - | let G = q(C.caller) | |
109 | - | if ((K > I)) | |
110 | - | then throw("withdrawAmount is more than available to withdraw") | |
111 | - | else if ((K > G)) | |
112 | - | then throw("You are trying to unstake more than you have staked.") | |
113 | - | else { | |
114 | - | let J = (I - K) | |
115 | - | let L = (G - K) | |
116 | - | [IntegerEntry((toString(C.caller) + g), L), IntegerEntry(h, J), ScriptTransfer(C.caller, K, n)] | |
117 | - | } | |
118 | - | } | |
119 | - | ||
120 | - | ||
121 | - | ||
122 | - | @Callable(C) | |
123 | - | func claimAndWithdrawENNO () = if (!(l)) | |
219 | + | @Callable(X) | |
220 | + | func withdrawENNO (ax) = if (!(z)) | |
124 | 221 | then throw("DApp is inactive at this moment") | |
125 | 222 | else { | |
126 | - | let M = t(C.originCaller) | |
127 | - | let N = z(C.originCaller) | |
128 | - | let O = (M - N) | |
129 | - | let I = s() | |
130 | - | if ((O > I)) | |
131 | - | then throw("claimAmount is more than available to withdraw") | |
132 | - | else if ((0 >= O)) | |
133 | - | then throw("Claim amount must be bigger than 0") | |
223 | + | let al = F(X.caller) | |
224 | + | let ay = (al - K((toString(X.caller) + k))) | |
225 | + | if ((ax > ay)) | |
226 | + | then throw("Your Enno is locked") | |
227 | + | else if ((0 >= ax)) | |
228 | + | then throw("withdrawAmount <= 0") | |
134 | 229 | else { | |
135 | - | let P = (N + O) | |
136 | - | [IntegerEntry((toString(C.originCaller) + i), P), IntegerEntry((toString(C.originCaller) + j), O), ScriptTransfer(C.originCaller, O, n)] | |
230 | + | let av = H() | |
231 | + | if ((ax > av)) | |
232 | + | then throw("withdrawAmount is more than available to withdraw") | |
233 | + | else if ((ax > al)) | |
234 | + | then throw("You are trying to unstake more than you have staked.") | |
235 | + | else { | |
236 | + | let aw = (av - ax) | |
237 | + | let az = (al - ax) | |
238 | + | [IntegerEntry((toString(X.caller) + p), az), IntegerEntry(q, aw), ScriptTransfer(X.caller, ax, C)] | |
239 | + | } | |
137 | 240 | } | |
138 | 241 | } | |
139 | 242 | ||
140 | 243 | ||
141 | 244 | ||
142 | - | @Callable( | |
143 | - | func | |
245 | + | @Callable(X) | |
246 | + | func claimAndWithdrawENNO () = if (!(z)) | |
144 | 247 | then throw("DApp is inactive at this moment") | |
145 | 248 | else { | |
146 | - | let M = t(C.originCaller) | |
147 | - | let N = z(C.originCaller) | |
148 | - | let O = (M - N) | |
149 | - | if ((0 >= O)) | |
249 | + | let aA = L(X.originCaller) | |
250 | + | let aB = R(X.originCaller) | |
251 | + | let aC = (aA - aB) | |
252 | + | let av = H() | |
253 | + | if ((aC > av)) | |
254 | + | then throw("claimAmount is more than available to withdraw") | |
255 | + | else if ((0 >= aC)) | |
256 | + | then throw("Claim amount must be bigger than 0") | |
257 | + | else { | |
258 | + | let aD = (aB + aC) | |
259 | + | [IntegerEntry((toString(X.originCaller) + w), aD), IntegerEntry((toString(X.originCaller) + x), aC), ScriptTransfer(X.originCaller, aC, C)] | |
260 | + | } | |
261 | + | } | |
262 | + | ||
263 | + | ||
264 | + | ||
265 | + | @Callable(X) | |
266 | + | func claimAndStakeENNO () = if (!(z)) | |
267 | + | then throw("DApp is inactive at this moment") | |
268 | + | else { | |
269 | + | let aA = L(X.originCaller) | |
270 | + | let aB = R(X.originCaller) | |
271 | + | let aC = (aA - aB) | |
272 | + | if ((0 >= aC)) | |
150 | 273 | then throw("Claim amount must be bigger than 0") | |
151 | 274 | else { | |
152 | - | let | |
153 | - | let | |
154 | - | let | |
155 | - | let | |
156 | - | let | |
157 | - | [IntegerEntry((toString( | |
275 | + | let aD = (aB + aC) | |
276 | + | let al = F(X.originCaller) | |
277 | + | let au = (al + aC) | |
278 | + | let av = H() | |
279 | + | let aw = (av + aC) | |
280 | + | [IntegerEntry((toString(X.originCaller) + p), au), IntegerEntry((toString(X.originCaller) + w), aD), IntegerEntry((toString(X.originCaller) + x), aC), IntegerEntry(q, aw)] | |
158 | 281 | } | |
159 | 282 | } | |
160 | 283 | ||
161 | 284 | ||
162 | 285 | ||
163 | - | @Callable( | |
164 | - | func shutdown () = if (!( | |
286 | + | @Callable(X) | |
287 | + | func shutdown () = if (!(z)) | |
165 | 288 | then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, f), "the cause wasn't specified"))) | |
166 | - | else if (!(containsElement([a, b, c, d], | |
289 | + | else if (!(containsElement([a, b, c, d], X.callerPublicKey))) | |
167 | 290 | then throw("Only admin can call this function") | |
168 | - | else | |
291 | + | else D("Paused by admin") | |
169 | 292 | ||
170 | 293 | ||
171 | 294 | ||
172 | - | @Callable( | |
173 | - | func activate () = if ( | |
295 | + | @Callable(X) | |
296 | + | func activate () = if (z) | |
174 | 297 | then throw("DApp is already active") | |
175 | - | else if (!(containsElement([a, b, c, d], | |
298 | + | else if (!(containsElement([a, b, c, d], X.callerPublicKey))) | |
176 | 299 | then throw("Only admin can call this function") | |
177 | 300 | else [BooleanEntry(e, true), DeleteEntry(f)] | |
178 | 301 | ||
179 | 302 | ||
180 | - | @Verifier( | |
181 | - | func | |
182 | - | let | |
303 | + | @Verifier(aE) | |
304 | + | func aF () = { | |
305 | + | let aG = if (sigVerify(aE.bodyBytes, aE.proofs[0], a)) | |
183 | 306 | then 1 | |
184 | 307 | else 0 | |
185 | - | let | |
308 | + | let aH = if (sigVerify(aE.bodyBytes, aE.proofs[1], b)) | |
186 | 309 | then 1 | |
187 | 310 | else 0 | |
188 | - | let | |
311 | + | let aI = if (sigVerify(aE.bodyBytes, aE.proofs[2], c)) | |
189 | 312 | then 1 | |
190 | 313 | else 0 | |
191 | - | ((( | |
314 | + | (((aG + aH) + aI) >= 2) | |
192 | 315 | } | |
193 | 316 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = base58'Eaf4FwUufqN2GjEDu6h1w8UT5zB58jCghAoQRg1H3Pv1' | |
5 | 5 | ||
6 | 6 | let b = base58'Nnj1pusHPSQysh2F9xyJ25uUsZxd5v7BKbESmG3XQiV' | |
7 | 7 | ||
8 | 8 | let c = base58'FDsrvY7JUrdpr5TWMCkqbnM9YnLABWJhCgpaKbqszWxq' | |
9 | 9 | ||
10 | 10 | let d = base58'Eaf4FwUufqN2GjEDu6h1w8UT5zB58jCghAoQRg1H3Pv1' | |
11 | 11 | ||
12 | 12 | let e = "active" | |
13 | 13 | ||
14 | 14 | let f = "shutdown_cause" | |
15 | 15 | ||
16 | - | let g = "_ | |
16 | + | let g = "vote_start_height" | |
17 | 17 | ||
18 | - | let h = " | |
18 | + | let h = "vote_end_height" | |
19 | 19 | ||
20 | - | let i = " | |
20 | + | let i = "yes_amount" | |
21 | 21 | ||
22 | - | let j = " | |
22 | + | let j = "no_amount" | |
23 | 23 | ||
24 | - | let k = " | |
24 | + | let k = "_ENNO_vote" | |
25 | 25 | ||
26 | - | let l = | |
26 | + | let l = "_ENNO_vote_height" | |
27 | 27 | ||
28 | - | let m = | |
28 | + | let m = "_ENNO_vote_value" | |
29 | 29 | ||
30 | - | let n = | |
30 | + | let n = "_ENNO_vote_yes_share" | |
31 | 31 | ||
32 | - | func o (p) = [BooleanEntry(e, false), StringEntry(f, p)] | |
32 | + | let o = "total_ENNO_vote_yes" | |
33 | + | ||
34 | + | let p = "_ENNO_amount" | |
35 | + | ||
36 | + | let q = "total_ENNO_amount" | |
37 | + | ||
38 | + | let r = "total_ENNO_vote" | |
39 | + | ||
40 | + | let s = "total_ENNO_vote_share" | |
41 | + | ||
42 | + | let t = "active_airdrop_token" | |
43 | + | ||
44 | + | let u = "active_airdrop_amount" | |
45 | + | ||
46 | + | let v = "active_airdrop_claim_status" | |
47 | + | ||
48 | + | let w = "_ENNO_claimed_amount" | |
49 | + | ||
50 | + | let x = "_ENNO_last_claimed_amount" | |
51 | + | ||
52 | + | let y = "share_" | |
53 | + | ||
54 | + | let z = valueOrElse(getBoolean(this, e), true) | |
55 | + | ||
56 | + | let A = valueOrElse(getBoolean(this, v), false) | |
57 | + | ||
58 | + | let B = base58'8PYLQhGnktNwGZo5AKLxwBLnAvUc25v4Cw52ihHM6iyE' | |
59 | + | ||
60 | + | let C = base58'7LMV3s1J4dKpMQZqge5sKYoFkZRLojnnU49aerqos4yg' | |
61 | + | ||
62 | + | func D (E) = [BooleanEntry(e, false), StringEntry(f, E)] | |
33 | 63 | ||
34 | 64 | ||
35 | - | func | |
65 | + | func F (G) = valueOrElse(getInteger(this, (toString(G) + p)), 0) | |
36 | 66 | ||
37 | 67 | ||
38 | - | func | |
68 | + | func H () = valueOrElse(getInteger(this, q), 0) | |
39 | 69 | ||
40 | 70 | ||
41 | - | func t (u) = { | |
42 | - | let v = getInteger(addressFromPublicKey(m), (k + toString(u))) | |
43 | - | let w = { | |
44 | - | let x = v | |
45 | - | if ($isInstanceOf(x, "Int")) | |
71 | + | func I (G,J) = valueOrElse(getInteger(this, (toString(G) + J)), 0) | |
72 | + | ||
73 | + | ||
74 | + | func K (J) = valueOrElse(getInteger(this, J), 0) | |
75 | + | ||
76 | + | ||
77 | + | func L (M) = { | |
78 | + | let N = getInteger(addressFromPublicKey(B), (y + toString(M))) | |
79 | + | let O = { | |
80 | + | let P = N | |
81 | + | if ($isInstanceOf(P, "Int")) | |
46 | 82 | then { | |
47 | - | let | |
48 | - | | |
83 | + | let Q = P | |
84 | + | Q | |
49 | 85 | } | |
50 | - | else if ($isInstanceOf( | |
86 | + | else if ($isInstanceOf(P, "Unit")) | |
51 | 87 | then { | |
52 | - | let | |
88 | + | let Q = P | |
53 | 89 | throw("Only governance qualifiers can call this function.") | |
54 | 90 | } | |
55 | 91 | else throw("Match error") | |
56 | 92 | } | |
57 | - | | |
93 | + | O | |
58 | 94 | } | |
59 | 95 | ||
60 | 96 | ||
61 | - | func | |
62 | - | let | |
63 | - | let | |
64 | - | let | |
65 | - | if ($isInstanceOf( | |
97 | + | func R (M) = { | |
98 | + | let S = getInteger(this, (toString(M) + w)) | |
99 | + | let T = { | |
100 | + | let P = S | |
101 | + | if ($isInstanceOf(P, "Int")) | |
66 | 102 | then { | |
67 | - | let | |
68 | - | | |
103 | + | let Q = P | |
104 | + | Q | |
69 | 105 | } | |
70 | - | else if ($isInstanceOf( | |
106 | + | else if ($isInstanceOf(P, "Unit")) | |
71 | 107 | then { | |
72 | - | let | |
108 | + | let Q = P | |
73 | 109 | 0 | |
74 | 110 | } | |
75 | 111 | else throw("Match error") | |
76 | 112 | } | |
77 | - | | |
113 | + | T | |
78 | 114 | } | |
79 | 115 | ||
80 | 116 | ||
81 | - | @Callable(C) | |
82 | - | func lockENNO () = if (!(l)) | |
117 | + | func U (V) = { | |
118 | + | let W = (K(h) - height) | |
119 | + | let Q = fraction(V, W, 100000000) | |
120 | + | Q | |
121 | + | } | |
122 | + | ||
123 | + | ||
124 | + | @Callable(X) | |
125 | + | func initVote (Y,Z,aa,V) = if (!(z)) | |
126 | + | then throw("DApp is inactive at this moment") | |
127 | + | else if (!(containsElement([a, b, c, d], X.callerPublicKey))) | |
128 | + | then throw("Only admin can call this function") | |
129 | + | else [StringEntry(t, aa), IntegerEntry(u, V), IntegerEntry(g, Y), IntegerEntry(h, Z), IntegerEntry(o, 0), BooleanEntry(v, false)] | |
130 | + | ||
131 | + | ||
132 | + | ||
133 | + | @Callable(X) | |
134 | + | func activateAirdropClaim (ab) = if (!(z)) | |
135 | + | then throw("DApp is inactive at this moment") | |
136 | + | else if (!(containsElement([a, b, c, d], X.callerPublicKey))) | |
137 | + | then throw("Only admin can call this function") | |
138 | + | else [BooleanEntry(v, ab)] | |
139 | + | ||
140 | + | ||
141 | + | ||
142 | + | @Callable(X) | |
143 | + | func claimAirdrop () = if (!(z)) | |
144 | + | then throw("DApp is inactive at this moment") | |
145 | + | else if (!(A)) | |
146 | + | then throw("Claim has not started yet.") | |
147 | + | else if ((K(g) > height)) | |
148 | + | then throw("Voting has not started yet.") | |
149 | + | else if ((K(h) > height)) | |
150 | + | then throw("Voting has not ended yet.") | |
151 | + | else { | |
152 | + | let aa = getStringValue(this, t) | |
153 | + | let ac = K(u) | |
154 | + | let ad = fromBase58String(aa) | |
155 | + | let ae = ("_" + aa) | |
156 | + | let Q = K(((toString(X.caller) + ae) + n)) | |
157 | + | if ((0 >= Q)) | |
158 | + | then throw("You already claimed or you have not participated.") | |
159 | + | else { | |
160 | + | let af = K(o) | |
161 | + | let ag = fraction(Q, ac, af) | |
162 | + | [DeleteEntry(((toString(X.caller) + ae) + n)), DeleteEntry((toString(X.caller) + k)), ScriptTransfer(X.caller, ag, ad)] | |
163 | + | } | |
164 | + | } | |
165 | + | ||
166 | + | ||
167 | + | ||
168 | + | @Callable(X) | |
169 | + | func vote (ah) = if (!(z)) | |
170 | + | then throw("DApp is inactive at this moment") | |
171 | + | else if ((K(g) > height)) | |
172 | + | then throw("Voting has not started yet.") | |
173 | + | else if ((height > K(h))) | |
174 | + | then throw("Voting has already ended.") | |
175 | + | else { | |
176 | + | let ai = K(o) | |
177 | + | let ae = ("_" + valueOrElse(getString(this, t), "N/A")) | |
178 | + | let aj = I(X.caller, (ae + n)) | |
179 | + | let ak = I(X.caller, k) | |
180 | + | let al = I(X.caller, p) | |
181 | + | let am = (ak + ah) | |
182 | + | if ((0 > am)) | |
183 | + | then throw("Vote must be more than 0.") | |
184 | + | else { | |
185 | + | let an = (al - ak) | |
186 | + | let ao = U(ah) | |
187 | + | if ((ah > an)) | |
188 | + | then throw("Vote amount is more than available.") | |
189 | + | else { | |
190 | + | let ap = (aj + ao) | |
191 | + | let aq = (ai + ao) | |
192 | + | [IntegerEntry(((toString(X.caller) + ae) + n), ap), IntegerEntry((toString(X.caller) + k), am), IntegerEntry(o, aq)] | |
193 | + | } | |
194 | + | } | |
195 | + | } | |
196 | + | ||
197 | + | ||
198 | + | ||
199 | + | @Callable(X) | |
200 | + | func lockENNO () = if (!(z)) | |
83 | 201 | then throw("DApp is inactive at this moment") | |
84 | 202 | else { | |
85 | - | let | |
86 | - | let | |
87 | - | let | |
88 | - | if (( | |
203 | + | let ar = $Tuple2(X.payments[0].amount, X.payments[0].assetId) | |
204 | + | let as = ar._1 | |
205 | + | let at = ar._2 | |
206 | + | if ((at != C)) | |
89 | 207 | then throw("Incorrect payment assetId only Enno Cash is allowed.") | |
90 | 208 | else { | |
91 | - | let | |
92 | - | let | |
93 | - | let | |
94 | - | let | |
95 | - | [IntegerEntry((toString( | |
209 | + | let al = F(X.caller) | |
210 | + | let au = (al + as) | |
211 | + | let av = H() | |
212 | + | let aw = (av + as) | |
213 | + | [IntegerEntry((toString(X.caller) + p), au), IntegerEntry(q, aw)] | |
96 | 214 | } | |
97 | 215 | } | |
98 | 216 | ||
99 | 217 | ||
100 | 218 | ||
101 | - | @Callable(C) | |
102 | - | func withdrawENNO (K) = if (!(l)) | |
103 | - | then throw("DApp is inactive at this moment") | |
104 | - | else if ((0 >= K)) | |
105 | - | then throw("withdrawAmount <= 0") | |
106 | - | else { | |
107 | - | let I = s() | |
108 | - | let G = q(C.caller) | |
109 | - | if ((K > I)) | |
110 | - | then throw("withdrawAmount is more than available to withdraw") | |
111 | - | else if ((K > G)) | |
112 | - | then throw("You are trying to unstake more than you have staked.") | |
113 | - | else { | |
114 | - | let J = (I - K) | |
115 | - | let L = (G - K) | |
116 | - | [IntegerEntry((toString(C.caller) + g), L), IntegerEntry(h, J), ScriptTransfer(C.caller, K, n)] | |
117 | - | } | |
118 | - | } | |
119 | - | ||
120 | - | ||
121 | - | ||
122 | - | @Callable(C) | |
123 | - | func claimAndWithdrawENNO () = if (!(l)) | |
219 | + | @Callable(X) | |
220 | + | func withdrawENNO (ax) = if (!(z)) | |
124 | 221 | then throw("DApp is inactive at this moment") | |
125 | 222 | else { | |
126 | - | let M = t(C.originCaller) | |
127 | - | let N = z(C.originCaller) | |
128 | - | let O = (M - N) | |
129 | - | let I = s() | |
130 | - | if ((O > I)) | |
131 | - | then throw("claimAmount is more than available to withdraw") | |
132 | - | else if ((0 >= O)) | |
133 | - | then throw("Claim amount must be bigger than 0") | |
223 | + | let al = F(X.caller) | |
224 | + | let ay = (al - K((toString(X.caller) + k))) | |
225 | + | if ((ax > ay)) | |
226 | + | then throw("Your Enno is locked") | |
227 | + | else if ((0 >= ax)) | |
228 | + | then throw("withdrawAmount <= 0") | |
134 | 229 | else { | |
135 | - | let P = (N + O) | |
136 | - | [IntegerEntry((toString(C.originCaller) + i), P), IntegerEntry((toString(C.originCaller) + j), O), ScriptTransfer(C.originCaller, O, n)] | |
230 | + | let av = H() | |
231 | + | if ((ax > av)) | |
232 | + | then throw("withdrawAmount is more than available to withdraw") | |
233 | + | else if ((ax > al)) | |
234 | + | then throw("You are trying to unstake more than you have staked.") | |
235 | + | else { | |
236 | + | let aw = (av - ax) | |
237 | + | let az = (al - ax) | |
238 | + | [IntegerEntry((toString(X.caller) + p), az), IntegerEntry(q, aw), ScriptTransfer(X.caller, ax, C)] | |
239 | + | } | |
137 | 240 | } | |
138 | 241 | } | |
139 | 242 | ||
140 | 243 | ||
141 | 244 | ||
142 | - | @Callable( | |
143 | - | func | |
245 | + | @Callable(X) | |
246 | + | func claimAndWithdrawENNO () = if (!(z)) | |
144 | 247 | then throw("DApp is inactive at this moment") | |
145 | 248 | else { | |
146 | - | let M = t(C.originCaller) | |
147 | - | let N = z(C.originCaller) | |
148 | - | let O = (M - N) | |
149 | - | if ((0 >= O)) | |
249 | + | let aA = L(X.originCaller) | |
250 | + | let aB = R(X.originCaller) | |
251 | + | let aC = (aA - aB) | |
252 | + | let av = H() | |
253 | + | if ((aC > av)) | |
254 | + | then throw("claimAmount is more than available to withdraw") | |
255 | + | else if ((0 >= aC)) | |
256 | + | then throw("Claim amount must be bigger than 0") | |
257 | + | else { | |
258 | + | let aD = (aB + aC) | |
259 | + | [IntegerEntry((toString(X.originCaller) + w), aD), IntegerEntry((toString(X.originCaller) + x), aC), ScriptTransfer(X.originCaller, aC, C)] | |
260 | + | } | |
261 | + | } | |
262 | + | ||
263 | + | ||
264 | + | ||
265 | + | @Callable(X) | |
266 | + | func claimAndStakeENNO () = if (!(z)) | |
267 | + | then throw("DApp is inactive at this moment") | |
268 | + | else { | |
269 | + | let aA = L(X.originCaller) | |
270 | + | let aB = R(X.originCaller) | |
271 | + | let aC = (aA - aB) | |
272 | + | if ((0 >= aC)) | |
150 | 273 | then throw("Claim amount must be bigger than 0") | |
151 | 274 | else { | |
152 | - | let | |
153 | - | let | |
154 | - | let | |
155 | - | let | |
156 | - | let | |
157 | - | [IntegerEntry((toString( | |
275 | + | let aD = (aB + aC) | |
276 | + | let al = F(X.originCaller) | |
277 | + | let au = (al + aC) | |
278 | + | let av = H() | |
279 | + | let aw = (av + aC) | |
280 | + | [IntegerEntry((toString(X.originCaller) + p), au), IntegerEntry((toString(X.originCaller) + w), aD), IntegerEntry((toString(X.originCaller) + x), aC), IntegerEntry(q, aw)] | |
158 | 281 | } | |
159 | 282 | } | |
160 | 283 | ||
161 | 284 | ||
162 | 285 | ||
163 | - | @Callable( | |
164 | - | func shutdown () = if (!( | |
286 | + | @Callable(X) | |
287 | + | func shutdown () = if (!(z)) | |
165 | 288 | then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, f), "the cause wasn't specified"))) | |
166 | - | else if (!(containsElement([a, b, c, d], | |
289 | + | else if (!(containsElement([a, b, c, d], X.callerPublicKey))) | |
167 | 290 | then throw("Only admin can call this function") | |
168 | - | else | |
291 | + | else D("Paused by admin") | |
169 | 292 | ||
170 | 293 | ||
171 | 294 | ||
172 | - | @Callable( | |
173 | - | func activate () = if ( | |
295 | + | @Callable(X) | |
296 | + | func activate () = if (z) | |
174 | 297 | then throw("DApp is already active") | |
175 | - | else if (!(containsElement([a, b, c, d], | |
298 | + | else if (!(containsElement([a, b, c, d], X.callerPublicKey))) | |
176 | 299 | then throw("Only admin can call this function") | |
177 | 300 | else [BooleanEntry(e, true), DeleteEntry(f)] | |
178 | 301 | ||
179 | 302 | ||
180 | - | @Verifier( | |
181 | - | func | |
182 | - | let | |
303 | + | @Verifier(aE) | |
304 | + | func aF () = { | |
305 | + | let aG = if (sigVerify(aE.bodyBytes, aE.proofs[0], a)) | |
183 | 306 | then 1 | |
184 | 307 | else 0 | |
185 | - | let | |
308 | + | let aH = if (sigVerify(aE.bodyBytes, aE.proofs[1], b)) | |
186 | 309 | then 1 | |
187 | 310 | else 0 | |
188 | - | let | |
311 | + | let aI = if (sigVerify(aE.bodyBytes, aE.proofs[2], c)) | |
189 | 312 | then 1 | |
190 | 313 | else 0 | |
191 | - | ((( | |
314 | + | (((aG + aH) + aI) >= 2) | |
192 | 315 | } | |
193 | 316 |
github/deemru/w8io/873ac7e 103.89 ms ◑