tx · HVZUfbhWUgdgDGZCpNz5ARKHKaUJB3GtFpcG8k1HgQc9

3N5NAftzfcw3gAt8nc35bNr9UdPTVgC81fd:  -0.04000000 Waves

2022.07.11 10:08 [2134755] smart account 3N5NAftzfcw3gAt8nc35bNr9UdPTVgC81fd > SELF 0.00000000 Waves

{ "type": 13, "id": "HVZUfbhWUgdgDGZCpNz5ARKHKaUJB3GtFpcG8k1HgQc9", "fee": 4000000, "feeAssetId": null, "timestamp": 1657523376455, "version": 1, "sender": "3N5NAftzfcw3gAt8nc35bNr9UdPTVgC81fd", "senderPublicKey": "CdnTmMHxT68Qa4MtHEnAiUhsdKTi2YkHPGn92ThinVNt", "proofs": [ "5G3wJWgpynsiUZYshrB6Bx9fHQYcE91bqde5K3sybK4STeEHjc1e47PQY4BRDLjiDj7xrbmXyBj1ZYcqwv9nnPuH", "3jjRscdPc7kLGDkUXpt5K4xkB3wvdFubR8SSwqj4juV3UStbrnarePhjJpBHDNAhLJchyZTedrRswqDq3yBhkEWq", "4UzBFvwTkvNWmM5HJt2zBDNM7qkJpEgu2y5NbtSMXLSae4Ro9obZAmmXGyKaYyHaz32kEvWRhm9NcA9bHf9bgdSG" ], "script": "base64:AAIFAAAAAAAAACcIAhIFCgMIAQESBAoCAQESABIAEgMKAQgSABIAEgASABIFCgMBAQQAAABaAQAAAA5nZXROdW1iZXJCeUtleQAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQAAAAAAAAAAAAEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkCAAAAAAEAAAAWZ2V0Qm9vbEJ5QWRkcmVzc0FuZEtleQAAAAIAAAAHYWRkcmVzcwAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQbAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5BwEAAAAYZ2V0U3RyaW5nQnlBZGRyZXNzQW5kS2V5AAAAAgAAAAdhZGRyZXNzAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAdhZGRyZXNzBQAAAANrZXkCAAAAAAEAAAAYZ2V0TnVtYmVyQnlBZGRyZXNzQW5kS2V5AAAAAgAAAAdhZGRyZXNzAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAdhZGRyZXNzBQAAAANrZXkAAAAAAAAAAAABAAAACWFzQW55TGlzdAAAAAEAAAADdmFsBAAAAAckbWF0Y2gwBQAAAAN2YWwDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACUxpc3RbQW55XQQAAAAKdmFsQW55THlzdAUAAAAHJG1hdGNoMAUAAAAKdmFsQW55THlzdAkAAAIAAAABAgAAABtmYWlsIHRvIGNhc3QgaW50byBMaXN0W0FueV0BAAAACGFzU3RyaW5nAAAAAQAAAAN2YWwEAAAAByRtYXRjaDAFAAAAA3ZhbAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAZ2YWxTdHIFAAAAByRtYXRjaDAFAAAABnZhbFN0cgkAAAIAAAABAgAAABhmYWlsIHRvIGNhc3QgaW50byBTdHJpbmcBAAAABWFzSW50AAAAAQAAAAN2YWwEAAAAByRtYXRjaDAFAAAAA3ZhbAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAZ2YWxJbnQFAAAAByRtYXRjaDAFAAAABnZhbEludAkAAAIAAAABAgAAABVmYWlsIHRvIGNhc3QgaW50byBJbnQAAAAAA1NFUAIAAAACX18AAAAABU1VTFQ0AAAAAAAAACcQAAAAAAVNVUxUNgAAAAAAAA9CQAAAAAAFTVVMVDgAAAAAAAX14QAAAAAAB01VTFRYMTYJAAE2AAAAAQAAI4byb8EAAAAAAAAIQ0FOQ0VMRUQCAAAACGNhbmNlbGVkAAAAAANORVcCAAAAA25ldwAAAAAGRklMTEVEAgAAAAZmaWxsZWQAAAAAB1dBVkVTSUQJAAJZAAAAAQIAAAAFV0FWRVMAAAAAD25NZXRyaWNJZHhQcmljZQAAAAAAAAAAAAAAAAAbbk1ldHJpY0lkeFVzZG5Mb2NrZWRCYWxhbmNlAAAAAAAAAAABAAAAABxuTWV0cmljSWR4V2F2ZXNMb2NrZWRCYWxhbmNlAAAAAAAAAAACAAAAABFuTWV0cmljSWR4UmVzZXJ2ZQAAAAAAAAAAAwAAAAAXbk1ldHJpY0lkeFJlc2VydmVJblVzZG4AAAAAAAAAAAQAAAAAFG5NZXRyaWNJZHhVc2RuU3VwcGx5AAAAAAAAAAAFAAAAABFuTWV0cmljSWR4U3VycGx1cwAAAAAAAAAABgAAAAAYbk1ldHJpY0lkeFN1cnBsdXNQZXJjZW50AAAAAAAAAAAHAAAAAAxuTWV0cmljSWR4QlIAAAAAAAAAAAgAAAAAFG5NZXRyaWNJZHhOc2J0U3VwcGx5AAAAAAAAAAAJAAAAABduTWV0cmljSWR4TWF4TnNidFN1cHBseQAAAAAAAAAACgAAAAAUbk1ldHJpY0lkeFN1cmZTdXBwbHkAAAAAAAAAAAsAAAAADGJGdW5jSWR4U3VyZgAAAAAAAAAAAAAAAAANYkZ1bmNJZHhXYXZlcwAAAAAAAAAAAQAAAAAMYkZ1bmNJZHhVc2RuAAAAAAAAAAACAAAAABRiRnVuY0lkeFJlc2VydmVTdGFydAAAAAAAAAAAAwAAAAATYkZ1bmNJZHhTdXBwbHlTdGFydAAAAAAAAAAABAAAAAAPYkZ1bmNJZHhCUlN0YXJ0AAAAAAAAAAAFAAAAABJiRnVuY0lkeFJlc2VydmVFbmQAAAAAAAAAAAYAAAAAEWJGdW5jSWR4U3VwcGx5RW5kAAAAAAAAAAAHAAAAAA1iRnVuY0lkeEJSRW5kAAAAAAAAAAAIAAAAAAxiRnVuY0lkeFJlc3QAAAAAAAAAAAkAAAAAEmJGdW5jSWR4V2F2ZXNQcmljZQAAAAAAAAAACgAAAAAIUHJpY2VLZXkCAAAABXByaWNlAAAAAA5Oc2J0QXNzZXRJZEtleQIAAAANYm9uZF9hc3NldF9pZAAAAAASTmV1dHJpbm9Bc3NldElkS2V5AgAAABFuZXV0cmlub19hc3NldF9pZAAAAAAOU3VyZkFzc2V0SWRLZXkCAAAADXN1cmZfYXNzZXRfaWQAAAAAEUJhbGFuY2VMb2NrZWRrS2V5AgAAAA1iYWxhbmNlX2xvY2tfAAAAABVXYXZlc0xvY2tlZEJhbGFuY2VLZXkJAAEsAAAAAgUAAAARQmFsYW5jZUxvY2tlZGtLZXkCAAAABXdhdmVzAAAAABhOZXV0cmlub0xvY2tlZEJhbGFuY2VLZXkJAAEsAAAAAgUAAAARQmFsYW5jZUxvY2tlZGtLZXkCAAAACG5ldXRyaW5vAAAAAA1GaXJzdE9yZGVyS2V5AgAAAAtvcmRlcl9maXJzdAAAAAAPTWF0aENvbnRyYWN0S2V5AgAAAA1tYXRoX2NvbnRyYWN0AAAAABVNaW5XYXZlc0Zvck5zYnRCdXlLZXkCAAAAEm1pbl93YXZlc19uc2J0X2J1eQAAAAAOTWluTnNidFNlbGxLZXkCAAAADW1pbl9uc2J0X3NlbGwAAAAAFU1pbldhdmVzRm9yU3VyZkJ1eUtleQIAAAASbWluX3dhdmVzX3N1cmZfYnV5AAAAABRNaW5Vc2RuRm9yU3VyZkJ1eUtleQIAAAARbWluX3VzZG5fc3VyZl9idXkBAAAAEmdldFJvaUJ5T3JkZXJJZEtleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAABBkZWJ1Z19vcmRlcl9yb2lfBQAAAAdvcmRlcklkAQAAABBnZXRPcmRlclByaWNlS2V5AAAAAQAAAAdvcmRlcklkCQABLAAAAAICAAAADG9yZGVyX3ByaWNlXwUAAAAHb3JkZXJJZAEAAAAQZ2V0T3JkZXJUb3RhbEtleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAAxvcmRlcl90b3RhbF8FAAAAB29yZGVySWQBAAAAEGdldE9yZGVyT3duZXJLZXkAAAABAAAAB29yZGVySWQJAAEsAAAAAgIAAAAMb3JkZXJfb3duZXJfBQAAAAdvcmRlcklkAQAAABFnZXRPcmRlckhlaWdodEtleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAA1vcmRlcl9oZWlnaHRfBQAAAAdvcmRlcklkAQAAABFnZXRPcmRlclN0YXR1c0tleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAA1vcmRlcl9zdGF0dXNfBQAAAAdvcmRlcklkAQAAABZnZXRPcmRlckZpbGxlZFRvdGFsS2V5AAAAAQAAAAdvcmRlcklkCQABLAAAAAICAAAAE29yZGVyX2ZpbGxlZF90b3RhbF8FAAAAB29yZGVySWQBAAAAD2dldFByZXZPcmRlcktleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAAtvcmRlcl9wcmV2XwUAAAAHb3JkZXJJZAEAAAAPZ2V0TmV4dE9yZGVyS2V5AAAAAQAAAAdvcmRlcklkCQABLAAAAAICAAAAC29yZGVyX25leHRfBQAAAAdvcmRlcklkAQAAABZjb252ZXJ0TmV1dHJpbm9Ub1dhdmVzAAAAAgAAAAZhbW91bnQAAAAFcHJpY2UJAABrAAAAAwUAAAAGYW1vdW50BQAAAAVNVUxUOAUAAAAFcHJpY2UBAAAAFmNvbnZlcnRXYXZlc1RvTmV1dHJpbm8AAAACAAAABmFtb3VudAAAAAVwcmljZQkAAGsAAAADBQAAAAZhbW91bnQFAAAABXByaWNlBQAAAAVNVUxUOAEAAAAFdG9YMTYAAAACAAAAB29yaWdWYWwAAAANb3JpZ1NjYWxlTXVsdAkAATwAAAADCQABNgAAAAEFAAAAB29yaWdWYWwFAAAAB01VTFRYMTYJAAE2AAAAAQUAAAANb3JpZ1NjYWxlTXVsdAEAAAAHZnJvbVgxNgAAAAIAAAADdmFsAAAAD3Jlc3VsdFNjYWxlTXVsdAkAAaAAAAABCQABPAAAAAMFAAAAA3ZhbAkAATYAAAABBQAAAA9yZXN1bHRTY2FsZU11bHQFAAAAB01VTFRYMTYAAAAAEG5ldXRyaW5vQ29udHJhY3QJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVTX5YnYYiLrMWyfu8rmkonHDc0g4nCta94AAAAAD2NvbnRyb2xDb250cmFjdAkBAAAAB0FkZHJlc3MAAAABAQAAABoBVCFBmWCv1bHMtRUHYsxdLI5/1uzEtUljoQAAAAATbGlxdWlkYXRpb25Db250cmFjdAkBAAAAB0FkZHJlc3MAAAABAQAAABoBVIU74x8XFOr+m4eGxNcmrGVmBniai3IguQAAAAAMbWF0aENvbnRyYWN0CQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABBQAAAA9NYXRoQ29udHJhY3RLZXkAAAAAD25ldXRyaW5vQXNzZXRJZAEAAAAg93bq9/eDymXbbhPuAjvPWCmVqcHRjfJL2mzYHWKAyN4AAAAAC25zYnRBc3NldElkAQAAACDQtcyxzfaIZM1HKi2M+rz5PsT9DiVMH3RcKTr+nWmhEAAAAAAJaXNCbG9ja2VkCQEAAAAWZ2V0Qm9vbEJ5QWRkcmVzc0FuZEtleQAAAAIFAAAAD2NvbnRyb2xDb250cmFjdAIAAAAKaXNfYmxvY2tlZAAAAAAVbWluV2F2ZXNBbW91bnROc2J0QnV5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAFU1pbldhdmVzRm9yTnNidEJ1eUtleQAAAAAAO5rKAAAAAAALbWluTnNidFNlbGwJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAAOTWluTnNidFNlbGxLZXkAAAAAAAAPQkAAAAAAFW1pbldhdmVzQW1vdW50U3VyZkJ1eQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAABVNaW5XYXZlc0ZvclN1cmZCdXlLZXkAAAAAAAX14QAAAAAAFG1pblVzZG5BbW91bnRTdXJmQnV5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAFE1pblVzZG5Gb3JTdXJmQnV5S2V5AAAAAAAAmJaAAAAAAApmaXJzdE9yZGVyCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABBQAAAA1GaXJzdE9yZGVyS2V5AQAAAA1nZXRPcmRlclByaWNlAAAAAQAAAAJpZAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAEGdldE9yZGVyUHJpY2VLZXkAAAABBQAAAAJpZAEAAAANZ2V0T3JkZXJUb3RhbAAAAAEAAAACaWQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABBnZXRPcmRlclRvdGFsS2V5AAAAAQUAAAACaWQBAAAADWdldE9yZGVyT3duZXIAAAABAAAAAmlkCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAQZ2V0T3JkZXJPd25lcktleQAAAAEFAAAAAmlkAQAAAA5nZXRPcmRlclN0YXR1cwAAAAEAAAACaWQJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABFnZXRPcmRlclN0YXR1c0tleQAAAAEFAAAAAmlkAQAAABNnZXRPcmRlckZpbGxlZFRvdGFsAAAAAQAAAAJpZAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFmdldE9yZGVyRmlsbGVkVG90YWxLZXkAAAABBQAAAAJpZAEAAAAMZ2V0UHJldk9yZGVyAAAAAQAAAAJpZAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAD2dldFByZXZPcmRlcktleQAAAAEFAAAAAmlkAQAAAAxnZXROZXh0T3JkZXIAAAABAAAAAmlkCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAPZ2V0TmV4dE9yZGVyS2V5AAAAAQUAAAACaWQBAAAAD2dldFJldmVyc2VQcmljZQAAAAEAAAAFcHJpY2UJAABpAAAAAgkAAGgAAAACBQAAAAVNVUxUNgUAAAAFTVVMVDYFAAAABXByaWNlAQAAABZjYWxjTnNidDJXYXZlc1ByaWNlUmF3AAAAAgAAAA1zcGVudFdhdmVzUmF3AAAAD3JlY2VpdmVkTnNidFJhdwkAATwAAAADCQABNgAAAAEFAAAADXNwZW50V2F2ZXNSYXcJAAE2AAAAAQkAAGgAAAACBQAAAAVNVUxUNgUAAAAFTVVMVDYJAAE2AAAAAQUAAAAPcmVjZWl2ZWROc2J0UmF3AQAAAAlvcmRlckRhdGEAAAAIAAAAB29yZGVySWQAAAANdG90YWxXYXZlbGV0cwAAAA5maWxsZWRXYXZlbGV0cwAAAAVvd25lcgAA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clYyAAAAAgAAABVtaW5XYXZlc0ZvclN1cmZCdXlLZXkAAAAUbWluVXNkbkZvclN1cmZCdXlLZXkDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMJAAACAAAAAQIAAAARUGVybWlzc2lvbiBkZW5pZWQEAAAABWlzc3VlCQAEQwAAAAcCAAAABFNVUkYCAAAALFNtYXJ0IFV0aWxpdHkgUmVjYXBpdGFsaXphdGlvbiBGZWF0dXJlIHRva2VuAAAAAAAAAAAAAAAAAAAAAAAGBgUAAAAEdW5pdAAAAAAAAAAAAAQAAAAHYXNzZXRJZAkABDgAAAABBQAAAAVpc3N1ZQkABEwAAAACBQAAAAVpc3N1ZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA5TdXJmQXNzZXRJZEtleQkAAlgAAAABBQAAAAdhc3NldElkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABVNaW5XYXZlc0ZvclN1cmZCdXlLZXkFAAAAFW1pbldhdmVzRm9yU3VyZkJ1eUtleQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAUTWluVXNkbkZvclN1cmZCdXlLZXkFAAAAFG1pblVzZG5Gb3JTdXJmQnV5S2V5BQAAAANuaWwAAAABaQEAAAAHYnV5TnNidAAAAAAEAAAAA3BtdAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAJcG10QW1vdW50CAUAAAADcG10AAAABmFtb3VudAQAAAAId2F2ZXNQYXkFAAAACXBtdEFtb3VudAMFAAAACWlzQmxvY2tlZAkAAAIAAAABAgAAAFljb250cmFjdCBpcyBibG9ja2VkIGJ5IEVNRVJHRU5DWSBTSFVURE9XTiBhY3Rpb25zIHVudGlsIHJlYWN0aXZhdGlvbiBieSBlbWVyZ2VuY3kgb3JhY2xlcwMJAQAAAAlpc0RlZmluZWQAAAABCAUAAAADcG10AAAAB2Fzc2V0SWQJAAACAAAAAQIAAAASY2FuIHVzZSB3YXZlcyBvbmx5AwkAAGYAAAACBQAAABVtaW5XYXZlc0Ftb3VudE5zYnRCdXkFAAAACXBtdEFtb3Vu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AAAJbmV4dE9yZGVyBQAAAApmaXJzdE9yZGVyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA9nZXROZXh0T3JkZXJLZXkAAAABBQAAAAlwcmV2T3JkZXIFAAAACW5leHRPcmRlcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAPZ2V0UHJldk9yZGVyS2V5AAAAAQUAAAAJbmV4dE9yZGVyBQAAAAlwcmV2T3JkZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEWdldE9yZGVyU3RhdHVzS2V5AAAAAQUAAAAHb3JkZXJJZAUAAAAIQ0FOQ0VMRUQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAZhbW91bnQFAAAABHVuaXQFAAAAA25pbAAAAAFpAQAAACBtaW5XYXZlc0Ftb3VudE5zYnRCdXlTWVNSRUFET05MWQAAAAAJAAUUAAAAAgUAAAADbmlsBQAAABVtaW5XYXZlc0Ftb3VudE5zYnRCdXkAAAABaQEAAAAfbWluTnNidEFtb3VudEZvclNlbGxTWVNSRUFET05MWQAAAAAJAAUUAAAAAgUAAAADbmlsBQAAAAttaW5Oc2J0U2VsbAAAAAFpAQAAACBtaW5XYXZlc0Ftb3VudFN1cmZCdXlTWVNSRUFET05MWQAAAAAJAAUUAAAAAgUAAAADbmlsBQAAABVtaW5XYXZlc0Ftb3VudFN1cmZCdXkAAAABaQEAAAAfbWluVXNkbkFtb3VudFN1cmZCdXlTWVNSRUFET05MWQAAAAAJAAUUAAAAAgUAAAADbmlsBQAAABRtaW5Vc2RuQW1vdW50U3VyZkJ1eQAAAAFpAQAAAAdidXlTdXJmAAAAAwAAABJhdmVyYWdlUHJpY2VXYW50ZWQAAAAQbWF4VG9sZXJhbmNlUGVyYwAAAAlhdXRvU3Rha2UDCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABCQAAAgAAAAECAAAAImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEAAAAA3BtdAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAA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AARyZXN0AAAAAAAAAAAACQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAEG5ldXRyaW5vQ29udHJhY3QJAABlAAAAAgUAAAADYW10BQAAAARyZXN0BQAAAA9uZXV0cmlub0Fzc2V0SWQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAARyZXN0BQAAAA9uZXV0cmlub0Fzc2V0SWQFAAAAA25pbAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAABBuZXV0cmlub0NvbnRyYWN0CQAAZQAAAAIFAAAAA2FtdAUAAAAEcmVzdAUAAAAPbmV1dHJpbm9Bc3NldElkBQAAAANuaWwEAAAAC3N1cmZBc3NldElkCQACWQAAAAEJAQAAABFAZXh0ck5hdGl2ZSgxMDU4KQAAAAEFAAAADlN1cmZBc3NldElkS2V5CQAETgAAAAIFAAAACHRyYW5zZmVyCQAETAAAAAIJAQAAAAdSZWlzc3VlAAAAAwUAAAALc3VyZkFzc2V0SWQFAAAACnN1cmZBbW91bnQGCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAKc3VyZkFtb3VudAUAAAALc3VyZkFzc2V0SWQJAARMAAAAAgkBAAAACHN1cmZEYXRhAAAAAQUAAAAKc3VyZlJlc3VsdAUAAAADbmlsAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAQAAAATcHViS2V5QWRtaW5zTGlzdFN0cgkABLkAAAACCQAETAAAAAICAAAALEV4dEVFSzE5bm1LajltQ3BuV3l2RUVKRllBVExNY1ZFTXZvaGhVSGt5SE5tCQAETAAAAAICAAAALEV2NXB5NUZmQlFYOWNacFlLbmZRclRCNDlCeWY4UW1wWldlRFZSaW00eVY3CQAETAAAAAICAAAALERVdXVMalh1OThuQndaYzdmcXdDVGp0QTNublJ3Z1Ria01TcjVTVTJObURSCQAETAAAAAICAAAALDVXUlhGU2p3Y1RiTmZLY0pzOFpxWG1TU1dZc1NWSlV0TXZNcVpqNWhINE5jBQAAAANuaWwFAAAAA1NFUAQAAAAQcHViS2V5QWRtaW5zTGlzdAkABLUAAAACCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAAD2NvbnRyb2xDb250cmFjdAIAAAAMJXNfX211bHRpc2lnBQAAABNwdWJLZXlBZG1pbnNMaXN0U3RyBQAAAANTRVAEAAAABWNvdW50CQAAZAAAAAIJAABkAAAAAgkAAGQAAAACAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAJAAJZAAAAAQkAAZEAAAACBQAAABBwdWJLZXlBZG1pbnNMaXN0AAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAEJAAJZAAAAAQkAAZEAAAACBQAAABBwdWJLZXlBZG1pbnNMaXN0AAAAAAAAAAABAAAAAAAAAAABAAAAAAAAAAAAAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAIJAAJZAAAAAQkAAZEAAAACBQAAABBwdWJLZXlBZG1pbnNMaXN0AAAAAAAAAAACAAAAAAAAAAABAAAAAAAAAAAAAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAMJAAJZAAAAAQkAAZEAAAACBQAAABBwdWJLZXlBZG1pbnNMaXN0AAAAAAAAAAADAAAAAAAAAAACAAAAAAAAAAAACQAAZwAAAAIFAAAABWNvdW50AAAAAAAAAAADS9v/1w==", "chainId": 84, "height": 2134755, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3Mng8tXZefAVxfnYNekSVD4bHtZM8of6by7GTp2bwVYZ Next: 9pGyseh4T9XjJJyWuLEBJfisFyLzrGo1mLFG8Cd7oHFg Diff:
OldNewDifferences
5151
5252 let p = "__"
5353
54-let q = 1000000
54+let q = 10000
5555
56-let r = 100000000
56+let r = 1000000
5757
58-let s = toBigInt(10000000000000000)
58+let s = 100000000
5959
60-let t = "canceled"
60+let t = toBigInt(10000000000000000)
6161
62-let u = "new"
62+let u = "canceled"
6363
64-let v = "filled"
64+let v = "new"
6565
66-let w = fromBase58String("WAVES")
66+let w = "filled"
6767
68-let x = 0
68+let x = fromBase58String("WAVES")
6969
70-let y = 1
70+let y = 0
7171
72-let z = 2
72+let z = 1
7373
74-let A = 3
74+let A = 2
7575
76-let B = 4
76+let B = 3
7777
78-let C = 5
78+let C = 4
7979
80-let D = 6
80+let D = 5
8181
82-let E = 7
82+let E = 6
8383
84-let F = 8
84+let F = 7
8585
86-let G = 9
86+let G = 8
8787
88-let H = 10
88+let H = 9
8989
90-let I = 11
90+let I = 10
9191
92-let J = 0
92+let J = 11
9393
94-let K = 1
94+let K = 0
9595
96-let L = 2
96+let L = 1
9797
98-let M = 3
98+let M = 2
9999
100-let N = 4
100+let N = 3
101101
102-let O = 5
102+let O = 4
103103
104-let P = 6
104+let P = 5
105105
106-let Q = 7
106+let Q = 6
107107
108-let R = 8
108+let R = 7
109109
110-let S = 9
110+let S = 8
111111
112-let T = 10
112+let T = 9
113113
114-let U = 11
114+let U = 10
115115
116116 let V = "price"
117117
166166 func ar (aj) = ("order_next_" + aj)
167167
168168
169-func as (at,au) = fraction(at, r, au)
169+func as (at,au) = fraction(at, s, au)
170170
171171
172-func av (at,au) = fraction(at, au, r)
172+func av (at,au) = fraction(at, au, s)
173173
174174
175-func aw (ax,ay) = fraction(toBigInt(ax), s, toBigInt(ay))
175+func aw (ax,ay) = fraction(toBigInt(ax), t, toBigInt(ay))
176176
177177
178-func az (i,aA) = toInt(fraction(i, toBigInt(aA), s))
178+func az (i,aA) = toInt(fraction(i, toBigInt(aA), t))
179179
180180
181181 let aB = Address(base58'3N9be2mwrA52WJho6DiesZkk4351GvpnWuj')
223223 func aU (aO) = c(ar(aO))
224224
225225
226-func aV (au) = ((q * q) / au)
226+func aV (au) = ((r * r) / au)
227227
228228
229-func aW (aX,aY) = fraction(toBigInt(aX), toBigInt((q * q)), toBigInt(aY))
229+func aW (aX,aY) = fraction(toBigInt(aX), toBigInt((r * r)), toBigInt(aY))
230230
231231
232232 func aZ (aj,ba,bb,bc,bd,be,au,bf) = [StringEntry(ak(aj), toString(au)), IntegerEntry(al(aj), ba), IntegerEntry(ap(aj), bb), StringEntry(am(aj), bc), IntegerEntry(an(aj), height), StringEntry(ao(aj), bd), IntegerEntry(("debug_order_currentPrice_" + aj), bf), IntegerEntry(ai(aj), be)]
235235 func bg (bh,bi) = (((((((((((((((((((((((((((((((((((bh + "[nsbtAmountRaw=") + toString(n(bi[0]))) + " usdnPayment=") + toString(n(bi[1]))) + " wRaw=") + toString(n(bi[2]))) + " uRaw=") + toString(n(bi[3]))) + " mRaw=") + toString(n(bi[4]))) + " sRaw=") + toString(n(bi[5]))) + " nsbtCurveParam_a=") + toString(n(bi[6]))) + " nsbtCurveParam_b=") + toString(n(bi[7]))) + " wReservesInUsdn=") + toString(n(bi[8]))) + " price=") + toString(n(bi[9]))) + " multBR=") + toString(n(bi[10]))) + " multPower=") + toString(n(bi[11]))) + " multExpInPower=") + l(bi[12])) + " multK=") + l(bi[13])) + " step1=") + l(bi[14])) + " step2=") + l(bi[15])) + " step3=") + toString(n(bi[16]))) + "]")
236236
237237
238-func bj (bk) = StringEntry("debug_surfResult", makeString(["%d%d%d%d%d%d%d%d%d%d%d", toString(n(bk[J])), toString(n(bk[K])), toString(n(bk[L])), toString(n(bk[M])), toString(n(bk[N])), toString(n(bk[O])), toString(n(bk[P])), toString(n(bk[Q])), toString(n(bk[R])), toString(n(bk[S])), toString(n(bk[T]))], p))
238+func bj (bk) = StringEntry("debug_surfResult", makeString(["%d%d%d%d%d%d%d%d%d%d%d", toString(n(bk[K])), toString(n(bk[L])), toString(n(bk[M])), toString(n(bk[N])), toString(n(bk[O])), toString(n(bk[P])), toString(n(bk[Q])), toString(n(bk[R])), toString(n(bk[S])), toString(n(bk[T])), toString(n(bk[U]))], p))
239239
240240
241241 @Callable(bl)
266266 else if (isDefined(bs.assetId))
267267 then throw("can use waves only")
268268 else if ((aI > bt))
269- then throw((("min " + toString((aI / r))) + " waves expected"))
269+ then throw((("min " + toString((aI / s))) + " waves expected"))
270270 else {
271271 let bv = bl.caller
272272 let bw = h(invoke(aE, "calcNeutinoMetricsREADONLY", nil, nil))
280280 let be = 0
281281 let bz = invoke(aB, "acceptWaves", nil, bl.payments)
282282 if ((bz == bz))
283- then $Tuple2((aZ(toBase58String(bl.transactionId), bt, bt, toString(bv), v, be, by, bf) ++ [ScriptTransfer(bv, bx, aG), StringEntry("debug_curveResult", bg("curveResult", bi))]), bx)
283+ then $Tuple2((aZ(toBase58String(bl.transactionId), bt, bt, toString(bv), w, be, by, bf) ++ [ScriptTransfer(bv, bx, aG), StringEntry("debug_curveResult", bg("curveResult", bi))]), bx)
284284 else throw("Strict value is not equal to itself.")
285285 }
286286 }
297297 if ((bs.assetId != aG))
298298 then throw("can use NSBT only")
299299 else if ((aJ > bt))
300- then throw((("min " + toString((aJ / q))) + " nsbt expected"))
300+ then throw((("min " + toString((aJ / r))) + " nsbt expected"))
301301 else {
302302 let bA = n(h(invoke(aE, "calcContractNsbtPriceSYSREADONLY", [-(bt)], nil))[0])
303- if ((q > bA))
303+ if ((r > bA))
304304 then throw((("resulting nsbt price would be < 1 (" + toString(bA)) + " usdn)"))
305305 else {
306306 let bB = invoke(aB, "transferUsdnToUser", [bt, toString(bl.caller)], nil)
320320 let bC = toString(bl.caller)
321321 let bD = aU(aj)
322322 let bE = aT(aj)
323- if ((aR(aj) != u))
323+ if ((aR(aj) != v))
324324 then throw("invalid order status")
325325 else [StringEntry(ac, if ((aM == aj))
326326 then bD
327- else aM), StringEntry(ar(bE), bD), StringEntry(aq(bD), bE), StringEntry(ao(aj), t), ScriptTransfer(bl.caller, at, unit)]
327+ else aM), StringEntry(ar(bE), bD), StringEntry(aq(bD), bE), StringEntry(ao(aj), u), ScriptTransfer(bl.caller, at, unit)]
328328 }
329329
330330
355355 else {
356356 let bs = bl.payments[0]
357357 let bI = bs.amount
358- let bJ = valueOrElse(bs.assetId, w)
358+ let bJ = valueOrElse(bs.assetId, x)
359359 if (if ((bJ != aF))
360- then (bJ != w)
360+ then (bJ != x)
361361 else false)
362362 then throw("Unsupported payment asset")
363363 else if (if ((bJ == aF))
364364 then (aL > bI)
365365 else false)
366- then throw((("min " + toString((aL / q))) + " USDN expected"))
367- else if (if ((bJ == w))
366+ then throw((("min " + toString((aL / r))) + " USDN expected"))
367+ else if (if ((bJ == x))
368368 then (aK > bI)
369369 else false)
370- then throw((("min " + toString((aK / r))) + " WAVES expected"))
370+ then throw((("min " + toString((aK / s))) + " WAVES expected"))
371371 else {
372372 let bk = h(invoke(aE, "surfFunctionREADONLY", [bI, bJ], nil))
373- let bK = n(bk[J])
374- let bL = fraction(bF, bK, r)
375- let bM = if ((bJ == w))
376- then n(bk[K])
377- else n(bk[L])
378- let bN = fraction((bM - bL), q, bL)
373+ let bK = n(bk[K])
374+ let bL = fraction(bF, bK, if ((bJ == x))
375+ then q
376+ else r)
377+ let bM = if ((bJ == x))
378+ then n(bk[L])
379+ else n(bk[M])
380+ let bN = fraction((bM - bL), r, bL)
379381 if ((bN > bG))
380382 then throw(((("Tolerance " + toString(bG)) + " exceeded: ") + toString(bN)))
381383 else {
382- let bO = if ((bJ == w))
384+ let bO = n(bk[T])
385+ let bP = if ((bJ == x))
383386 then {
384- let bP = n(bk[S])
385- let bQ = invoke(aB, "acceptWaves", nil, [AttachedPayment(unit, (bI - bP))])
387+ let bQ = invoke(aB, "acceptWaves", nil, [AttachedPayment(unit, (bI - bO))])
386388 if ((bQ == bQ))
387- then if ((bP > 0))
388- then [ScriptTransfer(bl.caller, bP, unit)]
389+ then if ((bO > 0))
390+ then [ScriptTransfer(bl.caller, bO, unit)]
389391 else nil
390392 else throw("Strict value is not equal to itself.")
391393 }
392- else {
393- let bR = n(bk[T])
394- if ((bR > 0))
395- then [ScriptTransfer(aB, (bI - bR), aF), ScriptTransfer(bl.caller, bR, aF)]
396- else [ScriptTransfer(aB, (bI - bR), aF)]
397- }
398- let bS = fromBase58String(getStringValue(Y))
399- (bO ++ [Reissue(bS, bK, true), ScriptTransfer(bl.caller, bK, bS), bj(bk)])
394+ else if ((bO > 0))
395+ then [ScriptTransfer(aB, (bI - bO), aF), ScriptTransfer(bl.caller, bO, aF)]
396+ else [ScriptTransfer(aB, (bI - bO), aF)]
397+ let bR = fromBase58String(getStringValue(Y))
398+ (bP ++ [Reissue(bR, bK, true), ScriptTransfer(bl.caller, bK, bR), bj(bk)])
400399 }
401400 }
402401 }
403402
404403
405-@Verifier(bT)
406-func bU () = {
407- let bV = makeString(["ExtEEK19nmKj9mCpnWyvEEJFYATLMcVEMvohhUHkyHNm", "Ev5py5FfBQX9cZpYKnfQrTB49Byf8QmpZWeDVRim4yV7", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"], p)
408- let bW = split(valueOrElse(getString(aC, "%s__multisig"), bV), p)
409- let bX = ((((if (sigVerify(bT.bodyBytes, bT.proofs[0], fromBase58String(bW[0])))
404+@Verifier(bS)
405+func bT () = {
406+ let bU = makeString(["ExtEEK19nmKj9mCpnWyvEEJFYATLMcVEMvohhUHkyHNm", "Ev5py5FfBQX9cZpYKnfQrTB49Byf8QmpZWeDVRim4yV7", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"], p)
407+ let bV = split(valueOrElse(getString(aC, "%s__multisig"), bU), p)
408+ let bW = ((((if (sigVerify(bS.bodyBytes, bS.proofs[0], fromBase58String(bV[0])))
410409 then 1
411- else 0) + (if (sigVerify(bT.bodyBytes, bT.proofs[1], fromBase58String(bW[1])))
410+ else 0) + (if (sigVerify(bS.bodyBytes, bS.proofs[1], fromBase58String(bV[1])))
412411 then 1
413- else 0)) + (if (sigVerify(bT.bodyBytes, bT.proofs[2], fromBase58String(bW[2])))
412+ else 0)) + (if (sigVerify(bS.bodyBytes, bS.proofs[2], fromBase58String(bV[2])))
414413 then 1
415- else 0)) + (if (sigVerify(bT.bodyBytes, bT.proofs[3], fromBase58String(bW[3])))
414+ else 0)) + (if (sigVerify(bS.bodyBytes, bS.proofs[3], fromBase58String(bV[3])))
416415 then 2
417416 else 0))
418- (bX >= 3)
417+ (bW >= 3)
419418 }
420419
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func a (b) = valueOrElse(getInteger(this, b), 0)
55
66
77 func c (b) = valueOrElse(getString(this, b), "")
88
99
1010 func d (e,b) = valueOrElse(getBoolean(e, b), false)
1111
1212
1313 func f (e,b) = valueOrElse(getString(e, b), "")
1414
1515
1616 func g (e,b) = valueOrElse(getInteger(e, b), 0)
1717
1818
1919 func h (i) = {
2020 let j = i
2121 if ($isInstanceOf(j, "List[Any]"))
2222 then {
2323 let k = j
2424 k
2525 }
2626 else throw("fail to cast into List[Any]")
2727 }
2828
2929
3030 func l (i) = {
3131 let j = i
3232 if ($isInstanceOf(j, "String"))
3333 then {
3434 let m = j
3535 m
3636 }
3737 else throw("fail to cast into String")
3838 }
3939
4040
4141 func n (i) = {
4242 let j = i
4343 if ($isInstanceOf(j, "Int"))
4444 then {
4545 let o = j
4646 o
4747 }
4848 else throw("fail to cast into Int")
4949 }
5050
5151
5252 let p = "__"
5353
54-let q = 1000000
54+let q = 10000
5555
56-let r = 100000000
56+let r = 1000000
5757
58-let s = toBigInt(10000000000000000)
58+let s = 100000000
5959
60-let t = "canceled"
60+let t = toBigInt(10000000000000000)
6161
62-let u = "new"
62+let u = "canceled"
6363
64-let v = "filled"
64+let v = "new"
6565
66-let w = fromBase58String("WAVES")
66+let w = "filled"
6767
68-let x = 0
68+let x = fromBase58String("WAVES")
6969
70-let y = 1
70+let y = 0
7171
72-let z = 2
72+let z = 1
7373
74-let A = 3
74+let A = 2
7575
76-let B = 4
76+let B = 3
7777
78-let C = 5
78+let C = 4
7979
80-let D = 6
80+let D = 5
8181
82-let E = 7
82+let E = 6
8383
84-let F = 8
84+let F = 7
8585
86-let G = 9
86+let G = 8
8787
88-let H = 10
88+let H = 9
8989
90-let I = 11
90+let I = 10
9191
92-let J = 0
92+let J = 11
9393
94-let K = 1
94+let K = 0
9595
96-let L = 2
96+let L = 1
9797
98-let M = 3
98+let M = 2
9999
100-let N = 4
100+let N = 3
101101
102-let O = 5
102+let O = 4
103103
104-let P = 6
104+let P = 5
105105
106-let Q = 7
106+let Q = 6
107107
108-let R = 8
108+let R = 7
109109
110-let S = 9
110+let S = 8
111111
112-let T = 10
112+let T = 9
113113
114-let U = 11
114+let U = 10
115115
116116 let V = "price"
117117
118118 let W = "bond_asset_id"
119119
120120 let X = "neutrino_asset_id"
121121
122122 let Y = "surf_asset_id"
123123
124124 let Z = "balance_lock_"
125125
126126 let aa = (Z + "waves")
127127
128128 let ab = (Z + "neutrino")
129129
130130 let ac = "order_first"
131131
132132 let ad = "math_contract"
133133
134134 let ae = "min_waves_nsbt_buy"
135135
136136 let af = "min_nsbt_sell"
137137
138138 let ag = "min_waves_surf_buy"
139139
140140 let ah = "min_usdn_surf_buy"
141141
142142 func ai (aj) = ("debug_order_roi_" + aj)
143143
144144
145145 func ak (aj) = ("order_price_" + aj)
146146
147147
148148 func al (aj) = ("order_total_" + aj)
149149
150150
151151 func am (aj) = ("order_owner_" + aj)
152152
153153
154154 func an (aj) = ("order_height_" + aj)
155155
156156
157157 func ao (aj) = ("order_status_" + aj)
158158
159159
160160 func ap (aj) = ("order_filled_total_" + aj)
161161
162162
163163 func aq (aj) = ("order_prev_" + aj)
164164
165165
166166 func ar (aj) = ("order_next_" + aj)
167167
168168
169-func as (at,au) = fraction(at, r, au)
169+func as (at,au) = fraction(at, s, au)
170170
171171
172-func av (at,au) = fraction(at, au, r)
172+func av (at,au) = fraction(at, au, s)
173173
174174
175-func aw (ax,ay) = fraction(toBigInt(ax), s, toBigInt(ay))
175+func aw (ax,ay) = fraction(toBigInt(ax), t, toBigInt(ay))
176176
177177
178-func az (i,aA) = toInt(fraction(i, toBigInt(aA), s))
178+func az (i,aA) = toInt(fraction(i, toBigInt(aA), t))
179179
180180
181181 let aB = Address(base58'3N9be2mwrA52WJho6DiesZkk4351GvpnWuj')
182182
183183 let aC = Address(base58'3MrwvfA9VRYwhHy4NuWPQGdxCtZdhH4LMMa')
184184
185185 let aD = Address(base58'3N24ZPUAMhFm76N3vbNiiDtFqfUnmBHTc5N')
186186
187187 let aE = addressFromStringValue(c(ad))
188188
189189 let aF = base58'HezsdQuRDtzksAYUy97gfhKy7Z1NW2uXYSHA3bgqenNZ'
190190
191191 let aG = base58'F3iaxzruFeKujfVfYSZEkejpjh67wmRfPCRHiNmWKp3Z'
192192
193193 let aH = d(aC, "is_blocked")
194194
195195 let aI = valueOrElse(getInteger(this, ae), 1000000000)
196196
197197 let aJ = valueOrElse(getInteger(this, af), 1000000)
198198
199199 let aK = valueOrElse(getInteger(this, ag), 100000000)
200200
201201 let aL = valueOrElse(getInteger(this, ah), 10000000)
202202
203203 let aM = c(ac)
204204
205205 func aN (aO) = a(ak(aO))
206206
207207
208208 func aP (aO) = a(al(aO))
209209
210210
211211 func aQ (aO) = c(am(aO))
212212
213213
214214 func aR (aO) = c(ao(aO))
215215
216216
217217 func aS (aO) = a(ap(aO))
218218
219219
220220 func aT (aO) = c(aq(aO))
221221
222222
223223 func aU (aO) = c(ar(aO))
224224
225225
226-func aV (au) = ((q * q) / au)
226+func aV (au) = ((r * r) / au)
227227
228228
229-func aW (aX,aY) = fraction(toBigInt(aX), toBigInt((q * q)), toBigInt(aY))
229+func aW (aX,aY) = fraction(toBigInt(aX), toBigInt((r * r)), toBigInt(aY))
230230
231231
232232 func aZ (aj,ba,bb,bc,bd,be,au,bf) = [StringEntry(ak(aj), toString(au)), IntegerEntry(al(aj), ba), IntegerEntry(ap(aj), bb), StringEntry(am(aj), bc), IntegerEntry(an(aj), height), StringEntry(ao(aj), bd), IntegerEntry(("debug_order_currentPrice_" + aj), bf), IntegerEntry(ai(aj), be)]
233233
234234
235235 func bg (bh,bi) = (((((((((((((((((((((((((((((((((((bh + "[nsbtAmountRaw=") + toString(n(bi[0]))) + " usdnPayment=") + toString(n(bi[1]))) + " wRaw=") + toString(n(bi[2]))) + " uRaw=") + toString(n(bi[3]))) + " mRaw=") + toString(n(bi[4]))) + " sRaw=") + toString(n(bi[5]))) + " nsbtCurveParam_a=") + toString(n(bi[6]))) + " nsbtCurveParam_b=") + toString(n(bi[7]))) + " wReservesInUsdn=") + toString(n(bi[8]))) + " price=") + toString(n(bi[9]))) + " multBR=") + toString(n(bi[10]))) + " multPower=") + toString(n(bi[11]))) + " multExpInPower=") + l(bi[12])) + " multK=") + l(bi[13])) + " step1=") + l(bi[14])) + " step2=") + l(bi[15])) + " step3=") + toString(n(bi[16]))) + "]")
236236
237237
238-func bj (bk) = StringEntry("debug_surfResult", makeString(["%d%d%d%d%d%d%d%d%d%d%d", toString(n(bk[J])), toString(n(bk[K])), toString(n(bk[L])), toString(n(bk[M])), toString(n(bk[N])), toString(n(bk[O])), toString(n(bk[P])), toString(n(bk[Q])), toString(n(bk[R])), toString(n(bk[S])), toString(n(bk[T]))], p))
238+func bj (bk) = StringEntry("debug_surfResult", makeString(["%d%d%d%d%d%d%d%d%d%d%d", toString(n(bk[K])), toString(n(bk[L])), toString(n(bk[M])), toString(n(bk[N])), toString(n(bk[O])), toString(n(bk[P])), toString(n(bk[Q])), toString(n(bk[R])), toString(n(bk[S])), toString(n(bk[T])), toString(n(bk[U]))], p))
239239
240240
241241 @Callable(bl)
242242 func constructor (bm,bn,aJ) = if ((bl.caller != this))
243243 then throw("Permission denied")
244244 else [StringEntry(ad, bm), IntegerEntry(af, aJ), IntegerEntry(ae, bn)]
245245
246246
247247
248248 @Callable(bl)
249249 func constructorV2 (bo,bp) = if ((bl.caller != this))
250250 then throw("Permission denied")
251251 else {
252252 let bq = Issue("SURF", "Smart Utility Recapitalization Feature token", 0, 6, true, unit, 0)
253253 let br = calculateAssetId(bq)
254254 [bq, StringEntry(Y, toBase58String(br)), IntegerEntry(ag, bo), IntegerEntry(ah, bp)]
255255 }
256256
257257
258258
259259 @Callable(bl)
260260 func buyNsbt () = {
261261 let bs = value(bl.payments[0])
262262 let bt = bs.amount
263263 let bu = bt
264264 if (aH)
265265 then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles")
266266 else if (isDefined(bs.assetId))
267267 then throw("can use waves only")
268268 else if ((aI > bt))
269- then throw((("min " + toString((aI / r))) + " waves expected"))
269+ then throw((("min " + toString((aI / s))) + " waves expected"))
270270 else {
271271 let bv = bl.caller
272272 let bw = h(invoke(aE, "calcNeutinoMetricsREADONLY", nil, nil))
273273 let bf = n(bw[0])
274274 let bi = h(invoke(aE, "curveFunctionREADONLY", [bu], nil))
275275 let bx = n(bi[0])
276276 if ((0 >= bx))
277277 then throw("nsbtAmount <= 0")
278278 else {
279279 let by = aW(bu, bx)
280280 let be = 0
281281 let bz = invoke(aB, "acceptWaves", nil, bl.payments)
282282 if ((bz == bz))
283- then $Tuple2((aZ(toBase58String(bl.transactionId), bt, bt, toString(bv), v, be, by, bf) ++ [ScriptTransfer(bv, bx, aG), StringEntry("debug_curveResult", bg("curveResult", bi))]), bx)
283+ then $Tuple2((aZ(toBase58String(bl.transactionId), bt, bt, toString(bv), w, be, by, bf) ++ [ScriptTransfer(bv, bx, aG), StringEntry("debug_curveResult", bg("curveResult", bi))]), bx)
284284 else throw("Strict value is not equal to itself.")
285285 }
286286 }
287287 }
288288
289289
290290
291291 @Callable(bl)
292292 func sellNsbt () = if (aH)
293293 then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles")
294294 else {
295295 let bs = value(bl.payments[0])
296296 let bt = bs.amount
297297 if ((bs.assetId != aG))
298298 then throw("can use NSBT only")
299299 else if ((aJ > bt))
300- then throw((("min " + toString((aJ / q))) + " nsbt expected"))
300+ then throw((("min " + toString((aJ / r))) + " nsbt expected"))
301301 else {
302302 let bA = n(h(invoke(aE, "calcContractNsbtPriceSYSREADONLY", [-(bt)], nil))[0])
303- if ((q > bA))
303+ if ((r > bA))
304304 then throw((("resulting nsbt price would be < 1 (" + toString(bA)) + " usdn)"))
305305 else {
306306 let bB = invoke(aB, "transferUsdnToUser", [bt, toString(bl.caller)], nil)
307307 if ((bB == bB))
308308 then $Tuple2(nil, bA)
309309 else throw("Strict value is not equal to itself.")
310310 }
311311 }
312312 }
313313
314314
315315
316316 @Callable(bl)
317317 func cancelOrder (aj) = {
318318 let bc = aQ(aj)
319319 let at = (aP(aj) - aS(aj))
320320 let bC = toString(bl.caller)
321321 let bD = aU(aj)
322322 let bE = aT(aj)
323- if ((aR(aj) != u))
323+ if ((aR(aj) != v))
324324 then throw("invalid order status")
325325 else [StringEntry(ac, if ((aM == aj))
326326 then bD
327- else aM), StringEntry(ar(bE), bD), StringEntry(aq(bD), bE), StringEntry(ao(aj), t), ScriptTransfer(bl.caller, at, unit)]
327+ else aM), StringEntry(ar(bE), bD), StringEntry(aq(bD), bE), StringEntry(ao(aj), u), ScriptTransfer(bl.caller, at, unit)]
328328 }
329329
330330
331331
332332 @Callable(bl)
333333 func minWavesAmountNsbtBuySYSREADONLY () = $Tuple2(nil, aI)
334334
335335
336336
337337 @Callable(bl)
338338 func minNsbtAmountForSellSYSREADONLY () = $Tuple2(nil, aJ)
339339
340340
341341
342342 @Callable(bl)
343343 func minWavesAmountSurfBuySYSREADONLY () = $Tuple2(nil, aK)
344344
345345
346346
347347 @Callable(bl)
348348 func minUsdnAmountSurfBuySYSREADONLY () = $Tuple2(nil, aL)
349349
350350
351351
352352 @Callable(bl)
353353 func buySurf (bF,bG,bH) = if ((size(bl.payments) != 1))
354354 then throw("exactly 1 payment must be attached")
355355 else {
356356 let bs = bl.payments[0]
357357 let bI = bs.amount
358- let bJ = valueOrElse(bs.assetId, w)
358+ let bJ = valueOrElse(bs.assetId, x)
359359 if (if ((bJ != aF))
360- then (bJ != w)
360+ then (bJ != x)
361361 else false)
362362 then throw("Unsupported payment asset")
363363 else if (if ((bJ == aF))
364364 then (aL > bI)
365365 else false)
366- then throw((("min " + toString((aL / q))) + " USDN expected"))
367- else if (if ((bJ == w))
366+ then throw((("min " + toString((aL / r))) + " USDN expected"))
367+ else if (if ((bJ == x))
368368 then (aK > bI)
369369 else false)
370- then throw((("min " + toString((aK / r))) + " WAVES expected"))
370+ then throw((("min " + toString((aK / s))) + " WAVES expected"))
371371 else {
372372 let bk = h(invoke(aE, "surfFunctionREADONLY", [bI, bJ], nil))
373- let bK = n(bk[J])
374- let bL = fraction(bF, bK, r)
375- let bM = if ((bJ == w))
376- then n(bk[K])
377- else n(bk[L])
378- let bN = fraction((bM - bL), q, bL)
373+ let bK = n(bk[K])
374+ let bL = fraction(bF, bK, if ((bJ == x))
375+ then q
376+ else r)
377+ let bM = if ((bJ == x))
378+ then n(bk[L])
379+ else n(bk[M])
380+ let bN = fraction((bM - bL), r, bL)
379381 if ((bN > bG))
380382 then throw(((("Tolerance " + toString(bG)) + " exceeded: ") + toString(bN)))
381383 else {
382- let bO = if ((bJ == w))
384+ let bO = n(bk[T])
385+ let bP = if ((bJ == x))
383386 then {
384- let bP = n(bk[S])
385- let bQ = invoke(aB, "acceptWaves", nil, [AttachedPayment(unit, (bI - bP))])
387+ let bQ = invoke(aB, "acceptWaves", nil, [AttachedPayment(unit, (bI - bO))])
386388 if ((bQ == bQ))
387- then if ((bP > 0))
388- then [ScriptTransfer(bl.caller, bP, unit)]
389+ then if ((bO > 0))
390+ then [ScriptTransfer(bl.caller, bO, unit)]
389391 else nil
390392 else throw("Strict value is not equal to itself.")
391393 }
392- else {
393- let bR = n(bk[T])
394- if ((bR > 0))
395- then [ScriptTransfer(aB, (bI - bR), aF), ScriptTransfer(bl.caller, bR, aF)]
396- else [ScriptTransfer(aB, (bI - bR), aF)]
397- }
398- let bS = fromBase58String(getStringValue(Y))
399- (bO ++ [Reissue(bS, bK, true), ScriptTransfer(bl.caller, bK, bS), bj(bk)])
394+ else if ((bO > 0))
395+ then [ScriptTransfer(aB, (bI - bO), aF), ScriptTransfer(bl.caller, bO, aF)]
396+ else [ScriptTransfer(aB, (bI - bO), aF)]
397+ let bR = fromBase58String(getStringValue(Y))
398+ (bP ++ [Reissue(bR, bK, true), ScriptTransfer(bl.caller, bK, bR), bj(bk)])
400399 }
401400 }
402401 }
403402
404403
405-@Verifier(bT)
406-func bU () = {
407- let bV = makeString(["ExtEEK19nmKj9mCpnWyvEEJFYATLMcVEMvohhUHkyHNm", "Ev5py5FfBQX9cZpYKnfQrTB49Byf8QmpZWeDVRim4yV7", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"], p)
408- let bW = split(valueOrElse(getString(aC, "%s__multisig"), bV), p)
409- let bX = ((((if (sigVerify(bT.bodyBytes, bT.proofs[0], fromBase58String(bW[0])))
404+@Verifier(bS)
405+func bT () = {
406+ let bU = makeString(["ExtEEK19nmKj9mCpnWyvEEJFYATLMcVEMvohhUHkyHNm", "Ev5py5FfBQX9cZpYKnfQrTB49Byf8QmpZWeDVRim4yV7", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"], p)
407+ let bV = split(valueOrElse(getString(aC, "%s__multisig"), bU), p)
408+ let bW = ((((if (sigVerify(bS.bodyBytes, bS.proofs[0], fromBase58String(bV[0])))
410409 then 1
411- else 0) + (if (sigVerify(bT.bodyBytes, bT.proofs[1], fromBase58String(bW[1])))
410+ else 0) + (if (sigVerify(bS.bodyBytes, bS.proofs[1], fromBase58String(bV[1])))
412411 then 1
413- else 0)) + (if (sigVerify(bT.bodyBytes, bT.proofs[2], fromBase58String(bW[2])))
412+ else 0)) + (if (sigVerify(bS.bodyBytes, bS.proofs[2], fromBase58String(bV[2])))
414413 then 1
415- else 0)) + (if (sigVerify(bT.bodyBytes, bT.proofs[3], fromBase58String(bW[3])))
414+ else 0)) + (if (sigVerify(bS.bodyBytes, bS.proofs[3], fromBase58String(bV[3])))
416415 then 2
417416 else 0))
418- (bX >= 3)
417+ (bW >= 3)
419418 }
420419

github/deemru/w8io/3ef1775 
150.83 ms