tx · 9qyEoULFrrAhiX6cPYioEgRQ5yu7EzQ66ZCCqupYx6Ex 3NC9boevS259eTsMAkFAxCPorzK4Z9bpWje: -0.02300000 Waves 2023.02.04 09:16 [2434515] smart account 3NC9boevS259eTsMAkFAxCPorzK4Z9bpWje > SELF 0.00000000 Waves
{ "type": 13, "id": "9qyEoULFrrAhiX6cPYioEgRQ5yu7EzQ66ZCCqupYx6Ex", "fee": 2300000, "feeAssetId": null, "timestamp": 1675491347118, "version": 2, "chainId": 84, "sender": "3NC9boevS259eTsMAkFAxCPorzK4Z9bpWje", "senderPublicKey": "515tSAyMUbAb8kKjcpGDpqALGfCgcwfWmWKKkcBKTcGB", "proofs": [ "shXnefX8DtWHq9bckwZJm8GzqUWUPf1FU6ipDhxajcTXeirefv56YviGDCEFwerNk1yHriLYPtaFADGcdM3iy5z" ], "script": "base64:AAIFAAAAAAAAACMIAhIAEgASAwoBCBIDCgEIEgMKAQESABIDCgEIEgMKAQgSAAAAAAUAAAAAFERhcHBfQWRkcmVzc19wdWJfa2V5AQAAACC8dlAgIYTf/lvXACGqUD1vu81eZgMCNgXdXFOd7TGSJAAAAAAZb3JhY2xlX2NvbnRyb2xsZXJfYWRkcmVzcwkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQUAAAAURGFwcF9BZGRyZXNzX3B1Yl9rZXkAAAAAC1VTRFRBc3NldElEAQAAACDb30UDmRcbFvndU5JEl1uNVygFlcNh5ZvQFVR0pBrFVQAAAAASbWluaW11bV9vcmRlcl9zaXplAAAAAAAAD0JAAAAAABJtYXhpbXVtX29yZGVyX3NpemUAAAAAAAX14QAAAAAJAAAAAWkBAAAAD3BsYWNlb3B0aW9uQ2FsbAAAAAAEAAAADWNhbGxlcmFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAADcG10AwkAAAAAAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAACQAAAgAAAAECAAAAN05vIHBheW1lbnQgYXR0YWNoZWQsIFBsZWFzZSBBdHRhY2ggVG9rZW4gaW4gcGF5bWVudFsxXS4EAAAADWlmQmxhY2tsaXN0ZWQJAAQdAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAABFhZGRyX0JMQUNLTElTVEVEXwUAAAANY2FsbGVyYWRkcmVzcwQAAAAScmVhZF9vcmFjbGVfc3RhdHVzCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzAgAAAA1vcmFjbGVfc3RhdHVzBAAAABRyZWFkX09wdGlvbkNvdW50ZXJJRAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwIAAAAOMW1fY29udHJhY3RfaWQEAAAACmdldGJ0Y2RhdGEJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAHMW1fYnRjXwkAAaQAAAABBQAAABRyZWFkX09wdGlvbkNvdW50ZXJJRAQAAAAGc3dhcExpCQAEtQAAAAIFAAAACmdldGJ0Y2RhdGECAAAAAV8EAAAABXByaWNlCQABkQAAAAIFAAAABnN3YXBMaQAAAAAAAAAAAAQAAAAFYmxvY2sJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAZzd2FwTGkAAAAAAAAAAAIEAAAADWNoZWNrYmxvY2tnYXAJAABlAAAAAgUAAAAGaGVpZ2h0BQAAAAVibG9jawQAAAAST3Bpb25FeHBpcmVDb3VudGVyAAAAAAAAAAABBAAAABVPcHRpb25FeHBpcmVDb3VudGVySUQJAABkAAAAAgUAAAAUcmVhZF9PcHRpb25Db3VudGVySUQFAAAAEk9waW9uRXhwaXJlQ291bnRlcgQAAAAUUHJldmlvdXNPcHRpb25PcmRlcnMEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwIAAAATVG90YWxfT3B0aW9uX09yZGVycwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAABFUb3RhbE9wdGlvbk9yZGVycwkAAGQAAAACBQAAABRQcmV2aW91c09wdGlvbk9yZGVycwAAAAAAAAAAAQQAAAAlUHJldmlvdXNPcHRpb25PcmRlcnNpblNwZWNpZmljQ291bnRlcgQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzCQABLAAAAAICAAAAFFRvdGFsX09wdGlvbl9PcmRlcnNfCQABpAAAAAEFAAAAFHJlYWRfT3B0aW9uQ291bnRlcklEAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAAIlRvdGFsT3B0aW9uT3JkZXJzaW5TcGVjaWZpY0NvdW50ZXIJAABkAAAAAgUAAAAlUHJldmlvdXNPcHRpb25PcmRlcnNpblNwZWNpZmljQ291bnRlcgAAAAAAAAAAAQQAAAAMUHJldmlvdXNDYWxsBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMCAAAAC1RvdGFsX0NhbGxzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEF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ZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA9DYWxsX1N0YXJ0X0VuZF8FAAAADWNhbGxlcmFkZHJlc3MCAAAAAV8JAAGkAAAAAQUAAAANVG90YWxVc2VyQ2FsbAkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAUcmVhZF9PcHRpb25Db3VudGVySUQCAAAAAV8JAAGkAAAAAQUAAAAVT3B0aW9uRXhwaXJlQ291bnRlcklECQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABNUb3RhbF9PcHRpb25fT3JkZXJzBQAAABFUb3RhbE9wdGlvbk9yZGVycwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACAgAAABRUb3RhbF9PcHRpb25fT3JkZXJzXwkAAaQAAAABBQAAABRyZWFkX09wdGlvbkNvdW50ZXJJRAUAAAAiVG90YWxPcHRpb25PcmRlcnNpblNwZWNpZmljQ291bnRlcgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAALVG90YWxfQ2FsbHMFAAAACVRvdGFsQ2FsbAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACAgAAAAxUb3RhbF9DYWxsc18JAAGkAAAAAQUAAAAUcmVhZF9PcHRpb25Db3VudGVySUQFAAAAGlRvdGFsQ2FsbGluU3BlY2lmaWNDb3VudGVyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAADWNhbGxlcmFkZHJlc3MCAAAADF9Ub3RhbF9DYWxscwUAAAANVG90YWxVc2VyQ2FsbAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIFAAAADWNhbGxlcmFkZHJlc3MCAAAADV9Ub3RhbF9DYWxsc18JAAGkAAAAAQUAAAAUcmVhZF9PcHRpb25Db3VudGVySUQFAAAAHlRvdGFsVXNlckNhbGxpblNwZWNpZmljQ291bnRlcgUAAAADbmlsAAAAAWkBAAAADnBsYWNlb3B0aW9uUHV0AAAAAAQAAAANY2FsbGVyYWRkcmVzcwkA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AAAiVG90YWxPcHRpb25PcmRlcnNpblNwZWNpZmljQ291bnRlcgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAKVG90YWxfUHV0cwUAAAAIVG90YWxQdXQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgIAAAALVG90YWxfUHV0c18JAAGkAAAAAQUAAAAUcmVhZF9PcHRpb25Db3VudGVySUQFAAAAGVRvdGFsUHV0aW5TcGVjaWZpY0NvdW50ZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAANY2FsbGVyYWRkcmVzcwIAAAALX1RvdGFsX1B1dHMFAAAADFRvdGFsVXNlclB1dAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIFAAAADWNhbGxlcmFkZHJlc3MCAAAADF9Ub3RhbF9QdXRzXwkAAaQAAAABBQAAABRyZWFkX09wdGlvbkNvdW50ZXJJRAUAAAAdVG90YWxVc2VyUHV0aW5TcGVjaWZpY0NvdW50ZXIFAAAAA25pbAAAAAFpAQAAAAlDbGFpbUNhbGwAAAABAAAADUNhbGxfU2VxdWVuY2UEAAAADWNhbGxlcmFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAADcG10AwkAAAAAAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAACQAAAgAAAAECAAAAOE5vIHBheW1lbnQgYXR0YWNoZWQsIFBsZWFzZSBBdHRhY2ggVG9rZW5zIGluIHBheW1lbnRbMV0uBAAAABJnZXRPcHRpb25DYWxsUHJpY2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAABUNhbGxfBQAAAA1jYWxsZXJhZGRyZXNzAgAAAAFfBQAAAA1DYWxsX1NlcXVlbmNlBAAAABpnZXRPcHRpb25DYWxsX1NlcXVlbmNlZGF0YQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAPQ2FsbF9TdGFydF9FbmRfBQAAAA1jYWxsZXJhZGRyZXNzAgAAAAFfBQAAAA1DYWxsX1NlcXVlbmNlBAAAABRzcGxpdFN0YXJ0RW5kQ291bnRlcgkABLUAAAACBQAAABpnZXRPcHRpb25DYWxsX1NlcXVlbmNlZGF0YQIAAAABXwQAAAAPZ2V0U3RhcnRDb3VudGVyCQABkQAAAAIFAAAAFHNwbGl0U3RhcnRFbmRDb3VudGVyAAAAAAAAAAAABAAAAA1nZXRFbmRDb3VudGVyCQABkQAAAAIFAAAAFHNwbGl0U3RhcnRFbmRDb3VudGVyAAAAAAAAAAABBAAAABhnZXRidGNkYXRhQXRTdGFydENvdW50ZXIJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAHMW1fYnRjXwUAAAAPZ2V0U3RhcnRDb3VudGVyBAAAABtzcGxpdGJ0Y3ByaWNlQXRTdGFydENvdW50ZXIJAAS1AAAAAgUAAAAYZ2V0YnRjZGF0YUF0U3RhcnRDb3VudGVyAgAAAAFfBAAAABlnZXRidGNwcmljZUF0U3RhcnRDb3VudGVyCQABkQAAAAIFAAAAG3NwbGl0YnRjcHJpY2VBdFN0YXJ0Q291bnRlcgAAAAAAAAAAAAQAAAAWZ2V0YnRjZGF0YUF0RW5kQ291bnRlcgkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAAAcxbV9idGNfBQAAAA1nZXRFbmRDb3VudGVyBAAAABlzcGxpdGJ0Y3ByaWNlQXRFbmRDb3VudGVyCQAEtQAAAAIFAAAAFmdldGJ0Y2RhdGFBdEVuZENvdW50ZXICAAAAAV8EAAAAF2dldGJ0Y3ByaWNlQXRFbmRDb3VudGVyCQABkQAAAAIFAAAAGXNwbGl0YnRjcHJpY2VBdEVuZENvdW50ZXIAAAAAAAAAAAAEAAAACXByaWNlZGlmZgkAAGUAAAACCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEFAAAAF2dldGJ0Y3ByaWNlQXRFbmRDb3VudGVyCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEFAAAAGWdldGJ0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AAANY2FsbGVyYWRkcmVzcwIAAAABXwUAAAANQ2FsbF9TZXF1ZW5jZQUAAAADbmlsAAAAAWkBAAAACENsYWltUHV0AAAAAQAAAAxQdXRfU2VxdWVuY2UEAAAADWNhbGxlcmFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAADcG10AwkAAAAAAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAACQAAAgAAAAECAAAAOE5vIHBheW1lbnQgYXR0YWNoZWQsIFBsZWFzZSBBdHRhY2ggVG9rZW5zIGluIHBheW1lbnRbMV0uBAAAABFnZXRPcHRpb25QdXRQcmljZQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAEUHV0XwUAAAANY2FsbGVyYWRkcmVzcwIAAAABXwUAAAAMUHV0X1NlcXVlbmNlBAAAABlnZXRPcHRpb25QdXRfU2VxdWVuY2VkYXRhCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA5QdXRfU3RhcnRfRW5kXwUAAAANY2FsbGVyYWRkcmVzcwIAAAABXwUAAAAMUHV0X1NlcXVlbmNlBAAAABRzcGxpdFN0YXJ0RW5kQ291bnRlcgkABLUAAAACBQAAABlnZXRPcHRpb25QdXRfU2VxdWVuY2VkYXRhAgAAAAFfBAAAAA9nZXRTdGFydENvdW50ZXIJAAGRAAAAAgUAAAAUc3BsaXRTdGFydEVuZENvdW50ZXIAAAAAAAAAAAAEAAAADWdldEVuZENvdW50ZXIJAAGRAAAAAgUAAAAUc3BsaXRTdGFydEVuZENvdW50ZXIAAAAAAAAAAAEEAAAAGGdldGJ0Y2RhdGFBdFN0YXJ0Q291bnRlcgkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAAAcxbV9idGNfBQAAAA9nZXRTdGFydENvdW50ZXIEAAAAG3NwbGl0YnRjcHJpY2VBdFN0YXJ0Q291bnRlcgkABLUAAAACBQAAABhnZXRidGNkYXRhQXRTdGFydENvdW50ZXICAAAAAV8EAAAAGWdldGJ0Y3ByaWNlQXRTdGFydENvdW50ZXIJAAGRAAAAAgUAAAAbc3BsaXRidGNwcmljZUF0U3RhcnRDb3VudGVyAAAAAAAAAAAABAAAABZnZXRidGNkYXRhQXRFbmRDb3VudGVyCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzCQABLAAAAAICAAAABzFtX2J0Y18FAAAADWdldEVuZENvdW50ZXIEAAAAGXNwbGl0YnRjcHJpY2VBdEVuZENvdW50ZXIJAAS1AAAAAgUAAAAWZ2V0YnRjZGF0YUF0RW5kQ291bnRlcgIAAAABXwQAAAAXZ2V0YnRjcHJpY2VBdEVuZENvdW50ZXIJAAGRAAAAAgUAAAAZc3BsaXRidGNwcmljZUF0RW5kQ291bnRlcgAAAAAAAAAAAAQAAAAJcHJpY2VkaWZmCQAAZQAAAAIJAQAAAA1wYXJzZUludFZhbHVlAAAAAQUAAAAXZ2V0YnRjcHJpY2VBdEVuZENvdW50ZXIJAQAAAA1wYXJzZUludFZhbHVlAAAAAQUAAAAZZ2V0YnRjcHJpY2VBdFN0YXJ0Q291bnRlcgQAAAAOUHJldmlvdXNQdXRXaW4EAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwIAAAAVVG90YWxfT3B0aW9uX1B1dF9XaW5zAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAAC1RvdGFsUHV0V2luCQAAZAAAAAIFAAAADlByZXZpb3VzUHV0V2luAAAAAAAAAAABBAAAAA9QcmV2aW91c1B1dExvc2UEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwIAAAAVVG90YWxfT3B0aW9uX1B1dF9Mb3NlAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAADFRvdGFsUHV0TG9zZQkAAGQAAAACBQAAAA9QcmV2aW91c1B1dExvc2UAAAAAAAAAAAEDCQAAZwAAAAIFAAAACXByaWNl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CQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAAGW9yYWNsZV9jb250cm9sbGVyX2FkZHJlc3MJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAJVRoaXMgQWRkcmVzcyBpcyBub3QgQXV0aG9yaXplZC4gT25seSAJAAQlAAAAAQUAAAAZb3JhY2xlX2NvbnRyb2xsZXJfYWRkcmVzcwIAAAAiIGlzIEF1dGhvcml6ZWQgQWRkcmVzcyB0byBTaWduIGl0LgMJAAAAAAAAAgUAAAANaWZCbGFja2xpc3RlZAIAAAADWWVzCQAAAgAAAAECAAAAKkFkZHJlc3MgaXMgYWxyZWFkeSBhdmFpbGFibGUgaW4gQmxhY2tsaXN0LgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAICAAAAEWFkZHJfQkxBQ0tMSVNURURfBQAAAAtVc2VyQWRkcmVzcwIAAAADWWVzCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABpUb3RhbF9CbGFja19MaXN0ZWRfQWRkcmVzcwUAAAAVVG90YWxCbGFja0xpc3RBZGRyZXNzBQAAAANuaWwAAAABaQEAAAAWRGVsZXRlQmxhY2tMaXN0QWRkcmVzcwAAAAEAAAALVXNlckFkZHJlc3MEAAAADWlmQmxhY2tsaXN0ZWQJAAQdAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAABFhZGRyX0JMQUNLTElTVEVEXwUAAAALVXNlckFkZHJlc3MEAAAAGFByZXZpb3VzQmxhY2tMaXN0QWRkcmVzcwQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzAgAAABpUb3RhbF9CbGFja19MaXN0ZWRfQWRkcmVzcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAABVUb3RhbEJsYWNrTGlzdEFkZHJlc3MJAABlAAAAAgUAAAAYUHJldmlvdXNCbGFja0xpc3RBZGRyZXNzAAAAAAAAAAABAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAABlvcmFjbGVfY29udHJvbGxlcl9hZGRyZXNzCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAACVUaGlzIEFkZHJlc3MgaXMgbm90IEF1dGhvcml6ZWQuIE9ubHkgCQAEJQAAAAEFAAAAGW9yYWNsZV9jb250cm9sbGVyX2FkZHJlc3MCAAAAIiBpcyBBdXRob3JpemVkIEFkZHJlc3MgdG8gU2lnbiBpdC4DCQAAAAAAAAIFAAAADWlmQmxhY2tsaXN0ZWQCAAAAA1llcwkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAICAAAAEWFkZHJfQkxBQ0tMSVNURURfBQAAAAtVc2VyQWRkcmVzcwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAaVG90YWxfQmxhY2tfTGlzdGVkX0FkZHJlc3MFAAAAFVRvdGFsQmxhY2tMaXN0QWRkcmVzcwUAAAADbmlsCQAAAgAAAAECAAAAJkFkZHJlc3MgaXMgbm90IGF2YWlsYWJsZSBpbiBCbGFja2xpc3QuAAAAAWkBAAAACUhvdXNlU2l6ZQAAAAAEAAAAA3BtdAMJAAAAAAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAjTm8gcGF5bWVudCBhdHRhY2hlZCwgUGxlYXNlIEF0dGFjaCAJAAJYAAAAAQUAAAALVVNEVEFzc2V0SUQCAAAAFiBUb2tlbnMgaW4gcGF5bWVudFsxXS4EAAAAE1ByZXZpb3VzX0hvdXNlX1NpemUEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwIAAAAKSG91c2VfU2l6ZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAABhUb3RhbFByZXZpb3VzX0hvdXNlX1NpemUJAABkAAAAAgUAAAATUHJldmlvdXNfSG91c2VfU2l6ZQgFAAAAA3BtdAAAAAZhbW91bnQDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAAGW9yYWNsZV9jb250cm9sbGVyX2FkZHJlc3MJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAJVRoaXMgQWRkcmVzcyBpcyBub3QgQXV0aG9yaXplZC4gT25seSAJAAQlAAAAAQUAAAAZb3JhY2xlX2NvbnRyb2xsZXJfYWRkcmVzcwIAAAAiIGlzIEF1dGhvcml6ZWQgQWRkcmVzcyB0byBTaWduIGl0LgMJAQAAAAIhPQAAAAIIBQAAAANwbXQAAAAHYXNzZXRJZAUAAAALVVNEVEFzc2V0SUQJAAACAAAAAQkAASwAAAACAgAAADBXcm9uZyBBc3NldCBBdHRhY2hlZC4gUGxlYXNlIGF0dGFjaCB0aGUgYXNzZXRJZCAJAAJYAAAAAQUAAAALVVNEVEFzc2V0SUQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAACkhvdXNlX1NpemUFAAAAGFRvdGFsUHJldmlvdXNfSG91c2VfU2l6ZQUAAAADbmlsAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXkSi9op", "height": 2434515, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2niry5C9C4w1HLUe4nm6c7WxTP1Wc9akUmWg5dgBu8Gn Next: none Diff:
Old | New | Differences | |
---|---|---|---|
299 | 299 | } | |
300 | 300 | ||
301 | 301 | ||
302 | + | ||
303 | + | @Callable(i) | |
304 | + | func HouseSize () = { | |
305 | + | let pmt = if ((size(i.payments) == 1)) | |
306 | + | then i.payments[0] | |
307 | + | else throw((("No payment attached, Please Attach " + toBase58String(USDTAssetID)) + " Tokens in payment[1].")) | |
308 | + | let Previous_House_Size = match getInteger(this, "House_Size") { | |
309 | + | case a: Int => | |
310 | + | a | |
311 | + | case _ => | |
312 | + | 0 | |
313 | + | } | |
314 | + | let TotalPrevious_House_Size = (Previous_House_Size + pmt.amount) | |
315 | + | if ((i.caller != oracle_controller_address)) | |
316 | + | then throw((("This Address is not Authorized. Only " + toString(oracle_controller_address)) + " is Authorized Address to Sign it.")) | |
317 | + | else if ((pmt.assetId != USDTAssetID)) | |
318 | + | then throw(("Wrong Asset Attached. Please attach the assetId " + toBase58String(USDTAssetID))) | |
319 | + | else [IntegerEntry("House_Size", TotalPrevious_House_Size)] | |
320 | + | } | |
321 | + | ||
322 | + | ||
302 | 323 | @Verifier(tx) | |
303 | 324 | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
304 | 325 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let Dapp_Address_pub_key = base58'DggHTfM1QvhBop9XaxzwBCeX1V6ksYiyoGvccEk3H8T5' | |
5 | 5 | ||
6 | 6 | let oracle_controller_address = addressFromPublicKey(Dapp_Address_pub_key) | |
7 | 7 | ||
8 | 8 | let USDTAssetID = base58'FoHkJSWMmcdGHCGZnymUU5UvW3sqWTP2NBq3mo7wVxGt' | |
9 | 9 | ||
10 | 10 | let minimum_order_size = 1000000 | |
11 | 11 | ||
12 | 12 | let maximum_order_size = 100000000 | |
13 | 13 | ||
14 | 14 | @Callable(i) | |
15 | 15 | func placeoptionCall () = { | |
16 | 16 | let calleraddress = toBase58String(i.caller.bytes) | |
17 | 17 | let pmt = if ((size(i.payments) == 1)) | |
18 | 18 | then i.payments[0] | |
19 | 19 | else throw("No payment attached, Please Attach Token in payment[1].") | |
20 | 20 | let ifBlacklisted = getString(this, ("addr_BLACKLISTED_" + calleraddress)) | |
21 | 21 | let read_oracle_status = getStringValue(this, "oracle_status") | |
22 | 22 | let read_OptionCounterID = getIntegerValue(this, "1m_contract_id") | |
23 | 23 | let getbtcdata = getStringValue(this, ("1m_btc_" + toString(read_OptionCounterID))) | |
24 | 24 | let swapLi = split(getbtcdata, "_") | |
25 | 25 | let price = swapLi[0] | |
26 | 26 | let block = parseIntValue(swapLi[2]) | |
27 | 27 | let checkblockgap = (height - block) | |
28 | 28 | let OpionExpireCounter = 1 | |
29 | 29 | let OptionExpireCounterID = (read_OptionCounterID + OpionExpireCounter) | |
30 | 30 | let PreviousOptionOrders = match getInteger(this, "Total_Option_Orders") { | |
31 | 31 | case a: Int => | |
32 | 32 | a | |
33 | 33 | case _ => | |
34 | 34 | 0 | |
35 | 35 | } | |
36 | 36 | let TotalOptionOrders = (PreviousOptionOrders + 1) | |
37 | 37 | let PreviousOptionOrdersinSpecificCounter = match getInteger(this, ("Total_Option_Orders_" + toString(read_OptionCounterID))) { | |
38 | 38 | case a: Int => | |
39 | 39 | a | |
40 | 40 | case _ => | |
41 | 41 | 0 | |
42 | 42 | } | |
43 | 43 | let TotalOptionOrdersinSpecificCounter = (PreviousOptionOrdersinSpecificCounter + 1) | |
44 | 44 | let PreviousCall = match getInteger(this, "Total_Calls") { | |
45 | 45 | case a: Int => | |
46 | 46 | a | |
47 | 47 | case _ => | |
48 | 48 | 0 | |
49 | 49 | } | |
50 | 50 | let TotalCall = (PreviousCall + 1) | |
51 | 51 | let PreviousCallinSpecificCounter = match getInteger(this, ("Total_Calls_" + toString(read_OptionCounterID))) { | |
52 | 52 | case a: Int => | |
53 | 53 | a | |
54 | 54 | case _ => | |
55 | 55 | 0 | |
56 | 56 | } | |
57 | 57 | let TotalCallinSpecificCounter = (PreviousCallinSpecificCounter + 1) | |
58 | 58 | let PreviousUserCall = match getInteger(this, (calleraddress + "_Total_Calls")) { | |
59 | 59 | case a: Int => | |
60 | 60 | a | |
61 | 61 | case _ => | |
62 | 62 | 0 | |
63 | 63 | } | |
64 | 64 | let TotalUserCall = (PreviousUserCall + 1) | |
65 | 65 | let PreviousUserCallinSpecificCounter = match getInteger(this, ((calleraddress + "_Total_Calls_") + toString(read_OptionCounterID))) { | |
66 | 66 | case a: Int => | |
67 | 67 | a | |
68 | 68 | case _ => | |
69 | 69 | 0 | |
70 | 70 | } | |
71 | 71 | let TotalUserCallinSpecificCounter = (PreviousUserCallinSpecificCounter + 1) | |
72 | 72 | if ((checkblockgap > 2)) | |
73 | 73 | then throw("Something Wrong with Oracle or Height is not matched.") | |
74 | 74 | else if ((read_oracle_status == "Close")) | |
75 | 75 | then throw("Oracle is closed. Wait Until Oracle is Turned On.") | |
76 | 76 | else if ((ifBlacklisted == "Yes")) | |
77 | 77 | then throw((calleraddress + " Address is Blacklisted. Please contact Admin to Whitelist it.")) | |
78 | 78 | else if ((pmt.assetId != USDTAssetID)) | |
79 | 79 | then throw(("Wrong Asset Attached. Please attach the assetId " + toBase58String(USDTAssetID))) | |
80 | 80 | else if ((minimum_order_size > pmt.amount)) | |
81 | 81 | then throw((("Placed Order Size is less than " + toString((minimum_order_size / 1000000))) + " USDT.")) | |
82 | 82 | else if ((pmt.amount > maximum_order_size)) | |
83 | 83 | then throw((("Placed Order Size is more than " + toString((maximum_order_size / 1000000))) + " USDT.")) | |
84 | 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)] | |
85 | 85 | } | |
86 | 86 | ||
87 | 87 | ||
88 | 88 | ||
89 | 89 | @Callable(i) | |
90 | 90 | func placeoptionPut () = { | |
91 | 91 | let calleraddress = toBase58String(i.caller.bytes) | |
92 | 92 | let pmt = if ((size(i.payments) == 1)) | |
93 | 93 | then i.payments[0] | |
94 | 94 | else throw("No payment attached, Please Attach Token in payment[1].") | |
95 | 95 | let ifBlacklisted = getString(this, ("addr_BLACKLISTED_" + calleraddress)) | |
96 | 96 | let read_oracle_status = getStringValue(this, "oracle_status") | |
97 | 97 | let read_OptionCounterID = getIntegerValue(this, "1m_contract_id") | |
98 | 98 | let getbtcdata = getStringValue(this, ("1m_btc_" + toString(read_OptionCounterID))) | |
99 | 99 | let swapLi = split(getbtcdata, "_") | |
100 | 100 | let price = swapLi[0] | |
101 | 101 | let block = parseIntValue(swapLi[2]) | |
102 | 102 | let checkblockgap = (height - block) | |
103 | 103 | let OpionExpireCounter = 1 | |
104 | 104 | let OptionExpireCounterID = (read_OptionCounterID + OpionExpireCounter) | |
105 | 105 | let PreviousOptionOrders = match getInteger(this, "Total_Option_Orders") { | |
106 | 106 | case a: Int => | |
107 | 107 | a | |
108 | 108 | case _ => | |
109 | 109 | 0 | |
110 | 110 | } | |
111 | 111 | let TotalOptionOrders = (PreviousOptionOrders + 1) | |
112 | 112 | let PreviousOptionOrdersinSpecificCounter = match getInteger(this, ("Total_Option_Orders_" + toString(read_OptionCounterID))) { | |
113 | 113 | case a: Int => | |
114 | 114 | a | |
115 | 115 | case _ => | |
116 | 116 | 0 | |
117 | 117 | } | |
118 | 118 | let TotalOptionOrdersinSpecificCounter = (PreviousOptionOrdersinSpecificCounter + 1) | |
119 | 119 | let PreviousPut = match getInteger(this, "Total_Puts") { | |
120 | 120 | case a: Int => | |
121 | 121 | a | |
122 | 122 | case _ => | |
123 | 123 | 0 | |
124 | 124 | } | |
125 | 125 | let TotalPut = (PreviousPut + 1) | |
126 | 126 | let PreviousPutinSpecificCounter = match getInteger(this, ("Total_Puts_" + toString(read_OptionCounterID))) { | |
127 | 127 | case a: Int => | |
128 | 128 | a | |
129 | 129 | case _ => | |
130 | 130 | 0 | |
131 | 131 | } | |
132 | 132 | let TotalPutinSpecificCounter = (PreviousPutinSpecificCounter + 1) | |
133 | 133 | let PreviousUserPut = match getInteger(this, (calleraddress + "_Total_Puts")) { | |
134 | 134 | case a: Int => | |
135 | 135 | a | |
136 | 136 | case _ => | |
137 | 137 | 0 | |
138 | 138 | } | |
139 | 139 | let TotalUserPut = (PreviousUserPut + 1) | |
140 | 140 | let PreviousUserPutinSpecificCounter = match getInteger(this, ((calleraddress + "_Total_Puts_") + toString(read_OptionCounterID))) { | |
141 | 141 | case a: Int => | |
142 | 142 | a | |
143 | 143 | case _ => | |
144 | 144 | 0 | |
145 | 145 | } | |
146 | 146 | let TotalUserPutinSpecificCounter = (PreviousUserPutinSpecificCounter + 1) | |
147 | 147 | if ((checkblockgap > 2)) | |
148 | 148 | then throw("Something Wrong with Oracle or Height is not matched.") | |
149 | 149 | else if ((read_oracle_status == "Close")) | |
150 | 150 | then throw("Oracle is closed. Wait Until Oracle is Turned On.") | |
151 | 151 | else if ((ifBlacklisted == "Yes")) | |
152 | 152 | then throw((calleraddress + " Address is Blacklisted. Please contact Admin to Whitelist it.")) | |
153 | 153 | else if ((pmt.assetId != USDTAssetID)) | |
154 | 154 | then throw(("Wrong Asset Attached. Please attach the assetId " + toBase58String(USDTAssetID))) | |
155 | 155 | else if ((minimum_order_size > pmt.amount)) | |
156 | 156 | then throw((("Placed Order Size is less than " + toString((minimum_order_size / 1000000))) + " USDT.")) | |
157 | 157 | else if ((pmt.amount > maximum_order_size)) | |
158 | 158 | then throw((("Placed Order Size is more than " + toString((maximum_order_size / 1000000))) + " USDT.")) | |
159 | 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)] | |
160 | 160 | } | |
161 | 161 | ||
162 | 162 | ||
163 | 163 | ||
164 | 164 | @Callable(i) | |
165 | 165 | func ClaimCall (Call_Sequence) = { | |
166 | 166 | let calleraddress = toBase58String(i.caller.bytes) | |
167 | 167 | let pmt = if ((size(i.payments) == 1)) | |
168 | 168 | then i.payments[0] | |
169 | 169 | else throw("No payment attached, Please Attach Tokens in payment[1].") | |
170 | 170 | let getOptionCallPrice = getStringValue(this, ((("Call_" + calleraddress) + "_") + Call_Sequence)) | |
171 | 171 | let getOptionCall_Sequencedata = getStringValue(this, ((("Call_Start_End_" + calleraddress) + "_") + Call_Sequence)) | |
172 | 172 | let splitStartEndCounter = split(getOptionCall_Sequencedata, "_") | |
173 | 173 | let getStartCounter = splitStartEndCounter[0] | |
174 | 174 | let getEndCounter = splitStartEndCounter[1] | |
175 | 175 | let getbtcdataAtStartCounter = getStringValue(this, ("1m_btc_" + getStartCounter)) | |
176 | 176 | let splitbtcpriceAtStartCounter = split(getbtcdataAtStartCounter, "_") | |
177 | 177 | let getbtcpriceAtStartCounter = splitbtcpriceAtStartCounter[0] | |
178 | 178 | let getbtcdataAtEndCounter = getStringValue(this, ("1m_btc_" + getEndCounter)) | |
179 | 179 | let splitbtcpriceAtEndCounter = split(getbtcdataAtEndCounter, "_") | |
180 | 180 | let getbtcpriceAtEndCounter = splitbtcpriceAtEndCounter[0] | |
181 | 181 | let pricediff = (parseIntValue(getbtcpriceAtEndCounter) - parseIntValue(getbtcpriceAtStartCounter)) | |
182 | 182 | let PreviousCallWin = match getInteger(this, "Total_Option_Call_Wins") { | |
183 | 183 | case a: Int => | |
184 | 184 | a | |
185 | 185 | case _ => | |
186 | 186 | 0 | |
187 | 187 | } | |
188 | 188 | let TotalCallWin = (PreviousCallWin + 1) | |
189 | 189 | let PreviousCallLose = match getInteger(this, "Total_Option_Call_Lose") { | |
190 | 190 | case a: Int => | |
191 | 191 | a | |
192 | 192 | case _ => | |
193 | 193 | 0 | |
194 | 194 | } | |
195 | 195 | let TotalCallLose = (PreviousCallLose + 1) | |
196 | 196 | if ((0 >= pricediff)) | |
197 | 197 | 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))] | |
198 | 198 | 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))] | |
199 | 199 | } | |
200 | 200 | ||
201 | 201 | ||
202 | 202 | ||
203 | 203 | @Callable(i) | |
204 | 204 | func ClaimPut (Put_Sequence) = { | |
205 | 205 | let calleraddress = toBase58String(i.caller.bytes) | |
206 | 206 | let pmt = if ((size(i.payments) == 1)) | |
207 | 207 | then i.payments[0] | |
208 | 208 | else throw("No payment attached, Please Attach Tokens in payment[1].") | |
209 | 209 | let getOptionPutPrice = getStringValue(this, ((("Put_" + calleraddress) + "_") + Put_Sequence)) | |
210 | 210 | let getOptionPut_Sequencedata = getStringValue(this, ((("Put_Start_End_" + calleraddress) + "_") + Put_Sequence)) | |
211 | 211 | let splitStartEndCounter = split(getOptionPut_Sequencedata, "_") | |
212 | 212 | let getStartCounter = splitStartEndCounter[0] | |
213 | 213 | let getEndCounter = splitStartEndCounter[1] | |
214 | 214 | let getbtcdataAtStartCounter = getStringValue(this, ("1m_btc_" + getStartCounter)) | |
215 | 215 | let splitbtcpriceAtStartCounter = split(getbtcdataAtStartCounter, "_") | |
216 | 216 | let getbtcpriceAtStartCounter = splitbtcpriceAtStartCounter[0] | |
217 | 217 | let getbtcdataAtEndCounter = getStringValue(this, ("1m_btc_" + getEndCounter)) | |
218 | 218 | let splitbtcpriceAtEndCounter = split(getbtcdataAtEndCounter, "_") | |
219 | 219 | let getbtcpriceAtEndCounter = splitbtcpriceAtEndCounter[0] | |
220 | 220 | let pricediff = (parseIntValue(getbtcpriceAtEndCounter) - parseIntValue(getbtcpriceAtStartCounter)) | |
221 | 221 | let PreviousPutWin = match getInteger(this, "Total_Option_Put_Wins") { | |
222 | 222 | case a: Int => | |
223 | 223 | a | |
224 | 224 | case _ => | |
225 | 225 | 0 | |
226 | 226 | } | |
227 | 227 | let TotalPutWin = (PreviousPutWin + 1) | |
228 | 228 | let PreviousPutLose = match getInteger(this, "Total_Option_Put_Lose") { | |
229 | 229 | case a: Int => | |
230 | 230 | a | |
231 | 231 | case _ => | |
232 | 232 | 0 | |
233 | 233 | } | |
234 | 234 | let TotalPutLose = (PreviousPutLose + 1) | |
235 | 235 | if ((pricediff >= 0)) | |
236 | 236 | 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))] | |
237 | 237 | 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))] | |
238 | 238 | } | |
239 | 239 | ||
240 | 240 | ||
241 | 241 | ||
242 | 242 | @Callable(i) | |
243 | 243 | func calldata (Counter) = { | |
244 | 244 | let getbtcdata = getStringValue(this, ("1m_btc_" + toString(Counter))) | |
245 | 245 | let swapLi = split(getbtcdata, "_") | |
246 | 246 | let price = swapLi[0] | |
247 | 247 | let time = swapLi[1] | |
248 | 248 | let blockheight = swapLi[2] | |
249 | 249 | let div = swapLi[3] | |
250 | 250 | [StringEntry("price", swapLi[0]), StringEntry("time", swapLi[1]), StringEntry("blockheight", swapLi[2]), StringEntry("div", swapLi[3])] | |
251 | 251 | } | |
252 | 252 | ||
253 | 253 | ||
254 | 254 | ||
255 | 255 | @Callable(i) | |
256 | 256 | func OpenOracle () = { | |
257 | 257 | let calleraddress = toBase58String(i.caller.bytes) | |
258 | 258 | if ((i.caller != oracle_controller_address)) | |
259 | 259 | then throw((("This Address is not Authorized. Only " + toString(oracle_controller_address)) + " is Authorized Address to Sign it.")) | |
260 | 260 | else [StringEntry("oracle_status", "Open")] | |
261 | 261 | } | |
262 | 262 | ||
263 | 263 | ||
264 | 264 | ||
265 | 265 | @Callable(i) | |
266 | 266 | func BlackListAddress (UserAddress) = { | |
267 | 267 | let ifBlacklisted = getString(this, ("addr_BLACKLISTED_" + UserAddress)) | |
268 | 268 | let PreviousBlackListAddress = match getInteger(this, "Total_Black_Listed_Address") { | |
269 | 269 | case a: Int => | |
270 | 270 | a | |
271 | 271 | case _ => | |
272 | 272 | 0 | |
273 | 273 | } | |
274 | 274 | let TotalBlackListAddress = (PreviousBlackListAddress + 1) | |
275 | 275 | if ((i.caller != oracle_controller_address)) | |
276 | 276 | then throw((("This Address is not Authorized. Only " + toString(oracle_controller_address)) + " is Authorized Address to Sign it.")) | |
277 | 277 | else if ((ifBlacklisted == "Yes")) | |
278 | 278 | then throw("Address is already available in Blacklist.") | |
279 | 279 | else [StringEntry(("addr_BLACKLISTED_" + UserAddress), "Yes"), IntegerEntry("Total_Black_Listed_Address", TotalBlackListAddress)] | |
280 | 280 | } | |
281 | 281 | ||
282 | 282 | ||
283 | 283 | ||
284 | 284 | @Callable(i) | |
285 | 285 | func DeleteBlackListAddress (UserAddress) = { | |
286 | 286 | let ifBlacklisted = getString(this, ("addr_BLACKLISTED_" + UserAddress)) | |
287 | 287 | let PreviousBlackListAddress = match getInteger(this, "Total_Black_Listed_Address") { | |
288 | 288 | case a: Int => | |
289 | 289 | a | |
290 | 290 | case _ => | |
291 | 291 | 0 | |
292 | 292 | } | |
293 | 293 | let TotalBlackListAddress = (PreviousBlackListAddress - 1) | |
294 | 294 | if ((i.caller != oracle_controller_address)) | |
295 | 295 | then throw((("This Address is not Authorized. Only " + toString(oracle_controller_address)) + " is Authorized Address to Sign it.")) | |
296 | 296 | else if ((ifBlacklisted == "Yes")) | |
297 | 297 | then [DeleteEntry(("addr_BLACKLISTED_" + UserAddress)), IntegerEntry("Total_Black_Listed_Address", TotalBlackListAddress)] | |
298 | 298 | else throw("Address is not available in Blacklist.") | |
299 | 299 | } | |
300 | 300 | ||
301 | 301 | ||
302 | + | ||
303 | + | @Callable(i) | |
304 | + | func HouseSize () = { | |
305 | + | let pmt = if ((size(i.payments) == 1)) | |
306 | + | then i.payments[0] | |
307 | + | else throw((("No payment attached, Please Attach " + toBase58String(USDTAssetID)) + " Tokens in payment[1].")) | |
308 | + | let Previous_House_Size = match getInteger(this, "House_Size") { | |
309 | + | case a: Int => | |
310 | + | a | |
311 | + | case _ => | |
312 | + | 0 | |
313 | + | } | |
314 | + | let TotalPrevious_House_Size = (Previous_House_Size + pmt.amount) | |
315 | + | if ((i.caller != oracle_controller_address)) | |
316 | + | then throw((("This Address is not Authorized. Only " + toString(oracle_controller_address)) + " is Authorized Address to Sign it.")) | |
317 | + | else if ((pmt.assetId != USDTAssetID)) | |
318 | + | then throw(("Wrong Asset Attached. Please attach the assetId " + toBase58String(USDTAssetID))) | |
319 | + | else [IntegerEntry("House_Size", TotalPrevious_House_Size)] | |
320 | + | } | |
321 | + | ||
322 | + | ||
302 | 323 | @Verifier(tx) | |
303 | 324 | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
304 | 325 |
github/deemru/w8io/169f3d6 44.26 ms ◑