Skip to content

Instantly share code, notes, and snippets.

@jtremback
Last active August 11, 2021 22:07
Show Gist options
  • Save jtremback/7c1397c380d6dad93a0449661e11fbb4 to your computer and use it in GitHub Desktop.
Save jtremback/7c1397c380d6dad93a0449661e11fbb4 to your computer and use it in GitHub Desktop.
  • There is chain A and chain B.
  • There is also client state A and client state B.
  • When client state B is installed on chain A, it enables chain A to correctly prove that stuff has happened on chain B, and vice versa.
  • Relayer Jack sends a message to chain A containing client state B and a message to chain B containing client state A. On each chain, these client states are stored under different arbitrary identifiers, which serve as the "network interfaces".
  • For example, chain A stores client state B under "foo" and chain B stores client state A under "bar". When client B at interface foo on chain A proves that a packet was sent from chain B, it is said that the packet arrived at interface foo.
  • Relayer Jack (or anyone else) can continue to maintain the connection by updating the height of each client state etc.
  • The humans can decide if the connection is valid, that is, if packets arriving at interface foo on chain A really represent packets sent from chain B, and if packets arriving at interface bar on chain B really represent packets sent from chain A.
  • Based on this, application developers on A can choose to utilize interface foo and application developers on B can choose to utilize interface bar
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment