tx · Gar9ECCSvLW2uaG7h3xPwk8iokfVwFd8p6xKTWUChoxn 3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP: -0.01400000 Waves 2019.11.07 13:37 [1784694] smart account 3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP > SELF 0.00000000 Waves
{ "type": 13, "id": "Gar9ECCSvLW2uaG7h3xPwk8iokfVwFd8p6xKTWUChoxn", "fee": 1400000, "feeAssetId": null, "timestamp": 1573123108604, "version": 1, "sender": "3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP", "senderPublicKey": "GqXuX2WHNr3WUqTaeH2YCySFY45NAJoE9RmY9bEWkzh", "proofs": [ "5qW2gMvfQh23Q5Tqe9b9fAoxnYSwUzLcSyCpL8yaEUXkDDE438uYcrday1mvfBfpzhnc7zYsfM5ujvCMCo8Xx428" ], "script": "base64:AAIDAAAAAAAAAA4IARIDCgEBEgASAwoBCAAAAEEBAAAADmdldE51bWJlckJ5S2V5AAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAABAAAADmdldFN0cmluZ0J5S2V5AAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWECAAAAAAEAAAAMZ2V0Qm9vbEJ5S2V5AAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQbAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAdCb29sZWFuBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhBwEAAAAYZ2V0TnVtYmVyQnlBZGRyZXNzQW5kS2V5AAAAAgAAAAdhZGRyZXNzAAAAA2tleQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAdhZGRyZXNzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAEAAAAYZ2V0U3RyaW5nQnlBZGRyZXNzQW5kS2V5AAAAAgAAAAdhZGRyZXNzAAAAA2tleQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAdhZGRyZXNzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQIAAAAAAQAAABZkcm9wRWxlbWVudEluSnNvbkFycmF5AAAAAgAAAAVhcnJheQAAAAdlbGVtZW50BAAAAAxzcGxpdGVkQXJyYXkJAAS1AAAAAgUAAAAFYXJyYXkFAAAAB2VsZW1lbnQDCQAAAAAAAAIJAAEvAAAAAgkAAZEAAAACBQAAAAxzcGxpdGVkQXJyYXkAAAAAAAAAAAEAAAAAAAAAAAECAAAAASwJAAEsAAAAAgkAAZEAAAACBQAAAAxzcGxpdGVkQXJyYXkAAAAAAAAAAAAJAAEwAAAAAgkAAZEAAAACBQAAAAxzcGxpdGVkQXJyYXkAAAAAAAAAAAEAAAAAAAAAAAEJAAEsAAAAAgkBAAAACWRyb3BSaWdodAAAAAIJAAGRAAAAAgUAAAAMc3BsaXRlZEFycmF5AAAAAAAAAAAAAAAAAAAAAAABCQABkQAAAAIFAAAADHNwbGl0ZWRBcnJheQAAAAAAAAAAAQEAAAAWY29udmVydEpzb25BcnJheVRvTGlzdAAAAAEAAAAJanNvbkFycmF5CQAEtQAAAAIFAAAACWpzb25BcnJheQIAAAABLAAAAAAFQkxPQ0sCAAAABWJsb2NrAAAAAAdVTkJMT0NLAgAAAAd1bmJsb2NrAAAAAAZVUERBVEUCAAAABnVwZGF0ZQAAAAAKT3JhY2xlc0tleQIAAAAHb3JhY2xlcwAAAAAJQWRtaW5zS2V5AgAAAAZhZG1pbnMAAAAAD1ZvdGVJbnRlcnZhbEtleQIAAAANdm90ZV9pbnRlcnZhbAAAAAAUQ29lZmZpY2llbnRPcmFjbGVLZXkCAAAAEmNvZWZmaWNpZW50X29yYWNsZQAAAAATQ29lZmZpY2llbnRBZG1pbktleQIAAAARY29lZmZpY2llbnRfYWRtaW4AAAAAF1NjcmlwdFVwZGF0ZUludGVydmFsS2V5AgAAABZzY3JpcHRfdXBkYXRlX2ludGVydmFsAAAAABRQcm92aWRpbmdJbnRlcnZhbEtleQIAAAAScHJvdmlkaW5nX2ludGVydmFsAAAAAAhQcmljZUtleQIAAAAFcHJpY2UAAAAADlByaWNlT2Zmc2V0S2V5AgAAAAxwcmljZV9vZmZzZXQAAAAAEUlzUHJpY2VQZW5kaW5nS2V5AgAAABBpc19wZW5kaW5nX3ByaWNlAAAAAAxJc0Jsb2NrZWRLZXkCAAAACmlzX2Jsb2NrZWQAAAAAEk9yYWNsZUlzUHJvdmlkZUtleQIAAAASb3JhY2xlX2lzX3Byb3ZpZGVfAAAAABVPcmFjbGVQcm92aWRlUHJpY2VLZXkCAAAAFW9yYWNsZV9wcmljZV9wcm92aWRlXwAAAAAMQWRtaW5Wb3RlS2V5AgAAAAthZG1pbl92b3RlXwAAAAAJQWN0aW9uS2V5AgAAAAZhY3Rpb24AAAAAF0Jsb2NrRXhwaXJlUHJvdmlkaW5nS2V5AgAAABZwcm92aWRpbmdfZXhwaXJlX2Jsb2NrAAAAABJCbGFja1N3YXJtUHJpY2VLZXkCAAAAEWJsYWNrX3N3YXJtX3ByaWNlAAAAABJCbG9ja0V4cGlyZVZvdGVLZXkCAAAAEXZvdGVfZXhwaXJlX2Jsb2NrAAAAABRTY3JpcHRVcGRhdGVCbG9ja0tleQIAAAATc2NyaXB0X3VwZGF0ZV9ibG9jawAAAAANUHJpY2VJbmRleEtleQIAAAALcHJpY2VfaW5kZXgBAAAAFWdldE9yYWNsZUlzUHJvdmlkZUtleQAAAAEAAAAFb3duZXIJAAEsAAAAAgUAAAAST3JhY2xlSXNQcm92aWRlS2V5BQAAAAVvd25lcgEAAAAYZ2V0T3JhY2xlUHJvdmlkZVByaWNlS2V5AAAAAQAAAAVvd25lcgkAASwAAAACBQAAABVPcmFjbGVQcm92aWRlUHJpY2VLZXkFAAAABW93bmVyAQAAAA9nZXRBZG1pblZvdGVLZXkAAAABAAAABW93bmVyCQABLAAAAAIFAAAADEFkbWluVm90ZUtleQUAAAAFb3duZXIBAAAAFWdldEFkbWluVm90ZUFjdGlvbktleQAAAAEAAAAFb3duZXIJAAEsAAAAAgkAASwAAAACCQEAAAAPZ2V0QWRtaW5Wb3RlS2V5AAAAAQUAAAAFb3duZXICAAAAAV8FAAAACUFjdGlvbktleQEAAAAVZ2V0QmxhY2tTd2FybVByaWNlS2V5AAAAAQAAAAVibG9jawkAASwAAAACCQABLAAAAAIFAAAAEkJsYWNrU3dhcm1QcmljZUtleQIAAAABXwkAAaQAAAABBQAAAAVibG9jawEAAAASZ2V0UHJpY2VIaXN0b3J5S2V5AAAAAQAAAAVibG9jawkAASwAAAACCQABLAAAAAIFAAAACFByaWNlS2V5AgAAAAFfCQABpAAAAAEFAAAABWJsb2NrAQAAABhnZXRIZWlnaHRQcmljZUJ5SW5kZXhLZXkAAAABAAAABWluZGV4CQABLAAAAAIJAAEsAAAAAgUAAAANUHJpY2VJbmRleEtleQIAAAABXwkAAaQAAAABBQAAAAVpbmRleAAAAAAFcHJpY2UJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEFAAAACFByaWNlS2V5AAAAAApwcmljZUluZGV4CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABBQAAAA1QcmljZUluZGV4S2V5AAAAABFwcm92aWRpbmdJbnRlcnZhbAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQUAAAAUUHJvdmlkaW5nSW50ZXJ2YWxLZXkAAAAAFGJsb2NrRXhwaXJlUHJvdmlkaW5nCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABBQAAABdCbG9ja0V4cGlyZVByb3ZpZGluZ0tleQAAAAAPYmxvY2tFeHBpcmVWb3RlCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABBQAAABJCbG9ja0V4cGlyZVZvdGVLZXkAAAAAEXNjcmlwdFVwZGF0ZUJsb2NrCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABBQAAABRTY3JpcHRVcGRhdGVCbG9ja0tleQAAAAAUc2NyaXB0VXBkYXRlSW50ZXJ2YWwJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEFAAAAF1NjcmlwdFVwZGF0ZUludGVydmFsS2V5AAAAAA5pc1ByaWNlUGVuZGluZwkBAAAADGdldEJvb2xCeUtleQAAAAEFAAAAEUlzUHJpY2VQZW5kaW5nS2V5AAAAAAlpc0Jsb2NrZWQJAQAAAAxnZXRCb29sQnlLZXkAAAABBQAAAAxJc0Jsb2NrZWRLZXkAAAAAFGJmdENvZWZmaWNpZW50T3JhY2xlCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABBQAAABRDb2VmZmljaWVudE9yYWNsZUtleQAAAAATYmZ0Q29lZmZpY2llbnRBZG1pbgkBAAAADmdldE51bWJlckJ5S2V5AAAAAQUAAAATQ29lZmZpY2llbnRBZG1pbktleQAAAAAScGVyY2VudFByaWNlT2Zmc2V0CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABBQAAAA5QcmljZU9mZnNldEtleQAAAAAMdm90ZUludGVydmFsCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABBQAAAA9Wb3RlSW50ZXJ2YWxLZXkAAAAAB29yYWNsZXMJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEFAAAACk9yYWNsZXNLZXkAAAAABmFkbWlucwkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQUAAAAJQWRtaW5zS2V5AAAAAAtvcmFjbGVzTGlzdAkBAAAAFmNvbnZlcnRKc29uQXJyYXlUb0xpc3QAAAABBQAAAAdvcmFjbGVzAAAAAAphZG1pbnNMaXN0CQEAAAAWY29udmVydEpzb25BcnJheVRvTGlzdAAAAAEFAAAABmFkbWlucwEAAAASZ2V0QWRtaW5Wb3RlQWN0aW9uAAAAAQAAAAVvd25lcgkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAFWdldEFkbWluVm90ZUFjdGlvbktleQAAAAEFAAAABW93bmVyAQAAAA9pc09yYWNsZVByb3ZpZGUAAAABAAAABW93bmVyCQEAAAAMZ2V0Qm9vbEJ5S2V5AAAAAQkBAAAAFWdldE9yYWNsZUlzUHJvdmlkZUtleQAAAAEFAAAABW93bmVyAQAAABJpc09yYWNsZVByb3ZpZGVJbnQAAAABAAAABW93bmVyAwkBAAAAD2lzT3JhY2xlUHJvdmlkZQAAAAEFAAAABW93bmVyAAAAAAAAAAABAAAAAAAAAAAAAQAAABVnZXRPcmFjbGVQcm92aWRlUHJpY2UAAAABAAAABW93bmVyCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAYZ2V0T3JhY2xlUHJvdmlkZVByaWNlS2V5AAAAAQUAAAAFb3duZXIBAAAACGlzT3JhY2xlAAAAAQAAAAdhZGRyZXNzCQEAAAAJaXNEZWZpbmVkAAAAAQkABLMAAAACBQAAAAdvcmFjbGVzBQAAAAdhZGRyZXNzAQAAAAdpc0FkbWluAAAAAQAAAAdhZGRyZXNzCQEAAAAJaXNEZWZpbmVkAAAAAQkABLMAAAACBQAAAAZhZG1pbnMFAAAAB2FkZHJlc3MBAAAADnN1bU9yYWNsZVByaWNlAAAAAgAAAARiYXNlAAAAB2FkZHJlc3MJAABkAAAAAgUAAAAEYmFzZQkAAGgAAAACCQEAAAAVZ2V0T3JhY2xlUHJvdmlkZVByaWNlAAAAAQUAAAAHYWRkcmVzcwkBAAAAEmlzT3JhY2xlUHJvdmlkZUludAAAAAEFAAAAB2FkZHJlc3MBAAAAGGZpbHRlckFkbWluc1ZvdGVCeUFjdGlvbgAAAAMAAAAGcmVzdWx0AAAAB2FkZHJlc3MAAAAGYWN0aW9uCQAETAAAAAIFAAAAB2FkZHJlc3MFAAAABnJlc3VsdAEAAAAdZmlsdGVyQWRtaW5zVm90ZUJ5QmxvY2tBY3Rpb24AAAACAAAABnJlc3VsdAAAAAdhZGRyZXNzCQEAAAAYZmlsdGVyQWRtaW5zVm90ZUJ5QWN0aW9uAAAAAwUAAAAGcmVzdWx0BQAAAAdhZGRyZXNzBQAAAAVCTE9DSwEAAAAfZmlsdGVyQWRtaW5zVm90ZUJ5VW5ibG9ja0FjdGlvbgAAAAIAAAAGcmVzdWx0AAAAB2FkZHJlc3MJAQAAABhmaWx0ZXJBZG1pbnNWb3RlQnlBY3Rpb24AAAADBQAAAAZyZXN1bHQFAAAAB2FkZHJlc3MFAAAAB1VOQkxPQ0sBAAAAHmZpbHRlckFkbWluc1ZvdGVCeVVwZGF0ZUFjdGlvbgAAAAIAAAAGcmVzdWx0AAAAB2FkZHJlc3MJAQAAABhmaWx0ZXJBZG1pbnNWb3RlQnlBY3Rpb24AAAADBQAAAAZyZXN1bHQFAAAAB2FkZHJlc3MFAAAABlVQREFURQAAAAMAAAABaQEAAAAPc2V0Q3VycmVudFByaWNlAAAAAQAAAAhuZXdQcmljZQQAAAAHYWNjb3VudAkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAAE2lzT3JhY2xlUHJvdmlkZUxpc3QJAARMAAAAAgkBAAAAD2lzT3JhY2xlUHJvdmlkZQAAAAEJAAGRAAAAAgUAAAALb3JhY2xlc0xpc3QAAAAAAAAAAAAJAARMAAAAAgkBAAAAD2lzT3JhY2xlUHJvdmlkZQAAAAEJAAGRAAAAAgUAAAALb3JhY2xlc0xpc3QAAAAAAAAAAAEJAARMAAAAAgkBAAAAD2lzT3JhY2xlUHJvdmlkZQAAAAEJAAGRAAAAAgUAAAALb3JhY2xlc0xpc3QAAAAAAAAAAAIJAARMAAAAAgkBAAAAD2lzT3JhY2xlUHJvdmlkZQAAAAEJAAGRAAAAAgUAAAALb3JhY2xlc0xpc3QAAAAAAAAAAAMJAARMAAAAAgkBAAAAD2lzT3JhY2xlUHJvdmlkZQAAAAEJAAGRAAAAAgUAAAALb3JhY2xlc0xpc3QAAAAAAAAAAAQFAAAAA25pbAQAAAATcHJpY2VQcm92aWRpbmdDb3VudAkAAGQAAAACCQAAZAAAAAIJAABkAAAAAgkA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AAAADVByaWNlSW5kZXhLZXkFAAAADW5ld1ByaWNlSW5kZXgJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABhnZXRIZWlnaHRQcmljZUJ5SW5kZXhLZXkAAAABBQAAAA1uZXdQcmljZUluZGV4BQAAAAZoZWlnaHQFAAAAA25pbAAAAAFpAQAAAAR2b3RlAAAAAQAAAAZhY3Rpb24EAAAAB2FjY291bnQJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAABhhZG1pbnNMaXN0V2l0aG91dEFjY291bnQJAQAAABZjb252ZXJ0SnNvbkFycmF5VG9MaXN0AAAAAQkBAAAAFmRyb3BFbGVtZW50SW5Kc29uQXJyYXkAAAACBQAAAAZhZG1pbnMFAAAAB2FjY291bnQEAAAACmxhc3RBY3Rpb24JAQAAABJnZXRBZG1pblZvdGVBY3Rpb24AAAABBQAAAAdhY2NvdW50BAAAAApibG9ja1ZvdGVzBAAAAA0kbGlzdDk4Mjk5ODk3BQAAABhhZG1pbnNMaXN0V2l0aG91dEFjY291bnQEAAAADSRzaXplOTgyOTk4OTcJAAGQAAAAAQUAAAANJGxpc3Q5ODI5OTg5NwQAAAANJGFjYzA5ODI5OTg5NwUAAAADbmlsAwkAAAAAAAACBQAAAA0kc2l6ZTk4Mjk5ODk3AAAAAAAAAAAABQAAAA0kYWNjMDk4Mjk5ODk3BAAAAA0kYWNjMTk4Mjk5ODk3CQEAAAAdZmlsdGVyQWRtaW5zVm90ZUJ5QmxvY2tBY3Rpb24AAAACBQAAAA0kYWNjMDk4Mjk5ODk3CQABkQAAAAIFAAAADSRsaXN0OTgyOTk4OTcAAAAAAAAAAAADCQAAAAAAAAIFAAAADSRzaXplOTgyOTk4OTcAAAAAAAAAAAEFAAAADSRhY2MxOTgyOTk4OTcEAAAADSRhY2MyOTgyOTk4OTcJAQAAAB1maWx0ZXJBZG1pbnNWb3RlQnlCbG9ja0FjdGlvbgAAAAIFAAAADSRhY2MxOTgyOTk4OTcJAAGRAAAAAgUAAAANJGxpc3Q5ODI5OTg5NwAAAAAAAAAAAQMJAAAAAAAAAgUAAAANJHNpemU5ODI5OTg5NwAAAAAAAAAAAgUAAAANJGFjYzI5ODI5OTg5NwQAAAANJGFjYzM5ODI5OTg5NwkBAAAAHWZpbHRlckFkbWluc1ZvdGVCeUJsb2NrQWN0aW9uAAAAAgUAAAANJGFjYzI5ODI5OTg5NwkAAZEAAAACBQAAAA0kbGlzdDk4Mjk5ODk3AAAAAAAAAAACAwkAAAAAAAACBQAAAA0kc2l6ZTk4Mjk5ODk3AAAAAAAAAAADBQAAAA0kYWNjMzk4Mjk5ODk3BAAAAA0kYWNjNDk4Mjk5ODk3CQEAAAAdZmlsdGVyQWRtaW5zVm90ZUJ5QmxvY2tBY3Rpb24AAAACBQAAAA0kYWNjMzk4Mjk5ODk3CQABkQAAAAIFAAAADSRsaXN0OTgyOTk4OTcAAAAAAAAAAAMDCQAAAAAAAAIFAAAADSRzaXplOTgyOTk4OTcAAAAAAAAAAAQFAAAADSRhY2M0OTgyOTk4OTcEAAAADSRhY2M1OTgyOTk4OTcJAQAAAB1maWx0ZXJBZG1pbnNWb3RlQnlCbG9ja0FjdGlvbgAAAAIFAAAADSRhY2M0OTgyOTk4OTcJAAGRAAAAAgUAAAANJGxpc3Q5ODI5OTg5NwAAAAAAAAAABAMJAAAAAAAAAgUAAAANJHNpemU5ODI5OTg5NwAAAAAAAAAABQUAAAANJGFjYzU5ODI5OTg5NwQAAAANJGFjYzY5ODI5OTg5NwkBAAAAHWZpbHRlckFkbWluc1ZvdGVCeUJsb2NrQWN0aW9uAAAAAgUAAAANJGFjYzU5ODI5OTg5NwkAAZEAAAACBQAAAA0kbGlzdDk4Mjk5ODk3AAAAAAAAAAAFCQAAAgAAAAECAAAAEkxpc3Qgc2l6ZSBleGNlZWQgNQQAAAAMdW5ibG9ja1ZvdGVzBAAAAA0kbGlzdDk5MjE5OTkxBQAAABhhZG1pbnNMaXN0V2l0aG91dEFjY291bnQEAAAADSRzaXplOTkyMTk5OTEJAAGQAAAAAQUAAAANJGxpc3Q5OTIxOTk5MQQAAAANJGFjYzA5OTIxOTk5MQUAAAADbmlsAwkAAAAAAAACBQAAAA0kc2l6ZTk5MjE5OTkxAAAAAAAAAAAABQAAAA0kYWNjMDk5MjE5OTkxBAAAAA0kYWNjMTk5MjE5OTkxCQEAAAAfZmlsdGVyQWRtaW5zVm90ZUJ5VW5ibG9ja0FjdGlvbgAAAAIFAAAADSRhY2MwOTkyMTk5OTEJAAGRAAAAAgUAAAANJGxpc3Q5OTIxOTk5MQAAAAAAAAAAAAMJAAAAAAAAAgUAAAANJHNpemU5OTIxOTk5MQAAAAAAAAAAAQUAAAANJGFjYzE5OTIxOTk5MQQAAAANJGFjYzI5OTIxOTk5MQkBAAAAH2ZpbHRlckFkbWluc1ZvdGVCeVVuYmxvY2tBY3Rpb24AAAACBQAAAA0kYWNjMTk5MjE5OTkxCQABkQAAAAIFAAAADSRsaXN0OTkyMTk5OTEAAAAAAAAAAAEDCQAAAAAAAAIFAAAADSRzaXplOTkyMTk5OTEAAAAAAAAAAAIFAAAADSRhY2MyOTkyMTk5OTEEAAAADSRhY2MzOTkyMTk5OTEJAQAAAB9maWx0ZXJBZG1pbnNWb3RlQnlVbmJsb2NrQWN0aW9uAAAAAgUAAAANJGFjYzI5OTIxOTk5MQkAAZEAAAACBQAAAA0kbGlzdDk5MjE5OTkxAAAAAAAAAAACAwkAAAAAAAACBQAAAA0kc2l6ZTk5MjE5OTkxAAAAAAAAAAADBQAAAA0kYWNjMzk5MjE5OTkxBAAAAA0kYWNjNDk5MjE5OTkxCQEAAAAfZmlsdGVyQWRtaW5zVm90ZUJ5VW5ibG9ja0FjdGlvbgAAAAIFAAAADSRhY2MzOTkyMTk5OTEJAAGRAAAAAgUAAAANJGxpc3Q5OTIxOTk5MQAAAAAAAAAAAwMJAAAAAAAAAgUAAAANJHNpemU5OTIxOTk5MQAAAAAAAAAABAUAAAANJGFjYzQ5OTIxOTk5MQQAAAANJGFjYzU5OTIxOTk5MQkBAAAAH2ZpbHRlckFkbWluc1ZvdGVCeVVuYmxvY2tBY3Rpb24AAAACBQAAAA0kYWNjNDk5MjE5OTkxCQABkQAAAAIFAAAADSRsaXN0OTkyMTk5OTEAAAAAAAAAAAQDCQAAAAAAAAIFAAAADSRzaXplOTkyMTk5OTEAAAAAAAAAAAUFAAAADSRhY2M1OTkyMTk5OTEEAAAADSRhY2M2OTkyMTk5OTEJAQAAAB9maWx0ZXJBZG1pbnNWb3RlQnlVbmJsb2NrQWN0aW9uAAAAAgUAAAANJGFjYzU5OTIxOTk5MQkAAZEAAAACBQAAAA0kbGlzdDk5MjE5OTkxAAAAAAAAAAAFCQAAAgAAAAECAAAAEkxpc3Qgc2l6ZSBleGNlZWQgNQQAAAALdXBkYXRlVm90ZXMEAAAADyRsaXN0MTAwMTQxMDA4MwUAAAAYYWRtaW5zTGlzdFdpdGhvdXRBY2NvdW50BAAAAA8kc2l6ZTEwMDE0MTAwODMJAAGQAAAAAQUAAAAPJGxpc3QxMDAxNDEwMDgzBAAAAA8kYWNjMDEwMDE0MTAwODMFAAAAA25pbAMJAAAAAAAAAgUAAAAPJHNpemUxMDAxNDEwMDgzAAAAAAAAAAAABQAAAA8kYWNjMDEwMDE0MTAwODMEAAAADyRhY2MxMTAwMTQxMDA4MwkBAAAAHmZpbHRlckFkbWluc1ZvdGVCeVVwZGF0ZUFjdGlvbgAAAAIFAAAADyRhY2MwMTAwMTQxMDA4MwkAAZEAAAACBQAAAA8kbGlzdDEwMDE0MTAwODMAAAAAAAAAAAADCQAAAAAAAAIFAAAADyRzaXplMTAwMTQxMDA4MwAAAAAAAAAAAQUAAAAPJGFjYzExMDAxNDEwMDgzBAAAAA8kYWNjMjEwMDE0MTAwODMJAQAAAB5maWx0ZXJBZG1pbnNWb3RlQnlVcGRhdGVBY3Rpb24AAAACBQAAAA8kYWNjMTEwMDE0MTAwODMJAAGRAAAAAgUAAAAPJGxpc3QxMDAxNDEwMDgzAAAAAAAAAAABAwkAAAAAAAACBQAAAA8kc2l6ZTEwMDE0MTAwODMAAAAAAAAAAAIFAAAADyRhY2MyMTAwMTQxMDA4MwQAAAAPJGFjYzMxMDAxNDEwMDgzCQEAAAAeZmlsdGVyQWRtaW5zVm90ZUJ5VXBkYXRlQWN0aW9uAAAAAgUAAAAPJGFjYzIxMDAxNDEwMDgzCQABkQAAAAIFAAAADyRsaXN0MTAwMTQxMDA4MwAAAAAAAAAAAgMJAAAAAAAAAgUAAAAPJHNpemUxMDAxNDEwMDgzAAAAAAAAAAADBQAAAA8kYWNjMzEwMDE0MTAwODMEAAAADyRhY2M0MTAwMTQxMDA4MwkBAAAAHmZpbHRlckFkbWluc1ZvdGVCeVVwZGF0ZUFjdGlvbgAAAAIFAAAADyRhY2MzMTAwMTQxMDA4MwkAAZEAAAACBQAAAA8kbGlzdDEwMDE0MTAwODMAAAAAAAAAAAMDCQAAAAAAAAIFAAAADyRzaXplMTAwMTQxMDA4MwAAAAAAAAAABAUAAAAPJGFjYzQxMDAxNDEwMDgzBAAAAA8kYWNjNTEwMDE0MTAwODMJAQAAAB5maWx0ZXJBZG1pbnNWb3RlQnlVcGRhdGVBY3Rpb24AAAACBQAAAA8kYWNjNDEwMDE0MTAwODMJAAGRAAAAAgUAAAAPJGxpc3QxMDAxNDEwMDgzAAAAAAAAAAAEAwkAAAAAAAACBQAAAA8kc2l6ZTEwMDE0MTAwODMAAAAAAAAAAAUFAAAADyRhY2M1MTAwMTQxMDA4MwQAAAAPJGFjYzYxMDAxNDEwMDgzCQEAAAAeZmlsdGVyQWRtaW5zVm90ZUJ5VXBkYXRlQWN0aW9uAAAAAgUAAAAPJGFjYzUxMDAxNDEwMDgzCQABkQAAAAIFAAAADyRsaXN0MTAwMTQxMDA4MwAAAAAAAAAABQkAAAIAAAABAgAAABJMaXN0IHNpemUgZXhjZWVkIDUEAAAADmJsb2NrVm90ZUNvdW50CQAAZAAAAAIJAAGQAAAAAQUAAAAKYmxvY2tWb3RlcwMJAAAAAAAAAgUAAAAGYWN0aW9uBQAAAAVCTE9DSwAAAAAAAAAAAQAAAAAAAAAAAAQAAAAQdW5ibG9ja1ZvdGVDb3VudAkAAGQAAAACCQABkAAAAAEFAAAADHVuYmxvY2tWb3RlcwMJAAAAAAAAAgUAAAAGYWN0aW9uBQAAAAdVTkJMT0NLAAAAAAAAAAABAAAAAAAAAAAABAAAABB1cGRhdGVWb3Rlc0NvdW50CQAAZAAAAAIJAAGQAAAAAQUAAAALdXBkYXRlVm90ZXMDCQAAAAAAAAIFAAAABmFjdGlvbgUAAAAGVVBEQVRFAAAAAAAAAAABAAAAAAAAAAAABAAAAAtyZXNldFJlc3VsdAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAASQmxvY2tFeHBpcmVWb3RlS2V5AAAAAAAAAAAACQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAABdCbG9ja0V4cGlyZVByb3ZpZGluZ0tleQAAAAAAAAAAAAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAFWdldEFkbWluVm90ZUFjdGlvbktleQAAAAEJAAGRAAAAAgUAAAAYYWRtaW5zTGlzdFdpdGhvdXRBY2NvdW50AAAAAAAAAAAAAgAAAAAJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABVnZXRBZG1pblZvdGVBY3Rpb25LZXkAAAABCQABkQAAAAIFAAAAGGFkbWluc0xpc3RXaXRob3V0QWNjb3VudAAAAAAAAAAAAQIAAAAACQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAVZ2V0QWRtaW5Wb3RlQWN0aW9uS2V5AAAAAQkAAZEAAAACBQAAABhhZG1pbnNMaXN0V2l0aG91dEFjY291bnQAAAAAAAAAAAICAAAAAAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAFWdldEFkbWluVm90ZUFjdGlvbktleQAAAAEJAAGRAAAAAgUAAAAYYWRtaW5zTGlzdFdpdGhvdXRBY2NvdW50AAAAAAAAAAADAgAAAAAFAAAAA25pbAMDCQAAZwAAAAIFAAAADmJsb2NrVm90ZUNvdW50BQAAABNiZnRDb2VmZmljaWVudEFkbWluBgkAAGcAAAACBQAAABB1bmJsb2NrVm90ZUNvdW50BQAAABNiZnRDb2VmZmljaWVudEFkbWluCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAABFJc1ByaWNlUGVuZGluZ0tleQcJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAADElzQmxvY2tlZEtleQMJAABnAAAAAgUAAAAOYmxvY2tWb3RlQ291bnQFAAAAE2JmdENvZWZmaWNpZW50QWRtaW4GBwUAAAALcmVzZXRSZXN1bHQDCQAAZgAAAAIFAAAAEHVwZGF0ZVZvdGVzQ291bnQFAAAAE2JmdENvZWZmaWNpZW50QWRtaW4JAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAFFNjcmlwdFVwZGF0ZUJsb2NrS2V5AwkAAGYAAAACBQAAABB1cGRhdGVWb3Rlc0NvdW50BQAAABNiZnRDb2VmZmljaWVudEFkbWluCQAAZAAAAAIFAAAABmhlaWdodAUAAAAUc2NyaXB0VXBkYXRlSW50ZXJ2YWwFAAAAEXNjcmlwdFVwZGF0ZUJsb2NrBQAAAAtyZXNldFJlc3VsdAkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAASQmxvY2tFeHBpcmVWb3RlS2V5AwkAAGYAAAACBQAAAAZoZWlnaHQFAAAAD2Jsb2NrRXhwaXJlVm90ZQkAAGQAAAACBQAAAAZoZWlnaHQFAAAADHZvdGVJbnRlcnZhbAUAAAAPYmxvY2tFeHBpcmVWb3RlCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAVZ2V0QWRtaW5Wb3RlQWN0aW9uS2V5AAAAAQUAAAAHYWNjb3VudAUAAAAGYWN0aW9uBQAAAANuaWwAAAAAwuWGFQ==", "chainId": 87, "height": 1784694, "spentComplexity": 0 } View: original | compacted Prev: 2CnYtxPqng4vNmoKR4rg5rUvp5QAuY3Nm467ebYV9eWN Next: CYU1g5oWVMW3vL3134EWtUFosRFHQRjPUi9s5N2ga1x2 Diff:
Old | New | Differences | |
---|---|---|---|
56 | 56 | } | |
57 | 57 | ||
58 | 58 | ||
59 | - | func j (k) = { | |
60 | - | let c = k | |
61 | - | if ($isInstanceOf(c, "Int")) | |
62 | - | then { | |
63 | - | let d = c | |
64 | - | true | |
65 | - | } | |
66 | - | else false | |
59 | + | func j (k,l) = { | |
60 | + | let m = split(k, l) | |
61 | + | if ((take(m[1], 1) == ",")) | |
62 | + | then (m[0] + drop(m[1], 1)) | |
63 | + | else (dropRight(m[0], 1) + m[1]) | |
67 | 64 | } | |
68 | 65 | ||
69 | 66 | ||
70 | - | func l (m,n) = { | |
71 | - | let o = split(m, n) | |
72 | - | if ((take(o[1], 1) == ",")) | |
73 | - | then (o[0] + drop(o[1], 1)) | |
74 | - | else (dropRight(o[0], 1) + o[1]) | |
75 | - | } | |
67 | + | func n (o) = split(o, ",") | |
76 | 68 | ||
77 | 69 | ||
78 | - | func p (q) = split(q, ",") | |
70 | + | let p = "block" | |
71 | + | ||
72 | + | let q = "unblock" | |
73 | + | ||
74 | + | let r = "update" | |
75 | + | ||
76 | + | let s = "oracles" | |
77 | + | ||
78 | + | let t = "admins" | |
79 | + | ||
80 | + | let u = "vote_interval" | |
81 | + | ||
82 | + | let v = "coefficient_oracle" | |
83 | + | ||
84 | + | let w = "coefficient_admin" | |
85 | + | ||
86 | + | let x = "script_update_interval" | |
87 | + | ||
88 | + | let y = "providing_interval" | |
89 | + | ||
90 | + | let z = "price" | |
91 | + | ||
92 | + | let A = "price_offset" | |
93 | + | ||
94 | + | let B = "is_pending_price" | |
95 | + | ||
96 | + | let C = "is_blocked" | |
97 | + | ||
98 | + | let D = "oracle_is_provide_" | |
99 | + | ||
100 | + | let E = "oracle_price_provide_" | |
101 | + | ||
102 | + | let F = "admin_vote_" | |
103 | + | ||
104 | + | let G = "action" | |
105 | + | ||
106 | + | let H = "providing_expire_block" | |
107 | + | ||
108 | + | let I = "black_swarm_price" | |
109 | + | ||
110 | + | let J = "vote_expire_block" | |
111 | + | ||
112 | + | let K = "script_update_block" | |
113 | + | ||
114 | + | let L = "price_index" | |
115 | + | ||
116 | + | func M (N) = (D + N) | |
79 | 117 | ||
80 | 118 | ||
81 | - | let r = "block" | |
82 | - | ||
83 | - | let s = "unblock" | |
84 | - | ||
85 | - | let t = "update" | |
86 | - | ||
87 | - | let u = "oracles" | |
88 | - | ||
89 | - | let v = "admins" | |
90 | - | ||
91 | - | let w = "vote_interval" | |
92 | - | ||
93 | - | let x = "coefficient_oracle" | |
94 | - | ||
95 | - | let y = "coefficient_admin" | |
96 | - | ||
97 | - | let z = "script_update_interval" | |
98 | - | ||
99 | - | let A = "providing_interval" | |
100 | - | ||
101 | - | let B = "price" | |
102 | - | ||
103 | - | let C = "price_offset" | |
104 | - | ||
105 | - | let D = "is_pending_price" | |
106 | - | ||
107 | - | let E = "is_blocked" | |
108 | - | ||
109 | - | let F = "oracle_is_provide_" | |
110 | - | ||
111 | - | let G = "oracle_price_provide_" | |
112 | - | ||
113 | - | let H = "admin_vote_" | |
114 | - | ||
115 | - | let I = "action" | |
116 | - | ||
117 | - | let J = "providing_expire_block" | |
118 | - | ||
119 | - | let K = "black_swarm_price" | |
120 | - | ||
121 | - | let L = "vote_expire_block" | |
122 | - | ||
123 | - | let M = "script_update_block" | |
124 | - | ||
125 | - | let N = "price_index" | |
126 | - | ||
127 | - | func O (P) = (F + P) | |
119 | + | func O (N) = (E + N) | |
128 | 120 | ||
129 | 121 | ||
130 | - | func | |
122 | + | func P (N) = (F + N) | |
131 | 123 | ||
132 | 124 | ||
133 | - | func | |
125 | + | func Q (N) = ((P(N) + "_") + G) | |
134 | 126 | ||
135 | 127 | ||
136 | - | func | |
128 | + | func R (S) = ((I + "_") + toString(S)) | |
137 | 129 | ||
138 | 130 | ||
139 | - | func T ( | |
131 | + | func T (S) = ((z + "_") + toString(S)) | |
140 | 132 | ||
141 | 133 | ||
142 | - | func | |
134 | + | func U (V) = ((L + "_") + toString(V)) | |
143 | 135 | ||
144 | 136 | ||
145 | - | func W (X) = ((N + "_") + toString(X)) | |
137 | + | let W = a(z) | |
138 | + | ||
139 | + | let X = a(L) | |
140 | + | ||
141 | + | let Y = a(y) | |
142 | + | ||
143 | + | let Z = a(H) | |
144 | + | ||
145 | + | let aa = a(J) | |
146 | + | ||
147 | + | let ab = a(K) | |
148 | + | ||
149 | + | let ac = a(x) | |
150 | + | ||
151 | + | let ad = f(B) | |
152 | + | ||
153 | + | let ae = f(C) | |
154 | + | ||
155 | + | let af = a(v) | |
156 | + | ||
157 | + | let ag = a(w) | |
158 | + | ||
159 | + | let ah = a(A) | |
160 | + | ||
161 | + | let ai = a(u) | |
162 | + | ||
163 | + | let aj = e(s) | |
164 | + | ||
165 | + | let ak = e(t) | |
166 | + | ||
167 | + | let al = n(aj) | |
168 | + | ||
169 | + | let am = n(ak) | |
170 | + | ||
171 | + | func an (N) = e(Q(N)) | |
146 | 172 | ||
147 | 173 | ||
148 | - | let Y = a(B) | |
149 | - | ||
150 | - | let Z = a(N) | |
151 | - | ||
152 | - | let aa = a(A) | |
153 | - | ||
154 | - | let ab = a(J) | |
155 | - | ||
156 | - | let ac = a(L) | |
157 | - | ||
158 | - | let ad = a(M) | |
159 | - | ||
160 | - | let ae = a(z) | |
161 | - | ||
162 | - | let af = f(D) | |
163 | - | ||
164 | - | let ag = f(E) | |
165 | - | ||
166 | - | let ah = a(x) | |
167 | - | ||
168 | - | let ai = a(y) | |
169 | - | ||
170 | - | let aj = a(C) | |
171 | - | ||
172 | - | let ak = a(w) | |
173 | - | ||
174 | - | let al = e(u) | |
175 | - | ||
176 | - | let am = e(v) | |
177 | - | ||
178 | - | let an = p(al) | |
179 | - | ||
180 | - | let ao = p(am) | |
181 | - | ||
182 | - | func ap (P) = e(S(P)) | |
174 | + | func ao (N) = f(M(N)) | |
183 | 175 | ||
184 | 176 | ||
185 | - | func aq (P) = f(O(P)) | |
186 | - | ||
187 | - | ||
188 | - | func ar (P) = if (aq(P)) | |
177 | + | func ap (N) = if (ao(N)) | |
189 | 178 | then 1 | |
190 | 179 | else 0 | |
191 | 180 | ||
192 | 181 | ||
193 | - | func | |
182 | + | func aq (N) = a(O(N)) | |
194 | 183 | ||
195 | 184 | ||
196 | - | func at (h) = { | |
197 | - | let c = indexOf(al, h) | |
198 | - | if ($isInstanceOf(c, "Int")) | |
199 | - | then true | |
200 | - | else false | |
201 | - | } | |
185 | + | func ar (h) = isDefined(indexOf(aj, h)) | |
202 | 186 | ||
203 | 187 | ||
204 | - | func au (h) = { | |
205 | - | let c = indexOf(am, h) | |
206 | - | if ($isInstanceOf(c, "Int")) | |
207 | - | then true | |
208 | - | else false | |
209 | - | } | |
188 | + | func as (h) = isDefined(indexOf(ak, h)) | |
210 | 189 | ||
211 | 190 | ||
212 | - | func | |
191 | + | func at (au,h) = (au + (aq(h) * ap(h))) | |
213 | 192 | ||
214 | 193 | ||
215 | - | func | |
194 | + | func av (aw,h,ax) = h :: aw | |
216 | 195 | ||
217 | 196 | ||
218 | - | func | |
197 | + | func ay (aw,h) = av(aw, h, p) | |
219 | 198 | ||
220 | 199 | ||
221 | - | func | |
200 | + | func az (aw,h) = av(aw, h, q) | |
222 | 201 | ||
223 | 202 | ||
224 | - | func | |
203 | + | func aA (aw,h) = av(aw, h, r) | |
225 | 204 | ||
226 | 205 | ||
227 | - | @Callable( | |
228 | - | func setCurrentPrice ( | |
229 | - | let | |
230 | - | let | |
231 | - | let | |
206 | + | @Callable(aB) | |
207 | + | func setCurrentPrice (aC) = { | |
208 | + | let aD = toString(aB.caller) | |
209 | + | let aE = [ao(al[0]), ao(al[1]), ao(al[2]), ao(al[3]), ao(al[4])] | |
210 | + | let aF = ((((((if (aE[0]) | |
232 | 211 | then 1 | |
233 | - | else 0) + (if ( | |
212 | + | else 0) + (if (aE[1]) | |
234 | 213 | then 1 | |
235 | - | else 0)) + (if ( | |
214 | + | else 0)) + (if (aE[2]) | |
236 | 215 | then 1 | |
237 | - | else 0)) + (if ( | |
216 | + | else 0)) + (if (aE[3]) | |
238 | 217 | then 1 | |
239 | - | else 0)) + (if ( | |
218 | + | else 0)) + (if (aE[4]) | |
240 | 219 | then 1 | |
241 | 220 | else 0)) + 1) | |
242 | - | if ( | |
221 | + | if (ae) | |
243 | 222 | then throw("contract is blocked") | |
244 | - | else if (!( | |
223 | + | else if (!(ar(aD))) | |
245 | 224 | then throw("permission denied") | |
246 | - | else if (if (( | |
247 | - | then | |
225 | + | else if (if ((Z >= height)) | |
226 | + | then ao(aD) | |
248 | 227 | else false) | |
249 | 228 | then throw("price is already provided") | |
250 | - | else if (if ((height > | |
251 | - | then | |
229 | + | else if (if ((height > Z)) | |
230 | + | then ad | |
252 | 231 | else false) | |
253 | 232 | then throw("use finalizeCurrentPrice") | |
254 | - | else WriteSet([DataEntry( | |
233 | + | else WriteSet([DataEntry(M(al[0]), if ((height > Z)) | |
255 | 234 | then false | |
256 | - | else | |
235 | + | else aE[0]), DataEntry(M(al[1]), if ((height > Z)) | |
257 | 236 | then false | |
258 | - | else | |
237 | + | else aE[1]), DataEntry(M(al[2]), if ((height > Z)) | |
259 | 238 | then false | |
260 | - | else | |
239 | + | else aE[2]), DataEntry(M(al[3]), if ((height > Z)) | |
261 | 240 | then false | |
262 | - | else | |
241 | + | else aE[3]), DataEntry(M(al[4]), if ((height > Z)) | |
263 | 242 | then false | |
264 | - | else | |
265 | - | then (height + | |
266 | - | else | |
267 | - | then ( | |
243 | + | else aE[4]), DataEntry(M(aD), true), DataEntry(O(aD), aC), DataEntry(H, if ((height > Z)) | |
244 | + | then (height + Y) | |
245 | + | else Z), DataEntry(B, if (if ((Z >= height)) | |
246 | + | then (aF >= af) | |
268 | 247 | else false) | |
269 | 248 | then true | |
270 | - | else | |
249 | + | else ad)]) | |
271 | 250 | } | |
272 | 251 | ||
273 | 252 | ||
274 | 253 | ||
275 | - | @Callable( | |
276 | - | func | |
277 | - | let | |
278 | - | let | |
254 | + | @Callable(aB) | |
255 | + | func finalizeCurrentPrice () = { | |
256 | + | let aE = [ao(al[0]), ao(al[1]), ao(al[2]), ao(al[3]), ao(al[4])] | |
257 | + | let aF = (((((if (aE[0]) | |
279 | 258 | then 1 | |
280 | - | else 0) + (if ( | |
259 | + | else 0) + (if (aE[1]) | |
281 | 260 | then 1 | |
282 | - | else 0)) + (if ( | |
261 | + | else 0)) + (if (aE[2]) | |
283 | 262 | then 1 | |
284 | - | else 0)) + (if ( | |
263 | + | else 0)) + (if (aE[3]) | |
285 | 264 | then 1 | |
286 | - | else 0)) + (if ( | |
265 | + | else 0)) + (if (aE[4]) | |
287 | 266 | then 1 | |
288 | 267 | else 0)) | |
289 | - | let | |
268 | + | let aG = (((((aq(al[0]) * (if (aE[0]) | |
290 | 269 | then 1 | |
291 | - | else 0)) + ( | |
270 | + | else 0)) + (aq(al[1]) * (if (aE[1]) | |
292 | 271 | then 1 | |
293 | - | else 0))) + ( | |
272 | + | else 0))) + (aq(al[2]) * (if (aE[2]) | |
294 | 273 | then 1 | |
295 | - | else 0))) + ( | |
274 | + | else 0))) + (aq(al[3]) * (if (aE[3]) | |
296 | 275 | then 1 | |
297 | - | else 0))) + ( | |
276 | + | else 0))) + (aq(al[4]) * (if (aE[4]) | |
298 | 277 | then 1 | |
299 | 278 | else 0))) | |
300 | - | let | |
301 | - | if ( | |
279 | + | let aC = (aG / aF) | |
280 | + | if (ae) | |
302 | 281 | then throw("contract is blocked") | |
303 | - | else if (if (!( | |
282 | + | else if (if (!(ad)) | |
304 | 283 | then true | |
305 | - | else ( | |
284 | + | else (Z >= height)) | |
306 | 285 | then throw("wait for the end of the price providing") | |
307 | - | else if (( | |
308 | - | then throw(" | |
309 | - | else if (if (( | |
286 | + | else if ((af > aF)) | |
287 | + | then throw("3/5 oracles need to set a price") | |
288 | + | else if (if ((aC >= (W + ((W * ah) / 100)))) | |
310 | 289 | then true | |
311 | - | else (( | |
312 | - | then WriteSet([DataEntry( | |
290 | + | else ((W - ((W * ah) / 100)) >= aC)) | |
291 | + | then WriteSet([DataEntry(C, true), DataEntry(R(height), aC)]) | |
313 | 292 | else { | |
314 | - | let | |
315 | - | WriteSet([DataEntry( | |
293 | + | let aH = (X + 1) | |
294 | + | WriteSet([DataEntry(z, aC), DataEntry(T(height), aC), DataEntry(B, false), DataEntry(L, aH), DataEntry(U(aH), height)]) | |
316 | 295 | } | |
317 | 296 | } | |
318 | 297 | ||
319 | 298 | ||
320 | 299 | ||
321 | - | @Callable( | |
322 | - | func vote ( | |
323 | - | let | |
324 | - | let | |
325 | - | let | |
326 | - | let | |
327 | - | let | |
328 | - | let | |
329 | - | let | |
330 | - | if (( | |
331 | - | then | |
300 | + | @Callable(aB) | |
301 | + | func vote (ax) = { | |
302 | + | let aD = toString(aB.caller) | |
303 | + | let aI = n(j(ak, aD)) | |
304 | + | let aJ = an(aD) | |
305 | + | let aK = { | |
306 | + | let aL = aI | |
307 | + | let aM = size(aL) | |
308 | + | let aN = nil | |
309 | + | if ((aM == 0)) | |
310 | + | then aN | |
332 | 311 | else { | |
333 | - | let | |
334 | - | if (( | |
335 | - | then | |
312 | + | let aO = ay(aN, aL[0]) | |
313 | + | if ((aM == 1)) | |
314 | + | then aO | |
336 | 315 | else { | |
337 | - | let | |
338 | - | if (( | |
339 | - | then | |
316 | + | let aP = ay(aO, aL[1]) | |
317 | + | if ((aM == 2)) | |
318 | + | then aP | |
340 | 319 | else { | |
341 | - | let | |
342 | - | if (( | |
343 | - | then | |
320 | + | let aQ = ay(aP, aL[2]) | |
321 | + | if ((aM == 3)) | |
322 | + | then aQ | |
344 | 323 | else { | |
345 | - | let | |
346 | - | if (( | |
347 | - | then | |
324 | + | let aR = ay(aQ, aL[3]) | |
325 | + | if ((aM == 4)) | |
326 | + | then aR | |
348 | 327 | else { | |
349 | - | let | |
350 | - | if (( | |
351 | - | then | |
328 | + | let aS = ay(aR, aL[4]) | |
329 | + | if ((aM == 5)) | |
330 | + | then aS | |
352 | 331 | else { | |
353 | - | let | |
332 | + | let aT = ay(aS, aL[5]) | |
354 | 333 | throw("List size exceed 5") | |
355 | 334 | } | |
356 | 335 | } | |
359 | 338 | } | |
360 | 339 | } | |
361 | 340 | } | |
362 | - | let | |
363 | - | let | |
364 | - | let | |
365 | - | let | |
366 | - | if (( | |
367 | - | then | |
341 | + | let aU = { | |
342 | + | let aV = aI | |
343 | + | let aW = size(aV) | |
344 | + | let aX = nil | |
345 | + | if ((aW == 0)) | |
346 | + | then aX | |
368 | 347 | else { | |
369 | - | let | |
370 | - | if (( | |
371 | - | then | |
348 | + | let aY = az(aX, aV[0]) | |
349 | + | if ((aW == 1)) | |
350 | + | then aY | |
372 | 351 | else { | |
373 | - | let | |
374 | - | if (( | |
375 | - | then | |
352 | + | let aZ = az(aY, aV[1]) | |
353 | + | if ((aW == 2)) | |
354 | + | then aZ | |
376 | 355 | else { | |
377 | - | let | |
378 | - | if (( | |
379 | - | then | |
356 | + | let ba = az(aZ, aV[2]) | |
357 | + | if ((aW == 3)) | |
358 | + | then ba | |
380 | 359 | else { | |
381 | - | let | |
382 | - | if (( | |
383 | - | then | |
360 | + | let bb = az(ba, aV[3]) | |
361 | + | if ((aW == 4)) | |
362 | + | then bb | |
384 | 363 | else { | |
385 | - | let | |
386 | - | if (( | |
387 | - | then | |
364 | + | let bc = az(bb, aV[4]) | |
365 | + | if ((aW == 5)) | |
366 | + | then bc | |
388 | 367 | else { | |
389 | - | let | |
368 | + | let bd = az(bc, aV[5]) | |
390 | 369 | throw("List size exceed 5") | |
391 | 370 | } | |
392 | 371 | } | |
395 | 374 | } | |
396 | 375 | } | |
397 | 376 | } | |
398 | - | let | |
399 | - | let | |
400 | - | let | |
401 | - | let | |
402 | - | if (( | |
403 | - | then | |
377 | + | let be = { | |
378 | + | let bf = aI | |
379 | + | let bg = size(bf) | |
380 | + | let bh = nil | |
381 | + | if ((bg == 0)) | |
382 | + | then bh | |
404 | 383 | else { | |
405 | - | let | |
406 | - | if (( | |
407 | - | then | |
384 | + | let bi = aA(bh, bf[0]) | |
385 | + | if ((bg == 1)) | |
386 | + | then bi | |
408 | 387 | else { | |
409 | - | let | |
410 | - | if (( | |
411 | - | then | |
388 | + | let bj = aA(bi, bf[1]) | |
389 | + | if ((bg == 2)) | |
390 | + | then bj | |
412 | 391 | else { | |
413 | - | let | |
414 | - | if (( | |
415 | - | then | |
392 | + | let bk = aA(bj, bf[2]) | |
393 | + | if ((bg == 3)) | |
394 | + | then bk | |
416 | 395 | else { | |
417 | - | let | |
418 | - | if (( | |
419 | - | then | |
396 | + | let bl = aA(bk, bf[3]) | |
397 | + | if ((bg == 4)) | |
398 | + | then bl | |
420 | 399 | else { | |
421 | - | let | |
422 | - | if (( | |
423 | - | then | |
400 | + | let bm = aA(bl, bf[4]) | |
401 | + | if ((bg == 5)) | |
402 | + | then bm | |
424 | 403 | else { | |
425 | - | let | |
404 | + | let bn = aA(bm, bf[5]) | |
426 | 405 | throw("List size exceed 5") | |
427 | 406 | } | |
428 | 407 | } | |
431 | 410 | } | |
432 | 411 | } | |
433 | 412 | } | |
434 | - | let | |
413 | + | let bo = (size(aK) + (if ((ax == p)) | |
435 | 414 | then 1 | |
436 | 415 | else 0)) | |
437 | - | let | |
416 | + | let bp = (size(aU) + (if ((ax == q)) | |
438 | 417 | then 1 | |
439 | 418 | else 0)) | |
440 | - | let | |
419 | + | let bq = (size(be) + (if ((ax == r)) | |
441 | 420 | then 1 | |
442 | 421 | else 0)) | |
443 | - | if (if ((bq >= ai)) | |
422 | + | let br = [DataEntry(J, 0), DataEntry(H, 0), DataEntry(Q(aI[0]), ""), DataEntry(Q(aI[1]), ""), DataEntry(Q(aI[2]), ""), DataEntry(Q(aI[3]), "")] | |
423 | + | if (if ((bo >= ag)) | |
444 | 424 | then true | |
445 | - | else ( | |
446 | - | then WriteSet([DataEntry( | |
425 | + | else (bp >= ag)) | |
426 | + | then WriteSet([DataEntry(B, false), DataEntry(C, if ((bo >= ag)) | |
447 | 427 | then true | |
448 | - | else false), DataEntry(L, 0), DataEntry(J, 0), DataEntry(D, false), DataEntry(S(aK[0]), ""), DataEntry(S(aK[1]), ""), DataEntry(S(aK[2]), ""), DataEntry(S(aK[3]), "")]) | |
449 | - | else if ((bs > ai)) | |
450 | - | then WriteSet([DataEntry(L, 0), DataEntry(J, 0), DataEntry(M, (height + ae)), DataEntry(S(aK[0]), ""), DataEntry(S(aK[1]), ""), DataEntry(S(aK[2]), ""), DataEntry(S(aK[3]), "")]) | |
451 | - | else if ((height > ac)) | |
452 | - | then WriteSet([DataEntry(L, (height + ak)), DataEntry(S(aF), az), DataEntry(S(aK[0]), ""), DataEntry(S(aK[1]), ""), DataEntry(S(aK[2]), ""), DataEntry(S(aK[3]), "")]) | |
453 | - | else WriteSet([DataEntry(S(aF), az)]) | |
428 | + | else false)] :: br) | |
429 | + | else if ((bq > ag)) | |
430 | + | then WriteSet(DataEntry(K, if ((bq > ag)) | |
431 | + | then (height + ac) | |
432 | + | else ab) :: br) | |
433 | + | else WriteSet([DataEntry(J, if ((height > aa)) | |
434 | + | then (height + ai) | |
435 | + | else aa), DataEntry(Q(aD), ax)]) | |
454 | 436 | } | |
455 | 437 | ||
456 | 438 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 3 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | func a (b) = { | |
5 | 5 | let c = getInteger(this, b) | |
6 | 6 | if ($isInstanceOf(c, "Int")) | |
7 | 7 | then { | |
8 | 8 | let d = c | |
9 | 9 | d | |
10 | 10 | } | |
11 | 11 | else 0 | |
12 | 12 | } | |
13 | 13 | ||
14 | 14 | ||
15 | 15 | func e (b) = { | |
16 | 16 | let c = getString(this, b) | |
17 | 17 | if ($isInstanceOf(c, "String")) | |
18 | 18 | then { | |
19 | 19 | let d = c | |
20 | 20 | d | |
21 | 21 | } | |
22 | 22 | else "" | |
23 | 23 | } | |
24 | 24 | ||
25 | 25 | ||
26 | 26 | func f (b) = { | |
27 | 27 | let c = getBoolean(this, b) | |
28 | 28 | if ($isInstanceOf(c, "Boolean")) | |
29 | 29 | then { | |
30 | 30 | let d = c | |
31 | 31 | d | |
32 | 32 | } | |
33 | 33 | else false | |
34 | 34 | } | |
35 | 35 | ||
36 | 36 | ||
37 | 37 | func g (h,b) = { | |
38 | 38 | let c = getInteger(h, b) | |
39 | 39 | if ($isInstanceOf(c, "Int")) | |
40 | 40 | then { | |
41 | 41 | let d = c | |
42 | 42 | d | |
43 | 43 | } | |
44 | 44 | else 0 | |
45 | 45 | } | |
46 | 46 | ||
47 | 47 | ||
48 | 48 | func i (h,b) = { | |
49 | 49 | let c = getString(h, b) | |
50 | 50 | if ($isInstanceOf(c, "String")) | |
51 | 51 | then { | |
52 | 52 | let d = c | |
53 | 53 | d | |
54 | 54 | } | |
55 | 55 | else "" | |
56 | 56 | } | |
57 | 57 | ||
58 | 58 | ||
59 | - | func j (k) = { | |
60 | - | let c = k | |
61 | - | if ($isInstanceOf(c, "Int")) | |
62 | - | then { | |
63 | - | let d = c | |
64 | - | true | |
65 | - | } | |
66 | - | else false | |
59 | + | func j (k,l) = { | |
60 | + | let m = split(k, l) | |
61 | + | if ((take(m[1], 1) == ",")) | |
62 | + | then (m[0] + drop(m[1], 1)) | |
63 | + | else (dropRight(m[0], 1) + m[1]) | |
67 | 64 | } | |
68 | 65 | ||
69 | 66 | ||
70 | - | func l (m,n) = { | |
71 | - | let o = split(m, n) | |
72 | - | if ((take(o[1], 1) == ",")) | |
73 | - | then (o[0] + drop(o[1], 1)) | |
74 | - | else (dropRight(o[0], 1) + o[1]) | |
75 | - | } | |
67 | + | func n (o) = split(o, ",") | |
76 | 68 | ||
77 | 69 | ||
78 | - | func p (q) = split(q, ",") | |
70 | + | let p = "block" | |
71 | + | ||
72 | + | let q = "unblock" | |
73 | + | ||
74 | + | let r = "update" | |
75 | + | ||
76 | + | let s = "oracles" | |
77 | + | ||
78 | + | let t = "admins" | |
79 | + | ||
80 | + | let u = "vote_interval" | |
81 | + | ||
82 | + | let v = "coefficient_oracle" | |
83 | + | ||
84 | + | let w = "coefficient_admin" | |
85 | + | ||
86 | + | let x = "script_update_interval" | |
87 | + | ||
88 | + | let y = "providing_interval" | |
89 | + | ||
90 | + | let z = "price" | |
91 | + | ||
92 | + | let A = "price_offset" | |
93 | + | ||
94 | + | let B = "is_pending_price" | |
95 | + | ||
96 | + | let C = "is_blocked" | |
97 | + | ||
98 | + | let D = "oracle_is_provide_" | |
99 | + | ||
100 | + | let E = "oracle_price_provide_" | |
101 | + | ||
102 | + | let F = "admin_vote_" | |
103 | + | ||
104 | + | let G = "action" | |
105 | + | ||
106 | + | let H = "providing_expire_block" | |
107 | + | ||
108 | + | let I = "black_swarm_price" | |
109 | + | ||
110 | + | let J = "vote_expire_block" | |
111 | + | ||
112 | + | let K = "script_update_block" | |
113 | + | ||
114 | + | let L = "price_index" | |
115 | + | ||
116 | + | func M (N) = (D + N) | |
79 | 117 | ||
80 | 118 | ||
81 | - | let r = "block" | |
82 | - | ||
83 | - | let s = "unblock" | |
84 | - | ||
85 | - | let t = "update" | |
86 | - | ||
87 | - | let u = "oracles" | |
88 | - | ||
89 | - | let v = "admins" | |
90 | - | ||
91 | - | let w = "vote_interval" | |
92 | - | ||
93 | - | let x = "coefficient_oracle" | |
94 | - | ||
95 | - | let y = "coefficient_admin" | |
96 | - | ||
97 | - | let z = "script_update_interval" | |
98 | - | ||
99 | - | let A = "providing_interval" | |
100 | - | ||
101 | - | let B = "price" | |
102 | - | ||
103 | - | let C = "price_offset" | |
104 | - | ||
105 | - | let D = "is_pending_price" | |
106 | - | ||
107 | - | let E = "is_blocked" | |
108 | - | ||
109 | - | let F = "oracle_is_provide_" | |
110 | - | ||
111 | - | let G = "oracle_price_provide_" | |
112 | - | ||
113 | - | let H = "admin_vote_" | |
114 | - | ||
115 | - | let I = "action" | |
116 | - | ||
117 | - | let J = "providing_expire_block" | |
118 | - | ||
119 | - | let K = "black_swarm_price" | |
120 | - | ||
121 | - | let L = "vote_expire_block" | |
122 | - | ||
123 | - | let M = "script_update_block" | |
124 | - | ||
125 | - | let N = "price_index" | |
126 | - | ||
127 | - | func O (P) = (F + P) | |
119 | + | func O (N) = (E + N) | |
128 | 120 | ||
129 | 121 | ||
130 | - | func | |
122 | + | func P (N) = (F + N) | |
131 | 123 | ||
132 | 124 | ||
133 | - | func | |
125 | + | func Q (N) = ((P(N) + "_") + G) | |
134 | 126 | ||
135 | 127 | ||
136 | - | func | |
128 | + | func R (S) = ((I + "_") + toString(S)) | |
137 | 129 | ||
138 | 130 | ||
139 | - | func T ( | |
131 | + | func T (S) = ((z + "_") + toString(S)) | |
140 | 132 | ||
141 | 133 | ||
142 | - | func | |
134 | + | func U (V) = ((L + "_") + toString(V)) | |
143 | 135 | ||
144 | 136 | ||
145 | - | func W (X) = ((N + "_") + toString(X)) | |
137 | + | let W = a(z) | |
138 | + | ||
139 | + | let X = a(L) | |
140 | + | ||
141 | + | let Y = a(y) | |
142 | + | ||
143 | + | let Z = a(H) | |
144 | + | ||
145 | + | let aa = a(J) | |
146 | + | ||
147 | + | let ab = a(K) | |
148 | + | ||
149 | + | let ac = a(x) | |
150 | + | ||
151 | + | let ad = f(B) | |
152 | + | ||
153 | + | let ae = f(C) | |
154 | + | ||
155 | + | let af = a(v) | |
156 | + | ||
157 | + | let ag = a(w) | |
158 | + | ||
159 | + | let ah = a(A) | |
160 | + | ||
161 | + | let ai = a(u) | |
162 | + | ||
163 | + | let aj = e(s) | |
164 | + | ||
165 | + | let ak = e(t) | |
166 | + | ||
167 | + | let al = n(aj) | |
168 | + | ||
169 | + | let am = n(ak) | |
170 | + | ||
171 | + | func an (N) = e(Q(N)) | |
146 | 172 | ||
147 | 173 | ||
148 | - | let Y = a(B) | |
149 | - | ||
150 | - | let Z = a(N) | |
151 | - | ||
152 | - | let aa = a(A) | |
153 | - | ||
154 | - | let ab = a(J) | |
155 | - | ||
156 | - | let ac = a(L) | |
157 | - | ||
158 | - | let ad = a(M) | |
159 | - | ||
160 | - | let ae = a(z) | |
161 | - | ||
162 | - | let af = f(D) | |
163 | - | ||
164 | - | let ag = f(E) | |
165 | - | ||
166 | - | let ah = a(x) | |
167 | - | ||
168 | - | let ai = a(y) | |
169 | - | ||
170 | - | let aj = a(C) | |
171 | - | ||
172 | - | let ak = a(w) | |
173 | - | ||
174 | - | let al = e(u) | |
175 | - | ||
176 | - | let am = e(v) | |
177 | - | ||
178 | - | let an = p(al) | |
179 | - | ||
180 | - | let ao = p(am) | |
181 | - | ||
182 | - | func ap (P) = e(S(P)) | |
174 | + | func ao (N) = f(M(N)) | |
183 | 175 | ||
184 | 176 | ||
185 | - | func aq (P) = f(O(P)) | |
186 | - | ||
187 | - | ||
188 | - | func ar (P) = if (aq(P)) | |
177 | + | func ap (N) = if (ao(N)) | |
189 | 178 | then 1 | |
190 | 179 | else 0 | |
191 | 180 | ||
192 | 181 | ||
193 | - | func | |
182 | + | func aq (N) = a(O(N)) | |
194 | 183 | ||
195 | 184 | ||
196 | - | func at (h) = { | |
197 | - | let c = indexOf(al, h) | |
198 | - | if ($isInstanceOf(c, "Int")) | |
199 | - | then true | |
200 | - | else false | |
201 | - | } | |
185 | + | func ar (h) = isDefined(indexOf(aj, h)) | |
202 | 186 | ||
203 | 187 | ||
204 | - | func au (h) = { | |
205 | - | let c = indexOf(am, h) | |
206 | - | if ($isInstanceOf(c, "Int")) | |
207 | - | then true | |
208 | - | else false | |
209 | - | } | |
188 | + | func as (h) = isDefined(indexOf(ak, h)) | |
210 | 189 | ||
211 | 190 | ||
212 | - | func | |
191 | + | func at (au,h) = (au + (aq(h) * ap(h))) | |
213 | 192 | ||
214 | 193 | ||
215 | - | func | |
194 | + | func av (aw,h,ax) = h :: aw | |
216 | 195 | ||
217 | 196 | ||
218 | - | func | |
197 | + | func ay (aw,h) = av(aw, h, p) | |
219 | 198 | ||
220 | 199 | ||
221 | - | func | |
200 | + | func az (aw,h) = av(aw, h, q) | |
222 | 201 | ||
223 | 202 | ||
224 | - | func | |
203 | + | func aA (aw,h) = av(aw, h, r) | |
225 | 204 | ||
226 | 205 | ||
227 | - | @Callable( | |
228 | - | func setCurrentPrice ( | |
229 | - | let | |
230 | - | let | |
231 | - | let | |
206 | + | @Callable(aB) | |
207 | + | func setCurrentPrice (aC) = { | |
208 | + | let aD = toString(aB.caller) | |
209 | + | let aE = [ao(al[0]), ao(al[1]), ao(al[2]), ao(al[3]), ao(al[4])] | |
210 | + | let aF = ((((((if (aE[0]) | |
232 | 211 | then 1 | |
233 | - | else 0) + (if ( | |
212 | + | else 0) + (if (aE[1]) | |
234 | 213 | then 1 | |
235 | - | else 0)) + (if ( | |
214 | + | else 0)) + (if (aE[2]) | |
236 | 215 | then 1 | |
237 | - | else 0)) + (if ( | |
216 | + | else 0)) + (if (aE[3]) | |
238 | 217 | then 1 | |
239 | - | else 0)) + (if ( | |
218 | + | else 0)) + (if (aE[4]) | |
240 | 219 | then 1 | |
241 | 220 | else 0)) + 1) | |
242 | - | if ( | |
221 | + | if (ae) | |
243 | 222 | then throw("contract is blocked") | |
244 | - | else if (!( | |
223 | + | else if (!(ar(aD))) | |
245 | 224 | then throw("permission denied") | |
246 | - | else if (if (( | |
247 | - | then | |
225 | + | else if (if ((Z >= height)) | |
226 | + | then ao(aD) | |
248 | 227 | else false) | |
249 | 228 | then throw("price is already provided") | |
250 | - | else if (if ((height > | |
251 | - | then | |
229 | + | else if (if ((height > Z)) | |
230 | + | then ad | |
252 | 231 | else false) | |
253 | 232 | then throw("use finalizeCurrentPrice") | |
254 | - | else WriteSet([DataEntry( | |
233 | + | else WriteSet([DataEntry(M(al[0]), if ((height > Z)) | |
255 | 234 | then false | |
256 | - | else | |
235 | + | else aE[0]), DataEntry(M(al[1]), if ((height > Z)) | |
257 | 236 | then false | |
258 | - | else | |
237 | + | else aE[1]), DataEntry(M(al[2]), if ((height > Z)) | |
259 | 238 | then false | |
260 | - | else | |
239 | + | else aE[2]), DataEntry(M(al[3]), if ((height > Z)) | |
261 | 240 | then false | |
262 | - | else | |
241 | + | else aE[3]), DataEntry(M(al[4]), if ((height > Z)) | |
263 | 242 | then false | |
264 | - | else | |
265 | - | then (height + | |
266 | - | else | |
267 | - | then ( | |
243 | + | else aE[4]), DataEntry(M(aD), true), DataEntry(O(aD), aC), DataEntry(H, if ((height > Z)) | |
244 | + | then (height + Y) | |
245 | + | else Z), DataEntry(B, if (if ((Z >= height)) | |
246 | + | then (aF >= af) | |
268 | 247 | else false) | |
269 | 248 | then true | |
270 | - | else | |
249 | + | else ad)]) | |
271 | 250 | } | |
272 | 251 | ||
273 | 252 | ||
274 | 253 | ||
275 | - | @Callable( | |
276 | - | func | |
277 | - | let | |
278 | - | let | |
254 | + | @Callable(aB) | |
255 | + | func finalizeCurrentPrice () = { | |
256 | + | let aE = [ao(al[0]), ao(al[1]), ao(al[2]), ao(al[3]), ao(al[4])] | |
257 | + | let aF = (((((if (aE[0]) | |
279 | 258 | then 1 | |
280 | - | else 0) + (if ( | |
259 | + | else 0) + (if (aE[1]) | |
281 | 260 | then 1 | |
282 | - | else 0)) + (if ( | |
261 | + | else 0)) + (if (aE[2]) | |
283 | 262 | then 1 | |
284 | - | else 0)) + (if ( | |
263 | + | else 0)) + (if (aE[3]) | |
285 | 264 | then 1 | |
286 | - | else 0)) + (if ( | |
265 | + | else 0)) + (if (aE[4]) | |
287 | 266 | then 1 | |
288 | 267 | else 0)) | |
289 | - | let | |
268 | + | let aG = (((((aq(al[0]) * (if (aE[0]) | |
290 | 269 | then 1 | |
291 | - | else 0)) + ( | |
270 | + | else 0)) + (aq(al[1]) * (if (aE[1]) | |
292 | 271 | then 1 | |
293 | - | else 0))) + ( | |
272 | + | else 0))) + (aq(al[2]) * (if (aE[2]) | |
294 | 273 | then 1 | |
295 | - | else 0))) + ( | |
274 | + | else 0))) + (aq(al[3]) * (if (aE[3]) | |
296 | 275 | then 1 | |
297 | - | else 0))) + ( | |
276 | + | else 0))) + (aq(al[4]) * (if (aE[4]) | |
298 | 277 | then 1 | |
299 | 278 | else 0))) | |
300 | - | let | |
301 | - | if ( | |
279 | + | let aC = (aG / aF) | |
280 | + | if (ae) | |
302 | 281 | then throw("contract is blocked") | |
303 | - | else if (if (!( | |
282 | + | else if (if (!(ad)) | |
304 | 283 | then true | |
305 | - | else ( | |
284 | + | else (Z >= height)) | |
306 | 285 | then throw("wait for the end of the price providing") | |
307 | - | else if (( | |
308 | - | then throw(" | |
309 | - | else if (if (( | |
286 | + | else if ((af > aF)) | |
287 | + | then throw("3/5 oracles need to set a price") | |
288 | + | else if (if ((aC >= (W + ((W * ah) / 100)))) | |
310 | 289 | then true | |
311 | - | else (( | |
312 | - | then WriteSet([DataEntry( | |
290 | + | else ((W - ((W * ah) / 100)) >= aC)) | |
291 | + | then WriteSet([DataEntry(C, true), DataEntry(R(height), aC)]) | |
313 | 292 | else { | |
314 | - | let | |
315 | - | WriteSet([DataEntry( | |
293 | + | let aH = (X + 1) | |
294 | + | WriteSet([DataEntry(z, aC), DataEntry(T(height), aC), DataEntry(B, false), DataEntry(L, aH), DataEntry(U(aH), height)]) | |
316 | 295 | } | |
317 | 296 | } | |
318 | 297 | ||
319 | 298 | ||
320 | 299 | ||
321 | - | @Callable( | |
322 | - | func vote ( | |
323 | - | let | |
324 | - | let | |
325 | - | let | |
326 | - | let | |
327 | - | let | |
328 | - | let | |
329 | - | let | |
330 | - | if (( | |
331 | - | then | |
300 | + | @Callable(aB) | |
301 | + | func vote (ax) = { | |
302 | + | let aD = toString(aB.caller) | |
303 | + | let aI = n(j(ak, aD)) | |
304 | + | let aJ = an(aD) | |
305 | + | let aK = { | |
306 | + | let aL = aI | |
307 | + | let aM = size(aL) | |
308 | + | let aN = nil | |
309 | + | if ((aM == 0)) | |
310 | + | then aN | |
332 | 311 | else { | |
333 | - | let | |
334 | - | if (( | |
335 | - | then | |
312 | + | let aO = ay(aN, aL[0]) | |
313 | + | if ((aM == 1)) | |
314 | + | then aO | |
336 | 315 | else { | |
337 | - | let | |
338 | - | if (( | |
339 | - | then | |
316 | + | let aP = ay(aO, aL[1]) | |
317 | + | if ((aM == 2)) | |
318 | + | then aP | |
340 | 319 | else { | |
341 | - | let | |
342 | - | if (( | |
343 | - | then | |
320 | + | let aQ = ay(aP, aL[2]) | |
321 | + | if ((aM == 3)) | |
322 | + | then aQ | |
344 | 323 | else { | |
345 | - | let | |
346 | - | if (( | |
347 | - | then | |
324 | + | let aR = ay(aQ, aL[3]) | |
325 | + | if ((aM == 4)) | |
326 | + | then aR | |
348 | 327 | else { | |
349 | - | let | |
350 | - | if (( | |
351 | - | then | |
328 | + | let aS = ay(aR, aL[4]) | |
329 | + | if ((aM == 5)) | |
330 | + | then aS | |
352 | 331 | else { | |
353 | - | let | |
332 | + | let aT = ay(aS, aL[5]) | |
354 | 333 | throw("List size exceed 5") | |
355 | 334 | } | |
356 | 335 | } | |
357 | 336 | } | |
358 | 337 | } | |
359 | 338 | } | |
360 | 339 | } | |
361 | 340 | } | |
362 | - | let | |
363 | - | let | |
364 | - | let | |
365 | - | let | |
366 | - | if (( | |
367 | - | then | |
341 | + | let aU = { | |
342 | + | let aV = aI | |
343 | + | let aW = size(aV) | |
344 | + | let aX = nil | |
345 | + | if ((aW == 0)) | |
346 | + | then aX | |
368 | 347 | else { | |
369 | - | let | |
370 | - | if (( | |
371 | - | then | |
348 | + | let aY = az(aX, aV[0]) | |
349 | + | if ((aW == 1)) | |
350 | + | then aY | |
372 | 351 | else { | |
373 | - | let | |
374 | - | if (( | |
375 | - | then | |
352 | + | let aZ = az(aY, aV[1]) | |
353 | + | if ((aW == 2)) | |
354 | + | then aZ | |
376 | 355 | else { | |
377 | - | let | |
378 | - | if (( | |
379 | - | then | |
356 | + | let ba = az(aZ, aV[2]) | |
357 | + | if ((aW == 3)) | |
358 | + | then ba | |
380 | 359 | else { | |
381 | - | let | |
382 | - | if (( | |
383 | - | then | |
360 | + | let bb = az(ba, aV[3]) | |
361 | + | if ((aW == 4)) | |
362 | + | then bb | |
384 | 363 | else { | |
385 | - | let | |
386 | - | if (( | |
387 | - | then | |
364 | + | let bc = az(bb, aV[4]) | |
365 | + | if ((aW == 5)) | |
366 | + | then bc | |
388 | 367 | else { | |
389 | - | let | |
368 | + | let bd = az(bc, aV[5]) | |
390 | 369 | throw("List size exceed 5") | |
391 | 370 | } | |
392 | 371 | } | |
393 | 372 | } | |
394 | 373 | } | |
395 | 374 | } | |
396 | 375 | } | |
397 | 376 | } | |
398 | - | let | |
399 | - | let | |
400 | - | let | |
401 | - | let | |
402 | - | if (( | |
403 | - | then | |
377 | + | let be = { | |
378 | + | let bf = aI | |
379 | + | let bg = size(bf) | |
380 | + | let bh = nil | |
381 | + | if ((bg == 0)) | |
382 | + | then bh | |
404 | 383 | else { | |
405 | - | let | |
406 | - | if (( | |
407 | - | then | |
384 | + | let bi = aA(bh, bf[0]) | |
385 | + | if ((bg == 1)) | |
386 | + | then bi | |
408 | 387 | else { | |
409 | - | let | |
410 | - | if (( | |
411 | - | then | |
388 | + | let bj = aA(bi, bf[1]) | |
389 | + | if ((bg == 2)) | |
390 | + | then bj | |
412 | 391 | else { | |
413 | - | let | |
414 | - | if (( | |
415 | - | then | |
392 | + | let bk = aA(bj, bf[2]) | |
393 | + | if ((bg == 3)) | |
394 | + | then bk | |
416 | 395 | else { | |
417 | - | let | |
418 | - | if (( | |
419 | - | then | |
396 | + | let bl = aA(bk, bf[3]) | |
397 | + | if ((bg == 4)) | |
398 | + | then bl | |
420 | 399 | else { | |
421 | - | let | |
422 | - | if (( | |
423 | - | then | |
400 | + | let bm = aA(bl, bf[4]) | |
401 | + | if ((bg == 5)) | |
402 | + | then bm | |
424 | 403 | else { | |
425 | - | let | |
404 | + | let bn = aA(bm, bf[5]) | |
426 | 405 | throw("List size exceed 5") | |
427 | 406 | } | |
428 | 407 | } | |
429 | 408 | } | |
430 | 409 | } | |
431 | 410 | } | |
432 | 411 | } | |
433 | 412 | } | |
434 | - | let | |
413 | + | let bo = (size(aK) + (if ((ax == p)) | |
435 | 414 | then 1 | |
436 | 415 | else 0)) | |
437 | - | let | |
416 | + | let bp = (size(aU) + (if ((ax == q)) | |
438 | 417 | then 1 | |
439 | 418 | else 0)) | |
440 | - | let | |
419 | + | let bq = (size(be) + (if ((ax == r)) | |
441 | 420 | then 1 | |
442 | 421 | else 0)) | |
443 | - | if (if ((bq >= ai)) | |
422 | + | let br = [DataEntry(J, 0), DataEntry(H, 0), DataEntry(Q(aI[0]), ""), DataEntry(Q(aI[1]), ""), DataEntry(Q(aI[2]), ""), DataEntry(Q(aI[3]), "")] | |
423 | + | if (if ((bo >= ag)) | |
444 | 424 | then true | |
445 | - | else ( | |
446 | - | then WriteSet([DataEntry( | |
425 | + | else (bp >= ag)) | |
426 | + | then WriteSet([DataEntry(B, false), DataEntry(C, if ((bo >= ag)) | |
447 | 427 | then true | |
448 | - | else false), DataEntry(L, 0), DataEntry(J, 0), DataEntry(D, false), DataEntry(S(aK[0]), ""), DataEntry(S(aK[1]), ""), DataEntry(S(aK[2]), ""), DataEntry(S(aK[3]), "")]) | |
449 | - | else if ((bs > ai)) | |
450 | - | then WriteSet([DataEntry(L, 0), DataEntry(J, 0), DataEntry(M, (height + ae)), DataEntry(S(aK[0]), ""), DataEntry(S(aK[1]), ""), DataEntry(S(aK[2]), ""), DataEntry(S(aK[3]), "")]) | |
451 | - | else if ((height > ac)) | |
452 | - | then WriteSet([DataEntry(L, (height + ak)), DataEntry(S(aF), az), DataEntry(S(aK[0]), ""), DataEntry(S(aK[1]), ""), DataEntry(S(aK[2]), ""), DataEntry(S(aK[3]), "")]) | |
453 | - | else WriteSet([DataEntry(S(aF), az)]) | |
428 | + | else false)] :: br) | |
429 | + | else if ((bq > ag)) | |
430 | + | then WriteSet(DataEntry(K, if ((bq > ag)) | |
431 | + | then (height + ac) | |
432 | + | else ab) :: br) | |
433 | + | else WriteSet([DataEntry(J, if ((height > aa)) | |
434 | + | then (height + ai) | |
435 | + | else aa), DataEntry(Q(aD), ax)]) | |
454 | 436 | } | |
455 | 437 | ||
456 | 438 |
github/deemru/w8io/3ef1775 161.93 ms ◑