tx · 4rAHTqxmDuDbNfg9QyB9fEPuFyTrnc84vPF1SJmCZVpm 3MpABcPJLQiG9Yxzk3ZV8e2nEbRe1gZHbZe: -0.02000000 Waves 2020.09.16 14:07 [1179747] smart account 3MpABcPJLQiG9Yxzk3ZV8e2nEbRe1gZHbZe > SELF 0.00000000 Waves
{ "type": 13, "id": "4rAHTqxmDuDbNfg9QyB9fEPuFyTrnc84vPF1SJmCZVpm", "fee": 2000000, "feeAssetId": null, "timestamp": 1600254549172, "version": 1, "sender": "3MpABcPJLQiG9Yxzk3ZV8e2nEbRe1gZHbZe", "senderPublicKey": "AixLFScfYY3rkC6MkFBBW8xXM1a6q3i79CUrcgykP4V3", "proofs": [ "4yNQtALRnZivyf6S1e6CJcvqnFGxnahX8pxebHi3V6mgVSpDy3ui2S9fC6GQryEXUkRoRfgAQ5egJmu2xx5bku86", "21rRMsQXK4891R9QQAUZiDgeecUbgrobnK4MxDduKDvYxbL9BydcAtSt4i6SnqxbeBAeCXGEDFHf8Vkq3686k4qJ", "3toQR81U5jLkYDVPrjsXHbGmtESqE5r31HxZjAMNvRUZwfJqLn5uNfqeSprSAX7KNkkp6vfNuCm96eynSHWJVVv9" ], "script": "base64:AAIEAAAAAAAAABYIAhIAEgMKAQESBAoCAQgSAwoBCBIAAAAAQQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkAAAAAAAAAAAABAAAADmdldFN0cmluZ0J5S2V5AAAAAQAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AgAAAAABAAAAFmdldEJvb2xCeUFkZHJlc3NBbmRLZXkAAAACAAAAB2FkZHJlc3MAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQcBAAAAGGdldFN0cmluZ0J5QWRkcmVzc0FuZEtleQAAAAIAAAAHYWRkcmVzcwAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AgAAAAABAAAAGGdldE51bWJlckJ5QWRkcmVzc0FuZEtleQAAAAIAAAAHYWRkcmVzcwAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AAAAAAAAAAAAAAAAAAdXQVZFTEVUAAAAAAAF9eEAAAAAAAVQQVVMSQAAAAAAAA9CQAAAAAAIUFJJQ0VMRVQAAAAAAAAPQkAAAAAABE1VTFQAAAAAAAX14QAAAAAACVNDQUxFTVVMVAAAAAAAAAAACAAAAAANTUlOT1JERVJUT1RBTAkAAGgAAAACAAAAAAAAAAAKBQAAAAdXQVZFTEVUAAAAAAZNQVhST0kAAAAAAAAAAF8AAAAACENBTkNFTEVEAgAAAAhjYW5jZWxlZAAAAAADTkVXAgAAAANuZXcAAAAABkZJTExFRAIAAAAGZmlsbGVkAAAAAAhQcmljZUtleQIAAAAFcHJpY2UAAAAADkJvbmRBc3NldElkS2V5AgAAAA1ib25kX2Fzc2V0X2lkAAAAABJOZXV0cmlub0Fzc2V0SWRLZXkCAAAAEW5ldXRyaW5vX2Fzc2V0X2lkAAAAABFCYWxhbmNlTG9ja2Vka0tleQIAAAANYmFsYW5jZV9sb2NrXwAAAAAVV2F2ZXNMb2NrZWRCYWxhbmNlS2V5CQABLAAAAAIFAAAAEUJhbGFuY2VMb2NrZWRrS2V5AgAAAAV3YXZlcwAAAAAYTmV1dHJpbm9Mb2NrZWRCYWxhbmNlS2V5CQABLAAAAAIFAAAAEUJhbGFuY2VMb2NrZWRrS2V5AgAAAAhuZXV0cmlubwAAAAANRmlyc3RPcmRlcktleQIAAAALb3JkZXJfZmlyc3QBAAAAEmdldFJvaUJ5T3JkZXJJZEtleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAABBkZWJ1Z19vcmRlcl9yb2lfBQAAAAdvcmRlcklkAQAAABBnZXRPcmRlclByaWNlS2V5AAAAAQAAAAdvcmRlcklkCQABLAAAAAICAAAADG9yZGVyX3ByaWNlXwUAAAAHb3JkZXJJZAEAAAAQZ2V0T3JkZXJUb3RhbEtleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAAxvcmRlcl90b3RhbF8FAAAAB29yZGVySWQBAAAAEGdldE9yZGVyT3duZXJLZXkAAAABAAAAB29yZGVySWQJAAEsAAAAAgIAAAAMb3JkZXJfb3duZXJfBQAAAAdvcmRlcklkAQAAABFnZXRPcmRlckhlaWdodEtleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAA1vcmRlcl9oZWlnaHRfBQAAAAdvcmRlcklkAQAAABFnZXRPcmRlclN0YXR1c0tleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAA1vcmRlcl9zdGF0dXNfBQAAAAdvcmRlcklkAQAAABZnZXRPcmRlckZpbGxlZFRvdGFsS2V5AAAAAQAAAAdvcmRlcklkCQABLAAAAAICAAAAE29yZGVyX2ZpbGxlZF90b3RhbF8FAAAAB29yZGVySWQBAAAAD2dldFByZXZPcmRlcktleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAAtvcmRlcl9wcmV2XwUAAAAHb3JkZXJJZAEAAAAPZ2V0TmV4dE9yZGVyS2V5AAAAAQAAAAdvcmRlcklkCQABLAAAAAICAAAAC29yZGVyX25leHRfBQAAAAdvcmRlcklkAQAAABZjb252ZXJ0TmV1dHJpbm9Ub1dhdmVzAAAAAgAAAAZhbW91bnQAAAAFcHJpY2UJAABrAAAAAwkAAGsAAAADBQAAAAZhbW91bnQFAAAACFBSSUNFTEVUBQAAAAVwcmljZQUAAAAHV0FWRUxFVAUAAAAFUEFVTEkBAAAAFmNvbnZlcnRXYXZlc1RvTmV1dHJpbm8AAAACAAAABmFtb3VudAAAAAVwcmljZQkAAGsAAAADCQAAawAAAAMFAAAABmFtb3VudAUAAAAFcHJpY2UFAAAACFBSSUNFTEVUBQAAAAVQQVVMSQUAAAAHV0FWRUxFVAEAAAASY29udmVydFdhdmVzVG9Cb25kAAAAAgAAAAZhbW91bnQAAAAFcHJpY2UJAQAAABZjb252ZXJ0V2F2ZXNUb05ldXRyaW5vAAAAAgUAAAAGYW1vdW50BQAAAAVwcmljZQEAAAASY29udmVydEJvbmRUb1dhdmVzAAAAAgAAAAZhbW91bnQAAAAFcHJpY2UJAQAAABZjb252ZXJ0TmV1dHJpbm9Ub1dhdmVzAAAAAgUAAAAGYW1vdW50BQAAAAVwcmljZQAAAAAQbmV1dHJpbm9Db250cmFjdAkBAAAAB0FkZHJlc3MAAAABAQAAABoBVF3paCe4qJMPcy95w9BKqYygVgfhjEDZTAAAAAAPY29udHJvbENvbnRyYWN0CQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFUd3ybDXH3r80f8sHf/E+K6J76Y1cC3EP4AAAAABNsaXF1aWRhdGlvbkNvbnRyYWN0CQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFUfmuaNrMs1KG6Mrasv2GBWcbFdE4n1EiSAAAAAA9uZXV0cmlub0Fzc2V0SWQBAAAAIMVXfiGxqQqCofpGzqEMUxM8bAYB07VRaHxjEcgWSOnfAAAAAAtib25kQXNzZXRJZAEAAAAgdvhedtQ/VvOUTgGBo56efoGAFND9awsyUNjrxzwXmE0AAAAACWlzQmxvY2tlZAkBAAAAFmdldEJvb2xCeUFkZHJlc3NBbmRLZXkAAAACBQAAAA9jb250cm9sQ29udHJhY3QCAAAACmlzX2Jsb2NrZWQAAAAADGN1cnJlbnRQcmljZQkBAAAAGGdldE51bWJlckJ5QWRkcmVzc0FuZEtleQAAAAIFAAAAD2NvbnRyb2xDb250cmFjdAUAAAAIUHJpY2VLZXkAAAAAFW5ldXRyaW5vTG9ja2VkQmFsYW5jZQkBAAAAGGdldE51bWJlckJ5QWRkcmVzc0FuZEtleQAAAAIFAAAAEG5ldXRyaW5vQ29udHJhY3QFAAAAGE5ldXRyaW5vTG9ja2VkQmFsYW5jZUtleQAAAAAHcmVzZXJ2ZQkAAGUAAAACCAkAA+8AAAABBQAAABBuZXV0cmlub0NvbnRyYWN0AAAAB3JlZ3VsYXIJAQAAABhnZXROdW1iZXJCeUFkZHJlc3NBbmRLZXkAAAACBQAAABBuZXV0cmlub0NvbnRyYWN0BQAAABVXYXZlc0xvY2tlZEJhbGFuY2VLZXkAAAAADnJlc2VydmVzSW5Vc2RuCQEAAAAWY29udmVydFdhdmVzVG9OZXV0cmlubwAAAAIFAAAAB3Jlc2VydmUFAAAADGN1cnJlbnRQcmljZQAAAAAObmV1dHJpbm9TdXBwbHkJAABlAAAAAgkAAGUAAAACCQAAZAAAAAIFAAAAFW5ldXRyaW5vTG9ja2VkQmFsYW5jZQgJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAAPbmV1dHJpbm9Bc3NldElkAAAACHF1YW50aXR5CQAD8AAAAAIFAAAAEG5ldXRyaW5vQ29udHJhY3QFAAAAD25ldXRyaW5vQXNzZXRJZAkAA/AAAAACBQAAABNsaXF1aWRhdGlvbkNvbnRyYWN0BQAAAA9uZXV0cmlub0Fzc2V0SWQAAAAAB2RlZmljaXQJAABlAAAAAgUAAAAObmV1dHJpbm9TdXBwbHkFAAAADnJlc2VydmVzSW5Vc2RuAAAAAA1jdXJyZW50TWF4Um9pCQAAawAAAAMFAAAAB2RlZmljaXQAAAAAAAAAAGQFAAAADm5ldXRyaW5vU3VwcGx5AAAAAA1jdXJyZW50QnJNdWx0CQAAawAAAAMFAAAADnJlc2VydmVzSW5Vc2RuBQAAAARNVUxUBQAAAA5uZXV0cmlub1N1cHBseQAAAAAKZmlyc3RPcmRlcgkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQUAAAANRmlyc3RPcmRlcktleQEAAAANZ2V0T3JkZXJQcmljZQAAAAEAAAACaWQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABBnZXRPcmRlclByaWNlS2V5AAAAAQUAAAACaWQBAAAADWdldE9yZGVyVG90YWwAAAABAAAAAmlkCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAQZ2V0T3JkZXJUb3RhbEtleQAAAAEFAAAAAmlkAQAAAA1nZXRPcmRlck93bmVyAAAAAQAAAAJpZAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAEGdldE9yZGVyT3duZXJLZXkAAAABBQAAAAJpZAEAAAAOZ2V0T3JkZXJTdGF0dXMAAAABAAAAAmlkCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAARZ2V0T3JkZXJTdGF0dXNLZXkAAAABBQAAAAJpZAEAAAATZ2V0T3JkZXJGaWxsZWRUb3RhbAAAAAEAAAACaWQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABZnZXRPcmRlckZpbGxlZFRvdGFsS2V5AAAAAQUAAAACaWQBAAAADGdldFByZXZPcmRlcgAAAAEAAAACaWQJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAA9nZXRQcmV2T3JkZXJLZXkAAAABBQAAAAJpZAEAAAAMZ2V0TmV4dE9yZGVyAAAAAQAAAAJpZAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAD2dldE5leHRPcmRlcktleQAAAAEFAAAAAmlkAQAAAA5nZXRQcmljZUZvclJvaQAAAAEAAAALcm9pUGVyY2VudHMJAABrAAAAAwkAAGQAAAACAAAAAAAAAABkBQAAAAtyb2lQZXJjZW50cwUAAAAMY3VycmVudFByaWNlAAAAAAAAAABkAQAAAA9nZXRSZXZlcnNlUHJpY2UAAAABAAAABXByaWNlCQAAaQAAAAIJAABoAAAAAgUAAAAIUFJJQ0VMRVQFAAAACFBSSUNFTEVUBQAAAAVwcmljZQEAAAAWY2FsY05zYnQyV2F2ZXNQcmljZVJhdwAAAAIAAAANc3BlbnRXYXZlc1JhdwAAAA9yZWNlaXZlZE5zYnRSYXcJAABrAAAAAwUAAAANc3BlbnRXYXZlc1JhdwkAAGgAAAACBQAAAAVQQVVMSQUAAAAIUFJJQ0VMRVQFAAAAD3JlY2VpdmVkTnNidFJhdwEAAAAJb3JkZXJEYXRhAAAABwAAAAdvcmRlcklkAAAADXRvdGFsV2F2ZWxldHMAAAAOZmlsbGVkV2F2ZWxldHMAAAAFb3duZXIAAAAGc3RhdHVzAAAAA3JvaQAAAAVwcmljZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAEGdldE9yZGVyUHJpY2VLZXkAAAABBQAAAAdvcmRlcklkBQAAAAVwcmljZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAEGdldE9yZGVyVG90YWxLZXkAAAABBQAAAAdvcmRlcklkBQAAAA10b3RhbFdhdmVsZXRzCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAWZ2V0T3JkZXJGaWxsZWRUb3RhbEtleQAAAAEFAAAAB29yZGVySWQFAAAADmZpbGxlZFdhdmVsZXRzCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABBnZXRPcmRlck93bmVyS2V5AAAAAQUAAAAHb3JkZXJJZAUAAAAFb3duZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABFnZXRPcmRlckhlaWdodEtleQAAAAEFAAAAB29yZGVySWQFAAAABmhlaWdodAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAARZ2V0T3JkZXJTdGF0dXNLZXkAAAABBQAAAAdvcmRlcklkBQAAAAZzdGF0dXMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgIAAAAZZGVidWdfb3JkZXJfY3VycmVudFByaWNlXwUAAAAHb3JkZXJJZAUAAAAMY3VycmVudFByaWNlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAASZ2V0Um9pQnlPcmRlcklkS2V5AAAAAQUAAAAHb3JkZXJJZAUAAAADcm9pBQAAAANuaWwBAAAAEGludGVybmFsU2VsbEJvbmQAAAAIAAAAC3BGaXJzdE9yZGVyAAAACnBOZXh0T3JkZXIAAAAMcEZpbGxlZFRvdGFsAAAABHBSb2kAAAAGcFByaWNlAAAAEHBQYXltZW50V2F2ZWxldHMAAAARb3JkZXJPd25lckFkZHJlc3MAAAAMaW5zdGFudE9yZGVyBAAAABVwcmljZVdhdmVzQnlCb25kQ2VudHMJAQAAAA5nZXRQcmljZUZvclJvaQAAAAEFAAAABHBSb2kEAAAADXJlbWFpbmVkVG90YWwJAABlAAAAAgUAAAAQcFBheW1lbnRXYXZlbGV0cwUAAAAMcEZpbGxlZFRvdGFsBAAAABNmaWxsYWJsZU9yZGVyQW1vdW50CQEAAAASY29udmVydFdhdmVzVG9Cb25kAAAAAgUAAAANcmVtYWluZWRUb3RhbAUAAAAVcHJpY2VXYXZlc0J5Qm9uZENlbnRzBAAAABt0b3RhbE9yZGVyV2F2ZWxldGVzUmVxdWlyZWQJAQAAABJjb252ZXJ0Qm9uZFRvV2F2ZXMAAAACBQAAABNmaWxsYWJsZU9yZGVyQW1vdW50BQAAABVwcmljZVdhdmVzQnlCb25kQ2VudHMEAAAAFW5iVG9rZW5zU2VsbENvbmRpdGlvbgkAAGcAAAACBQAAAA1jdXJyZW50TWF4Um9pBQAAAARwUm9pAwkBAAAAASEAAAABBQAAABVuYlRva2Vuc1NlbGxDb25kaXRpb24JAAACAAAAAQkAASwAAAACAgAAABNpbm5hcHJvcHJpYXRlIHJvaTogCQABpAAAAAEFAAAABHBSb2kDCQAAAAAAAAIFAAAAG3RvdGFsT3JkZXJXYXZlbGV0ZXNSZXF1aXJlZAAAAAAAAAAAAAkAAAIAAAABAgAAAB9jYW5ub3QgZmlsbCBvcmRlciBhdCB0aGUgbW9tZW50BAAAAA5jaGFuZ2VXYXZlbGV0cwkAAGUAAAACBQAAAA1yZW1haW5lZFRvdGFsBQAAABt0b3RhbE9yZGVyV2F2ZWxldGVzUmVxdWlyZWQEAAAADHdyaXRlU2V0RGF0YQMFAAAADGluc3RhbnRPcmRlcgkBAAAACW9yZGVyRGF0YQAAAAcFAAAAC3BGaXJzdE9yZGVyBQAAABBwUGF5bWVudFdhdmVsZXRzCQAAZAAAAAIFAAAADHBGaWxsZWRUb3RhbAUAAAAbdG90YWxPcmRlcldhdmVsZXRlc1JlcXVpcmVkCQACWAAAAAEIBQAAABFvcmRlck93bmVyQWRkcmVzcwAAAAVieXRlcwUAAAAGRklMTEVEBQAAAARwUm9pBQAAAAxjdXJyZW50UHJpY2UJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABZnZXRPcmRlckZpbGxlZFRvdGFsS2V5AAAAAQUAAAALcEZpcnN0T3JkZXIJAABkAAAAAgUAAAAMcEZpbGxlZFRvdGFsBQAAABt0b3RhbE9yZGVyV2F2ZWxldGVzUmVxdWlyZWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEWdldE9yZGVyU3RhdHVzS2V5AAAAAQUAAAALcEZpcnN0T3JkZXIFAAAABkZJTExFRAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAPZ2V0UHJldk9yZGVyS2V5AAAAAQUAAAAKcE5leHRPcmRlcgIAAAAACQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAADUZpcnN0T3JkZXJLZXkFAAAACnBOZXh0T3JkZXIFAAAAA25pbAkABE4AAAACBQAAAAx3cml0ZVNldERhdGEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAARb3JkZXJPd25lckFkZHJlc3MFAAAAE2ZpbGxhYmxlT3JkZXJBbW91bnQFAAAAC2JvbmRBc3NldElkCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAEG5ldXRyaW5vQ29udHJhY3QFAAAAG3RvdGFsT3JkZXJXYXZlbGV0ZXNSZXF1aXJlZAUAAAAEdW5pdAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAABFvcmRlck93bmVyQWRkcmVzcwUAAAAOY2hhbmdlV2F2ZWxldHMFAAAABHVuaXQFAAAAA25pbAEAAAAXaW50ZXJuYWxBZGRCdXlCb25kT3JkZXIAAAAFAAAAA3JvaQAAAAVwcmljZQAAAAlwcmV2T3JkZXIAAAADaW52AAAADGluc3RhbnRPcmRlcgQAAAADcG10CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAANpbnYAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAACm5ld09yZGVySWQJAAJYAAAAAQgFAAAAA2ludgAAAA10cmFuc2FjdGlvbklkAwUAAAAJaXNCbG9ja2VkCQAAAgAAAAECAAAAWWNvbnRyYWN0IGlzIGJsb2NrZWQgYnkgRU1FUkdFTkNZIFNIVVRET1dOIGFjdGlvbnMgdW50aWwgcmVhY3RpdmF0aW9uIGJ5IGVtZXJnZW5jeSBvcmFjbGVzAwkAAGYAAAACBQAAAA1NSU5PUkRFUlRPVEFMCAUAAAADcG10AAAABmFtb3VudAkAAAIAAAABCQABLAAAAAICAAAAF21pbiBvcmRlciB0b3RhbCBlcXVhbHMgCQABpAAAAAEFAAAADU1JTk9SREVSVE9UQUwDCQAAZgAAAAIFAAAAA3JvaQUAAAAGTUFYUk9JCQAAAgAAAAECAAAAF21heCBzZXRPcmRlciBST0kgaXMgOTUlAwkAAGYAAAACAAAAAAAAAAAABQAAAANyb2kJAAACAAAAAQIAAAAjY2FuJ3QgcGxhY2Ugb3JkZXIgd2l0aCBuZWdhdGl2ZSByb2kDCQAAAAAAAAIFAAAAA3JvaQAAAAAAAAAAAAkAAAIAAAABAgAAABxyb2kgc2hvdWxkIG5vdCBiZSBlcXVhbCB0byAwAwkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAANwbXQAAAAHYXNzZXRJZAkAAAIAAAABAgAAABJjYW4gdXNlIHdhdmVzIG9ubHkDCQEAAAACIT0AAAACCQEAAAANZ2V0T3JkZXJPd25lcgAAAAEFAAAACm5ld09yZGVySWQCAAAAAAkAAAIAAAABAgAAAAxvcmRlciBleGlzdHMDAwkBAAAAAiE9AAAAAgUAAAAJcHJldk9yZGVyAgAAAAAJAQAAAAIhPQAAAAIJAQAAAA5nZXRPcmRlclN0YXR1cwAAAAEFAAAACXByZXZPcmRlcgUAAAADTkVXBwkAAAIAAAABAgAAABxwcmV2IG9yZGVyIHN0YXR1cyBpcyBub3QgbmV3BAAAABlpc05ld09yZGVyQXRGaXJzdFBvc2l0aW9uCQAAAAAAAAIFAAAACXByZXZPcmRlcgIAAAAABAAAAAVvd25lcgkABCUAAAABCAUAAAADaW52AAAABmNhbGxlcgQAAAAJbmV4dE9yZGVyAwUAAAAZaXNOZXdPcmRlckF0Rmlyc3RQb3NpdGlvbgUAAAAKZmlyc3RPcmRlcgkBAAAADGdldE5leHRPcmRlcgAAAAEFAAAACXByZXZPcmRlcgQAAAAMbmV4dE9yZGVyUm9pCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAASZ2V0Um9pQnlPcmRlcklkS2V5AAAAAQUAAAAJbmV4dE9yZGVyBAAAABBpc05leHRPcmRlckVycm9yAwMJAQAAAAIhPQAAAAIFAAAACW5leHRPcmRlcgIAAAAACQAAZwAAAAIFAAAAA3JvaQUAAAAMbmV4dE9yZGVyUm9pBwYHBAAAAAxwcmV2T3JkZXJSb2kJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABJnZXRSb2lCeU9yZGVySWRLZXkAAAABBQAAAAlwcmV2T3JkZXIEAAAAEGlzUHJldk9yZGVyRXJyb3IDAwkBAAAAAiE9AAAAAgUAAAAJcHJldk9yZGVyAgAAAAAJAABmAAAAAgUAAAAMcHJldk9yZGVyUm9pBQAAAANyb2kHBgcDAwUAAAAQaXNOZXh0T3JkZXJFcnJvcgYFAAAAEGlzUHJldk9yZGVyRXJyb3IJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAfaW52YWxpZCBvcmRlciBpc1ByZXZPcmRlckVycm9yOgkAAaUAAAABBQAAABBpc1ByZXZPcmRlckVycm9yAgAAABIgaXNOZXh0T3JkZXJFcnJvcjoJAAGlAAAAAQUAAAAQaXNOZXh0T3JkZXJFcnJvcgMDBQAAABlpc05ld09yZGVyQXRGaXJzdFBvc2l0aW9uCQAAZwAAAAIFAAAADWN1cnJlbnRNYXhSb2kFAAAAA3JvaQcJAQAAABBpbnRlcm5hbFNlbGxCb25kAAAACAUAAAAKbmV3T3JkZXJJZAUAAAAJbmV4dE9yZGVyAAAAAAAAAAAABQAAAANyb2kFAAAABXByaWNlCAUAAAADcG10AAAABmFtb3VudAgFAAAAA2ludgAAAAZjYWxsZXIGAwUAAAAMaW5zdGFudE9yZGVyCQAAAgAAAAECAAAAMkluc3RhbnQgb3JkZXIgY291bGRuJ3QgYmUgYWRkZWQgaW50byB3YWl0aW5nIHF1ZXVlCQAETgAAAAIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAD2dldFByZXZPcmRlcktleQAAAAEFAAAACm5ld09yZGVySWQFAAAACXByZXZPcmRlcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAPZ2V0TmV4dE9yZGVyS2V5AAAAAQUAAAAKbmV3T3JkZXJJZAUAAAAJbmV4dE9yZGVyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRy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ZXIAAAACAAAABXByaWNlAAAACXByZXZPcmRlcgQAAAADcG10CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAABVwcmljZVdhdmVzQnlCb25kQ2VudHMJAQAAAA9nZXRSZXZlcnNlUHJpY2UAAAABBQAAAAVwcmljZQMJAABnAAAAAgAAAAAAAAAAAAUAAAAFcHJpY2UJAAACAAAAAQIAAAAPcHJpY2UgbGVzcyB6ZXJvCQEAAAAXaW50ZXJuYWxBZGRCdXlCb25kT3JkZXIAAAAFCQAAawAAAAMJAABlAAAAAgUAAAAVcHJpY2VXYXZlc0J5Qm9uZENlbnRzBQAAAAxjdXJyZW50UHJpY2UAAAAAAAAAAGQFAAAADGN1cnJlbnRQcmljZQUAAAAFcHJpY2UFAAAACXByZXZPcmRlcgUAAAABaQcAAAABaQEAAAALY2FuY2VsT3JkZXIAAAABAAAAB29yZGVySWQEAAAABW93bmVyCQEAAAANZ2V0T3JkZXJPd25lcgAAAAEFAAAAB29yZGVySWQEAAAABmFtb3VudAkAAGUAAAACCQEAAAANZ2V0T3JkZXJUb3RhbAAAAAEFAAAAB29yZGVySWQJAQAAABNnZXRPcmRlckZpbGxlZFRvdGFsAAAAAQUAAAAHb3JkZXJJZAQAAAAGY2FsbGVyCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAJbmV4dE9yZGVyCQEAAAAMZ2V0TmV4dE9yZGVyAAAAAQUAAAAHb3JkZXJJZAQAAAAJcHJldk9yZGVyCQEAAAAMZ2V0UHJldk9yZGVyAAAAAQUAAAAHb3JkZXJJZAMFAAAACWlzQmxvY2tlZAkAAAIAAAABAgAAAFljb250cmFjdCBpcyBibG9ja2VkIGJ5IEVNRVJHRU5DWSBTSFVURE9XTiBhY3Rpb25zIHVudGlsIHJlYWN0aXZhdGlvbiBieSBlbWVyZ2VuY3kgb3JhY2xlcwMJAQAAAAIhPQAAAAIFAAAABW93bmVyBQAAAAZjYWxsZXIJAAACAAAAAQIAAAARcGVybWlzc2lvbiBkZW5pZWQDCQEAAAACIT0AAAACCQEAAAAOZ2V0T3JkZXJTdGF0dXMAAAABBQAAAAdvcmRlcklkBQAAAANORVcJAAACAAAAAQIAAAAUaW52YWxpZCBvcmRlciBzdGF0dXMJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAANRmlyc3RPcmRlcktleQMJAAAAAAAAAgUAAAAKZmlyc3RPcmRlcgUAAAAHb3JkZXJJZAUAAAAJbmV4dE9yZGVyBQAAAApmaXJzdE9yZGVyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA9nZXROZXh0T3JkZXJLZXkAAAABBQAAAAlwcmV2T3JkZXIFAAAACW5leHRPcmRlcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAPZ2V0UHJldk9yZGVyS2V5AAAAAQUAAAAJbmV4dE9yZGVyBQAAAAlwcmV2T3JkZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEWdldE9yZGVyU3RhdHVzS2V5AAAAAQUAAAAHb3JkZXJJZAUAAAAIQ0FOQ0VMRUQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAZhbW91bnQFAAAABHVuaXQFAAAAA25pbAAAAAFpAQAAAAhzZWxsQm9uZAAAAAADBQAAAAlpc0Jsb2NrZWQJAAACAAAAAQIAAABZY29udHJhY3QgaXMgYmxvY2tlZCBieSBFTUVSR0VOQ1kgU0hVVERPV04gYWN0aW9ucyB1bnRpbCByZWFjdGl2YXRpb24gYnkgZW1lcmdlbmN5IG9yYWNsZXMDCQAAAAAAAAIFAAAACmZpcnN0T3JkZXICAAAAAAkAAAIAAAABAgAAAA9lbXB0eSBvcmRlcmJvb2sEAAAACW5leHRPcmRlcgkBAAAADGdldE5leHRPcmRlcgAAAAEFAAAACmZpcnN0T3JkZXIEAAAAC2ZpbGxlZFRvdGFsCQEAAAATZ2V0T3JkZXJGaWxsZWRUb3RhbAAAAAEFAAAACmZpcnN0T3JkZXIEAAAACm9yZGVyUHJpY2UJAQAAAA1nZXRPcmRlclByaWNlAAAAAQUAAAAKZmlyc3RPcmRlcgQAAAADcm9pCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAASZ2V0Um9pQnlPcmRlcklkS2V5AAAAAQUAAAAKZmlyc3RPcmRlcgQAAAAPcGF5bWVudFdhdmVsZXRzCQEAAAANZ2V0T3JkZXJUb3RhbAAAAAEFAAAACmZpcnN0T3JkZXIEAAAAEW9yZGVyT3duZXJBZGRyZXNzCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAADWdldE9yZGVyT3duZXIAAAABBQAAAApmaXJzdE9yZGVyCQEAAAAQaW50ZXJuYWxTZWxsQm9uZAAAAAgFAAAACmZpcnN0T3JkZXIFAAAACW5leHRPcmRlcgUAAAALZmlsbGVkVG90YWwFAAAAA3JvaQUAAAAKb3JkZXJQcmljZQUAAAAPcGF5bWVudFdhdmVsZXRzBQAAABFvcmRlck93bmVyQWRkcmVzcwcAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAABAAAABBwdWJLZXlBZG1pbnNMaXN0CQAETAAAAAICAAAALEQ5NlQ1VW9MN0UyRkVSYUV3b3Y5RnJ4OFhGVlBOR3FaNFR5RGlXdm4xdXJKCQAETAAAAAICAAAALEZrMnpnYnJSQThLeXRUVk1WeTZEZjVpNHRURXNLYXFnNnliaDZ4NkhlaGpqCQAETAAAAAICAAAALDM3ZjF5RTU0RnlNS3dFa2c0MTNwZXE1R2J6ZTlzQmF2QVNWZVRZYlFMVHZKCQAETAAAAAICAAAALDVXUlhGU2p3Y1RiTmZLY0pzOFpxWG1TU1dZc1NWSlV0TXZNcVpqNWhINE5jBQAAAANuaWwEAAAABWNvdW50CQAAZAAAAAIJAABkAAAAAgkAAGQAAAACAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAJAAJZAAAAAQkAAZEAAAACBQAAABBwdWJLZXlBZG1pbnNMaXN0AAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAEJAAJZAAAAAQkAAZEAAAACBQAAABBwdWJLZXlBZG1pbnNMaXN0AAAAAAAAAAABAAAAAAAAAAABAAAAAAAAAAAAAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAIJAAJZAAAAAQkAAZEAAAACBQAAABBwdWJLZXlBZG1pbnNMaXN0AAAAAAAAAAACAAAAAAAAAAABAAAAAAAAAAAAAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAMJAAJZAAAAAQkAAZEAAAACBQAAABBwdWJLZXlBZG1pbnNMaXN0AAAAAAAAAAADAAAAAAAAAAACAAAAAAAAAAAACQAAZwAAAAIFAAAABWNvdW50AAAAAAAAAAADdJgwEA==", "chainId": 84, "height": 1179747, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BcDQHzgX3H46jVsu4qEZaxa9oWqHHEtndqNh3LiXG8MH Next: none Diff:
Old | New | Differences | |
---|---|---|---|
1 | - | {-# STDLIB_VERSION | |
1 | + | {-# STDLIB_VERSION 4 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | func a (b) = { | |
5 | - | let c = getInteger(this, b) | |
6 | - | if ($isInstanceOf(c, "Int")) | |
7 | - | then { | |
8 | - | let d = c | |
9 | - | d | |
10 | - | } | |
11 | - | else 0 | |
12 | - | } | |
4 | + | func a (b) = valueOrElse(getInteger(this, b), 0) | |
13 | 5 | ||
14 | 6 | ||
15 | - | func e (b) = { | |
16 | - | let c = getString(this, b) | |
17 | - | if ($isInstanceOf(c, "String")) | |
18 | - | then { | |
19 | - | let d = c | |
20 | - | d | |
21 | - | } | |
22 | - | else "" | |
23 | - | } | |
7 | + | func c (b) = valueOrElse(getString(this, b), "") | |
24 | 8 | ||
25 | 9 | ||
26 | - | func f (g,b) = { | |
27 | - | let c = getBoolean(g, b) | |
28 | - | if ($isInstanceOf(c, "Boolean")) | |
29 | - | then { | |
30 | - | let d = c | |
31 | - | d | |
32 | - | } | |
33 | - | else false | |
34 | - | } | |
10 | + | func d (e,b) = valueOrElse(getBoolean(e, b), false) | |
35 | 11 | ||
36 | 12 | ||
37 | - | func h (g,b) = { | |
38 | - | let c = getString(g, b) | |
39 | - | if ($isInstanceOf(c, "String")) | |
40 | - | then { | |
41 | - | let d = c | |
42 | - | d | |
43 | - | } | |
44 | - | else "" | |
45 | - | } | |
13 | + | func f (e,b) = valueOrElse(getString(e, b), "") | |
46 | 14 | ||
47 | 15 | ||
48 | - | func i (g,b) = { | |
49 | - | let c = getInteger(g, b) | |
50 | - | if ($isInstanceOf(c, "Int")) | |
51 | - | then { | |
52 | - | let d = c | |
53 | - | d | |
54 | - | } | |
55 | - | else 0 | |
56 | - | } | |
16 | + | func g (e,b) = valueOrElse(getInteger(e, b), 0) | |
57 | 17 | ||
58 | 18 | ||
59 | - | let | |
19 | + | let h = 100000000 | |
60 | 20 | ||
61 | - | let | |
21 | + | let i = 1000000 | |
62 | 22 | ||
63 | - | let | |
23 | + | let j = 1000000 | |
64 | 24 | ||
65 | - | let m = (10 * j) | |
25 | + | let k = 100000000 | |
26 | + | ||
27 | + | let l = 8 | |
28 | + | ||
29 | + | let m = (10 * h) | |
66 | 30 | ||
67 | 31 | let n = 95 | |
68 | 32 | ||
72 | 36 | ||
73 | 37 | let q = "filled" | |
74 | 38 | ||
75 | - | let r = " | |
39 | + | let r = "price" | |
76 | 40 | ||
77 | - | let s = " | |
41 | + | let s = "bond_asset_id" | |
78 | 42 | ||
79 | - | let t = " | |
43 | + | let t = "neutrino_asset_id" | |
80 | 44 | ||
81 | - | let u = " | |
45 | + | let u = "balance_lock_" | |
82 | 46 | ||
83 | - | let v = " | |
47 | + | let v = (u + "waves") | |
84 | 48 | ||
85 | - | let w = " | |
49 | + | let w = (u + "neutrino") | |
86 | 50 | ||
87 | - | let x = | |
51 | + | let x = "order_first" | |
88 | 52 | ||
89 | - | let y = (w + "neutrino") | |
90 | - | ||
91 | - | let z = "liquidation_contract" | |
92 | - | ||
93 | - | let A = "order_first" | |
94 | - | ||
95 | - | func B (C) = ("debug_order_roi_" + C) | |
53 | + | func y (z) = ("debug_order_roi_" + z) | |
96 | 54 | ||
97 | 55 | ||
98 | - | func | |
56 | + | func A (z) = ("order_price_" + z) | |
99 | 57 | ||
100 | 58 | ||
101 | - | func | |
59 | + | func B (z) = ("order_total_" + z) | |
102 | 60 | ||
103 | 61 | ||
104 | - | func | |
62 | + | func C (z) = ("order_owner_" + z) | |
105 | 63 | ||
106 | 64 | ||
107 | - | func | |
65 | + | func D (z) = ("order_height_" + z) | |
108 | 66 | ||
109 | 67 | ||
110 | - | func | |
68 | + | func E (z) = ("order_status_" + z) | |
111 | 69 | ||
112 | 70 | ||
113 | - | func | |
71 | + | func F (z) = ("order_filled_total_" + z) | |
114 | 72 | ||
115 | 73 | ||
116 | - | func | |
74 | + | func G (z) = ("order_prev_" + z) | |
117 | 75 | ||
118 | 76 | ||
119 | - | func | |
77 | + | func H (z) = ("order_next_" + z) | |
120 | 78 | ||
121 | 79 | ||
122 | - | func | |
80 | + | func I (J,K) = fraction(fraction(J, j, K), h, i) | |
123 | 81 | ||
124 | 82 | ||
125 | - | func | |
83 | + | func L (J,K) = fraction(fraction(J, K, j), i, h) | |
126 | 84 | ||
127 | 85 | ||
128 | - | func | |
86 | + | func M (J,K) = L(J, K) | |
129 | 87 | ||
130 | 88 | ||
131 | - | func | |
89 | + | func N (J,K) = I(J, K) | |
132 | 90 | ||
133 | 91 | ||
134 | - | let | |
92 | + | let O = Address(base58'3MxUeE9rS9G3ap3kSrw67vkjYyTL3QLJnk3') | |
135 | 93 | ||
136 | - | let | |
94 | + | let P = Address(base58'3MzosTW6DBBjpRwTZUWFhZo6UFW1yrmfdtB') | |
137 | 95 | ||
138 | - | let | |
96 | + | let Q = Address(base58'3N1SXpSHeCeqSewbXS79otbnmP89uKUkWyf') | |
139 | 97 | ||
140 | - | let | |
98 | + | let R = base58'EHLhLVDUufqQytiAjBHzPhsPZgqsX6XfSCrVdxYeC4QN' | |
141 | 99 | ||
142 | - | let | |
100 | + | let S = base58'91QmVf3hZQJeUX11nurBX76Quf94kQgVMDesqALsjQFN' | |
143 | 101 | ||
144 | - | let | |
102 | + | let T = d(P, "is_blocked") | |
145 | 103 | ||
146 | - | let | |
104 | + | let U = g(P, r) | |
147 | 105 | ||
148 | - | let | |
106 | + | let V = g(O, w) | |
149 | 107 | ||
150 | - | let | |
108 | + | let W = (wavesBalance(O).regular - g(O, v)) | |
151 | 109 | ||
152 | - | let | |
110 | + | let X = L(W, U) | |
153 | 111 | ||
154 | - | let | |
112 | + | let Y = (((V + value(assetInfo(R)).quantity) - assetBalance(O, R)) - assetBalance(Q, R)) | |
155 | 113 | ||
156 | - | let | |
114 | + | let Z = (Y - X) | |
157 | 115 | ||
158 | - | func ad (ae) = a(D(ae)) | |
116 | + | let aa = fraction(Z, 100, Y) | |
117 | + | ||
118 | + | let ab = fraction(X, k, Y) | |
119 | + | ||
120 | + | let ac = c(x) | |
121 | + | ||
122 | + | func ad (ae) = a(A(ae)) | |
159 | 123 | ||
160 | 124 | ||
161 | - | func af (ae) = a( | |
125 | + | func af (ae) = a(B(ae)) | |
162 | 126 | ||
163 | 127 | ||
164 | - | func ag (ae) = | |
128 | + | func ag (ae) = c(C(ae)) | |
165 | 129 | ||
166 | 130 | ||
167 | - | func ah (ae) = | |
131 | + | func ah (ae) = c(E(ae)) | |
168 | 132 | ||
169 | 133 | ||
170 | - | func ai (ae) = a( | |
134 | + | func ai (ae) = a(F(ae)) | |
171 | 135 | ||
172 | 136 | ||
173 | - | func aj (ae) = | |
137 | + | func aj (ae) = c(G(ae)) | |
174 | 138 | ||
175 | 139 | ||
176 | - | func ak (ae) = | |
140 | + | func ak (ae) = c(H(ae)) | |
177 | 141 | ||
178 | 142 | ||
179 | - | func al ( | |
143 | + | func al (am) = fraction((100 + am), U, 100) | |
180 | 144 | ||
181 | 145 | ||
182 | - | func aq (ar,as,at,au,av,aw,ax,ay) = { | |
183 | - | let az = fraction((100 + au), X, 100) | |
184 | - | let aA = (aw - at) | |
185 | - | let aB = P(aA, az) | |
186 | - | let aC = Q(aB, az) | |
187 | - | let aD = (fraction(ab, 100, aa) >= au) | |
188 | - | if (!(aD)) | |
189 | - | then throw(("innapropriate roi: " + toString(au))) | |
190 | - | else if ((aC == 0)) | |
146 | + | func an (K) = ((j * j) / K) | |
147 | + | ||
148 | + | ||
149 | + | func ao (ap,aq) = fraction(ap, (i * j), aq) | |
150 | + | ||
151 | + | ||
152 | + | func ar (z,as,at,au,av,aw,K) = [IntegerEntry(A(z), K), IntegerEntry(B(z), as), IntegerEntry(F(z), at), StringEntry(C(z), au), IntegerEntry(D(z), height), StringEntry(E(z), av), IntegerEntry(("debug_order_currentPrice_" + z), U), IntegerEntry(y(z), aw)] | |
153 | + | ||
154 | + | ||
155 | + | func ax (ay,az,aA,aB,aC,aD,aE,aF) = { | |
156 | + | let aG = al(aB) | |
157 | + | let aH = (aD - aA) | |
158 | + | let aI = M(aH, aG) | |
159 | + | let aJ = N(aI, aG) | |
160 | + | let aK = (aa >= aB) | |
161 | + | if (!(aK)) | |
162 | + | then throw(("innapropriate roi: " + toString(aB))) | |
163 | + | else if ((aJ == 0)) | |
191 | 164 | then throw("cannot fill order at the moment") | |
192 | 165 | else { | |
193 | - | let | |
194 | - | let | |
195 | - | then | |
196 | - | else [ | |
197 | - | | |
166 | + | let aL = (aH - aJ) | |
167 | + | let aM = if (aF) | |
168 | + | then ar(ay, aD, (aA + aJ), toBase58String(aE.bytes), q, aB, U) | |
169 | + | else [IntegerEntry(F(ay), (aA + aJ)), StringEntry(E(ay), q), StringEntry(G(az), ""), StringEntry(x, az)] | |
170 | + | (aM ++ [ScriptTransfer(aE, aI, S), ScriptTransfer(O, aJ, unit), ScriptTransfer(aE, aL, unit)]) | |
198 | 171 | } | |
199 | 172 | } | |
200 | 173 | ||
201 | 174 | ||
202 | - | func | |
203 | - | let | |
204 | - | let | |
205 | - | if ( | |
175 | + | func aN (aw,K,aO,aP,aF) = { | |
176 | + | let aQ = value(aP.payments[0]) | |
177 | + | let aR = toBase58String(aP.transactionId) | |
178 | + | if (T) | |
206 | 179 | then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles") | |
207 | - | else if ((m > | |
180 | + | else if ((m > aQ.amount)) | |
208 | 181 | then throw(("min order total equals " + toString(m))) | |
209 | - | else if (( | |
182 | + | else if ((aw > n)) | |
210 | 183 | then throw("max setOrder ROI is 95%") | |
211 | - | else if (if ((ab > 0)) | |
212 | - | then (0 > ap) | |
213 | - | else false) | |
214 | - | then throw("can't place order with negative roi during deficit") | |
215 | - | else if ((-(n) > ap)) | |
216 | - | then throw("min setOrder ROI is -95%") | |
217 | - | else if ((ap == 0)) | |
218 | - | then throw("roi should not be equal to 0") | |
219 | - | else if (isDefined(aJ.assetId)) | |
220 | - | then throw("can use waves only") | |
221 | - | else if ((ag(aK) != "")) | |
222 | - | then throw("order exists") | |
223 | - | else if (if ((aH != "")) | |
224 | - | then (ah(aH) != p) | |
225 | - | else false) | |
226 | - | then throw("prev order status is not new") | |
227 | - | else { | |
228 | - | let aL = (aH == "") | |
229 | - | let an = toString(aI.caller) | |
230 | - | let aM = if (aL) | |
231 | - | then ac | |
232 | - | else ak(aH) | |
233 | - | let aN = a(B(aM)) | |
234 | - | let aO = if (if ((aM != "")) | |
235 | - | then (ap >= aN) | |
184 | + | else if ((0 > aw)) | |
185 | + | then throw("can't place order with negative roi") | |
186 | + | else if ((aw == 0)) | |
187 | + | then throw("roi should not be equal to 0") | |
188 | + | else if (isDefined(aQ.assetId)) | |
189 | + | then throw("can use waves only") | |
190 | + | else if ((ag(aR) != "")) | |
191 | + | then throw("order exists") | |
192 | + | else if (if ((aO != "")) | |
193 | + | then (ah(aO) != p) | |
194 | + | else false) | |
195 | + | then throw("prev order status is not new") | |
196 | + | else { | |
197 | + | let aS = (aO == "") | |
198 | + | let au = toString(aP.caller) | |
199 | + | let aT = if (aS) | |
200 | + | then ac | |
201 | + | else ak(aO) | |
202 | + | let aU = a(y(aT)) | |
203 | + | let aV = if (if ((aT != "")) | |
204 | + | then (aw >= aU) | |
205 | + | else false) | |
206 | + | then true | |
207 | + | else false | |
208 | + | let aW = a(y(aO)) | |
209 | + | let aX = if (if ((aO != "")) | |
210 | + | then (aW > aw) | |
211 | + | else false) | |
212 | + | then true | |
213 | + | else false | |
214 | + | if (if (aV) | |
215 | + | then true | |
216 | + | else aX) | |
217 | + | then throw(((("invalid order isPrevOrderError:" + toString(aX)) + " isNextOrderError:") + toString(aV))) | |
218 | + | else if (if (aS) | |
219 | + | then (aa >= aw) | |
236 | 220 | else false) | |
237 | - | then true | |
238 | - | else false | |
239 | - | let aP = a(B(aH)) | |
240 | - | let aQ = if (if ((aH != "")) | |
241 | - | then (aP > ap) | |
242 | - | else false) | |
243 | - | then true | |
244 | - | else false | |
245 | - | if (if (aO) | |
246 | - | then true | |
247 | - | else aQ) | |
248 | - | then throw(((("invalid order isPrevOrderError:" + toString(aQ)) + " isNextOrderError:") + toString(aO))) | |
249 | - | else if (if (aL) | |
250 | - | then ay | |
251 | - | else false) | |
252 | - | then aq(aK, aM, 0, ap, N, aJ.amount, aI.caller, true) | |
253 | - | else if (ay) | |
254 | - | then throw("Instant order couldn't be added into waiting queue") | |
255 | - | else WriteSet([DataEntry(J(aK), aH), DataEntry(K(aK), aM), DataEntry(K(aH), if ((aH == "")) | |
256 | - | then "" | |
257 | - | else aK), DataEntry(J(aM), if ((aM == "")) | |
258 | - | then "" | |
259 | - | else aK), DataEntry(A, if (if ((ac == "")) | |
260 | - | then true | |
261 | - | else (ac == aM)) | |
262 | - | then aK | |
263 | - | else ac), al(aK, aJ.amount, an, p, ap, N)]) | |
264 | - | } | |
221 | + | then ax(aR, aT, 0, aw, K, aQ.amount, aP.caller, true) | |
222 | + | else if (aF) | |
223 | + | then throw("Instant order couldn't be added into waiting queue") | |
224 | + | else ([StringEntry(G(aR), aO), StringEntry(H(aR), aT), StringEntry(H(aO), if ((aO == "")) | |
225 | + | then "" | |
226 | + | else aR), StringEntry(G(aT), if ((aT == "")) | |
227 | + | then "" | |
228 | + | else aR), StringEntry(x, if (if ((ac == "")) | |
229 | + | then true | |
230 | + | else (ac == aT)) | |
231 | + | then aR | |
232 | + | else ac)] ++ ar(aR, aQ.amount, 0, au, p, aw, K)) | |
233 | + | } | |
265 | 234 | } | |
266 | 235 | ||
267 | 236 | ||
268 | - | @Callable(aR) | |
269 | - | func instantBuyNsbtOrFail (ap) = { | |
270 | - | let aJ = extract(aR.payment) | |
271 | - | let az = fraction((100 + ap), X, 100) | |
272 | - | let N = ((l * l) / az) | |
273 | - | aG(ap, N, "", aR, true) | |
237 | + | func aY (aZ,ba,K) = { | |
238 | + | let bb = 271828100 | |
239 | + | let bc = valueOrElse(getInteger(this, "nsbtCurveParam_a"), 3) | |
240 | + | let bd = L(aZ, K) | |
241 | + | let be = fraction(bd, k, ba) | |
242 | + | let bf = (bc * (be - (1 * k))) | |
243 | + | let bg = pow(bb, l, bf, l, l, DOWN) | |
244 | + | let bh = fraction(ba, j, (bc * K)) | |
245 | + | let bi = fraction(bh, k, bg) | |
246 | + | let bj = fraction(bi, K, j) | |
247 | + | $Tuple6(bj, bd, be, bf, bg, bh) | |
248 | + | } | |
249 | + | ||
250 | + | ||
251 | + | func bk (bl,bm) = (((((((((((((bl + "[finalResult=") + toString(bm._1)) + "wReservesInUsdn=") + toString(bm._2)) + " brMult=") + toString(bm._3)) + " powerMult=") + toString(bm._4)) + " expInPowerMult=") + toString(bm._5)) + " constCoeff=") + toString(bm._6)) + "]") | |
252 | + | ||
253 | + | ||
254 | + | @Callable(bn) | |
255 | + | func buyNsbtInSurplus () = { | |
256 | + | let aQ = value(bn.payments[0]) | |
257 | + | let bo = aQ.amount | |
258 | + | let bp = bn.caller | |
259 | + | if (T) | |
260 | + | then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles") | |
261 | + | else if (((1 * k) > ab)) | |
262 | + | then throw(((("use instantBuyNsbtOrFail or addBuyBondOrder methods to buy nsbt when BR < 1: currentBR=" + toString(ab)) + "/") + toString(k))) | |
263 | + | else if (isDefined(aQ.assetId)) | |
264 | + | then throw("can use waves only") | |
265 | + | else { | |
266 | + | let bq = aY(W, Y, U) | |
267 | + | let br = aY((W + bo), Y, U) | |
268 | + | let bs = (bq._1 - br._1) | |
269 | + | let bt = ao(bo, bs) | |
270 | + | let aw = (fraction(an(bt), 100, U) - 100) | |
271 | + | (ar(toBase58String(bn.transactionId), bo, bo, toString(bp), q, aw, bt) ++ [ScriptTransfer(bp, bs, S), ScriptTransfer(O, bo, unit), StringEntry("debug_f0", bk("f0", bq)), StringEntry("debug_f1", bk("f1", br))]) | |
272 | + | } | |
274 | 273 | } | |
275 | 274 | ||
276 | 275 | ||
277 | 276 | ||
278 | - | @Callable(aR) | |
279 | - | func addBuyBondOrder (N,aH) = { | |
280 | - | let aJ = extract(aR.payment) | |
281 | - | let az = fraction(l, l, N) | |
282 | - | let ap = fraction((az - X), 100, X) | |
283 | - | if ((0 >= N)) | |
284 | - | then throw("price less zero") | |
285 | - | else aG(ap, N, aH, aR, false) | |
277 | + | @Callable(bn) | |
278 | + | func instantBuyNsbtOrFail (bu) = { | |
279 | + | let aQ = value(bn.payments[0]) | |
280 | + | let aw = aa | |
281 | + | if ((bu > aw)) | |
282 | + | then throw(((("Current maxRoi=" + toString(aw)) + " is less then passed parameter noLessThenRoi=") + toString(bu))) | |
283 | + | else { | |
284 | + | let aG = al(aw) | |
285 | + | aN(aw, an(aG), "", bn, true) | |
286 | + | } | |
286 | 287 | } | |
287 | 288 | ||
288 | 289 | ||
289 | 290 | ||
290 | - | @Callable(aR) | |
291 | - | func cancelOrder (C) = { | |
292 | - | let an = ag(C) | |
293 | - | let M = (af(C) - ai(C)) | |
294 | - | let aS = toString(aR.caller) | |
295 | - | let aM = ak(C) | |
296 | - | let aH = aj(C) | |
297 | - | if (W) | |
298 | - | then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles") | |
299 | - | else if ((an != aS)) | |
300 | - | then throw("permission denied") | |
301 | - | else if ((ah(C) != p)) | |
302 | - | then throw("invalid order status") | |
303 | - | else ScriptResult(WriteSet([DataEntry(A, if ((ac == C)) | |
304 | - | then aM | |
305 | - | else ac), DataEntry(K(aH), aM), DataEntry(J(aM), aH), DataEntry(H(C), o)]), TransferSet([ScriptTransfer(aR.caller, M, unit)])) | |
291 | + | @Callable(bn) | |
292 | + | func addBuyBondOrder (K,aO) = { | |
293 | + | let aQ = value(bn.payments[0]) | |
294 | + | let aG = an(K) | |
295 | + | if ((0 >= K)) | |
296 | + | then throw("price less zero") | |
297 | + | else aN(fraction((aG - U), 100, U), K, aO, bn, false) | |
306 | 298 | } | |
307 | 299 | ||
308 | 300 | ||
309 | 301 | ||
310 | - | @Callable(aR) | |
311 | - | func sellBond () = if (W) | |
302 | + | @Callable(bn) | |
303 | + | func cancelOrder (z) = { | |
304 | + | let au = ag(z) | |
305 | + | let J = (af(z) - ai(z)) | |
306 | + | let bv = toString(bn.caller) | |
307 | + | let aT = ak(z) | |
308 | + | let aO = aj(z) | |
309 | + | if (T) | |
310 | + | then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles") | |
311 | + | else if ((au != bv)) | |
312 | + | then throw("permission denied") | |
313 | + | else if ((ah(z) != p)) | |
314 | + | then throw("invalid order status") | |
315 | + | else [StringEntry(x, if ((ac == z)) | |
316 | + | then aT | |
317 | + | else ac), StringEntry(H(aO), aT), StringEntry(G(aT), aO), StringEntry(E(z), o), ScriptTransfer(bn.caller, J, unit)] | |
318 | + | } | |
319 | + | ||
320 | + | ||
321 | + | ||
322 | + | @Callable(bn) | |
323 | + | func sellBond () = if (T) | |
312 | 324 | then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles") | |
313 | 325 | else if ((ac == "")) | |
314 | 326 | then throw("empty orderbook") | |
315 | 327 | else { | |
316 | - | let | |
317 | - | let | |
318 | - | let | |
319 | - | let | |
320 | - | let | |
321 | - | let | |
322 | - | | |
328 | + | let aT = ak(ac) | |
329 | + | let bw = ai(ac) | |
330 | + | let bx = ad(ac) | |
331 | + | let aw = a(y(ac)) | |
332 | + | let by = af(ac) | |
333 | + | let aE = Address(fromBase58String(ag(ac))) | |
334 | + | ax(ac, aT, bw, aw, bx, by, aE, false) | |
323 | 335 | } | |
324 | 336 | ||
325 | 337 | ||
326 | - | ||
327 | - | @Callable(aR) | |
328 | - | func updateReservesAndNeutrinoSupply () = { | |
329 | - | func aW (b) = { | |
330 | - | let c = getInteger(this, b) | |
331 | - | if ($isInstanceOf(c, "Int")) | |
332 | - | then { | |
333 | - | let d = c | |
334 | - | d | |
335 | - | } | |
336 | - | else 0 | |
337 | - | } | |
338 | - | ||
339 | - | let aX = aW("updateReservesAndNeutrinoSupplyIdx") | |
340 | - | let aY = (aX + 1) | |
341 | - | WriteSet([DataEntry("updateReservesAndNeutrinoSupplyIdx", aY), DataEntry("reserve", Z), DataEntry("neutrinoSupply", aa), DataEntry("deficit", ab)]) | |
342 | - | } | |
343 | - | ||
344 | - | ||
345 | - | @Verifier(aZ) | |
346 | - | func ba () = { | |
347 | - | let bb = ["D96T5UoL7E2FERaEwov9Frx8XFVPNGqZ4TyDiWvn1urJ", "Fk2zgbrRA8KytTVMVy6Df5i4tTEsKaqg6ybh6x6Hehjj", "37f1yE54FyMKwEkg413peq5Gbze9sBavASVeTYbQLTvJ", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"] | |
348 | - | let bc = ((((if (sigVerify(aZ.bodyBytes, aZ.proofs[0], fromBase58String(bb[0]))) | |
338 | + | @Verifier(bz) | |
339 | + | func bA () = { | |
340 | + | let bB = ["D96T5UoL7E2FERaEwov9Frx8XFVPNGqZ4TyDiWvn1urJ", "Fk2zgbrRA8KytTVMVy6Df5i4tTEsKaqg6ybh6x6Hehjj", "37f1yE54FyMKwEkg413peq5Gbze9sBavASVeTYbQLTvJ", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"] | |
341 | + | let bC = ((((if (sigVerify(bz.bodyBytes, bz.proofs[0], fromBase58String(bB[0]))) | |
349 | 342 | then 1 | |
350 | - | else 0) + (if (sigVerify( | |
343 | + | else 0) + (if (sigVerify(bz.bodyBytes, bz.proofs[1], fromBase58String(bB[1]))) | |
351 | 344 | then 1 | |
352 | - | else 0)) + (if (sigVerify( | |
345 | + | else 0)) + (if (sigVerify(bz.bodyBytes, bz.proofs[2], fromBase58String(bB[2]))) | |
353 | 346 | then 1 | |
354 | - | else 0)) + (if (sigVerify( | |
347 | + | else 0)) + (if (sigVerify(bz.bodyBytes, bz.proofs[3], fromBase58String(bB[3]))) | |
355 | 348 | then 2 | |
356 | 349 | else 0)) | |
357 | - | ( | |
350 | + | (bC >= 3) | |
358 | 351 | } | |
359 | 352 |
Old | New | Differences | |
---|---|---|---|
1 | - | {-# STDLIB_VERSION | |
1 | + | {-# STDLIB_VERSION 4 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | func a (b) = { | |
5 | - | let c = getInteger(this, b) | |
6 | - | if ($isInstanceOf(c, "Int")) | |
7 | - | then { | |
8 | - | let d = c | |
9 | - | d | |
10 | - | } | |
11 | - | else 0 | |
12 | - | } | |
4 | + | func a (b) = valueOrElse(getInteger(this, b), 0) | |
13 | 5 | ||
14 | 6 | ||
15 | - | func e (b) = { | |
16 | - | let c = getString(this, b) | |
17 | - | if ($isInstanceOf(c, "String")) | |
18 | - | then { | |
19 | - | let d = c | |
20 | - | d | |
21 | - | } | |
22 | - | else "" | |
23 | - | } | |
7 | + | func c (b) = valueOrElse(getString(this, b), "") | |
24 | 8 | ||
25 | 9 | ||
26 | - | func f (g,b) = { | |
27 | - | let c = getBoolean(g, b) | |
28 | - | if ($isInstanceOf(c, "Boolean")) | |
29 | - | then { | |
30 | - | let d = c | |
31 | - | d | |
32 | - | } | |
33 | - | else false | |
34 | - | } | |
10 | + | func d (e,b) = valueOrElse(getBoolean(e, b), false) | |
35 | 11 | ||
36 | 12 | ||
37 | - | func h (g,b) = { | |
38 | - | let c = getString(g, b) | |
39 | - | if ($isInstanceOf(c, "String")) | |
40 | - | then { | |
41 | - | let d = c | |
42 | - | d | |
43 | - | } | |
44 | - | else "" | |
45 | - | } | |
13 | + | func f (e,b) = valueOrElse(getString(e, b), "") | |
46 | 14 | ||
47 | 15 | ||
48 | - | func i (g,b) = { | |
49 | - | let c = getInteger(g, b) | |
50 | - | if ($isInstanceOf(c, "Int")) | |
51 | - | then { | |
52 | - | let d = c | |
53 | - | d | |
54 | - | } | |
55 | - | else 0 | |
56 | - | } | |
16 | + | func g (e,b) = valueOrElse(getInteger(e, b), 0) | |
57 | 17 | ||
58 | 18 | ||
59 | - | let | |
19 | + | let h = 100000000 | |
60 | 20 | ||
61 | - | let | |
21 | + | let i = 1000000 | |
62 | 22 | ||
63 | - | let | |
23 | + | let j = 1000000 | |
64 | 24 | ||
65 | - | let m = (10 * j) | |
25 | + | let k = 100000000 | |
26 | + | ||
27 | + | let l = 8 | |
28 | + | ||
29 | + | let m = (10 * h) | |
66 | 30 | ||
67 | 31 | let n = 95 | |
68 | 32 | ||
69 | 33 | let o = "canceled" | |
70 | 34 | ||
71 | 35 | let p = "new" | |
72 | 36 | ||
73 | 37 | let q = "filled" | |
74 | 38 | ||
75 | - | let r = " | |
39 | + | let r = "price" | |
76 | 40 | ||
77 | - | let s = " | |
41 | + | let s = "bond_asset_id" | |
78 | 42 | ||
79 | - | let t = " | |
43 | + | let t = "neutrino_asset_id" | |
80 | 44 | ||
81 | - | let u = " | |
45 | + | let u = "balance_lock_" | |
82 | 46 | ||
83 | - | let v = " | |
47 | + | let v = (u + "waves") | |
84 | 48 | ||
85 | - | let w = " | |
49 | + | let w = (u + "neutrino") | |
86 | 50 | ||
87 | - | let x = | |
51 | + | let x = "order_first" | |
88 | 52 | ||
89 | - | let y = (w + "neutrino") | |
90 | - | ||
91 | - | let z = "liquidation_contract" | |
92 | - | ||
93 | - | let A = "order_first" | |
94 | - | ||
95 | - | func B (C) = ("debug_order_roi_" + C) | |
53 | + | func y (z) = ("debug_order_roi_" + z) | |
96 | 54 | ||
97 | 55 | ||
98 | - | func | |
56 | + | func A (z) = ("order_price_" + z) | |
99 | 57 | ||
100 | 58 | ||
101 | - | func | |
59 | + | func B (z) = ("order_total_" + z) | |
102 | 60 | ||
103 | 61 | ||
104 | - | func | |
62 | + | func C (z) = ("order_owner_" + z) | |
105 | 63 | ||
106 | 64 | ||
107 | - | func | |
65 | + | func D (z) = ("order_height_" + z) | |
108 | 66 | ||
109 | 67 | ||
110 | - | func | |
68 | + | func E (z) = ("order_status_" + z) | |
111 | 69 | ||
112 | 70 | ||
113 | - | func | |
71 | + | func F (z) = ("order_filled_total_" + z) | |
114 | 72 | ||
115 | 73 | ||
116 | - | func | |
74 | + | func G (z) = ("order_prev_" + z) | |
117 | 75 | ||
118 | 76 | ||
119 | - | func | |
77 | + | func H (z) = ("order_next_" + z) | |
120 | 78 | ||
121 | 79 | ||
122 | - | func | |
80 | + | func I (J,K) = fraction(fraction(J, j, K), h, i) | |
123 | 81 | ||
124 | 82 | ||
125 | - | func | |
83 | + | func L (J,K) = fraction(fraction(J, K, j), i, h) | |
126 | 84 | ||
127 | 85 | ||
128 | - | func | |
86 | + | func M (J,K) = L(J, K) | |
129 | 87 | ||
130 | 88 | ||
131 | - | func | |
89 | + | func N (J,K) = I(J, K) | |
132 | 90 | ||
133 | 91 | ||
134 | - | let | |
92 | + | let O = Address(base58'3MxUeE9rS9G3ap3kSrw67vkjYyTL3QLJnk3') | |
135 | 93 | ||
136 | - | let | |
94 | + | let P = Address(base58'3MzosTW6DBBjpRwTZUWFhZo6UFW1yrmfdtB') | |
137 | 95 | ||
138 | - | let | |
96 | + | let Q = Address(base58'3N1SXpSHeCeqSewbXS79otbnmP89uKUkWyf') | |
139 | 97 | ||
140 | - | let | |
98 | + | let R = base58'EHLhLVDUufqQytiAjBHzPhsPZgqsX6XfSCrVdxYeC4QN' | |
141 | 99 | ||
142 | - | let | |
100 | + | let S = base58'91QmVf3hZQJeUX11nurBX76Quf94kQgVMDesqALsjQFN' | |
143 | 101 | ||
144 | - | let | |
102 | + | let T = d(P, "is_blocked") | |
145 | 103 | ||
146 | - | let | |
104 | + | let U = g(P, r) | |
147 | 105 | ||
148 | - | let | |
106 | + | let V = g(O, w) | |
149 | 107 | ||
150 | - | let | |
108 | + | let W = (wavesBalance(O).regular - g(O, v)) | |
151 | 109 | ||
152 | - | let | |
110 | + | let X = L(W, U) | |
153 | 111 | ||
154 | - | let | |
112 | + | let Y = (((V + value(assetInfo(R)).quantity) - assetBalance(O, R)) - assetBalance(Q, R)) | |
155 | 113 | ||
156 | - | let | |
114 | + | let Z = (Y - X) | |
157 | 115 | ||
158 | - | func ad (ae) = a(D(ae)) | |
116 | + | let aa = fraction(Z, 100, Y) | |
117 | + | ||
118 | + | let ab = fraction(X, k, Y) | |
119 | + | ||
120 | + | let ac = c(x) | |
121 | + | ||
122 | + | func ad (ae) = a(A(ae)) | |
159 | 123 | ||
160 | 124 | ||
161 | - | func af (ae) = a( | |
125 | + | func af (ae) = a(B(ae)) | |
162 | 126 | ||
163 | 127 | ||
164 | - | func ag (ae) = | |
128 | + | func ag (ae) = c(C(ae)) | |
165 | 129 | ||
166 | 130 | ||
167 | - | func ah (ae) = | |
131 | + | func ah (ae) = c(E(ae)) | |
168 | 132 | ||
169 | 133 | ||
170 | - | func ai (ae) = a( | |
134 | + | func ai (ae) = a(F(ae)) | |
171 | 135 | ||
172 | 136 | ||
173 | - | func aj (ae) = | |
137 | + | func aj (ae) = c(G(ae)) | |
174 | 138 | ||
175 | 139 | ||
176 | - | func ak (ae) = | |
140 | + | func ak (ae) = c(H(ae)) | |
177 | 141 | ||
178 | 142 | ||
179 | - | func al ( | |
143 | + | func al (am) = fraction((100 + am), U, 100) | |
180 | 144 | ||
181 | 145 | ||
182 | - | func aq (ar,as,at,au,av,aw,ax,ay) = { | |
183 | - | let az = fraction((100 + au), X, 100) | |
184 | - | let aA = (aw - at) | |
185 | - | let aB = P(aA, az) | |
186 | - | let aC = Q(aB, az) | |
187 | - | let aD = (fraction(ab, 100, aa) >= au) | |
188 | - | if (!(aD)) | |
189 | - | then throw(("innapropriate roi: " + toString(au))) | |
190 | - | else if ((aC == 0)) | |
146 | + | func an (K) = ((j * j) / K) | |
147 | + | ||
148 | + | ||
149 | + | func ao (ap,aq) = fraction(ap, (i * j), aq) | |
150 | + | ||
151 | + | ||
152 | + | func ar (z,as,at,au,av,aw,K) = [IntegerEntry(A(z), K), IntegerEntry(B(z), as), IntegerEntry(F(z), at), StringEntry(C(z), au), IntegerEntry(D(z), height), StringEntry(E(z), av), IntegerEntry(("debug_order_currentPrice_" + z), U), IntegerEntry(y(z), aw)] | |
153 | + | ||
154 | + | ||
155 | + | func ax (ay,az,aA,aB,aC,aD,aE,aF) = { | |
156 | + | let aG = al(aB) | |
157 | + | let aH = (aD - aA) | |
158 | + | let aI = M(aH, aG) | |
159 | + | let aJ = N(aI, aG) | |
160 | + | let aK = (aa >= aB) | |
161 | + | if (!(aK)) | |
162 | + | then throw(("innapropriate roi: " + toString(aB))) | |
163 | + | else if ((aJ == 0)) | |
191 | 164 | then throw("cannot fill order at the moment") | |
192 | 165 | else { | |
193 | - | let | |
194 | - | let | |
195 | - | then | |
196 | - | else [ | |
197 | - | | |
166 | + | let aL = (aH - aJ) | |
167 | + | let aM = if (aF) | |
168 | + | then ar(ay, aD, (aA + aJ), toBase58String(aE.bytes), q, aB, U) | |
169 | + | else [IntegerEntry(F(ay), (aA + aJ)), StringEntry(E(ay), q), StringEntry(G(az), ""), StringEntry(x, az)] | |
170 | + | (aM ++ [ScriptTransfer(aE, aI, S), ScriptTransfer(O, aJ, unit), ScriptTransfer(aE, aL, unit)]) | |
198 | 171 | } | |
199 | 172 | } | |
200 | 173 | ||
201 | 174 | ||
202 | - | func | |
203 | - | let | |
204 | - | let | |
205 | - | if ( | |
175 | + | func aN (aw,K,aO,aP,aF) = { | |
176 | + | let aQ = value(aP.payments[0]) | |
177 | + | let aR = toBase58String(aP.transactionId) | |
178 | + | if (T) | |
206 | 179 | then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles") | |
207 | - | else if ((m > | |
180 | + | else if ((m > aQ.amount)) | |
208 | 181 | then throw(("min order total equals " + toString(m))) | |
209 | - | else if (( | |
182 | + | else if ((aw > n)) | |
210 | 183 | then throw("max setOrder ROI is 95%") | |
211 | - | else if (if ((ab > 0)) | |
212 | - | then (0 > ap) | |
213 | - | else false) | |
214 | - | then throw("can't place order with negative roi during deficit") | |
215 | - | else if ((-(n) > ap)) | |
216 | - | then throw("min setOrder ROI is -95%") | |
217 | - | else if ((ap == 0)) | |
218 | - | then throw("roi should not be equal to 0") | |
219 | - | else if (isDefined(aJ.assetId)) | |
220 | - | then throw("can use waves only") | |
221 | - | else if ((ag(aK) != "")) | |
222 | - | then throw("order exists") | |
223 | - | else if (if ((aH != "")) | |
224 | - | then (ah(aH) != p) | |
225 | - | else false) | |
226 | - | then throw("prev order status is not new") | |
227 | - | else { | |
228 | - | let aL = (aH == "") | |
229 | - | let an = toString(aI.caller) | |
230 | - | let aM = if (aL) | |
231 | - | then ac | |
232 | - | else ak(aH) | |
233 | - | let aN = a(B(aM)) | |
234 | - | let aO = if (if ((aM != "")) | |
235 | - | then (ap >= aN) | |
184 | + | else if ((0 > aw)) | |
185 | + | then throw("can't place order with negative roi") | |
186 | + | else if ((aw == 0)) | |
187 | + | then throw("roi should not be equal to 0") | |
188 | + | else if (isDefined(aQ.assetId)) | |
189 | + | then throw("can use waves only") | |
190 | + | else if ((ag(aR) != "")) | |
191 | + | then throw("order exists") | |
192 | + | else if (if ((aO != "")) | |
193 | + | then (ah(aO) != p) | |
194 | + | else false) | |
195 | + | then throw("prev order status is not new") | |
196 | + | else { | |
197 | + | let aS = (aO == "") | |
198 | + | let au = toString(aP.caller) | |
199 | + | let aT = if (aS) | |
200 | + | then ac | |
201 | + | else ak(aO) | |
202 | + | let aU = a(y(aT)) | |
203 | + | let aV = if (if ((aT != "")) | |
204 | + | then (aw >= aU) | |
205 | + | else false) | |
206 | + | then true | |
207 | + | else false | |
208 | + | let aW = a(y(aO)) | |
209 | + | let aX = if (if ((aO != "")) | |
210 | + | then (aW > aw) | |
211 | + | else false) | |
212 | + | then true | |
213 | + | else false | |
214 | + | if (if (aV) | |
215 | + | then true | |
216 | + | else aX) | |
217 | + | then throw(((("invalid order isPrevOrderError:" + toString(aX)) + " isNextOrderError:") + toString(aV))) | |
218 | + | else if (if (aS) | |
219 | + | then (aa >= aw) | |
236 | 220 | else false) | |
237 | - | then true | |
238 | - | else false | |
239 | - | let aP = a(B(aH)) | |
240 | - | let aQ = if (if ((aH != "")) | |
241 | - | then (aP > ap) | |
242 | - | else false) | |
243 | - | then true | |
244 | - | else false | |
245 | - | if (if (aO) | |
246 | - | then true | |
247 | - | else aQ) | |
248 | - | then throw(((("invalid order isPrevOrderError:" + toString(aQ)) + " isNextOrderError:") + toString(aO))) | |
249 | - | else if (if (aL) | |
250 | - | then ay | |
251 | - | else false) | |
252 | - | then aq(aK, aM, 0, ap, N, aJ.amount, aI.caller, true) | |
253 | - | else if (ay) | |
254 | - | then throw("Instant order couldn't be added into waiting queue") | |
255 | - | else WriteSet([DataEntry(J(aK), aH), DataEntry(K(aK), aM), DataEntry(K(aH), if ((aH == "")) | |
256 | - | then "" | |
257 | - | else aK), DataEntry(J(aM), if ((aM == "")) | |
258 | - | then "" | |
259 | - | else aK), DataEntry(A, if (if ((ac == "")) | |
260 | - | then true | |
261 | - | else (ac == aM)) | |
262 | - | then aK | |
263 | - | else ac), al(aK, aJ.amount, an, p, ap, N)]) | |
264 | - | } | |
221 | + | then ax(aR, aT, 0, aw, K, aQ.amount, aP.caller, true) | |
222 | + | else if (aF) | |
223 | + | then throw("Instant order couldn't be added into waiting queue") | |
224 | + | else ([StringEntry(G(aR), aO), StringEntry(H(aR), aT), StringEntry(H(aO), if ((aO == "")) | |
225 | + | then "" | |
226 | + | else aR), StringEntry(G(aT), if ((aT == "")) | |
227 | + | then "" | |
228 | + | else aR), StringEntry(x, if (if ((ac == "")) | |
229 | + | then true | |
230 | + | else (ac == aT)) | |
231 | + | then aR | |
232 | + | else ac)] ++ ar(aR, aQ.amount, 0, au, p, aw, K)) | |
233 | + | } | |
265 | 234 | } | |
266 | 235 | ||
267 | 236 | ||
268 | - | @Callable(aR) | |
269 | - | func instantBuyNsbtOrFail (ap) = { | |
270 | - | let aJ = extract(aR.payment) | |
271 | - | let az = fraction((100 + ap), X, 100) | |
272 | - | let N = ((l * l) / az) | |
273 | - | aG(ap, N, "", aR, true) | |
237 | + | func aY (aZ,ba,K) = { | |
238 | + | let bb = 271828100 | |
239 | + | let bc = valueOrElse(getInteger(this, "nsbtCurveParam_a"), 3) | |
240 | + | let bd = L(aZ, K) | |
241 | + | let be = fraction(bd, k, ba) | |
242 | + | let bf = (bc * (be - (1 * k))) | |
243 | + | let bg = pow(bb, l, bf, l, l, DOWN) | |
244 | + | let bh = fraction(ba, j, (bc * K)) | |
245 | + | let bi = fraction(bh, k, bg) | |
246 | + | let bj = fraction(bi, K, j) | |
247 | + | $Tuple6(bj, bd, be, bf, bg, bh) | |
248 | + | } | |
249 | + | ||
250 | + | ||
251 | + | func bk (bl,bm) = (((((((((((((bl + "[finalResult=") + toString(bm._1)) + "wReservesInUsdn=") + toString(bm._2)) + " brMult=") + toString(bm._3)) + " powerMult=") + toString(bm._4)) + " expInPowerMult=") + toString(bm._5)) + " constCoeff=") + toString(bm._6)) + "]") | |
252 | + | ||
253 | + | ||
254 | + | @Callable(bn) | |
255 | + | func buyNsbtInSurplus () = { | |
256 | + | let aQ = value(bn.payments[0]) | |
257 | + | let bo = aQ.amount | |
258 | + | let bp = bn.caller | |
259 | + | if (T) | |
260 | + | then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles") | |
261 | + | else if (((1 * k) > ab)) | |
262 | + | then throw(((("use instantBuyNsbtOrFail or addBuyBondOrder methods to buy nsbt when BR < 1: currentBR=" + toString(ab)) + "/") + toString(k))) | |
263 | + | else if (isDefined(aQ.assetId)) | |
264 | + | then throw("can use waves only") | |
265 | + | else { | |
266 | + | let bq = aY(W, Y, U) | |
267 | + | let br = aY((W + bo), Y, U) | |
268 | + | let bs = (bq._1 - br._1) | |
269 | + | let bt = ao(bo, bs) | |
270 | + | let aw = (fraction(an(bt), 100, U) - 100) | |
271 | + | (ar(toBase58String(bn.transactionId), bo, bo, toString(bp), q, aw, bt) ++ [ScriptTransfer(bp, bs, S), ScriptTransfer(O, bo, unit), StringEntry("debug_f0", bk("f0", bq)), StringEntry("debug_f1", bk("f1", br))]) | |
272 | + | } | |
274 | 273 | } | |
275 | 274 | ||
276 | 275 | ||
277 | 276 | ||
278 | - | @Callable(aR) | |
279 | - | func addBuyBondOrder (N,aH) = { | |
280 | - | let aJ = extract(aR.payment) | |
281 | - | let az = fraction(l, l, N) | |
282 | - | let ap = fraction((az - X), 100, X) | |
283 | - | if ((0 >= N)) | |
284 | - | then throw("price less zero") | |
285 | - | else aG(ap, N, aH, aR, false) | |
277 | + | @Callable(bn) | |
278 | + | func instantBuyNsbtOrFail (bu) = { | |
279 | + | let aQ = value(bn.payments[0]) | |
280 | + | let aw = aa | |
281 | + | if ((bu > aw)) | |
282 | + | then throw(((("Current maxRoi=" + toString(aw)) + " is less then passed parameter noLessThenRoi=") + toString(bu))) | |
283 | + | else { | |
284 | + | let aG = al(aw) | |
285 | + | aN(aw, an(aG), "", bn, true) | |
286 | + | } | |
286 | 287 | } | |
287 | 288 | ||
288 | 289 | ||
289 | 290 | ||
290 | - | @Callable(aR) | |
291 | - | func cancelOrder (C) = { | |
292 | - | let an = ag(C) | |
293 | - | let M = (af(C) - ai(C)) | |
294 | - | let aS = toString(aR.caller) | |
295 | - | let aM = ak(C) | |
296 | - | let aH = aj(C) | |
297 | - | if (W) | |
298 | - | then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles") | |
299 | - | else if ((an != aS)) | |
300 | - | then throw("permission denied") | |
301 | - | else if ((ah(C) != p)) | |
302 | - | then throw("invalid order status") | |
303 | - | else ScriptResult(WriteSet([DataEntry(A, if ((ac == C)) | |
304 | - | then aM | |
305 | - | else ac), DataEntry(K(aH), aM), DataEntry(J(aM), aH), DataEntry(H(C), o)]), TransferSet([ScriptTransfer(aR.caller, M, unit)])) | |
291 | + | @Callable(bn) | |
292 | + | func addBuyBondOrder (K,aO) = { | |
293 | + | let aQ = value(bn.payments[0]) | |
294 | + | let aG = an(K) | |
295 | + | if ((0 >= K)) | |
296 | + | then throw("price less zero") | |
297 | + | else aN(fraction((aG - U), 100, U), K, aO, bn, false) | |
306 | 298 | } | |
307 | 299 | ||
308 | 300 | ||
309 | 301 | ||
310 | - | @Callable(aR) | |
311 | - | func sellBond () = if (W) | |
302 | + | @Callable(bn) | |
303 | + | func cancelOrder (z) = { | |
304 | + | let au = ag(z) | |
305 | + | let J = (af(z) - ai(z)) | |
306 | + | let bv = toString(bn.caller) | |
307 | + | let aT = ak(z) | |
308 | + | let aO = aj(z) | |
309 | + | if (T) | |
310 | + | then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles") | |
311 | + | else if ((au != bv)) | |
312 | + | then throw("permission denied") | |
313 | + | else if ((ah(z) != p)) | |
314 | + | then throw("invalid order status") | |
315 | + | else [StringEntry(x, if ((ac == z)) | |
316 | + | then aT | |
317 | + | else ac), StringEntry(H(aO), aT), StringEntry(G(aT), aO), StringEntry(E(z), o), ScriptTransfer(bn.caller, J, unit)] | |
318 | + | } | |
319 | + | ||
320 | + | ||
321 | + | ||
322 | + | @Callable(bn) | |
323 | + | func sellBond () = if (T) | |
312 | 324 | then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles") | |
313 | 325 | else if ((ac == "")) | |
314 | 326 | then throw("empty orderbook") | |
315 | 327 | else { | |
316 | - | let | |
317 | - | let | |
318 | - | let | |
319 | - | let | |
320 | - | let | |
321 | - | let | |
322 | - | | |
328 | + | let aT = ak(ac) | |
329 | + | let bw = ai(ac) | |
330 | + | let bx = ad(ac) | |
331 | + | let aw = a(y(ac)) | |
332 | + | let by = af(ac) | |
333 | + | let aE = Address(fromBase58String(ag(ac))) | |
334 | + | ax(ac, aT, bw, aw, bx, by, aE, false) | |
323 | 335 | } | |
324 | 336 | ||
325 | 337 | ||
326 | - | ||
327 | - | @Callable(aR) | |
328 | - | func updateReservesAndNeutrinoSupply () = { | |
329 | - | func aW (b) = { | |
330 | - | let c = getInteger(this, b) | |
331 | - | if ($isInstanceOf(c, "Int")) | |
332 | - | then { | |
333 | - | let d = c | |
334 | - | d | |
335 | - | } | |
336 | - | else 0 | |
337 | - | } | |
338 | - | ||
339 | - | let aX = aW("updateReservesAndNeutrinoSupplyIdx") | |
340 | - | let aY = (aX + 1) | |
341 | - | WriteSet([DataEntry("updateReservesAndNeutrinoSupplyIdx", aY), DataEntry("reserve", Z), DataEntry("neutrinoSupply", aa), DataEntry("deficit", ab)]) | |
342 | - | } | |
343 | - | ||
344 | - | ||
345 | - | @Verifier(aZ) | |
346 | - | func ba () = { | |
347 | - | let bb = ["D96T5UoL7E2FERaEwov9Frx8XFVPNGqZ4TyDiWvn1urJ", "Fk2zgbrRA8KytTVMVy6Df5i4tTEsKaqg6ybh6x6Hehjj", "37f1yE54FyMKwEkg413peq5Gbze9sBavASVeTYbQLTvJ", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"] | |
348 | - | let bc = ((((if (sigVerify(aZ.bodyBytes, aZ.proofs[0], fromBase58String(bb[0]))) | |
338 | + | @Verifier(bz) | |
339 | + | func bA () = { | |
340 | + | let bB = ["D96T5UoL7E2FERaEwov9Frx8XFVPNGqZ4TyDiWvn1urJ", "Fk2zgbrRA8KytTVMVy6Df5i4tTEsKaqg6ybh6x6Hehjj", "37f1yE54FyMKwEkg413peq5Gbze9sBavASVeTYbQLTvJ", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"] | |
341 | + | let bC = ((((if (sigVerify(bz.bodyBytes, bz.proofs[0], fromBase58String(bB[0]))) | |
349 | 342 | then 1 | |
350 | - | else 0) + (if (sigVerify( | |
343 | + | else 0) + (if (sigVerify(bz.bodyBytes, bz.proofs[1], fromBase58String(bB[1]))) | |
351 | 344 | then 1 | |
352 | - | else 0)) + (if (sigVerify( | |
345 | + | else 0)) + (if (sigVerify(bz.bodyBytes, bz.proofs[2], fromBase58String(bB[2]))) | |
353 | 346 | then 1 | |
354 | - | else 0)) + (if (sigVerify( | |
347 | + | else 0)) + (if (sigVerify(bz.bodyBytes, bz.proofs[3], fromBase58String(bB[3]))) | |
355 | 348 | then 2 | |
356 | 349 | else 0)) | |
357 | - | ( | |
350 | + | (bC >= 3) | |
358 | 351 | } | |
359 | 352 |
github/deemru/w8io/873ac7e 87.21 ms ◑![]()