tx · 55cw3hVWu7YLPwVgxpDrT2FQRqDRXiycbhrtg2K8JjMo

3N7LYefWk1WhvCsY5A9nTq244SbVPmhCypi:  -0.04000000 Waves

2022.09.26 14:40 [2246051] smart account 3N7LYefWk1WhvCsY5A9nTq244SbVPmhCypi > SELF 0.00000000 Waves

{ "type": 13, "id": "55cw3hVWu7YLPwVgxpDrT2FQRqDRXiycbhrtg2K8JjMo", "fee": 4000000, "feeAssetId": null, "timestamp": 1664192459216, "version": 1, "sender": "3N7LYefWk1WhvCsY5A9nTq244SbVPmhCypi", "senderPublicKey": "4qGVXRFATZNzo2RZZ5UYHXojGyJgSRBwtgJcCU8rJe5A", "proofs": [ "2xs4DD195BeZpt8HM8FeHXSDjjBx8N9z1jH6Dj1gUZkcXLBZ16ik98aDVUSnneQqqLjaEKo6E8eB23M8VR1HT71X", "4sjcynWGuYJFzfUgWfzhGvKKAktAuAvCGMHU2QXuM3DVBFU1pk5uCcnHotP6CLcPuqw5oLdCkUTNGaurBUt9HKSs", "QW2Sa3mTc5qG1jxvn3SMvozX7xLkFJKpJ8repamcuFDevD6A9bFkKcjpvSC8VwEMYDKVLLVfygHELA2kBn8H3rW" ], "script": "base64:AAIFAAAAAAAAADkIAhIFCgMICAESAwoBARIHCgUBAQEBARIDCgEBEgQKAgECEgMKAQESABIFCgMBAQESBwoFAQEBAQEAAABeAAAAAAtyZXZpc2lvbk51bQIAAAAoZGRjNmU1MWVhNjMxNDJmMjY3OGNjMTQ1YWUyODUxZGE3NmVhMjQ1OQAAAAAJTVVMVFNDQUxFAAAAAAAAAAAIAAAAAAdTQ0FMRTE2AAAAAAAAAAAQAAAAAANTRVACAAAAAl9fAAAAAAVIQUxGOAAAAAAAAvrwgAAAAAAIRVVMRVJYMTYJAAE2AAAAAQAAYJKhE9jVdAAAAAAEVFdPWAkAATYAAAABAAAAAAAAAAACAAAAAAVNVUxUNgAAAAAAAA9CQAAAAAAGTVVMVFg2CQABNgAAAAEAAAAAAAAPQkAAAAAABU1VTFQ4AAAAAAAF9eEAAAAAAAZNVUxUWDgJAAE2AAAAAQAAAAAABfXhAAAAAAAHTVVMVFgxMAkAATYAAAABAAAAAAJUC+QAAAAAAAdNVUxUWDE2CQABNgAAAAEAACOG8m/BAAAAAAAAB1dBVkVTSUQJAAJZAAAAAQIAAAAFV0FWRVMAAAAAC2tSZXN1bHRJZHhBAAAAAAAAAAAAAAAAAA9rUmVzdWx0SWR4UGF1bEIAAAAAAAAAAAEAAAAAGWtSZXN1bHRJZHhXUmVzZXJ2ZXNJblVzZG4AAAAAAAAAAAIAAAAAEGtSZXN1bHRJZHhNdWx0QlIAAAAAAAAAAAMAAAAAE2tSZXN1bHRJZHhNdWx0UG93ZXIAAAAAAAAAAAQAAAAAG2tSZXN1bHRJZHhNdWx0RXhwSW5Qb3dlclN0cgAAAAAAAAAABQAAAAASa1Jlc3VsdElkeE11bHRLU3RyAAAAAAAAAAAGAAAAAA9uTWV0cmljSWR4UHJpY2UAAAAAAAAAAAAAAAAAG25NZXRyaWNJZHhVc2RuTG9ja2VkQmFsYW5jZQAAAAAAAAAAAQAAAAAcbk1ldHJpY0lkeFdhdmVzTG9ja2VkQmFsYW5jZQAAAAAAAAAAAgAAAAARbk1ldHJpY0lkeFJlc2VydmUAAAAAAAAAAAMAAAAAF25NZXRyaWNJZHhSZXNlcnZlSW5Vc2RuAAAAAAAAAAAEAAAAABRuTWV0cmljSWR4VXNkblN1cHBseQAAAAAAAAAABQAAAAARbk1ldHJpY0lkeFN1cnBsdXMAAAAAAAAAAAYAAAAAGG5NZXRyaWNJZHhTdXJwbHVzUGVyY2VudAAAAAAAAAAABwAAAAAMbk1ldHJpY0lkeEJSAAAAAAAAAAAIAAAAABRuTWV0cmljSWR4TnNidFN1cHBseQAAAAAAAAAACQAAAAAXbk1ldHJpY0lkeE1heE5zYnRTdXBwbHkAAAAAAAAAAAoAAAAAFG5NZXRyaWNJZHhTdXJmU3VwcGx5AAAAAAAAAAALAQAAABJrZXlOZXV0cmlub0FkZHJlc3MAAAAAAgAAAB0lcyVzX19jb25maWdfX25ldXRyaW5vQWRkcmVzcwEAAAATa2V5U3dhcEFtb3VudEFQYXJhbQAAAAACAAAAGCVzJXNfX2NvbmZpZ19fc3dhcEFQYXJhbQEAAAATa2V5U3dhcEFtb3VudEJQYXJhbQAAAAACAAAAGCVzJXNfX2NvbmZpZ19fc3dhcEJQYXJhbQEAAAAXa2V5VXNkblN3YXBBbW91bnRBUGFyYW0AAAAAAgAAABwlcyVzX19jb25maWdfX3VzZG5Td2FwQVBhcmFtAQAAABdrZXlVc2RuU3dhcEFtb3VudEJQYXJhbQAAAAACAAAAHCVzJXNfX2NvbmZpZ19fdXNkblN3YXBCUGFyYW0BAAAAEmtleU5ldXRyaW5vQXNzZXRJZAAAAAACAAAAEW5ldXRyaW5vX2Fzc2V0X2lkAQAAAA5rZXlOc2J0QXNzZXRJZAAAAAACAAAADWJvbmRfYXNzZXRfaWQBAAAADmtleVN1cmZBc3NldElkAAAAAAIAAAANc3VyZl9hc3NldF9pZAEAAAAQa2V5QmFsYW5jZUxvY2tlZAAAAAACAAAADWJhbGFuY2VfbG9ja18BAAAAFWtleVdhdmVzTG9ja2VkQmFsYW5jZQAAAAAJAAEsAAAAAgkBAAAAEGtleUJhbGFuY2VMb2NrZWQAAAAAAgAAAAV3YXZlcwEAAAAYa2V5TmV1dHJpbm9Mb2NrZWRCYWxhbmNlAAAAAAkAASwAAAACCQEAAAAQa2V5QmFsYW5jZUxvY2tlZAAAAAACAAAACG5ldXRyaW5vAQAAABFzd2Fwc1RpbWVmcmFtZUtFWQAAAAACAAAAD3N3YXBzX3RpbWVmcmFtZQEAAAAaa2V5VXNlckxhc3RRdWlja1N3YXBIZWln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c3RbQW55XQEAAAAFYXNJbnQAAAABAAAAA3ZhbAQAAAAHJG1hdGNoMAUAAAADdmFsAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAABnZhbEludAUAAAAHJG1hdGNoMAUAAAAGdmFsSW50CQAAAgAAAAECAAAAFWZhaWwgdG8gY2FzdCBpbnRvIEludAEAAAAIYXNTdHJpbmcAAAABAAAAA3ZhbAQAAAAHJG1hdGNoMAUAAAADdmFsAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAABnZhbFN0cgUAAAAHJG1hdGNoMAUAAAAGdmFsU3RyCQAAAgAAAAECAAAAGGZhaWwgdG8gY2FzdCBpbnRvIFN0cmluZwAAAAAZSWR4Q29udHJvbENmZ05ldXRyaW5vRGFwcAAAAAAAAAAAAQAAAAAYSWR4Q29udHJvbENmZ0F1Y3Rpb25EYXBwAAAAAAAAAAACAAAAABRJZHhDb250cm9sQ2ZnUnBkRGFwcAAAAAAAAAAAAwAAAAAVSWR4Q29udHJvbENmZ01hdGhEYXBwAAAAAAAAAAAEAAAAABxJZHhDb250cm9sQ2ZnTGlxdWlkYXRpb25EYXBwAAAAAAAAAAAFAAAAABVJZHhDb250cm9sQ2ZnUmVzdERhcHAAAAAAAAAAAAYAAAAAHUlkeENvbnRyb2xDZmdOb2RlUmVnaXN0cnlEYXBwAAAAAAAAAAAHAAAAABxJZHhDb250cm9sQ2ZnTnNidFN0YWtpbmdEYXBwAAAAAAAAAAAIAAAAABlJZHhDb250cm9sQ2ZnTWVkaWF0b3JEYXBwAAAAAAAAAAAJAQAAABFrZXlDb250cm9sQWRkcmVzcwAAAAACAAAAHCVzJXNfX2NvbmZpZ19fY29udHJvbEFkZHJlc3MBAAAADWtleUNvbnRyb2xDZmcAAAAAAgAAABElc19fY29udHJvbENvbmZpZwEAAAAUcmVhZENvbnRyb2xDZmdPckZhaWwAAAABAAAAB2NvbnRyb2wJAAS1AAAAAgkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAIFAAAAB2NvbnRyb2wJAQAAAA1rZXlDb250cm9sQ2ZnAAAAAAUAAAADU0VQAQAAABhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwAAAACAAAACmNvbnRyb2xDZmcAAAADaWR4CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQkAAZEAAAACBQAAAApjb250cm9sQ2ZnBQAAAANpZHgJAAEsAAAAAgIAAAAtQ29udHJvbCBjZmcgZG9lc24ndCBjb250YWluIGFkZHJlc3MgYXQgaW5kZXggCQABpAAAAAEFAAAAA2lkeAAAAAAPY29udHJvbENvbnRyYWN0CQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAABHRoaXMJAQAAABFrZXlDb250cm9sQWRkcmVzcwAAAAACAAAAIzNONE5TN2Q0Sm85YTZGMTRMaUZVS0tZVmRVa2tmMmVQNFp4AAAAAApjb250cm9sQ2ZnCQEAAAAUcmVhZENvbnRyb2xDZmdPckZhaWwAAAABBQAAAA9jb250cm9sQ29udHJhY3QAAAAAEG5ldXRyaW5vQ29udHJhY3QJAQAAABhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwAAAACBQAAAApjb250cm9sQ2ZnBQAAABlJZHhDb250cm9sQ2ZnTmV1dHJpbm9EYXBwAAAAAA9hdWN0aW9uQ29udHJhY3QJAQAAABhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwAAAACBQAAAApjb250cm9sQ2ZnBQAAABhJZHhDb250cm9sQ2ZnQXVjdGlvbkRhcHAAAAAAE2xpcXVpZGF0aW9uQ29udHJhY3QJAQAAABhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwAAAACBQAAAApjb250cm9sQ2ZnBQAAABxJZHhDb250cm9sQ2ZnTGlxdWlkYXRpb25EYXBwAAAAABN1c2RuU3Rha2luZ0NvbnRyYWN0CQEAAAAYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAAAAAgUAAAAKY29udHJvbENmZwUAAAAUSWR4Q29udHJvbENmZ1JwZERhcHAAAAAAEm5ldXRyaW5vQXNzZXRJZFN0cgkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAIFAAAAEG5ldXRyaW5vQ29udHJhY3QJAQAAABJrZXlOZXV0cmlub0Fzc2V0SWQAAAAAAAAAAA9uZXV0cmlub0Fzc2V0SWQJAAJZAAAAAQUAAAASbmV1dHJpbm9Bc3NldElkU3RyAAAAAAtuc2J0QXNzZXRJZAkAAlkAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAABBuZXV0cmlub0NvbnRyYWN0CQEAAAAOa2V5TnNidEFzc2V0SWQAAAAAAAAAAAtzdXJmQXNzZXRJZAkAAlkAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAA9hdWN0aW9uQ29udHJhY3QJAQAAAA5rZXlTdXJmQXNzZXRJZAAAAAABAAAAGWNhbGNVc2RuT3V0T2ZNYXJrZXRTdXBwbHkAAAAABAAAABZvdXRPZk1hcmtldEFkZHJlc3NMaXN0CQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAAD2NvbnRyb2xDb250cmFjdAIAAAAlJXMlc19fY29udHJvbF9fb3V0T2ZNYXJrZXRBZGRyZXNzTGlzdAIAAAAAAwkAAAAAAAACBQAAABZvdXRPZk1hcmtldEFkZHJlc3NMaXN0AgAAAAAAAAAAAAAAAAAKAQAAAAtiYWxhbmNlc1NVTQAAAAIAAAARb3V0T2ZNYXJrZXRTdXBwbHkAAAALbmV4dEFkZHJlc3MJAABkAAAAAgkAAGQAAAACBQAAABFvdXRPZk1hcmtldFN1cHBseQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAABN1c2RuU3Rha2luZ0NvbnRyYWN0CQEAAAARcnBkVXNlckJhbGFuY2VLZXkAAAACBQAAAAtuZXh0QWRkcmVzcwUAAAASbmV1dHJpbm9Bc3NldElkU3RyAAAAAAAAAAAACQAD8AAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAC25leHRBZGRyZXNzBQAAAA9uZXV0cmlub0Fzc2V0SWQKAAAAAAIkbAkABLUAAAACBQAAABZvdXRPZk1hcmtldEFkZHJlc3NMaXN0BQAAAANTRVAKAAAAAAIkcwkAAZAAAAABBQAAAAIkbAoAAAAABSRhY2MwAAAAAAAAAAAACgEAAAAFJGYwXzEAAAACAAAAAiRhAAAAAiRpAwkAAGcAAAACBQAAAAIkaQUAAAACJHMFAAAAAiRhCQEAAAALYmFsYW5jZXNTVU0AAAACBQAAAAIkYQkAAZEAAAACBQAAAAIkbAUAAAACJGkKAQAAAAUkZjBfMgAAAAIAAAACJGEAAAACJGkDCQAAZwAAAAIFAAAAAiRpBQAAAAIkcwUAAAACJGEJAAACAAAAAQIAAAATTGlzdCBzaXplIGV4Y2VlZHMgNAkBAAAABSRmMF8yAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgUAAAAFJGFjYzAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAIAAAAAAAAAAAMAAAAAAAAAAAQAAAAADGN1cnJlbnRQcmljZQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAPY29udHJvbENvbnRyYWN0CQEAAAAIa2V5UHJpY2UAAAAAAAAAABVuZXV0cmlub0xvY2tlZEJhbGFuY2UJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAQbmV1dHJpbm9Db250cmFjdAkBAAAAGGtleU5ldXRyaW5vTG9ja2VkQmFsYW5jZQAAAAAAAAAAAAAAAAAAAAAAEndhdmVzTG9ja2VkQmFsYW5jZQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAABBuZXV0cmlub0NvbnRyYWN0CQEAAAAVa2V5V2F2ZXNMb2NrZWRCYWxhbmNlAAAAAAAAAAAAAAAAAAAAAAAHcmVzZXJ2ZQkAAGUAAAACCAkAA+8AAAABBQAAABBuZXV0cmlub0NvbnRyYWN0AAAAB3JlZ3VsYXIFAAAAEndhdmVzTG9ja2VkQmFsYW5jZQAAAAAOcmVzZXJ2ZXNJblVzZG4JAQAAABZjb252ZXJ0V2F2ZXNUb05ldXRyaW5vAAAAAgUAAAAHcmVzZXJ2ZQUAAAAMY3VycmVudFByaWNlAAAAABluZXV0cmlub091dE9mTWFya2V0U3VwcGx5CQEAAAAZY2FsY1VzZG5PdXRPZk1hcmtldFN1cHBseQAAAAAAAAAAE25ldXRyaW5vVG90YWxTdXBwbHkJAABlAAAAAgkAAGUAAAACCQAAZAAAAAIFAAAAFW5ldXRyaW5vTG9ja2VkQmFsYW5jZQgJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAAPbmV1dHJpbm9Bc3NldElkAAAACHF1YW50aXR5CQAD8AAAAAIFAAAAEG5ldXRyaW5vQ29udHJhY3QFAAAAD25ldXRyaW5vQXNzZXRJZAkAA/AAAAACBQAAABNsaXF1aWRhdGlvbkNvbnRyYWN0BQAAAA9uZXV0cmlub0Fzc2V0SWQAAAAADm5ldXRyaW5vU3VwcGx5CQAAZQAAAAIFAAAAE25ldXRyaW5vVG90YWxTdXBwbHkFAAAAGW5ldXRyaW5vT3V0T2ZNYXJrZXRTdXBwbHkAAAAAAkJSAwkAAAAAAAACBQAAAA5uZXV0cmlub1N1cHBseQAAAAAAAAAAAAAAAAAAAAAAAAkAAGsAAAADBQAAAA5yZXNlcnZlc0luVXNkbgUAAAAFTVVMVDYFAAAADm5ldXRyaW5vU3VwcGx5AAAACQAAAAFpAQAAAAtjb25zdHJ1Y3RvcgAAAAMAAAAPbmV1dHJpbm9BZGRyZXNzAAAAD25zYnRMb2NrQWRkcmVzcwAAABBzd2FwQW1vdW50QVBhcmFtAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzCQAAAgAAAAECAAAADm5vdCBhdXRob3JpemVkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABJrZXlOZXV0cmlub0FkZHJlc3MAAAAABQAAAA9uZXV0cmlub0FkZHJlc3MJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABNrZXlTd2FwQW1vdW50QVBhcmFtAAAAAAUAAAAQc3dhcEFtb3VudEFQYXJhbQUAAAADbmlsAAAAAWkBAAAAFWNhbGNTd2FwTGltaXRSRUFET05MWQAAAAEAAAALZ05zYnRBbW91bnQEAAAAEGxpbWl0V2F2ZXNJblVzZG4DCQAAZwAAAAIAAAAAAAAAAAAFAAAAC2dOc2J0QW1vdW50AAAAAAAAAAAABAAAAAhhUGFyYW1YOAkAATYAAAABCQEAAAAMZ2V0SW50T3JGYWlsAAAAAgUAAAAEdGhpcwkBAAAAE2tleVN3YXBBbW91bnRBUGFyYW0AAAAABAAAAAliUGFyYW1YMTYJAAE2AAAAAQkBAAAADGdldEludE9yRmFpbAAAAAIFAAAABHRoaXMJAQAAABNrZXlTd2FwQW1vdW50QlBhcmFtAAAAAAQAAAAJcG93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dmVzUGF5UmF3BAAAAA9uZXV0cmlub01ldHJpY3MJAQAAAAlhc0FueUxpc3QAAAABCQAD/AAAAAQFAAAABHRoaXMCAAAAGmNhbGNOZXV0aW5vTWV0cmljc1JFQURPTkxZBQAAAANuaWwFAAAAA25pbAQAAAAFcHJpY2UJAQAAAAVhc0ludAAAAAEJAAGRAAAAAgUAAAAPbmV1dHJpbm9NZXRyaWNzBQAAAA9uTWV0cmljSWR4UHJpY2UEAAAABHdSYXcJAQAAAAVhc0ludAAAAAEJAAGRAAAAAgUAAAAPbmV1dHJpbm9NZXRyaWNzBQAAABFuTWV0cmljSWR4UmVzZXJ2ZQQAAAAEdVJhdwkBAAAABWFzSW50AAAAAQkAAZEAAAACBQAAAA9uZXV0cmlub01ldHJpY3MFAAAAFG5NZXRyaWNJZHhVc2RuU3VwcGx5BAAAAARzUmF3CQEAAAAFYXNJbnQAAAABCQABkQAAAAIFAAAAD25ldXRyaW5vTWV0cmljcwUAAAAUbk1ldHJpY0lkeE5zYnRTdXBwbHkEAAAABG1SYXcJAQAAAAVhc0ludAAAAAEJAAGRAAAAAgUAAAAPbmV1dHJpbm9NZXRyaWNzBQAAABduTWV0cmljSWR4TWF4TnNidFN1cHBseQQAAAAKa0NhbGNBcnJheQkBAAAACWFzQW55TGlzdAAAAAEJAAP8AAAABAUAAAAEdGhpcwIAAAASY2FsY3VsYXRlS1JFQURPTkxZCQAETAAAAAIFAAAABHdSYXcJAARMAAAAAgUAAAAEdVJhdwkABEwAAAACBQAAAAVwcmljZQkABEwAAAACBQAAAARtUmF3CQAETAAAAAIFAAAABHNSYXcFAAAAA25pbAUAAAADbmlsBAAAAAVtdWx0SwkAAacAAAABCQEAAAAIYXNTdHJpbmcAAAABCQABkQAAAAIFAAAACmtDYWxjQXJyYXkFAAAAEmtSZXN1bHRJZHhNdWx0S1N0cgQAAAAHdXNkblBheQkBAAAAFmNvbnZlcnRXYXZlc1RvTmV1dHJpbm8AAAACBQAAAAt3YXZlc1BheVJhdwUAAAAFcHJpY2UEAAAAEGJpZ01heE5zYnRTdXBwbHkJAAE2AAAAAQUAAAAEbVJhdwQAAAANYmlnTnNidFN1cHBseQkAATYAAAABCQAAZQAAAAIFAAAABG1S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AAAAFmNvbnZlcnRXYXZlc1RvTmV1dHJpbm8AAAACCQAAZAAAAAIFAAAAB3Jlc2VydmUFAAAACXVzZUFtb3VudAUAAAAFcHJpY2UFAAAABU1VTFQ2BQAAAAZzdXBwbHkJAARMAAAAAgkAAGUAAAACBQAAAAZhbW91bnQFAAAACXVzZUFtb3VudAkABEwAAAACBQAAAAVwcmljZQUAAAADbmlsCQAAAgAAAAECAAAAEVVuc3VwcG9ydGVkIGFzc2V0AAAAAWkBAAAAIGNhbGNDb250cmFjdE5zYnRQcmljZVNZU1JFQURPTkxZAAAAAQAAAA9uc2J0U3VwcGx5REVMVEEEAAAAD25ldXRyaW5vTWV0cmljcwkBAAAACWFzQW55TGlzdAAAAAEJAAP8AAAABAUAAAAEdGhpcwIAAAAaY2FsY05ldXRpbm9NZXRyaWNzUkVBRE9OTFkFAAAAA25pbAUAAAADbmlsBAAAAAVwcmljZQkBAAAABWFzSW50AAAAAQkAAZEAAAACBQAAAA9uZXV0cmlub01ldHJpY3MFAAAAD25NZXRyaWNJZHhQcmljZQQAAAAEd1JhdwkBAAAABWFzSW50AAAAAQkAAZEAAAACBQAAAA9uZXV0cmlub01ldHJpY3MFAAAAEW5NZXRyaWNJZHhSZXNlcnZlBAAAAAR1UmF3CQAAZQAAAAIJAQAAAAVhc0ludAAAAAEJAAGRAAAAAgUAAAAPbmV1dHJpbm9NZXRyaWNzBQAAABRuTWV0cmljSWR4VXNkblN1cHBseQUAAAAPbnNidFN1cHBseURFTFRBBAAAAARzUmF3CQAAZAAAAAIJAQAAAAVhc0ludAAAAAEJAAGRAAAAAgUAAAAPbmV1dHJpbm9NZXRyaWNzBQAAABRuTWV0cmljSWR4TnNidFN1cHBseQUAAAAPbnNidFN1cHBseURFTFRBBAAAAARtUmF3CQEAAAAFYXNJbnQAAAABCQABkQAAAAIFAAAAD25ldXRyaW5vTWV0cmljcwUAAAAXbk1ldHJpY0lkeE1heE5zYnRTdXBwbHkEAAAACmtDYWxjQXJyYXkJAQAAAAlhc0FueUxpc3QAAAABCQAD/AAAAAQFAAAABHRoaXMCAAAAEmNhbGN1bGF0ZUtSRUFET05MWQkABEwAAAACBQAAAAR3UmF3CQAETAAAAAIFAAAA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", "chainId": 84, "height": 2246051, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: C56HDkyxree3ybz1WY5p55UQ3NVPEVyaE5iyJCZLgrdh Next: 6os9rBNfRjZz8BoUau1FW92aPriR6giBgp9ck2W13sJu Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = ""
4+let a = "ddc6e51ea63142f2678cc145ae2851da76ea2459"
55
66 let b = 8
77
231231 else {
232232 func aZ (ba,bb) = ((ba + valueOrElse(getInteger(aS, Y(bb, aT)), 0)) + assetBalance(addressFromStringValue(bb), aU))
233233
234- let bc = {
235- let bd = split(aY, d)
236- let be = size(bd)
237- let bf = 0
238- func bg (bh,bi) = if ((bi >= be))
239- then bh
240- else aZ(bh, bd[bi])
234+ let bc = split(aY, d)
235+ let bd = size(bc)
236+ let be = 0
237+ func bf (bg,bh) = if ((bh >= bd))
238+ then bg
239+ else aZ(bg, bc[bh])
241240
242- func bj (bh,bi) = if ((bi >= be))
243- then bh
244- else throw("List size exceeds 4")
241+ func bi (bg,bh) = if ((bh >= bd))
242+ then bg
243+ else throw("List size exceeds 4")
245244
246- bj(bg(bg(bg(bg(bf, 0), 1), 2), 3), 4)
247- }
248- throw((((("" + aY) + " ") + toString(bc)) + "neutrinoAssetIdStr"))
245+ bi(bf(bf(bf(bf(be, 0), 1), 2), 3), 4)
249246 }
250247 }
251248
252249
253-let bk = getIntegerValue(aO, W())
250+let bj = getIntegerValue(aO, W())
254251
255-let bl = valueOrElse(getInteger(aP, R()), 0)
252+let bk = valueOrElse(getInteger(aP, R()), 0)
256253
257-let bm = valueOrElse(getInteger(aP, Q()), 0)
254+let bl = valueOrElse(getInteger(aP, Q()), 0)
258255
259-let bn = (wavesBalance(aP).regular - bm)
256+let bm = (wavesBalance(aP).regular - bl)
260257
261-let bo = ak(bn, bk)
258+let bn = ak(bm, bj)
262259
263-let bp = aX()
260+let bo = aX()
264261
265-let bq = (((bl + value(assetInfo(aU)).quantity) - assetBalance(aP, aU)) - assetBalance(aR, aU))
262+let bp = (((bk + value(assetInfo(aU)).quantity) - assetBalance(aP, aU)) - assetBalance(aR, aU))
266263
267-let br = (bq - bp)
264+let bq = (bp - bo)
268265
269-let bs = if ((br == 0))
266+let br = if ((bq == 0))
270267 then 0
271- else fraction(bo, h, br)
268+ else fraction(bn, h, bq)
272269
273-@Callable(bt)
274-func constructor (bu,bv,bw) = if ((bt.caller != this))
270+@Callable(bs)
271+func constructor (bt,bu,bv) = if ((bs.caller != this))
275272 then throw("not authorized")
276- else [StringEntry(H(), bu), IntegerEntry(I(), bw)]
273+ else [StringEntry(H(), bt), IntegerEntry(I(), bv)]
277274
278275
279276
280-@Callable(bt)
281-func calcSwapLimitREADONLY (bx) = {
282- let by = if ((0 >= bx))
277+@Callable(bs)
278+func calcSwapLimitREADONLY (bw) = {
279+ let bx = if ((0 >= bw))
283280 then 0
284281 else {
285- let bz = toBigInt(ae(this, I()))
286- let bA = toBigInt(ae(this, J()))
287- let bB = pow(toBigInt(bx), 6, bA, 16, 8, CEILING)
288- toInt(fraction(bz, bB, l))
282+ let by = toBigInt(ae(this, I()))
283+ let bz = toBigInt(ae(this, J()))
284+ let bA = pow(toBigInt(bw), 6, bz, 16, 8, CEILING)
285+ toInt(fraction(by, bA, l))
289286 }
290- let bC = ah(by, bk)
291- let bD = if ((0 >= bx))
287+ let bB = ah(bx, bj)
288+ let bC = if ((0 >= bw))
292289 then 0
293290 else {
294- let bz = toBigInt(ae(this, K()))
295- let bA = toBigInt(ae(this, L()))
296- let bE = toBigInt(bs)
297- let bB = pow(toBigInt(bx), 6, bA, 16, 8, CEILING)
298- toInt(fraction(fraction(bz, bB, l), bE, i))
291+ let by = toBigInt(ae(this, K()))
292+ let bz = toBigInt(ae(this, L()))
293+ let bD = toBigInt(br)
294+ let bA = pow(toBigInt(bw), 6, bz, 16, 8, CEILING)
295+ toInt(fraction(fraction(by, bA, l), bD, i))
299296 }
300- $Tuple2(nil, [by, bC, bD])
297+ $Tuple2(nil, [bx, bB, bC])
301298 }
302299
303300
304301
305-@Callable(bt)
306-func calculateKREADONLY (bF,bG,aj,bH,bI) = {
307- let bJ = toBigInt(2718281)
308- let bK = 6
309- let bL = valueOrElse(getInteger(aQ, "nsbtCurveParam_a"), 3)
310- let bM = valueOrElse(getInteger(aQ, "nsbtCurveParam_b"), ((3 * h) / 10))
311- let bN = ak(bF, aj)
312- let bO = fraction(bN, j, bG)
313- if ((bO > 10678564816))
314- then throw((("BR=" + toString(bO)) + " > 10678.564816% will overflow exponent"))
302+@Callable(bs)
303+func calculateKREADONLY (bE,bF,aj,bG,bH) = {
304+ let bI = toBigInt(2718281)
305+ let bJ = 6
306+ let bK = valueOrElse(getInteger(aQ, "nsbtCurveParam_a"), 3)
307+ let bL = valueOrElse(getInteger(aQ, "nsbtCurveParam_b"), ((3 * h) / 10))
308+ let bM = ak(bE, aj)
309+ let bN = fraction(bM, j, bF)
310+ if ((bN > 10678564816))
311+ then throw((("BR=" + toString(bN)) + " > 10678.564816% will overflow exponent"))
315312 else {
316- let bP = (bL * (bO - j))
317- let bQ = pow(bJ, bK, toBigInt(bP), b, c, DOWN)
318- let bR = fraction(toBigInt(bM), bQ, i)
319- $Tuple2(nil, [bL, bM, bN, bO, bP, toString(bQ), toString(bR)])
313+ let bO = (bK * (bN - j))
314+ let bP = pow(bI, bJ, toBigInt(bO), b, c, DOWN)
315+ let bQ = fraction(toBigInt(bL), bP, i)
316+ $Tuple2(nil, [bK, bL, bM, bN, bO, toString(bP), toString(bQ)])
320317 }
321318 }
322319
323320
324321
325-@Callable(bt)
326-func curveFunctionREADONLY (bS) = {
327- let bT = ar(invoke(this, "calcNeutinoMetricsREADONLY", nil, nil))
328- let aj = au(bT[v])
329- let bF = au(bT[y])
330- let bG = au(bT[A])
331- let bI = au(bT[E])
332- let bH = au(bT[F])
333- let bU = ar(invoke(this, "calculateKREADONLY", [bF, bG, aj, bH, bI], nil))
334- let bR = parseBigIntValue(aw(bU[u]))
335- let bV = ak(bS, aj)
336- let bW = toBigInt(bH)
337- let bX = toBigInt((bH - bI))
338- let bY = fraction(toBigInt(bV), m, bR)
339- let bZ = fraction(bY, bX, bW)
340- let ca = toInt(fraction(bX, bW, (bZ + bW)))
341- let cb = ((bH - bI) - ca)
342- $Tuple2(nil, [cb, bV, bF, bG, bH, bI, au(bU[o]), au(bU[p]), au(bU[q]), aj, au(bU[r]), au(bU[s]), bU[t], bU[u], toString(bY), toString(bZ), ca])
322+@Callable(bs)
323+func curveFunctionREADONLY (bR) = {
324+ let bS = ar(invoke(this, "calcNeutinoMetricsREADONLY", nil, nil))
325+ let aj = au(bS[v])
326+ let bE = au(bS[y])
327+ let bF = au(bS[A])
328+ let bH = au(bS[E])
329+ let bG = au(bS[F])
330+ let bT = ar(invoke(this, "calculateKREADONLY", [bE, bF, aj, bG, bH], nil))
331+ let bQ = parseBigIntValue(aw(bT[u]))
332+ let bU = ak(bR, aj)
333+ let bV = toBigInt(bG)
334+ let bW = toBigInt((bG - bH))
335+ let bX = fraction(toBigInt(bU), m, bQ)
336+ let bY = fraction(bX, bW, bV)
337+ let bZ = toInt(fraction(bW, bV, (bY + bV)))
338+ let ca = ((bG - bH) - bZ)
339+ $Tuple2(nil, [ca, bU, bE, bF, bG, bH, au(bT[o]), au(bT[p]), au(bT[q]), aj, au(bT[r]), au(bT[s]), bT[t], bT[u], toString(bX), toString(bY), bZ])
343340 }
344341
345342
346343
347-@Callable(bt)
344+@Callable(bs)
348345 func surfFunctionREADONLY (ai,aa) = if ((0 > ai))
349346 then throw("amount should be positive")
350347 else {
351- let aj = bk
352- let cc = toBigInt(aj)
353- let cd = toBigInt(bn)
354- let ce = br
355- let cf = toBigInt(ce)
356- if ((bs >= h))
357- then throw((("BR = " + toString(bs)) + ", cannot buy SURF"))
348+ let aj = bj
349+ let cb = toBigInt(aj)
350+ let cc = toBigInt(bm)
351+ let cd = bq
352+ let ce = toBigInt(cd)
353+ if ((br >= h))
354+ then throw((("BR = " + toString(br)) + ", cannot buy SURF"))
358355 else {
359- let cg = (fraction(ce, j, aj) - bn)
360- let ch = (ce - fraction(bn, aj, j))
361- let ci = if ((aa == aU))
362- then if ((ai > ch))
363- then ch
356+ let cf = (fraction(cd, j, aj) - bm)
357+ let cg = (cd - fraction(bm, aj, j))
358+ let ch = if ((aa == aU))
359+ then if ((ai > cg))
360+ then cg
364361 else ai
365362 else if ((aa == n))
366- then if ((ai > cg))
367- then cg
363+ then if ((ai > cf))
364+ then cf
368365 else ai
369366 else 0
370- let cj = toBigInt(ci)
367+ let ci = toBigInt(ch)
371368 if ((aa == aU))
372- then $Tuple2(nil, [toInt(fraction(fraction(cj, k, cc), (cf - (cj / g)), cd)), 0, ci, bn, ce, bs, bn, (ce - ci), fraction(ak(bn, aj), h, (ce - ci)), (ai - ci), aj])
369+ then $Tuple2(nil, [toInt(fraction(fraction(ci, k, cb), (ce - (ci / g)), cc)), 0, ch, bm, cd, br, bm, (cd - ch), fraction(ak(bm, aj), h, (cd - ch)), (ai - ch), aj])
373370 else if ((aa == n))
374- then $Tuple2(nil, [toInt(fraction(cf, log(fraction((cd + cj), m, cd), 16, f, 16, 16, HALFUP), m)), ci, 0, bn, ce, bs, (bn + ci), ce, fraction(ak((bn + ci), aj), h, ce), (ai - ci), aj])
371+ then $Tuple2(nil, [toInt(fraction(ce, log(fraction((cc + ci), m, cc), 16, f, 16, 16, HALFUP), m)), ch, 0, bm, cd, br, (bm + ch), cd, fraction(ak((bm + ch), aj), h, cd), (ai - ch), aj])
375372 else throw("Unsupported asset")
376373 }
377374 }
378375
379376
380377
381-@Callable(bt)
382-func calcContractNsbtPriceSYSREADONLY (ck) = {
383- let bT = ar(invoke(this, "calcNeutinoMetricsREADONLY", nil, nil))
384- let aj = au(bT[v])
385- let bF = au(bT[y])
386- let bG = (au(bT[A]) - ck)
387- let bI = (au(bT[E]) + ck)
388- let bH = au(bT[F])
389- let bU = ar(invoke(this, "calculateKREADONLY", [bF, bG, aj, bH, bI], nil))
390- let cl = parseBigIntValue(aw(bU[u]))
391- let cm = fraction(toBigInt(bH), m, toBigInt((bH - bI)))
392- let cn = fraction(cm, cm, m)
393- let co = fraction(cl, cn, m)
394- let cp = toInt(fraction(co, toBigInt(h), m))
395- let cq = fraction(cp, h, aj)
396- $Tuple2(nil, [cp, cq])
378+@Callable(bs)
379+func calcContractNsbtPriceSYSREADONLY (cj) = {
380+ let bS = ar(invoke(this, "calcNeutinoMetricsREADONLY", nil, nil))
381+ let aj = au(bS[v])
382+ let bE = au(bS[y])
383+ let bF = (au(bS[A]) - cj)
384+ let bH = (au(bS[E]) + cj)
385+ let bG = au(bS[F])
386+ let bT = ar(invoke(this, "calculateKREADONLY", [bE, bF, aj, bG, bH], nil))
387+ let ck = parseBigIntValue(aw(bT[u]))
388+ let cl = fraction(toBigInt(bG), m, toBigInt((bG - bH)))
389+ let cm = fraction(cl, cl, m)
390+ let cn = fraction(ck, cm, m)
391+ let co = toInt(fraction(cn, toBigInt(h), m))
392+ let cp = fraction(co, h, aj)
393+ $Tuple2(nil, [co, cp])
397394 }
398395
399396
400397
401-@Callable(bt)
398+@Callable(bs)
402399 func calcNeutinoMetricsREADONLY () = {
403- let cr = value(assetInfo(aV)).quantity
404- let cs = (cr - assetBalance(aQ, aV))
405- let ct = value(assetInfo(aW)).quantity
406- $Tuple2(nil, [bk, bl, bm, bn, bo, br, bp, bq, bs, cs, cr, ct])
400+ let cq = value(assetInfo(aV)).quantity
401+ let cr = (cq - assetBalance(aQ, aV))
402+ let cs = value(assetInfo(aW)).quantity
403+ $Tuple2(nil, [bj, bk, bl, bm, bn, bq, bo, bp, br, cr, cq, cs])
407404 }
408405
409406
410407
411-@Callable(bt)
412-func getUnstakeComissionAmountREADONLY (ai,cu,cv) = $Tuple2(nil, fraction(ai, pow(2, 0, fraction(-((height - cu)), j, cv), 8, 8, HALFUP), j))
408+@Callable(bs)
409+func getUnstakeComissionAmountREADONLY (ai,ct,cu) = $Tuple2(nil, fraction(ai, pow(2, 0, fraction(-((height - ct)), j, cu), 8, 8, HALFUP), j))
413410
414411
415412
416-@Callable(bt)
417-func mergeStakesREADONLY (cw,cx,cy,cz,cv) = {
418- let cA = fraction(cy, pow(2, 0, fraction((cz - cx), j, cv), 8, 8, HALFUP), j)
419- let cB = fraction((cw + cy), j, (cw + cA))
420- $Tuple2(nil, (cx + ((e - (cv * log(cB, 8, 2, 0, 8, HALFUP))) / j)))
413+@Callable(bs)
414+func mergeStakesREADONLY (cv,cw,cx,cy,cu) = {
415+ let cz = fraction(cx, pow(2, 0, fraction((cy - cw), j, cu), 8, 8, HALFUP), j)
416+ let cA = fraction((cv + cx), j, (cv + cz))
417+ $Tuple2(nil, (cw + ((e - (cu * log(cA, 8, 2, 0, 8, HALFUP))) / j)))
421418 }
422419
423420
424-@Verifier(cC)
425-func cD () = {
426- let cE = makeString(["ExtEEK19nmKj9mCpnWyvEEJFYATLMcVEMvohhUHkyHNm", "Ev5py5FfBQX9cZpYKnfQrTB49Byf8QmpZWeDVRim4yV7", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR"], d)
427- let cF = split(valueOrElse(getString(aO, "%s__multisig"), cE), d)
428- let cG = ((((if (sigVerify(cC.bodyBytes, cC.proofs[0], fromBase58String(cF[0])))
421+@Verifier(cB)
422+func cC () = {
423+ let cD = makeString(["ExtEEK19nmKj9mCpnWyvEEJFYATLMcVEMvohhUHkyHNm", "Ev5py5FfBQX9cZpYKnfQrTB49Byf8QmpZWeDVRim4yV7", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR"], d)
424+ let cE = split(valueOrElse(getString(aO, "%s__multisig"), cD), d)
425+ let cF = ((((if (sigVerify(cB.bodyBytes, cB.proofs[0], fromBase58String(cE[0])))
429426 then 1
430- else 0) + (if (sigVerify(cC.bodyBytes, cC.proofs[1], fromBase58String(cF[1])))
427+ else 0) + (if (sigVerify(cB.bodyBytes, cB.proofs[1], fromBase58String(cE[1])))
431428 then 1
432- else 0)) + (if (sigVerify(cC.bodyBytes, cC.proofs[2], fromBase58String(cF[2])))
429+ else 0)) + (if (sigVerify(cB.bodyBytes, cB.proofs[2], fromBase58String(cE[2])))
433430 then 1
434- else 0)) + (if (sigVerify(cC.bodyBytes, cC.proofs[3], fromBase58String(cF[3])))
431+ else 0)) + (if (sigVerify(cB.bodyBytes, cB.proofs[3], fromBase58String(cE[3])))
435432 then 2
436433 else 0))
437- (cG >= 3)
434+ (cF >= 3)
438435 }
439436
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = ""
4+let a = "ddc6e51ea63142f2678cc145ae2851da76ea2459"
55
66 let b = 8
77
88 let c = 16
99
1010 let d = "__"
1111
1212 let e = 50000000
1313
1414 let f = toBigInt(27182818284590452)
1515
1616 let g = toBigInt(2)
1717
1818 let h = 1000000
1919
2020 let i = toBigInt(1000000)
2121
2222 let j = 100000000
2323
2424 let k = toBigInt(100000000)
2525
2626 let l = toBigInt(10000000000)
2727
2828 let m = toBigInt(10000000000000000)
2929
3030 let n = fromBase58String("WAVES")
3131
3232 let o = 0
3333
3434 let p = 1
3535
3636 let q = 2
3737
3838 let r = 3
3939
4040 let s = 4
4141
4242 let t = 5
4343
4444 let u = 6
4545
4646 let v = 0
4747
4848 let w = 1
4949
5050 let x = 2
5151
5252 let y = 3
5353
5454 let z = 4
5555
5656 let A = 5
5757
5858 let B = 6
5959
6060 let C = 7
6161
6262 let D = 8
6363
6464 let E = 9
6565
6666 let F = 10
6767
6868 let G = 11
6969
7070 func H () = "%s%s__config__neutrinoAddress"
7171
7272
7373 func I () = "%s%s__config__swapAParam"
7474
7575
7676 func J () = "%s%s__config__swapBParam"
7777
7878
7979 func K () = "%s%s__config__usdnSwapAParam"
8080
8181
8282 func L () = "%s%s__config__usdnSwapBParam"
8383
8484
8585 func M () = "neutrino_asset_id"
8686
8787
8888 func N () = "bond_asset_id"
8989
9090
9191 func O () = "surf_asset_id"
9292
9393
9494 func P () = "balance_lock_"
9595
9696
9797 func Q () = (P() + "waves")
9898
9999
100100 func R () = (P() + "neutrino")
101101
102102
103103 func S () = "swaps_timeframe"
104104
105105
106106 func T (U) = makeString(["%s%s", "userLastQuickSwapHeight", U], d)
107107
108108
109109 func V (U) = makeString(["%s%s", "quickSwapUserSpentInPeriod", U], d)
110110
111111
112112 func W () = "price"
113113
114114
115115 let X = "rpd_balance"
116116
117117 func Y (Z,aa) = makeString([X, aa, Z], "_")
118118
119119
120120 func ab (ac,ad) = valueOrErrorMessage(getString(ac, ad), makeString(["mandatory ", toString(ac), ".", ad, " is not defined"], ""))
121121
122122
123123 func ae (ac,ad) = valueOrErrorMessage(getInteger(ac, ad), makeString(["mandatory ", toString(ac), ".", ad, " is not defined"], ""))
124124
125125
126126 func af (ac,ad) = valueOrElse(getInteger(ac, ad), 0)
127127
128128
129129 func ag (ac,ad) = valueOrErrorMessage(getBoolean(ac, ad), makeString(["mandatory ", toString(ac), ".", ad, " is not defined"], ""))
130130
131131
132132 func ah (ai,aj) = fraction(ai, j, aj)
133133
134134
135135 func ak (ai,aj) = fraction(ai, aj, j)
136136
137137
138138 func al (am,an) = fraction(toBigInt(am), m, toBigInt(an))
139139
140140
141141 func ao (ap,aq) = toInt(fraction(ap, toBigInt(aq), m))
142142
143143
144144 func ar (ap) = {
145145 let as = ap
146146 if ($isInstanceOf(as, "List[Any]"))
147147 then {
148148 let at = as
149149 at
150150 }
151151 else throw("fail to cast into List[Any]")
152152 }
153153
154154
155155 func au (ap) = {
156156 let as = ap
157157 if ($isInstanceOf(as, "Int"))
158158 then {
159159 let av = as
160160 av
161161 }
162162 else throw("fail to cast into Int")
163163 }
164164
165165
166166 func aw (ap) = {
167167 let as = ap
168168 if ($isInstanceOf(as, "String"))
169169 then {
170170 let ax = as
171171 ax
172172 }
173173 else throw("fail to cast into String")
174174 }
175175
176176
177177 let ay = 1
178178
179179 let az = 2
180180
181181 let aA = 3
182182
183183 let aB = 4
184184
185185 let aC = 5
186186
187187 let aD = 6
188188
189189 let aE = 7
190190
191191 let aF = 8
192192
193193 let aG = 9
194194
195195 func aH () = "%s%s__config__controlAddress"
196196
197197
198198 func aI () = "%s__controlConfig"
199199
200200
201201 func aJ (aK) = split(ab(aK, aI()), d)
202202
203203
204204 func aL (aM,aN) = valueOrErrorMessage(addressFromString(aM[aN]), ("Control cfg doesn't contain address at index " + toString(aN)))
205205
206206
207207 let aO = addressFromStringValue(valueOrElse(getString(this, aH()), "3N4NS7d4Jo9a6F14LiFUKKYVdUkkf2eP4Zx"))
208208
209209 let aM = aJ(aO)
210210
211211 let aP = aL(aM, ay)
212212
213213 let aQ = aL(aM, az)
214214
215215 let aR = aL(aM, aC)
216216
217217 let aS = aL(aM, aA)
218218
219219 let aT = ab(aP, M())
220220
221221 let aU = fromBase58String(aT)
222222
223223 let aV = fromBase58String(getStringValue(aP, N()))
224224
225225 let aW = fromBase58String(getStringValue(aQ, O()))
226226
227227 func aX () = {
228228 let aY = valueOrElse(getString(aO, "%s%s__control__outOfMarketAddressList"), "")
229229 if ((aY == ""))
230230 then 0
231231 else {
232232 func aZ (ba,bb) = ((ba + valueOrElse(getInteger(aS, Y(bb, aT)), 0)) + assetBalance(addressFromStringValue(bb), aU))
233233
234- let bc = {
235- let bd = split(aY, d)
236- let be = size(bd)
237- let bf = 0
238- func bg (bh,bi) = if ((bi >= be))
239- then bh
240- else aZ(bh, bd[bi])
234+ let bc = split(aY, d)
235+ let bd = size(bc)
236+ let be = 0
237+ func bf (bg,bh) = if ((bh >= bd))
238+ then bg
239+ else aZ(bg, bc[bh])
241240
242- func bj (bh,bi) = if ((bi >= be))
243- then bh
244- else throw("List size exceeds 4")
241+ func bi (bg,bh) = if ((bh >= bd))
242+ then bg
243+ else throw("List size exceeds 4")
245244
246- bj(bg(bg(bg(bg(bf, 0), 1), 2), 3), 4)
247- }
248- throw((((("" + aY) + " ") + toString(bc)) + "neutrinoAssetIdStr"))
245+ bi(bf(bf(bf(bf(be, 0), 1), 2), 3), 4)
249246 }
250247 }
251248
252249
253-let bk = getIntegerValue(aO, W())
250+let bj = getIntegerValue(aO, W())
254251
255-let bl = valueOrElse(getInteger(aP, R()), 0)
252+let bk = valueOrElse(getInteger(aP, R()), 0)
256253
257-let bm = valueOrElse(getInteger(aP, Q()), 0)
254+let bl = valueOrElse(getInteger(aP, Q()), 0)
258255
259-let bn = (wavesBalance(aP).regular - bm)
256+let bm = (wavesBalance(aP).regular - bl)
260257
261-let bo = ak(bn, bk)
258+let bn = ak(bm, bj)
262259
263-let bp = aX()
260+let bo = aX()
264261
265-let bq = (((bl + value(assetInfo(aU)).quantity) - assetBalance(aP, aU)) - assetBalance(aR, aU))
262+let bp = (((bk + value(assetInfo(aU)).quantity) - assetBalance(aP, aU)) - assetBalance(aR, aU))
266263
267-let br = (bq - bp)
264+let bq = (bp - bo)
268265
269-let bs = if ((br == 0))
266+let br = if ((bq == 0))
270267 then 0
271- else fraction(bo, h, br)
268+ else fraction(bn, h, bq)
272269
273-@Callable(bt)
274-func constructor (bu,bv,bw) = if ((bt.caller != this))
270+@Callable(bs)
271+func constructor (bt,bu,bv) = if ((bs.caller != this))
275272 then throw("not authorized")
276- else [StringEntry(H(), bu), IntegerEntry(I(), bw)]
273+ else [StringEntry(H(), bt), IntegerEntry(I(), bv)]
277274
278275
279276
280-@Callable(bt)
281-func calcSwapLimitREADONLY (bx) = {
282- let by = if ((0 >= bx))
277+@Callable(bs)
278+func calcSwapLimitREADONLY (bw) = {
279+ let bx = if ((0 >= bw))
283280 then 0
284281 else {
285- let bz = toBigInt(ae(this, I()))
286- let bA = toBigInt(ae(this, J()))
287- let bB = pow(toBigInt(bx), 6, bA, 16, 8, CEILING)
288- toInt(fraction(bz, bB, l))
282+ let by = toBigInt(ae(this, I()))
283+ let bz = toBigInt(ae(this, J()))
284+ let bA = pow(toBigInt(bw), 6, bz, 16, 8, CEILING)
285+ toInt(fraction(by, bA, l))
289286 }
290- let bC = ah(by, bk)
291- let bD = if ((0 >= bx))
287+ let bB = ah(bx, bj)
288+ let bC = if ((0 >= bw))
292289 then 0
293290 else {
294- let bz = toBigInt(ae(this, K()))
295- let bA = toBigInt(ae(this, L()))
296- let bE = toBigInt(bs)
297- let bB = pow(toBigInt(bx), 6, bA, 16, 8, CEILING)
298- toInt(fraction(fraction(bz, bB, l), bE, i))
291+ let by = toBigInt(ae(this, K()))
292+ let bz = toBigInt(ae(this, L()))
293+ let bD = toBigInt(br)
294+ let bA = pow(toBigInt(bw), 6, bz, 16, 8, CEILING)
295+ toInt(fraction(fraction(by, bA, l), bD, i))
299296 }
300- $Tuple2(nil, [by, bC, bD])
297+ $Tuple2(nil, [bx, bB, bC])
301298 }
302299
303300
304301
305-@Callable(bt)
306-func calculateKREADONLY (bF,bG,aj,bH,bI) = {
307- let bJ = toBigInt(2718281)
308- let bK = 6
309- let bL = valueOrElse(getInteger(aQ, "nsbtCurveParam_a"), 3)
310- let bM = valueOrElse(getInteger(aQ, "nsbtCurveParam_b"), ((3 * h) / 10))
311- let bN = ak(bF, aj)
312- let bO = fraction(bN, j, bG)
313- if ((bO > 10678564816))
314- then throw((("BR=" + toString(bO)) + " > 10678.564816% will overflow exponent"))
302+@Callable(bs)
303+func calculateKREADONLY (bE,bF,aj,bG,bH) = {
304+ let bI = toBigInt(2718281)
305+ let bJ = 6
306+ let bK = valueOrElse(getInteger(aQ, "nsbtCurveParam_a"), 3)
307+ let bL = valueOrElse(getInteger(aQ, "nsbtCurveParam_b"), ((3 * h) / 10))
308+ let bM = ak(bE, aj)
309+ let bN = fraction(bM, j, bF)
310+ if ((bN > 10678564816))
311+ then throw((("BR=" + toString(bN)) + " > 10678.564816% will overflow exponent"))
315312 else {
316- let bP = (bL * (bO - j))
317- let bQ = pow(bJ, bK, toBigInt(bP), b, c, DOWN)
318- let bR = fraction(toBigInt(bM), bQ, i)
319- $Tuple2(nil, [bL, bM, bN, bO, bP, toString(bQ), toString(bR)])
313+ let bO = (bK * (bN - j))
314+ let bP = pow(bI, bJ, toBigInt(bO), b, c, DOWN)
315+ let bQ = fraction(toBigInt(bL), bP, i)
316+ $Tuple2(nil, [bK, bL, bM, bN, bO, toString(bP), toString(bQ)])
320317 }
321318 }
322319
323320
324321
325-@Callable(bt)
326-func curveFunctionREADONLY (bS) = {
327- let bT = ar(invoke(this, "calcNeutinoMetricsREADONLY", nil, nil))
328- let aj = au(bT[v])
329- let bF = au(bT[y])
330- let bG = au(bT[A])
331- let bI = au(bT[E])
332- let bH = au(bT[F])
333- let bU = ar(invoke(this, "calculateKREADONLY", [bF, bG, aj, bH, bI], nil))
334- let bR = parseBigIntValue(aw(bU[u]))
335- let bV = ak(bS, aj)
336- let bW = toBigInt(bH)
337- let bX = toBigInt((bH - bI))
338- let bY = fraction(toBigInt(bV), m, bR)
339- let bZ = fraction(bY, bX, bW)
340- let ca = toInt(fraction(bX, bW, (bZ + bW)))
341- let cb = ((bH - bI) - ca)
342- $Tuple2(nil, [cb, bV, bF, bG, bH, bI, au(bU[o]), au(bU[p]), au(bU[q]), aj, au(bU[r]), au(bU[s]), bU[t], bU[u], toString(bY), toString(bZ), ca])
322+@Callable(bs)
323+func curveFunctionREADONLY (bR) = {
324+ let bS = ar(invoke(this, "calcNeutinoMetricsREADONLY", nil, nil))
325+ let aj = au(bS[v])
326+ let bE = au(bS[y])
327+ let bF = au(bS[A])
328+ let bH = au(bS[E])
329+ let bG = au(bS[F])
330+ let bT = ar(invoke(this, "calculateKREADONLY", [bE, bF, aj, bG, bH], nil))
331+ let bQ = parseBigIntValue(aw(bT[u]))
332+ let bU = ak(bR, aj)
333+ let bV = toBigInt(bG)
334+ let bW = toBigInt((bG - bH))
335+ let bX = fraction(toBigInt(bU), m, bQ)
336+ let bY = fraction(bX, bW, bV)
337+ let bZ = toInt(fraction(bW, bV, (bY + bV)))
338+ let ca = ((bG - bH) - bZ)
339+ $Tuple2(nil, [ca, bU, bE, bF, bG, bH, au(bT[o]), au(bT[p]), au(bT[q]), aj, au(bT[r]), au(bT[s]), bT[t], bT[u], toString(bX), toString(bY), bZ])
343340 }
344341
345342
346343
347-@Callable(bt)
344+@Callable(bs)
348345 func surfFunctionREADONLY (ai,aa) = if ((0 > ai))
349346 then throw("amount should be positive")
350347 else {
351- let aj = bk
352- let cc = toBigInt(aj)
353- let cd = toBigInt(bn)
354- let ce = br
355- let cf = toBigInt(ce)
356- if ((bs >= h))
357- then throw((("BR = " + toString(bs)) + ", cannot buy SURF"))
348+ let aj = bj
349+ let cb = toBigInt(aj)
350+ let cc = toBigInt(bm)
351+ let cd = bq
352+ let ce = toBigInt(cd)
353+ if ((br >= h))
354+ then throw((("BR = " + toString(br)) + ", cannot buy SURF"))
358355 else {
359- let cg = (fraction(ce, j, aj) - bn)
360- let ch = (ce - fraction(bn, aj, j))
361- let ci = if ((aa == aU))
362- then if ((ai > ch))
363- then ch
356+ let cf = (fraction(cd, j, aj) - bm)
357+ let cg = (cd - fraction(bm, aj, j))
358+ let ch = if ((aa == aU))
359+ then if ((ai > cg))
360+ then cg
364361 else ai
365362 else if ((aa == n))
366- then if ((ai > cg))
367- then cg
363+ then if ((ai > cf))
364+ then cf
368365 else ai
369366 else 0
370- let cj = toBigInt(ci)
367+ let ci = toBigInt(ch)
371368 if ((aa == aU))
372- then $Tuple2(nil, [toInt(fraction(fraction(cj, k, cc), (cf - (cj / g)), cd)), 0, ci, bn, ce, bs, bn, (ce - ci), fraction(ak(bn, aj), h, (ce - ci)), (ai - ci), aj])
369+ then $Tuple2(nil, [toInt(fraction(fraction(ci, k, cb), (ce - (ci / g)), cc)), 0, ch, bm, cd, br, bm, (cd - ch), fraction(ak(bm, aj), h, (cd - ch)), (ai - ch), aj])
373370 else if ((aa == n))
374- then $Tuple2(nil, [toInt(fraction(cf, log(fraction((cd + cj), m, cd), 16, f, 16, 16, HALFUP), m)), ci, 0, bn, ce, bs, (bn + ci), ce, fraction(ak((bn + ci), aj), h, ce), (ai - ci), aj])
371+ then $Tuple2(nil, [toInt(fraction(ce, log(fraction((cc + ci), m, cc), 16, f, 16, 16, HALFUP), m)), ch, 0, bm, cd, br, (bm + ch), cd, fraction(ak((bm + ch), aj), h, cd), (ai - ch), aj])
375372 else throw("Unsupported asset")
376373 }
377374 }
378375
379376
380377
381-@Callable(bt)
382-func calcContractNsbtPriceSYSREADONLY (ck) = {
383- let bT = ar(invoke(this, "calcNeutinoMetricsREADONLY", nil, nil))
384- let aj = au(bT[v])
385- let bF = au(bT[y])
386- let bG = (au(bT[A]) - ck)
387- let bI = (au(bT[E]) + ck)
388- let bH = au(bT[F])
389- let bU = ar(invoke(this, "calculateKREADONLY", [bF, bG, aj, bH, bI], nil))
390- let cl = parseBigIntValue(aw(bU[u]))
391- let cm = fraction(toBigInt(bH), m, toBigInt((bH - bI)))
392- let cn = fraction(cm, cm, m)
393- let co = fraction(cl, cn, m)
394- let cp = toInt(fraction(co, toBigInt(h), m))
395- let cq = fraction(cp, h, aj)
396- $Tuple2(nil, [cp, cq])
378+@Callable(bs)
379+func calcContractNsbtPriceSYSREADONLY (cj) = {
380+ let bS = ar(invoke(this, "calcNeutinoMetricsREADONLY", nil, nil))
381+ let aj = au(bS[v])
382+ let bE = au(bS[y])
383+ let bF = (au(bS[A]) - cj)
384+ let bH = (au(bS[E]) + cj)
385+ let bG = au(bS[F])
386+ let bT = ar(invoke(this, "calculateKREADONLY", [bE, bF, aj, bG, bH], nil))
387+ let ck = parseBigIntValue(aw(bT[u]))
388+ let cl = fraction(toBigInt(bG), m, toBigInt((bG - bH)))
389+ let cm = fraction(cl, cl, m)
390+ let cn = fraction(ck, cm, m)
391+ let co = toInt(fraction(cn, toBigInt(h), m))
392+ let cp = fraction(co, h, aj)
393+ $Tuple2(nil, [co, cp])
397394 }
398395
399396
400397
401-@Callable(bt)
398+@Callable(bs)
402399 func calcNeutinoMetricsREADONLY () = {
403- let cr = value(assetInfo(aV)).quantity
404- let cs = (cr - assetBalance(aQ, aV))
405- let ct = value(assetInfo(aW)).quantity
406- $Tuple2(nil, [bk, bl, bm, bn, bo, br, bp, bq, bs, cs, cr, ct])
400+ let cq = value(assetInfo(aV)).quantity
401+ let cr = (cq - assetBalance(aQ, aV))
402+ let cs = value(assetInfo(aW)).quantity
403+ $Tuple2(nil, [bj, bk, bl, bm, bn, bq, bo, bp, br, cr, cq, cs])
407404 }
408405
409406
410407
411-@Callable(bt)
412-func getUnstakeComissionAmountREADONLY (ai,cu,cv) = $Tuple2(nil, fraction(ai, pow(2, 0, fraction(-((height - cu)), j, cv), 8, 8, HALFUP), j))
408+@Callable(bs)
409+func getUnstakeComissionAmountREADONLY (ai,ct,cu) = $Tuple2(nil, fraction(ai, pow(2, 0, fraction(-((height - ct)), j, cu), 8, 8, HALFUP), j))
413410
414411
415412
416-@Callable(bt)
417-func mergeStakesREADONLY (cw,cx,cy,cz,cv) = {
418- let cA = fraction(cy, pow(2, 0, fraction((cz - cx), j, cv), 8, 8, HALFUP), j)
419- let cB = fraction((cw + cy), j, (cw + cA))
420- $Tuple2(nil, (cx + ((e - (cv * log(cB, 8, 2, 0, 8, HALFUP))) / j)))
413+@Callable(bs)
414+func mergeStakesREADONLY (cv,cw,cx,cy,cu) = {
415+ let cz = fraction(cx, pow(2, 0, fraction((cy - cw), j, cu), 8, 8, HALFUP), j)
416+ let cA = fraction((cv + cx), j, (cv + cz))
417+ $Tuple2(nil, (cw + ((e - (cu * log(cA, 8, 2, 0, 8, HALFUP))) / j)))
421418 }
422419
423420
424-@Verifier(cC)
425-func cD () = {
426- let cE = makeString(["ExtEEK19nmKj9mCpnWyvEEJFYATLMcVEMvohhUHkyHNm", "Ev5py5FfBQX9cZpYKnfQrTB49Byf8QmpZWeDVRim4yV7", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR"], d)
427- let cF = split(valueOrElse(getString(aO, "%s__multisig"), cE), d)
428- let cG = ((((if (sigVerify(cC.bodyBytes, cC.proofs[0], fromBase58String(cF[0])))
421+@Verifier(cB)
422+func cC () = {
423+ let cD = makeString(["ExtEEK19nmKj9mCpnWyvEEJFYATLMcVEMvohhUHkyHNm", "Ev5py5FfBQX9cZpYKnfQrTB49Byf8QmpZWeDVRim4yV7", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR"], d)
424+ let cE = split(valueOrElse(getString(aO, "%s__multisig"), cD), d)
425+ let cF = ((((if (sigVerify(cB.bodyBytes, cB.proofs[0], fromBase58String(cE[0])))
429426 then 1
430- else 0) + (if (sigVerify(cC.bodyBytes, cC.proofs[1], fromBase58String(cF[1])))
427+ else 0) + (if (sigVerify(cB.bodyBytes, cB.proofs[1], fromBase58String(cE[1])))
431428 then 1
432- else 0)) + (if (sigVerify(cC.bodyBytes, cC.proofs[2], fromBase58String(cF[2])))
429+ else 0)) + (if (sigVerify(cB.bodyBytes, cB.proofs[2], fromBase58String(cE[2])))
433430 then 1
434- else 0)) + (if (sigVerify(cC.bodyBytes, cC.proofs[3], fromBase58String(cF[3])))
431+ else 0)) + (if (sigVerify(cB.bodyBytes, cB.proofs[3], fromBase58String(cE[3])))
435432 then 2
436433 else 0))
437- (cG >= 3)
434+ (cF >= 3)
438435 }
439436

github/deemru/w8io/026f985 
103.13 ms