This project was born out of a neccessity to overperfom Go relayer for the purpose of exploiting following vulnurability. Since the vulnarability is based on race condition I needed to develop a faster one.
And here main optimization comes from concurrent proof retrieval and client updates. In the original relayer, client updates are prepended to whatever messages we send. Here, client updates are initiated right after the change on the counterparty chain. And while the update is constructed, we assemble the next message and maybe prepend a client update message to it or maybe not if it has been already sent.