tx · 3t2bviu8ud1sLgjme86Z8dMQ6thbTUiF4Dcow9PMJ8Ch

3PG2vMhK5CPqsCDodvLGzQ84QkoHXCJ3oNP:  -0.02500000 Waves

2022.08.24 18:07 [3264198] smart account 3PG2vMhK5CPqsCDodvLGzQ84QkoHXCJ3oNP > SELF 0.00000000 Waves

{ "type": 13, "id": "3t2bviu8ud1sLgjme86Z8dMQ6thbTUiF4Dcow9PMJ8Ch", "fee": 2500000, "feeAssetId": null, "timestamp": 1661352903892, "version": 1, "sender": "3PG2vMhK5CPqsCDodvLGzQ84QkoHXCJ3oNP", "senderPublicKey": "5RM3w4ysmDbtgfswnVNPx7DQkNwVAG3RoxNFHgt6ToNU", "proofs": [ "", "2ChhacbeUfFVKrCnJyMuTvtSa9teLcH8PBU9fyqmqASfaE4RJEaxDzSEXSx8UFed1JkXcY9xHuvAZfa1XjZP52sK", "", "5HDnXveB7PTN54x4Bezrh9P298qZGgCavhkjkYfpjhco4TyWYf1pNfPx2rBwDNbWLtaEwa28TAm8EgL3sqsFE7xQ" ], "script": "base64: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c2J0U3VwcGx5AAAAAAAAAAAKAAAAABRuTWV0cmljSWR4U3VyZlN1cHBseQAAAAAAAAAACwAAAAAMYkZ1bmNJZHhTdXJmAAAAAAAAAAAAAAAAAA1iRnVuY0lkeFdhdmVzAAAAAAAAAAABAAAAAAxiRnVuY0lkeFVzZG4AAAAAAAAAAAIAAAAAFGJGdW5jSWR4UmVzZXJ2ZVN0YXJ0AAAAAAAAAAADAAAAABNiRnVuY0lkeFN1cHBseVN0YXJ0AAAAAAAAAAAEAAAAAA9iRnVuY0lkeEJSU3RhcnQAAAAAAAAAAAUAAAAAEmJGdW5jSWR4UmVzZXJ2ZUVuZAAAAAAAAAAABgAAAAARYkZ1bmNJZHhTdXBwbHlFbmQAAAAAAAAAAAcAAAAADWJGdW5jSWR4QlJFbmQAAAAAAAAAAAgAAAAADGJGdW5jSWR4UmVzdAAAAAAAAAAACQAAAAASYkZ1bmNJZHhXYXZlc1ByaWNlAAAAAAAAAAAKAAAAABlJZHhDb250cm9sQ2ZnTmV1dHJpbm9EYXBwAAAAAAAAAAABAAAAABhJZHhDb250cm9sQ2ZnQXVjdGlvbkRhcHAAAAAAAAAAAAIAAAAAFElkeENvbnRyb2xDZmdScGREYXBwAAAAAAAAAAADAAAAABVJZHhDb250cm9sQ2ZnTWF0aERhcHAAAAAAAAAAAAQAAAAAHElkeENvbnRyb2xDZmdMaXF1aWRhdGlvbkRhcHAAAAAAAAAAAAUAAAAAFUlkeENvbnRyb2xDZmdSZXN0RGFwcAAAAAAAAAAABgAAAAAdSWR4Q29udHJvbENmZ05vZGVSZWdpc3RyeURhcHAAAAAAAAAAAAcAAAAAHElkeENvbnRyb2xDZmdOc2J0U3Rha2luZ0RhcHAAAAAAAAAAAAgAAAAAGUlkeENvbnRyb2xDZmdNZWRpYXRvckRhcHAAAAAAAAAAAAkAAAAAHElkeENvbnRyb2xDZmdTdXJmU3Rha2luZ0RhcHAAAAAAAAAAAAoAAAAAIElkeENvbnRyb2xDZmdHbnNidENvbnRyb2xsZXJEYXBwAAAAAAAAAAALAQAAAA9nZXRTdHJpbmdPckZhaWwAAAACAAAAB2FkZHJlc3MAAAADa2V5CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACm1hbmRhdG9yeSAJAAQlAAAAAQUAAAAHYWRkcmVzcwIAAAABLgUAAAADa2V5AgAAAA8gaXMgbm90IGRlZmluZWQBAAAAEWtleUNvbnRyb2xBZGRyZXNzAAAAAAIAAAAcJXMlc19fY29uZmlnX19jb250cm9sQWRkcmVzcwEAAAANa2V5Q29udHJvbENmZwAAAAACAAAAESVzX19jb250cm9sQ29uZmlnAQAAABRyZWFkQ29udHJvbENmZ09yRmFpbAAAAAEAAAAHY29udHJvbAkABLUAAAACCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAgUAAAAHY29udHJvbAkBAAAADWtleUNvbnRyb2xDZmcAAAAABQAAAANTRVABAAAAGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAAAAAIAAAAKY29udHJvbENmZwAAAANpZHgJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABCQABkQAAAAIFAAAACmNvbnRyb2xDZmcFAAAAA2lkeAkAASwAAAACAgAAAC1Db250cm9sIGNmZyBkb2Vzbid0IGNvbnRhaW4gYWRkcmVzcyBhdCBpbmRleCAJAAGkAAAAAQUAAAADaWR4AAAAAA9jb250cm9sQ29udHJhY3QJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwkBAAAAEWtleUNvbnRyb2xBZGRyZXNzAAAAAAIAAAAjM1A1QmZkNThQUGZOdkJNMkh5OFFmYmNEcU1lTnR6ZzdLZlAAAAAACmNvbnRyb2xDZmcJAQAAABRyZWFkQ29udHJvbENmZ09yRmFpbAAAAAEFAAAAD2NvbnRyb2xDb250cmFjdAAAAAAMbWF0aENvbnRyYWN0CQEAAAAYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAAAAAgUAAAAKY29udHJvbENmZwUAAAAVSWR4Q29udHJvbENmZ01hdGhEYXBwAAAAABBuZXV0cmlub0NvbnRyYWN0CQEAAAAYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAAAAAgUAAAAKY29udHJvbENmZwUAAAAZSWR4Q29udHJvbENmZ05ldXRyaW5vRGFwcAAAAAATc3VyZlN0YWtpbmdDb250cmFjdAkBAAAAGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAAAAAIFAAAACmNvbnRyb2xDZmcFAAAAHElkeENvbnRyb2xDZmdTdXJmU3Rha2luZ0RhcHAAAAAACFByaWNlS2V5AgAAAAVwcmljZQAAAAAOTnNidEFzc2V0SWRLZXkCAAAADWJvbmRfYXNzZXRfaWQAAAAAEk5ldXRyaW5vQXNzZXRJZEtleQIAAAARbmV1dHJpbm9fYXNzZXRfaWQAAAAADlN1cmZBc3NldElkS2V5AgAAAA1zdXJmX2Fzc2V0X2lkAAAAABFCYWxhbmNlTG9ja2Vka0tleQIAAAANYmFsYW5jZV9sb2NrXwAAAAAVV2F2ZXNMb2NrZWRCYWxhbmNlS2V5CQABLAAAAAIFAAAAEUJhbGFuY2VMb2NrZWRrS2V5AgAAAAV3YXZlcwAAAAAYTmV1dHJpbm9Mb2NrZWRCYWxhbmNlS2V5CQABLAAAAAIFAAAAEUJhbGFuY2VMb2NrZWRrS2V5AgAAAAhuZXV0cmlubwAAAAANRmlyc3RPcmRlcktleQIAAAALb3JkZXJfZmlyc3QAAAAAD01hdGhDb250cmFjdEtleQIAAAANbWF0aF9jb250cmFjdAAAAAAVTWluV2F2ZXNGb3JOc2J0QnV5S2V5AgAAABJtaW5fd2F2ZXNfbnNidF9idXkAAAAADk1pbk5zYnRTZWxsS2V5AgAAAA1taW5fbnNidF9zZWxsAAAAABVNaW5XYXZlc0ZvclN1cmZCdXlLZXkCAAAAEm1pbl93YXZlc19zdXJmX2J1eQAAAAAUTWluVXNkbkZvclN1cmZCdXlLZXkCAAAAEW1pbl91c2RuX3N1cmZfYnV5AQAAABJnZXRSb2lCeU9yZGVySWRLZXkAAAABAAAAB29yZGVySWQJAAEsAAAAAgIAAAAQZGVidWdfb3JkZXJfcm9pXwUAAAAHb3JkZXJJZAEAAAAQZ2V0T3JkZXJQcmljZUtleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAAxvcmRlcl9wcmljZV8FAAAAB29yZGVySWQBAAAAEGdldE9yZGVyVG90YWxLZXkAAAABAAAAB29yZGVySWQJAAEsAAAAAgIAAAAMb3JkZXJfdG90YWxfBQAAAAdvcmRlcklkAQAAABBnZXRPcmRlck93bmVyS2V5AAAAAQAAAAdvcmRlcklkCQABLAAAAAICAAAADG9yZGVyX293bmVyXwUAAAAHb3JkZXJJZAEAAAARZ2V0T3JkZXJIZWlnaHRLZXkAAAABAAAAB29yZGVySWQJAAEsAAAAAgIAAAANb3JkZXJfaGVpZ2h0XwUAAAAHb3JkZXJJZAEAAAARZ2V0T3JkZXJTdGF0dXNLZXkAAAABAAAAB29yZGVySWQJAAEsAAAAAgIAAAANb3JkZXJfc3RhdHVzXwUAAAAHb3JkZXJJZAEAAAAWZ2V0T3JkZXJGaWxsZWRUb3RhbEtleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAABNvcmRlcl9maWxsZWRfdG90YWxfBQAAAAdvcmRlcklkAQAAAA9nZXRQcmV2T3JkZXJLZXkAAAABAAAAB29yZGVySWQJAAEsAAAAAgIAAAALb3JkZXJfcHJldl8FAAAAB29yZGVySWQBAAAAD2dldE5leHRPcmRlcktleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAAtvcmRlcl9uZXh0XwUAAAAHb3JkZXJJZAEAAAAWY29udmVydE5ldXRyaW5vVG9XYXZlcwAAAAIAAAAGYW1vdW50AAAABXByaWNlCQAAawAAAAMFAAAABmFtb3VudAUAAAAFTVVMVDgFAAAABXByaWNlAQAAABZjb252ZXJ0V2F2ZXNUb05ldXRyaW5vAAAAAgAAAAZhbW91bnQAAAAFcHJpY2UJAABrAAAAAwUAAAAGYW1vdW50BQAAAAVwcmljZQUAAAAFTVVMVDgBAAAABXRvWDE2AAAAAgAAAAdvcmlnVmFsAAAADW9yaWdTY2FsZU11bHQJAAE8AAAAAwkAATYAAAABBQAAAAdvcmlnVmFsBQAAAAdNVUxUWDE2CQABNgAAAAEFAAAADW9yaWdTY2FsZU11bHQBAAAAB2Zyb21YMTYAAAACAAAAA3ZhbAAAAA9yZXN1bHRTY2FsZU11bHQJAAGgAAAAAQkAATwAAAADBQAAAAN2YWwJAAE2AAAAAQUAAAAPcmVzdWx0U2NhbGVNdWx0BQAAAAdNVUxUWDE2AAAAAA9uZXV0cmlub0Fzc2V0SWQBAAAAILYmKcME9c5TkaQOS3UkL2SMUbH6369UKb1I0h0qsqrRAAAAAAtuc2J0QXNzZXRJZAEAAAAgVe7DvqoL8FDoccgbqm5wnqSxyP5KLrnB8czFaw94l0sAAAAACWlzQmxvY2tlZAkBAAAAFmdldEJvb2xCeUFkZHJlc3NBbmRLZXkAAAACBQAAAA9jb250cm9sQ29udHJhY3QCAAAACmlzX2Jsb2NrZWQAAAAAFW1pbldhdmVzQW1vdW50TnNidEJ1eQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAABVNaW5XYXZlc0Zvck5zYnRCdXlLZXkAAAAAADuaygAAAAAAC21pbk5zYnRTZWxsCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAADk1pbk5zYnRTZWxsS2V5AAAAAAAAD0JAAAAAABVtaW5XYXZlc0Ftb3VudFN1cmZCdXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAAVTWluV2F2ZXNGb3JTdXJmQnV5S2V5AAAAAAAF9eEAAAAAABRtaW5Vc2RuQW1vdW50U3VyZkJ1eQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAABRNaW5Vc2RuRm9yU3VyZkJ1eUtleQAAAAAAAJiWgAAAAAAKZmlyc3RPcmRlcgkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQUAAAANRmlyc3RPcmRlcktleQEAAAANZ2V0T3JkZXJQcmljZQAAAAEAAAACaWQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABBnZXRPcmRlclByaWNlS2V5AAAAAQUAAAACaWQBAAAADWdldE9yZGVyVG90YWwAAAABAAAAAmlkCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAQZ2V0T3JkZXJUb3RhbEtleQAAAAEFAAAAAmlkAQAAAA1nZXRPcmRlck93bmVyAAAAAQAAAAJpZAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAEGdldE9yZGVyT3duZXJLZXkAAAABBQAAAAJpZAEAAAAOZ2V0T3JkZXJTdGF0dXMAAAABAAAAAmlkCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAARZ2V0T3JkZXJTdGF0dXNLZXkAAAABBQAAAAJpZAEAAAATZ2V0T3JkZXJGaWxsZWRUb3RhbAAAAAEAAAACaWQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABZnZXRPcmRlckZpbGxlZFRvdGFsS2V5AAAAAQUAAAACaWQBAAAADGdldFByZXZPcmRlcgAAAAEAAAACaWQJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAA9nZXRQcmV2T3JkZXJLZXkAAAABBQAAAAJpZAEAAAAMZ2V0TmV4dE9yZGVyAAAAAQAAAAJpZAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAD2dldE5leHRPcmRlcktleQAAAAEFAAAAAmlkAQAAAA9nZXRSZXZlcnNlUHJpY2UAAAABAAAABXByaWNlCQAAaQAAAAIJAABoAAAAAgUAAAAFTVVMVDYFAAAABU1VTFQ2BQAAAAVwcmljZQEAAAAWY2FsY05zYnQyV2F2ZXNQcmljZVJhdwAAAAIAAAANc3BlbnRXYXZlc1JhdwAAAA9yZWNlaXZlZE5zYnRSYXcJAAE8AAAAAwkAATYAAAABBQAAAA1zcGVudFdhdmVzUmF3CQABNgAAAAEJAABoAAAAAgUAAAAFTVVMVDYFAAAABU1VTFQ2CQABNgAAAAEFAAAAD3JlY2VpdmVkTnNidFJhdwEAAAAJb3JkZXJEYXRhAAAACAAAAAdvcmRlcklkAAAADXRvdGFsV2F2ZWxldHMAAAAOZmlsbGVkV2F2ZWxldHMAAAAFb3duZXIAAAAGc3RhdHVzAAAAA3JvaQAAAAVwcmljZQAAAAxjdXJyZW50UHJpY2UJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEGdldE9yZGVyUHJpY2VLZXkAAAABBQAAAAdvcmRlcklkCQABpgAAAAEFAAAABXByaWNlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAQZ2V0T3JkZXJUb3RhbEtleQAAAAEFAAAAB29yZGVySWQFAAAADXRvdGFsV2F2ZWxldHMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABZnZXRPcmRlckZpbGxlZFRvdGFsS2V5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AARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAOU3VyZkFzc2V0SWRLZXkJAAJYAAAAAQUAAAAHYXNzZXRJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAVTWluV2F2ZXNGb3JTdXJmQnV5S2V5BQAAABVtaW5XYXZlc0ZvclN1cmZCdXlLZXkJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAFE1pblVzZG5Gb3JTdXJmQnV5S2V5BQAAABRtaW5Vc2RuRm9yU3VyZkJ1eUtleQUAAAADbmlsAAAAAWkBAAAAB2J1eU5zYnQAAAAABAAAAANwbXQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAACXBtdEFtb3VudAgFAAAAA3BtdAAAAAZhbW91bnQEAAAACHdhdmVzUGF5BQAAAAlwbXRBbW91bnQDBQAAAAlpc0Jsb2NrZWQJAAACAAAAAQIAAABZY29udHJhY3QgaXMgYmxvY2tlZCBieSBFTUVSR0VOQ1kgU0hVVERPV04gYWN0aW9ucyB1bnRpbCByZWFjdGl2YXRpb24gYnkgZW1lcmdlbmN5IG9yYWNsZXMDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkCQAAAgAAAAECAAAAEmNhbiB1c2Ugd2F2ZXMgb25seQMJAABmAAAAAgUAAAAVbWluV2F2ZXNBbW91bnROc2J0QnV5BQAAAAlwbXRBbW91bnQJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAABG1pbiAJAAGkAAAAAQkAAGkAAAACBQAAABVtaW5XYXZlc0Ftb3VudE5zYnRCdXkFAAAABU1VTFQ4AgAAAA8gd2F2ZXMgZXhwZWN0ZWQEAAAADG93bmVyQWRkcmVzcwgFAAAAAWkAAAAGY2FsbGVyBAAAAA9uZXV0cmlub01ldHJpY3MJAQAAAAlhc0FueUxpc3QAAAABCQAD/AAAAAQFAAAADG1hdGhDb250cmFjdAIAAAAaY2FsY05ldXRpbm9NZXRyaWNzUkVBRE9OTFkFAAAAA25pbAUAAAADbmlsBAAAAAxjdXJyZW50UHJpY2UJAQAAAAVhc0ludAAAAAEJAAGRAAAAAgUAAAAPbmV1dHJpbm9NZXRyaWNzAAAAAAAAAAAABAAAAAtjdXJ2ZVJlc3VsdAkBAAAACWFzQW55TGlzdAAAAAEJAAP8AAAABAUAAAAMbWF0aENvbnRyYWN0AgAAABVjdXJ2ZUZ1bmN0aW9uUkVBRE9OTFkJAARMAAAAAgUAAAAId2F2ZXNQYXkFAAAAA25pbAUAAAADbmlsBAAAAApuc2J0QW1vdW50CQEAAAAFYXNJbnQAAAABCQABkQAAAAIFAAAAC2N1cnZlUmVzdWx0AAAAAAAAAAAAAwkAAGcAAAACAAAAAAAAAAAABQAAAApuc2J0QW1vdW50CQAAAgAAAAECAAAAD25zYnRBbW91bnQgPD0gMAQAAAASbnNidDJXYXZlc1ByaWNlUmF3CQEAAAAWY2FsY05zYnQyV2F2ZXNQcmljZVJhdwAAAAIFAAAACHdhdmVzUGF5BQAAAApuc2J0QW1vdW50BAAAAANyb2kAAAAAAAAAAAAEAAAADGFtb3VudExlYXNlZAkAA/wAAAAEBQAAABBuZXV0cmlub0NvbnRyYWN0AgAAAAthY2NlcHRXYXZlcwUAAAADbmlsCAUAAAABaQAAAAhwYXltZW50cwMJAAAAAAAAAgUAAAAMYW1vdW50TGVhc2VkBQAAAAxhbW91bnRMZWFzZWQJAAUUAAAAAgkABE4AAAACCQEAAAAJb3JkZXJEYXRhAAAACAkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBQAAAAlwbXRBbW91bnQFAAAACXBtdEFtb3VudAkABCUAAAABBQAAAAxvd25lckFkZHJlc3MFAAAABkZJTExFRAUAAAADcm9pBQAAABJuc2J0MldhdmVzUHJpY2VSYXcFAAAADGN1cnJlbnRQcmljZQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAxvd25lckFkZHJlc3MFAAAACm5zYnRBbW91bnQFAAAAC25zYnRBc3NldElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAAEWRlYnVnX2N1cnZlUmVzdWx0CQEAAAAFdG9TdHIAAAACAgAAAAtjdXJ2ZVJlc3VsdAUAAAALY3VydmVSZXN1bHQFAAAAA25pbAUAAAAKbnNidEFtb3VudAkAAAIAAAAB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Y3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAGYW1vdW50BQAAAAR1bml0BQAAAANuaWwAAAABaQEAAAAgbWluV2F2ZXNBbW91bnROc2J0QnV5U1lTUkVBRE9OTFkAAAAACQAFFAAAAAIFAAAAA25pbAUAAAAVbWluV2F2ZXNBbW91bnROc2J0QnV5AAAAAWkBAAAAH21pbk5zYnRBbW91bnRGb3JTZWxsU1lTUkVBRE9OTFkAAAAACQAFFAAAAAIFAAAAA25pbAUAAAALbWluTnNidFNlbGwAAAABaQEAAAAgbWluV2F2ZXNBbW91bnRTdXJmQnV5U1lTUkVBRE9OTFkAAAAACQAFFAAAAAIFAAAAA25pbAUAAAAVbWluV2F2ZXNBbW91bnRTdXJmQnV5AAAAAWkBAAAAH21pblVzZG5BbW91bnRTdXJmQnV5U1lTUkVBRE9OTFkAAAAACQAFFAAAAAIFAAAAA25pbAUAAAAUbWluVXNkbkFtb3VudFN1cmZCdXkAAAABaQEAAAAHYnV5U3VyZgAAAAMAAAASYXZlcmFnZVByaWNlV2FudGVkAAAAEG1heFRvbGVyYW5jZVBlcmMAAAAJYXV0b1N0YWtlBAAAAAx0ZXN0QWNjb3VudHMJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwIAAAAMdGVzdEFjY291bnRzAgAAAAADAwkBAAAAAiE9AAAAAgUAAAAMdGVzdEFjY291bnRzAgAAAAAJAQAAAAEhAAAAAQkBAAAACGNvbnRhaW5zAAAAAgUAAAAMdGVzdEFjY291bnRzCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgcJAAACAAAAAQIAAAAyQmUgcGF0aWVudCEgTmVlZCB0byB0ZXN0IGluIG1haW5uZXQgYmVmb3JlIGxhdW5jaC4DCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABCQAAAgAAAAECAAAAImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQDCQAAZwAAAAIAAAAAAAAAAAAFAAAAEmF2ZXJhZ2VQcmljZVdhbnRlZAkAAAIAAAABAgAAACVhdmVyYWdlUHJpY2VXYW50ZWQgc2hvdWxk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", "chainId": 87, "height": 3264198, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7Wf7d6yzqwj2VXbcsNLcSWSzBd6XGKQxuV8ZgEFkbWHp Next: none Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = "467d69db0b60c6aac0508e687248cd588338fb34"
4+let a = "049fe7b78896aec03c7fa106ba92e97b6ce41445"
55
66 func b (c) = valueOrElse(getInteger(this, c), 0)
77
5858 let r = k
5959 r
6060 }
61- else throw("fail to cast into Int")
61+ else throw("fail to cast into ByteVector")
6262 }
6363
6464
461461 else if ((co > 0))
462462 then [ScriptTransfer(au, (ch - co), bc), ScriptTransfer(bI.caller, co, bc)]
463463 else [ScriptTransfer(au, (ch - co), bc)]
464- let cr = q(invoke(this, "issueSurf", [cl], nil))
464+ let cr = q(invoke(this, "issueSurf", [cl, ""], nil))
465465 let cs = if (cf)
466466 then {
467467 let ct = invoke(av, "stakeByOriginCaller", nil, [AttachedPayment(cr, cl)])
479479
480480
481481 @Callable(bI)
482-func issueSurf (cl) = {
482+func issueSurf (cl,cu) = {
483483 let cr = fromBase58String(getStringValue(az))
484- if ((bI.caller != this))
485- then throw("issueSurf - permission denied")
486- else $Tuple2([Reissue(cr, cl, true)], cr)
484+ if ((bI.caller == this))
485+ then $Tuple2([Reissue(cr, cl, true)], cr)
486+ else if ((bI.caller == au))
487+ then $Tuple2([Reissue(cr, cl, true), ScriptTransfer(addressFromStringValue(cu), cl, cr)], cr)
488+ else throw("issueSurf - permission denied")
487489 }
488490
489491
490-@Verifier(cu)
491-func cv () = {
492- let cw = makeString(["GJdLSaLiv5K7xuejac8mcRcHoyo3dPrESrvktG3a6MAR", "EYwZmURd5KKaQRBjsVa6g8DPisFoS6SovRJtFiL5gMHU", "DtmAfuDdCrHK8spdAeAYzq6MsZegeD9gnsrpuTRkCbVA", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"], s)
493- let cx = split(valueOrElse(getString(as, "%s__multisig"), cw), s)
494- let cy = ((((if (sigVerify(cu.bodyBytes, cu.proofs[0], fromBase58String(cx[0])))
492+@Verifier(cv)
493+func cw () = {
494+ let cx = makeString(["GJdLSaLiv5K7xuejac8mcRcHoyo3dPrESrvktG3a6MAR", "EYwZmURd5KKaQRBjsVa6g8DPisFoS6SovRJtFiL5gMHU", "DtmAfuDdCrHK8spdAeAYzq6MsZegeD9gnsrpuTRkCbVA", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"], s)
495+ let cy = split(valueOrElse(getString(as, "%s__multisig"), cx), s)
496+ let cz = ((((if (sigVerify(cv.bodyBytes, cv.proofs[0], fromBase58String(cy[0])))
495497 then 1
496- else 0) + (if (sigVerify(cu.bodyBytes, cu.proofs[1], fromBase58String(cx[1])))
498+ else 0) + (if (sigVerify(cv.bodyBytes, cv.proofs[1], fromBase58String(cy[1])))
497499 then 1
498- else 0)) + (if (sigVerify(cu.bodyBytes, cu.proofs[2], fromBase58String(cx[2])))
500+ else 0)) + (if (sigVerify(cv.bodyBytes, cv.proofs[2], fromBase58String(cy[2])))
499501 then 1
500- else 0)) + (if (sigVerify(cu.bodyBytes, cu.proofs[3], fromBase58String(cx[3])))
502+ else 0)) + (if (sigVerify(cv.bodyBytes, cv.proofs[3], fromBase58String(cy[3])))
501503 then 2
502504 else 0))
503- (cy >= 3)
505+ (cz >= 3)
504506 }
505507
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = "467d69db0b60c6aac0508e687248cd588338fb34"
4+let a = "049fe7b78896aec03c7fa106ba92e97b6ce41445"
55
66 func b (c) = valueOrElse(getInteger(this, c), 0)
77
88
99 func d (c) = valueOrElse(getString(this, c), "")
1010
1111
1212 func e (f,c) = valueOrElse(getBoolean(f, c), false)
1313
1414
1515 func g (f,c) = valueOrElse(getString(f, c), "")
1616
1717
1818 func h (f,c) = valueOrElse(getInteger(f, c), 0)
1919
2020
2121 func i (j) = {
2222 let k = j
2323 if ($isInstanceOf(k, "List[Any]"))
2424 then {
2525 let l = k
2626 l
2727 }
2828 else throw("fail to cast into List[Any]")
2929 }
3030
3131
3232 func m (j) = {
3333 let k = j
3434 if ($isInstanceOf(k, "String"))
3535 then {
3636 let n = k
3737 n
3838 }
3939 else throw("fail to cast into String")
4040 }
4141
4242
4343 func o (j) = {
4444 let k = j
4545 if ($isInstanceOf(k, "Int"))
4646 then {
4747 let p = k
4848 p
4949 }
5050 else throw("fail to cast into Int")
5151 }
5252
5353
5454 func q (j) = {
5555 let k = j
5656 if ($isInstanceOf(k, "ByteVector"))
5757 then {
5858 let r = k
5959 r
6060 }
61- else throw("fail to cast into Int")
61+ else throw("fail to cast into ByteVector")
6262 }
6363
6464
6565 let s = "__"
6666
6767 let t = 1000000
6868
6969 let u = 100000000
7070
7171 let v = toBigInt(10000000000)
7272
7373 let w = toBigInt(1000000000000)
7474
7575 let x = toBigInt(10000000000000000)
7676
7777 let y = "canceled"
7878
7979 let z = "new"
8080
8181 let A = "filled"
8282
8383 let B = fromBase58String("WAVES")
8484
8585 let C = 0
8686
8787 let D = 1
8888
8989 let E = 2
9090
9191 let F = 3
9292
9393 let G = 4
9494
9595 let H = 5
9696
9797 let I = 6
9898
9999 let J = 7
100100
101101 let K = 8
102102
103103 let L = 9
104104
105105 let M = 10
106106
107107 let N = 11
108108
109109 let O = 0
110110
111111 let P = 1
112112
113113 let Q = 2
114114
115115 let R = 3
116116
117117 let S = 4
118118
119119 let T = 5
120120
121121 let U = 6
122122
123123 let V = 7
124124
125125 let W = 8
126126
127127 let X = 9
128128
129129 let Y = 10
130130
131131 let Z = 1
132132
133133 let aa = 2
134134
135135 let ab = 3
136136
137137 let ac = 4
138138
139139 let ad = 5
140140
141141 let ae = 6
142142
143143 let af = 7
144144
145145 let ag = 8
146146
147147 let ah = 9
148148
149149 let ai = 10
150150
151151 let aj = 11
152152
153153 func ak (f,c) = valueOrErrorMessage(getString(f, c), (((("mandatory " + toString(f)) + ".") + c) + " is not defined"))
154154
155155
156156 func al () = "%s%s__config__controlAddress"
157157
158158
159159 func am () = "%s__controlConfig"
160160
161161
162162 func an (ao) = split(ak(ao, am()), s)
163163
164164
165165 func ap (aq,ar) = valueOrErrorMessage(addressFromString(aq[ar]), ("Control cfg doesn't contain address at index " + toString(ar)))
166166
167167
168168 let as = addressFromStringValue(valueOrElse(getString(this, al()), "3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP"))
169169
170170 let aq = an(as)
171171
172172 let at = ap(aq, ac)
173173
174174 let au = ap(aq, Z)
175175
176176 let av = ap(aq, ai)
177177
178178 let aw = "price"
179179
180180 let ax = "bond_asset_id"
181181
182182 let ay = "neutrino_asset_id"
183183
184184 let az = "surf_asset_id"
185185
186186 let aA = "balance_lock_"
187187
188188 let aB = (aA + "waves")
189189
190190 let aC = (aA + "neutrino")
191191
192192 let aD = "order_first"
193193
194194 let aE = "math_contract"
195195
196196 let aF = "min_waves_nsbt_buy"
197197
198198 let aG = "min_nsbt_sell"
199199
200200 let aH = "min_waves_surf_buy"
201201
202202 let aI = "min_usdn_surf_buy"
203203
204204 func aJ (aK) = ("debug_order_roi_" + aK)
205205
206206
207207 func aL (aK) = ("order_price_" + aK)
208208
209209
210210 func aM (aK) = ("order_total_" + aK)
211211
212212
213213 func aN (aK) = ("order_owner_" + aK)
214214
215215
216216 func aO (aK) = ("order_height_" + aK)
217217
218218
219219 func aP (aK) = ("order_status_" + aK)
220220
221221
222222 func aQ (aK) = ("order_filled_total_" + aK)
223223
224224
225225 func aR (aK) = ("order_prev_" + aK)
226226
227227
228228 func aS (aK) = ("order_next_" + aK)
229229
230230
231231 func aT (aU,aV) = fraction(aU, u, aV)
232232
233233
234234 func aW (aU,aV) = fraction(aU, aV, u)
235235
236236
237237 func aX (aY,aZ) = fraction(toBigInt(aY), x, toBigInt(aZ))
238238
239239
240240 func ba (j,bb) = toInt(fraction(j, toBigInt(bb), x))
241241
242242
243243 let bc = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
244244
245245 let bd = base58'6nSpVyNH7yM69eg446wrQR94ipbbcmZMU1ENPwanC97g'
246246
247247 let be = e(as, "is_blocked")
248248
249249 let bf = valueOrElse(getInteger(this, aF), 1000000000)
250250
251251 let bg = valueOrElse(getInteger(this, aG), 1000000)
252252
253253 let bh = valueOrElse(getInteger(this, aH), 100000000)
254254
255255 let bi = valueOrElse(getInteger(this, aI), 10000000)
256256
257257 let bj = d(aD)
258258
259259 func bk (bl) = b(aL(bl))
260260
261261
262262 func bm (bl) = b(aM(bl))
263263
264264
265265 func bn (bl) = d(aN(bl))
266266
267267
268268 func bo (bl) = d(aP(bl))
269269
270270
271271 func bp (bl) = b(aQ(bl))
272272
273273
274274 func bq (bl) = d(aR(bl))
275275
276276
277277 func br (bl) = d(aS(bl))
278278
279279
280280 func bs (aV) = ((t * t) / aV)
281281
282282
283283 func bt (bu,bv) = fraction(toBigInt(bu), toBigInt((t * t)), toBigInt(bv))
284284
285285
286286 func bw (aK,bx,by,bz,bA,bB,aV,bC) = [StringEntry(aL(aK), toString(aV)), IntegerEntry(aM(aK), bx), IntegerEntry(aQ(aK), by), StringEntry(aN(aK), bz), IntegerEntry(aO(aK), height), StringEntry(aP(aK), bA), IntegerEntry(("debug_order_currentPrice_" + aK), bC), IntegerEntry(aJ(aK), bB)]
287287
288288
289289 func bD (bE,bF) = (((((((((((((((((((((((((((((((((((bE + "[nsbtAmountRaw=") + toString(o(bF[0]))) + " usdnPayment=") + toString(o(bF[1]))) + " wRaw=") + toString(o(bF[2]))) + " uRaw=") + toString(o(bF[3]))) + " mRaw=") + toString(o(bF[4]))) + " sRaw=") + toString(o(bF[5]))) + " nsbtCurveParam_a=") + toString(o(bF[6]))) + " nsbtCurveParam_b=") + toString(o(bF[7]))) + " wReservesInUsdn=") + toString(o(bF[8]))) + " price=") + toString(o(bF[9]))) + " multBR=") + toString(o(bF[10]))) + " multPower=") + toString(o(bF[11]))) + " multExpInPower=") + m(bF[12])) + " multK=") + m(bF[13])) + " step1=") + m(bF[14])) + " step2=") + m(bF[15])) + " step3=") + toString(o(bF[16]))) + "]")
290290
291291
292292 func bG (bH) = StringEntry("debug_surfResult", makeString(["%d%d%d%d%d%d%d%d%d%d%d", toString(o(bH[O])), toString(o(bH[P])), toString(o(bH[Q])), toString(o(bH[R])), toString(o(bH[S])), toString(o(bH[T])), toString(o(bH[U])), toString(o(bH[V])), toString(o(bH[W])), toString(o(bH[X])), toString(o(bH[Y]))], s))
293293
294294
295295 @Callable(bI)
296296 func constructor (bJ,bK,bg) = if ((bI.caller != this))
297297 then throw("Permission denied")
298298 else [StringEntry(aE, bJ), IntegerEntry(aG, bg), IntegerEntry(aF, bK)]
299299
300300
301301
302302 @Callable(bI)
303303 func constructorV2 (bL,bM,bN) = if ((bI.caller != this))
304304 then throw("Permission denied")
305305 else {
306306 let bO = Issue("SURF", bN, 0, 6, true, unit, 0)
307307 let bP = calculateAssetId(bO)
308308 [bO, StringEntry(az, toBase58String(bP)), IntegerEntry(aH, bL), IntegerEntry(aI, bM)]
309309 }
310310
311311
312312
313313 @Callable(bI)
314314 func buyNsbt () = {
315315 let bQ = value(bI.payments[0])
316316 let bR = bQ.amount
317317 let bS = bR
318318 if (be)
319319 then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles")
320320 else if (isDefined(bQ.assetId))
321321 then throw("can use waves only")
322322 else if ((bf > bR))
323323 then throw((("min " + toString((bf / u))) + " waves expected"))
324324 else {
325325 let bT = bI.caller
326326 let bU = i(invoke(at, "calcNeutinoMetricsREADONLY", nil, nil))
327327 let bC = o(bU[0])
328328 let bF = i(invoke(at, "curveFunctionREADONLY", [bS], nil))
329329 let bV = o(bF[0])
330330 if ((0 >= bV))
331331 then throw("nsbtAmount <= 0")
332332 else {
333333 let bW = bt(bS, bV)
334334 let bB = 0
335335 let bX = invoke(au, "acceptWaves", nil, bI.payments)
336336 if ((bX == bX))
337337 then $Tuple2((bw(toBase58String(bI.transactionId), bR, bR, toString(bT), A, bB, bW, bC) ++ [ScriptTransfer(bT, bV, bd), StringEntry("debug_curveResult", bD("curveResult", bF))]), bV)
338338 else throw("Strict value is not equal to itself.")
339339 }
340340 }
341341 }
342342
343343
344344
345345 @Callable(bI)
346346 func sellNsbt () = if (be)
347347 then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles")
348348 else {
349349 let bQ = value(bI.payments[0])
350350 let bR = bQ.amount
351351 if ((bQ.assetId != bd))
352352 then throw("can use NSBT only")
353353 else if ((bg > bR))
354354 then throw((("min " + toString((bg / t))) + " nsbt expected"))
355355 else {
356356 let bY = o(i(invoke(at, "calcContractNsbtPriceSYSREADONLY", [-(bR)], nil))[0])
357357 if ((t > bY))
358358 then throw((("resulting nsbt price would be < 1 (" + toString(bY)) + " usdn)"))
359359 else {
360360 let bZ = invoke(au, "transferUsdnToUser", [bR, toString(bI.caller)], nil)
361361 if ((bZ == bZ))
362362 then $Tuple2(nil, bY)
363363 else throw("Strict value is not equal to itself.")
364364 }
365365 }
366366 }
367367
368368
369369
370370 @Callable(bI)
371371 func cancelOrder (aK) = {
372372 let bz = bn(aK)
373373 let aU = (bm(aK) - bp(aK))
374374 let ca = toString(bI.caller)
375375 let cb = br(aK)
376376 let cc = bq(aK)
377377 if ((bo(aK) != z))
378378 then throw("invalid order status")
379379 else [StringEntry(aD, if ((bj == aK))
380380 then cb
381381 else bj), StringEntry(aS(cc), cb), StringEntry(aR(cb), cc), StringEntry(aP(aK), y), ScriptTransfer(bI.caller, aU, unit)]
382382 }
383383
384384
385385
386386 @Callable(bI)
387387 func minWavesAmountNsbtBuySYSREADONLY () = $Tuple2(nil, bf)
388388
389389
390390
391391 @Callable(bI)
392392 func minNsbtAmountForSellSYSREADONLY () = $Tuple2(nil, bg)
393393
394394
395395
396396 @Callable(bI)
397397 func minWavesAmountSurfBuySYSREADONLY () = $Tuple2(nil, bh)
398398
399399
400400
401401 @Callable(bI)
402402 func minUsdnAmountSurfBuySYSREADONLY () = $Tuple2(nil, bi)
403403
404404
405405
406406 @Callable(bI)
407407 func buySurf (cd,ce,cf) = {
408408 let cg = valueOrElse(getString(this, "testAccounts"), "")
409409 if (if ((cg != ""))
410410 then !(contains(cg, toString(bI.caller)))
411411 else false)
412412 then throw("Be patient! Need to test in mainnet before launch.")
413413 else if ((size(bI.payments) != 1))
414414 then throw("exactly 1 payment must be attached")
415415 else if ((0 >= cd))
416416 then throw("averagePriceWanted should be positive")
417417 else if ((0 >= ce))
418418 then throw("maxTolerancePerc should be positive")
419419 else if (be)
420420 then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles")
421421 else {
422422 let bQ = bI.payments[0]
423423 let ch = bQ.amount
424424 let ci = valueOrElse(bQ.assetId, B)
425425 if (if ((ci != bc))
426426 then (ci != B)
427427 else false)
428428 then throw("Unsupported payment asset")
429429 else if (if ((ci == bc))
430430 then (bi > ch)
431431 else false)
432432 then throw((("min " + toString((bi / t))) + " USDN expected"))
433433 else if (if ((ci == B))
434434 then (bh > ch)
435435 else false)
436436 then throw((("min " + toString((bh / u))) + " WAVES expected"))
437437 else {
438438 let bH = i(invoke(at, "surfFunctionREADONLY", [ch, ci], nil))
439439 let cj = o(bH[P])
440440 let ck = o(bH[Q])
441441 let cl = o(bH[O])
442442 let cm = toBigInt(cl)
443443 let cn = if ((ci == B))
444444 then (toBigInt(cj) * v)
445445 else (toBigInt(ck) * w)
446446 if ((cn > ((toBigInt((ce + t)) * toBigInt(cd)) * cm)))
447447 then throw((((((("Tolerance " + toString(ce)) + " exceeded: spent ") + (if ((ci == B))
448448 then (toString(cj) + " WAVES")
449449 else (toString(ck) + " USDN"))) + " for ") + toString(cl)) + " SURF"))
450450 else {
451451 let co = o(bH[X])
452452 let cp = if ((ci == B))
453453 then {
454454 let cq = invoke(au, "acceptWaves", nil, [AttachedPayment(unit, (ch - co))])
455455 if ((cq == cq))
456456 then if ((co > 0))
457457 then [ScriptTransfer(bI.caller, co, unit)]
458458 else nil
459459 else throw("Strict value is not equal to itself.")
460460 }
461461 else if ((co > 0))
462462 then [ScriptTransfer(au, (ch - co), bc), ScriptTransfer(bI.caller, co, bc)]
463463 else [ScriptTransfer(au, (ch - co), bc)]
464- let cr = q(invoke(this, "issueSurf", [cl], nil))
464+ let cr = q(invoke(this, "issueSurf", [cl, ""], nil))
465465 let cs = if (cf)
466466 then {
467467 let ct = invoke(av, "stakeByOriginCaller", nil, [AttachedPayment(cr, cl)])
468468 if ((ct == ct))
469469 then nil
470470 else throw("Strict value is not equal to itself.")
471471 }
472472 else [ScriptTransfer(bI.caller, cl, cr)]
473473 ((cp ++ [bG(bH)]) ++ cs)
474474 }
475475 }
476476 }
477477 }
478478
479479
480480
481481 @Callable(bI)
482-func issueSurf (cl) = {
482+func issueSurf (cl,cu) = {
483483 let cr = fromBase58String(getStringValue(az))
484- if ((bI.caller != this))
485- then throw("issueSurf - permission denied")
486- else $Tuple2([Reissue(cr, cl, true)], cr)
484+ if ((bI.caller == this))
485+ then $Tuple2([Reissue(cr, cl, true)], cr)
486+ else if ((bI.caller == au))
487+ then $Tuple2([Reissue(cr, cl, true), ScriptTransfer(addressFromStringValue(cu), cl, cr)], cr)
488+ else throw("issueSurf - permission denied")
487489 }
488490
489491
490-@Verifier(cu)
491-func cv () = {
492- let cw = makeString(["GJdLSaLiv5K7xuejac8mcRcHoyo3dPrESrvktG3a6MAR", "EYwZmURd5KKaQRBjsVa6g8DPisFoS6SovRJtFiL5gMHU", "DtmAfuDdCrHK8spdAeAYzq6MsZegeD9gnsrpuTRkCbVA", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"], s)
493- let cx = split(valueOrElse(getString(as, "%s__multisig"), cw), s)
494- let cy = ((((if (sigVerify(cu.bodyBytes, cu.proofs[0], fromBase58String(cx[0])))
492+@Verifier(cv)
493+func cw () = {
494+ let cx = makeString(["GJdLSaLiv5K7xuejac8mcRcHoyo3dPrESrvktG3a6MAR", "EYwZmURd5KKaQRBjsVa6g8DPisFoS6SovRJtFiL5gMHU", "DtmAfuDdCrHK8spdAeAYzq6MsZegeD9gnsrpuTRkCbVA", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"], s)
495+ let cy = split(valueOrElse(getString(as, "%s__multisig"), cx), s)
496+ let cz = ((((if (sigVerify(cv.bodyBytes, cv.proofs[0], fromBase58String(cy[0])))
495497 then 1
496- else 0) + (if (sigVerify(cu.bodyBytes, cu.proofs[1], fromBase58String(cx[1])))
498+ else 0) + (if (sigVerify(cv.bodyBytes, cv.proofs[1], fromBase58String(cy[1])))
497499 then 1
498- else 0)) + (if (sigVerify(cu.bodyBytes, cu.proofs[2], fromBase58String(cx[2])))
500+ else 0)) + (if (sigVerify(cv.bodyBytes, cv.proofs[2], fromBase58String(cy[2])))
499501 then 1
500- else 0)) + (if (sigVerify(cu.bodyBytes, cu.proofs[3], fromBase58String(cx[3])))
502+ else 0)) + (if (sigVerify(cv.bodyBytes, cv.proofs[3], fromBase58String(cy[3])))
501503 then 2
502504 else 0))
503- (cy >= 3)
505+ (cz >= 3)
504506 }
505507

github/deemru/w8io/3ef1775 
81.68 ms