tx · 5aK7gfs4gLNyxU8KCWYQe3bqhvMssj8k6GkQU7ZwnDib

3N911L1LqZs6xaZsC5skLHrU3XfDYZG8wxz:  -0.01400000 Waves

2019.11.01 22:44 [746231] smart account 3N911L1LqZs6xaZsC5skLHrU3XfDYZG8wxz > SELF 0.00000000 Waves

{ "type": 13, "id": "5aK7gfs4gLNyxU8KCWYQe3bqhvMssj8k6GkQU7ZwnDib", "fee": 1400000, "feeAssetId": null, "timestamp": 1572637440012, "version": 1, "sender": "3N911L1LqZs6xaZsC5skLHrU3XfDYZG8wxz", "senderPublicKey": "D1q54i7R33U4bjGXmo1FDbSyitrrvUj5dcrLQ493WX9S", "proofs": [ "5nKfqtX5jqmbnMYWJ9fA9om7dKFNvgwm2AC52AGkuEsExUmfqQu7K2Uw6YFt585Ae3MsUHLg2DhGG7FDsikXrvii" ], "script": "base64:AAIDAAAAAAAAAA4IARIDCgEBEgASAwoBCAAAAEIBAAAADmdldE51bWJlckJ5S2V5AAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAABAAAADmdldFN0cmluZ0J5S2V5AAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWECAAAAAAEAAAAMZ2V0Qm9vbEJ5S2V5AAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQbAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAdCb29sZWFuBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhBwEAAAAYZ2V0TnVtYmVyQnlBZGRyZXNzQW5kS2V5AAAAAgAAAAdhZGRyZXNzAAAAA2tleQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAdhZGRyZXNzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAEAAAAYZ2V0U3RyaW5nQnlBZGRyZXNzQW5kS2V5AAAAAgAAAAdhZGRyZXNzAAAAA2tleQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAdhZGRyZXNzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQIAAAAAAQAAAAVpc0ludAAAAAEAAAADdmFsBAAAAAckbWF0Y2gwBQAAAAN2YWwDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAYHAQAAABZkcm9wRWxlbWVudEluSnNvbkFycmF5AAAAAgAAAAVhcnJheQAAAAdlbGVtZW50BAAAAAxzcGxpdGVkQXJyYXkJAAS1AAAAAgUAAAAFYXJyYXkFAAAAB2VsZW1lbnQDCQAAAAAAAAIJAAEvAAAAAgkAAZEAAAACBQAAAAxzcGxpdGVkQXJyYXkAAAAAAAAAAAEAAAAAAAAAAAECAAAAASwJAAEsAAAAAgkAAZEAAAACBQAAAAxzcGxpdGVkQXJyYXkAAAAAAAAAAAAJAAEwAAAAAgkAAZEAAAACBQAAAAxzcGxpdGVkQXJyYXkAAAAAAAAAAAEAAAAAAAAAAAEJAAEsAAAAAgkBAAAACWRyb3BSaWdodAAAAAIJAAGRAAAAAgUAAAAMc3BsaXRlZEFycmF5AAAAAAAAAAAAAAAAAAAAAAABCQABkQAAAAIFAAAADHNwbGl0ZWRBcnJheQAAAAAAAAAAAQEAAAAWY29udmVydEpzb25BcnJheVRvTGlzdAAAAAEAAAAJanNvbkFycmF5CQAEtQAAAAIFAAAACWpzb25BcnJheQIAAAABLAAAAAAFQkxPQ0sCAAAABWJsb2NrAAAAAAdVTkJMT0NLAgAAAAd1bmJsb2NrAAAAAAZVUERBVEUCAAAABnVwZGF0ZQAAAAAKT3JhY2xlc0tleQIAAAAHb3JhY2xlcwAAAAAJQWRtaW5zS2V5AgAAAAZhZG1pbnMAAAAAD1ZvdGVJbnRlcnZhbEtleQIAAAANdm90ZV9pbnRlcnZhbAAAAAAUQ29lZmZpY2llbnRPcmFjbGVLZXkCAAAAEmNvZWZmaWNpZW50X29yYWNsZQAAAAATQ29lZmZpY2llbnRBZG1pbktleQIAAAARY29lZmZpY2llbnRfYWRtaW4AAAAAF1NjcmlwdFVwZGF0ZUludGVydmFsS2V5AgAAABZzY3JpcHRfdXBkYXRlX2ludGVydmFsAAAAABRQcm92aWRpbmdJbnRlcnZhbEtleQIAAAAScHJvdmlkaW5nX2ludGVydmFsAAAAAAhQcmljZUtleQIAAAAFcHJpY2UAAAAADlByaWNlT2Zmc2V0S2V5AgAAAAxwcmljZV9vZmZzZXQAAAAAEUlzUHJpY2VQZW5kaW5nS2V5AgAAABBpc19wZW5kaW5nX3ByaWNlAAAAAAxJc0Jsb2NrZWRLZXkCAAAACmlzX2Jsb2NrZWQAAAAAEk9yYWNsZUlzUHJvdmlkZUtleQIAAAASb3JhY2xlX2lzX3Byb3ZpZGVfAAAAABVPcmFjbGVQcm92aWRlUHJpY2VLZXkCAAAAFW9yYWNsZV9wcmljZV9wcm92aWRlXwAAAAAMQWRtaW5Wb3RlS2V5AgAAAAthZG1pbl92b3RlXwAAAAAJQWN0aW9uS2V5AgAAAAZhY3Rpb24AAAAAF0Jsb2NrRXhwaXJlUHJvdmlkaW5nS2V5AgAAABZwcm92aWRpbmdfZXhwaXJlX2Jsb2NrAAAAABJCbGFja1N3YXJtUHJpY2VLZXkCAAAAEWJsYWNrX3N3YXJtX3ByaWNlAAAAABJCbG9ja0V4cGlyZVZvdGVLZXkCAAAAEXZvdGVfZXhwaXJlX2Jsb2NrAAAAABRTY3JpcHRVcGRhdGVCbG9ja0tleQIAAAATc2NyaXB0X3VwZGF0ZV9ibG9jawAAAAANUHJpY2VJbmRleEtleQIAAAALcHJpY2VfaW5kZXgBAAAAFWdldE9yYWNsZUlzUHJvdmlkZUtleQAAAAEAAAAFb3duZXIJAAEsAAAAAgUAAAAST3JhY2xlSXNQcm92aWRlS2V5BQAAAAVvd25lcgEAAAAYZ2V0T3JhY2xlUHJvdmlkZVByaWNlS2V5AAAAAQAAAAVvd25lcgkAASwAAAACBQAAABVPcmFjbGVQcm92aWRlUHJpY2VLZXkFAAAABW93bmVyAQAAAA9nZXRBZG1pblZvdGVLZXkAAAABAAAABW93bmVyCQABLAAAAAIFAAAADEFkbWluVm90ZUtleQUAAAAFb3duZXIBAAAAFWdldEFkbWluVm90ZUFjdGlvbktleQAAAAEAAAAFb3duZXIJAAEsAAAAAgkAASwAAAACCQEAAAAPZ2V0QWRtaW5Wb3RlS2V5AAAAAQUAAAAFb3duZXICAAAAAV8FAAAACUFjdGlvbktleQEAAAAVZ2V0QmxhY2tTd2FybVByaWNlS2V5AAAAAQAAAAVibG9jawkAASwAAAACCQABLAAAAAIFAAAAEkJsYWNrU3dhcm1QcmljZUtleQIAAAABXwkAAaQAAAABBQAAAAVibG9jawEAAAASZ2V0UHJpY2VIaXN0b3J5S2V5AAAAAQAAAAVibG9jawkAASwAAAACCQABLAAAAAIFAAAACFByaWNlS2V5AgAAAAFfCQABpAAAAAEFAAAABWJsb2NrAQAAABhnZXRIZWlnaHRQcmljZUJ5SW5kZXhLZXkAAAABAAAABWluZGV4CQABLAAAAAIJAAEsAAAAAgUAAAANUHJpY2VJbmRleEtleQIAAAABXwkAAaQAAAABBQAAAAVpbmRleAAAAAAFcHJpY2UJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEFAAAACFByaWNlS2V5AAAAAApwcmljZUluZGV4CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABBQAAAA1QcmljZUluZGV4S2V5AAAAABFwcm92aWRpbmdJbnRlcnZhbAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQUAAAAUUHJvdmlkaW5nSW50ZXJ2YWxLZXkAAAAAFGJsb2NrRXhwaXJlUHJvdmlkaW5nCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABBQAAABdCbG9ja0V4cGlyZVByb3ZpZGluZ0tleQAAAAAPYmxvY2tFeHBpcmVWb3RlCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABBQAAABJCbG9ja0V4cGlyZVZvdGVLZXkAAAAAEXNjcmlwdFVwZGF0ZUJsb2NrCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABBQAAABRTY3JpcHRVcGRhdGVCbG9ja0tleQAAAAAUc2NyaXB0VXBkYXRlSW50ZXJ2YWwJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEFAAAAF1NjcmlwdFVwZGF0ZUludGVydmFsS2V5AAAAAA5pc1ByaWNlUGVuZGluZwkBAAAADGdldEJvb2xCeUtleQAAAAEFAAAAEUlzUHJpY2VQZW5kaW5nS2V5AAAAAAlpc0Jsb2NrZWQJAQAAAAxnZXRCb29sQnlLZXkAAAABBQAAAAxJc0Jsb2NrZWRLZXkAAAAAFGJmdENvZWZmaWNpZW50T3JhY2xlCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABBQAAABRDb2VmZmljaWVudE9yYWNsZUtleQAAAAATYmZ0Q29lZmZpY2llbnRBZG1pbgkBAAAADmdldE51bWJlckJ5S2V5AAAAAQUAAAATQ29lZmZpY2llbnRBZG1pbktleQAAAAAScGVyY2VudFByaWNlT2Zmc2V0CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABBQAAAA5QcmljZU9mZnNldEtleQAAAAAMdm90ZUludGVydmFsCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABBQAAAA9Wb3RlSW50ZXJ2YWxLZXkAAAAAB29yYWNsZXMJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEFAAAACk9yYWNsZXNLZXkAAAAABmFkbWlucwkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQUAAAAJQWRtaW5zS2V5AAAAAAtvcmFjbGVzTGlzdAkBAAAAFmNvbnZlcnRKc29uQXJyYXlUb0xpc3QAAAABBQAAAAdvcmFjbGVzAAAAAAphZG1pbnNMaXN0CQEAAAAWY29udmVydEpzb25BcnJheVRvTGlzdAAAAAEFAAAABmFkbWlucwEAAAASZ2V0QWRtaW5Wb3RlQWN0aW9uAAAAAQAAAAVvd25lcgkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAFWdldEFkbWluVm90ZUFjdGlvbktleQAAAAEFAAAABW93bmVyAQAAAA9pc09yYWNsZVByb3ZpZGUAAAABAAAABW93bmVyCQEAAAAMZ2V0Qm9vbEJ5S2V5AAAAAQkBAAAAFWdldE9yYWNsZUlzUHJvdmlkZUtleQAAAAEFAAAABW93bmVyAQAAABJpc09yYWNsZVByb3ZpZGVJbnQAAAABAAAABW93bmVyAwkBAAAAD2lzT3JhY2xlUHJvdmlkZQAAAAEFAAAABW93bmVyAAAAAAAAAAABAAAAAAAAAAAAAQAAABVnZXRPcmFjbGVQcm92aWRlUHJpY2UAAAABAAAABW93bmVyCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAYZ2V0T3JhY2xlUHJvdmlkZVByaWNlS2V5AAAAAQUAAAAFb3duZXIBAAAACGlzT3JhY2xlAAAAAQAAAAdhZGRyZXNzCQEAAAAJaXNEZWZpbmVkAAAAAQkABLMAAAACBQAAAAdvcmFjbGVzBQAAAAdhZGRyZXNzAQAAAAdpc0FkbWluAAAAAQAAAAdhZGRyZXNzCQEAAAAJaXNEZWZpbmVkAAAAAQkABLMAAAACBQAAAAZhZG1pbnMFAAAAB2FkZHJlc3MBAAAADnN1bU9yYWNsZVByaWNlAAAAAgAAAARiYXNlAAAAB2FkZHJlc3MJAABkAAAAAgUAAAAEYmFzZQkAAGgAAAACCQEAAAAVZ2V0T3JhY2xlUHJvdmlkZVByaWNlAAAAAQUAAAAHYWRkcmVzcwkBAAAAEmlzT3JhY2xlUHJvdmlkZUludAAAAAEFAAAAB2FkZHJlc3MBAAAAGGZpbHRlckFkbWluc1ZvdGVCeUFjdGlvbgAAAAMAAAAGcmVzdWx0AAAAB2FkZHJlc3MAAAAGYWN0aW9uCQAETAAAAAIFAAAAB2FkZHJlc3MFAAAABnJlc3VsdAEAAAAdZmlsdGVyQWRtaW5zVm90ZUJ5QmxvY2tBY3Rpb24AAAACAAAABnJlc3VsdAAAAAdhZGRyZXNzCQEAAAAYZmlsdGVyQWRtaW5zVm90ZUJ5QWN0aW9uAAAAAwUAAAAGcmVzdWx0BQAAAAdhZGRyZXNzBQAAAAVCTE9DSwEAAAAfZmlsdGVyQWRtaW5zVm90ZUJ5VW5ibG9ja0FjdGlvbgAAAAIAAAAGcmVzdWx0AAAAB2FkZHJlc3MJAQAAABhmaWx0ZXJBZG1pbnNWb3RlQnlBY3Rpb24AAAADBQAAAAZyZXN1bHQFAAAAB2FkZHJlc3MFAAAAB1VOQkxPQ0sBAAAAHmZpbHRlckFkbWluc1ZvdGVCeVVwZGF0ZUFjdGlvbgAAAAIAAAAGcmVzdWx0AAAAB2FkZHJlc3MJAQAAABhmaWx0ZXJBZG1pbnNWb3RlQnlBY3Rpb24AAAADBQAAAAZyZXN1bHQFAAAAB2FkZHJlc3MFAAAABlVQREFURQAAAAMAAAABaQEAAAAPc2V0Q3VycmVudFByaWNlAAAAAQAAAAhuZXdQcmljZQQAAAAHYWNjb3VudAkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAAE2lzT3JhY2xlUHJvdmlkZUxpc3QJAARMAAAAAgkBAAAAD2lzT3JhY2xlUHJvdmlkZQAAAAEJAAGRAAAAAgUAAAALb3JhY2xlc0xpc3QAAAAAAAAAAAAJAARMAAAAAgkBAAAAD2lzT3JhY2xlUHJvdmlkZQAAAAEJAAGRAAAAAgUAAAALb3JhY2xlc0xpc3QAAAAAAAAAAAEJAARMAAAAAgkBAAAAD2lzT3JhY2xlUHJvdmlkZQAAAAEJAAGRAAAAAgUAAAALb3JhY2xlc0xpc3QAAAAAAAAAAAIJAARMAAAAAgkBAAAAD2lzT3JhY2xlUHJvdmlkZQAAAAEJAAGRAAAAAgUAAAALb3JhY2xlc0xpc3QAAAAAAAAAAAMJAARMAAAAAgkBAAAAD2lzT3JhY2xlUHJvdmlkZQAAAAEJ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AAAACG5ld1ByaWNlCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAABFJc1ByaWNlUGVuZGluZ0tleQcJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAADVByaWNlSW5kZXhLZXkFAAAADW5ld1ByaWNlSW5kZXgJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABhnZXRIZWlnaHRQcmljZUJ5SW5kZXhLZXkAAAABBQAAAA1uZXdQcmljZUluZGV4BQAAAAZoZWlnaHQFAAAAA25pbAAAAAFpAQAAAAR2b3RlAAAAAQAAAAZhY3Rpb24EAAAAB2FjY291bnQJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAABhhZG1pbnNMaXN0V2l0aG91dEFjY291bnQJAQAAABZjb252ZXJ0SnNvbkFycmF5VG9MaXN0AAAAAQkBAAAAFmRyb3BFbGVtZW50SW5Kc29uQXJyYXkAAAACBQAAAAZhZG1pbnMFAAAAB2FjY291bnQEAAAACmxhc3RBY3Rpb24JAQAAABJnZXRBZG1pblZvdGVBY3Rpb24AAAABBQAAAAdhY2NvdW50BAAAAApibG9ja1ZvdGVzBAAAAA0kbGlzdDk4NzI5OTQwBQAAABhhZG1pbnNMaXN0V2l0aG91dEFjY291bnQEAAAADSRzaXplOTg3Mjk5NDAJAAGQAAAAAQUAAAANJGxpc3Q5ODcyOTk0MAQAAAANJGFjYzA5ODcyOTk0MAUAAAADbmlsAwkAAAAAAAACBQAAAA0kc2l6ZTk4NzI5OTQwAAAAAAAAAAAABQAAAA0kYWNjMDk4NzI5OTQwBAAAAA0kYWNjMTk4NzI5OTQwCQEAAAAdZmlsdGVyQWRtaW5zVm90ZUJ5QmxvY2tBY3Rpb24AAAACBQAAAA0kYWNjMDk4NzI5OTQwCQABkQAAAAIFAAAADSRsaXN0OTg3Mjk5NDAAAAAAAAAAAAADCQAAAAAAAAIFAAAADSRzaXplOTg3Mjk5NDAAAAAAAAAAAAEFAAAADSRhY2MxOTg3Mjk5NDAEAAAADSRhY2MyOTg3Mjk5NDAJAQAAAB1maWx0ZXJBZG1pbnNWb3RlQnlCbG9ja0FjdGlvbgAAAAIFAAAADSRhY2MxOTg3Mjk5NDAJAAGRAAAAAgUAAAANJGxpc3Q5ODcyOTk0MAAAAAAAAAAAAQMJAAAAAAAAAgUAAAANJHNpemU5ODcyOTk0MAAAAAAAAAAAAgUAAAANJGFjYzI5ODcyOTk0MAQAAAANJGFjYzM5ODcyOTk0MAkBAAAAHWZpbHRlckFkbWluc1ZvdGVCeUJsb2NrQWN0aW9uAAAAAgUAAAANJGFjYzI5ODcyOTk0MAkAAZEAAAACBQAAAA0kbGlzdDk4NzI5OTQwAAAAAAAAAAACAwkAAAAAAAACBQAAAA0kc2l6ZTk4NzI5OTQwAAAAAAAAAAADBQAAAA0kYWNjMzk4NzI5OTQwBAAAAA0kYWNjNDk4NzI5OTQwCQEAAAAdZmlsdGVyQWRtaW5zVm90ZUJ5QmxvY2tBY3Rpb24AAAACBQAAAA0kYWNjMzk4NzI5OTQwCQABkQAAAAIFAAAADSRsaXN0OTg3Mjk5NDAAAAAAAAAAAAMDCQAAAAAAAAIFAAAADSRzaXplOTg3Mjk5NDAAAAAAAAAAAAQFAAAADSRhY2M0OTg3Mjk5NDAEAAAADSRhY2M1OTg3Mjk5NDAJAQAAAB1maWx0ZXJBZG1pbnNWb3RlQnlCbG9ja0FjdGlvbgAAAAIFAAAADSRhY2M0OTg3Mjk5NDAJAAGRAAAAAgUAAAANJGxpc3Q5ODcyOTk0MAAAAAAAAAAABAMJAAAAAAAAAgUAAAANJHNpemU5ODcyOTk0MAAAAAAAAAAABQUAAAANJGFjYzU5ODcyOTk0MAQAAAANJGFjYzY5ODcyOTk0MAkBAAAAHWZpbHRlckFkbWluc1ZvdGVCeUJsb2NrQWN0aW9uAAAAAgUAAAANJGFjYzU5ODcyOTk0MAkAAZEAAAACBQAAAA0kbGlzdDk4NzI5OTQwAAAAAAAAAAAFCQAAAgAAAAECAAAAEkxpc3Qgc2l6ZSBleGNlZWQgNQQAAAAMdW5ibG9ja1ZvdGVzBAAAAA4kbGlzdDk5NjQxMDAzNAUAAAAYYWRtaW5zTGlzdFdpdGhvdXRBY2NvdW50BAAAAA4kc2l6ZTk5NjQxMDAzNAkAAZAAAAABBQAAAA4kbGlzdDk5NjQxMDAzNAQAAAAOJGFjYzA5OTY0MTAwMzQFAAAAA25pbAMJAAAAAAAAAgUAAAAOJHNpemU5OTY0MTAwMzQAAAAAAAAAAAAFAAAADiRhY2MwOTk2NDEwMDM0BAAAAA4kYWNjMTk5NjQxMDAzNAkBAAAAH2ZpbHRlckFkbWluc1ZvdGVCeVVuYmxvY2tBY3Rpb24AAAACBQAAAA4kYWNjMDk5NjQxMDAzNAkAAZEAAAACBQAAAA4kbGlzdDk5NjQxMDAzNAAAAAAAAAAAAAMJAAAAAAAAAgUAAAAOJHNpemU5OTY0MTAwMzQAAAAAAAAAAAEFAAAADiRhY2MxOTk2NDEwMDM0BAAAAA4kYWNjMjk5NjQxMDAzNAkBAAAAH2ZpbHRlckFkbWluc1ZvdGVCeVVuYmxvY2tBY3Rpb24AAAACBQAAAA4kYWNjMTk5NjQxMDAzNAkAAZEAAAACBQAAAA4kbGlzdDk5NjQxMDAzNAAAAAAAAAAAAQMJAAAAAAAAAgUAAAAOJHNpemU5OTY0MTAwMzQAAAAAAAAAAAIFAAAADiRhY2MyOTk2NDEwMDM0BAAAAA4kYWNjMzk5NjQxMDAzNAkBAAAAH2ZpbHRlckFkbWluc1ZvdGVCeVVuYmxvY2tBY3Rpb24AAAACBQAAAA4kYWNjMjk5NjQxMDAzNAkAAZEAAAACBQAAAA4kbGlzdDk5NjQxMDAzNAAAAAAAAAAAAgMJAAAAAAAAAgUAAAAOJHNpemU5OTY0MTAwMzQAAAAAAAAAAAMFAAAADiRhY2MzOTk2NDEwMDM0BAAAAA4kYWNjNDk5NjQxMDAzNAkBAAAAH2ZpbHRlckFkbWluc1ZvdGVCeVVuYmxvY2tBY3Rpb24AAAACBQAAAA4kYWNjMzk5NjQxMDAzNAkAAZEAAAACBQAAAA4kbGlzdDk5NjQxMDAzNAAAAAAAAAAAAwMJAAAAAAAAAgUAAAAOJHNpemU5OTY0MTAwMzQAAAAAAAAAAAQFAAAADiRhY2M0OTk2NDEwMDM0BAAAAA4kYWNjNTk5NjQxMDAzNAkBAAAAH2ZpbHRlckFkbWluc1ZvdGVCeVVuYmxvY2tBY3Rpb24AAAACBQAAAA4kYWNjNDk5NjQxMDAzNAkAAZEAAAACBQAAAA4kbGlzdDk5NjQxMDAzNAAAAAAAAAAABAMJAAAAAAAAAgUAAAAOJHNpemU5OTY0MTAwMzQAAAAAAAAAAAUFAAAADiRhY2M1OTk2NDEwMDM0BAAAAA4kYWNjNjk5NjQxMDAzNAkBAAAAH2ZpbHRlckFkbWluc1ZvdGVCeVVuYmxvY2tBY3Rpb24AAAACBQAAAA4kYWNjNTk5NjQxMDAzNAkAAZEAAAACBQAAAA4kbGlzdDk5NjQxMDAzNAAAAAAAAAAABQkAAAIAAAABAgAAABJMaXN0IHNpemUgZXhjZWVkIDUEAAAAC3VwZGF0ZVZvdGVzBAAAAA8kbGlzdDEwMDU3MTAxMjYFAAAAGGFkbWluc0xpc3RXaXRob3V0QWNjb3VudAQAAAAPJHNpemUxMDA1NzEwMTI2CQABkAAAAAEFAAAADyRsaXN0MTAwNTcxMDEyNgQAAAAPJGFjYzAxMDA1NzEwMTI2BQAAAANuaWwDCQAAAAAAAAIFAAAADyRzaXplMTAwNTcxMDEyNgAAAAAAAAAAAAUAAAAPJGFjYzAxMDA1NzEwMTI2BAAAAA8kYWNjMTEwMDU3MTAxMjYJAQAAAB5maWx0ZXJBZG1pbnNWb3RlQnlVcGRhdGVBY3Rpb24AAAACBQAAAA8kYWNjMDEwMDU3MTAxMjYJAAGRAAAAAgUAAAAPJGxpc3QxMDA1NzEwMTI2AAAAAAAAAAAAAwkAAAAAAAACBQAAAA8kc2l6ZTEwMDU3MTAxMjYAAAAAAAAAAAEFAAAADyRhY2MxMTAwNTcxMDEyNgQAAAAPJGFjYzIxMDA1NzEwMTI2CQEAAAAeZmlsdGVyQWRtaW5zVm90ZUJ5VXBkYXRlQWN0aW9uAAAAAgUAAAAPJGFjYzExMDA1NzEwMTI2CQABkQAAAAIFAAAADyRsaXN0MTAwNTcxMDEyNgAAAAAAAAAAAQMJAAAAAAAAAgUAAAAPJHNpemUxMDA1NzEwMTI2AAAAAAAAAAACBQAAAA8kYWNjMjEwMDU3MTAxMjYEAAAADyRhY2MzMTAwNTcxMDEyNgkBAAAAHmZpbHRlckFkbWluc1ZvdGVCeVVwZGF0ZUFjdGlvbgAAAAIFAAAADyRhY2MyMTAwNTcxMDEyNgkAAZEAAAACBQAAAA8kbGlzdDEwMDU3MTAxMjYAAAAAAAAAAAIDCQAAAAAAAAIFAAAADyRzaXplMTAwNTcxMDEyNgAAAAAAAAAAAwUAAAAPJGFjYzMxMDA1NzEwMTI2BAAAAA8kYWNjNDEwMDU3MTAxMjYJAQAAAB5maWx0ZXJBZG1pbnNWb3RlQnlVcGRhdGVBY3Rpb24AAAACBQAAAA8kYWNjMzEwMDU3MTAxMjYJAAGRAAAAAgUAAAAPJGxpc3QxMDA1NzEwMTI2AAAAAAAAAAADAwkAAAAAAAACBQAAAA8kc2l6ZTEwMDU3MTAxMjYAAAAAAAAAAAQFAAAADyRhY2M0MTAwNTcxMDEyNgQAAAAPJGFjYzUxMDA1NzEwMTI2CQEAAAAeZmlsdGVyQWRtaW5zVm90ZUJ5VXBkYXRlQWN0aW9uAAAAAgUAAAAPJGFjYzQxMDA1NzEwMTI2CQABkQAAAAIFAAAADyRsaXN0MTAwNTcxMDEyNgAAAAAAAAAABAMJAAAAAAAAAgUAAAAPJHNpemUxMDA1NzEwMTI2AAAAAAAAAAAFBQAAAA8kYWNjNTEwMDU3MTAxMjYEAAAADyRhY2M2MTAwNTcxMDEyNgkBAAAAHmZpbHRlckFkbWluc1ZvdGVCeVVwZGF0ZUFjdGlvbgAAAAIFAAAADyRhY2M1MTAwNTcxMDEyNgkAAZEAAAACBQAAAA8kbGlzdDEwMDU3MTAxMjYAAAAAAAAAAAUJAAACAAAAAQIAAAASTGlzdCBzaXplIGV4Y2VlZCA1BAAAAA5ibG9ja1ZvdGVDb3VudAkAAGQAAAACCQABkAAAAAEFAAAACmJsb2NrVm90ZXMDCQAAAAAAAAIFAAAABmFjdGlvbgUAAAAFQkxPQ0sAAAAAAAAAAAEAAAAAAAAAAAAEAAAAEHVuYmxvY2tWb3RlQ291bnQJAABkAAAAAgkAAZAAAAABBQAAAAx1bmJsb2NrVm90ZXMDCQAAAAAAAAIFAAAABmFjdGlvbgUAAAAHVU5CTE9DSwAAAAAAAAAAAQAAAAAAAAAAAAQAAAAQdXBkYXRlVm90ZXNDb3VudAkAAGQAAAACCQABkAAAAAEFAAAAC3VwZGF0ZVZvdGVzAwkAAAAAAAACBQAAAAZhY3Rpb24FAAAABlVQREFURQAAAAAAAAAAAQAAAAAAAAAAAAQAAAALcmVzZXRSZXN1bHQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAEkJsb2NrRXhwaXJlVm90ZUtleQAAAAAAAAAAAAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAXQmxvY2tFeHBpcmVQcm92aWRpbmdLZXkAAAAAAAAAAAAJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABVnZXRBZG1pblZvdGVBY3Rpb25LZXkAAAABCQABkQAAAAIFAAAAGGFkbWluc0xpc3RXaXRob3V0QWNjb3VudAAAAAAAAAAAAAIAAAAACQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAVZ2V0QWRtaW5Wb3RlQWN0aW9uS2V5AAAAAQkAAZEAAAACBQAAABhhZG1pbnNMaXN0V2l0aG91dEFjY291bnQAAAAAAAAAAAECAAAAAAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAFWdldEFkbWluVm90ZUFjdGlvbktleQAAAAEJAAGRAAAAAgUAAAAYYWRtaW5zTGlzdFdpdGhvdXRBY2NvdW50AAAAAAAAAAACAgAAAAAJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABVnZXRBZG1pblZvdGVBY3Rpb25LZXkAAAABCQABkQAAAAIFAAAAGGFkbWluc0xpc3RXaXRob3V0QWNjb3VudAAAAAAAAAAAAwIAAAAABQAAAANuaWwDAwkAAGcAAAACBQAAAA5ibG9ja1ZvdGVDb3VudAUAAAATYmZ0Q29lZmZpY2llbnRBZG1pbgYJAABnAAAAAgUAAAAQdW5ibG9ja1ZvdGVDb3VudAUAAAATYmZ0Q29lZmZpY2llbnRBZG1pbgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAARSXNQcmljZVBlbmRpbmdLZXkHCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAAxJc0Jsb2NrZWRLZXkDCQAAZwAAAAIFAAAADmJsb2NrVm90ZUNvdW50BQAAABNiZnRDb2VmZmljaWVudEFkbWluBgcFAAAAC3Jlc2V0UmVzdWx0AwkAAGYAAAACBQAAABB1cGRhdGVWb3Rlc0NvdW50BQAAABNiZnRDb2VmZmljaWVudEFkbWluCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAABRTY3JpcHRVcGRhdGVCbG9ja0tleQMJAABmAAAAAgUAAAAQdXBkYXRlVm90ZXNDb3VudAUAAAATYmZ0Q29lZmZpY2llbnRBZG1pbgkAAGQAAAACBQAAAAZoZWlnaHQFAAAAFHNjcmlwdFVwZGF0ZUludGVydmFsBQAAABFzY3JpcHRVcGRhdGVCbG9jawUAAAALcmVzZXRSZXN1bHQJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAEkJsb2NrRXhwaXJlVm90ZUtleQMJAABmAAAAAgUAAAAGaGVpZ2h0BQAAAA9ibG9ja0V4cGlyZVZvdGUJAABkAAAAAgUAAAAGaGVpZ2h0BQAAAAx2b3RlSW50ZXJ2YWwFAAAAD2Jsb2NrRXhwaXJlVm90ZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAFWdldEFkbWluVm90ZUFjdGlvbktleQAAAAEFAAAAB2FjY291bnQFAAAABmFjdGlvbgUAAAADbmlsAAAAABQ1HKI=", "chainId": 84, "height": 746231, "spentComplexity": 0 } View: original | compacted Prev: EtEkYgzPR9KaD5gp5KUbks27WyaYrNuTMWP2hrDZaLnj Next: Ee65Gh3Eo4vPVULKuxe6FCWC8yC6pkCbfo5hDMPMt2zc Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func getNumberByKey (key) = match getInteger(this, key) {
55 case a: Int =>
66 a
77 case _ =>
88 0
99 }
1010
1111
1212 func getStringByKey (key) = match getString(this, key) {
1313 case a: String =>
1414 a
1515 case _ =>
1616 ""
1717 }
1818
1919
2020 func getBoolByKey (key) = match getBoolean(this, key) {
2121 case a: Boolean =>
2222 a
2323 case _ =>
2424 false
2525 }
2626
2727
2828 func getNumberByAddressAndKey (address,key) = match getInteger(address, key) {
2929 case a: Int =>
3030 a
3131 case _ =>
3232 0
3333 }
3434
3535
3636 func getStringByAddressAndKey (address,key) = match getString(address, key) {
3737 case a: String =>
3838 a
3939 case _ =>
4040 ""
4141 }
4242
4343
4444 func isInt (val) = match val {
4545 case a: Int =>
4646 true
4747 case _ =>
4848 false
4949 }
5050
5151
5252 func dropElementInJsonArray (array,element) = {
5353 let splitedArray = split(array, element)
5454 if ((take(splitedArray[1], 1) == ","))
5555 then (splitedArray[0] + drop(splitedArray[1], 1))
5656 else (dropRight(splitedArray[0], 1) + splitedArray[1])
5757 }
5858
5959
6060 func convertJsonArrayToList (jsonArray) = split(jsonArray, ",")
6161
6262
6363 let BLOCK = "block"
6464
6565 let UNBLOCK = "unblock"
6666
6767 let UPDATE = "update"
6868
6969 let OraclesKey = "oracles"
7070
7171 let AdminsKey = "admins"
7272
7373 let VoteIntervalKey = "vote_interval"
7474
7575 let CoefficientOracleKey = "coefficient_oracle"
7676
7777 let CoefficientAdminKey = "coefficient_admin"
7878
7979 let ScriptUpdateIntervalKey = "script_update_interval"
8080
8181 let ProvidingIntervalKey = "providing_interval"
8282
8383 let PriceKey = "price"
8484
8585 let PriceOffsetKey = "price_offset"
8686
8787 let IsPricePendingKey = "is_pending_price"
8888
8989 let IsBlockedKey = "is_blocked"
9090
9191 let OracleIsProvideKey = "oracle_is_provide_"
9292
9393 let OracleProvidePriceKey = "oracle_price_provide_"
9494
9595 let AdminVoteKey = "admin_vote_"
9696
9797 let ActionKey = "action"
9898
9999 let BlockExpireProvidingKey = "providing_expire_block"
100100
101101 let BlackSwarmPriceKey = "black_swarm_price"
102102
103103 let BlockExpireVoteKey = "vote_expire_block"
104104
105105 let ScriptUpdateBlockKey = "script_update_block"
106106
107107 let PriceIndexKey = "price_index"
108108
109109 func getOracleIsProvideKey (owner) = (OracleIsProvideKey + owner)
110110
111111
112112 func getOracleProvidePriceKey (owner) = (OracleProvidePriceKey + owner)
113113
114114
115115 func getAdminVoteKey (owner) = (AdminVoteKey + owner)
116116
117117
118118 func getAdminVoteActionKey (owner) = ((getAdminVoteKey(owner) + "_") + ActionKey)
119119
120120
121121 func getBlackSwarmPriceKey (block) = ((BlackSwarmPriceKey + "_") + toString(block))
122122
123123
124124 func getPriceHistoryKey (block) = ((PriceKey + "_") + toString(block))
125125
126126
127127 func getHeightPriceByIndexKey (index) = ((PriceIndexKey + "_") + toString(index))
128128
129129
130130 let price = getNumberByKey(PriceKey)
131131
132132 let priceIndex = getNumberByKey(PriceIndexKey)
133133
134134 let providingInterval = getNumberByKey(ProvidingIntervalKey)
135135
136136 let blockExpireProviding = getNumberByKey(BlockExpireProvidingKey)
137137
138138 let blockExpireVote = getNumberByKey(BlockExpireVoteKey)
139139
140140 let scriptUpdateBlock = getNumberByKey(ScriptUpdateBlockKey)
141141
142142 let scriptUpdateInterval = getNumberByKey(ScriptUpdateIntervalKey)
143143
144144 let isPricePending = getBoolByKey(IsPricePendingKey)
145145
146146 let isBlocked = getBoolByKey(IsBlockedKey)
147147
148148 let bftCoefficientOracle = getNumberByKey(CoefficientOracleKey)
149149
150150 let bftCoefficientAdmin = getNumberByKey(CoefficientAdminKey)
151151
152152 let percentPriceOffset = getNumberByKey(PriceOffsetKey)
153153
154154 let voteInterval = getNumberByKey(VoteIntervalKey)
155155
156156 let oracles = getStringByKey(OraclesKey)
157157
158158 let admins = getStringByKey(AdminsKey)
159159
160160 let oraclesList = convertJsonArrayToList(oracles)
161161
162162 let adminsList = convertJsonArrayToList(admins)
163163
164164 func getAdminVoteAction (owner) = getStringByKey(getAdminVoteActionKey(owner))
165165
166166
167167 func isOracleProvide (owner) = getBoolByKey(getOracleIsProvideKey(owner))
168168
169169
170170 func isOracleProvideInt (owner) = if (isOracleProvide(owner))
171171 then 1
172172 else 0
173173
174174
175175 func getOracleProvidePrice (owner) = getNumberByKey(getOracleProvidePriceKey(owner))
176176
177177
178178 func isOracle (address) = isDefined(indexOf(oracles, address))
179179
180180
181181 func isAdmin (address) = isDefined(indexOf(admins, address))
182182
183183
184184 func sumOraclePrice (base,address) = (base + (getOracleProvidePrice(address) * isOracleProvideInt(address)))
185185
186186
187187 func filterAdminsVoteByAction (result,address,action) = address :: result
188188
189189
190190 func filterAdminsVoteByBlockAction (result,address) = filterAdminsVoteByAction(result, address, BLOCK)
191191
192192
193193 func filterAdminsVoteByUnblockAction (result,address) = filterAdminsVoteByAction(result, address, UNBLOCK)
194194
195195
196196 func filterAdminsVoteByUpdateAction (result,address) = filterAdminsVoteByAction(result, address, UPDATE)
197197
198198
199199 @Callable(i)
200200 func setCurrentPrice (newPrice) = {
201201 let account = toString(i.caller)
202202 let isOracleProvideList = [isOracleProvide(oraclesList[0]), isOracleProvide(oraclesList[1]), isOracleProvide(oraclesList[2]), isOracleProvide(oraclesList[3]), isOracleProvide(oraclesList[4])]
203203 let priceProvidingCount = ((((((if (isOracleProvideList[0])
204204 then 1
205205 else 0) + (if (isOracleProvideList[1])
206206 then 1
207207 else 0)) + (if (isOracleProvideList[2])
208208 then 1
209209 else 0)) + (if (isOracleProvideList[3])
210210 then 1
211211 else 0)) + (if (isOracleProvideList[4])
212212 then 1
213213 else 0)) + 1)
214214 if (isBlocked)
215215 then throw("contract is blocked")
216216 else if (!(isOracle(account)))
217217 then throw("permission denied")
218218 else if (if ((blockExpireProviding >= height))
219219 then isOracleProvide(account)
220220 else false)
221221 then throw("price is already provided")
222222 else if (if ((height > blockExpireProviding))
223223 then isPricePending
224224 else false)
225225 then throw("use finalizeCurrentPrice")
226226 else WriteSet([DataEntry(getOracleIsProvideKey(oraclesList[0]), if ((height > blockExpireProviding))
227227 then false
228228 else isOracleProvideList[0]), DataEntry(getOracleIsProvideKey(oraclesList[1]), if ((height > blockExpireProviding))
229229 then false
230230 else isOracleProvideList[1]), DataEntry(getOracleIsProvideKey(oraclesList[2]), if ((height > blockExpireProviding))
231231 then false
232232 else isOracleProvideList[2]), DataEntry(getOracleIsProvideKey(oraclesList[3]), if ((height > blockExpireProviding))
233233 then false
234234 else isOracleProvideList[3]), DataEntry(getOracleIsProvideKey(oraclesList[4]), if ((height > blockExpireProviding))
235235 then false
236236 else isOracleProvideList[4]), DataEntry(getOracleIsProvideKey(account), true), DataEntry(getOracleProvidePriceKey(account), newPrice), DataEntry(BlockExpireProvidingKey, if ((height > blockExpireProviding))
237237 then (height + providingInterval)
238238 else blockExpireProviding), DataEntry(IsPricePendingKey, if (if ((blockExpireProviding >= height))
239239 then (priceProvidingCount >= bftCoefficientOracle)
240240 else false)
241241 then true
242242 else isPricePending)])
243243 }
244244
245245
246246
247247 @Callable(i)
248248 func finalizeCurrentPrice () = {
249249 let isOracleProvideList = [isOracleProvide(oraclesList[0]), isOracleProvide(oraclesList[1]), isOracleProvide(oraclesList[2]), isOracleProvide(oraclesList[3]), isOracleProvide(oraclesList[4])]
250250 let priceProvidingCount = (((((if (isOracleProvideList[0])
251251 then 1
252252 else 0) + (if (isOracleProvideList[1])
253253 then 1
254254 else 0)) + (if (isOracleProvideList[2])
255255 then 1
256256 else 0)) + (if (isOracleProvideList[3])
257257 then 1
258258 else 0)) + (if (isOracleProvideList[4])
259259 then 1
260260 else 0))
261261 let priceSum = (((((getOracleProvidePrice(oraclesList[0]) * (if (isOracleProvideList[0])
262262 then 1
263263 else 0)) + (getOracleProvidePrice(oraclesList[1]) * (if (isOracleProvideList[1])
264264 then 1
265265 else 0))) + (getOracleProvidePrice(oraclesList[2]) * (if (isOracleProvideList[2])
266266 then 1
267267 else 0))) + (getOracleProvidePrice(oraclesList[3]) * (if (isOracleProvideList[3])
268268 then 1
269269 else 0))) + (getOracleProvidePrice(oraclesList[4]) * (if (isOracleProvideList[4])
270270 then 1
271271 else 0)))
272272 let newPrice = (priceSum / priceProvidingCount)
273273 if (isBlocked)
274274 then throw("contract is blocked")
275275 else if (if (!(isPricePending))
276276 then true
277277 else (blockExpireProviding >= height))
278278 then throw("wait for the end of the price providing")
279279 else if ((bftCoefficientOracle > priceProvidingCount))
280280 then throw("3/5 oracles need to set a price")
281281 else if (if ((newPrice >= (price + ((price * percentPriceOffset) / 100))))
282282 then true
283283 else ((price - ((price * percentPriceOffset) / 100)) >= newPrice))
284284 then WriteSet([DataEntry(IsBlockedKey, true), DataEntry(getBlackSwarmPriceKey(height), newPrice)])
285285 else {
286286 let newPriceIndex = (priceIndex + 1)
287287 WriteSet([DataEntry(PriceKey, newPrice), DataEntry(getPriceHistoryKey(height), newPrice), DataEntry(IsPricePendingKey, false), DataEntry(PriceIndexKey, newPriceIndex), DataEntry(getHeightPriceByIndexKey(newPriceIndex), height)])
288288 }
289289 }
290290
291291
292292
293293 @Callable(i)
294294 func vote (action) = {
295295 let account = toString(i.caller)
296296 let adminsListWithoutAccount = convertJsonArrayToList(dropElementInJsonArray(admins, account))
297297 let lastAction = getAdminVoteAction(account)
298298 let blockVotes = {
299299 let $list98729940 = adminsListWithoutAccount
300300 let $size98729940 = size($list98729940)
301301 let $acc098729940 = nil
302302 if (($size98729940 == 0))
303303 then $acc098729940
304304 else {
305305 let $acc198729940 = filterAdminsVoteByBlockAction($acc098729940, $list98729940[0])
306306 if (($size98729940 == 1))
307307 then $acc198729940
308308 else {
309309 let $acc298729940 = filterAdminsVoteByBlockAction($acc198729940, $list98729940[1])
310310 if (($size98729940 == 2))
311311 then $acc298729940
312312 else {
313313 let $acc398729940 = filterAdminsVoteByBlockAction($acc298729940, $list98729940[2])
314314 if (($size98729940 == 3))
315315 then $acc398729940
316316 else {
317317 let $acc498729940 = filterAdminsVoteByBlockAction($acc398729940, $list98729940[3])
318318 if (($size98729940 == 4))
319319 then $acc498729940
320320 else {
321321 let $acc598729940 = filterAdminsVoteByBlockAction($acc498729940, $list98729940[4])
322322 if (($size98729940 == 5))
323323 then $acc598729940
324324 else {
325325 let $acc698729940 = filterAdminsVoteByBlockAction($acc598729940, $list98729940[5])
326326 throw("List size exceed 5")
327327 }
328328 }
329329 }
330330 }
331331 }
332332 }
333333 }
334334 let unblockVotes = {
335335 let $list996410034 = adminsListWithoutAccount
336336 let $size996410034 = size($list996410034)
337337 let $acc0996410034 = nil
338338 if (($size996410034 == 0))
339339 then $acc0996410034
340340 else {
341341 let $acc1996410034 = filterAdminsVoteByUnblockAction($acc0996410034, $list996410034[0])
342342 if (($size996410034 == 1))
343343 then $acc1996410034
344344 else {
345345 let $acc2996410034 = filterAdminsVoteByUnblockAction($acc1996410034, $list996410034[1])
346346 if (($size996410034 == 2))
347347 then $acc2996410034
348348 else {
349349 let $acc3996410034 = filterAdminsVoteByUnblockAction($acc2996410034, $list996410034[2])
350350 if (($size996410034 == 3))
351351 then $acc3996410034
352352 else {
353353 let $acc4996410034 = filterAdminsVoteByUnblockAction($acc3996410034, $list996410034[3])
354354 if (($size996410034 == 4))
355355 then $acc4996410034
356356 else {
357357 let $acc5996410034 = filterAdminsVoteByUnblockAction($acc4996410034, $list996410034[4])
358358 if (($size996410034 == 5))
359359 then $acc5996410034
360360 else {
361361 let $acc6996410034 = filterAdminsVoteByUnblockAction($acc5996410034, $list996410034[5])
362362 throw("List size exceed 5")
363363 }
364364 }
365365 }
366366 }
367367 }
368368 }
369369 }
370370 let updateVotes = {
371371 let $list1005710126 = adminsListWithoutAccount
372372 let $size1005710126 = size($list1005710126)
373373 let $acc01005710126 = nil
374374 if (($size1005710126 == 0))
375375 then $acc01005710126
376376 else {
377377 let $acc11005710126 = filterAdminsVoteByUpdateAction($acc01005710126, $list1005710126[0])
378378 if (($size1005710126 == 1))
379379 then $acc11005710126
380380 else {
381381 let $acc21005710126 = filterAdminsVoteByUpdateAction($acc11005710126, $list1005710126[1])
382382 if (($size1005710126 == 2))
383383 then $acc21005710126
384384 else {
385385 let $acc31005710126 = filterAdminsVoteByUpdateAction($acc21005710126, $list1005710126[2])
386386 if (($size1005710126 == 3))
387387 then $acc31005710126
388388 else {
389389 let $acc41005710126 = filterAdminsVoteByUpdateAction($acc31005710126, $list1005710126[3])
390390 if (($size1005710126 == 4))
391391 then $acc41005710126
392392 else {
393393 let $acc51005710126 = filterAdminsVoteByUpdateAction($acc41005710126, $list1005710126[4])
394394 if (($size1005710126 == 5))
395395 then $acc51005710126
396396 else {
397397 let $acc61005710126 = filterAdminsVoteByUpdateAction($acc51005710126, $list1005710126[5])
398398 throw("List size exceed 5")
399399 }
400400 }
401401 }
402402 }
403403 }
404404 }
405405 }
406406 let blockVoteCount = (size(blockVotes) + (if ((action == BLOCK))
407407 then 1
408408 else 0))
409409 let unblockVoteCount = (size(unblockVotes) + (if ((action == UNBLOCK))
410410 then 1
411411 else 0))
412412 let updateVotesCount = (size(updateVotes) + (if ((action == UPDATE))
413413 then 1
414414 else 0))
415415 let resetResult = [DataEntry(BlockExpireVoteKey, 0), DataEntry(BlockExpireProvidingKey, 0), DataEntry(getAdminVoteActionKey(adminsListWithoutAccount[0]), ""), DataEntry(getAdminVoteActionKey(adminsListWithoutAccount[1]), ""), DataEntry(getAdminVoteActionKey(adminsListWithoutAccount[2]), ""), DataEntry(getAdminVoteActionKey(adminsListWithoutAccount[3]), "")]
416416 if (if ((blockVoteCount >= bftCoefficientAdmin))
417417 then true
418418 else (unblockVoteCount >= bftCoefficientAdmin))
419419 then WriteSet([DataEntry(IsPricePendingKey, false), DataEntry(IsBlockedKey, if ((blockVoteCount >= bftCoefficientAdmin))
420420 then true
421421 else false)] :: resetResult)
422422 else if ((updateVotesCount > bftCoefficientAdmin))
423423 then WriteSet(DataEntry(ScriptUpdateBlockKey, if ((updateVotesCount > bftCoefficientAdmin))
424424 then (height + scriptUpdateInterval)
425425 else scriptUpdateBlock) :: resetResult)
426426 else WriteSet([DataEntry(BlockExpireVoteKey, if ((height > blockExpireVote))
427427 then (height + voteInterval)
428428 else blockExpireVote), DataEntry(getAdminVoteActionKey(account), action)])
429429 }
430430
431431

github/deemru/w8io/873ac7e 
48.94 ms