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:
OldNewDifferences
1-{-# STDLIB_VERSION 3 #-}
1+{-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# 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)
135
146
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), "")
248
259
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)
3511
3612
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), "")
4614
4715
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)
5717
5818
59-let j = 100000000
19+let h = 100000000
6020
61-let k = 1000000
21+let i = 1000000
6222
63-let l = 1000000
23+let j = 1000000
6424
65-let m = (10 * j)
25+let k = 100000000
26+
27+let l = 8
28+
29+let m = (10 * h)
6630
6731 let n = 95
6832
7236
7337 let q = "filled"
7438
75-let r = "neutrino_contract"
39+let r = "price"
7640
77-let s = "price"
41+let s = "bond_asset_id"
7842
79-let t = "bond_asset_id"
43+let t = "neutrino_asset_id"
8044
81-let u = "neutrino_asset_id"
45+let u = "balance_lock_"
8246
83-let v = "control_contract"
47+let v = (u + "waves")
8448
85-let w = "balance_lock_"
49+let w = (u + "neutrino")
8650
87-let x = (w + "waves")
51+let x = "order_first"
8852
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)
9654
9755
98-func D (C) = ("order_price_" + C)
56+func A (z) = ("order_price_" + z)
9957
10058
101-func E (C) = ("order_total_" + C)
59+func B (z) = ("order_total_" + z)
10260
10361
104-func F (C) = ("order_owner_" + C)
62+func C (z) = ("order_owner_" + z)
10563
10664
107-func G (C) = ("order_height_" + C)
65+func D (z) = ("order_height_" + z)
10866
10967
110-func H (C) = ("order_status_" + C)
68+func E (z) = ("order_status_" + z)
11169
11270
113-func I (C) = ("order_filled_total_" + C)
71+func F (z) = ("order_filled_total_" + z)
11472
11573
116-func J (C) = ("order_prev_" + C)
74+func G (z) = ("order_prev_" + z)
11775
11876
119-func K (C) = ("order_next_" + C)
77+func H (z) = ("order_next_" + z)
12078
12179
122-func L (M,N) = fraction(fraction(M, l, N), j, k)
80+func I (J,K) = fraction(fraction(J, j, K), h, i)
12381
12482
125-func O (M,N) = fraction(fraction(M, N, l), k, j)
83+func L (J,K) = fraction(fraction(J, K, j), i, h)
12684
12785
128-func P (M,N) = O(M, N)
86+func M (J,K) = L(J, K)
12987
13088
131-func Q (M,N) = L(M, N)
89+func N (J,K) = I(J, K)
13290
13391
134-let R = Address(base58'3MxUeE9rS9G3ap3kSrw67vkjYyTL3QLJnk3')
92+let O = Address(base58'3MxUeE9rS9G3ap3kSrw67vkjYyTL3QLJnk3')
13593
136-let S = Address(base58'3MzosTW6DBBjpRwTZUWFhZo6UFW1yrmfdtB')
94+let P = Address(base58'3MzosTW6DBBjpRwTZUWFhZo6UFW1yrmfdtB')
13795
138-let T = Address(base58'3N1SXpSHeCeqSewbXS79otbnmP89uKUkWyf')
96+let Q = Address(base58'3N1SXpSHeCeqSewbXS79otbnmP89uKUkWyf')
13997
140-let U = base58'EHLhLVDUufqQytiAjBHzPhsPZgqsX6XfSCrVdxYeC4QN'
98+let R = base58'EHLhLVDUufqQytiAjBHzPhsPZgqsX6XfSCrVdxYeC4QN'
14199
142-let V = base58'91QmVf3hZQJeUX11nurBX76Quf94kQgVMDesqALsjQFN'
100+let S = base58'91QmVf3hZQJeUX11nurBX76Quf94kQgVMDesqALsjQFN'
143101
144-let W = f(S, "is_blocked")
102+let T = d(P, "is_blocked")
145103
146-let X = i(S, s)
104+let U = g(P, r)
147105
148-let Y = i(R, y)
106+let V = g(O, w)
149107
150-let Z = (wavesBalance(R) - i(R, x))
108+let W = (wavesBalance(O).regular - g(O, v))
151109
152-let aa = (((Y + extract(assetInfo(U)).quantity) - assetBalance(R, U)) - assetBalance(T, U))
110+let X = L(W, U)
153111
154-let ab = (aa - O(Z, X))
112+let Y = (((V + value(assetInfo(R)).quantity) - assetBalance(O, R)) - assetBalance(Q, R))
155113
156-let ac = e(A)
114+let Z = (Y - X)
157115
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))
159123
160124
161-func af (ae) = a(E(ae))
125+func af (ae) = a(B(ae))
162126
163127
164-func ag (ae) = e(F(ae))
128+func ag (ae) = c(C(ae))
165129
166130
167-func ah (ae) = e(H(ae))
131+func ah (ae) = c(E(ae))
168132
169133
170-func ai (ae) = a(I(ae))
134+func ai (ae) = a(F(ae))
171135
172136
173-func aj (ae) = e(J(ae))
137+func aj (ae) = c(G(ae))
174138
175139
176-func ak (ae) = e(K(ae))
140+func ak (ae) = c(H(ae))
177141
178142
179-func al (C,am,an,ao,ap,N) = [DataEntry(D(C), N), DataEntry(E(C), am), DataEntry(F(C), an), DataEntry(G(C), height), DataEntry(H(C), ao), DataEntry(("debug_order_currentPrice_" + C), X), DataEntry(B(C), ap)]
143+func al (am) = fraction((100 + am), U, 100)
180144
181145
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))
191164 then throw("cannot fill order at the moment")
192165 else {
193- let aE = (aA - aC)
194- let aF = if (ay)
195- then [DataEntry(D(ar), av), DataEntry(E(ar), aw), DataEntry(F(ar), toBase58String(ax.bytes)), DataEntry(G(ar), height), DataEntry(H(ar), q), DataEntry(("debug_order_currentPrice_" + ar), X), DataEntry(B(ar), au)]
196- else [DataEntry(I(ar), (at + aC)), DataEntry(H(ar), q), DataEntry(E(ar), aw), DataEntry(J(as), ""), DataEntry(A, as)]
197- ScriptResult(WriteSet(aF), TransferSet([ScriptTransfer(ax, aB, V), ScriptTransfer(R, aC, unit), ScriptTransfer(ax, aE, unit)]))
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)])
198171 }
199172 }
200173
201174
202-func aG (ap,N,aH,aI,ay) = {
203- let aJ = extract(aI.payment)
204- let aK = toBase58String(aI.transactionId)
205- if (W)
175+func aN (aw,K,aO,aP,aF) = {
176+ let aQ = value(aP.payments[0])
177+ let aR = toBase58String(aP.transactionId)
178+ if (T)
206179 then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles")
207- else if ((m > aJ.amount))
180+ else if ((m > aQ.amount))
208181 then throw(("min order total equals " + toString(m)))
209- else if ((ap > n))
182+ else if ((aw > n))
210183 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)
236220 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+ }
265234 }
266235
267236
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+ }
274273 }
275274
276275
277276
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+ }
286287 }
287288
288289
289290
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)
306298 }
307299
308300
309301
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)
312324 then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles")
313325 else if ((ac == ""))
314326 then throw("empty orderbook")
315327 else {
316- let aM = ak(ac)
317- let aT = ai(ac)
318- let aU = ad(ac)
319- let ap = a(B(ac))
320- let aV = af(ac)
321- let ax = Address(fromBase58String(ag(ac)))
322- aq(ac, aM, aT, ap, aU, aV, ax, false)
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)
323335 }
324336
325337
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])))
349342 then 1
350- else 0) + (if (sigVerify(aZ.bodyBytes, aZ.proofs[1], fromBase58String(bb[1])))
343+ else 0) + (if (sigVerify(bz.bodyBytes, bz.proofs[1], fromBase58String(bB[1])))
351344 then 1
352- else 0)) + (if (sigVerify(aZ.bodyBytes, aZ.proofs[2], fromBase58String(bb[2])))
345+ else 0)) + (if (sigVerify(bz.bodyBytes, bz.proofs[2], fromBase58String(bB[2])))
353346 then 1
354- else 0)) + (if (sigVerify(aZ.bodyBytes, aZ.proofs[3], fromBase58String(bb[3])))
347+ else 0)) + (if (sigVerify(bz.bodyBytes, bz.proofs[3], fromBase58String(bB[3])))
355348 then 2
356349 else 0))
357- (bc >= 3)
350+ (bC >= 3)
358351 }
359352
Full:
OldNewDifferences
1-{-# STDLIB_VERSION 3 #-}
1+{-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# 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)
135
146
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), "")
248
259
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)
3511
3612
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), "")
4614
4715
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)
5717
5818
59-let j = 100000000
19+let h = 100000000
6020
61-let k = 1000000
21+let i = 1000000
6222
63-let l = 1000000
23+let j = 1000000
6424
65-let m = (10 * j)
25+let k = 100000000
26+
27+let l = 8
28+
29+let m = (10 * h)
6630
6731 let n = 95
6832
6933 let o = "canceled"
7034
7135 let p = "new"
7236
7337 let q = "filled"
7438
75-let r = "neutrino_contract"
39+let r = "price"
7640
77-let s = "price"
41+let s = "bond_asset_id"
7842
79-let t = "bond_asset_id"
43+let t = "neutrino_asset_id"
8044
81-let u = "neutrino_asset_id"
45+let u = "balance_lock_"
8246
83-let v = "control_contract"
47+let v = (u + "waves")
8448
85-let w = "balance_lock_"
49+let w = (u + "neutrino")
8650
87-let x = (w + "waves")
51+let x = "order_first"
8852
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)
9654
9755
98-func D (C) = ("order_price_" + C)
56+func A (z) = ("order_price_" + z)
9957
10058
101-func E (C) = ("order_total_" + C)
59+func B (z) = ("order_total_" + z)
10260
10361
104-func F (C) = ("order_owner_" + C)
62+func C (z) = ("order_owner_" + z)
10563
10664
107-func G (C) = ("order_height_" + C)
65+func D (z) = ("order_height_" + z)
10866
10967
110-func H (C) = ("order_status_" + C)
68+func E (z) = ("order_status_" + z)
11169
11270
113-func I (C) = ("order_filled_total_" + C)
71+func F (z) = ("order_filled_total_" + z)
11472
11573
116-func J (C) = ("order_prev_" + C)
74+func G (z) = ("order_prev_" + z)
11775
11876
119-func K (C) = ("order_next_" + C)
77+func H (z) = ("order_next_" + z)
12078
12179
122-func L (M,N) = fraction(fraction(M, l, N), j, k)
80+func I (J,K) = fraction(fraction(J, j, K), h, i)
12381
12482
125-func O (M,N) = fraction(fraction(M, N, l), k, j)
83+func L (J,K) = fraction(fraction(J, K, j), i, h)
12684
12785
128-func P (M,N) = O(M, N)
86+func M (J,K) = L(J, K)
12987
13088
131-func Q (M,N) = L(M, N)
89+func N (J,K) = I(J, K)
13290
13391
134-let R = Address(base58'3MxUeE9rS9G3ap3kSrw67vkjYyTL3QLJnk3')
92+let O = Address(base58'3MxUeE9rS9G3ap3kSrw67vkjYyTL3QLJnk3')
13593
136-let S = Address(base58'3MzosTW6DBBjpRwTZUWFhZo6UFW1yrmfdtB')
94+let P = Address(base58'3MzosTW6DBBjpRwTZUWFhZo6UFW1yrmfdtB')
13795
138-let T = Address(base58'3N1SXpSHeCeqSewbXS79otbnmP89uKUkWyf')
96+let Q = Address(base58'3N1SXpSHeCeqSewbXS79otbnmP89uKUkWyf')
13997
140-let U = base58'EHLhLVDUufqQytiAjBHzPhsPZgqsX6XfSCrVdxYeC4QN'
98+let R = base58'EHLhLVDUufqQytiAjBHzPhsPZgqsX6XfSCrVdxYeC4QN'
14199
142-let V = base58'91QmVf3hZQJeUX11nurBX76Quf94kQgVMDesqALsjQFN'
100+let S = base58'91QmVf3hZQJeUX11nurBX76Quf94kQgVMDesqALsjQFN'
143101
144-let W = f(S, "is_blocked")
102+let T = d(P, "is_blocked")
145103
146-let X = i(S, s)
104+let U = g(P, r)
147105
148-let Y = i(R, y)
106+let V = g(O, w)
149107
150-let Z = (wavesBalance(R) - i(R, x))
108+let W = (wavesBalance(O).regular - g(O, v))
151109
152-let aa = (((Y + extract(assetInfo(U)).quantity) - assetBalance(R, U)) - assetBalance(T, U))
110+let X = L(W, U)
153111
154-let ab = (aa - O(Z, X))
112+let Y = (((V + value(assetInfo(R)).quantity) - assetBalance(O, R)) - assetBalance(Q, R))
155113
156-let ac = e(A)
114+let Z = (Y - X)
157115
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))
159123
160124
161-func af (ae) = a(E(ae))
125+func af (ae) = a(B(ae))
162126
163127
164-func ag (ae) = e(F(ae))
128+func ag (ae) = c(C(ae))
165129
166130
167-func ah (ae) = e(H(ae))
131+func ah (ae) = c(E(ae))
168132
169133
170-func ai (ae) = a(I(ae))
134+func ai (ae) = a(F(ae))
171135
172136
173-func aj (ae) = e(J(ae))
137+func aj (ae) = c(G(ae))
174138
175139
176-func ak (ae) = e(K(ae))
140+func ak (ae) = c(H(ae))
177141
178142
179-func al (C,am,an,ao,ap,N) = [DataEntry(D(C), N), DataEntry(E(C), am), DataEntry(F(C), an), DataEntry(G(C), height), DataEntry(H(C), ao), DataEntry(("debug_order_currentPrice_" + C), X), DataEntry(B(C), ap)]
143+func al (am) = fraction((100 + am), U, 100)
180144
181145
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))
191164 then throw("cannot fill order at the moment")
192165 else {
193- let aE = (aA - aC)
194- let aF = if (ay)
195- then [DataEntry(D(ar), av), DataEntry(E(ar), aw), DataEntry(F(ar), toBase58String(ax.bytes)), DataEntry(G(ar), height), DataEntry(H(ar), q), DataEntry(("debug_order_currentPrice_" + ar), X), DataEntry(B(ar), au)]
196- else [DataEntry(I(ar), (at + aC)), DataEntry(H(ar), q), DataEntry(E(ar), aw), DataEntry(J(as), ""), DataEntry(A, as)]
197- ScriptResult(WriteSet(aF), TransferSet([ScriptTransfer(ax, aB, V), ScriptTransfer(R, aC, unit), ScriptTransfer(ax, aE, unit)]))
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)])
198171 }
199172 }
200173
201174
202-func aG (ap,N,aH,aI,ay) = {
203- let aJ = extract(aI.payment)
204- let aK = toBase58String(aI.transactionId)
205- if (W)
175+func aN (aw,K,aO,aP,aF) = {
176+ let aQ = value(aP.payments[0])
177+ let aR = toBase58String(aP.transactionId)
178+ if (T)
206179 then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles")
207- else if ((m > aJ.amount))
180+ else if ((m > aQ.amount))
208181 then throw(("min order total equals " + toString(m)))
209- else if ((ap > n))
182+ else if ((aw > n))
210183 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)
236220 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+ }
265234 }
266235
267236
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+ }
274273 }
275274
276275
277276
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+ }
286287 }
287288
288289
289290
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)
306298 }
307299
308300
309301
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)
312324 then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles")
313325 else if ((ac == ""))
314326 then throw("empty orderbook")
315327 else {
316- let aM = ak(ac)
317- let aT = ai(ac)
318- let aU = ad(ac)
319- let ap = a(B(ac))
320- let aV = af(ac)
321- let ax = Address(fromBase58String(ag(ac)))
322- aq(ac, aM, aT, ap, aU, aV, ax, false)
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)
323335 }
324336
325337
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])))
349342 then 1
350- else 0) + (if (sigVerify(aZ.bodyBytes, aZ.proofs[1], fromBase58String(bb[1])))
343+ else 0) + (if (sigVerify(bz.bodyBytes, bz.proofs[1], fromBase58String(bB[1])))
351344 then 1
352- else 0)) + (if (sigVerify(aZ.bodyBytes, aZ.proofs[2], fromBase58String(bb[2])))
345+ else 0)) + (if (sigVerify(bz.bodyBytes, bz.proofs[2], fromBase58String(bB[2])))
353346 then 1
354- else 0)) + (if (sigVerify(aZ.bodyBytes, aZ.proofs[3], fromBase58String(bb[3])))
347+ else 0)) + (if (sigVerify(bz.bodyBytes, bz.proofs[3], fromBase58String(bB[3])))
355348 then 2
356349 else 0))
357- (bc >= 3)
350+ (bC >= 3)
358351 }
359352

github/deemru/w8io/873ac7e 
87.21 ms