tx · 9W9wWAkEckevY4KL6PgUUGDmoSj39rLFroJJsemok1o5 3NC9boevS259eTsMAkFAxCPorzK4Z9bpWje: -0.02000000 Waves 2023.02.01 11:25 [2430314] smart account 3NC9boevS259eTsMAkFAxCPorzK4Z9bpWje > SELF 0.00000000 Waves
{ "type": 13, "id": "9W9wWAkEckevY4KL6PgUUGDmoSj39rLFroJJsemok1o5", "fee": 2000000, "feeAssetId": null, "timestamp": 1675239978376, "version": 2, "chainId": 84, "sender": "3NC9boevS259eTsMAkFAxCPorzK4Z9bpWje", "senderPublicKey": "515tSAyMUbAb8kKjcpGDpqALGfCgcwfWmWKKkcBKTcGB", "proofs": [ "4KMXWKrGgKsYNDRhVFkAgcxAWwo8eFPFycpaQP4cuQGe1WVMW7S2WEedgh4mmDiw5dsFaRTm96jPLyPHLEJNxYJF" ], "script": "base64:AAIFAAAAAAAAACEIAhIAEgASAwoBCBIDCgEIEgMKAQESABIDCgEIEgMKAQgAAAADAAAAABREYXBwX0FkZHJlc3NfcHViX2tleQEAAAAgq4kJ/Yx/hxwE0cwMFuJmegviyQmGySeZGqn46Eb83C8AAAAAGW9yYWNsZV9jb250cm9sbGVyX2FkZHJlc3MJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEFAAAAFERhcHBfQWRkcmVzc19wdWJfa2V5AAAAAAtVU0RUQXNzZXRJRAEAAAAAAAAACAAAAAFpAQAAAA9wbGFjZW9wdGlvbkNhbGwAAAAABAAAAA1jYWxsZXJhZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAADWlmQmxhY2tsaXN0ZWQJAAQdAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAABFhZGRyX0JMQUNLTElTVEVEXwUAAAANY2FsbGVyYWRkcmVzcwQAAAAScmVhZF9vcmFjbGVfc3RhdHVzCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzAgAAAA1vcmFjbGVfc3RhdHVzBAAAABRyZWFkX09wdGlvbkNvdW50ZXJJRAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwIAAAAOMW1fY29udHJhY3RfaWQEAAAACmdldGJ0Y2RhdGEJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAHMW1fYnRjXwkAAaQAAAABBQAAABRyZWFkX09wdGlvbkNvdW50ZXJJRAQAAAAGc3dhcExpCQAEtQAAAAIFAAAACmdldGJ0Y2RhdGECAAAAAV8EAAAABXByaWNlCQABkQAAAAIFAAAABnN3YXBMaQAAAAAAAAAAAAQAAAAFYmxvY2sJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAZzd2FwTGkAAAAAAAAAAAIEAAAADWNoZWNrYmxvY2tnYXAJAABlAAAAAgUAAAAGaGVpZ2h0BQAAAAVibG9jawQAAAAST3Bpb25FeHBpcmVDb3VudGVyAAAAAAAAAAABBAAAABVPcHRpb25FeHBpcmVDb3VudGVySUQJAABkAAAAAgUAAAAUcmVhZF9PcHRpb25Db3VudGVySUQFAAAAEk9waW9uRXhwaXJlQ291bnRlcgQAAAAUUHJldmlvdXNPcHRpb25PcmRlcnMEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwIAAAATVG90YWxfT3B0aW9uX09yZGVycwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAABFUb3RhbE9wdGlvbk9yZGVycwkAAGQAAAACBQAAABRQcmV2aW91c09wdGlvbk9yZGVycwAAAAAAAAAAAQQAAAAlUHJldmlvdXNPcHRpb25PcmRlcnNpblNwZWNpZmljQ291bnRlcgQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzCQABLAAAAAICAAAAFFRvdGFsX09wdGlvbl9PcmRlcnNfCQABpAAAAAEFAAAAFHJlYWRfT3B0aW9uQ291bnRlcklEAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAAIlRvdGFsT3B0aW9uT3JkZXJzaW5TcGVjaWZpY0NvdW50ZXIJAABkAAAAAgUAAAAlUHJldmlvdXNPcHRpb25PcmRlcnNpblNwZWNpZmljQ291bnRlcgAAAAAAAAAAAQQAAAAMUHJldmlvdXNDYWxsBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMCAAAAC1RvdGFsX0NhbGxzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAACVRvdGFsQ2FsbAkAAGQAAAACBQAAAAxQcmV2aW91c0NhbGwAAAAAAAAAAAEEAAAAHVByZXZpb3VzQ2FsbGluU3BlY2lmaWNDb3VudGVyBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAMVG90YWxfQ2FsbHNfCQABpAAAAAEFAAAAFHJlYWRfT3B0aW9uQ291bnRlcklEAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAAGlRvdGFsQ2FsbGluU3BlY2lmaWNDb3VudGVyCQAAZAAAAAIFAAAAHVByZXZpb3VzQ2FsbGluU3BlY2lmaWNDb3VudGVyAAAAAAAAAAABBAAAABBQcmV2aW91c1VzZXJDYWxsBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAANY2FsbGVyYWRkcmVzcwIAAAAMX1RvdGFsX0NhbGxzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAADVRvdGFsVXNlckNhbGwJAABkAAAAAgUAAAAQUHJldmlvdXNVc2VyQ2FsbAAAAAAAAAAAAQQAAAAhUHJldmlvdXNVc2VyQ2FsbGluU3BlY2lmaWNDb3VudGVyBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgkAASwAAAACBQAAAA1jYWxsZXJhZGRyZXNzAgAAAA1fVG90YWxfQ2FsbHNfCQABpAAAAAEFAAAAFHJlYWRfT3B0aW9uQ291bnRlcklEAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAAHlRvdGFsVXNlckNhbGxpblNwZWNpZmljQ291bnRlcgkAAGQAAAACBQAAACFQcmV2aW91c1VzZXJDYWxsaW5TcGVjaWZpY0NvdW50ZXIAAAAAAAAAAAEDCQAAZgAAAAIFAAAADWNoZWNrYmxvY2tnYXAAAAAAAAAAAAIJAAACAAAAAQIAAAA1U29tZXRoaW5nIFdyb25nIHdpdGggT3JhY2xlIG9yIEhlaWdodCBpcyBub3QgbWF0Y2hlZC4DCQAAAAAAAAIFAAAAEnJlYWRfb3JhY2xlX3N0YXR1cwIAAAAFQ2xvc2UJAAACAAAAAQIAAAAxT3JhY2xlIGlzIGNsb3NlZC4gV2FpdCBVbnRpbCBPcmFjbGUgaXMgVHVybmVkIE9uLgMJAAAAAAAAAgUAAAANaWZCbGFja2xpc3RlZAIAAAADWWVzCQAAAgAAAAEJAAEsAAAAAgUAAAANY2FsbGVyYWRkcmVzcwIAAAA+IEFkZHJlc3MgaXMgQmxhY2tsaXN0ZWQuIFBsZWFzZSBjb250YWN0IEFkbWluIHRvIFdoaXRlbGlzdCBpdC4JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAFQ2FsbF8FAAAADWNhbGxlcmFkZHJlc3MCAAAAAV8JAAGkAAAAAQUAAAANVG90YWxVc2VyQ2FsbAUAAAAFcHJpY2UJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAPQ2FsbF9TdGFydF9FbmRfBQAAAA1jYWxsZXJhZGRyZXNzAgAAAAFfCQABpAAAAAEFAAAADVRvdGFsVXNlckNhbGwJAAEsAAAAAgkAASwAAAACCQABpAAAAAEFAAAAFHJlYWRfT3B0aW9uQ291bnRlcklEAgAAAAFfCQABpAAAAAEFAAAAFU9wdGlvbkV4cGlyZUNvdW50ZXJJRAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAATVG90YWxfT3B0aW9uX09yZGVycwUAAAARVG90YWxPcHRpb25PcmRlcnMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgIAAAAUVG90YWxfT3B0aW9uX09yZGVyc18JAAGkAAAAAQUAAAAUcmVhZF9PcHRpb25Db3VudGVySUQFAAAAIlRvdGFsT3B0aW9uT3JkZXJzaW5TcGVjaWZpY0NvdW50ZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAC1RvdGFsX0NhbGxzBQAAAAlUb3RhbENhbGwJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgIAAAAMVG90YWxfQ2FsbHNfCQABpAAAAAEFAAAAFHJlYWRfT3B0aW9uQ291bnRlcklEBQAAABpUb3RhbENhbGxpblNwZWNpZmljQ291bnRlcgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAA1jYWxsZXJhZGRyZXNzAgAAAAxfVG90YWxfQ2FsbHMFAAAADVRvdGFsVXNlckNhbGwJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACBQAAAA1jYWxsZXJhZGRyZXNzAgAAAA1fVG90YWxfQ2FsbHNfCQABpAAAAAEFAAAAFHJlYWRfT3B0aW9uQ291bnRlcklEBQAAAB5Ub3RhbFVzZXJDYWxsaW5TcGVjaWZpY0NvdW50ZXIFAAAAA25pbAAAAAFpAQAAAA5wbGFjZW9wdGlvblB1dAAAAAAEAAAADWNhbGxlcmFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAANaWZCbGFja2xpc3RlZAkABB0AAAACBQAAAAR0aGlzCQABLAAAAAICAAAAEWFkZHJfQkxBQ0tMSVNURURfBQAAAA1jYWxsZXJhZGRyZXNzBAAAABJyZWFkX29yYWNsZV9zdGF0dXMJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMCAAAADW9yYWNsZV9zdGF0dXMEAAAAFHJlYWRfT3B0aW9uQ291bnRlcklECQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzAgAAAA4xbV9jb250cmFjdF9pZAQAAAAKZ2V0YnRjZGF0YQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAAAcxbV9idGNfCQABpAAAAAEFAAAAFHJlYWRfT3B0aW9uQ291bnRlcklEBAAAAAZzd2FwTGkJAAS1AAAAAgUAAAAKZ2V0YnRjZGF0YQIAAAABXwQAAAAFcHJpY2UJAAGRAAAAAgUAAAAGc3dhcExpAAAAAAAAAAAABAAAAAVibG9jawkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAABnN3YXBMaQAAAAAAAAAAAgQAAAANY2hlY2tibG9ja2dhcAkAAGUAAAACBQAAAAZoZWlnaHQFAAAABWJsb2NrBAAAABJPcGlvbkV4cGlyZUNvdW50ZXIAAAAAAAAAAAEEAAAAFU9wdGlvbkV4cGlyZUNvdW50ZXJJRAkAAGQAAAACBQAAABRyZWFkX09wdGlvbkNvdW50ZXJJRAUAAAAST3Bpb25FeHBpcmVDb3VudGVyBAAAABRQcmV2aW91c09wdGlvbk9yZGVycwQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzAgAAABNUb3RhbF9PcHRpb25fT3JkZXJzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAAEVRvdGFsT3B0aW9uT3JkZXJzCQAAZAAAAAIFAAAAFFByZXZpb3VzT3B0aW9uT3JkZXJzAAAAAAAAAAABBAAAACVQcmV2aW91c09wdGlvbk9yZGVyc2luU3BlY2lmaWNDb3VudGVyBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAUVG90YWxfT3B0aW9uX09yZGVyc18JAAGkAAAAAQUAAAAUcmVhZF9PcHRpb25Db3VudGVySUQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAQAAAAiVG90YWxPcHRpb25PcmRlcnNpblNwZWNpZmljQ291bnRlcgkAAGQAAAACBQAAACVQcmV2aW91c09wdGlvbk9yZGVyc2luU3BlY2lmaWNDb3VudGVyAAAAAAAAAAABBAAAAAtQcmV2aW91c1B1dAQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzAgAAAApUb3RhbF9QdXRzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAACFRvdGFsUHV0CQAAZAAAAAIFAAAAC1ByZXZpb3VzUHV0AAAAAAAAAAABBAAAABxQcmV2aW91c1B1dGluU3BlY2lmaWNDb3VudGVyBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAALVG90YWxfUHV0c18JAAGkAAAAAQUAAAAUcmVhZF9PcHRpb25Db3VudGVySUQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAQAAAAZVG90YWxQdXRpblNwZWNpZmljQ291bnRlcgkAAGQAAAACBQAAABxQcmV2aW91c1B1dGluU3BlY2lmaWNDb3VudGVyAAAAAAAAAAABBAAAAA9QcmV2aW91c1VzZXJQdXQEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAA1jYWxsZXJhZGRyZXNzAgAAAAtfVG90YWxfUHV0cwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAAAxUb3RhbFVzZXJQdXQJAABkAAAAAgUAAAAPUHJldmlvdXNVc2VyUHV0AAAAAAAAAAABBAAAACBQcmV2aW91c1VzZXJQdXRpblNwZWNpZmljQ291bnRlcgQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgUAAAANY2FsbGVyYWRkcmVzcwIAAAAMX1RvdGFsX1B1dHNfCQABpAAAAAEFAAAAFHJlYWRfT3B0aW9uQ291bnRlcklEAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAAHVRvdGFsVXNlclB1dGluU3BlY2lmaWNDb3VudGVyCQAAZAAAAAIFAAAAIFByZXZpb3VzVXNlclB1dGluU3BlY2lmaWNDb3VudGVyAAAAAAAAAAABAwkAAGYAAAACBQAAAA1jaGVja2Jsb2NrZ2FwAAAAAAAAAAACCQAAAgAAAAECAAAANVNvbWV0aGluZyBXcm9uZyB3aXRoIE9yYWNsZSBvciBIZWlnaHQgaXMgbm90IG1hdGNoZWQuAwkAAAAAAAACBQAAABJyZWFkX29yYWNsZV9zdGF0dXMCAAAABUNsb3NlCQAAAgAAAAECAAAAMU9yYWNsZSBpcyBjbG9zZWQuIFdhaXQgVW50aWwgT3JhY2xlIGlzIFR1cm5lZCBPbi4DCQAAAAAAAAIFAAAADWlmQmxhY2tsaXN0ZWQCAAAAA1llcwkAAAIAAAABCQABLAAAAAIFAAAADWNhbGxlcmFkZHJlc3MCAAAAPiBBZGRyZXNzIGlzIEJsYWNrbGlzdGVkLiBQbGVhc2UgY29udGFjdCBBZG1pbiB0byBXaGl0ZWxpc3QgaXQuCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAABFB1dF8FAAAADWNhbGxlcmFkZHJlc3MCAAAAAV8JAAGkAAAAAQUAAAAMVG90YWxVc2VyUHV0BQAAAAVwcmljZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA5QdXRfU3RhcnRfRW5kXwUAAAANY2FsbGVyYWRkcmVzcwIAAAABXwkAAaQAAAABBQAAAAxUb3RhbFVzZXJQdXQJAAEsAAAAAgkAASwAAAACCQABpAAAAAEFAAAAFHJlYWRfT3B0aW9uQ291bnRlcklEAgAAAAFfCQABpAAAAAEFAAAAFU9wdGlvbkV4cGlyZUNvdW50ZXJJRAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAATVG90YWxfT3B0aW9uX09yZGVycwUAAAARVG90YWxPcHRpb25PcmRlcnMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgIAAAAUVG90YWxfT3B0aW9uX09yZGVyc18JAAGkAAAAAQUAAAAUcmVhZF9PcHRpb25Db3VudGVySUQFAAAAIlRvdGFsT3B0aW9uT3JkZXJzaW5TcGVjaWZpY0NvdW50ZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAClRvdGFsX1B1dHMFAAAACFRvdGFsUHV0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAICAAAAC1RvdGFsX1B1dHNfCQABpAAAAAEFAAAAFHJlYWRfT3B0aW9uQ291bnRlcklEBQAAABlUb3RhbFB1dGluU3BlY2lmaWNDb3VudGVyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAADWNhbGxlcmFkZHJlc3MCAAAAC19Ub3RhbF9QdXRzBQAAAAxUb3RhbFVzZXJQdXQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACBQAAAA1jYWxsZXJhZGRyZXNzAgAAAAxfVG90YWxfUHV0c18JAAGkAAAAAQUAAAAUcmVhZF9PcHRpb25Db3VudGVySUQFAAAAHVRvdGFsVXNlclB1dGluU3BlY2lmaWNDb3VudGVyBQAAAANuaWwAAAABaQEAAAAJQ2xhaW1DYWxsAAAAAQAAAA1DYWxsX1NlcXVlbmNlBAAAAA1jYWxsZXJhZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAA3BtdAMJAAAAAAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAkAAAIAAAABAgAAADhObyBwYXltZW50IGF0dGFjaGVkLCBQbGVhc2UgQXR0YWNoIFRva2VucyBpbiBwYXltZW50WzFdLgQAAAASZ2V0T3B0aW9uQ2FsbFByaWNlCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAVDYWxsXwUAAAANY2FsbGVyYWRkcmVzcwIAAAABXwUAAAANQ2FsbF9TZXF1ZW5jZQQAAAAaZ2V0T3B0aW9uQ2FsbF9TZXF1ZW5jZWRhdGEJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAD0NhbGxfU3RhcnRfRW5kXwUAAAANY2FsbGVyYWRkcmVzcwIAAAABXwUAAAANQ2FsbF9TZXF1ZW5jZQQAAAAUc3BsaXRTdGFydEVuZENvdW50ZXIJAAS1AAAAAgUAAAAaZ2V0T3B0aW9uQ2FsbF9TZXF1ZW5jZWRhdGECAAAAAV8EAAAAD2dldFN0YXJ0Q291bnRlcgkAAZEAAAACBQAAABRzcGxpdFN0YXJ0RW5kQ291bnRlcgAAAAAAAAAAAAQAAAANZ2V0RW5kQ291bnRlcgkAAZEAAAACBQAAABRzcGxpdFN0YXJ0RW5kQ291bnRlcgAAAAAAAAAAAQQAAAAYZ2V0YnRjZGF0YUF0U3RhcnRDb3VudGVyCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzCQABLAAAAAICAAAABzFtX2J0Y18FAAAAD2dldFN0YXJ0Q291bnRlcgQAAAAbc3BsaXRidGNwcmljZUF0U3RhcnRDb3VudGVyCQAEtQAAAAIFAAAAGGdldGJ0Y2RhdGFBdFN0YXJ0Q291bnRlcgIAAAABXwQAAAAZZ2V0YnRjcHJpY2VBdFN0YXJ0Q291bnRlcgkAAZEAAAACBQAAABtzcGxpdGJ0Y3ByaWNlQXRTdGFydENvdW50ZXIAAAAAAAAAAAAEAAAAFmdldGJ0Y2RhdGFBdEVuZENvdW50ZXIJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAHMW1fYnRjXwUAAAANZ2V0RW5kQ291bnRlcgQAAAAZc3BsaXRidGNwcmljZUF0RW5kQ291bnRlcgkABLUAAAACBQAAABZnZXRidGNkYXRhQXRFbmRDb3VudGVyAgAAAAFfBAAAABdnZXRidGNwcmljZUF0RW5kQ291bnRlcgkAAZEAAAACBQAAABlzcGxpdGJ0Y3ByaWNlQXRFbmRDb3VudGVyAAAAAAAAAAAABAAAAAlwcmljZWRpZmYJAABlAAAAAgkBAAAADXBhcnNlSW50VmFsdWUAAAABBQAAABdnZXRidGNwcmljZUF0RW5kQ291bnRlcgkBAAAADXBhcnNlSW50VmFsdWUAAAABBQAAABlnZXRidGNwcmljZUF0U3RhcnRDb3VudGVyBAAAAA9QcmV2aW91c0NhbGxXaW4EAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwIAAAAWVG90YWxfT3B0aW9uX0NhbGxfV2lucwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAAAxUb3RhbENhbGxXaW4JAABkAAAAAgUAAAAPUHJldmlvdXNDYWxsV2luAAAAAAAAAAABBAAAABBQcmV2aW91c0NhbGxMb3NlBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMCAAAAFlRvdGFsX09wdGlvbl9DYWxsX0xvc2UDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAQAAAANVG90YWxDYWxsTG9zZQkAAGQAAAACBQAAABBQcmV2aW91c0NhbGxMb3NlAAAAAAAAAAABAwkAAGYAAAACAAAAAAAAAAAABQAAAAlwcmljZWRpZmYJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAABERp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KDEwNTMpAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAOUHV0X1N0YXJ0X0VuZF8FAAAADWNhbGxlcmFkZHJlc3MCAAAAAV8FAAAADFB1dF9TZXF1ZW5jZQQAAAAUc3BsaXRTdGFydEVuZENvdW50ZXIJAAS1AAAAAgUAAAAZZ2V0T3B0aW9uUHV0X1NlcXVlbmNlZGF0YQIAAAABXwQAAAAPZ2V0U3RhcnRDb3VudGVyCQABkQAAAAIFAAAAFHNwbGl0U3RhcnRFbmRDb3VudGVyAAAAAAAAAAAABAAAAA1nZXRFbmRDb3VudGVyCQABkQAAAAIFAAAAFHNwbGl0U3RhcnRFbmRDb3VudGVyAAAAAAAAAAABBAAAABhnZXRidGNkYXRhQXRTdGFydENvdW50ZXIJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAHMW1fYnRjXwUAAAAPZ2V0U3RhcnRDb3VudGVyBAAAABtzcGxpdGJ0Y3ByaWNlQXRTdGFydENvdW50ZXIJAAS1AAAAAgUAAAAYZ2V0YnRjZGF0YUF0U3RhcnRDb3VudGVyAgAAAAFfBAAAABlnZXRidGNwcmljZUF0U3RhcnRDb3VudGVyCQABkQAAAAIFAAAAG3NwbGl0YnRjcHJpY2VBdFN0YXJ0Q291bnRlcgAAAAAAAAAAAAQAAAAWZ2V0YnRjZGF0YUF0RW5kQ291bnRlcgkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAAAcxbV9idGNfBQAAAA1nZXRFbmRDb3VudGVyBAAAABlzcGxpdGJ0Y3ByaWNlQXRFbmRDb3VudGVyCQAEtQAAAAIFAAAAFmdldGJ0Y2RhdGFBdEVuZENvdW50ZXICAAAAAV8EAAAAF2dldGJ0Y3ByaWNlQXRFbmRDb3VudGVyCQABkQAAAAIFAAAAGXNwbGl0YnRjcHJpY2VBdEVuZENvdW50ZXIAAAAAAAAAAAAEAAAACXByaWNlZGlmZgkAAGUAAAACCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEFAAAAF2dldGJ0Y3ByaWNlQXRFbmRDb3VudGVyCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEFAAAA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byBTaWduIGl0LgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAA1vcmFjbGVfc3RhdHVzAgAAAARPcGVuBQAAAANuaWwAAAABaQEAAAAQQmxhY2tMaXN0QWRkcmVzcwAAAAEAAAALVXNlckFkZHJlc3MEAAAADWlmQmxhY2tsaXN0ZWQJAAQdAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAABFhZGRyX0JMQUNLTElTVEVEXwUAAAALVXNlckFkZHJlc3MEAAAAGFByZXZpb3VzQmxhY2tMaXN0QWRkcmVzcwQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzAgAAABpUb3RhbF9CbGFja19MaXN0ZWRfQWRkcmVzcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAABVUb3RhbEJsYWNrTGlzdEFkZHJlc3MJAABkAAAAAgUAAAAYUHJldmlvdXNCbGFja0xpc3RBZGRyZXNzAAAAAAAAAAABAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAABlvcmFjbGVfY29udHJvbGxlcl9hZGRyZXNzCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAACVUaGlzIEFkZHJlc3MgaXMgbm90IEF1dGhvcml6ZWQuIE9ubHkgCQAEJQAAAAEFAAAAGW9yYWNsZV9jb250cm9sbGVyX2FkZHJlc3MCAAAAIiBpcyBBdXRob3JpemVkIEFkZHJlc3MgdG8gU2lnbiBpdC4DCQAAAAAAAAIFAAAADWlmQmxhY2tsaXN0ZWQCAAAAA1llcwkAAAIAAAABAgAAACpBZGRyZXNzIGlzIGFscmVhZHkgYXZhaWxhYmxlIGluIEJsYWNrbGlzdC4JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACAgAAABFhZGRyX0JMQUNLTElTVEVEXwUAAAALVXNlckFkZHJlc3MCAAAAA1llcwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAaVG90YWxfQmxhY2tfTGlzdGVkX0FkZHJlc3MFAAAAFVRvdGFsQmxhY2tMaXN0QWRkcmVzcwUAAAADbmlsAAAAAWkBAAAAFkRlbGV0ZUJsYWNrTGlzdEFkZHJlc3MAAAABAAAAC1VzZXJBZGRyZXNzBAAAAA1pZkJsYWNrbGlzdGVkCQAEHQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAARYWRkcl9CTEFDS0xJU1RFRF8FAAAAC1VzZXJBZGRyZXNzBAAAABhQcmV2aW91c0JsYWNrTGlzdEFkZHJlc3MEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwIAAAAaVG90YWxfQmxhY2tfTGlzdGVkX0FkZHJlc3MDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAQAAAAVVG90YWxCbGFja0xpc3RBZGRyZXNzCQAAZQAAAAIFAAAAGFByZXZpb3VzQmxhY2tMaXN0QWRkcmVzcwAAAAAAAAAAAQMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAZb3JhY2xlX2NvbnRyb2xsZXJfYWRkcmVzcwkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAlVGhpcyBBZGRyZXNzIGlzIG5vdCBBdXRob3JpemVkLiBPbmx5IAkABCUAAAABBQAAABlvcmFjbGVfY29udHJvbGxlcl9hZGRyZXNzAgAAACIgaXMgQXV0aG9yaXplZCBBZGRyZXNzIHRvIFNpZ24gaXQuAwkAAAAAAAACBQAAAA1pZkJsYWNrbGlzdGVkAgAAAANZZXMJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACAgAAABFhZGRyX0JMQUNLTElTVEVEXwUAAAALVXNlckFkZHJlc3MJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAGlRvdGFsX0JsYWNrX0xpc3RlZF9BZGRyZXNzBQAAABVUb3RhbEJsYWNrTGlzdEFkZHJlc3MFAAAAA25pbAkAAAIAAAABAgAAACZBZGRyZXNzIGlzIG5vdCBhdmFpbGFibGUgaW4gQmxhY2tsaXN0LgAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V53S2SZQ==", "height": 2430314, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6ToSAxr38wKTgKLwKBE1bhaTaA761LSFbr8BgYeNbXm7 Next: 2niry5C9C4w1HLUe4nm6c7WxTP1Wc9akUmWg5dgBu8Gn Diff:
Old | New | Differences | |
---|---|---|---|
31 | 31 | } | |
32 | 32 | let s = (p + 1) | |
33 | 33 | let t = { | |
34 | - | let q = getInteger(this, "Total_ | |
34 | + | let q = getInteger(this, ("Total_Option_Orders_" + toString(h))) | |
35 | 35 | if ($isInstanceOf(q, "Int")) | |
36 | 36 | then { | |
37 | 37 | let r = q | |
41 | 41 | } | |
42 | 42 | let u = (t + 1) | |
43 | 43 | let v = { | |
44 | - | let q = getInteger(this, | |
44 | + | let q = getInteger(this, "Total_Calls") | |
45 | 45 | if ($isInstanceOf(q, "Int")) | |
46 | 46 | then { | |
47 | 47 | let r = q | |
51 | 51 | } | |
52 | 52 | let w = (v + 1) | |
53 | 53 | let x = { | |
54 | - | let q = getInteger(this, ( | |
54 | + | let q = getInteger(this, ("Total_Calls_" + toString(h))) | |
55 | 55 | if ($isInstanceOf(q, "Int")) | |
56 | 56 | then { | |
57 | 57 | let r = q | |
61 | 61 | } | |
62 | 62 | let y = (x + 1) | |
63 | 63 | let z = { | |
64 | + | let q = getInteger(this, (e + "_Total_Calls")) | |
65 | + | if ($isInstanceOf(q, "Int")) | |
66 | + | then { | |
67 | + | let r = q | |
68 | + | r | |
69 | + | } | |
70 | + | else 0 | |
71 | + | } | |
72 | + | let A = (z + 1) | |
73 | + | let B = { | |
64 | 74 | let q = getInteger(this, ((e + "_Total_Calls_") + toString(h))) | |
65 | 75 | if ($isInstanceOf(q, "Int")) | |
66 | 76 | then { | |
69 | 79 | } | |
70 | 80 | else 0 | |
71 | 81 | } | |
72 | - | let | |
82 | + | let C = (B + 1) | |
73 | 83 | if ((m > 2)) | |
74 | 84 | then throw("Something Wrong with Oracle or Height is not matched.") | |
75 | 85 | else if ((g == "Close")) | |
76 | 86 | then throw("Oracle is closed. Wait Until Oracle is Turned On.") | |
77 | 87 | else if ((f == "Yes")) | |
78 | 88 | then throw((e + " Address is Blacklisted. Please contact Admin to Whitelist it.")) | |
79 | - | else [StringEntry(((("Call_" + e) + "_") + toString( | |
89 | + | else [StringEntry(((("Call_" + e) + "_") + toString(A)), k), StringEntry(((("Call_Start_End_" + e) + "_") + toString(A)), ((toString(h) + "_") + toString(o))), IntegerEntry("Total_Option_Orders", s), IntegerEntry(("Total_Option_Orders_" + toString(h)), u), IntegerEntry("Total_Calls", w), IntegerEntry(("Total_Calls_" + toString(h)), y), IntegerEntry((e + "_Total_Calls"), A), IntegerEntry(((e + "_Total_Calls_") + toString(h)), C)] | |
80 | 90 | } | |
81 | 91 | ||
82 | 92 | ||
104 | 114 | else 0 | |
105 | 115 | } | |
106 | 116 | let s = (p + 1) | |
107 | - | let | |
108 | - | let q = getInteger(this, "Total_ | |
117 | + | let t = { | |
118 | + | let q = getInteger(this, ("Total_Option_Orders_" + toString(h))) | |
109 | 119 | if ($isInstanceOf(q, "Int")) | |
110 | 120 | then { | |
111 | 121 | let r = q | |
113 | 123 | } | |
114 | 124 | else 0 | |
115 | 125 | } | |
116 | - | let | |
126 | + | let u = (t + 1) | |
117 | 127 | let D = { | |
118 | - | let q = getInteger(this, | |
128 | + | let q = getInteger(this, "Total_Puts") | |
119 | 129 | if ($isInstanceOf(q, "Int")) | |
120 | 130 | then { | |
121 | 131 | let r = q | |
125 | 135 | } | |
126 | 136 | let E = (D + 1) | |
127 | 137 | let F = { | |
128 | - | let q = getInteger(this, ( | |
138 | + | let q = getInteger(this, ("Total_Puts_" + toString(h))) | |
129 | 139 | if ($isInstanceOf(q, "Int")) | |
130 | 140 | then { | |
131 | 141 | let r = q | |
135 | 145 | } | |
136 | 146 | let G = (F + 1) | |
137 | 147 | let H = { | |
148 | + | let q = getInteger(this, (e + "_Total_Puts")) | |
149 | + | if ($isInstanceOf(q, "Int")) | |
150 | + | then { | |
151 | + | let r = q | |
152 | + | r | |
153 | + | } | |
154 | + | else 0 | |
155 | + | } | |
156 | + | let I = (H + 1) | |
157 | + | let J = { | |
138 | 158 | let q = getInteger(this, ((e + "_Total_Puts_") + toString(h))) | |
139 | 159 | if ($isInstanceOf(q, "Int")) | |
140 | 160 | then { | |
143 | 163 | } | |
144 | 164 | else 0 | |
145 | 165 | } | |
146 | - | let | |
166 | + | let K = (J + 1) | |
147 | 167 | if ((m > 2)) | |
148 | 168 | then throw("Something Wrong with Oracle or Height is not matched.") | |
149 | 169 | else if ((g == "Close")) | |
150 | 170 | then throw("Oracle is closed. Wait Until Oracle is Turned On.") | |
151 | 171 | else if ((f == "Yes")) | |
152 | 172 | then throw((e + " Address is Blacklisted. Please contact Admin to Whitelist it.")) | |
153 | - | else [StringEntry(((("Put_" + e) + "_") + toString( | |
173 | + | else [StringEntry(((("Put_" + e) + "_") + toString(I)), k), StringEntry(((("Put_Start_End_" + e) + "_") + toString(I)), ((toString(h) + "_") + toString(o))), IntegerEntry("Total_Option_Orders", s), IntegerEntry(("Total_Option_Orders_" + toString(h)), u), IntegerEntry("Total_Puts", E), IntegerEntry(("Total_Puts_" + toString(h)), G), IntegerEntry((e + "_Total_Puts"), I), IntegerEntry(((e + "_Total_Puts_") + toString(h)), K)] | |
154 | 174 | } | |
155 | 175 | ||
156 | 176 | ||
157 | 177 | ||
158 | 178 | @Callable(d) | |
159 | - | func ClaimCall ( | |
179 | + | func ClaimCall (L) = { | |
160 | 180 | let e = toBase58String(d.caller.bytes) | |
161 | - | let | |
181 | + | let M = if ((size(d.payments) == 1)) | |
162 | 182 | then d.payments[0] | |
163 | 183 | else throw("No payment attached, Please Attach Tokens in payment[1].") | |
164 | - | let | |
165 | - | let | |
166 | - | let | |
167 | - | let | |
168 | - | let | |
169 | - | let | |
170 | - | let | |
171 | - | let | |
172 | - | let | |
173 | - | let | |
174 | - | let | |
175 | - | let | |
176 | - | let | |
184 | + | let N = getStringValue(this, ((("Call_" + e) + "_") + L)) | |
185 | + | let O = getStringValue(this, ((("Call_Start_End_" + e) + "_") + L)) | |
186 | + | let P = split(O, "_") | |
187 | + | let Q = P[0] | |
188 | + | let R = P[1] | |
189 | + | let S = getStringValue(this, ("1m_btc_" + Q)) | |
190 | + | let T = split(S, "_") | |
191 | + | let U = T[0] | |
192 | + | let V = getStringValue(this, ("1m_btc_" + R)) | |
193 | + | let W = split(V, "_") | |
194 | + | let X = W[0] | |
195 | + | let Y = (parseIntValue(X) - parseIntValue(U)) | |
196 | + | let Z = { | |
177 | 197 | let q = getInteger(this, "Total_Option_Call_Wins") | |
178 | 198 | if ($isInstanceOf(q, "Int")) | |
179 | 199 | then { | |
182 | 202 | } | |
183 | 203 | else 0 | |
184 | 204 | } | |
185 | - | let | |
186 | - | let | |
205 | + | let aa = (Z + 1) | |
206 | + | let ab = { | |
187 | 207 | let q = getInteger(this, "Total_Option_Call_Lose") | |
188 | 208 | if ($isInstanceOf(q, "Int")) | |
189 | 209 | then { | |
192 | 212 | } | |
193 | 213 | else 0 | |
194 | 214 | } | |
195 | - | let | |
196 | - | if ((0 > | |
197 | - | then [IntegerEntry("Diff", | |
198 | - | else [IntegerEntry("Diff", | |
215 | + | let ac = (ab + 1) | |
216 | + | if ((0 > Y)) | |
217 | + | then [IntegerEntry("Diff", Y), IntegerEntry("Total_Option_Call_Lose", ac), StringEntry(((((((((((("c_" + e) + "_") + L) + "_") + Q) + "_") + R) + "_") + U) + "_") + X), "lose"), StringEntry("message", "You lose!"), DeleteEntry(((("Call_" + e) + "_") + L)), DeleteEntry(((("Call_Start_End_" + e) + "_") + L))] | |
218 | + | else [IntegerEntry("Diff", Y), IntegerEntry("Total_Option_Call_Wins", aa), StringEntry(((((((((((("c_" + e) + "_") + L) + "_") + Q) + "_") + R) + "_") + U) + "_") + X), "Win"), StringEntry("message", "You Win!"), DeleteEntry(((("Call_" + e) + "_") + L)), DeleteEntry(((("Call_Start_End_" + e) + "_") + L))] | |
199 | 219 | } | |
200 | 220 | ||
201 | 221 | ||
202 | 222 | ||
203 | 223 | @Callable(d) | |
204 | - | func ClaimPut ( | |
224 | + | func ClaimPut (ad) = { | |
205 | 225 | let e = toBase58String(d.caller.bytes) | |
206 | - | let | |
226 | + | let M = if ((size(d.payments) == 1)) | |
207 | 227 | then d.payments[0] | |
208 | 228 | else throw("No payment attached, Please Attach Tokens in payment[1].") | |
209 | - | let | |
210 | - | let | |
211 | - | let | |
212 | - | let | |
213 | - | let | |
214 | - | let | |
215 | - | let | |
216 | - | let | |
217 | - | let | |
218 | - | let | |
219 | - | let | |
220 | - | let | |
221 | - | let | |
229 | + | let ae = getStringValue(this, ((("Put_" + e) + "_") + ad)) | |
230 | + | let af = getStringValue(this, ((("Put_Start_End_" + e) + "_") + ad)) | |
231 | + | let P = split(af, "_") | |
232 | + | let Q = P[0] | |
233 | + | let R = P[1] | |
234 | + | let S = getStringValue(this, ("1m_btc_" + Q)) | |
235 | + | let T = split(S, "_") | |
236 | + | let U = T[0] | |
237 | + | let V = getStringValue(this, ("1m_btc_" + R)) | |
238 | + | let W = split(V, "_") | |
239 | + | let X = W[0] | |
240 | + | let Y = (parseIntValue(X) - parseIntValue(U)) | |
241 | + | let ag = { | |
222 | 242 | let q = getInteger(this, "Total_Option_Put_Wins") | |
223 | 243 | if ($isInstanceOf(q, "Int")) | |
224 | 244 | then { | |
227 | 247 | } | |
228 | 248 | else 0 | |
229 | 249 | } | |
230 | - | let | |
231 | - | let | |
250 | + | let ah = (ag + 1) | |
251 | + | let ai = { | |
232 | 252 | let q = getInteger(this, "Total_Option_Put_Lose") | |
233 | 253 | if ($isInstanceOf(q, "Int")) | |
234 | 254 | then { | |
237 | 257 | } | |
238 | 258 | else 0 | |
239 | 259 | } | |
240 | - | let | |
241 | - | if (( | |
242 | - | then [IntegerEntry("Diff", | |
243 | - | else [IntegerEntry("Diff", | |
260 | + | let aj = (ai + 1) | |
261 | + | if ((Y > 0)) | |
262 | + | then [IntegerEntry("Diff", Y), IntegerEntry("Total_Option_Put_Lose", aj), StringEntry(((((((((((("p_" + e) + "_") + ad) + "_") + Q) + "_") + R) + "_") + U) + "_") + X), "lose"), StringEntry("message", "You lose!"), DeleteEntry(((("Put_" + e) + "_") + ad)), DeleteEntry(((("Put_Start_End_" + e) + "_") + ad))] | |
263 | + | else [IntegerEntry("Diff", Y), IntegerEntry("Total_Option_Put_Wins", ah), StringEntry(((((((((((("p_" + e) + "_") + ad) + "_") + Q) + "_") + R) + "_") + U) + "_") + X), "Win"), StringEntry("message", "You Win!"), DeleteEntry(((("Put_" + e) + "_") + ad)), DeleteEntry(((("Put_Start_End_" + e) + "_") + ad))] | |
244 | 264 | } | |
245 | 265 | ||
246 | 266 | ||
247 | 267 | ||
248 | 268 | @Callable(d) | |
249 | - | func calldata ( | |
250 | - | let i = getStringValue(this, ("1m_btc_" + toString( | |
269 | + | func calldata (ak) = { | |
270 | + | let i = getStringValue(this, ("1m_btc_" + toString(ak))) | |
251 | 271 | let j = split(i, "_") | |
252 | 272 | let k = j[0] | |
253 | - | let | |
254 | - | let | |
255 | - | let | |
273 | + | let al = j[1] | |
274 | + | let am = j[2] | |
275 | + | let an = j[3] | |
256 | 276 | [StringEntry("price", j[0]), StringEntry("time", j[1]), StringEntry("blockheight", j[2]), StringEntry("div", j[3])] | |
257 | 277 | } | |
258 | 278 | ||
269 | 289 | ||
270 | 290 | ||
271 | 291 | @Callable(d) | |
272 | - | func BlackListAddress ( | |
273 | - | let f = getString(this, ("addr_BLACKLISTED_" + | |
274 | - | let | |
292 | + | func BlackListAddress (ao) = { | |
293 | + | let f = getString(this, ("addr_BLACKLISTED_" + ao)) | |
294 | + | let ap = { | |
275 | 295 | let q = getInteger(this, "Total_Black_Listed_Address") | |
276 | 296 | if ($isInstanceOf(q, "Int")) | |
277 | 297 | then { | |
280 | 300 | } | |
281 | 301 | else 0 | |
282 | 302 | } | |
283 | - | let | |
303 | + | let aq = (ap + 1) | |
284 | 304 | if ((d.caller != b)) | |
285 | 305 | then throw((("This Address is not Authorized. Only " + toString(b)) + " is Authorized Address to Sign it.")) | |
286 | 306 | else if ((f == "Yes")) | |
287 | 307 | then throw("Address is already available in Blacklist.") | |
288 | - | else [StringEntry(("addr_BLACKLISTED_" + | |
308 | + | else [StringEntry(("addr_BLACKLISTED_" + ao), "Yes"), IntegerEntry("Total_Black_Listed_Address", aq)] | |
289 | 309 | } | |
290 | 310 | ||
291 | 311 | ||
292 | 312 | ||
293 | 313 | @Callable(d) | |
294 | - | func DeleteBlackListAddress ( | |
295 | - | let f = getString(this, ("addr_BLACKLISTED_" + | |
296 | - | let | |
314 | + | func DeleteBlackListAddress (ao) = { | |
315 | + | let f = getString(this, ("addr_BLACKLISTED_" + ao)) | |
316 | + | let ap = { | |
297 | 317 | let q = getInteger(this, "Total_Black_Listed_Address") | |
298 | 318 | if ($isInstanceOf(q, "Int")) | |
299 | 319 | then { | |
302 | 322 | } | |
303 | 323 | else 0 | |
304 | 324 | } | |
305 | - | let | |
325 | + | let aq = (ap - 1) | |
306 | 326 | if ((d.caller != b)) | |
307 | 327 | then throw((("This Address is not Authorized. Only " + toString(b)) + " is Authorized Address to Sign it.")) | |
308 | 328 | else if ((f == "Yes")) | |
309 | - | then [DeleteEntry(("addr_BLACKLISTED_" + | |
329 | + | then [DeleteEntry(("addr_BLACKLISTED_" + ao)), IntegerEntry("Total_Black_Listed_Address", aq)] | |
310 | 330 | else throw("Address is not available in Blacklist.") | |
311 | 331 | } | |
312 | 332 | ||
313 | 333 | ||
314 | - | @Verifier( | |
315 | - | func | |
334 | + | @Verifier(ar) | |
335 | + | func as () = sigVerify(ar.bodyBytes, ar.proofs[0], ar.senderPublicKey) | |
316 | 336 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = base58'CYbv2nupcWmnVFixN6Q2sxd9ChbDsq1KqXQ66VjsZBJE' | |
5 | 5 | ||
6 | 6 | let b = addressFromPublicKey(a) | |
7 | 7 | ||
8 | 8 | let c = base58'' | |
9 | 9 | ||
10 | 10 | @Callable(d) | |
11 | 11 | func placeoptionCall () = { | |
12 | 12 | let e = toBase58String(d.caller.bytes) | |
13 | 13 | let f = getString(this, ("addr_BLACKLISTED_" + e)) | |
14 | 14 | let g = getStringValue(this, "oracle_status") | |
15 | 15 | let h = getIntegerValue(this, "1m_contract_id") | |
16 | 16 | let i = getStringValue(this, ("1m_btc_" + toString(h))) | |
17 | 17 | let j = split(i, "_") | |
18 | 18 | let k = j[0] | |
19 | 19 | let l = parseIntValue(j[2]) | |
20 | 20 | let m = (height - l) | |
21 | 21 | let n = 1 | |
22 | 22 | let o = (h + n) | |
23 | 23 | let p = { | |
24 | 24 | let q = getInteger(this, "Total_Option_Orders") | |
25 | 25 | if ($isInstanceOf(q, "Int")) | |
26 | 26 | then { | |
27 | 27 | let r = q | |
28 | 28 | r | |
29 | 29 | } | |
30 | 30 | else 0 | |
31 | 31 | } | |
32 | 32 | let s = (p + 1) | |
33 | 33 | let t = { | |
34 | - | let q = getInteger(this, "Total_ | |
34 | + | let q = getInteger(this, ("Total_Option_Orders_" + toString(h))) | |
35 | 35 | if ($isInstanceOf(q, "Int")) | |
36 | 36 | then { | |
37 | 37 | let r = q | |
38 | 38 | r | |
39 | 39 | } | |
40 | 40 | else 0 | |
41 | 41 | } | |
42 | 42 | let u = (t + 1) | |
43 | 43 | let v = { | |
44 | - | let q = getInteger(this, | |
44 | + | let q = getInteger(this, "Total_Calls") | |
45 | 45 | if ($isInstanceOf(q, "Int")) | |
46 | 46 | then { | |
47 | 47 | let r = q | |
48 | 48 | r | |
49 | 49 | } | |
50 | 50 | else 0 | |
51 | 51 | } | |
52 | 52 | let w = (v + 1) | |
53 | 53 | let x = { | |
54 | - | let q = getInteger(this, ( | |
54 | + | let q = getInteger(this, ("Total_Calls_" + toString(h))) | |
55 | 55 | if ($isInstanceOf(q, "Int")) | |
56 | 56 | then { | |
57 | 57 | let r = q | |
58 | 58 | r | |
59 | 59 | } | |
60 | 60 | else 0 | |
61 | 61 | } | |
62 | 62 | let y = (x + 1) | |
63 | 63 | let z = { | |
64 | + | let q = getInteger(this, (e + "_Total_Calls")) | |
65 | + | if ($isInstanceOf(q, "Int")) | |
66 | + | then { | |
67 | + | let r = q | |
68 | + | r | |
69 | + | } | |
70 | + | else 0 | |
71 | + | } | |
72 | + | let A = (z + 1) | |
73 | + | let B = { | |
64 | 74 | let q = getInteger(this, ((e + "_Total_Calls_") + toString(h))) | |
65 | 75 | if ($isInstanceOf(q, "Int")) | |
66 | 76 | then { | |
67 | 77 | let r = q | |
68 | 78 | r | |
69 | 79 | } | |
70 | 80 | else 0 | |
71 | 81 | } | |
72 | - | let | |
82 | + | let C = (B + 1) | |
73 | 83 | if ((m > 2)) | |
74 | 84 | then throw("Something Wrong with Oracle or Height is not matched.") | |
75 | 85 | else if ((g == "Close")) | |
76 | 86 | then throw("Oracle is closed. Wait Until Oracle is Turned On.") | |
77 | 87 | else if ((f == "Yes")) | |
78 | 88 | then throw((e + " Address is Blacklisted. Please contact Admin to Whitelist it.")) | |
79 | - | else [StringEntry(((("Call_" + e) + "_") + toString( | |
89 | + | else [StringEntry(((("Call_" + e) + "_") + toString(A)), k), StringEntry(((("Call_Start_End_" + e) + "_") + toString(A)), ((toString(h) + "_") + toString(o))), IntegerEntry("Total_Option_Orders", s), IntegerEntry(("Total_Option_Orders_" + toString(h)), u), IntegerEntry("Total_Calls", w), IntegerEntry(("Total_Calls_" + toString(h)), y), IntegerEntry((e + "_Total_Calls"), A), IntegerEntry(((e + "_Total_Calls_") + toString(h)), C)] | |
80 | 90 | } | |
81 | 91 | ||
82 | 92 | ||
83 | 93 | ||
84 | 94 | @Callable(d) | |
85 | 95 | func placeoptionPut () = { | |
86 | 96 | let e = toBase58String(d.caller.bytes) | |
87 | 97 | let f = getString(this, ("addr_BLACKLISTED_" + e)) | |
88 | 98 | let g = getStringValue(this, "oracle_status") | |
89 | 99 | let h = getIntegerValue(this, "1m_contract_id") | |
90 | 100 | let i = getStringValue(this, ("1m_btc_" + toString(h))) | |
91 | 101 | let j = split(i, "_") | |
92 | 102 | let k = j[0] | |
93 | 103 | let l = parseIntValue(j[2]) | |
94 | 104 | let m = (height - l) | |
95 | 105 | let n = 1 | |
96 | 106 | let o = (h + n) | |
97 | 107 | let p = { | |
98 | 108 | let q = getInteger(this, "Total_Option_Orders") | |
99 | 109 | if ($isInstanceOf(q, "Int")) | |
100 | 110 | then { | |
101 | 111 | let r = q | |
102 | 112 | r | |
103 | 113 | } | |
104 | 114 | else 0 | |
105 | 115 | } | |
106 | 116 | let s = (p + 1) | |
107 | - | let | |
108 | - | let q = getInteger(this, "Total_ | |
117 | + | let t = { | |
118 | + | let q = getInteger(this, ("Total_Option_Orders_" + toString(h))) | |
109 | 119 | if ($isInstanceOf(q, "Int")) | |
110 | 120 | then { | |
111 | 121 | let r = q | |
112 | 122 | r | |
113 | 123 | } | |
114 | 124 | else 0 | |
115 | 125 | } | |
116 | - | let | |
126 | + | let u = (t + 1) | |
117 | 127 | let D = { | |
118 | - | let q = getInteger(this, | |
128 | + | let q = getInteger(this, "Total_Puts") | |
119 | 129 | if ($isInstanceOf(q, "Int")) | |
120 | 130 | then { | |
121 | 131 | let r = q | |
122 | 132 | r | |
123 | 133 | } | |
124 | 134 | else 0 | |
125 | 135 | } | |
126 | 136 | let E = (D + 1) | |
127 | 137 | let F = { | |
128 | - | let q = getInteger(this, ( | |
138 | + | let q = getInteger(this, ("Total_Puts_" + toString(h))) | |
129 | 139 | if ($isInstanceOf(q, "Int")) | |
130 | 140 | then { | |
131 | 141 | let r = q | |
132 | 142 | r | |
133 | 143 | } | |
134 | 144 | else 0 | |
135 | 145 | } | |
136 | 146 | let G = (F + 1) | |
137 | 147 | let H = { | |
148 | + | let q = getInteger(this, (e + "_Total_Puts")) | |
149 | + | if ($isInstanceOf(q, "Int")) | |
150 | + | then { | |
151 | + | let r = q | |
152 | + | r | |
153 | + | } | |
154 | + | else 0 | |
155 | + | } | |
156 | + | let I = (H + 1) | |
157 | + | let J = { | |
138 | 158 | let q = getInteger(this, ((e + "_Total_Puts_") + toString(h))) | |
139 | 159 | if ($isInstanceOf(q, "Int")) | |
140 | 160 | then { | |
141 | 161 | let r = q | |
142 | 162 | r | |
143 | 163 | } | |
144 | 164 | else 0 | |
145 | 165 | } | |
146 | - | let | |
166 | + | let K = (J + 1) | |
147 | 167 | if ((m > 2)) | |
148 | 168 | then throw("Something Wrong with Oracle or Height is not matched.") | |
149 | 169 | else if ((g == "Close")) | |
150 | 170 | then throw("Oracle is closed. Wait Until Oracle is Turned On.") | |
151 | 171 | else if ((f == "Yes")) | |
152 | 172 | then throw((e + " Address is Blacklisted. Please contact Admin to Whitelist it.")) | |
153 | - | else [StringEntry(((("Put_" + e) + "_") + toString( | |
173 | + | else [StringEntry(((("Put_" + e) + "_") + toString(I)), k), StringEntry(((("Put_Start_End_" + e) + "_") + toString(I)), ((toString(h) + "_") + toString(o))), IntegerEntry("Total_Option_Orders", s), IntegerEntry(("Total_Option_Orders_" + toString(h)), u), IntegerEntry("Total_Puts", E), IntegerEntry(("Total_Puts_" + toString(h)), G), IntegerEntry((e + "_Total_Puts"), I), IntegerEntry(((e + "_Total_Puts_") + toString(h)), K)] | |
154 | 174 | } | |
155 | 175 | ||
156 | 176 | ||
157 | 177 | ||
158 | 178 | @Callable(d) | |
159 | - | func ClaimCall ( | |
179 | + | func ClaimCall (L) = { | |
160 | 180 | let e = toBase58String(d.caller.bytes) | |
161 | - | let | |
181 | + | let M = if ((size(d.payments) == 1)) | |
162 | 182 | then d.payments[0] | |
163 | 183 | else throw("No payment attached, Please Attach Tokens in payment[1].") | |
164 | - | let | |
165 | - | let | |
166 | - | let | |
167 | - | let | |
168 | - | let | |
169 | - | let | |
170 | - | let | |
171 | - | let | |
172 | - | let | |
173 | - | let | |
174 | - | let | |
175 | - | let | |
176 | - | let | |
184 | + | let N = getStringValue(this, ((("Call_" + e) + "_") + L)) | |
185 | + | let O = getStringValue(this, ((("Call_Start_End_" + e) + "_") + L)) | |
186 | + | let P = split(O, "_") | |
187 | + | let Q = P[0] | |
188 | + | let R = P[1] | |
189 | + | let S = getStringValue(this, ("1m_btc_" + Q)) | |
190 | + | let T = split(S, "_") | |
191 | + | let U = T[0] | |
192 | + | let V = getStringValue(this, ("1m_btc_" + R)) | |
193 | + | let W = split(V, "_") | |
194 | + | let X = W[0] | |
195 | + | let Y = (parseIntValue(X) - parseIntValue(U)) | |
196 | + | let Z = { | |
177 | 197 | let q = getInteger(this, "Total_Option_Call_Wins") | |
178 | 198 | if ($isInstanceOf(q, "Int")) | |
179 | 199 | then { | |
180 | 200 | let r = q | |
181 | 201 | r | |
182 | 202 | } | |
183 | 203 | else 0 | |
184 | 204 | } | |
185 | - | let | |
186 | - | let | |
205 | + | let aa = (Z + 1) | |
206 | + | let ab = { | |
187 | 207 | let q = getInteger(this, "Total_Option_Call_Lose") | |
188 | 208 | if ($isInstanceOf(q, "Int")) | |
189 | 209 | then { | |
190 | 210 | let r = q | |
191 | 211 | r | |
192 | 212 | } | |
193 | 213 | else 0 | |
194 | 214 | } | |
195 | - | let | |
196 | - | if ((0 > | |
197 | - | then [IntegerEntry("Diff", | |
198 | - | else [IntegerEntry("Diff", | |
215 | + | let ac = (ab + 1) | |
216 | + | if ((0 > Y)) | |
217 | + | then [IntegerEntry("Diff", Y), IntegerEntry("Total_Option_Call_Lose", ac), StringEntry(((((((((((("c_" + e) + "_") + L) + "_") + Q) + "_") + R) + "_") + U) + "_") + X), "lose"), StringEntry("message", "You lose!"), DeleteEntry(((("Call_" + e) + "_") + L)), DeleteEntry(((("Call_Start_End_" + e) + "_") + L))] | |
218 | + | else [IntegerEntry("Diff", Y), IntegerEntry("Total_Option_Call_Wins", aa), StringEntry(((((((((((("c_" + e) + "_") + L) + "_") + Q) + "_") + R) + "_") + U) + "_") + X), "Win"), StringEntry("message", "You Win!"), DeleteEntry(((("Call_" + e) + "_") + L)), DeleteEntry(((("Call_Start_End_" + e) + "_") + L))] | |
199 | 219 | } | |
200 | 220 | ||
201 | 221 | ||
202 | 222 | ||
203 | 223 | @Callable(d) | |
204 | - | func ClaimPut ( | |
224 | + | func ClaimPut (ad) = { | |
205 | 225 | let e = toBase58String(d.caller.bytes) | |
206 | - | let | |
226 | + | let M = if ((size(d.payments) == 1)) | |
207 | 227 | then d.payments[0] | |
208 | 228 | else throw("No payment attached, Please Attach Tokens in payment[1].") | |
209 | - | let | |
210 | - | let | |
211 | - | let | |
212 | - | let | |
213 | - | let | |
214 | - | let | |
215 | - | let | |
216 | - | let | |
217 | - | let | |
218 | - | let | |
219 | - | let | |
220 | - | let | |
221 | - | let | |
229 | + | let ae = getStringValue(this, ((("Put_" + e) + "_") + ad)) | |
230 | + | let af = getStringValue(this, ((("Put_Start_End_" + e) + "_") + ad)) | |
231 | + | let P = split(af, "_") | |
232 | + | let Q = P[0] | |
233 | + | let R = P[1] | |
234 | + | let S = getStringValue(this, ("1m_btc_" + Q)) | |
235 | + | let T = split(S, "_") | |
236 | + | let U = T[0] | |
237 | + | let V = getStringValue(this, ("1m_btc_" + R)) | |
238 | + | let W = split(V, "_") | |
239 | + | let X = W[0] | |
240 | + | let Y = (parseIntValue(X) - parseIntValue(U)) | |
241 | + | let ag = { | |
222 | 242 | let q = getInteger(this, "Total_Option_Put_Wins") | |
223 | 243 | if ($isInstanceOf(q, "Int")) | |
224 | 244 | then { | |
225 | 245 | let r = q | |
226 | 246 | r | |
227 | 247 | } | |
228 | 248 | else 0 | |
229 | 249 | } | |
230 | - | let | |
231 | - | let | |
250 | + | let ah = (ag + 1) | |
251 | + | let ai = { | |
232 | 252 | let q = getInteger(this, "Total_Option_Put_Lose") | |
233 | 253 | if ($isInstanceOf(q, "Int")) | |
234 | 254 | then { | |
235 | 255 | let r = q | |
236 | 256 | r | |
237 | 257 | } | |
238 | 258 | else 0 | |
239 | 259 | } | |
240 | - | let | |
241 | - | if (( | |
242 | - | then [IntegerEntry("Diff", | |
243 | - | else [IntegerEntry("Diff", | |
260 | + | let aj = (ai + 1) | |
261 | + | if ((Y > 0)) | |
262 | + | then [IntegerEntry("Diff", Y), IntegerEntry("Total_Option_Put_Lose", aj), StringEntry(((((((((((("p_" + e) + "_") + ad) + "_") + Q) + "_") + R) + "_") + U) + "_") + X), "lose"), StringEntry("message", "You lose!"), DeleteEntry(((("Put_" + e) + "_") + ad)), DeleteEntry(((("Put_Start_End_" + e) + "_") + ad))] | |
263 | + | else [IntegerEntry("Diff", Y), IntegerEntry("Total_Option_Put_Wins", ah), StringEntry(((((((((((("p_" + e) + "_") + ad) + "_") + Q) + "_") + R) + "_") + U) + "_") + X), "Win"), StringEntry("message", "You Win!"), DeleteEntry(((("Put_" + e) + "_") + ad)), DeleteEntry(((("Put_Start_End_" + e) + "_") + ad))] | |
244 | 264 | } | |
245 | 265 | ||
246 | 266 | ||
247 | 267 | ||
248 | 268 | @Callable(d) | |
249 | - | func calldata ( | |
250 | - | let i = getStringValue(this, ("1m_btc_" + toString( | |
269 | + | func calldata (ak) = { | |
270 | + | let i = getStringValue(this, ("1m_btc_" + toString(ak))) | |
251 | 271 | let j = split(i, "_") | |
252 | 272 | let k = j[0] | |
253 | - | let | |
254 | - | let | |
255 | - | let | |
273 | + | let al = j[1] | |
274 | + | let am = j[2] | |
275 | + | let an = j[3] | |
256 | 276 | [StringEntry("price", j[0]), StringEntry("time", j[1]), StringEntry("blockheight", j[2]), StringEntry("div", j[3])] | |
257 | 277 | } | |
258 | 278 | ||
259 | 279 | ||
260 | 280 | ||
261 | 281 | @Callable(d) | |
262 | 282 | func OpenOracle () = { | |
263 | 283 | let e = toBase58String(d.caller.bytes) | |
264 | 284 | if ((d.caller != b)) | |
265 | 285 | then throw((("This Address is not Authorized. Only " + toString(b)) + " is Authorized Address to Sign it.")) | |
266 | 286 | else [StringEntry("oracle_status", "Open")] | |
267 | 287 | } | |
268 | 288 | ||
269 | 289 | ||
270 | 290 | ||
271 | 291 | @Callable(d) | |
272 | - | func BlackListAddress ( | |
273 | - | let f = getString(this, ("addr_BLACKLISTED_" + | |
274 | - | let | |
292 | + | func BlackListAddress (ao) = { | |
293 | + | let f = getString(this, ("addr_BLACKLISTED_" + ao)) | |
294 | + | let ap = { | |
275 | 295 | let q = getInteger(this, "Total_Black_Listed_Address") | |
276 | 296 | if ($isInstanceOf(q, "Int")) | |
277 | 297 | then { | |
278 | 298 | let r = q | |
279 | 299 | r | |
280 | 300 | } | |
281 | 301 | else 0 | |
282 | 302 | } | |
283 | - | let | |
303 | + | let aq = (ap + 1) | |
284 | 304 | if ((d.caller != b)) | |
285 | 305 | then throw((("This Address is not Authorized. Only " + toString(b)) + " is Authorized Address to Sign it.")) | |
286 | 306 | else if ((f == "Yes")) | |
287 | 307 | then throw("Address is already available in Blacklist.") | |
288 | - | else [StringEntry(("addr_BLACKLISTED_" + | |
308 | + | else [StringEntry(("addr_BLACKLISTED_" + ao), "Yes"), IntegerEntry("Total_Black_Listed_Address", aq)] | |
289 | 309 | } | |
290 | 310 | ||
291 | 311 | ||
292 | 312 | ||
293 | 313 | @Callable(d) | |
294 | - | func DeleteBlackListAddress ( | |
295 | - | let f = getString(this, ("addr_BLACKLISTED_" + | |
296 | - | let | |
314 | + | func DeleteBlackListAddress (ao) = { | |
315 | + | let f = getString(this, ("addr_BLACKLISTED_" + ao)) | |
316 | + | let ap = { | |
297 | 317 | let q = getInteger(this, "Total_Black_Listed_Address") | |
298 | 318 | if ($isInstanceOf(q, "Int")) | |
299 | 319 | then { | |
300 | 320 | let r = q | |
301 | 321 | r | |
302 | 322 | } | |
303 | 323 | else 0 | |
304 | 324 | } | |
305 | - | let | |
325 | + | let aq = (ap - 1) | |
306 | 326 | if ((d.caller != b)) | |
307 | 327 | then throw((("This Address is not Authorized. Only " + toString(b)) + " is Authorized Address to Sign it.")) | |
308 | 328 | else if ((f == "Yes")) | |
309 | - | then [DeleteEntry(("addr_BLACKLISTED_" + | |
329 | + | then [DeleteEntry(("addr_BLACKLISTED_" + ao)), IntegerEntry("Total_Black_Listed_Address", aq)] | |
310 | 330 | else throw("Address is not available in Blacklist.") | |
311 | 331 | } | |
312 | 332 | ||
313 | 333 | ||
314 | - | @Verifier( | |
315 | - | func | |
334 | + | @Verifier(ar) | |
335 | + | func as () = sigVerify(ar.bodyBytes, ar.proofs[0], ar.senderPublicKey) | |
316 | 336 |
github/deemru/w8io/169f3d6 88.22 ms ◑