tx · 8Q3j931QAsG2YDZcEDB8cDkcQRtxpEShvrobTZsNjn1q 3MpQvABYaGz83T1mCcR4iX8irMhvVVARchB: -0.01000000 Waves 2019.11.22 16:48 [776498] smart account 3MpQvABYaGz83T1mCcR4iX8irMhvVVARchB > SELF 0.00000000 Waves
{ "type": 13, "id": "8Q3j931QAsG2YDZcEDB8cDkcQRtxpEShvrobTZsNjn1q", "fee": 1000000, "feeAssetId": null, "timestamp": 1574430531356, "version": 1, "sender": "3MpQvABYaGz83T1mCcR4iX8irMhvVVARchB", "senderPublicKey": "5xwE5h3tN4TNU8uz13josXEpivshSnQPze4KvM1pJ19g", "proofs": [ "5uf93TazqMThYntLuRdAxJgYUpG29SzhYWJCS1KPS2WYLK4XDsATL1UK2WJi721cmmgwsL8w4hy2F315zJn13ETR" ], "script": "base64:AAIDAAAAAAAAAAkIARIAEgMKAQgAAAAyAQAAAA5nZXROdW1iZXJCeUtleQAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAAAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAgAAAAABAAAADGdldEJvb2xCeUtleQAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEGwAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAHQm9vbGVhbgQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQcBAAAAGGdldE51bWJlckJ5QWRkcmVzc0FuZEtleQAAAAIAAAAHYWRkcmVzcwAAAANrZXkEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAABAAAAGGdldFN0cmluZ0J5QWRkcmVzc0FuZEtleQAAAAIAAAAHYWRkcmVzcwAAAANrZXkEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWECAAAAAAEAAAAWZHJvcEVsZW1lbnRJbkpzb25BcnJheQAAAAIAAAAFYXJyYXkAAAAHZWxlbWVudAQAAAAMc3BsaXRlZEFycmF5CQAEtQAAAAIFAAAABWFycmF5BQAAAAdlbGVtZW50AwkAAAAAAAACCQABLwAAAAIJAAGRAAAAAgUAAAAMc3BsaXRlZEFycmF5AAAAAAAAAAABAAAAAAAAAAABAgAAAAEsCQABLAAAAAIJAAGRAAAAAgUAAAAMc3BsaXRlZEFycmF5AAAAAAAAAAAACQABMAAAAAIJAAGRAAAAAgUAAAAMc3BsaXRlZEFycmF5AAAAAAAAAAABAAAAAAAAAAABCQABLAAAAAIJAQAAAAlkcm9wUmlnaHQAAAACCQABkQAAAAIFAAAADHNwbGl0ZWRBcnJheQAAAAAAAAAAAAAAAAAAAAAAAQkAAZEAAAACBQAAAAxzcGxpdGVkQXJyYXkAAAAAAAAAAAEBAAAAFmNvbnZlcnRKc29uQXJyYXlUb0xpc3QAAAABAAAACWpzb25BcnJheQkABLUAAAACBQAAAAlqc29uQXJyYXkCAAAAASwAAAAABUJMT0NLAgAAAAVibG9jawAAAAAHVU5CTE9DSwIAAAAHdW5ibG9jawAAAAAGVVBEQVRFAgAAAAZ1cGRhdGUAAAAACk9yYWNsZXNLZXkCAAAAB29yYWNsZXMAAAAACUFkbWluc0tleQIAAAAGYWRtaW5zAAAAAA9Wb3RlSW50ZXJ2YWxLZXkCAAAADXZvdGVfaW50ZXJ2YWwAAAAAFENvZWZmaWNpZW50T3JhY2xlS2V5AgAAABJjb2VmZmljaWVudF9vcmFjbGUAAAAAE0NvZWZmaWNpZW50QWRtaW5LZXkCAAAAEWNvZWZmaWNpZW50X2FkbWluAAAAABdTY3JpcHRVcGRhdGVJbnRlcnZhbEtleQIAAAAWc2NyaXB0X3VwZGF0ZV9pbnRlcnZhbAAAAAAOUHJpY2VPZmZzZXRLZXkCAAAADHByaWNlX29mZnNldAAAAAAIUHJpY2VLZXkCAAAABXByaWNlAAAAAAxJc0Jsb2NrZWRLZXkCAAAACmlzX2Jsb2NrZWQAAAAAEkJsb2NrRXhwaXJlVm90ZUtleQIAAAARdm90ZV9leHBpcmVfYmxvY2sAAAAAFFNjcmlwdFVwZGF0ZUJsb2NrS2V5AgAAABNzY3JpcHRfdXBkYXRlX2Jsb2NrAAAAAA1QcmljZUluZGV4S2V5AgAAAAtwcmljZV9pbmRleAEAAAAPZ2V0QWRtaW5Wb3RlS2V5AAAAAQAAAAVvd25lcgkAASwAAAACAgAAAAthZG1pbl92b3RlXwUAAAAFb3duZXIBAAAAFWdldEFkbWluVm90ZUFjdGlvbktleQAAAAEAAAAFb3duZXIJAAEsAAAAAgkAASwAAAACCQEAAAAPZ2V0QWRtaW5Wb3RlS2V5AAAAAQUAAAAFb3duZXICAAAAAV8CAAAABmFjdGlvbgEAAAAVZ2V0QmxhY2tTd2FybVByaWNlS2V5AAAAAQAAAAVibG9jawkAASwAAAACCQABLAAAAAICAAAAEWJsYWNrX3N3YXJtX3ByaWNlAgAAAAFfCQABpAAAAAEFAAAABWJsb2NrAQAAABJnZXRQcmljZUhpc3RvcnlLZXkAAAABAAAABWJsb2NrCQABLAAAAAIJAAEsAAAAAgUAAAAIUHJpY2VLZXkCAAAAAV8JAAGkAAAAAQUAAAAFYmxvY2sBAAAAGGdldEhlaWdodFByaWNlQnlJbmRleEtleQAAAAEAAAAFaW5kZXgJAAEsAAAAAgkAASwAAAACBQAAAA1QcmljZUluZGV4S2V5AgAAAAFfCQABpAAAAAEFAAAABWluZGV4AQAAABhnZXRPcmFjbGVQcm92aWRlUHJpY2VLZXkAAAABAAAABmhlaWdodAkAASwAAAACAgAAAAZwcmljZV8JAAGkAAAAAQUAAAAGaGVpZ2h0AAAAAAVwcmljZQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQUAAAAIUHJpY2VLZXkAAAAACnByaWNlSW5kZXgJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEFAAAADVByaWNlSW5kZXhLZXkAAAAAD2Jsb2NrRXhwaXJlVm90ZQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQUAAAASQmxvY2tFeHBpcmVWb3RlS2V5AAAAABFzY3JpcHRVcGRhdGVCbG9jawkBAAAADmdldE51bWJlckJ5S2V5AAAAAQUAAAAUU2NyaXB0VXBkYXRlQmxvY2tLZXkAAAAAFHNjcmlwdFVwZGF0ZUludGVydmFsCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABBQAAABdTY3JpcHRVcGRhdGVJbnRlcnZhbEtleQAAAAAJaXNCbG9ja2VkCQEAAAAMZ2V0Qm9vbEJ5S2V5AAAAAQUAAAAMSXNCbG9ja2VkS2V5AAAAABRiZnRDb2VmZmljaWVudE9yYWNsZQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQUAAAAUQ29lZmZpY2llbnRPcmFjbGVLZXkAAAAAE2JmdENvZWZmaWNpZW50QWRtaW4JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEFAAAAE0NvZWZmaWNpZW50QWRtaW5LZXkAAAAAEnBlcmNlbnRQcmljZU9mZnNldAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQUAAAAOUHJpY2VPZmZzZXRLZXkAAAAADHZvdGVJbnRlcnZhbAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQUAAAAPVm90ZUludGVydmFsS2V5AAAAAAdvcmFjbGVzCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABBQAAAApPcmFjbGVzS2V5AAAAAAZhZG1pbnMJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEFAAAACUFkbWluc0tleQAAAAALb3JhY2xlc0xpc3QJAQAAABZjb252ZXJ0SnNvbkFycmF5VG9MaXN0AAAAAQUAAAAHb3JhY2xlcwAAAAAKYWRtaW5zTGlzdAkBAAAAFmNvbnZlcnRKc29uQXJyYXlUb0xpc3QAAAABBQAAAAZhZG1pbnMBAAAAEmdldEFkbWluVm90ZUFjdGlvbgAAAAEAAAAFb3duZXIJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABVnZXRBZG1pblZvdGVBY3Rpb25LZXkAAAABBQAAAAVvd25lcgEAAAAWZ2V0T3JhY2xlUHJvdmlkZUhlaWdodAAAAAIAAAAFb3duZXIAAAAGaGVpZ2h0CQEAAAAYZ2V0TnVtYmVyQnlBZGRyZXNzQW5kS2V5AAAAAgkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABBQAAAAVvd25lcgkBAAAAGGdldE9yYWNsZVByb3ZpZGVQcmljZUtleQAAAAEFAAAABmhlaWdodAEAAAAIaXNPcmFjbGUAAAABAAAAB2FkZHJlc3MJAQAAAAlpc0RlZmluZWQAAAABCQAEswAAAAIFAAAAB29yYWNsZXMFAAAAB2FkZHJlc3MBAAAAB2lzQWRtaW4AAAABAAAAB2FkZHJlc3MJAQAAAAlpc0RlZmluZWQAAAABCQAEswAAAAIFAAAABmFkbWlucwUAAAAHYWRkcmVzcwEAAAAYZmlsdGVyQWRtaW5zVm90ZUJ5QWN0aW9uAAAAAwAAAAZyZXN1bHQAAAAHYWRkcmVzcwAAAAZhY3Rpb24JAARMAAAAAgUAAAAHYWRkcmVzcwUAAAAGcmVzdWx0AQAAAB1maWx0ZXJBZG1pbnNWb3RlQnlCbG9ja0FjdGlvbgAAAAIAAAAGcmVzdWx0AAAAB2FkZHJlc3MJAQAAABhmaWx0ZXJBZG1pbnNWb3RlQnlBY3Rpb24AAAADBQAAAAZyZXN1bHQFAAAAB2FkZHJlc3MFAAAABUJMT0NLAQAAAB9maWx0ZXJBZG1pbnNWb3RlQnlVbmJsb2NrQWN0aW9uAAAAAgAAAAZyZXN1bHQAAAAHYWRkcmVzcwkBAAAAGGZpbHRlckFkbWluc1ZvdGVCeUFjdGlvbgAAAAMFAAAABnJlc3VsdAUAAAAHYWRkcmVzcwUAAAAHVU5CTE9DSwEAAAAeZmlsdGVyQWRtaW5zVm90ZUJ5VXBkYXRlQWN0aW9uAAAAAgAAAAZyZXN1bHQAAAAHYWRkcmVzcwkBAAAAGGZpbHRlckFkbWluc1ZvdGVCeUFjdGlvbgAAAAMFAAAABnJlc3VsdAUAAAAHYWRkcmVzcwUAAAAGVVBEQVRFAAAAAgAAAAFpAQAAABRmaW5hbGl6ZUN1cnJlbnRQcmljZQAAAAAEAAAABnByaWNlcwkABEwAAAACCQEAAAAWZ2V0T3JhY2xlUHJvdmlkZUhlaWdodAAAAAIJAAGRAAAAAgUAAAALb3JhY2xlc0xpc3QAAAAAAAAAAAAFAAAABmhlaWdodAkABEwAAAACCQEAAAAWZ2V0T3JhY2xlUHJvdmlkZUhlaWdodAAAAAIJAAGRAAAAAgUAAAALb3JhY2xlc0xpc3QAAAAAAAAAAAEFAAAABmhlaWdodAkABEwAAAACCQEAAAAWZ2V0T3JhY2xlUHJvdmlkZUhlaWdodAAAAAIJAAGRAAAAAgUAAAALb3JhY2xlc0xpc3QAAAAAAAAAAAIFAAAABmhlaWdodAkABEwAAAACCQEAAAAWZ2V0T3JhY2xlUHJvdmlkZUhlaWdodAAAAAIJAAGRAAAAAgUAAAALb3JhY2xlc0xpc3QAAAAAAAAAAAMFAAAABmhlaWdodAkABEwAAAACCQEAAAAWZ2V0T3JhY2xlUHJvdmlkZUhlaWdodAAAAAIJAAGRAAAAAgUAAAALb3JhY2xlc0xpc3QAAAAAAAAAAAQFAAAABmhlaWdodAUAAAADbmlsBAAAABNwcmljZVByb3ZpZGluZ0NvdW50AwkBAAAAAiE9AAAAAgkAAZEAAAACBQAAAAZwcmljZXMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEJAABkAAAAAgAAAAAAAAAAAAMJAQAAAAIhPQAAAAIJAAGRAAAAAgUAAAAGcHJpY2VzAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAABCQAAZAAAAAIAAAAAAAAAAAADCQEAAAACIT0AAAACCQABkQAAAAIFAAAABnByaWNlcwAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAQkAAGQAAAACAAAAAAAAAAAAAwkBAAAAAiE9AAAAAgkAAZEAAAACBQAAAAZwcmljZXMAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAEJAABkAAAAAgAAAAAAAAAAAAMJAQAAAAIhPQAAAAIJAAGRAAAAAgUAAAAGcHJpY2VzAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAABAAAAAhwcmljZVN1bQkAAGQAAAACCQAAZAAAAAIJAABkAAAAAgkAAGQAAAACCQABkQAAAAIFAAAABnByaWNlcwAAAAAAAAAAAAkAAZEAAAACBQAAAAZwcmljZXMAAAAAAAAAAAEJAAGRAAAAAgUAAAAGcHJpY2VzAAAAAAAAAAACCQABkQAAAAIFAAAABnByaWNlcwAAAAAAAAAAAwkAAZEAAAACBQAAAAZwcmljZXMAAAAAAAAAAAQEAAAACG5ld1ByaWNlCQAAaQAAAAIFAAAACHByaWNlU3VtBQAAABNwcmljZVByb3ZpZGluZ0NvdW50AwUAAAAJaXNCbG9ja2VkCQAAAgAAAAECAAAAE2NvbnRyYWN0IGlzIGJsb2NrZWQDCQAAZgAAAAIFAAAAFGJmdENvZWZmaWNpZW50T3JhY2xlBQAAABNwcmljZVByb3ZpZGluZ0NvdW50CQAAAgAAAAECAAAAHzMvNSBvcmFjbGVzIG5lZWQgdG8gc2V0IGEgcHJpY2UDAwkAAGcAAAACBQAAAAhuZXdQcmljZQkAAGQAAAACBQAAAAVwcmljZQkAAGkAAAACCQAAaAAAAAIFAAAABXByaWNlBQAAABJwZXJjZW50UHJpY2VPZmZzZXQAAAAAAAAAAGQGCQAAZwAAAAIJAABlAAAAAgUAAAAFcHJpY2UJAABpAAAAAgkAAGgAAAACBQAAAAVwcmljZQUAAAAScGVyY2VudFByaWNlT2Zmc2V0AAAAAAAAAABkBQAAAAhuZXdQcmljZQkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAMSXNCbG9ja2VkS2V5BgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAFWdldEJsYWNrU3dhcm1QcmljZUtleQAAAAEFAAAABmhlaWdodAUAAAAIbmV3UHJpY2UFAAAAA25pbAQAAAANbmV3UHJpY2VJbmRleAkAAGQAAAACBQAAAApwcmljZUluZGV4AAAAAAAAAAABCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAAhQcmljZUtleQUAAAAIbmV3UHJpY2UJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABJnZXRQcmljZUhpc3RvcnlLZXkAAAABBQAAAAZoZWlnaHQFAAAACG5ld1ByaWNlCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAA1QcmljZUluZGV4S2V5BQAAAA1uZXdQcmljZUluZGV4CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAYZ2V0SGVpZ2h0UHJpY2VCeUluZGV4S2V5AAAAAQUAAAANbmV3UHJpY2VJbmRleAUAAAAGaGVpZ2h0BQAAAANuaWwAAAABaQEAAAAEdm90ZQAAAAEAAAAGYWN0aW9uBAAAAAdhY2NvdW50CQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAYYWRtaW5zTGlzdFdpdGhvdXRBY2NvdW50CQEAAAAWY29udmVydEpzb25BcnJheVRvTGlzdAAAAAEJAQAAABZkcm9wRWxlbWVudEluSnNvbkFycmF5AAAAAgUAAAAGYWRtaW5zBQAAAAdhY2NvdW50BAAAAApsYXN0QWN0aW9uCQEAAAASZ2V0QWRtaW5Wb3RlQWN0aW9uAAAAAQUAAAAHYWNjb3VudAQAAAAKYmxvY2tWb3RlcwQAAAANJGxpc3Q2MjUzNjMyMQUAAAAYYWRtaW5zTGlzdFdpdGhvdXRBY2NvdW50BAAAAA0kc2l6ZTYyNTM2MzIxCQABkAAAAAEFAAAADSRsaXN0NjI1MzYzMjEEAAAADSRhY2MwNjI1MzYzMjEFAAAAA25pbAMJAAAAAAAAAgUAAAANJHNpemU2MjUzNjMyMQAAAAAAAAAAAAUAAAANJGFjYzA2MjUzNjMyMQQAAAANJGFjYzE2MjUzNjMyMQkBAAAAHWZpbHRlckFkbWluc1ZvdGVCeUJsb2NrQWN0aW9uAAAAAgUAAAANJGFjYzA2MjUzNjMyMQkAAZEAAAACBQAAAA0kbGlzdDYyNTM2MzIxAAAAAAAAAAAAAwkAAAAAAAACBQAAAA0kc2l6ZTYyNTM2MzIxAAAAAAAAAAABBQAAAA0kYWNjMTYyNTM2MzIxBAAAAA0kYWNjMjYyNTM2MzIxCQEAAAAdZmlsdGVyQWRtaW5zVm90ZUJ5QmxvY2tBY3Rpb24AAAACBQAAAA0kYWNjMTYyNTM2MzIxCQABkQAAAAIFAAAADSRsaXN0NjI1MzYzMjEAAAAAAAAAAAEDCQAAAAAAAAIFAAAADSRzaXplNjI1MzYzMjEAAAAAAAAAAAIFAAAADSRhY2MyNjI1MzYzMjEEAAAADSRhY2MzNjI1MzYzMjEJAQAAAB1maWx0ZXJBZG1pbnNWb3RlQnlCbG9ja0FjdGlvbgAAAAIFAAAADSRhY2MyNjI1MzYzMjEJAAGRAAAAAgUAAAANJGxpc3Q2MjUzNjMyMQAAAAAAAAAAAgMJAAAAAAAAAgUAAAANJHNpemU2MjUzNjMyMQAAAAAAAAAAAwUAAAANJGFjYzM2MjUzNjMyMQQAAAANJGFjYzQ2MjUzNjMyMQkBAAAAHWZpbHRlckFkbWluc1ZvdGVCeUJsb2NrQWN0aW9uAAAAAgUAAAANJGFjYzM2MjUzNjMyMQkAAZEAAAACBQAAAA0kbGlzdDYyNTM2MzIxAAAAAAAAAAADAwkAAAAAAAACBQAAAA0kc2l6ZTYyNTM2MzIxAAAAAAAAAAAEBQAAAA0kYWNjNDYyNTM2MzIxBAAAAA0kYWNjNTYyNTM2MzIxCQEAAAAdZmlsdGVyQWRtaW5zVm90ZUJ5QmxvY2tBY3Rpb24AAAACBQAAAA0kYWNjNDYyNTM2MzIxCQABkQAAAAIFAAAADSRsaXN0NjI1MzYzMjEAAAAAAAAAAAQDCQAAAAAAAAIFAAAADSRzaXplNjI1MzYzMjEAAAAAAAAAAAUFAAAADSRhY2M1NjI1MzYzMjEEAAAADSRhY2M2NjI1MzYzMjEJAQAAAB1maWx0ZXJBZG1pbnNWb3RlQnlCbG9ja0FjdGlvbgAAAAIFAAAADSRhY2M1NjI1MzYzMjEJAAGRAAAAAgUAAAANJGxpc3Q2MjUzNjMyMQAAAAAAAAAABQkAAAIAAAABAgAAABJMaXN0IHNpemUgZXhjZWVkIDUEAAAADHVuYmxvY2tWb3RlcwQAAAANJGxpc3Q2MzQ1NjQxNQUAAAAYYWRtaW5zTGlzdFdpdGhvdXRBY2NvdW50BAAAAA0kc2l6ZTYzNDU2NDE1CQABkAAAAAEFAAAADSRsaXN0NjM0NTY0MTUEAAAADSRhY2MwNjM0NTY0MTUFAAAAA25pbAMJAAAAAAAAAgUAAAANJHNpemU2MzQ1NjQxNQAAAAAAAAAAAAUAAAANJGFjYzA2MzQ1NjQxNQQAAAANJGFjYzE2MzQ1NjQxNQkBAAAAH2ZpbHRlckFkbWluc1ZvdGVCeVVuYmxvY2tBY3Rpb24AAAACBQAAAA0kYWNjMDYzNDU2NDE1CQABkQAAAAIFAAAADSRsaXN0NjM0NTY0MTUAAAAAAAAAAAADCQAAAAAAAAIFAAAADSRzaXplNjM0NTY0MTUAAAAAAAAAAAEFAAAADSRhY2MxNjM0NTY0MTUEAAAADSRhY2MyNjM0NTY0MTUJAQAAAB9maWx0ZXJBZG1pbnNWb3RlQnlVbmJsb2NrQWN0aW9uAAAAAgUAAAANJGFjYzE2MzQ1NjQxNQkAAZEAAAACBQAAAA0kbGlzdDYzNDU2NDE1AAAAAAAAAAABAwkAAAAAAAACBQAAAA0kc2l6ZTYzNDU2NDE1AAAAAAAAAAACBQAAAA0kYWNjMjYzNDU2NDE1BAAAAA0kYWNjMzYzNDU2NDE1CQEAAAAfZmlsdGVyQWRtaW5zVm90ZUJ5VW5ibG9ja0FjdGlvbgAAAAIFAAAADSRhY2MyNjM0NTY0MTUJAAGRAAAAAgUAAAANJGxpc3Q2MzQ1NjQxNQAAAAAAAAAAAgMJAAAAAAAAAgUAAAANJHNpemU2MzQ1NjQxNQAAAAAAAAAAAwUAAAANJGFjYzM2MzQ1NjQxNQQAAAANJGFjYzQ2MzQ1NjQxNQkBAAAAH2ZpbHRlckFkbWluc1ZvdGVCeVVuYmxvY2tBY3Rpb24AAAACBQAAAA0kYWNjMzYzNDU2NDE1CQABkQAAAAIFAAAADSRsaXN0NjM0NTY0MTUAAAAAAAAAAAMDCQAAAAAAAAIFAAAADSRzaXplNjM0NTY0MTUAAAAAAAAAAAQFAAAADSRhY2M0NjM0NTY0MTUEAAAADSRhY2M1NjM0NTY0MTUJAQAAAB9maWx0ZXJBZG1pbnNWb3RlQnlVbmJsb2NrQWN0aW9uAAAAAgUAAAANJGFjYzQ2MzQ1NjQxNQkAAZEAAAACBQAAAA0kbGlzdDYzNDU2NDE1AAAAAAAAAAAEAwkAAAAAAAACBQAAAA0kc2l6ZTYzNDU2NDE1AAAAAAAAAAAFBQAAAA0kYWNjNTYzNDU2NDE1BAAAAA0kYWNjNjYzNDU2NDE1CQEAAAAfZmlsdGVyQWRtaW5zVm90ZUJ5VW5ibG9ja0FjdGlvbgAAAAIFAAAADSRhY2M1NjM0NTY0MTUJAAGRAAAAAgUAAAANJGxpc3Q2MzQ1NjQxNQAAAAAAAAAABQkAAAIAAAABAgAAABJMaXN0IHNpemUgZXhjZWVkIDUEAAAAC3VwZGF0ZVZvdGVzBAAAAA0kbGlzdDY0Mzg2NTA3BQAAABhhZG1pbnNMaXN0V2l0aG91dEFjY291bnQEAAAADSRzaXplNjQzODY1MDcJAAGQAAAAAQUAAAANJGxpc3Q2NDM4NjUwNwQAAAANJGFjYzA2NDM4NjUwNwUAAAADbmlsAwkAAAAAAAACBQAAAA0kc2l6ZTY0Mzg2NTA3AAAAAAAAAAAABQAAAA0kYWNjMDY0Mzg2NTA3BAAAAA0kYWNjMTY0Mzg2NTA3CQEAAAAeZmlsdGVyQWRtaW5zVm90ZUJ5VXBkYXRlQWN0aW9uAAAAAgUAAAANJGFjYzA2NDM4NjUwNwkAAZEAAAACBQAAAA0kbGlzdDY0Mzg2NTA3AAAAAAAAAAAAAwkAAAAAAAACBQAAAA0kc2l6ZTY0Mzg2NTA3AAAAAAAAAAABBQAAAA0kYWNjMTY0Mzg2NTA3BAAAAA0kYWNjMjY0Mzg2NTA3CQEAAAAeZmlsdGVyQWRtaW5zVm90ZUJ5VXBkYXRlQWN0aW9uAAAAAgUAAAANJGFjYzE2NDM4NjUwNwkAAZEAAAACBQAAAA0kbGlzdDY0Mzg2NTA3AAAAAAAAAAABAwkAAAAAAAACBQAAAA0kc2l6ZTY0Mzg2NTA3AAAAAAAAAAACBQAAAA0kYWNjMjY0Mzg2NTA3BAAAAA0kYWNjMzY0Mzg2NTA3CQEAAAAeZmlsdGVyQWRtaW5zVm90ZUJ5VXBkYXRlQWN0aW9uAAAAAgUAAAANJGFjYzI2NDM4NjUwNwkAAZEAAAACBQAAAA0kbGlzdDY0Mzg2NTA3AAAAAAAAAAACAwkAAAAAAAACBQAAAA0kc2l6ZTY0Mzg2NTA3AAAAAAAAAAADBQAAAA0kYWNjMzY0Mzg2NTA3BAAAAA0kYWNjNDY0Mzg2NTA3CQEAAAAeZmlsdGVyQWRtaW5zVm90ZUJ5VXBkYXRlQWN0aW9uAAAAAgUAAAANJGFjYzM2NDM4NjUwNwkAAZEAAAACBQAAAA0kbGlzdDY0Mzg2NTA3AAAAAAAAAAADAwkAAAAAAAACBQAAAA0kc2l6ZTY0Mzg2NTA3AAAAAAAAAAAEBQAAAA0kYWNjNDY0Mzg2NTA3BAAAAA0kYWNjNTY0Mzg2NTA3CQEAAAAeZmlsdGVyQWRtaW5zVm90ZUJ5VXBkYXRlQWN0aW9uAAAAAgUAAAANJGFjYzQ2NDM4NjUwNwkAAZEAAAACBQAAAA0kbGlzdDY0Mzg2NTA3AAAAAAAAAAAEAwkAAAAAAAACBQAAAA0kc2l6ZTY0Mzg2NTA3AAAAAAAAAAAFBQAAAA0kYWNjNTY0Mzg2NTA3BAAAAA0kYWNjNjY0Mzg2NTA3CQEAAAAeZmlsdGVyQWRtaW5zVm90ZUJ5VXBkYXRlQWN0aW9uAAAAAgUAAAANJGFjYzU2NDM4NjUwNwkAAZEAAAACBQAAAA0kbGlzdDY0Mzg2NTA3AAAAAAAAAAAFCQAAAgAAAAECAAAAEkxpc3Qgc2l6ZSBleGNlZWQgNQQAAAAOYmxvY2tWb3RlQ291bnQJAABkAAAAAgkAAZAAAAABBQAAAApibG9ja1ZvdGVzAwkAAAAAAAACBQAAAAZhY3Rpb24FAAAABUJMT0NLAAAAAAAAAAABAAAAAAAAAAAABAAAABB1bmJsb2NrVm90ZUNvdW50CQAAZAAAAAIJAAGQAAAAAQUAAAAMdW5ibG9ja1ZvdGVzAwkAAAAAAAACBQAAAAZhY3Rpb24FAAAAB1VOQkxPQ0sAAAAAAAAAAAEAAAAAAAAAAAAEAAAAEHVwZGF0ZVZvdGVzQ291bnQJAABkAAAAAgkAAZAAAAABBQAAAAt1cGRhdGVWb3RlcwMJAAAAAAAAAgUAAAAGYWN0aW9uBQAAAAZVUERBVEUAAAAAAAAAAAEAAAAAAAAAAAAEAAAAC3Jlc2V0UmVzdWx0CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAABJCbG9ja0V4cGlyZVZvdGVLZXkAAAAAAAAAAAAJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABVnZXRBZG1pblZvdGVBY3Rpb25LZXkAAAABCQABkQAAAAIFAAAAGGFkbWluc0xpc3RXaXRob3V0QWNjb3VudAAAAAAAAAAAAAIAAAAACQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAVZ2V0QWRtaW5Wb3RlQWN0aW9uS2V5AAAAAQkAAZEAAAACBQAAABhhZG1pbnNMaXN0V2l0aG91dEFjY291bnQAAAAAAAAAAAECAAAAAAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAFWdldEFkbWluVm90ZUFjdGlvbktleQAAAAEJAAGRAAAAAgUAAAAYYWRtaW5zTGlzdFdpdGhvdXRBY2NvdW50AAAAAAAAAAACAgAAAAAJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABVnZXRBZG1pblZvdGVBY3Rpb25LZXkAAAABCQABkQAAAAIFAAAAGGFkbWluc0xpc3RXaXRob3V0QWNjb3VudAAAAAAAAAAAAwIAAAAABQAAAANuaWwDAwkAAGcAAAACBQAAAA5ibG9ja1ZvdGVDb3VudAUAAAATYmZ0Q29lZmZpY2llbnRBZG1pbgYJAABnAAAAAgUAAAAQdW5ibG9ja1ZvdGVDb3VudAUAAAATYmZ0Q29lZmZpY2llbnRBZG1pbgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAMSXNCbG9ja2VkS2V5AwkAAGcAAAACBQAAAA5ibG9ja1ZvdGVDb3VudAUAAAATYmZ0Q29lZmZpY2llbnRBZG1pbgYHBQAAAAtyZXNldFJlc3VsdAMJAABmAAAAAgUAAAAQdXBkYXRlVm90ZXNDb3VudAUAAAATYmZ0Q29lZmZpY2llbnRBZG1pbgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAUU2NyaXB0VXBkYXRlQmxvY2tLZXkDCQAAZgAAAAIFAAAAEHVwZGF0ZVZvdGVzQ291bnQFAAAAE2JmdENvZWZmaWNpZW50QWRtaW4JAABkAAAAAgUAAAAGaGVpZ2h0BQAAABRzY3JpcHRVcGRhdGVJbnRlcnZhbAUAAAARc2NyaXB0VXBkYXRlQmxvY2sFAAAAC3Jlc2V0UmVzdWx0CQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAABJCbG9ja0V4cGlyZVZvdGVLZXkDCQAAZgAAAAIFAAAABmhlaWdodAUAAAAPYmxvY2tFeHBpcmVWb3RlCQAAZAAAAAIFAAAABmhlaWdodAUAAAAMdm90ZUludGVydmFsBQAAAA9ibG9ja0V4cGlyZVZvdGUJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABVnZXRBZG1pblZvdGVBY3Rpb25LZXkAAAABBQAAAAdhY2NvdW50BQAAAAZhY3Rpb24FAAAAA25pbAAAAAAkH44Z", "chainId": 84, "height": 776498, "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 3 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | func getNumberByKey (key) = match getInteger(this, key) { | |
5 | + | case a: Int => | |
6 | + | a | |
7 | + | case _ => | |
8 | + | 0 | |
9 | + | } | |
10 | + | ||
11 | + | ||
12 | + | func getStringByKey (key) = match getString(this, key) { | |
13 | + | case a: String => | |
14 | + | a | |
15 | + | case _ => | |
16 | + | "" | |
17 | + | } | |
18 | + | ||
19 | + | ||
20 | + | func getBoolByKey (key) = match getBoolean(this, key) { | |
21 | + | case a: Boolean => | |
22 | + | a | |
23 | + | case _ => | |
24 | + | false | |
25 | + | } | |
26 | + | ||
27 | + | ||
28 | + | func getNumberByAddressAndKey (address,key) = match getInteger(address, key) { | |
29 | + | case a: Int => | |
30 | + | a | |
31 | + | case _ => | |
32 | + | 0 | |
33 | + | } | |
34 | + | ||
35 | + | ||
36 | + | func getStringByAddressAndKey (address,key) = match getString(address, key) { | |
37 | + | case a: String => | |
38 | + | a | |
39 | + | case _ => | |
40 | + | "" | |
41 | + | } | |
42 | + | ||
43 | + | ||
44 | + | func dropElementInJsonArray (array,element) = { | |
45 | + | let splitedArray = split(array, element) | |
46 | + | if ((take(splitedArray[1], 1) == ",")) | |
47 | + | then (splitedArray[0] + drop(splitedArray[1], 1)) | |
48 | + | else (dropRight(splitedArray[0], 1) + splitedArray[1]) | |
49 | + | } | |
50 | + | ||
51 | + | ||
52 | + | func convertJsonArrayToList (jsonArray) = split(jsonArray, ",") | |
53 | + | ||
54 | + | ||
55 | + | let BLOCK = "block" | |
56 | + | ||
57 | + | let UNBLOCK = "unblock" | |
58 | + | ||
59 | + | let UPDATE = "update" | |
60 | + | ||
61 | + | let OraclesKey = "oracles" | |
62 | + | ||
63 | + | let AdminsKey = "admins" | |
64 | + | ||
65 | + | let VoteIntervalKey = "vote_interval" | |
66 | + | ||
67 | + | let CoefficientOracleKey = "coefficient_oracle" | |
68 | + | ||
69 | + | let CoefficientAdminKey = "coefficient_admin" | |
70 | + | ||
71 | + | let ScriptUpdateIntervalKey = "script_update_interval" | |
72 | + | ||
73 | + | let PriceOffsetKey = "price_offset" | |
74 | + | ||
75 | + | let PriceKey = "price" | |
76 | + | ||
77 | + | let IsBlockedKey = "is_blocked" | |
78 | + | ||
79 | + | let BlockExpireVoteKey = "vote_expire_block" | |
80 | + | ||
81 | + | let ScriptUpdateBlockKey = "script_update_block" | |
82 | + | ||
83 | + | let PriceIndexKey = "price_index" | |
84 | + | ||
85 | + | func getAdminVoteKey (owner) = ("admin_vote_" + owner) | |
86 | + | ||
87 | + | ||
88 | + | func getAdminVoteActionKey (owner) = ((getAdminVoteKey(owner) + "_") + "action") | |
89 | + | ||
90 | + | ||
91 | + | func getBlackSwarmPriceKey (block) = (("black_swarm_price" + "_") + toString(block)) | |
92 | + | ||
93 | + | ||
94 | + | func getPriceHistoryKey (block) = ((PriceKey + "_") + toString(block)) | |
95 | + | ||
96 | + | ||
97 | + | func getHeightPriceByIndexKey (index) = ((PriceIndexKey + "_") + toString(index)) | |
98 | + | ||
99 | + | ||
100 | + | func getOracleProvidePriceKey (height) = ("price_" + toString(height)) | |
101 | + | ||
102 | + | ||
103 | + | let price = getNumberByKey(PriceKey) | |
104 | + | ||
105 | + | let priceIndex = getNumberByKey(PriceIndexKey) | |
106 | + | ||
107 | + | let blockExpireVote = getNumberByKey(BlockExpireVoteKey) | |
108 | + | ||
109 | + | let scriptUpdateBlock = getNumberByKey(ScriptUpdateBlockKey) | |
110 | + | ||
111 | + | let scriptUpdateInterval = getNumberByKey(ScriptUpdateIntervalKey) | |
112 | + | ||
113 | + | let isBlocked = getBoolByKey(IsBlockedKey) | |
114 | + | ||
115 | + | let bftCoefficientOracle = getNumberByKey(CoefficientOracleKey) | |
116 | + | ||
117 | + | let bftCoefficientAdmin = getNumberByKey(CoefficientAdminKey) | |
118 | + | ||
119 | + | let percentPriceOffset = getNumberByKey(PriceOffsetKey) | |
120 | + | ||
121 | + | let voteInterval = getNumberByKey(VoteIntervalKey) | |
122 | + | ||
123 | + | let oracles = getStringByKey(OraclesKey) | |
124 | + | ||
125 | + | let admins = getStringByKey(AdminsKey) | |
126 | + | ||
127 | + | let oraclesList = convertJsonArrayToList(oracles) | |
128 | + | ||
129 | + | let adminsList = convertJsonArrayToList(admins) | |
130 | + | ||
131 | + | func getAdminVoteAction (owner) = getStringByKey(getAdminVoteActionKey(owner)) | |
132 | + | ||
133 | + | ||
134 | + | func getOracleProvideHeight (owner,height) = getNumberByAddressAndKey(addressFromStringValue(owner), getOracleProvidePriceKey(height)) | |
135 | + | ||
136 | + | ||
137 | + | func isOracle (address) = isDefined(indexOf(oracles, address)) | |
138 | + | ||
139 | + | ||
140 | + | func isAdmin (address) = isDefined(indexOf(admins, address)) | |
141 | + | ||
142 | + | ||
143 | + | func filterAdminsVoteByAction (result,address,action) = address :: result | |
144 | + | ||
145 | + | ||
146 | + | func filterAdminsVoteByBlockAction (result,address) = filterAdminsVoteByAction(result, address, BLOCK) | |
147 | + | ||
148 | + | ||
149 | + | func filterAdminsVoteByUnblockAction (result,address) = filterAdminsVoteByAction(result, address, UNBLOCK) | |
150 | + | ||
151 | + | ||
152 | + | func filterAdminsVoteByUpdateAction (result,address) = filterAdminsVoteByAction(result, address, UPDATE) | |
153 | + | ||
154 | + | ||
155 | + | @Callable(i) | |
156 | + | func finalizeCurrentPrice () = { | |
157 | + | let prices = [getOracleProvideHeight(oraclesList[0], height), getOracleProvideHeight(oraclesList[1], height), getOracleProvideHeight(oraclesList[2], height), getOracleProvideHeight(oraclesList[3], height), getOracleProvideHeight(oraclesList[4], height)] | |
158 | + | let priceProvidingCount = if ((prices[0] != 0)) | |
159 | + | then 1 | |
160 | + | else (0 + (if ((prices[1] != 0)) | |
161 | + | then 1 | |
162 | + | else (0 + (if ((prices[2] != 0)) | |
163 | + | then 1 | |
164 | + | else (0 + (if ((prices[3] != 0)) | |
165 | + | then 1 | |
166 | + | else (0 + (if ((prices[4] != 0)) | |
167 | + | then 1 | |
168 | + | else 0)))))))) | |
169 | + | let priceSum = ((((prices[0] + prices[1]) + prices[2]) + prices[3]) + prices[4]) | |
170 | + | let newPrice = (priceSum / priceProvidingCount) | |
171 | + | if (isBlocked) | |
172 | + | then throw("contract is blocked") | |
173 | + | else if ((bftCoefficientOracle > priceProvidingCount)) | |
174 | + | then throw("3/5 oracles need to set a price") | |
175 | + | else if (if ((newPrice >= (price + ((price * percentPriceOffset) / 100)))) | |
176 | + | then true | |
177 | + | else ((price - ((price * percentPriceOffset) / 100)) >= newPrice)) | |
178 | + | then WriteSet([DataEntry(IsBlockedKey, true), DataEntry(getBlackSwarmPriceKey(height), newPrice)]) | |
179 | + | else { | |
180 | + | let newPriceIndex = (priceIndex + 1) | |
181 | + | WriteSet([DataEntry(PriceKey, newPrice), DataEntry(getPriceHistoryKey(height), newPrice), DataEntry(PriceIndexKey, newPriceIndex), DataEntry(getHeightPriceByIndexKey(newPriceIndex), height)]) | |
182 | + | } | |
183 | + | } | |
184 | + | ||
185 | + | ||
186 | + | ||
187 | + | @Callable(i) | |
188 | + | func vote (action) = { | |
189 | + | let account = toString(i.caller) | |
190 | + | let adminsListWithoutAccount = convertJsonArrayToList(dropElementInJsonArray(admins, account)) | |
191 | + | let lastAction = getAdminVoteAction(account) | |
192 | + | let blockVotes = { | |
193 | + | let $list62536321 = adminsListWithoutAccount | |
194 | + | let $size62536321 = size($list62536321) | |
195 | + | let $acc062536321 = nil | |
196 | + | if (($size62536321 == 0)) | |
197 | + | then $acc062536321 | |
198 | + | else { | |
199 | + | let $acc162536321 = filterAdminsVoteByBlockAction($acc062536321, $list62536321[0]) | |
200 | + | if (($size62536321 == 1)) | |
201 | + | then $acc162536321 | |
202 | + | else { | |
203 | + | let $acc262536321 = filterAdminsVoteByBlockAction($acc162536321, $list62536321[1]) | |
204 | + | if (($size62536321 == 2)) | |
205 | + | then $acc262536321 | |
206 | + | else { | |
207 | + | let $acc362536321 = filterAdminsVoteByBlockAction($acc262536321, $list62536321[2]) | |
208 | + | if (($size62536321 == 3)) | |
209 | + | then $acc362536321 | |
210 | + | else { | |
211 | + | let $acc462536321 = filterAdminsVoteByBlockAction($acc362536321, $list62536321[3]) | |
212 | + | if (($size62536321 == 4)) | |
213 | + | then $acc462536321 | |
214 | + | else { | |
215 | + | let $acc562536321 = filterAdminsVoteByBlockAction($acc462536321, $list62536321[4]) | |
216 | + | if (($size62536321 == 5)) | |
217 | + | then $acc562536321 | |
218 | + | else { | |
219 | + | let $acc662536321 = filterAdminsVoteByBlockAction($acc562536321, $list62536321[5]) | |
220 | + | throw("List size exceed 5") | |
221 | + | } | |
222 | + | } | |
223 | + | } | |
224 | + | } | |
225 | + | } | |
226 | + | } | |
227 | + | } | |
228 | + | let unblockVotes = { | |
229 | + | let $list63456415 = adminsListWithoutAccount | |
230 | + | let $size63456415 = size($list63456415) | |
231 | + | let $acc063456415 = nil | |
232 | + | if (($size63456415 == 0)) | |
233 | + | then $acc063456415 | |
234 | + | else { | |
235 | + | let $acc163456415 = filterAdminsVoteByUnblockAction($acc063456415, $list63456415[0]) | |
236 | + | if (($size63456415 == 1)) | |
237 | + | then $acc163456415 | |
238 | + | else { | |
239 | + | let $acc263456415 = filterAdminsVoteByUnblockAction($acc163456415, $list63456415[1]) | |
240 | + | if (($size63456415 == 2)) | |
241 | + | then $acc263456415 | |
242 | + | else { | |
243 | + | let $acc363456415 = filterAdminsVoteByUnblockAction($acc263456415, $list63456415[2]) | |
244 | + | if (($size63456415 == 3)) | |
245 | + | then $acc363456415 | |
246 | + | else { | |
247 | + | let $acc463456415 = filterAdminsVoteByUnblockAction($acc363456415, $list63456415[3]) | |
248 | + | if (($size63456415 == 4)) | |
249 | + | then $acc463456415 | |
250 | + | else { | |
251 | + | let $acc563456415 = filterAdminsVoteByUnblockAction($acc463456415, $list63456415[4]) | |
252 | + | if (($size63456415 == 5)) | |
253 | + | then $acc563456415 | |
254 | + | else { | |
255 | + | let $acc663456415 = filterAdminsVoteByUnblockAction($acc563456415, $list63456415[5]) | |
256 | + | throw("List size exceed 5") | |
257 | + | } | |
258 | + | } | |
259 | + | } | |
260 | + | } | |
261 | + | } | |
262 | + | } | |
263 | + | } | |
264 | + | let updateVotes = { | |
265 | + | let $list64386507 = adminsListWithoutAccount | |
266 | + | let $size64386507 = size($list64386507) | |
267 | + | let $acc064386507 = nil | |
268 | + | if (($size64386507 == 0)) | |
269 | + | then $acc064386507 | |
270 | + | else { | |
271 | + | let $acc164386507 = filterAdminsVoteByUpdateAction($acc064386507, $list64386507[0]) | |
272 | + | if (($size64386507 == 1)) | |
273 | + | then $acc164386507 | |
274 | + | else { | |
275 | + | let $acc264386507 = filterAdminsVoteByUpdateAction($acc164386507, $list64386507[1]) | |
276 | + | if (($size64386507 == 2)) | |
277 | + | then $acc264386507 | |
278 | + | else { | |
279 | + | let $acc364386507 = filterAdminsVoteByUpdateAction($acc264386507, $list64386507[2]) | |
280 | + | if (($size64386507 == 3)) | |
281 | + | then $acc364386507 | |
282 | + | else { | |
283 | + | let $acc464386507 = filterAdminsVoteByUpdateAction($acc364386507, $list64386507[3]) | |
284 | + | if (($size64386507 == 4)) | |
285 | + | then $acc464386507 | |
286 | + | else { | |
287 | + | let $acc564386507 = filterAdminsVoteByUpdateAction($acc464386507, $list64386507[4]) | |
288 | + | if (($size64386507 == 5)) | |
289 | + | then $acc564386507 | |
290 | + | else { | |
291 | + | let $acc664386507 = filterAdminsVoteByUpdateAction($acc564386507, $list64386507[5]) | |
292 | + | throw("List size exceed 5") | |
293 | + | } | |
294 | + | } | |
295 | + | } | |
296 | + | } | |
297 | + | } | |
298 | + | } | |
299 | + | } | |
300 | + | let blockVoteCount = (size(blockVotes) + (if ((action == BLOCK)) | |
301 | + | then 1 | |
302 | + | else 0)) | |
303 | + | let unblockVoteCount = (size(unblockVotes) + (if ((action == UNBLOCK)) | |
304 | + | then 1 | |
305 | + | else 0)) | |
306 | + | let updateVotesCount = (size(updateVotes) + (if ((action == UPDATE)) | |
307 | + | then 1 | |
308 | + | else 0)) | |
309 | + | let resetResult = [DataEntry(BlockExpireVoteKey, 0), DataEntry(getAdminVoteActionKey(adminsListWithoutAccount[0]), ""), DataEntry(getAdminVoteActionKey(adminsListWithoutAccount[1]), ""), DataEntry(getAdminVoteActionKey(adminsListWithoutAccount[2]), ""), DataEntry(getAdminVoteActionKey(adminsListWithoutAccount[3]), "")] | |
310 | + | if (if ((blockVoteCount >= bftCoefficientAdmin)) | |
311 | + | then true | |
312 | + | else (unblockVoteCount >= bftCoefficientAdmin)) | |
313 | + | then WriteSet(DataEntry(IsBlockedKey, if ((blockVoteCount >= bftCoefficientAdmin)) | |
314 | + | then true | |
315 | + | else false) :: resetResult) | |
316 | + | else if ((updateVotesCount > bftCoefficientAdmin)) | |
317 | + | then WriteSet(DataEntry(ScriptUpdateBlockKey, if ((updateVotesCount > bftCoefficientAdmin)) | |
318 | + | then (height + scriptUpdateInterval) | |
319 | + | else scriptUpdateBlock) :: resetResult) | |
320 | + | else WriteSet([DataEntry(BlockExpireVoteKey, if ((height > blockExpireVote)) | |
321 | + | then (height + voteInterval) | |
322 | + | else blockExpireVote), DataEntry(getAdminVoteActionKey(account), action)]) | |
323 | + | } | |
324 | + | ||
325 | + |
github/deemru/w8io/026f985 85.26 ms ◑