tx · 6RZsF65DgtCDhNMdqx7ALk8FrxViNV3WdQcVEpCrftij

3N5NAftzfcw3gAt8nc35bNr9UdPTVgC81fd:  -0.04000000 Waves

2022.07.20 15:53 [2148105] smart account 3N5NAftzfcw3gAt8nc35bNr9UdPTVgC81fd > SELF 0.00000000 Waves

{ "type": 13, "id": "6RZsF65DgtCDhNMdqx7ALk8FrxViNV3WdQcVEpCrftij", "fee": 4000000, "feeAssetId": null, "timestamp": 1658321593000, "version": 1, "sender": "3N5NAftzfcw3gAt8nc35bNr9UdPTVgC81fd", "senderPublicKey": "CdnTmMHxT68Qa4MtHEnAiUhsdKTi2YkHPGn92ThinVNt", "proofs": [ "5c8s5GgFisSH9R1gjooicfgUDu37uFmV48bfb6FsNrWhc1YZeCsdi9Kg3spFxKd1XNSjpddK1ew2WZgaLeu3JSGR", "5mJe9eESuJcYccMJCBsDhdrS3NC8msjDpgp8PJZ7hLdmWgMG8qTucPXqJCWfZZ8UFiZmB4KqC4xac56ec6tzY5sS", "42mQtVTS9hFgy7TbWzyv7RD2F4QT5nM8XzzRYf2CtFygfymmsbiuSBec7AmhAcixiFV5mKBKEfrJjnDgm6wZVx2n" ], "script": "base64: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AAAFAAAAABJiRnVuY0lkeFJlc2VydmVFbmQAAAAAAAAAAAYAAAAAEWJGdW5jSWR4U3VwcGx5RW5kAAAAAAAAAAAHAAAAAA1iRnVuY0lkeEJSRW5kAAAAAAAAAAAIAAAAAAxiRnVuY0lkeFJlc3QAAAAAAAAAAAkAAAAAEmJGdW5jSWR4V2F2ZXNQcmljZQAAAAAAAAAACgAAAAAIUHJpY2VLZXkCAAAABXByaWNlAAAAAA5Oc2J0QXNzZXRJZEtleQIAAAANYm9uZF9hc3NldF9pZAAAAAASTmV1dHJpbm9Bc3NldElkS2V5AgAAABFuZXV0cmlub19hc3NldF9pZAAAAAAOU3VyZkFzc2V0SWRLZXkCAAAADXN1cmZfYXNzZXRfaWQAAAAAEUJhbGFuY2VMb2NrZWRrS2V5AgAAAA1iYWxhbmNlX2xvY2tfAAAAABVXYXZlc0xvY2tlZEJhbGFuY2VLZXkJAAEsAAAAAgUAAAARQmFsYW5jZUxvY2tlZGtLZXkCAAAABXdhdmVzAAAAABhOZXV0cmlub0xvY2tlZEJhbGFuY2VLZXkJAAEsAAAAAgUAAAARQmFsYW5jZUxvY2tlZGtLZXkCAAAACG5ldXRyaW5vAAAAAA1GaXJzdE9yZGVyS2V5AgAAAAtvcmRlcl9maXJzdAAAAAAPTWF0aENvbnRyYWN0S2V5AgAAAA1tYXRoX2NvbnRyYWN0AAAAABVNaW5XYXZlc0Zvck5zYnRCdXlLZXkCAAAAEm1pbl93YXZlc19uc2J0X2J1eQAAAAAOTWluTnNidFNlbGxLZXkCAAAADW1pbl9uc2J0X3NlbGwAAAAAFU1pbldhdmVzRm9yU3VyZkJ1eUtleQIAAAASbWluX3dhdmVzX3N1cmZfYnV5AAAAABRNaW5Vc2RuRm9yU3VyZkJ1eUtleQIAAAARbWluX3VzZG5fc3VyZl9idXkBAAAAEmdldFJvaUJ5T3JkZXJJZEtleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAABBkZWJ1Z19vcmRlcl9yb2lfBQAAAAdvcmRlcklkAQAAABBnZXRPcmRlclByaWNlS2V5AAAAAQAAAAdvcmRlcklkCQABLAAAAAICAAAADG9yZGVyX3ByaWNlXwUAAAAHb3JkZXJJZAEAAAAQZ2V0T3JkZXJUb3RhbEtleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAAxvcmRlcl90b3RhbF8FAAAAB29yZGVySWQBAAAAEGdldE9yZGVyT3duZXJLZXkAAAABAAAAB29yZGVySWQJAAEsAAAAAgIAAAAMb3JkZXJfb3duZXJfBQAAAAdvcmRlcklkAQAAABFnZXRPcmRlckhlaWdodEtleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAA1vcmRlcl9oZWlnaHRfBQAAAAdvcmRlcklkAQAAABFnZXRPcmRlclN0YXR1c0tleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAA1vcmRlcl9zdGF0dXNfBQAAAAdvcmRlcklkAQAAABZnZXRPcmRlckZpbGxlZFRvdGFsS2V5AAAAAQAAAAdvcmRlcklkCQABLAAAAAICAAAAE29yZGVyX2ZpbGxlZF90b3RhbF8FAAAAB29yZGVySWQBAAAAD2dldFByZXZPcmRlcktleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAAtvcmRlcl9wcmV2XwUAAAAHb3JkZXJJZAEAAAAPZ2V0TmV4dE9yZGVyS2V5AAAAAQAAAAdvcmRlcklkCQABLAAAAAICAAAAC29yZGVyX25leHRfBQAAAAdvcmRlcklkAQAAABZjb252ZXJ0TmV1dHJpbm9Ub1dhdmVzAAAAAgAAAAZhbW91bnQAAAAFcHJpY2UJAABrAAAAAwUAAAAGYW1vdW50BQAAAAVNVUxUOAUAAAAFcHJpY2UBAAAAFmNvbnZlcnRXYXZlc1RvTmV1dHJpbm8AAAACAAAABmFtb3VudAAAAAVwcmljZQkAAGsAAAADBQAAAAZhbW91bnQFAAAABXByaWNlBQAAAAVNVUxUOAEAAAAFdG9YMTYAAAACAAAAB29yaWdWYWwAAAANb3JpZ1NjYWxlTXVsdAkAATwAAAADCQABNgAAAAEFAAAAB29yaWdWYWwFAAAAB01VTFRYMTYJAAE2AAAAAQUAAAANb3JpZ1NjYWxlTXVsdAEAAAAHZnJvbVgxNgAAAAIAAAADdmFsAAAAD3Jlc3VsdFNjYWxlTXVsdAkAAaAAAAABCQABPAAAAAMFAAAAA3ZhbAkAATYAAAABBQAAAA9yZXN1bHRTY2FsZU11bHQFAAAAB01VTFRYMTYAAAAAEG5ldXRyaW5vQ29udHJhY3QJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVTX5YnYYiLrMWyfu8rmkonHDc0g4nCta94AAAAAD2NvbnRyb2xDb250cmFjdAkBAAAAB0FkZHJlc3MAAAABAQAAABoBVCFBmWCv1bHMtRUHYsxdLI5/1uzEtUljoQAAAAATbGlxdWlkYXRpb25Db250cmFjdAkBAAAAB0FkZHJlc3MAAAABAQAAABoBVIU74x8XFOr+m4eGxNcmrGVmBniai3IguQAAAAAMbWF0aENvbnRyYWN0CQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABBQAAAA9NYXRoQ29udHJhY3RLZXkAAAAAD25ldXRyaW5vQXNzZXRJZAEAAAAg93bq9/eDymXbbhPuAjvPWCmVqcHRjfJL2mzYHWKAyN4AAAAAC25zYnRBc3NldElkAQAAACDQtcyxzfaIZM1HKi2M+rz5PsT9DiVMH3RcKTr+nWmhEAAAAAAJaXNCbG9ja2VkCQEAAAAWZ2V0Qm9vbEJ5QWRkcmVzc0FuZEtleQAAAAIFAAAAD2NvbnRyb2xDb250cmFjdAIAAAAKaXNfYmxvY2tlZAAAAAAVbWluV2F2ZXNBbW91bnROc2J0QnV5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAFU1pbldhdmVzRm9yTnNidEJ1eUtleQAAAAAAO5rKAAAAAAALbWluTnNidFNlbGwJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAAOTWluTnNidFNlbGxLZXkAAAAAAAAPQkAAAAAAFW1pbldhdmVzQW1vdW50U3VyZkJ1eQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAABVNaW5XYXZlc0ZvclN1cmZCdXlLZXkAAAAAAAX14QAAAAAAFG1pblVzZG5BbW91bnRTdXJmQnV5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAFE1pblVzZG5Gb3JTdXJmQnV5S2V5AAAAAAAAmJaAAAAAAApmaXJzdE9yZGVyCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABBQAAAA1GaXJzdE9yZGVyS2V5AQAAAA1nZXRPcmRlclByaWNlAAAAAQAAAAJpZAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAEGdldE9yZGVyUHJpY2VLZXkAAAABBQAAAAJpZAEAAAANZ2V0T3JkZXJUb3RhbAAAAAEAAAACaWQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABBnZXRPcmRlclRvdGFsS2V5AAAAAQUAAAACaWQBAAAADWdldE9yZGVyT3duZXIAAAABAAAAAmlkCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAQZ2V0T3JkZXJPd25lcktleQAAAAEFAAAAAmlkAQAAAA5nZXRPcmRlclN0YXR1cwAAAAEAAAACaWQJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABFnZXRPcmRlclN0YXR1c0tleQAAAAEFAAAAAmlkAQAAABNnZXRPcmRlckZpbGxlZFRvdGFsAAAAAQAAAAJpZAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFmdldE9yZGVyRmlsbGVkVG90YWxLZXkAAAABBQAAAAJpZAEAAAAMZ2V0UHJldk9yZGVyAAAAAQAAAAJpZAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAD2dldFByZXZPcmRlcktleQAAAAEFAAAAAmlkAQAAAAxnZXROZXh0T3JkZXIAAAABAAAAAmlkCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAPZ2V0TmV4dE9yZGVyS2V5AAAAAQUAAAACaWQBAAAAD2dldFJldmVyc2VQcmljZQAAAAEAAAAFcHJpY2UJAABpAAAAAgkAAGgAAAACBQAAAAVNVUxUNgUAAAAFTVVMVDYFAAAABXByaWNlAQAAABZjYWxjTnNidDJXYXZlc1ByaWNlUmF3AAAAAgAAAA1zcGVudFdhdmVzUmF3AAAAD3JlY2VpdmVkTnNidFJhdwkAATwAAAADCQABNgAAAAEFAAAADXNwZW50V2F2ZXNSYXcJAAE2AAAAAQkAAGgAAAACBQAAAAVNVUxUNgUAAAAFTVVMVDYJAAE2AAAAAQUAAAAPcmVjZWl2ZWROc2J0UmF3AQAAAAlvcmRlckRhdGEAAAAIAAAAB29yZGVySWQAAAANdG90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c0Zvck5zYnRCdXkFAAAAA25pbAAAAAFpAQAAAA1jb25zdHJ1Y3RvclYyAAAAAgAAABVtaW5XYXZlc0ZvclN1cmZCdXlLZXkAAAAUbWluVXNkbkZvclN1cmZCdXlLZXkDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMJAAACAAAAAQIAAAARUGVybWlzc2lvbiBkZW5pZWQEAAAABWlzc3VlCQAEQwAAAAcCAAAABFNVUkYCAAAALFNtYXJ0IFV0aWxpdHkgUmVjYXBpdGFsaXphdGlvbiBGZWF0dXJlIHRva2VuAAAAAAAAAAAAAAAAAAAAAAAGBgUAAAAEdW5pdAAAAAAAAAAAAAQAAAAHYXNzZXRJZAkABDgAAAABBQAAAAVpc3N1ZQkABEwAAAACBQAAAAVpc3N1ZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA5TdXJmQXNzZXRJZEtleQkAAlgAAAABBQAAAAdhc3NldElkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABVNaW5XYXZlc0ZvclN1cmZCdXlLZXkFAAAAFW1pbldhdmVzRm9yU3VyZkJ1eUtleQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAUTWluVXNkbkZvclN1cmZCdXlLZXkFAAAAFG1pblVzZG5Gb3JTdXJmQnV5S2V5BQAAAANuaWwAAAABaQEAAAAHYnV5TnNidAAAAAAEAAAAA3BtdAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAJcG10QW1vdW50CAUAAAADcG10AAAABmFtb3VudAQAAAAId2F2ZXNQYXkFAAAACXBtdEFtb3VudAMFAAAACWlzQmxvY2tlZAkAAAIAAAABAgAAAFljb250cmFjdCBpcyBibG9ja2VkIGJ5IEVNRVJHRU5DWSBTSFVURE9XTiBhY3Rpb25zIHVudGlsIHJlYWN0aXZhdGlvbiBieSBlbWVyZ2VuY3kgb3JhY2xlcwMJAQAAAAlpc0RlZmluZWQAAAABCAUAAAADcG10AAAAB2Fzc2V0SWQJAAACAAAAAQIAAAASY2FuIHVzZSB3YXZlcyBvbmx5AwkAAGYAAAAC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eQMJAAAAAAAAAgUAAAAKZmlyc3RPcmRlcgUAAAAHb3JkZXJJZAUAAAAJbmV4dE9yZGVyBQAAAApmaXJzdE9yZGVyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA9nZXROZXh0T3JkZXJLZXkAAAABBQAAAAlwcmV2T3JkZXIFAAAACW5leHRPcmRlcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAPZ2V0UHJldk9yZGVyS2V5AAAAAQUAAAAJbmV4dE9yZGVyBQAAAAlwcmV2T3JkZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEWdldE9yZGVyU3RhdHVzS2V5AAAAAQUAAAAHb3JkZXJJZAUAAAAIQ0FOQ0VMRUQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAZhbW91bnQFAAAABHVuaXQFAAAAA25pbAAAAAFpAQAAACBtaW5XYXZlc0Ftb3VudE5zYnRCdXlTWVNSRUFET05MWQAAAAAJAAUUAAAAAgUAAAADbmlsBQAAABVtaW5XYXZlc0Ftb3VudE5zYnRCdXkAAAABaQEAAAAfbWluTnNidEFtb3VudEZvclNlbGxTWVNSRUFET05MWQAAAAAJAAUUAAAAAgUAAAADbmlsBQAAAAttaW5Oc2J0U2VsbAAAAAFpAQAAACBtaW5XYXZlc0Ftb3VudFN1cmZCdXlTWVNSRUFET05MWQAAAAAJAAUUAAAAAgUAAAADbmlsBQAAABVtaW5XYXZlc0Ftb3VudFN1cmZCdXkAAAABaQEAAAAfbWluVXNkbkFtb3VudFN1cmZCdXlTWVNSRUFET05MWQAAAAAJAAUUAAAAAgUAAAADbmlsBQAAABRtaW5Vc2RuQW1vdW50U3VyZkJ1eQAAAAFpAQAAAAdidXlTdXJmAAAAAwAAABJhdmVyYWdlUHJpY2VXYW50ZWQAAAAQbWF4VG9sZXJhbmNlUGVyYwAAAAlhdXRvU3Rha2UDCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABCQAAAgAAAAECAAAAImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQDCQAAZwAAAAIAAAAAAAAAAAAFAAAAEmF2ZXJhZ2VQcmljZVdhbnRlZAkAAAIAAAABAgAAACVhdmVyYWdlUHJpY2VXYW50ZWQgc2hvdWxkIGJlIHBvc2l0aXZlAwkAAGcAAAACAAAAAAAAAAAABQAAABBtYXhUb2xlcmFuY2VQZXJjCQAAAgAAAAECAAAAI21heFRvbGVyYW5jZVBlcmMgc2hvdWxkIGJlIHBvc2l0aXZlBAAAAANwbXQJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAAA2FtdAgFAAAAA3BtdAAAAAZhbW91bnQEAAAACnBtdEFzc2V0SWQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIIBQAAAANwbXQAAAAHYXNzZXRJZAUAAAAHV0FWRVNJRAMDCQEAAAACIT0AAAACBQAAAApwbXRBc3NldElkBQAAAA9uZXV0cmlub0Fzc2V0SWQJAQAAAAIhPQAAAAIFAAAACnBtdEFzc2V0SWQFAAAAB1dBVkVTSUQHCQAAAgAAAAECAAAAGVVuc3VwcG9ydGVkIHBheW1lbnQgYXNzZXQDAwkAAAAAAAACBQAAAApwbXRBc3NldElkBQAAAA9uZXV0cmlub0Fzc2V0SWQJAABmAAAAAgUAAAAUbWluVXNkbkFtb3VudFN1cmZCdXkFAAAAA2FtdAcJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAABG1pbiAJAAGkAAAAAQkAAGkAAAACBQAAABRtaW5Vc2RuQW1vdW50U3VyZkJ1eQUAAAAFTVVMVDYCAAAADiBVU0ROIGV4cGVjdGVkAwMJAAAAAAAAAgUAAAAKcG10QXNzZXRJZAUAAAAHV0FWRVNJRAkAAGYAAAACBQAAABVtaW5XYXZlc0Ftb3VudFN1cmZCdXkFAAAAA2FtdAcJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAABG1pbiAJAAGkAAAAAQkAAGkAAAACBQAAABVtaW5XYXZlc0Ftb3VudFN1cmZCdXkFAAAABU1VTFQ4AgAAAA8gV0FWRVMgZXhwZWN0ZWQEAAAACnN1cmZSZXN1bHQJAQAAAAlhc0FueUxpc3QAAAABCQAD/AAAAAQFAAAADG1hdGhDb250cmFjdAIAAAAUc3VyZkZ1bmN0aW9uUkVBRE9OTFkJAARMAAAAAgUAAAADYW10CQAETAAAAAIFAAAACnBtdEFzc2V0SWQFAAAAA25pbAUAAAADbmlsBAAAAApzcGVudFdhdmVzCQEAAAAFYXNJbnQAAAABCQABkQAAAAIFAAAACnN1cmZSZXN1bHQFAAAADWJGdW5jSWR4V2F2ZXMEAAAACXNwZW50VXNkbgkBAAAABWFzSW50AAAAAQkAAZEAAAACBQAAAApzdXJmUmVzdWx0BQAAAAxiRnVuY0lkeFVzZG4EAAAACnN1cmZBbW91bnQJAQAAAAVhc0ludAAAAAEJAAGRAAAAAgUAAAAKc3VyZlJlc3VsdAUAAAAMYkZ1bmNJZHhTdXJmBAAAAAxzdXJmQW1vdW50WDYJAAE2AAAAAQUAAAAKc3VyZkFtb3VudAQAAAAOc3BlbnRBY3R1YWxYMTgDCQAAAAAAAAIFAAAACnBtdEFzc2V0SWQFAAAAB1dBVkVTSUQJAAE5AAAAAgkAATYAAAABBQAAAApzcGVudFdhdmVzBQAAAAdNVUxUWDEwCQABOQAAAAIJAAE2AAAAAQUAAAAJc3BlbnRVc2RuBQAAAAdNVUxUWDEyAwkAAT8AAAACBQAAAA5zcGVudEFjdHVhbFgxOAkAATkAAAACCQABOQAAAAIJAAE2AAAAAQkAAGQAAAACBQAAABBtYXhUb2xlcmFuY2VQZXJjBQAAAAVNVUxUNgkAATYAAAABBQAAABJhdmVyYWdlUHJpY2VXYW50ZWQFAAAADHN1cmZBbW91bnRYNgkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAApUb2xlcmFuY2UgCQABpAAAAAEFAAAAEG1heFRvbGVyYW5jZVBlcmMCAAAAESBleGNlZWRlZDogc3BlbnQgAwkAAAAAAAACBQAAAApwbXRBc3NldElkBQAAAAdXQVZFU0lECQABLAAAAAIJAAGkAAAAAQUAAAAKc3BlbnRXYXZlcwIAAAAGIFdBVkVTCQABLAAAAAIJAAGkAAAAAQUAAAAJc3BlbnRVc2RuAgAAAAUgVVNETgIAAAAFIGZvciAJAAGkAAAAAQUAAAAKc3VyZkFtb3VudAIAAAAFIFNVUkYEAAAABHJlc3QJAQAAAAVhc0ludAAAAAEJAAGRAAAAAgUAAAAKc3VyZlJlc3VsdAUAAAAMYkZ1bmNJZHhSZXN0BAAAAAh0cmFuc2ZlcgMJAAAAAAAAAgUAAAAKcG10QXNzZXRJZAUAAAAHV0FWRVNJRAQAAAAId2F2ZXNBbXQJAAP8AAAABAUAAAAQbmV1dHJpbm9Db250cmFjdAIAAAALYWNjZXB0V2F2ZXMFAAAAA25pbAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgUAAAAEdW5pdAkAAGUAAAACBQAAAANhbXQFAAAABHJlc3QFAAAAA25pbAMJAAAAAAAAAgUAAAAId2F2ZXNBbXQFAAAACHdhdmVzQW10AwkAAGYAAAACBQAAAARyZXN0AAAAAAAAAAAACQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAEcmVzdAUAAAAEdW5pdAUAAAADbmlsBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAGYAAAACBQAAAARyZXN0AAAAAAAAAAAACQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAEG5ldXRyaW5vQ29udHJhY3QJAABlAAAAAgUAAAADYW10BQAAAARyZXN0BQAAAA9uZXV0cmlub0Fzc2V0SWQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAARyZXN0BQAAAA9uZXV0cmlub0Fzc2V0SWQFAAAAA25pbAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAABBuZXV0cmlub0NvbnRyYWN0CQAAZQAAAAIFAAAAA2FtdAUAAAAEcmVzdAUAAAAPbmV1dHJpbm9Bc3NldElkBQAAAANuaWwEAAAAC3N1cmZBc3NldElkCQACWQAAAAEJAQAAABFAZXh0ck5hdGl2ZSgxMDU4KQAAAAEFAAAADlN1cmZBc3NldElkS2V5CQAETgAAAAIFAAAACHRyYW5zZmVyCQAETAAAAAIJAQAAAAdSZWlzc3VlAAAAAwUAAAALc3VyZkFzc2V0SWQFAAAACnN1cmZBbW91bnQGCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAKc3VyZkFtb3VudAUAAAALc3VyZkFzc2V0SWQJAARMAAAAAgkBAAAACHN1cmZEYXRhAAAAAQUAAAAKc3VyZlJlc3VsdAUAAAADbmlsAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAQAAAATcHViS2V5QWRtaW5zTGlzdFN0cgkABLkAAAACCQAETAAAAAICAAAALEV4dEVFSzE5bm1LajltQ3BuV3l2RUVKRllBVExNY1ZFTXZvaGhVSGt5SE5tCQAETAAAAAICAAAALEV2NXB5NUZmQlFYOWNacFlLbmZRclRCNDlCeWY4UW1wWldlRFZSaW00eVY3CQAETAAAAAICAAAALERVdXVMalh1OThuQndaYzdmcXdDVGp0QTNublJ3Z1Ria01TcjVTVTJObURSCQAETAAAAAICAAAALDVXUlhGU2p3Y1RiTmZLY0pzOFpxWG1TU1dZc1NWSlV0TXZNcVpqNWhINE5jBQAAAANuaWwFAAAAA1NFUAQAAAAQcHViS2V5QWRtaW5zTGlzdAkABLUAAAACCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAAD2NvbnRyb2xDb250cmFjdAIAAAAMJXNfX211bHRpc2lnBQAAABNwdWJLZXlBZG1pbnNMaXN0U3RyBQAAAANTRVAEAAAABWNvdW50CQAAZAAAAAIJAABkAAAAAgkAAGQAAAACAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAJAAJZAAAAAQkAAZEAAAACBQAAABBwdWJLZXlBZG1pbnNMaXN0AAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAEJAAJZAAAAAQkAAZEAAAACBQAAABBwdWJLZXlBZG1pbnNMaXN0AAAAAAAAAAABAAAAAAAAAAABAAAAAAAAAAAAAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAIJAAJZAAAAAQkAAZEAAAACBQAAABBwdWJLZXlBZG1pbnNMaXN0AAAAAAAAAAACAAAAAAAAAAABAAAAAAAAAAAAAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAMJAAJZAAAAAQkAAZEAAAACBQAAABBwdWJLZXlBZG1pbnNMaXN0AAAAAAAAAAADAAAAAAAAAAACAAAAAAAAAAAACQAAZwAAAAIFAAAABWNvdW50AAAAAAAAAAADTLp33Q==", "chainId": 84, "height": 2148105, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: C4gLMcgjmiKZU6Dw92dqeHpmv9MSRbSUWqN6s9oVLad8 Next: 2Lo8TBcCTixaLpG9K9HNdAaBwkzKiya3gLmPw2JBYaSn Diff:
OldNewDifferences
354354 @Callable(bm)
355355 func buySurf (bG,bH,bI) = if ((size(bm.payments) != 1))
356356 then throw("exactly 1 payment must be attached")
357- else {
358- let bt = bm.payments[0]
359- let bJ = bt.amount
360- let bK = valueOrElse(bt.assetId, y)
361- if (if ((bK != aG))
362- then (bK != y)
363- else false)
364- then throw("Unsupported payment asset")
365- else if (if ((bK == aG))
366- then (aM > bJ)
367- else false)
368- then throw((("min " + toString((aM / q))) + " USDN expected"))
369- else if (if ((bK == y))
370- then (aL > bJ)
357+ else if ((0 >= bG))
358+ then throw("averagePriceWanted should be positive")
359+ else if ((0 >= bH))
360+ then throw("maxTolerancePerc should be positive")
361+ else {
362+ let bt = bm.payments[0]
363+ let bJ = bt.amount
364+ let bK = valueOrElse(bt.assetId, y)
365+ if (if ((bK != aG))
366+ then (bK != y)
371367 else false)
372- then throw((("min " + toString((aL / r))) + " WAVES expected"))
373- else {
374- let bl = h(invoke(aF, "surfFunctionREADONLY", [bJ, bK], nil))
375- let bL = n(bl[M])
376- let bM = n(bl[N])
377- let bN = n(bl[L])
378- let bO = toBigInt(bN)
379- let bP = if ((bK == y))
380- then (toBigInt(bL) * s)
381- else (toBigInt(bM) * t)
382- if ((bP > ((toBigInt((bH + q)) * toBigInt(bG)) * bO)))
383- then throw((((((("Tolerance " + toString(bH)) + " exceeded: spent ") + (if ((bK == y))
384- then (toString(bL) + " WAVES")
385- else (toString(bM) + " USDN"))) + " for ") + toString(bN)) + " SURF"))
368+ then throw("Unsupported payment asset")
369+ else if (if ((bK == aG))
370+ then (aM > bJ)
371+ else false)
372+ then throw((("min " + toString((aM / q))) + " USDN expected"))
373+ else if (if ((bK == y))
374+ then (aL > bJ)
375+ else false)
376+ then throw((("min " + toString((aL / r))) + " WAVES expected"))
386377 else {
387- let bQ = n(bl[U])
388- let bR = if ((bK == y))
389- then {
390- let bS = invoke(aC, "acceptWaves", nil, [AttachedPayment(unit, (bJ - bQ))])
391- if ((bS == bS))
392- then if ((bQ > 0))
393- then [ScriptTransfer(bm.caller, bQ, unit)]
394- else nil
395- else throw("Strict value is not equal to itself.")
378+ let bl = h(invoke(aF, "surfFunctionREADONLY", [bJ, bK], nil))
379+ let bL = n(bl[M])
380+ let bM = n(bl[N])
381+ let bN = n(bl[L])
382+ let bO = toBigInt(bN)
383+ let bP = if ((bK == y))
384+ then (toBigInt(bL) * s)
385+ else (toBigInt(bM) * t)
386+ if ((bP > ((toBigInt((bH + q)) * toBigInt(bG)) * bO)))
387+ then throw((((((("Tolerance " + toString(bH)) + " exceeded: spent ") + (if ((bK == y))
388+ then (toString(bL) + " WAVES")
389+ else (toString(bM) + " USDN"))) + " for ") + toString(bN)) + " SURF"))
390+ else {
391+ let bQ = n(bl[U])
392+ let bR = if ((bK == y))
393+ then {
394+ let bS = invoke(aC, "acceptWaves", nil, [AttachedPayment(unit, (bJ - bQ))])
395+ if ((bS == bS))
396+ then if ((bQ > 0))
397+ then [ScriptTransfer(bm.caller, bQ, unit)]
398+ else nil
399+ else throw("Strict value is not equal to itself.")
400+ }
401+ else if ((bQ > 0))
402+ then [ScriptTransfer(aC, (bJ - bQ), aG), ScriptTransfer(bm.caller, bQ, aG)]
403+ else [ScriptTransfer(aC, (bJ - bQ), aG)]
404+ let bT = fromBase58String(getStringValue(Z))
405+ (bR ++ [Reissue(bT, bN, true), ScriptTransfer(bm.caller, bN, bT), bk(bl)])
396406 }
397- else if ((bQ > 0))
398- then [ScriptTransfer(aC, (bJ - bQ), aG), ScriptTransfer(bm.caller, bQ, aG)]
399- else [ScriptTransfer(aC, (bJ - bQ), aG)]
400- let bT = fromBase58String(getStringValue(Z))
401- (bR ++ [Reissue(bT, bN, true), ScriptTransfer(bm.caller, bN, bT), bk(bl)])
402407 }
403- }
404- }
408+ }
405409
406410
407411 @Verifier(bU)
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
5454 let q = 1000000
5555
5656 let r = 100000000
5757
5858 let s = toBigInt(10000000000)
5959
6060 let t = toBigInt(1000000000000)
6161
6262 let u = toBigInt(10000000000000000)
6363
6464 let v = "canceled"
6565
6666 let w = "new"
6767
6868 let x = "filled"
6969
7070 let y = fromBase58String("WAVES")
7171
7272 let z = 0
7373
7474 let A = 1
7575
7676 let B = 2
7777
7878 let C = 3
7979
8080 let D = 4
8181
8282 let E = 5
8383
8484 let F = 6
8585
8686 let G = 7
8787
8888 let H = 8
8989
9090 let I = 9
9191
9292 let J = 10
9393
9494 let K = 11
9595
9696 let L = 0
9797
9898 let M = 1
9999
100100 let N = 2
101101
102102 let O = 3
103103
104104 let P = 4
105105
106106 let Q = 5
107107
108108 let R = 6
109109
110110 let S = 7
111111
112112 let T = 8
113113
114114 let U = 9
115115
116116 let V = 10
117117
118118 let W = "price"
119119
120120 let X = "bond_asset_id"
121121
122122 let Y = "neutrino_asset_id"
123123
124124 let Z = "surf_asset_id"
125125
126126 let aa = "balance_lock_"
127127
128128 let ab = (aa + "waves")
129129
130130 let ac = (aa + "neutrino")
131131
132132 let ad = "order_first"
133133
134134 let ae = "math_contract"
135135
136136 let af = "min_waves_nsbt_buy"
137137
138138 let ag = "min_nsbt_sell"
139139
140140 let ah = "min_waves_surf_buy"
141141
142142 let ai = "min_usdn_surf_buy"
143143
144144 func aj (ak) = ("debug_order_roi_" + ak)
145145
146146
147147 func al (ak) = ("order_price_" + ak)
148148
149149
150150 func am (ak) = ("order_total_" + ak)
151151
152152
153153 func an (ak) = ("order_owner_" + ak)
154154
155155
156156 func ao (ak) = ("order_height_" + ak)
157157
158158
159159 func ap (ak) = ("order_status_" + ak)
160160
161161
162162 func aq (ak) = ("order_filled_total_" + ak)
163163
164164
165165 func ar (ak) = ("order_prev_" + ak)
166166
167167
168168 func as (ak) = ("order_next_" + ak)
169169
170170
171171 func at (au,av) = fraction(au, r, av)
172172
173173
174174 func aw (au,av) = fraction(au, av, r)
175175
176176
177177 func ax (ay,az) = fraction(toBigInt(ay), u, toBigInt(az))
178178
179179
180180 func aA (i,aB) = toInt(fraction(i, toBigInt(aB), u))
181181
182182
183183 let aC = Address(base58'3N9be2mwrA52WJho6DiesZkk4351GvpnWuj')
184184
185185 let aD = Address(base58'3MrwvfA9VRYwhHy4NuWPQGdxCtZdhH4LMMa')
186186
187187 let aE = Address(base58'3N24ZPUAMhFm76N3vbNiiDtFqfUnmBHTc5N')
188188
189189 let aF = addressFromStringValue(c(ae))
190190
191191 let aG = base58'HezsdQuRDtzksAYUy97gfhKy7Z1NW2uXYSHA3bgqenNZ'
192192
193193 let aH = base58'F3iaxzruFeKujfVfYSZEkejpjh67wmRfPCRHiNmWKp3Z'
194194
195195 let aI = d(aD, "is_blocked")
196196
197197 let aJ = valueOrElse(getInteger(this, af), 1000000000)
198198
199199 let aK = valueOrElse(getInteger(this, ag), 1000000)
200200
201201 let aL = valueOrElse(getInteger(this, ah), 100000000)
202202
203203 let aM = valueOrElse(getInteger(this, ai), 10000000)
204204
205205 let aN = c(ad)
206206
207207 func aO (aP) = a(al(aP))
208208
209209
210210 func aQ (aP) = a(am(aP))
211211
212212
213213 func aR (aP) = c(an(aP))
214214
215215
216216 func aS (aP) = c(ap(aP))
217217
218218
219219 func aT (aP) = a(aq(aP))
220220
221221
222222 func aU (aP) = c(ar(aP))
223223
224224
225225 func aV (aP) = c(as(aP))
226226
227227
228228 func aW (av) = ((q * q) / av)
229229
230230
231231 func aX (aY,aZ) = fraction(toBigInt(aY), toBigInt((q * q)), toBigInt(aZ))
232232
233233
234234 func ba (ak,bb,bc,bd,be,bf,av,bg) = [StringEntry(al(ak), toString(av)), IntegerEntry(am(ak), bb), IntegerEntry(aq(ak), bc), StringEntry(an(ak), bd), IntegerEntry(ao(ak), height), StringEntry(ap(ak), be), IntegerEntry(("debug_order_currentPrice_" + ak), bg), IntegerEntry(aj(ak), bf)]
235235
236236
237237 func bh (bi,bj) = (((((((((((((((((((((((((((((((((((bi + "[nsbtAmountRaw=") + toString(n(bj[0]))) + " usdnPayment=") + toString(n(bj[1]))) + " wRaw=") + toString(n(bj[2]))) + " uRaw=") + toString(n(bj[3]))) + " mRaw=") + toString(n(bj[4]))) + " sRaw=") + toString(n(bj[5]))) + " nsbtCurveParam_a=") + toString(n(bj[6]))) + " nsbtCurveParam_b=") + toString(n(bj[7]))) + " wReservesInUsdn=") + toString(n(bj[8]))) + " price=") + toString(n(bj[9]))) + " multBR=") + toString(n(bj[10]))) + " multPower=") + toString(n(bj[11]))) + " multExpInPower=") + l(bj[12])) + " multK=") + l(bj[13])) + " step1=") + l(bj[14])) + " step2=") + l(bj[15])) + " step3=") + toString(n(bj[16]))) + "]")
238238
239239
240240 func bk (bl) = StringEntry("debug_surfResult", makeString(["%d%d%d%d%d%d%d%d%d%d%d", toString(n(bl[L])), toString(n(bl[M])), toString(n(bl[N])), toString(n(bl[O])), toString(n(bl[P])), toString(n(bl[Q])), toString(n(bl[R])), toString(n(bl[S])), toString(n(bl[T])), toString(n(bl[U])), toString(n(bl[V]))], p))
241241
242242
243243 @Callable(bm)
244244 func constructor (bn,bo,aK) = if ((bm.caller != this))
245245 then throw("Permission denied")
246246 else [StringEntry(ae, bn), IntegerEntry(ag, aK), IntegerEntry(af, bo)]
247247
248248
249249
250250 @Callable(bm)
251251 func constructorV2 (bp,bq) = if ((bm.caller != this))
252252 then throw("Permission denied")
253253 else {
254254 let br = Issue("SURF", "Smart Utility Recapitalization Feature token", 0, 6, true, unit, 0)
255255 let bs = calculateAssetId(br)
256256 [br, StringEntry(Z, toBase58String(bs)), IntegerEntry(ah, bp), IntegerEntry(ai, bq)]
257257 }
258258
259259
260260
261261 @Callable(bm)
262262 func buyNsbt () = {
263263 let bt = value(bm.payments[0])
264264 let bu = bt.amount
265265 let bv = bu
266266 if (aI)
267267 then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles")
268268 else if (isDefined(bt.assetId))
269269 then throw("can use waves only")
270270 else if ((aJ > bu))
271271 then throw((("min " + toString((aJ / r))) + " waves expected"))
272272 else {
273273 let bw = bm.caller
274274 let bx = h(invoke(aF, "calcNeutinoMetricsREADONLY", nil, nil))
275275 let bg = n(bx[0])
276276 let bj = h(invoke(aF, "curveFunctionREADONLY", [bv], nil))
277277 let by = n(bj[0])
278278 if ((0 >= by))
279279 then throw("nsbtAmount <= 0")
280280 else {
281281 let bz = aX(bv, by)
282282 let bf = 0
283283 let bA = invoke(aC, "acceptWaves", nil, bm.payments)
284284 if ((bA == bA))
285285 then $Tuple2((ba(toBase58String(bm.transactionId), bu, bu, toString(bw), x, bf, bz, bg) ++ [ScriptTransfer(bw, by, aH), StringEntry("debug_curveResult", bh("curveResult", bj))]), by)
286286 else throw("Strict value is not equal to itself.")
287287 }
288288 }
289289 }
290290
291291
292292
293293 @Callable(bm)
294294 func sellNsbt () = if (aI)
295295 then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles")
296296 else {
297297 let bt = value(bm.payments[0])
298298 let bu = bt.amount
299299 if ((bt.assetId != aH))
300300 then throw("can use NSBT only")
301301 else if ((aK > bu))
302302 then throw((("min " + toString((aK / q))) + " nsbt expected"))
303303 else {
304304 let bB = n(h(invoke(aF, "calcContractNsbtPriceSYSREADONLY", [-(bu)], nil))[0])
305305 if ((q > bB))
306306 then throw((("resulting nsbt price would be < 1 (" + toString(bB)) + " usdn)"))
307307 else {
308308 let bC = invoke(aC, "transferUsdnToUser", [bu, toString(bm.caller)], nil)
309309 if ((bC == bC))
310310 then $Tuple2(nil, bB)
311311 else throw("Strict value is not equal to itself.")
312312 }
313313 }
314314 }
315315
316316
317317
318318 @Callable(bm)
319319 func cancelOrder (ak) = {
320320 let bd = aR(ak)
321321 let au = (aQ(ak) - aT(ak))
322322 let bD = toString(bm.caller)
323323 let bE = aV(ak)
324324 let bF = aU(ak)
325325 if ((aS(ak) != w))
326326 then throw("invalid order status")
327327 else [StringEntry(ad, if ((aN == ak))
328328 then bE
329329 else aN), StringEntry(as(bF), bE), StringEntry(ar(bE), bF), StringEntry(ap(ak), v), ScriptTransfer(bm.caller, au, unit)]
330330 }
331331
332332
333333
334334 @Callable(bm)
335335 func minWavesAmountNsbtBuySYSREADONLY () = $Tuple2(nil, aJ)
336336
337337
338338
339339 @Callable(bm)
340340 func minNsbtAmountForSellSYSREADONLY () = $Tuple2(nil, aK)
341341
342342
343343
344344 @Callable(bm)
345345 func minWavesAmountSurfBuySYSREADONLY () = $Tuple2(nil, aL)
346346
347347
348348
349349 @Callable(bm)
350350 func minUsdnAmountSurfBuySYSREADONLY () = $Tuple2(nil, aM)
351351
352352
353353
354354 @Callable(bm)
355355 func buySurf (bG,bH,bI) = if ((size(bm.payments) != 1))
356356 then throw("exactly 1 payment must be attached")
357- else {
358- let bt = bm.payments[0]
359- let bJ = bt.amount
360- let bK = valueOrElse(bt.assetId, y)
361- if (if ((bK != aG))
362- then (bK != y)
363- else false)
364- then throw("Unsupported payment asset")
365- else if (if ((bK == aG))
366- then (aM > bJ)
367- else false)
368- then throw((("min " + toString((aM / q))) + " USDN expected"))
369- else if (if ((bK == y))
370- then (aL > bJ)
357+ else if ((0 >= bG))
358+ then throw("averagePriceWanted should be positive")
359+ else if ((0 >= bH))
360+ then throw("maxTolerancePerc should be positive")
361+ else {
362+ let bt = bm.payments[0]
363+ let bJ = bt.amount
364+ let bK = valueOrElse(bt.assetId, y)
365+ if (if ((bK != aG))
366+ then (bK != y)
371367 else false)
372- then throw((("min " + toString((aL / r))) + " WAVES expected"))
373- else {
374- let bl = h(invoke(aF, "surfFunctionREADONLY", [bJ, bK], nil))
375- let bL = n(bl[M])
376- let bM = n(bl[N])
377- let bN = n(bl[L])
378- let bO = toBigInt(bN)
379- let bP = if ((bK == y))
380- then (toBigInt(bL) * s)
381- else (toBigInt(bM) * t)
382- if ((bP > ((toBigInt((bH + q)) * toBigInt(bG)) * bO)))
383- then throw((((((("Tolerance " + toString(bH)) + " exceeded: spent ") + (if ((bK == y))
384- then (toString(bL) + " WAVES")
385- else (toString(bM) + " USDN"))) + " for ") + toString(bN)) + " SURF"))
368+ then throw("Unsupported payment asset")
369+ else if (if ((bK == aG))
370+ then (aM > bJ)
371+ else false)
372+ then throw((("min " + toString((aM / q))) + " USDN expected"))
373+ else if (if ((bK == y))
374+ then (aL > bJ)
375+ else false)
376+ then throw((("min " + toString((aL / r))) + " WAVES expected"))
386377 else {
387- let bQ = n(bl[U])
388- let bR = if ((bK == y))
389- then {
390- let bS = invoke(aC, "acceptWaves", nil, [AttachedPayment(unit, (bJ - bQ))])
391- if ((bS == bS))
392- then if ((bQ > 0))
393- then [ScriptTransfer(bm.caller, bQ, unit)]
394- else nil
395- else throw("Strict value is not equal to itself.")
378+ let bl = h(invoke(aF, "surfFunctionREADONLY", [bJ, bK], nil))
379+ let bL = n(bl[M])
380+ let bM = n(bl[N])
381+ let bN = n(bl[L])
382+ let bO = toBigInt(bN)
383+ let bP = if ((bK == y))
384+ then (toBigInt(bL) * s)
385+ else (toBigInt(bM) * t)
386+ if ((bP > ((toBigInt((bH + q)) * toBigInt(bG)) * bO)))
387+ then throw((((((("Tolerance " + toString(bH)) + " exceeded: spent ") + (if ((bK == y))
388+ then (toString(bL) + " WAVES")
389+ else (toString(bM) + " USDN"))) + " for ") + toString(bN)) + " SURF"))
390+ else {
391+ let bQ = n(bl[U])
392+ let bR = if ((bK == y))
393+ then {
394+ let bS = invoke(aC, "acceptWaves", nil, [AttachedPayment(unit, (bJ - bQ))])
395+ if ((bS == bS))
396+ then if ((bQ > 0))
397+ then [ScriptTransfer(bm.caller, bQ, unit)]
398+ else nil
399+ else throw("Strict value is not equal to itself.")
400+ }
401+ else if ((bQ > 0))
402+ then [ScriptTransfer(aC, (bJ - bQ), aG), ScriptTransfer(bm.caller, bQ, aG)]
403+ else [ScriptTransfer(aC, (bJ - bQ), aG)]
404+ let bT = fromBase58String(getStringValue(Z))
405+ (bR ++ [Reissue(bT, bN, true), ScriptTransfer(bm.caller, bN, bT), bk(bl)])
396406 }
397- else if ((bQ > 0))
398- then [ScriptTransfer(aC, (bJ - bQ), aG), ScriptTransfer(bm.caller, bQ, aG)]
399- else [ScriptTransfer(aC, (bJ - bQ), aG)]
400- let bT = fromBase58String(getStringValue(Z))
401- (bR ++ [Reissue(bT, bN, true), ScriptTransfer(bm.caller, bN, bT), bk(bl)])
402407 }
403- }
404- }
408+ }
405409
406410
407411 @Verifier(bU)
408412 func bV () = {
409413 let bW = makeString(["ExtEEK19nmKj9mCpnWyvEEJFYATLMcVEMvohhUHkyHNm", "Ev5py5FfBQX9cZpYKnfQrTB49Byf8QmpZWeDVRim4yV7", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"], p)
410414 let bX = split(valueOrElse(getString(aD, "%s__multisig"), bW), p)
411415 let bY = ((((if (sigVerify(bU.bodyBytes, bU.proofs[0], fromBase58String(bX[0])))
412416 then 1
413417 else 0) + (if (sigVerify(bU.bodyBytes, bU.proofs[1], fromBase58String(bX[1])))
414418 then 1
415419 else 0)) + (if (sigVerify(bU.bodyBytes, bU.proofs[2], fromBase58String(bX[2])))
416420 then 1
417421 else 0)) + (if (sigVerify(bU.bodyBytes, bU.proofs[3], fromBase58String(bX[3])))
418422 then 2
419423 else 0))
420424 (bY >= 3)
421425 }
422426

github/deemru/w8io/026f985 
53.14 ms