tx · Hj51uVbHbKDdX5Xot2jSaJeb8PHdHgE9ZeB22nWnpnVh

3N7LYefWk1WhvCsY5A9nTq244SbVPmhCypi:  -0.04000000 Waves

2022.09.23 16:33 [2241852] smart account 3N7LYefWk1WhvCsY5A9nTq244SbVPmhCypi > SELF 0.00000000 Waves

{ "type": 13, "id": "Hj51uVbHbKDdX5Xot2jSaJeb8PHdHgE9ZeB22nWnpnVh", "fee": 4000000, "feeAssetId": null, "timestamp": 1663940059617, "version": 1, "sender": "3N7LYefWk1WhvCsY5A9nTq244SbVPmhCypi", "senderPublicKey": "4qGVXRFATZNzo2RZZ5UYHXojGyJgSRBwtgJcCU8rJe5A", "proofs": [ "2JjURABWqxBEi4weZoMHqs7npyMYTTURxLUwNW7NL5XnJ1H8JSf6xPgyEm8rQhZvvnmGLzQhmEJkbP4xhgVqeM1m", "25vsoUYQRydM9EuR8Qy2yb6U1j9yRm1AMa1CKBxUSfBjqv9TPXuVFMwGfqMGJUbEtLuRJBzi7qo2JVM5uZNQTCkX", "3uwWw3kd8uF7MWYM9tTt91wEL7efmxo9riYP3DaQ4yNAYtY75U3HvFr9QFYzMw3g9f6g9b22j2z14KWQA6jUhdxR" ], "script": "base64:AAIFAAAAAAAAADkIAhIFCgMICAESAwoBARIHCgUBAQEBARIDCgEBEgQKAgECEgMKAQESABIFCgMBAQESBwoFAQEBAQEAAABeAAAAAAtyZXZpc2lvbk51bQIAAAAAAAAAAAlNVUxUU0NBTEUAAAAAAAAAAAgAAAAAB1NDQUxFMTYAAAAAAAAAABAAAAAAA1NFUAIAAAACX18AAAAABUhBTEY4AAAAAAAC+vCAAAAAAAhFVUxFUlgxNgkAATYAAAABAABgkqET2NV0AAAAAARUV09YCQABNgAAAAEAAAAAAAAAAAIAAAAABU1VTFQ2AAAAAAAAD0JAAAAAAAZNVUxUWDYJAAE2AAAAAQAAAAAAAA9CQAAAAAAFTVVMVDgAAAAAAAX14QAAAAAABk1VTFRYOAkAATYAAAABAAAAAAAF9eEAAAAAAAdNVUxUWDEwCQABNgAAAAEAAAAAAlQL5AAAAAAAB01VTFRYMTYJAAE2AAAAAQAAI4byb8EAAAAAAAAHV0FWRVNJRAkAAlkAAAABAgAAAAVXQVZFUwAAAAALa1Jlc3VsdElkeEEAAAAAAAAAAAAAAAAAD2tSZXN1bHRJZHhQYXVsQgAAAAAAAAAAAQAAAAAZa1Jlc3VsdElkeFdSZXNlcnZlc0luVXNkbgAAAAAAAAAAAgAAAAAQa1Jlc3VsdElkeE11bHRCUgAAAAAAAAAAAwAAAAATa1Jlc3VsdElkeE11bHRQb3dlcgAAAAAAAAAABAAAAAAba1Jlc3VsdElkeE11bHRFeHBJblBvd2VyU3RyAAAAAAAAAAAFAAAAABJrUmVzdWx0SWR4TXVsdEtTdHIAAAAAAAAAAAYAAAAAD25NZXRyaWNJZHhQcmljZQAAAAAAAAAAAAAAAAAbbk1ldHJpY0lkeFVzZG5Mb2NrZWRCYWxhbmNlAAAAAAAAAAABAAAAABxuTWV0cmljSWR4V2F2ZXNMb2NrZWRCYWxhbmNlAAAAAAAAAAACAAAAABFuTWV0cmljSWR4UmVzZXJ2ZQAAAAAAAAAAAwAAAAAXbk1ldHJpY0lkeFJlc2VydmVJblVzZG4AAAAAAAAAAAQAAAAAFG5NZXRyaWNJZHhVc2RuU3VwcGx5AAAAAAAAAAAFAAAAABFuTWV0cmljSWR4U3VycGx1cwAAAAAAAAAABgAAAAAYbk1ldHJpY0lkeFN1cnBsdXNQZXJjZW50AAAAAAAAAAAHAAAAAAxuTWV0cmljSWR4QlIAAAAAAAAAAAgAAAAAFG5NZXRyaWNJZHhOc2J0U3VwcGx5AAAAAAAAAAAJAAAAABduTWV0cmljSWR4TWF4TnNidFN1cHBseQAAAAAAAAAACgAAAAAUbk1ldHJpY0lkeFN1cmZTdXBwbHkAAAAAAAAAAAsBAAAAEmtleU5ldXRyaW5vQWRkcmVzcwAAAAACAAAAHSVzJXNfX2NvbmZpZ19fbmV1dHJpbm9BZGRyZXNzAQAAABNrZXlTd2FwQW1vdW50QVBhcmFtAAAAAAIAAAAYJXMlc19fY29uZmlnX19zd2FwQVBhcmFtAQAAABNrZXlTd2FwQW1vdW50QlBhcmFtAAAAAAIAAAAYJXMlc19fY29uZmlnX19zd2FwQlBhcmFtAQAAABdrZXlVc2RuU3dhcEFtb3VudEFQYXJhbQAAAAACAAAAHCVzJXNfX2NvbmZpZ19fdXNkblN3YXBBUGFyYW0BAAAAF2tleVVzZG5Td2FwQW1vdW50QlBhcmFtAAAAAAIAAAAcJXMlc19fY29uZmlnX191c2RuU3dhcEJQYXJhbQEAAAASa2V5TmV1dHJpbm9Bc3NldElkAAAAAAIAAAARbmV1dHJpbm9fYXNzZXRfaWQBAAAADmtleU5zYnRBc3NldElkAAAAAAIAAAANYm9uZF9hc3NldF9pZAEAAAAOa2V5U3VyZkFzc2V0SWQAAAAAAgAAAA1zdXJmX2Fzc2V0X2lkAQAAABBrZXlCYWxhbmNlTG9ja2VkAAAAAAIAAAANYmFsYW5jZV9sb2NrXwEAAAAVa2V5V2F2ZXNMb2NrZWRCYWxhbmNlAAAAAAkAASwAAAACCQEAAAAQa2V5QmFsYW5jZUxvY2tlZAAAAAACAAAABXdhdmVzAQAAABhrZXlOZXV0cmlub0xvY2tlZEJhbGFuY2UAAAAACQABLAAAAAIJAQAAABBrZXlCYWxhbmNlTG9ja2VkAAAAAAIAAAAIbmV1dHJpbm8BAAAAEXN3YXBzVGltZWZyYW1lS0VZAAAAAAIAAAAPc3dhcHNfdGltZWZyYW1lAQAAABprZXlVc2VyTGFzdFF1aWNrU3dhcEhlaWdodAAAAAEAAAALdXNlckFkZHJlc3MJAAS5AAAAAgkABEwAAAACAgAA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BQAAAAN2YWwDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAAGdmFsSW50BQAAAAckbWF0Y2gwBQAAAAZ2YWxJbnQJAAACAAAAAQIAAAAVZmFpbCB0byBjYXN0IGludG8gSW50AQAAAAhhc1N0cmluZwAAAAEAAAADdmFsBAAAAAckbWF0Y2gwBQAAAAN2YWwDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAAGdmFsU3RyBQAAAAckbWF0Y2gwBQAAAAZ2YWxTdHIJAAACAAAAAQIAAAAYZmFpbCB0byBjYXN0IGludG8gU3RyaW5nAAAAABlJZHhDb250cm9sQ2ZnTmV1dHJpbm9EYXBwAAAAAAAAAAABAAAAABhJZHhDb250cm9sQ2ZnQXVjdGlvbkRhcHAAAAAAAAAAAAIAAAAAFElkeENvbnRyb2xDZmdScGREYXBwAAAAAAAAAAADAAAAABVJZHhDb250cm9sQ2ZnTWF0aERhcHAAAAAAAAAAAAQAAAAAHElkeENvbnRyb2xDZmdMaXF1aWRhdGlvbkRhcHAAAAAAAAAAAAUAAAAAFUlkeENvbnRyb2xDZmdSZXN0RGFwcAAAAAAAAAAABgAAAAAdSWR4Q29udHJvbENmZ05vZGVSZWdpc3RyeURhcHAAAAAAAAAAAAcAAAAAHElkeENvbnRyb2xDZmdOc2J0U3Rha2luZ0RhcHAAAAAAAAAAAAgAAAAAGUlkeENvbnRyb2xDZmdNZWRpYXRvckRhcHAAAAAAAAAAAAkBAAAAEWtleUNvbnRyb2xBZGRyZXNzAAAAAAIAAAAcJXMlc19fY29uZmlnX19jb250cm9sQWRkcmVzcwEAAAANa2V5Q29udHJvbENmZwAAAAACAAAAESVzX19jb250cm9sQ29uZmlnAQAAABRyZWFkQ29udHJvbENmZ09yRmFpbAAAAAEAAAAHY29udHJvbAkABLUAAAACCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAgUAAAAHY29udHJvbAkBAAAADWtleUNvbnRyb2xDZmcAAAAABQAAAANTRVABAAAAGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAAAAAIAAAAKY29udHJvbENmZwAAAANpZHgJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABCQABkQAAAAIFAAAACmNvbnRyb2xDZmcFAAAAA2lkeAkAASwAAAACAgAAAC1Db250cm9sIGNmZyBkb2Vzbid0IGNvbnRhaW4gYWRkcmVzcyBhdCBpbmRleCAJAAGkAAAAAQUAAAADaWR4AAAAAA9jb250cm9sQ29udHJhY3QJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwkBAAAAEWtleUNvbnRyb2xBZGRyZXNzAAAAAAIAAAAjM040TlM3ZDRKbzlhNkYxNExpRlVLS1lWZFVra2YyZVA0WngAAAAACmNvbnRyb2xDZmcJAQAAABRyZWFkQ29udHJvbENmZ09yRmFpbAAAAAEFAAAAD2NvbnRyb2xDb250cmFjdAAAAAAQbmV1dHJpbm9Db250cmFjdAkBAAAAGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAAAAAIFAAAACmNvbnRyb2xDZmcFAAAAGUlkeENvbnRyb2xDZmdOZXV0cmlub0RhcHAAAAAAD2F1Y3Rpb25Db250cmFjdAkBAAAAGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAAAAAIFAAAACmNvbnRyb2xDZmcFAAAAGElkeENvbnRyb2xDZmdBdWN0aW9uRGFwcAAAAAATbGlxdWlkYXRpb25Db250cmFjdAkBAAAAGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAAAAAIFAAAACmNvbnRyb2xDZmcFAAAAHElkeENvbnRyb2xDZmdMaXF1aWRhdGlvbkRhcHAAAAAAE3VzZG5TdGFraW5nQ29udHJhY3QJAQAAABhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwAAAACBQAAAApjb250cm9sQ2ZnBQAAABRJZHhDb250cm9sQ2ZnUnBkRGFwcAAAAAASbmV1dHJpbm9Bc3NldElkU3RyCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAgUAAAAQbmV1dHJpbm9Db250cmFjdAkBAAAAEmtleU5ldXRyaW5vQXNzZXRJZAAAAAAAAAAAD25ldXRyaW5vQXNzZXRJZAkAAlkAAAABBQAAABJuZXV0cmlub0Fzc2V0SWRTdHIAAAAAC25zYnRBc3NldElkCQAC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ABNsaXF1aWRhdGlvbkNvbnRyYWN0BQAAAA9uZXV0cmlub0Fzc2V0SWQAAAAADm5ldXRyaW5vU3VwcGx5CQAAZQAAAAIFAAAAE25ldXRyaW5vVG90YWxTdXBwbHkFAAAAGW5ldXRyaW5vT3V0T2ZNYXJrZXRTdXBwbHkAAAAAAkJSAwkAAAAAAAACBQAAAA5uZXV0cmlub1N1cHBseQAAAAAAAAAAAAAAAAAAAAAAAAkAAGsAAAADBQAAAA5yZXNlcnZlc0luVXNkbgUAAAAFTVVMVDYFAAAADm5ldXRyaW5vU3VwcGx5AAAACQAAAAFpAQAAAAtjb25zdHJ1Y3RvcgAAAAMAAAAPbmV1dHJpbm9BZGRyZXNzAAAAD25zYnRMb2NrQWRkcmVzcwAAABBzd2FwQW1vdW50QVBhcmFtAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzCQAAAgAAAAECAAAADm5vdCBhdXRob3JpemVkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABJrZXlOZXV0cmlub0FkZHJlc3MAAAAABQAAAA9uZXV0cmlub0FkZHJlc3MJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABNrZXlTd2FwQW1vdW50QVBhcmFtAAAAAAUAAAAQc3dhcEFtb3VudEFQYXJhbQUAAAADbmlsAAAAAWkBAAAAFWNhbGNTd2FwTGltaXRSRUFET05MWQAAAAEAAAALZ05zYnRBbW91bnQEAAAAEGxpbWl0V2F2ZXNJblVzZG4DCQAAZwAAAAIAAAAAAAAAAAAFAAAAC2dOc2J0QW1vdW50AAAAAAAAAAAABAAAAAhhUGFyYW1YOAkAATYAAAABCQEAAAAMZ2V0SW50T3JGYWlsAAAAAgUAAAAEdGhpcwkBAAAAE2tleVN3YXBBbW91bnRBUGFyYW0AAAAABAAAAAliUGFyYW1YMTYJAAE2AAAAAQkBAAAADGdldEludE9yRmFpbAAAAAIFAAAABHRoaXMJAQAAABNrZXlTd2FwQW1vdW50QlBhcmFtAAAAAAQAAAAJcG93UGFydFg4CQAAdgAAAAYJAAE2AAAAAQUAAAALZ05zYnRBbW91bnQAAAAAAAAAAAYFAAAACWJQYXJhbVgxNgAAAAAA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AAAFcHJpY2UFAAAABU1VTFQ2BQAAAAZzdXBwbHkJAARMAAAAAgkAAGUAAAACBQAAAAZhbW91bnQFAAAACXVzZUFtb3VudAkABEwAAAACBQAAAAVwcmljZQUAAAADbmlsCQAAAgAAAAECAAAAEVVuc3VwcG9ydGVkIGFzc2V0AAAAAWkBAAAAIGNhbGNDb250cmFjdE5zYnRQcmljZVNZU1JFQURPTkxZAAAAAQAAAA9uc2J0U3VwcGx5REVMVEEEAAAAD25ldXRyaW5vTWV0cmljcwkBAAAACWFzQW55TGlzdAAAAAEJAAP8AAAABAUAAAAEdGhpcwIAAAAaY2FsY05ldXRpbm9NZXRyaWNzUkVBRE9OTFkFAAAAA25pbAUAAAADbmlsBAAAAAVwcmljZQkBAAAABWFzSW50AAAAAQkAAZEAAAACBQAAAA9uZXV0cmlub01ldHJpY3MFAAAAD25NZXRyaWNJZHhQcmljZQQAAAAEd1JhdwkBAAAABWFzSW50AAAAAQkAAZEAAAACBQAAAA9uZXV0cmlub01ldHJpY3MFAAAAEW5NZXRyaWNJZHhSZXNlcnZlBAAAAAR1UmF3CQAAZQAAAAIJAQAAAAVhc0ludAAAAAEJAAGRAAAAAgUAAAAPbmV1dHJpbm9NZXRyaWNzBQAAABRuTWV0cmljSWR4VXNkblN1cHBseQUAAAAPbnNidFN1cHBseURFTFRBBAAAAARzUmF3CQAAZAAAAAIJAQAAAAVhc0ludAAAAAEJAAGRAAAAAgUAAAAPbmV1dHJpbm9NZXRyaWNzBQAAABRuTWV0cmljSWR4TnNidFN1cHBseQUAAAAPbnNidFN1cHBseURFTFRBBAAAAARtUmF3CQEAAAAFYXNJbnQAAAABCQABkQAAAAIFAAAAD25ldXRyaW5vTWV0cmljcwUAAAAXbk1ldHJpY0lkeE1heE5zYnRTdXBwbHkEAAAACmtDYWxjQXJyYXkJAQAAAAlhc0FueUxpc3QAAAABCQAD/AAAAAQFAAAABHRoaXMCAAAAEmNhbGN1bGF0ZUtSRUFET05MWQkABEwAAAACBQAAAAR3UmF3CQAETAAAAAIFAAAABHVSYXcJAARMAAAAAgUAAAAFcHJpY2UJAARMAAAAAgUAAAAEbVJhdwkABEwAAAACBQAAAARzUmF3BQAAAANuaWwFAAAAA25pbAQAAAAIbXVsdEtYMTYJAAGnAAAAAQkBAAAACGFzU3RyaW5nAAAAAQkAAZEAAAACBQAAAAprQ2FsY0FycmF5BQAAABJrUmVzdWx0SWR4TXVsdEtTdHIEAAAADG11bHRTdGVwMVgxNgkAATwAAAADCQABNgAAAAEFAAAABG1SYXcFAAAAB01VTFRYMTYJAAE2AAAAAQkAAGUAAAACBQAAAARtUmF3BQAAAARzUmF3BAAAAAxtdWx0U3RlcDJYMTYJAAE8AAAAAwUAAAAMbXVsdFN0ZXAxWDE2BQAAAAxtdWx0U3RlcDFYMTYFAAAAB01VTFRYMTYEAAAAFW11bHROc2J0MnVzZG5QcmljZVgxNgkAATwAAAADBQAAAAhtdWx0S1gxNgUAAAAMbXVsdFN0ZXAyWDE2BQAAAAdNVUxUWDE2BAAAAA5uc2J0MnVzZG5QcmljZQkAAaAAAAABCQABPAAAAAMFAAAAFW11bHROc2J0MnVzZG5QcmljZVgxNgkAATYAAAABBQAAAAVNVUxUNgUAAAAHTVVMVFgxNgQAAAAPbnNidDJ3YXZlc1ByaWNlCQAAawAAAAMFAAAADm5zYnQydXNkblByaWNlBQAAAAVNVUxUNgUAAAAFcHJpY2UJAAUUAAAAAgUAAAADbmlsCQAETAAAAAIFAAAADm5zYnQydXNkblByaWNlCQAETAAAAAIFAAAAD25zYnQyd2F2ZXNQcmljZQUAAAADbmlsAAAAAWkBAAAAGmNhbGNOZXV0aW5vTWV0cmljc1JFQURPTkxZAAAAAAQAAAANbnNidFN1cHBseU1BWAgJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAALbnNidEFzc2V0SWQAAAAIcXVhbnRpdHkEAAAACm5zYnRTdXBwbHkJAABlAAAAAgUAAAANbnNidFN1cHBseU1BWAkAA/AAAAACBQAAAA9hdWN0aW9uQ29udHJhY3QFAAAAC25zYnRBc3NldElkBAAAAApzdXJmU3VwcGx5CAkBAAAABXZhbHVlAAAAAQkAA+wAAAABBQAAAAtzdXJmQXNzZXRJZAAAAAhxdWFudGl0eQkABRQAAAACBQAAAANuaWwJAARMAAAAAgUAAAAMY3VycmVudFByaWNlCQAETAAAAAIFAAAAFW5ldXRyaW5vTG9ja2VkQmFsYW5jZQkABEwAAAACBQAAABJ3YXZlc0xvY2tlZEJhbGFuY2UJAARMAAAAAgUAAAAHcmVzZXJ2ZQkABEwAAAACBQAAAA5yZXNlcnZlc0luVXNkbgkABEwAAAACBQAAAA5uZXV0cmlub1N1cHBseQkABEwAAAACBQAAABluZXV0cmlub091dE9mTWFya2V0U3VwcGx5CQAETAAAAAIFAAAAE25ldXRyaW5vVG90YWxTdXBwbHkJAARMAAAAAgUAAAACQlIJAARMAAAAAgUAAAAKbnNidFN1cHBseQkABEwAAAACBQAAAA1uc2J0U3VwcGx5TUFYCQAETAAAAAIFAAAACnN1cmZTdXBwbHkFAAAAA25pbAAAAAFpAQAAACFnZXRVbnN0YWtlQ29taXNzaW9uQW1vdW50UkVBRE9OTFkAAAADAAAABmFtb3VudAAAAAtzdGFydEhlaWdodAAAAAhoYWxmTGlmZQkABRQAAAACBQAAAANuaWwJAABrAAAAAwUAAAAGYW1vdW50CQAAbAAAAAYAAAAAAAAAAAIAAAAAAAAAAAAJAABrAAAAAwkBAAAAAS0AAAABCQAAZQAAAAIFAAAABmhlaWdodAUAAAALc3RhcnRIZWlnaHQFAAAABU1VTFQ4BQAAAAhoYWxmTGlmZQAAAAAAAAAACAAAAAAAAAAACAUAAAAGSEFMRlVQBQAAAAVNVUxUOAAAAAFpAQAAABNtZXJnZVN0YWtlc1JFQURPTkxZAAAABQAAAAdhbW91bnQxAAAAB2hlaWdodDEAAAAHYW1vdW50MgAAAAdoZWlnaHQyAAAACGhhbGZMaWZlBAAAAAF3CQAAawAAAAMFAAAAB2Ftb3VudDIJAABsAAAABgAAAAAAAAAAAgAAAAAAAAAAAAkAAGsAAAADCQAAZQAAAAIFAAAAB2hlaWdodDIFAAAAB2hlaWdodDEFAAAABU1VTFQ4BQAAAAhoYWxmTGlmZQAAAAAAAAAACAAAAAAAAAAACAUAAAAGSEFMRlVQBQAAAAVNVUxUOAQAAAABdgkAAGsAAAADCQAAZAAAAAIFAAAAB2Ftb3VudDEFAAAAB2Ftb3VudDIFAAAABU1VTFQ4CQAAZAAAAAIFAAAAB2Ftb3VudDEFAAAAAXcJAAUUAAAAAgUAAAADbmlsCQAAZAAAAAIFAAAAB2hlaWdodDEJAABpAAAAAgkAAGUAAAACBQAAAAVIQUxGOAkAAGgAAAACBQAAAAhoYWxmTGlmZQkAAG0AAAAGBQAAAAF2AAAAAAAAAAAIAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAIBQAAAAZIQUxGVVAFAAAABU1VTFQ4AAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAQAAAATcHViS2V5QWRtaW5zTGlzdFN0cgkABLkAAAACCQAETAAAAAICAAAALEV4dEVFSzE5bm1LajltQ3BuV3l2RUVKRllBVExNY1ZFTXZvaGhVSGt5SE5tCQAETAAAAAICAAAALEV2NXB5NUZmQlFYOWNacFlLbmZRclRCNDlCeWY4UW1wWldlRFZSaW00eVY3CQAETAAAAAICAAAALERVdXVMalh1OThuQndaYzdmcXdDVGp0QTNublJ3Z1Ria01TcjVTVTJObURSCQAETAAAAAICAAAALERVdXVMalh1OThuQndaYzdmcXdDVGp0QTNublJ3Z1Ria01TcjVTVTJObURSBQAAAANuaWwFAAAAA1NFUAQAAAAQcHViS2V5QWRtaW5zTGlzdAkABLUAAAACCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAAD2NvbnRyb2xDb250cmFjdAIAAAAMJXNfX211bHRpc2lnBQAAABNwdWJLZXlBZG1pbnNMaXN0U3RyBQAAAANTRVAEAAAABWNvdW50CQAAZAAAAAIJAABkAAAAAgkAAGQAAAACAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAJAAJZAAAAAQkAAZEAAAACBQAAABBwdWJLZXlBZG1pbnNMaXN0AAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAEJAAJZAAAAAQkAAZEAAAACBQAAABBwdWJLZXlBZG1pbnNMaXN0AAAAAAAAAAABAAAAAAAAAAABAAAAAAAAAAAAAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAIJAAJZAAAAAQkAAZEAAAACBQAAABBwdWJLZXlBZG1pbnNMaXN0AAAAAAAAAAACAAAAAAAAAAABAAAAAAAAAAAAAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAMJAAJZAAAAAQkAAZEAAAACBQAAABBwdWJLZXlBZG1pbnNMaXN0AAAAAAAAAAADAAAAAAAAAAACAAAAAAAAAAAACQAAZwAAAAIFAAAABWNvdW50AAAAAAAAAAADYxvO5g==", "chainId": 84, "height": 2241852, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HryhGkGQ4wsumQgUB5mtqa3SKHorT4xmBEML2My3VyzK Next: VEPQQHqPxXmpiXMuVjJV1E1eTmp3cew7HqihegcBMSx Diff:
OldNewDifferences
112112 func W () = "price"
113113
114114
115-func X (Y,Z) = valueOrErrorMessage(getString(Y, Z), makeString(["mandatory ", toString(Y), ".", Z, " is not defined"], ""))
115+let X = "rpd_balance"
116+
117+func Y (Z,aa) = makeString([X, aa, Z], "_")
116118
117119
118-func aa (Y,Z) = valueOrErrorMessage(getInteger(Y, Z), makeString(["mandatory ", toString(Y), ".", Z, " is not defined"], ""))
120+func ab (ac,ad) = valueOrErrorMessage(getString(ac, ad), makeString(["mandatory ", toString(ac), ".", ad, " is not defined"], ""))
119121
120122
121-func ab (Y,Z) = valueOrElse(getInteger(Y, Z), 0)
123+func ae (ac,ad) = valueOrErrorMessage(getInteger(ac, ad), makeString(["mandatory ", toString(ac), ".", ad, " is not defined"], ""))
122124
123125
124-func ac (Y,Z) = valueOrErrorMessage(getBoolean(Y, Z), makeString(["mandatory ", toString(Y), ".", Z, " is not defined"], ""))
126+func af (ac,ad) = valueOrElse(getInteger(ac, ad), 0)
125127
126128
127-func ad (ae,af) = fraction(ae, j, af)
129+func ag (ac,ad) = valueOrErrorMessage(getBoolean(ac, ad), makeString(["mandatory ", toString(ac), ".", ad, " is not defined"], ""))
128130
129131
130-func ag (ae,af) = fraction(ae, af, j)
132+func ah (ai,aj) = fraction(ai, j, aj)
131133
132134
133-func ah (ai,aj) = fraction(toBigInt(ai), m, toBigInt(aj))
135+func ak (ai,aj) = fraction(ai, aj, j)
134136
135137
136-func ak (al,am) = toInt(fraction(al, toBigInt(am), m))
138+func al (am,an) = fraction(toBigInt(am), m, toBigInt(an))
137139
138140
139-func an (al) = {
140- let ao = al
141- if ($isInstanceOf(ao, "List[Any]"))
141+func ao (ap,aq) = toInt(fraction(ap, toBigInt(aq), m))
142+
143+
144+func ar (ap) = {
145+ let as = ap
146+ if ($isInstanceOf(as, "List[Any]"))
142147 then {
143- let ap = ao
144- ap
148+ let at = as
149+ at
145150 }
146151 else throw("fail to cast into List[Any]")
147152 }
148153
149154
150-func aq (al) = {
151- let ao = al
152- if ($isInstanceOf(ao, "Int"))
155+func au (ap) = {
156+ let as = ap
157+ if ($isInstanceOf(as, "Int"))
153158 then {
154- let ar = ao
155- ar
159+ let av = as
160+ av
156161 }
157162 else throw("fail to cast into Int")
158163 }
159164
160165
161-func as (al) = {
162- let ao = al
163- if ($isInstanceOf(ao, "String"))
166+func aw (ap) = {
167+ let as = ap
168+ if ($isInstanceOf(as, "String"))
164169 then {
165- let at = ao
166- at
170+ let ax = as
171+ ax
167172 }
168173 else throw("fail to cast into String")
169174 }
170175
171176
172-let au = 1
177+let ay = 1
173178
174-let av = 2
179+let az = 2
175180
176-let aw = 3
181+let aA = 3
177182
178-let ax = 4
183+let aB = 4
179184
180-let ay = 5
185+let aC = 5
181186
182-let az = 6
187+let aD = 6
183188
184-let aA = 7
189+let aE = 7
185190
186-let aB = 8
191+let aF = 8
187192
188-let aC = 9
193+let aG = 9
189194
190-func aD () = "%s%s__config__controlAddress"
195+func aH () = "%s%s__config__controlAddress"
191196
192197
193-func aE () = "%s__controlConfig"
198+func aI () = "%s__controlConfig"
194199
195200
196-func aF (aG) = split(X(aG, aE()), d)
201+func aJ (aK) = split(ab(aK, aI()), d)
197202
198203
199-func aH (aI,aJ) = valueOrErrorMessage(addressFromString(aI[aJ]), ("Control cfg doesn't contain address at index " + toString(aJ)))
204+func aL (aM,aN) = valueOrErrorMessage(addressFromString(aM[aN]), ("Control cfg doesn't contain address at index " + toString(aN)))
200205
201206
202-let aK = addressFromStringValue(valueOrElse(getString(this, aD()), "3N4NS7d4Jo9a6F14LiFUKKYVdUkkf2eP4Zx"))
207+let aO = addressFromStringValue(valueOrElse(getString(this, aH()), "3N4NS7d4Jo9a6F14LiFUKKYVdUkkf2eP4Zx"))
203208
204-let aI = aF(aK)
209+let aM = aJ(aO)
205210
206-let aL = aH(aI, au)
211+let aP = aL(aM, ay)
207212
208-let aM = aH(aI, av)
213+let aQ = aL(aM, az)
209214
210-let aN = aH(aI, ay)
215+let aR = aL(aM, aC)
211216
212-let aO = fromBase58String(X(aL, M()))
217+let aS = aL(aM, aA)
213218
214-let aP = fromBase58String(getStringValue(aL, N()))
219+let aT = ab(aP, M())
215220
216-let aQ = fromBase58String(getStringValue(aM, O()))
221+let aU = fromBase58String(aT)
217222
218-let aR = getIntegerValue(aK, W())
223+let aV = fromBase58String(getStringValue(aP, N()))
219224
220-let aS = valueOrElse(getInteger(aL, R()), 0)
225+let aW = fromBase58String(getStringValue(aQ, O()))
221226
222-let aT = valueOrElse(getInteger(aL, Q()), 0)
227+func aX () = {
228+ let aY = valueOrElse(getString(aO, "%s%s__control__outOfMarketAddressList"), "")
229+ if ((aY == ""))
230+ then 0
231+ else {
232+ func aZ (ba,bb) = ((ba + valueOrElse(getInteger(aS, Y(bb, aT)), 0)) + assetBalance(addressFromStringValue(bb), aU))
223233
224-let aU = (wavesBalance(aL).regular - aT)
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])
225240
226-let aV = ag(aU, aR)
241+ func bi (bg,bh) = if ((bh >= bd))
242+ then bg
243+ else throw("List size exceeds 4")
227244
228-let aW = (((aS + value(assetInfo(aO)).quantity) - assetBalance(aL, aO)) - assetBalance(aN, aO))
245+ bi(bf(bf(bf(bf(be, 0), 1), 2), 3), 4)
246+ }
247+ }
229248
230-let aX = if ((aW == 0))
249+
250+let bj = getIntegerValue(aO, W())
251+
252+let bk = valueOrElse(getInteger(aP, R()), 0)
253+
254+let bl = valueOrElse(getInteger(aP, Q()), 0)
255+
256+let bm = (wavesBalance(aP).regular - bl)
257+
258+let bn = ak(bm, bj)
259+
260+let bo = 1000000000000
261+
262+let bp = (((bk + value(assetInfo(aU)).quantity) - assetBalance(aP, aU)) - assetBalance(aR, aU))
263+
264+let bq = (bp - bo)
265+
266+let br = if ((bq == 0))
231267 then 0
232- else fraction(aV, h, aW)
268+ else fraction(bn, h, bq)
233269
234-@Callable(aY)
235-func constructor (aZ,ba,bb) = if ((aY.caller != this))
270+@Callable(bs)
271+func constructor (bt,bu,bv) = if ((bs.caller != this))
236272 then throw("not authorized")
237- else [StringEntry(H(), aZ), IntegerEntry(I(), bb)]
273+ else [StringEntry(H(), bt), IntegerEntry(I(), bv)]
238274
239275
240276
241-@Callable(aY)
242-func calcSwapLimitREADONLY (bc) = {
243- let bd = if ((0 >= bc))
277+@Callable(bs)
278+func calcSwapLimitREADONLY (bw) = {
279+ let bx = if ((0 >= bw))
244280 then 0
245281 else {
246- let be = toBigInt(aa(this, I()))
247- let bf = toBigInt(aa(this, J()))
248- let bg = pow(toBigInt(bc), 6, bf, 16, 8, CEILING)
249- toInt(fraction(be, bg, 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))
250286 }
251- let bh = ad(bd, aR)
252- let bi = if ((0 >= bc))
287+ let bB = ah(bx, bj)
288+ let bC = if ((0 >= bw))
253289 then 0
254290 else {
255- let be = toBigInt(aa(this, K()))
256- let bf = toBigInt(aa(this, L()))
257- let bj = toBigInt(aX)
258- let bg = pow(toBigInt(bc), 6, bf, 16, 8, CEILING)
259- toInt(fraction(fraction(be, bg, l), bj, 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))
260296 }
261- $Tuple2(nil, [bd, bh, bi])
297+ $Tuple2(nil, [bx, bB, bC])
262298 }
263299
264300
265301
266-@Callable(aY)
267-func calculateKREADONLY (bk,bl,af,bm,bn) = {
268- let bo = toBigInt(2718281)
269- let bp = 6
270- let bq = valueOrElse(getInteger(aM, "nsbtCurveParam_a"), 3)
271- let br = valueOrElse(getInteger(aM, "nsbtCurveParam_b"), ((3 * h) / 10))
272- let bs = ag(bk, af)
273- let bt = fraction(bs, j, bl)
274- if ((bt > 10678564816))
275- then throw((("BR=" + toString(bt)) + " > 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"))
276312 else {
277- let bu = (bq * (bt - j))
278- let bv = pow(bo, bp, toBigInt(bu), b, c, DOWN)
279- let bw = fraction(toBigInt(br), bv, i)
280- $Tuple2(nil, [bq, br, bs, bt, bu, toString(bv), toString(bw)])
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)])
281317 }
282318 }
283319
284320
285321
286-@Callable(aY)
287-func curveFunctionREADONLY (bx) = {
288- let by = an(invoke(this, "calcNeutinoMetricsREADONLY", nil, nil))
289- let af = aq(by[v])
290- let bk = aq(by[y])
291- let bl = aq(by[A])
292- let bn = aq(by[E])
293- let bm = aq(by[F])
294- let bz = an(invoke(this, "calculateKREADONLY", [bk, bl, af, bm, bn], nil))
295- let bw = parseBigIntValue(as(bz[u]))
296- let bA = ag(bx, af)
297- let bB = toBigInt(bm)
298- let bC = toBigInt((bm - bn))
299- let bD = fraction(toBigInt(bA), m, bw)
300- let bE = fraction(bD, bC, bB)
301- let bF = toInt(fraction(bC, bB, (bE + bB)))
302- let bG = ((bm - bn) - bF)
303- $Tuple2(nil, [bG, bA, bk, bl, bm, bn, aq(bz[o]), aq(bz[p]), aq(bz[q]), af, aq(bz[r]), aq(bz[s]), bz[t], bz[u], toString(bD), toString(bE), bF])
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])
304340 }
305341
306342
307343
308-@Callable(aY)
309-func surfFunctionREADONLY (ae,bH) = if ((0 > ae))
344+@Callable(bs)
345+func surfFunctionREADONLY (ai,aa) = if ((0 > ai))
310346 then throw("amount should be positive")
311347 else {
312- let af = aR
313- let bI = toBigInt(af)
314- let bJ = toBigInt(aU)
315- let bK = aW
316- let bL = toBigInt(bK)
317- if ((aX >= h))
318- then throw((("BR = " + toString(aX)) + ", 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"))
319355 else {
320- let bM = (fraction(bK, j, af) - aU)
321- let bN = (bK - fraction(aU, af, j))
322- let bO = if ((bH == aO))
323- then if ((ae > bN))
324- then bN
325- else ae
326- else if ((bH == n))
327- then if ((ae > bM))
328- then bM
329- else ae
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
361+ else ai
362+ else if ((aa == n))
363+ then if ((ai > cf))
364+ then cf
365+ else ai
330366 else 0
331- let bP = toBigInt(bO)
332- if ((bH == aO))
333- then $Tuple2(nil, [toInt(fraction(fraction(bP, k, bI), (bL - (bP / g)), bJ)), 0, bO, aU, bK, aX, aU, (bK - bO), fraction(ag(aU, af), h, (bK - bO)), (ae - bO), af])
334- else if ((bH == n))
335- then $Tuple2(nil, [toInt(fraction(bL, log(fraction((bJ + bP), m, bJ), 16, f, 16, 16, HALFUP), m)), bO, 0, aU, bK, aX, (aU + bO), bK, fraction(ag((aU + bO), af), h, bK), (ae - bO), af])
367+ let ci = toBigInt(ch)
368+ if ((aa == aU))
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])
370+ else if ((aa == n))
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])
336372 else throw("Unsupported asset")
337373 }
338374 }
339375
340376
341377
342-@Callable(aY)
343-func calcContractNsbtPriceSYSREADONLY (bQ) = {
344- let by = an(invoke(this, "calcNeutinoMetricsREADONLY", nil, nil))
345- let af = aq(by[v])
346- let bk = aq(by[y])
347- let bl = (aq(by[A]) - bQ)
348- let bn = (aq(by[E]) + bQ)
349- let bm = aq(by[F])
350- let bz = an(invoke(this, "calculateKREADONLY", [bk, bl, af, bm, bn], nil))
351- let bR = parseBigIntValue(as(bz[u]))
352- let bS = fraction(toBigInt(bm), m, toBigInt((bm - bn)))
353- let bT = fraction(bS, bS, m)
354- let bU = fraction(bR, bT, m)
355- let bV = toInt(fraction(bU, toBigInt(h), m))
356- let bW = fraction(bV, h, af)
357- $Tuple2(nil, [bV, bW])
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])
358394 }
359395
360396
361397
362-@Callable(aY)
398+@Callable(bs)
363399 func calcNeutinoMetricsREADONLY () = {
364- let bX = (aV - aW)
365- let bY = (aW - aV)
366- let bZ = if ((aW == 0))
367- then 0
368- else (fraction(bX, h, aW) * 100)
369- let ca = value(assetInfo(aP)).quantity
370- let cb = (ca - assetBalance(aM, aP))
371- let cc = value(assetInfo(aQ)).quantity
372- $Tuple2(nil, [aR, aS, aT, aU, aV, aW, bX, bZ, aX, cb, ca, cc])
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])
373404 }
374405
375406
376407
377-@Callable(aY)
378-func getUnstakeComissionAmountREADONLY (ae,cd,ce) = $Tuple2(nil, fraction(ae, pow(2, 0, fraction(-((height - cd)), j, ce), 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))
379410
380411
381412
382-@Callable(aY)
383-func mergeStakesREADONLY (cf,cg,ch,ci,ce) = {
384- let cj = fraction(ch, pow(2, 0, fraction((ci - cg), j, ce), 8, 8, HALFUP), j)
385- let ck = fraction((cf + ch), j, (cf + cj))
386- $Tuple2(nil, (cg + ((e - (ce * log(ck, 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)))
387418 }
388419
389420
390-@Verifier(cl)
391-func cm () = {
392- let cn = makeString(["ExtEEK19nmKj9mCpnWyvEEJFYATLMcVEMvohhUHkyHNm", "Ev5py5FfBQX9cZpYKnfQrTB49Byf8QmpZWeDVRim4yV7", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR"], d)
393- let co = split(valueOrElse(getString(aK, "%s__multisig"), cn), d)
394- let cp = ((((if (sigVerify(cl.bodyBytes, cl.proofs[0], fromBase58String(co[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])))
395426 then 1
396- else 0) + (if (sigVerify(cl.bodyBytes, cl.proofs[1], fromBase58String(co[1])))
427+ else 0) + (if (sigVerify(cB.bodyBytes, cB.proofs[1], fromBase58String(cE[1])))
397428 then 1
398- else 0)) + (if (sigVerify(cl.bodyBytes, cl.proofs[2], fromBase58String(co[2])))
429+ else 0)) + (if (sigVerify(cB.bodyBytes, cB.proofs[2], fromBase58String(cE[2])))
399430 then 1
400- else 0)) + (if (sigVerify(cl.bodyBytes, cl.proofs[3], fromBase58String(co[3])))
431+ else 0)) + (if (sigVerify(cB.bodyBytes, cB.proofs[3], fromBase58String(cE[3])))
401432 then 2
402433 else 0))
403- (cp >= 3)
434+ (cF >= 3)
404435 }
405436
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = ""
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
115-func X (Y,Z) = valueOrErrorMessage(getString(Y, Z), makeString(["mandatory ", toString(Y), ".", Z, " is not defined"], ""))
115+let X = "rpd_balance"
116+
117+func Y (Z,aa) = makeString([X, aa, Z], "_")
116118
117119
118-func aa (Y,Z) = valueOrErrorMessage(getInteger(Y, Z), makeString(["mandatory ", toString(Y), ".", Z, " is not defined"], ""))
120+func ab (ac,ad) = valueOrErrorMessage(getString(ac, ad), makeString(["mandatory ", toString(ac), ".", ad, " is not defined"], ""))
119121
120122
121-func ab (Y,Z) = valueOrElse(getInteger(Y, Z), 0)
123+func ae (ac,ad) = valueOrErrorMessage(getInteger(ac, ad), makeString(["mandatory ", toString(ac), ".", ad, " is not defined"], ""))
122124
123125
124-func ac (Y,Z) = valueOrErrorMessage(getBoolean(Y, Z), makeString(["mandatory ", toString(Y), ".", Z, " is not defined"], ""))
126+func af (ac,ad) = valueOrElse(getInteger(ac, ad), 0)
125127
126128
127-func ad (ae,af) = fraction(ae, j, af)
129+func ag (ac,ad) = valueOrErrorMessage(getBoolean(ac, ad), makeString(["mandatory ", toString(ac), ".", ad, " is not defined"], ""))
128130
129131
130-func ag (ae,af) = fraction(ae, af, j)
132+func ah (ai,aj) = fraction(ai, j, aj)
131133
132134
133-func ah (ai,aj) = fraction(toBigInt(ai), m, toBigInt(aj))
135+func ak (ai,aj) = fraction(ai, aj, j)
134136
135137
136-func ak (al,am) = toInt(fraction(al, toBigInt(am), m))
138+func al (am,an) = fraction(toBigInt(am), m, toBigInt(an))
137139
138140
139-func an (al) = {
140- let ao = al
141- if ($isInstanceOf(ao, "List[Any]"))
141+func ao (ap,aq) = toInt(fraction(ap, toBigInt(aq), m))
142+
143+
144+func ar (ap) = {
145+ let as = ap
146+ if ($isInstanceOf(as, "List[Any]"))
142147 then {
143- let ap = ao
144- ap
148+ let at = as
149+ at
145150 }
146151 else throw("fail to cast into List[Any]")
147152 }
148153
149154
150-func aq (al) = {
151- let ao = al
152- if ($isInstanceOf(ao, "Int"))
155+func au (ap) = {
156+ let as = ap
157+ if ($isInstanceOf(as, "Int"))
153158 then {
154- let ar = ao
155- ar
159+ let av = as
160+ av
156161 }
157162 else throw("fail to cast into Int")
158163 }
159164
160165
161-func as (al) = {
162- let ao = al
163- if ($isInstanceOf(ao, "String"))
166+func aw (ap) = {
167+ let as = ap
168+ if ($isInstanceOf(as, "String"))
164169 then {
165- let at = ao
166- at
170+ let ax = as
171+ ax
167172 }
168173 else throw("fail to cast into String")
169174 }
170175
171176
172-let au = 1
177+let ay = 1
173178
174-let av = 2
179+let az = 2
175180
176-let aw = 3
181+let aA = 3
177182
178-let ax = 4
183+let aB = 4
179184
180-let ay = 5
185+let aC = 5
181186
182-let az = 6
187+let aD = 6
183188
184-let aA = 7
189+let aE = 7
185190
186-let aB = 8
191+let aF = 8
187192
188-let aC = 9
193+let aG = 9
189194
190-func aD () = "%s%s__config__controlAddress"
195+func aH () = "%s%s__config__controlAddress"
191196
192197
193-func aE () = "%s__controlConfig"
198+func aI () = "%s__controlConfig"
194199
195200
196-func aF (aG) = split(X(aG, aE()), d)
201+func aJ (aK) = split(ab(aK, aI()), d)
197202
198203
199-func aH (aI,aJ) = valueOrErrorMessage(addressFromString(aI[aJ]), ("Control cfg doesn't contain address at index " + toString(aJ)))
204+func aL (aM,aN) = valueOrErrorMessage(addressFromString(aM[aN]), ("Control cfg doesn't contain address at index " + toString(aN)))
200205
201206
202-let aK = addressFromStringValue(valueOrElse(getString(this, aD()), "3N4NS7d4Jo9a6F14LiFUKKYVdUkkf2eP4Zx"))
207+let aO = addressFromStringValue(valueOrElse(getString(this, aH()), "3N4NS7d4Jo9a6F14LiFUKKYVdUkkf2eP4Zx"))
203208
204-let aI = aF(aK)
209+let aM = aJ(aO)
205210
206-let aL = aH(aI, au)
211+let aP = aL(aM, ay)
207212
208-let aM = aH(aI, av)
213+let aQ = aL(aM, az)
209214
210-let aN = aH(aI, ay)
215+let aR = aL(aM, aC)
211216
212-let aO = fromBase58String(X(aL, M()))
217+let aS = aL(aM, aA)
213218
214-let aP = fromBase58String(getStringValue(aL, N()))
219+let aT = ab(aP, M())
215220
216-let aQ = fromBase58String(getStringValue(aM, O()))
221+let aU = fromBase58String(aT)
217222
218-let aR = getIntegerValue(aK, W())
223+let aV = fromBase58String(getStringValue(aP, N()))
219224
220-let aS = valueOrElse(getInteger(aL, R()), 0)
225+let aW = fromBase58String(getStringValue(aQ, O()))
221226
222-let aT = valueOrElse(getInteger(aL, Q()), 0)
227+func aX () = {
228+ let aY = valueOrElse(getString(aO, "%s%s__control__outOfMarketAddressList"), "")
229+ if ((aY == ""))
230+ then 0
231+ else {
232+ func aZ (ba,bb) = ((ba + valueOrElse(getInteger(aS, Y(bb, aT)), 0)) + assetBalance(addressFromStringValue(bb), aU))
223233
224-let aU = (wavesBalance(aL).regular - aT)
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])
225240
226-let aV = ag(aU, aR)
241+ func bi (bg,bh) = if ((bh >= bd))
242+ then bg
243+ else throw("List size exceeds 4")
227244
228-let aW = (((aS + value(assetInfo(aO)).quantity) - assetBalance(aL, aO)) - assetBalance(aN, aO))
245+ bi(bf(bf(bf(bf(be, 0), 1), 2), 3), 4)
246+ }
247+ }
229248
230-let aX = if ((aW == 0))
249+
250+let bj = getIntegerValue(aO, W())
251+
252+let bk = valueOrElse(getInteger(aP, R()), 0)
253+
254+let bl = valueOrElse(getInteger(aP, Q()), 0)
255+
256+let bm = (wavesBalance(aP).regular - bl)
257+
258+let bn = ak(bm, bj)
259+
260+let bo = 1000000000000
261+
262+let bp = (((bk + value(assetInfo(aU)).quantity) - assetBalance(aP, aU)) - assetBalance(aR, aU))
263+
264+let bq = (bp - bo)
265+
266+let br = if ((bq == 0))
231267 then 0
232- else fraction(aV, h, aW)
268+ else fraction(bn, h, bq)
233269
234-@Callable(aY)
235-func constructor (aZ,ba,bb) = if ((aY.caller != this))
270+@Callable(bs)
271+func constructor (bt,bu,bv) = if ((bs.caller != this))
236272 then throw("not authorized")
237- else [StringEntry(H(), aZ), IntegerEntry(I(), bb)]
273+ else [StringEntry(H(), bt), IntegerEntry(I(), bv)]
238274
239275
240276
241-@Callable(aY)
242-func calcSwapLimitREADONLY (bc) = {
243- let bd = if ((0 >= bc))
277+@Callable(bs)
278+func calcSwapLimitREADONLY (bw) = {
279+ let bx = if ((0 >= bw))
244280 then 0
245281 else {
246- let be = toBigInt(aa(this, I()))
247- let bf = toBigInt(aa(this, J()))
248- let bg = pow(toBigInt(bc), 6, bf, 16, 8, CEILING)
249- toInt(fraction(be, bg, 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))
250286 }
251- let bh = ad(bd, aR)
252- let bi = if ((0 >= bc))
287+ let bB = ah(bx, bj)
288+ let bC = if ((0 >= bw))
253289 then 0
254290 else {
255- let be = toBigInt(aa(this, K()))
256- let bf = toBigInt(aa(this, L()))
257- let bj = toBigInt(aX)
258- let bg = pow(toBigInt(bc), 6, bf, 16, 8, CEILING)
259- toInt(fraction(fraction(be, bg, l), bj, 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))
260296 }
261- $Tuple2(nil, [bd, bh, bi])
297+ $Tuple2(nil, [bx, bB, bC])
262298 }
263299
264300
265301
266-@Callable(aY)
267-func calculateKREADONLY (bk,bl,af,bm,bn) = {
268- let bo = toBigInt(2718281)
269- let bp = 6
270- let bq = valueOrElse(getInteger(aM, "nsbtCurveParam_a"), 3)
271- let br = valueOrElse(getInteger(aM, "nsbtCurveParam_b"), ((3 * h) / 10))
272- let bs = ag(bk, af)
273- let bt = fraction(bs, j, bl)
274- if ((bt > 10678564816))
275- then throw((("BR=" + toString(bt)) + " > 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"))
276312 else {
277- let bu = (bq * (bt - j))
278- let bv = pow(bo, bp, toBigInt(bu), b, c, DOWN)
279- let bw = fraction(toBigInt(br), bv, i)
280- $Tuple2(nil, [bq, br, bs, bt, bu, toString(bv), toString(bw)])
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)])
281317 }
282318 }
283319
284320
285321
286-@Callable(aY)
287-func curveFunctionREADONLY (bx) = {
288- let by = an(invoke(this, "calcNeutinoMetricsREADONLY", nil, nil))
289- let af = aq(by[v])
290- let bk = aq(by[y])
291- let bl = aq(by[A])
292- let bn = aq(by[E])
293- let bm = aq(by[F])
294- let bz = an(invoke(this, "calculateKREADONLY", [bk, bl, af, bm, bn], nil))
295- let bw = parseBigIntValue(as(bz[u]))
296- let bA = ag(bx, af)
297- let bB = toBigInt(bm)
298- let bC = toBigInt((bm - bn))
299- let bD = fraction(toBigInt(bA), m, bw)
300- let bE = fraction(bD, bC, bB)
301- let bF = toInt(fraction(bC, bB, (bE + bB)))
302- let bG = ((bm - bn) - bF)
303- $Tuple2(nil, [bG, bA, bk, bl, bm, bn, aq(bz[o]), aq(bz[p]), aq(bz[q]), af, aq(bz[r]), aq(bz[s]), bz[t], bz[u], toString(bD), toString(bE), bF])
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])
304340 }
305341
306342
307343
308-@Callable(aY)
309-func surfFunctionREADONLY (ae,bH) = if ((0 > ae))
344+@Callable(bs)
345+func surfFunctionREADONLY (ai,aa) = if ((0 > ai))
310346 then throw("amount should be positive")
311347 else {
312- let af = aR
313- let bI = toBigInt(af)
314- let bJ = toBigInt(aU)
315- let bK = aW
316- let bL = toBigInt(bK)
317- if ((aX >= h))
318- then throw((("BR = " + toString(aX)) + ", 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"))
319355 else {
320- let bM = (fraction(bK, j, af) - aU)
321- let bN = (bK - fraction(aU, af, j))
322- let bO = if ((bH == aO))
323- then if ((ae > bN))
324- then bN
325- else ae
326- else if ((bH == n))
327- then if ((ae > bM))
328- then bM
329- else ae
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
361+ else ai
362+ else if ((aa == n))
363+ then if ((ai > cf))
364+ then cf
365+ else ai
330366 else 0
331- let bP = toBigInt(bO)
332- if ((bH == aO))
333- then $Tuple2(nil, [toInt(fraction(fraction(bP, k, bI), (bL - (bP / g)), bJ)), 0, bO, aU, bK, aX, aU, (bK - bO), fraction(ag(aU, af), h, (bK - bO)), (ae - bO), af])
334- else if ((bH == n))
335- then $Tuple2(nil, [toInt(fraction(bL, log(fraction((bJ + bP), m, bJ), 16, f, 16, 16, HALFUP), m)), bO, 0, aU, bK, aX, (aU + bO), bK, fraction(ag((aU + bO), af), h, bK), (ae - bO), af])
367+ let ci = toBigInt(ch)
368+ if ((aa == aU))
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])
370+ else if ((aa == n))
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])
336372 else throw("Unsupported asset")
337373 }
338374 }
339375
340376
341377
342-@Callable(aY)
343-func calcContractNsbtPriceSYSREADONLY (bQ) = {
344- let by = an(invoke(this, "calcNeutinoMetricsREADONLY", nil, nil))
345- let af = aq(by[v])
346- let bk = aq(by[y])
347- let bl = (aq(by[A]) - bQ)
348- let bn = (aq(by[E]) + bQ)
349- let bm = aq(by[F])
350- let bz = an(invoke(this, "calculateKREADONLY", [bk, bl, af, bm, bn], nil))
351- let bR = parseBigIntValue(as(bz[u]))
352- let bS = fraction(toBigInt(bm), m, toBigInt((bm - bn)))
353- let bT = fraction(bS, bS, m)
354- let bU = fraction(bR, bT, m)
355- let bV = toInt(fraction(bU, toBigInt(h), m))
356- let bW = fraction(bV, h, af)
357- $Tuple2(nil, [bV, bW])
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])
358394 }
359395
360396
361397
362-@Callable(aY)
398+@Callable(bs)
363399 func calcNeutinoMetricsREADONLY () = {
364- let bX = (aV - aW)
365- let bY = (aW - aV)
366- let bZ = if ((aW == 0))
367- then 0
368- else (fraction(bX, h, aW) * 100)
369- let ca = value(assetInfo(aP)).quantity
370- let cb = (ca - assetBalance(aM, aP))
371- let cc = value(assetInfo(aQ)).quantity
372- $Tuple2(nil, [aR, aS, aT, aU, aV, aW, bX, bZ, aX, cb, ca, cc])
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])
373404 }
374405
375406
376407
377-@Callable(aY)
378-func getUnstakeComissionAmountREADONLY (ae,cd,ce) = $Tuple2(nil, fraction(ae, pow(2, 0, fraction(-((height - cd)), j, ce), 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))
379410
380411
381412
382-@Callable(aY)
383-func mergeStakesREADONLY (cf,cg,ch,ci,ce) = {
384- let cj = fraction(ch, pow(2, 0, fraction((ci - cg), j, ce), 8, 8, HALFUP), j)
385- let ck = fraction((cf + ch), j, (cf + cj))
386- $Tuple2(nil, (cg + ((e - (ce * log(ck, 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)))
387418 }
388419
389420
390-@Verifier(cl)
391-func cm () = {
392- let cn = makeString(["ExtEEK19nmKj9mCpnWyvEEJFYATLMcVEMvohhUHkyHNm", "Ev5py5FfBQX9cZpYKnfQrTB49Byf8QmpZWeDVRim4yV7", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR"], d)
393- let co = split(valueOrElse(getString(aK, "%s__multisig"), cn), d)
394- let cp = ((((if (sigVerify(cl.bodyBytes, cl.proofs[0], fromBase58String(co[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])))
395426 then 1
396- else 0) + (if (sigVerify(cl.bodyBytes, cl.proofs[1], fromBase58String(co[1])))
427+ else 0) + (if (sigVerify(cB.bodyBytes, cB.proofs[1], fromBase58String(cE[1])))
397428 then 1
398- else 0)) + (if (sigVerify(cl.bodyBytes, cl.proofs[2], fromBase58String(co[2])))
429+ else 0)) + (if (sigVerify(cB.bodyBytes, cB.proofs[2], fromBase58String(cE[2])))
399430 then 1
400- else 0)) + (if (sigVerify(cl.bodyBytes, cl.proofs[3], fromBase58String(co[3])))
431+ else 0)) + (if (sigVerify(cB.bodyBytes, cB.proofs[3], fromBase58String(cE[3])))
401432 then 2
402433 else 0))
403- (cp >= 3)
434+ (cF >= 3)
404435 }
405436

github/deemru/w8io/026f985 
121.46 ms