tx · 2niry5C9C4w1HLUe4nm6c7WxTP1Wc9akUmWg5dgBu8Gn

3NC9boevS259eTsMAkFAxCPorzK4Z9bpWje:  -0.02200000 Waves

2023.02.03 18:10 [2433601] smart account 3NC9boevS259eTsMAkFAxCPorzK4Z9bpWje > SELF 0.00000000 Waves

{ "type": 13, "id": "2niry5C9C4w1HLUe4nm6c7WxTP1Wc9akUmWg5dgBu8Gn", "fee": 2200000, "feeAssetId": null, "timestamp": 1675436990024, "version": 2, "chainId": 84, "sender": "3NC9boevS259eTsMAkFAxCPorzK4Z9bpWje", "senderPublicKey": "515tSAyMUbAb8kKjcpGDpqALGfCgcwfWmWKKkcBKTcGB", "proofs": [ "5ayao6Sxfcd8r9UQQYvMbgS8Ko6K41pESYKmpL4gLVPpjfivx32K7utKTF9tAD8DbsD7z7aVXAq2rZMWUdmwsoSx" ], "script": "base64:AAIFAAAAAAAAACEIAhIAEgASAwoBCBIDCgEIEgMKAQESABIDCgEIEgMKAQgAAAAFAAAAABREYXBwX0FkZHJlc3NfcHViX2tleQEAAAAgvHZQICGE3/5b1wAhqlA9b7vNXmYDAjYF3VxTne0xkiQAAAAAGW9yYWNsZV9jb250cm9sbGVyX2FkZHJlc3MJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEFAAAAFERhcHBfQWRkcmVzc19wdWJfa2V5AAAAAAtVU0RUQXNzZXRJRAEAAAAg299FA5kXGxb53VOSRJdbjVcoBZXDYeWb0BVUdKQaxVUAAAAAEm1pbmltdW1fb3JkZXJfc2l6ZQAAAAAAAA9CQAAAAAASbWF4aW11bV9vcmRlcl9zaXplAAAAAAAF9eEAAAAACAAAAAFpAQAAAA9wbGFjZW9wdGlvbkNhbGwAAAAABAAAAA1jYWxsZXJhZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAA3BtdAMJAAAAAAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAkAAAIAAAABAgAAADdObyBwYXltZW50IGF0dGFjaGVkLCBQbGVhc2UgQXR0YWNoIFRva2VuIGluIHBheW1lbnRbMV0uBAAAAA1pZkJsYWNrbGlzdGVkCQAEHQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAARYWRkcl9CTEFDS0xJU1RFRF8FAAAADWNhbGxlcmFkZHJlc3MEAAAAEnJlYWRfb3JhY2xlX3N0YXR1cwkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwIAAAANb3JhY2xlX3N0YXR1cwQAAAAUcmVhZF9PcHRpb25Db3VudGVySUQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMCAAAADjFtX2NvbnRyYWN0X2lkBAAAAApnZXRidGNkYXRhCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzCQABLAAAAAICAAAABzFtX2J0Y18JAAGkAAAAAQUAAAAUcmVhZF9PcHRpb25Db3VudGVySUQEAAAABnN3YXBMaQkABLUAAAACBQAAAApnZXRidGNkYXRhAgAAAAFfBAAAAAVwcmljZQkAAZEAAAACBQAAAAZzd2FwTGkAAAAAAAAAAAAEAAAABWJsb2NrCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAGc3dhcExpAAAAAAAAAAACBAAAAA1jaGVja2Jsb2NrZ2FwCQAAZQAAAAIFAAAABmhlaWdodAUAAAAFYmxvY2sEAAAAEk9waW9uRXhwaXJlQ291bnRlcgAAAAAAAAAAAQQAAAAVT3B0aW9uRXhwaXJlQ291bnRlcklECQAAZAAAAAIFAAAAFHJlYWRfT3B0aW9uQ291bnRlcklEBQAAABJPcGlvbkV4cGlyZUNvdW50ZXIEAAAAFFByZXZpb3VzT3B0aW9uT3JkZXJzBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMCAAAAE1RvdGFsX09wdGlvbl9PcmRlcnMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAQAAAARVG90YWxPcHRpb25PcmRlcnMJAABkAAAAAgUAAAAUUHJldmlvdXNPcHRpb25PcmRlcnMAAAAAAAAAAAEEAAAAJVByZXZpb3VzT3B0aW9uT3JkZXJzaW5TcGVjaWZpY0NvdW50ZXIEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAABRUb3RhbF9PcHRpb25fT3JkZXJzXwkAAaQAAAABBQAAABRyZWFkX09wdGlvbkNvdW50ZXJJRAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAACJUb3RhbE9wdGlvbk9yZGVyc2luU3BlY2lmaWNDb3VudGVyCQAAZAAAAAIFAAAAJVByZXZpb3VzT3B0aW9uT3JkZXJzaW5TcGVjaWZpY0NvdW50ZXIAAAAAAAAAAAEEAAAADFByZXZpb3VzQ2FsbAQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzAgAAAAtUb3RhbF9DYWxscwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAAAlUb3RhbENhbGwJAABkAAAAAgUAAAAMUHJldmlvdXNDYWxsAAAAAAAAAAABBAAAAB1QcmV2aW91c0NhbGxpblNwZWNpZmljQ291bnRlcgQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzCQABLAAAAAICAAAADFRvdGFsX0NhbGxzXwkAAaQAAAABBQAAABRyZWFkX09wdGlvbkNvdW50ZXJJRAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAABpUb3RhbENhbGxpblNwZWNpZmljQ291bnRlcgkAAGQAAAACBQAAAB1QcmV2aW91c0NhbGxpblNwZWNpZmljQ291bnRlcgAAAAAAAAAAAQQAAAAQUHJldmlvdXNVc2VyQ2FsbAQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAADWNhbGxlcmFkZHJlc3MCAAAADF9Ub3RhbF9DYWxscwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAAA1Ub3RhbFVzZXJDYWxsCQAAZAAAAAIFAAAAEFByZXZpb3VzVXNlckNhbGwAAAAAAAAAAAEEAAAAIVByZXZpb3VzVXNlckNhbGxpblNwZWNpZmljQ291bnRlcgQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgUAAAANY2FsbGVyYWRkcmVzcwIAAAANX1RvdGFsX0NhbGxzXwkAAaQAAAABBQAAABRyZWFkX09wdGlvbkNvdW50ZXJJRAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAAB5Ub3RhbFVzZXJDYWxsaW5TcGVjaWZpY0NvdW50ZXIJAABkAAAAAgUAAAAhUHJldmlvdXNVc2VyQ2FsbGluU3BlY2lmaWNDb3VudGVyAAAAAAAAAAABAwkAAGYAAAACBQAAAA1jaGVja2Jsb2NrZ2FwAAAAAAAAAAACCQAAAgAAAAECAAAANVNvbWV0aGluZyBXcm9uZyB3aXRoIE9yYWNsZSBvciBIZWlnaHQgaXMgbm90IG1hdGNoZWQuAwkAAAAAAAACBQAAABJyZWFkX29yYWNsZV9zdGF0dXMCAAAABUNsb3NlCQAAAgAAAAECAAAAMU9yYWNsZSBpcyBjbG9zZWQuIFdhaXQgVW50aWwgT3JhY2xlIGlzIFR1cm5lZCBPbi4DCQAAAAAAAAIFAAAADWlmQmxhY2tsaXN0ZWQCAAAAA1llcwkAAAIAAAABCQABLAAAAAIFAAAADWNhbGxlcmFkZHJlc3MCAAAAPiBBZGRyZXNzIGlzIEJsYWNrbGlzdGVkLiBQbGVhc2UgY29udGFjdCBBZG1pbiB0byBXaGl0ZWxpc3QgaXQuAwkBAAAAAiE9AAAAAggFAAAAA3BtdAAAAAdhc3NldElkBQAAAAtVU0RUQXNzZXRJRAkAAAIAAAABCQABLAAAAAICAAAAMFdyb25nIEFzc2V0IEF0dGFjaGVkLiBQbGVhc2UgYXR0YWNoIHRoZSBhc3NldElkIAkAAlgAAAABBQAAAAtVU0RUQXNzZXRJRAMJAABmAAAAAgUAAAASbWluaW11bV9vcmRlcl9zaXplCAUAAAADcG10AAAABmFtb3VudAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAfUGxhY2VkIE9yZGVyIFNpemUgaXMgbGVzcyB0aGFuIAkAAaQAAAABCQAAaQAAAAIFAAAAEm1pbmltdW1fb3JkZXJfc2l6ZQAAAAAAAA9CQAIAAAAGIFVTRFQuAwkAAGYAAAACCAUAAAADcG10AAAABmFtb3VudAUAAAASbWF4aW11bV9vcmRlcl9zaXplCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAB9QbGFjZWQgT3JkZXIgU2l6ZSBpcyBtb3JlIHRoYW4gCQABpAAAAAEJAABpAAAAAgUAAAASbWF4aW11bV9vcmRlcl9zaXplAAAAAAAAD0JAAgAAAAYgVVNEVC4JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAFQ2FsbF8FAAAADWNhbGxlcmFkZHJlc3MCAAAAAV8JAAGkAAAAAQUAAAANVG90YWxVc2VyQ2FsbAUAAAAFcHJpY2UJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAPQ2FsbF9TdGFydF9FbmRfBQAAAA1jYWxsZXJhZGRyZXNzAgAAAAFfCQABpAAAAAEFAAAADVRvdGFsVXNlckNhbGwJAAEsAAAAAgkAASwAAAACCQABpAAAAAEFAAAAFHJlYWRfT3B0aW9uQ291bnRlcklEAgAAAAFfCQABpAAAAAEFAAAAFU9wdGlvbkV4cGlyZUNvdW50ZXJJRAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAATVG90YWxfT3B0aW9uX09yZGVycwUAAAARVG90YWxPcHRpb25PcmRlcnMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgIAAAAUVG90YWxfT3B0aW9uX09yZGVyc18JAAGkAAAAAQUAAAAUcmVhZF9PcHRpb25Db3VudGVySUQFAAAAIlRvdGFsT3B0aW9uT3JkZXJzaW5TcGVjaWZpY0NvdW50ZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAC1RvdGFsX0NhbGxzBQAAAAlUb3RhbENhbGwJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgIAAAAMVG90YWxfQ2FsbHNfCQABpAAAAAEFAAAAFHJlYWRfT3B0aW9uQ291bnRlcklEBQAAABpUb3RhbENhbGxpblNwZWNpZmljQ291bnRlcgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAA1jYWxsZXJhZGRyZXNzAgAAAAxfVG90YWxfQ2FsbHMFAAAADVRvdGFsVXNlckNhbGwJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACBQAAAA1jYWxsZXJhZGRyZXNzAgAAAA1fVG90YWxfQ2FsbHNfCQABpAAAAAEFAAAAFHJlYWRfT3B0aW9uQ291bnRlcklEBQAAAB5Ub3RhbFVzZXJDYWxsaW5TcGVjaWZpY0NvdW50ZXIFAAAAA25pbAAAAAFpAQAAAA5wbGFjZW9wdGlvblB1dAAAAAAEAAAADWNhbGxlcmFkZHJlc3MJAAJY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IlRvdGFsT3B0aW9uT3JkZXJzaW5TcGVjaWZpY0NvdW50ZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAClRvdGFsX1B1dHMFAAAACFRvdGFsUHV0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAICAAAAC1RvdGFsX1B1dHNfCQABpAAAAAEFAAAAFHJlYWRfT3B0aW9uQ291bnRlcklEBQAAABlUb3RhbFB1dGluU3BlY2lmaWNDb3VudGVyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAADWNhbGxlcmFkZHJlc3MCAAAAC19Ub3RhbF9QdXRzBQAAAAxUb3RhbFVzZXJQdXQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACBQAAAA1jYWxsZXJhZGRyZXNzAgAAAAxfVG90YWxfUHV0c18JAAGkAAAAAQUAAAAUcmVhZF9PcHRpb25Db3VudGVySUQFAAAAHVRvdGFsVXNlclB1dGluU3BlY2lmaWNDb3VudGVyBQAAAANuaWwAAAABaQEAAAAJQ2xhaW1DYWxsAAAAAQAAAA1DYWxsX1NlcXVlbmNlBAAAAA1jYWxsZXJhZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAA3BtdAMJAAAAAAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAkAAAIAAAABAgAAADhObyBwYXltZW50IGF0dGFjaGVkLCBQbGVhc2UgQXR0YWNoIFRva2VucyBpbiBwYXltZW50WzFdLgQAAAASZ2V0T3B0aW9uQ2FsbFByaWNlCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAVDYWxsXwUAAAANY2FsbGVyYWRkcmVzcwIAAAABXwUAAAANQ2FsbF9TZXF1ZW5jZQQAAAAaZ2V0T3B0aW9uQ2FsbF9TZXF1ZW5jZWRhdGEJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAD0NhbGxfU3RhcnRfRW5kXwUAAAANY2FsbGVyYWRkcmVzcwIAAAABXwUAAAANQ2FsbF9TZXF1ZW5jZQQAAAAUc3BsaXRTdGFydEVuZENvdW50ZXIJAAS1AAAAAgUAAAAaZ2V0T3B0aW9uQ2FsbF9TZXF1ZW5jZWRhdGECAAAAAV8EAAAAD2dldFN0YXJ0Q291bnRlcgkAAZEAAAACBQAAABRzcGxpdFN0YXJ0RW5kQ291bnRlcgAAAAAAAAAAAAQAAAANZ2V0RW5kQ291bnRlcgkAAZEAAAACBQAAABRzcGxpdFN0YXJ0RW5kQ291bnRlcgAAAAAAAAAAAQQAAAAYZ2V0YnRjZGF0YUF0U3RhcnRDb3VudGVyCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzCQABLAAAAAICAAAABzFtX2J0Y18FAAAAD2dldFN0YXJ0Q291bnRlcgQAAAAbc3BsaXRidGNwcmljZUF0U3RhcnRDb3VudGVyCQAEtQAAAAIFAAAAGGdldGJ0Y2RhdGFBdFN0YXJ0Q291bnRlcgIAAAABXwQAAAAZZ2V0YnRjcHJpY2VBdFN0YXJ0Q291bnRlcgkAAZEAAAACBQAAABtzcGxpdGJ0Y3ByaWNlQXRTdGFydENvdW50ZXIAAAAAAAAAAAAEAAAAFmdldGJ0Y2RhdGFBdEVuZENvdW50ZXIJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAHMW1fYnRjXwUAAAANZ2V0RW5kQ291bnRlcgQAAAAZc3BsaXRidGNwcmljZUF0RW5kQ291bnRlcgkABLUAAAACBQAAABZnZXRidGNkYXRhQXRFbmRDb3VudGVyAgAAAAFfBAAAABdnZXRidGNwcmljZUF0RW5kQ291bnRlcgkAAZEAAAACBQAAABlzcGxpdGJ0Y3ByaWNlQXRFbmRDb3VudGVyAAAAAAAAAAAABAAAAAlwcmljZWRpZmYJAABlAAAAAgkBAAAADXBhcnNlSW50VmFsdWUAAAABBQAAABdnZXRidGNwcmljZUF0RW5kQ291bnRlcgkBAAAADXBhcnNlSW50VmFsdWUAAAABBQAAABlnZXRidGNw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DWNhbGxlcmFkZHJlc3MCAAAAAV8FAAAADUNhbGxfU2VxdWVuY2UFAAAAA25pbAAAAAFpAQAAAAhDbGFpbVB1dAAAAAEAAAAMUHV0X1NlcXVlbmNlBAAAAA1jYWxsZXJhZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAA3BtdAMJAAAAAAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAkAAAIAAAABAgAAADhObyBwYXltZW50IGF0dGFjaGVkLCBQbGVhc2UgQXR0YWNoIFRva2VucyBpbiBwYXltZW50WzFdLgQAAAARZ2V0T3B0aW9uUHV0UHJpY2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAABFB1dF8FAAAADWNhbGxlcmFkZHJlc3MCAAAAAV8FAAAADFB1dF9TZXF1ZW5jZQQAAAAZZ2V0T3B0aW9uUHV0X1NlcXVlbmNlZGF0YQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAOUHV0X1N0YXJ0X0VuZF8FAAAADWNhbGxlcmFkZHJlc3MCAAAAAV8FAAAADFB1dF9TZXF1ZW5jZQQAAAAUc3BsaXRTdGFydEVuZENvdW50ZXIJAAS1AAAAAgUAAAAZZ2V0T3B0aW9uUHV0X1NlcXVlbmNlZGF0YQIAAAABXwQAAAAPZ2V0U3RhcnRDb3VudGVyCQABkQAAAAIFAAAAFHNwbGl0U3RhcnRFbmRDb3VudGVyAAAAAAAAAAAABAAAAA1nZXRFbmRDb3VudGVyCQABkQAAAAIFAAAAFHNwbGl0U3RhcnRFbmRDb3VudGVyAAAAAAAAAAABBAAAABhnZXRidGNkYXRhQXRTdGFydENvdW50ZXIJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAHMW1fYnRjXwUAAAAPZ2V0U3RhcnRDb3VudGVyBAAAABtzcGxpdGJ0Y3ByaWNlQXRTdGFydENvdW50ZXIJAAS1AAAAAgUAAAAYZ2V0YnRjZGF0YUF0U3RhcnRDb3VudGVyAgAAAAFfBAAAABlnZXRidGNwcmljZUF0U3RhcnRDb3VudGVyCQABkQAAAAIFAAAAG3NwbGl0YnRjcHJpY2VBdFN0YXJ0Q291bnRlcgAAAAAAAAAAAAQAAAAWZ2V0YnRjZGF0YUF0RW5kQ291bnRlcgkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAAAcxbV9idGNfBQAAAA1nZXRFbmRDb3VudGVyBAAAABlzcGxpdGJ0Y3ByaWNlQXRFbmRDb3VudGVyCQAEtQAAAAIFAAAAFmdldGJ0Y2RhdGFBdEVuZENvdW50ZXICAAAAAV8EAAAAF2dldGJ0Y3ByaWNlQXRFbmRDb3VudGVyCQABkQAAAAIFAAAAGXNwbGl0YnRjcHJpY2VBdEVuZENvdW50ZXIAAAAAAAAAAAAEAAAACXByaWNlZGlmZgkAAGUAAAACCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEFAAAAF2dldGJ0Y3ByaWNlQXRFbmRDb3VudGVyCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEFAAAAGWdldGJ0Y3ByaWNlQXRTdGFydENvdW50ZXIEAAAADlByZXZpb3VzUHV0V2luBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMCAAAAFVRvdGFsX09wdGlvbl9QdXRfV2lucwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAAAtUb3RhbFB1dFdpbgkAAGQAAAACBQAAAA5QcmV2aW91c1B1dFdpbgAAAAAAAAAAAQQAAAAPUHJldmlvdXNQdXRMb3NlBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMCAAAAFVRvdGFsX09wdGlvbl9QdXRfTG9zZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAAAxUb3RhbFB1dExvc2UJAABkAAAAAgUAAAAPUHJldmlvdXNQdXRMb3NlAAAAAAAAAAABAwkAAGcAAAACBQAAAAlwcmljZWRp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AAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAABlvcmFjbGVfY29udHJvbGxlcl9hZGRyZXNzCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAACVUaGlzIEFkZHJlc3MgaXMgbm90IEF1dGhvcml6ZWQuIE9ubHkgCQAEJQAAAAEFAAAAGW9yYWNsZV9jb250cm9sbGVyX2FkZHJlc3MCAAAAIiBpcyBBdXRob3JpemVkIEFkZHJlc3MgdG8gU2lnbiBpdC4DCQAAAAAAAAIFAAAADWlmQmxhY2tsaXN0ZWQCAAAAA1llcwkAAAIAAAABAgAAACpBZGRyZXNzIGlzIGFscmVhZHkgYXZhaWxhYmxlIGluIEJsYWNrbGlzdC4JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACAgAAABFhZGRyX0JMQUNLTElTVEVEXwUAAAALVXNlckFkZHJlc3MCAAAAA1llcwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAaVG90YWxfQmxhY2tfTGlzdGVkX0FkZHJlc3MFAAAAFVRvdGFsQmxhY2tMaXN0QWRkcmVzcwUAAAADbmlsAAAAAWkBAAAAFkRlbGV0ZUJsYWNrTGlzdEFkZHJlc3MAAAABAAAAC1VzZXJBZGRyZXNzBAAAAA1pZkJsYWNrbGlzdGVkCQAEHQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAARYWRkcl9CTEFDS0xJU1RFRF8FAAAAC1VzZXJBZGRyZXNzBAAAABhQcmV2aW91c0JsYWNrTGlzdEFkZHJlc3MEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwIAAAAaVG90YWxfQmxhY2tfTGlzdGVkX0FkZHJlc3MDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAQAAAAVVG90YWxCbGFja0xpc3RBZGRyZXNzCQAAZQAAAAIFAAAAGFByZXZpb3VzQmxhY2tMaXN0QWRkcmVzcwAAAAAAAAAAAQMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAZb3JhY2xlX2NvbnRyb2xsZXJfYWRkcmVzcwkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAlVGhpcyBBZGRyZXNzIGlzIG5vdCBBdXRob3JpemVkLiBPbmx5IAkABCUAAAABBQAAABlvcmFjbGVfY29udHJvbGxlcl9hZGRyZXNzAgAAACIgaXMgQXV0aG9yaXplZCBBZGRyZXNzIHRvIFNpZ24gaXQuAwkAAAAAAAACBQAAAA1pZkJsYWNrbGlzdGVkAgAAAANZZXMJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkAASwAAAACAgAAABFhZGRyX0JMQUNLTElTVEVEXwUAAAALVXNlckFkZHJlc3MJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAGlRvdGFsX0JsYWNrX0xpc3RlZF9BZGRyZXNzBQAAABVUb3RhbEJsYWNrTGlzdEFkZHJlc3MFAAAAA25pbAkAAAIAAAABAgAAACZBZGRyZXNzIGlzIG5vdCBhdmFpbGFibGUgaW4gQmxhY2tsaXN0LgAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5TXhIjQ==", "height": 2433601, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9W9wWAkEckevY4KL6PgUUGDmoSj39rLFroJJsemok1o5 Next: 9qyEoULFrrAhiX6cPYioEgRQ5yu7EzQ66ZCCqupYx6Ex Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let Dapp_Address_pub_key = base58'CYbv2nupcWmnVFixN6Q2sxd9ChbDsq1KqXQ66VjsZBJE'
4+let Dapp_Address_pub_key = base58'DggHTfM1QvhBop9XaxzwBCeX1V6ksYiyoGvccEk3H8T5'
55
66 let oracle_controller_address = addressFromPublicKey(Dapp_Address_pub_key)
77
8-let USDTAssetID = base58''
8+let USDTAssetID = base58'FoHkJSWMmcdGHCGZnymUU5UvW3sqWTP2NBq3mo7wVxGt'
9+
10+let minimum_order_size = 1000000
11+
12+let maximum_order_size = 100000000
913
1014 @Callable(i)
1115 func placeoptionCall () = {
1216 let calleraddress = toBase58String(i.caller.bytes)
17+ let pmt = if ((size(i.payments) == 1))
18+ then i.payments[0]
19+ else throw("No payment attached, Please Attach Token in payment[1].")
1320 let ifBlacklisted = getString(this, ("addr_BLACKLISTED_" + calleraddress))
1421 let read_oracle_status = getStringValue(this, "oracle_status")
1522 let read_OptionCounterID = getIntegerValue(this, "1m_contract_id")
6875 then throw("Oracle is closed. Wait Until Oracle is Turned On.")
6976 else if ((ifBlacklisted == "Yes"))
7077 then throw((calleraddress + " Address is Blacklisted. Please contact Admin to Whitelist it."))
71- else [StringEntry(((("Call_" + calleraddress) + "_") + toString(TotalUserCall)), price), StringEntry(((("Call_Start_End_" + calleraddress) + "_") + toString(TotalUserCall)), ((toString(read_OptionCounterID) + "_") + toString(OptionExpireCounterID))), IntegerEntry("Total_Option_Orders", TotalOptionOrders), IntegerEntry(("Total_Option_Orders_" + toString(read_OptionCounterID)), TotalOptionOrdersinSpecificCounter), IntegerEntry("Total_Calls", TotalCall), IntegerEntry(("Total_Calls_" + toString(read_OptionCounterID)), TotalCallinSpecificCounter), IntegerEntry((calleraddress + "_Total_Calls"), TotalUserCall), IntegerEntry(((calleraddress + "_Total_Calls_") + toString(read_OptionCounterID)), TotalUserCallinSpecificCounter)]
78+ else if ((pmt.assetId != USDTAssetID))
79+ then throw(("Wrong Asset Attached. Please attach the assetId " + toBase58String(USDTAssetID)))
80+ else if ((minimum_order_size > pmt.amount))
81+ then throw((("Placed Order Size is less than " + toString((minimum_order_size / 1000000))) + " USDT."))
82+ else if ((pmt.amount > maximum_order_size))
83+ then throw((("Placed Order Size is more than " + toString((maximum_order_size / 1000000))) + " USDT."))
84+ else [StringEntry(((("Call_" + calleraddress) + "_") + toString(TotalUserCall)), price), StringEntry(((("Call_Start_End_" + calleraddress) + "_") + toString(TotalUserCall)), ((toString(read_OptionCounterID) + "_") + toString(OptionExpireCounterID))), IntegerEntry("Total_Option_Orders", TotalOptionOrders), IntegerEntry(("Total_Option_Orders_" + toString(read_OptionCounterID)), TotalOptionOrdersinSpecificCounter), IntegerEntry("Total_Calls", TotalCall), IntegerEntry(("Total_Calls_" + toString(read_OptionCounterID)), TotalCallinSpecificCounter), IntegerEntry((calleraddress + "_Total_Calls"), TotalUserCall), IntegerEntry(((calleraddress + "_Total_Calls_") + toString(read_OptionCounterID)), TotalUserCallinSpecificCounter)]
7285 }
7386
7487
7689 @Callable(i)
7790 func placeoptionPut () = {
7891 let calleraddress = toBase58String(i.caller.bytes)
92+ let pmt = if ((size(i.payments) == 1))
93+ then i.payments[0]
94+ else throw("No payment attached, Please Attach Token in payment[1].")
7995 let ifBlacklisted = getString(this, ("addr_BLACKLISTED_" + calleraddress))
8096 let read_oracle_status = getStringValue(this, "oracle_status")
8197 let read_OptionCounterID = getIntegerValue(this, "1m_contract_id")
134150 then throw("Oracle is closed. Wait Until Oracle is Turned On.")
135151 else if ((ifBlacklisted == "Yes"))
136152 then throw((calleraddress + " Address is Blacklisted. Please contact Admin to Whitelist it."))
137- else [StringEntry(((("Put_" + calleraddress) + "_") + toString(TotalUserPut)), price), StringEntry(((("Put_Start_End_" + calleraddress) + "_") + toString(TotalUserPut)), ((toString(read_OptionCounterID) + "_") + toString(OptionExpireCounterID))), IntegerEntry("Total_Option_Orders", TotalOptionOrders), IntegerEntry(("Total_Option_Orders_" + toString(read_OptionCounterID)), TotalOptionOrdersinSpecificCounter), IntegerEntry("Total_Puts", TotalPut), IntegerEntry(("Total_Puts_" + toString(read_OptionCounterID)), TotalPutinSpecificCounter), IntegerEntry((calleraddress + "_Total_Puts"), TotalUserPut), IntegerEntry(((calleraddress + "_Total_Puts_") + toString(read_OptionCounterID)), TotalUserPutinSpecificCounter)]
153+ else if ((pmt.assetId != USDTAssetID))
154+ then throw(("Wrong Asset Attached. Please attach the assetId " + toBase58String(USDTAssetID)))
155+ else if ((minimum_order_size > pmt.amount))
156+ then throw((("Placed Order Size is less than " + toString((minimum_order_size / 1000000))) + " USDT."))
157+ else if ((pmt.amount > maximum_order_size))
158+ then throw((("Placed Order Size is more than " + toString((maximum_order_size / 1000000))) + " USDT."))
159+ else [StringEntry(((("Put_" + calleraddress) + "_") + toString(TotalUserPut)), price), StringEntry(((("Put_Start_End_" + calleraddress) + "_") + toString(TotalUserPut)), ((toString(read_OptionCounterID) + "_") + toString(OptionExpireCounterID))), IntegerEntry("Total_Option_Orders", TotalOptionOrders), IntegerEntry(("Total_Option_Orders_" + toString(read_OptionCounterID)), TotalOptionOrdersinSpecificCounter), IntegerEntry("Total_Puts", TotalPut), IntegerEntry(("Total_Puts_" + toString(read_OptionCounterID)), TotalPutinSpecificCounter), IntegerEntry((calleraddress + "_Total_Puts"), TotalUserPut), IntegerEntry(((calleraddress + "_Total_Puts_") + toString(read_OptionCounterID)), TotalUserPutinSpecificCounter)]
138160 }
139161
140162
171193 0
172194 }
173195 let TotalCallLose = (PreviousCallLose + 1)
174- if ((0 > pricediff))
196+ if ((0 >= pricediff))
175197 then [IntegerEntry("Diff", pricediff), IntegerEntry("Total_Option_Call_Lose", TotalCallLose), StringEntry(((((((((((("c_" + calleraddress) + "_") + Call_Sequence) + "_") + getStartCounter) + "_") + getEndCounter) + "_") + getbtcpriceAtStartCounter) + "_") + getbtcpriceAtEndCounter), "lose"), StringEntry("message", "You lose!"), DeleteEntry(((("Call_" + calleraddress) + "_") + Call_Sequence)), DeleteEntry(((("Call_Start_End_" + calleraddress) + "_") + Call_Sequence))]
176198 else [IntegerEntry("Diff", pricediff), IntegerEntry("Total_Option_Call_Wins", TotalCallWin), StringEntry(((((((((((("c_" + calleraddress) + "_") + Call_Sequence) + "_") + getStartCounter) + "_") + getEndCounter) + "_") + getbtcpriceAtStartCounter) + "_") + getbtcpriceAtEndCounter), "Win"), StringEntry("message", "You Win!"), DeleteEntry(((("Call_" + calleraddress) + "_") + Call_Sequence)), DeleteEntry(((("Call_Start_End_" + calleraddress) + "_") + Call_Sequence))]
177199 }
210232 0
211233 }
212234 let TotalPutLose = (PreviousPutLose + 1)
213- if ((pricediff > 0))
235+ if ((pricediff >= 0))
214236 then [IntegerEntry("Diff", pricediff), IntegerEntry("Total_Option_Put_Lose", TotalPutLose), StringEntry(((((((((((("p_" + calleraddress) + "_") + Put_Sequence) + "_") + getStartCounter) + "_") + getEndCounter) + "_") + getbtcpriceAtStartCounter) + "_") + getbtcpriceAtEndCounter), "lose"), StringEntry("message", "You lose!"), DeleteEntry(((("Put_" + calleraddress) + "_") + Put_Sequence)), DeleteEntry(((("Put_Start_End_" + calleraddress) + "_") + Put_Sequence))]
215237 else [IntegerEntry("Diff", pricediff), IntegerEntry("Total_Option_Put_Wins", TotalPutWin), StringEntry(((((((((((("p_" + calleraddress) + "_") + Put_Sequence) + "_") + getStartCounter) + "_") + getEndCounter) + "_") + getbtcpriceAtStartCounter) + "_") + getbtcpriceAtEndCounter), "Win"), StringEntry("message", "You Win!"), DeleteEntry(((("Put_" + calleraddress) + "_") + Put_Sequence)), DeleteEntry(((("Put_Start_End_" + calleraddress) + "_") + Put_Sequence))]
216238 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let Dapp_Address_pub_key = base58'CYbv2nupcWmnVFixN6Q2sxd9ChbDsq1KqXQ66VjsZBJE'
4+let Dapp_Address_pub_key = base58'DggHTfM1QvhBop9XaxzwBCeX1V6ksYiyoGvccEk3H8T5'
55
66 let oracle_controller_address = addressFromPublicKey(Dapp_Address_pub_key)
77
8-let USDTAssetID = base58''
8+let USDTAssetID = base58'FoHkJSWMmcdGHCGZnymUU5UvW3sqWTP2NBq3mo7wVxGt'
9+
10+let minimum_order_size = 1000000
11+
12+let maximum_order_size = 100000000
913
1014 @Callable(i)
1115 func placeoptionCall () = {
1216 let calleraddress = toBase58String(i.caller.bytes)
17+ let pmt = if ((size(i.payments) == 1))
18+ then i.payments[0]
19+ else throw("No payment attached, Please Attach Token in payment[1].")
1320 let ifBlacklisted = getString(this, ("addr_BLACKLISTED_" + calleraddress))
1421 let read_oracle_status = getStringValue(this, "oracle_status")
1522 let read_OptionCounterID = getIntegerValue(this, "1m_contract_id")
1623 let getbtcdata = getStringValue(this, ("1m_btc_" + toString(read_OptionCounterID)))
1724 let swapLi = split(getbtcdata, "_")
1825 let price = swapLi[0]
1926 let block = parseIntValue(swapLi[2])
2027 let checkblockgap = (height - block)
2128 let OpionExpireCounter = 1
2229 let OptionExpireCounterID = (read_OptionCounterID + OpionExpireCounter)
2330 let PreviousOptionOrders = match getInteger(this, "Total_Option_Orders") {
2431 case a: Int =>
2532 a
2633 case _ =>
2734 0
2835 }
2936 let TotalOptionOrders = (PreviousOptionOrders + 1)
3037 let PreviousOptionOrdersinSpecificCounter = match getInteger(this, ("Total_Option_Orders_" + toString(read_OptionCounterID))) {
3138 case a: Int =>
3239 a
3340 case _ =>
3441 0
3542 }
3643 let TotalOptionOrdersinSpecificCounter = (PreviousOptionOrdersinSpecificCounter + 1)
3744 let PreviousCall = match getInteger(this, "Total_Calls") {
3845 case a: Int =>
3946 a
4047 case _ =>
4148 0
4249 }
4350 let TotalCall = (PreviousCall + 1)
4451 let PreviousCallinSpecificCounter = match getInteger(this, ("Total_Calls_" + toString(read_OptionCounterID))) {
4552 case a: Int =>
4653 a
4754 case _ =>
4855 0
4956 }
5057 let TotalCallinSpecificCounter = (PreviousCallinSpecificCounter + 1)
5158 let PreviousUserCall = match getInteger(this, (calleraddress + "_Total_Calls")) {
5259 case a: Int =>
5360 a
5461 case _ =>
5562 0
5663 }
5764 let TotalUserCall = (PreviousUserCall + 1)
5865 let PreviousUserCallinSpecificCounter = match getInteger(this, ((calleraddress + "_Total_Calls_") + toString(read_OptionCounterID))) {
5966 case a: Int =>
6067 a
6168 case _ =>
6269 0
6370 }
6471 let TotalUserCallinSpecificCounter = (PreviousUserCallinSpecificCounter + 1)
6572 if ((checkblockgap > 2))
6673 then throw("Something Wrong with Oracle or Height is not matched.")
6774 else if ((read_oracle_status == "Close"))
6875 then throw("Oracle is closed. Wait Until Oracle is Turned On.")
6976 else if ((ifBlacklisted == "Yes"))
7077 then throw((calleraddress + " Address is Blacklisted. Please contact Admin to Whitelist it."))
71- else [StringEntry(((("Call_" + calleraddress) + "_") + toString(TotalUserCall)), price), StringEntry(((("Call_Start_End_" + calleraddress) + "_") + toString(TotalUserCall)), ((toString(read_OptionCounterID) + "_") + toString(OptionExpireCounterID))), IntegerEntry("Total_Option_Orders", TotalOptionOrders), IntegerEntry(("Total_Option_Orders_" + toString(read_OptionCounterID)), TotalOptionOrdersinSpecificCounter), IntegerEntry("Total_Calls", TotalCall), IntegerEntry(("Total_Calls_" + toString(read_OptionCounterID)), TotalCallinSpecificCounter), IntegerEntry((calleraddress + "_Total_Calls"), TotalUserCall), IntegerEntry(((calleraddress + "_Total_Calls_") + toString(read_OptionCounterID)), TotalUserCallinSpecificCounter)]
78+ else if ((pmt.assetId != USDTAssetID))
79+ then throw(("Wrong Asset Attached. Please attach the assetId " + toBase58String(USDTAssetID)))
80+ else if ((minimum_order_size > pmt.amount))
81+ then throw((("Placed Order Size is less than " + toString((minimum_order_size / 1000000))) + " USDT."))
82+ else if ((pmt.amount > maximum_order_size))
83+ then throw((("Placed Order Size is more than " + toString((maximum_order_size / 1000000))) + " USDT."))
84+ else [StringEntry(((("Call_" + calleraddress) + "_") + toString(TotalUserCall)), price), StringEntry(((("Call_Start_End_" + calleraddress) + "_") + toString(TotalUserCall)), ((toString(read_OptionCounterID) + "_") + toString(OptionExpireCounterID))), IntegerEntry("Total_Option_Orders", TotalOptionOrders), IntegerEntry(("Total_Option_Orders_" + toString(read_OptionCounterID)), TotalOptionOrdersinSpecificCounter), IntegerEntry("Total_Calls", TotalCall), IntegerEntry(("Total_Calls_" + toString(read_OptionCounterID)), TotalCallinSpecificCounter), IntegerEntry((calleraddress + "_Total_Calls"), TotalUserCall), IntegerEntry(((calleraddress + "_Total_Calls_") + toString(read_OptionCounterID)), TotalUserCallinSpecificCounter)]
7285 }
7386
7487
7588
7689 @Callable(i)
7790 func placeoptionPut () = {
7891 let calleraddress = toBase58String(i.caller.bytes)
92+ let pmt = if ((size(i.payments) == 1))
93+ then i.payments[0]
94+ else throw("No payment attached, Please Attach Token in payment[1].")
7995 let ifBlacklisted = getString(this, ("addr_BLACKLISTED_" + calleraddress))
8096 let read_oracle_status = getStringValue(this, "oracle_status")
8197 let read_OptionCounterID = getIntegerValue(this, "1m_contract_id")
8298 let getbtcdata = getStringValue(this, ("1m_btc_" + toString(read_OptionCounterID)))
8399 let swapLi = split(getbtcdata, "_")
84100 let price = swapLi[0]
85101 let block = parseIntValue(swapLi[2])
86102 let checkblockgap = (height - block)
87103 let OpionExpireCounter = 1
88104 let OptionExpireCounterID = (read_OptionCounterID + OpionExpireCounter)
89105 let PreviousOptionOrders = match getInteger(this, "Total_Option_Orders") {
90106 case a: Int =>
91107 a
92108 case _ =>
93109 0
94110 }
95111 let TotalOptionOrders = (PreviousOptionOrders + 1)
96112 let PreviousOptionOrdersinSpecificCounter = match getInteger(this, ("Total_Option_Orders_" + toString(read_OptionCounterID))) {
97113 case a: Int =>
98114 a
99115 case _ =>
100116 0
101117 }
102118 let TotalOptionOrdersinSpecificCounter = (PreviousOptionOrdersinSpecificCounter + 1)
103119 let PreviousPut = match getInteger(this, "Total_Puts") {
104120 case a: Int =>
105121 a
106122 case _ =>
107123 0
108124 }
109125 let TotalPut = (PreviousPut + 1)
110126 let PreviousPutinSpecificCounter = match getInteger(this, ("Total_Puts_" + toString(read_OptionCounterID))) {
111127 case a: Int =>
112128 a
113129 case _ =>
114130 0
115131 }
116132 let TotalPutinSpecificCounter = (PreviousPutinSpecificCounter + 1)
117133 let PreviousUserPut = match getInteger(this, (calleraddress + "_Total_Puts")) {
118134 case a: Int =>
119135 a
120136 case _ =>
121137 0
122138 }
123139 let TotalUserPut = (PreviousUserPut + 1)
124140 let PreviousUserPutinSpecificCounter = match getInteger(this, ((calleraddress + "_Total_Puts_") + toString(read_OptionCounterID))) {
125141 case a: Int =>
126142 a
127143 case _ =>
128144 0
129145 }
130146 let TotalUserPutinSpecificCounter = (PreviousUserPutinSpecificCounter + 1)
131147 if ((checkblockgap > 2))
132148 then throw("Something Wrong with Oracle or Height is not matched.")
133149 else if ((read_oracle_status == "Close"))
134150 then throw("Oracle is closed. Wait Until Oracle is Turned On.")
135151 else if ((ifBlacklisted == "Yes"))
136152 then throw((calleraddress + " Address is Blacklisted. Please contact Admin to Whitelist it."))
137- else [StringEntry(((("Put_" + calleraddress) + "_") + toString(TotalUserPut)), price), StringEntry(((("Put_Start_End_" + calleraddress) + "_") + toString(TotalUserPut)), ((toString(read_OptionCounterID) + "_") + toString(OptionExpireCounterID))), IntegerEntry("Total_Option_Orders", TotalOptionOrders), IntegerEntry(("Total_Option_Orders_" + toString(read_OptionCounterID)), TotalOptionOrdersinSpecificCounter), IntegerEntry("Total_Puts", TotalPut), IntegerEntry(("Total_Puts_" + toString(read_OptionCounterID)), TotalPutinSpecificCounter), IntegerEntry((calleraddress + "_Total_Puts"), TotalUserPut), IntegerEntry(((calleraddress + "_Total_Puts_") + toString(read_OptionCounterID)), TotalUserPutinSpecificCounter)]
153+ else if ((pmt.assetId != USDTAssetID))
154+ then throw(("Wrong Asset Attached. Please attach the assetId " + toBase58String(USDTAssetID)))
155+ else if ((minimum_order_size > pmt.amount))
156+ then throw((("Placed Order Size is less than " + toString((minimum_order_size / 1000000))) + " USDT."))
157+ else if ((pmt.amount > maximum_order_size))
158+ then throw((("Placed Order Size is more than " + toString((maximum_order_size / 1000000))) + " USDT."))
159+ else [StringEntry(((("Put_" + calleraddress) + "_") + toString(TotalUserPut)), price), StringEntry(((("Put_Start_End_" + calleraddress) + "_") + toString(TotalUserPut)), ((toString(read_OptionCounterID) + "_") + toString(OptionExpireCounterID))), IntegerEntry("Total_Option_Orders", TotalOptionOrders), IntegerEntry(("Total_Option_Orders_" + toString(read_OptionCounterID)), TotalOptionOrdersinSpecificCounter), IntegerEntry("Total_Puts", TotalPut), IntegerEntry(("Total_Puts_" + toString(read_OptionCounterID)), TotalPutinSpecificCounter), IntegerEntry((calleraddress + "_Total_Puts"), TotalUserPut), IntegerEntry(((calleraddress + "_Total_Puts_") + toString(read_OptionCounterID)), TotalUserPutinSpecificCounter)]
138160 }
139161
140162
141163
142164 @Callable(i)
143165 func ClaimCall (Call_Sequence) = {
144166 let calleraddress = toBase58String(i.caller.bytes)
145167 let pmt = if ((size(i.payments) == 1))
146168 then i.payments[0]
147169 else throw("No payment attached, Please Attach Tokens in payment[1].")
148170 let getOptionCallPrice = getStringValue(this, ((("Call_" + calleraddress) + "_") + Call_Sequence))
149171 let getOptionCall_Sequencedata = getStringValue(this, ((("Call_Start_End_" + calleraddress) + "_") + Call_Sequence))
150172 let splitStartEndCounter = split(getOptionCall_Sequencedata, "_")
151173 let getStartCounter = splitStartEndCounter[0]
152174 let getEndCounter = splitStartEndCounter[1]
153175 let getbtcdataAtStartCounter = getStringValue(this, ("1m_btc_" + getStartCounter))
154176 let splitbtcpriceAtStartCounter = split(getbtcdataAtStartCounter, "_")
155177 let getbtcpriceAtStartCounter = splitbtcpriceAtStartCounter[0]
156178 let getbtcdataAtEndCounter = getStringValue(this, ("1m_btc_" + getEndCounter))
157179 let splitbtcpriceAtEndCounter = split(getbtcdataAtEndCounter, "_")
158180 let getbtcpriceAtEndCounter = splitbtcpriceAtEndCounter[0]
159181 let pricediff = (parseIntValue(getbtcpriceAtEndCounter) - parseIntValue(getbtcpriceAtStartCounter))
160182 let PreviousCallWin = match getInteger(this, "Total_Option_Call_Wins") {
161183 case a: Int =>
162184 a
163185 case _ =>
164186 0
165187 }
166188 let TotalCallWin = (PreviousCallWin + 1)
167189 let PreviousCallLose = match getInteger(this, "Total_Option_Call_Lose") {
168190 case a: Int =>
169191 a
170192 case _ =>
171193 0
172194 }
173195 let TotalCallLose = (PreviousCallLose + 1)
174- if ((0 > pricediff))
196+ if ((0 >= pricediff))
175197 then [IntegerEntry("Diff", pricediff), IntegerEntry("Total_Option_Call_Lose", TotalCallLose), StringEntry(((((((((((("c_" + calleraddress) + "_") + Call_Sequence) + "_") + getStartCounter) + "_") + getEndCounter) + "_") + getbtcpriceAtStartCounter) + "_") + getbtcpriceAtEndCounter), "lose"), StringEntry("message", "You lose!"), DeleteEntry(((("Call_" + calleraddress) + "_") + Call_Sequence)), DeleteEntry(((("Call_Start_End_" + calleraddress) + "_") + Call_Sequence))]
176198 else [IntegerEntry("Diff", pricediff), IntegerEntry("Total_Option_Call_Wins", TotalCallWin), StringEntry(((((((((((("c_" + calleraddress) + "_") + Call_Sequence) + "_") + getStartCounter) + "_") + getEndCounter) + "_") + getbtcpriceAtStartCounter) + "_") + getbtcpriceAtEndCounter), "Win"), StringEntry("message", "You Win!"), DeleteEntry(((("Call_" + calleraddress) + "_") + Call_Sequence)), DeleteEntry(((("Call_Start_End_" + calleraddress) + "_") + Call_Sequence))]
177199 }
178200
179201
180202
181203 @Callable(i)
182204 func ClaimPut (Put_Sequence) = {
183205 let calleraddress = toBase58String(i.caller.bytes)
184206 let pmt = if ((size(i.payments) == 1))
185207 then i.payments[0]
186208 else throw("No payment attached, Please Attach Tokens in payment[1].")
187209 let getOptionPutPrice = getStringValue(this, ((("Put_" + calleraddress) + "_") + Put_Sequence))
188210 let getOptionPut_Sequencedata = getStringValue(this, ((("Put_Start_End_" + calleraddress) + "_") + Put_Sequence))
189211 let splitStartEndCounter = split(getOptionPut_Sequencedata, "_")
190212 let getStartCounter = splitStartEndCounter[0]
191213 let getEndCounter = splitStartEndCounter[1]
192214 let getbtcdataAtStartCounter = getStringValue(this, ("1m_btc_" + getStartCounter))
193215 let splitbtcpriceAtStartCounter = split(getbtcdataAtStartCounter, "_")
194216 let getbtcpriceAtStartCounter = splitbtcpriceAtStartCounter[0]
195217 let getbtcdataAtEndCounter = getStringValue(this, ("1m_btc_" + getEndCounter))
196218 let splitbtcpriceAtEndCounter = split(getbtcdataAtEndCounter, "_")
197219 let getbtcpriceAtEndCounter = splitbtcpriceAtEndCounter[0]
198220 let pricediff = (parseIntValue(getbtcpriceAtEndCounter) - parseIntValue(getbtcpriceAtStartCounter))
199221 let PreviousPutWin = match getInteger(this, "Total_Option_Put_Wins") {
200222 case a: Int =>
201223 a
202224 case _ =>
203225 0
204226 }
205227 let TotalPutWin = (PreviousPutWin + 1)
206228 let PreviousPutLose = match getInteger(this, "Total_Option_Put_Lose") {
207229 case a: Int =>
208230 a
209231 case _ =>
210232 0
211233 }
212234 let TotalPutLose = (PreviousPutLose + 1)
213- if ((pricediff > 0))
235+ if ((pricediff >= 0))
214236 then [IntegerEntry("Diff", pricediff), IntegerEntry("Total_Option_Put_Lose", TotalPutLose), StringEntry(((((((((((("p_" + calleraddress) + "_") + Put_Sequence) + "_") + getStartCounter) + "_") + getEndCounter) + "_") + getbtcpriceAtStartCounter) + "_") + getbtcpriceAtEndCounter), "lose"), StringEntry("message", "You lose!"), DeleteEntry(((("Put_" + calleraddress) + "_") + Put_Sequence)), DeleteEntry(((("Put_Start_End_" + calleraddress) + "_") + Put_Sequence))]
215237 else [IntegerEntry("Diff", pricediff), IntegerEntry("Total_Option_Put_Wins", TotalPutWin), StringEntry(((((((((((("p_" + calleraddress) + "_") + Put_Sequence) + "_") + getStartCounter) + "_") + getEndCounter) + "_") + getbtcpriceAtStartCounter) + "_") + getbtcpriceAtEndCounter), "Win"), StringEntry("message", "You Win!"), DeleteEntry(((("Put_" + calleraddress) + "_") + Put_Sequence)), DeleteEntry(((("Put_Start_End_" + calleraddress) + "_") + Put_Sequence))]
216238 }
217239
218240
219241
220242 @Callable(i)
221243 func calldata (Counter) = {
222244 let getbtcdata = getStringValue(this, ("1m_btc_" + toString(Counter)))
223245 let swapLi = split(getbtcdata, "_")
224246 let price = swapLi[0]
225247 let time = swapLi[1]
226248 let blockheight = swapLi[2]
227249 let div = swapLi[3]
228250 [StringEntry("price", swapLi[0]), StringEntry("time", swapLi[1]), StringEntry("blockheight", swapLi[2]), StringEntry("div", swapLi[3])]
229251 }
230252
231253
232254
233255 @Callable(i)
234256 func OpenOracle () = {
235257 let calleraddress = toBase58String(i.caller.bytes)
236258 if ((i.caller != oracle_controller_address))
237259 then throw((("This Address is not Authorized. Only " + toString(oracle_controller_address)) + " is Authorized Address to Sign it."))
238260 else [StringEntry("oracle_status", "Open")]
239261 }
240262
241263
242264
243265 @Callable(i)
244266 func BlackListAddress (UserAddress) = {
245267 let ifBlacklisted = getString(this, ("addr_BLACKLISTED_" + UserAddress))
246268 let PreviousBlackListAddress = match getInteger(this, "Total_Black_Listed_Address") {
247269 case a: Int =>
248270 a
249271 case _ =>
250272 0
251273 }
252274 let TotalBlackListAddress = (PreviousBlackListAddress + 1)
253275 if ((i.caller != oracle_controller_address))
254276 then throw((("This Address is not Authorized. Only " + toString(oracle_controller_address)) + " is Authorized Address to Sign it."))
255277 else if ((ifBlacklisted == "Yes"))
256278 then throw("Address is already available in Blacklist.")
257279 else [StringEntry(("addr_BLACKLISTED_" + UserAddress), "Yes"), IntegerEntry("Total_Black_Listed_Address", TotalBlackListAddress)]
258280 }
259281
260282
261283
262284 @Callable(i)
263285 func DeleteBlackListAddress (UserAddress) = {
264286 let ifBlacklisted = getString(this, ("addr_BLACKLISTED_" + UserAddress))
265287 let PreviousBlackListAddress = match getInteger(this, "Total_Black_Listed_Address") {
266288 case a: Int =>
267289 a
268290 case _ =>
269291 0
270292 }
271293 let TotalBlackListAddress = (PreviousBlackListAddress - 1)
272294 if ((i.caller != oracle_controller_address))
273295 then throw((("This Address is not Authorized. Only " + toString(oracle_controller_address)) + " is Authorized Address to Sign it."))
274296 else if ((ifBlacklisted == "Yes"))
275297 then [DeleteEntry(("addr_BLACKLISTED_" + UserAddress)), IntegerEntry("Total_Black_Listed_Address", TotalBlackListAddress)]
276298 else throw("Address is not available in Blacklist.")
277299 }
278300
279301
280302 @Verifier(tx)
281303 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
282304

github/deemru/w8io/3ef1775 
81.78 ms