Instead of talking about any specific bridge with all the technical details let’s first define what we mean by bridge in general.
A bridge does the following: once tx with some Data is issued on Chain-1, the bridge issues a tx with the same Data on Chain-2 and vice-versa.
Current bridges might not even fit into this
Given the above, we’ve abstracted from any concrete details of bridge implementation.
To make the Protocol (Lido) on Chain-1 (Ethereum) to be able to manage a Module (Lido Satellite) on Chain-2 (Neutron)
For simplicity, let’s make an assumption that we have a single bridge.
In this particular case, everything is dead simple. We just send a message from Protocol on Chain-1 to Chain-2 and Module executes it.
The question is: how Module is able to verify if the Protocol is the sender of the message?
There are two possible solutions to that:
I believe there’s no realistic scenario for verifying the message sender. In general, I know only 3 verification methods (and their combinations):