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:
OldNewDifferences
1313
1414 let f = "shutdown_cause"
1515
16-let g = "_ENNO_amount"
16+let g = "vote_start_height"
1717
18-let h = "total_ENNO_amount"
18+let h = "vote_end_height"
1919
20-let i = "_ENNO_claimed_amount"
20+let i = "yes_amount"
2121
22-let j = "_ENNO_last_claimed_amount"
22+let j = "no_amount"
2323
24-let k = "share_"
24+let k = "_ENNO_vote"
2525
26-let l = valueOrElse(getBoolean(this, e), true)
26+let l = "_ENNO_vote_height"
2727
28-let m = base58'8PYLQhGnktNwGZo5AKLxwBLnAvUc25v4Cw52ihHM6iyE'
28+let m = "_ENNO_vote_value"
2929
30-let n = base58'7LMV3s1J4dKpMQZqge5sKYoFkZRLojnnU49aerqos4yg'
30+let n = "_ENNO_vote_yes_share"
3131
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)]
3363
3464
35-func q (r) = valueOrElse(getInteger(this, (toString(r) + g)), 0)
65+func F (G) = valueOrElse(getInteger(this, (toString(G) + p)), 0)
3666
3767
38-func s () = valueOrElse(getInteger(this, h), 0)
68+func H () = valueOrElse(getInteger(this, q), 0)
3969
4070
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"))
4682 then {
47- let y = x
48- y
83+ let Q = P
84+ Q
4985 }
50- else if ($isInstanceOf(x, "Unit"))
86+ else if ($isInstanceOf(P, "Unit"))
5187 then {
52- let y = x
88+ let Q = P
5389 throw("Only governance qualifiers can call this function.")
5490 }
5591 else throw("Match error")
5692 }
57- w
93+ O
5894 }
5995
6096
61-func z (u) = {
62- let A = getInteger(this, (toString(u) + i))
63- let B = {
64- let x = A
65- if ($isInstanceOf(x, "Int"))
97+func R (M) = {
98+ let S = getInteger(this, (toString(M) + w))
99+ let T = {
100+ let P = S
101+ if ($isInstanceOf(P, "Int"))
66102 then {
67- let y = x
68- y
103+ let Q = P
104+ Q
69105 }
70- else if ($isInstanceOf(x, "Unit"))
106+ else if ($isInstanceOf(P, "Unit"))
71107 then {
72- let y = x
108+ let Q = P
73109 0
74110 }
75111 else throw("Match error")
76112 }
77- B
113+ T
78114 }
79115
80116
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))
83201 then throw("DApp is inactive at this moment")
84202 else {
85- let D = $Tuple2(C.payments[0].amount, C.payments[0].assetId)
86- let E = D._1
87- let F = D._2
88- if ((F != n))
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))
89207 then throw("Incorrect payment assetId only Enno Cash is allowed.")
90208 else {
91- let G = q(C.caller)
92- let H = (G + E)
93- let I = s()
94- let J = (I + E)
95-[IntegerEntry((toString(C.caller) + g), H), IntegerEntry(h, J)]
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)]
96214 }
97215 }
98216
99217
100218
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))
124221 then throw("DApp is inactive at this moment")
125222 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")
134229 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+ }
137240 }
138241 }
139242
140243
141244
142-@Callable(C)
143-func claimAndStakeENNO () = if (!(l))
245+@Callable(X)
246+func claimAndWithdrawENNO () = if (!(z))
144247 then throw("DApp is inactive at this moment")
145248 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))
150273 then throw("Claim amount must be bigger than 0")
151274 else {
152- let P = (N + O)
153- let G = q(C.originCaller)
154- let H = (G + O)
155- let I = s()
156- let J = (I + O)
157-[IntegerEntry((toString(C.originCaller) + g), H), IntegerEntry((toString(C.originCaller) + i), P), IntegerEntry((toString(C.originCaller) + j), O), IntegerEntry(h, J)]
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)]
158281 }
159282 }
160283
161284
162285
163-@Callable(C)
164-func shutdown () = if (!(l))
286+@Callable(X)
287+func shutdown () = if (!(z))
165288 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, f), "the cause wasn't specified")))
166- else if (!(containsElement([a, b, c, d], C.callerPublicKey)))
289+ else if (!(containsElement([a, b, c, d], X.callerPublicKey)))
167290 then throw("Only admin can call this function")
168- else o("Paused by admin")
291+ else D("Paused by admin")
169292
170293
171294
172-@Callable(C)
173-func activate () = if (l)
295+@Callable(X)
296+func activate () = if (z)
174297 then throw("DApp is already active")
175- else if (!(containsElement([a, b, c, d], C.callerPublicKey)))
298+ else if (!(containsElement([a, b, c, d], X.callerPublicKey)))
176299 then throw("Only admin can call this function")
177300 else [BooleanEntry(e, true), DeleteEntry(f)]
178301
179302
180-@Verifier(Q)
181-func R () = {
182- let S = if (sigVerify(Q.bodyBytes, Q.proofs[0], a))
303+@Verifier(aE)
304+func aF () = {
305+ let aG = if (sigVerify(aE.bodyBytes, aE.proofs[0], a))
183306 then 1
184307 else 0
185- let T = if (sigVerify(Q.bodyBytes, Q.proofs[1], b))
308+ let aH = if (sigVerify(aE.bodyBytes, aE.proofs[1], b))
186309 then 1
187310 else 0
188- let U = if (sigVerify(Q.bodyBytes, Q.proofs[2], c))
311+ let aI = if (sigVerify(aE.bodyBytes, aE.proofs[2], c))
189312 then 1
190313 else 0
191- (((S + T) + U) >= 2)
314+ (((aG + aH) + aI) >= 2)
192315 }
193316
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = base58'Eaf4FwUufqN2GjEDu6h1w8UT5zB58jCghAoQRg1H3Pv1'
55
66 let b = base58'Nnj1pusHPSQysh2F9xyJ25uUsZxd5v7BKbESmG3XQiV'
77
88 let c = base58'FDsrvY7JUrdpr5TWMCkqbnM9YnLABWJhCgpaKbqszWxq'
99
1010 let d = base58'Eaf4FwUufqN2GjEDu6h1w8UT5zB58jCghAoQRg1H3Pv1'
1111
1212 let e = "active"
1313
1414 let f = "shutdown_cause"
1515
16-let g = "_ENNO_amount"
16+let g = "vote_start_height"
1717
18-let h = "total_ENNO_amount"
18+let h = "vote_end_height"
1919
20-let i = "_ENNO_claimed_amount"
20+let i = "yes_amount"
2121
22-let j = "_ENNO_last_claimed_amount"
22+let j = "no_amount"
2323
24-let k = "share_"
24+let k = "_ENNO_vote"
2525
26-let l = valueOrElse(getBoolean(this, e), true)
26+let l = "_ENNO_vote_height"
2727
28-let m = base58'8PYLQhGnktNwGZo5AKLxwBLnAvUc25v4Cw52ihHM6iyE'
28+let m = "_ENNO_vote_value"
2929
30-let n = base58'7LMV3s1J4dKpMQZqge5sKYoFkZRLojnnU49aerqos4yg'
30+let n = "_ENNO_vote_yes_share"
3131
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)]
3363
3464
35-func q (r) = valueOrElse(getInteger(this, (toString(r) + g)), 0)
65+func F (G) = valueOrElse(getInteger(this, (toString(G) + p)), 0)
3666
3767
38-func s () = valueOrElse(getInteger(this, h), 0)
68+func H () = valueOrElse(getInteger(this, q), 0)
3969
4070
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"))
4682 then {
47- let y = x
48- y
83+ let Q = P
84+ Q
4985 }
50- else if ($isInstanceOf(x, "Unit"))
86+ else if ($isInstanceOf(P, "Unit"))
5187 then {
52- let y = x
88+ let Q = P
5389 throw("Only governance qualifiers can call this function.")
5490 }
5591 else throw("Match error")
5692 }
57- w
93+ O
5894 }
5995
6096
61-func z (u) = {
62- let A = getInteger(this, (toString(u) + i))
63- let B = {
64- let x = A
65- if ($isInstanceOf(x, "Int"))
97+func R (M) = {
98+ let S = getInteger(this, (toString(M) + w))
99+ let T = {
100+ let P = S
101+ if ($isInstanceOf(P, "Int"))
66102 then {
67- let y = x
68- y
103+ let Q = P
104+ Q
69105 }
70- else if ($isInstanceOf(x, "Unit"))
106+ else if ($isInstanceOf(P, "Unit"))
71107 then {
72- let y = x
108+ let Q = P
73109 0
74110 }
75111 else throw("Match error")
76112 }
77- B
113+ T
78114 }
79115
80116
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))
83201 then throw("DApp is inactive at this moment")
84202 else {
85- let D = $Tuple2(C.payments[0].amount, C.payments[0].assetId)
86- let E = D._1
87- let F = D._2
88- if ((F != n))
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))
89207 then throw("Incorrect payment assetId only Enno Cash is allowed.")
90208 else {
91- let G = q(C.caller)
92- let H = (G + E)
93- let I = s()
94- let J = (I + E)
95-[IntegerEntry((toString(C.caller) + g), H), IntegerEntry(h, J)]
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)]
96214 }
97215 }
98216
99217
100218
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))
124221 then throw("DApp is inactive at this moment")
125222 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")
134229 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+ }
137240 }
138241 }
139242
140243
141244
142-@Callable(C)
143-func claimAndStakeENNO () = if (!(l))
245+@Callable(X)
246+func claimAndWithdrawENNO () = if (!(z))
144247 then throw("DApp is inactive at this moment")
145248 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))
150273 then throw("Claim amount must be bigger than 0")
151274 else {
152- let P = (N + O)
153- let G = q(C.originCaller)
154- let H = (G + O)
155- let I = s()
156- let J = (I + O)
157-[IntegerEntry((toString(C.originCaller) + g), H), IntegerEntry((toString(C.originCaller) + i), P), IntegerEntry((toString(C.originCaller) + j), O), IntegerEntry(h, J)]
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)]
158281 }
159282 }
160283
161284
162285
163-@Callable(C)
164-func shutdown () = if (!(l))
286+@Callable(X)
287+func shutdown () = if (!(z))
165288 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, f), "the cause wasn't specified")))
166- else if (!(containsElement([a, b, c, d], C.callerPublicKey)))
289+ else if (!(containsElement([a, b, c, d], X.callerPublicKey)))
167290 then throw("Only admin can call this function")
168- else o("Paused by admin")
291+ else D("Paused by admin")
169292
170293
171294
172-@Callable(C)
173-func activate () = if (l)
295+@Callable(X)
296+func activate () = if (z)
174297 then throw("DApp is already active")
175- else if (!(containsElement([a, b, c, d], C.callerPublicKey)))
298+ else if (!(containsElement([a, b, c, d], X.callerPublicKey)))
176299 then throw("Only admin can call this function")
177300 else [BooleanEntry(e, true), DeleteEntry(f)]
178301
179302
180-@Verifier(Q)
181-func R () = {
182- let S = if (sigVerify(Q.bodyBytes, Q.proofs[0], a))
303+@Verifier(aE)
304+func aF () = {
305+ let aG = if (sigVerify(aE.bodyBytes, aE.proofs[0], a))
183306 then 1
184307 else 0
185- let T = if (sigVerify(Q.bodyBytes, Q.proofs[1], b))
308+ let aH = if (sigVerify(aE.bodyBytes, aE.proofs[1], b))
186309 then 1
187310 else 0
188- let U = if (sigVerify(Q.bodyBytes, Q.proofs[2], c))
311+ let aI = if (sigVerify(aE.bodyBytes, aE.proofs[2], c))
189312 then 1
190313 else 0
191- (((S + T) + U) >= 2)
314+ (((aG + aH) + aI) >= 2)
192315 }
193316

github/deemru/w8io/873ac7e 
103.89 ms