-
Notifications
You must be signed in to change notification settings - Fork 80
Authorities should depend on a ValidatorSet contract #33
Comments
since we could replace |
the deposit case should be fairly straightforward: since the validator set exists on retrying once Auras finality is exposed over RPC ( |
so far i see two approaches to solving the withdraw case:
i'll write more soonish |
search for "validator set chain" to skip to the proposed solution currently the bridge uses equal fixed validator sets on both sides. this doesn't work anymore if the set on
static information. no relayit would be nice and simple if we could give one could probably achieve this with zk-proofs. we need to update the information any new information needs to be verifyable by the previous information assumptions
naive solutionhave a process that listens to all changes to this introduces race conditions. imagine that the bridge processes are offline for long enough (failure, ddos, etc) we need a better solution. "validator set chain"let let let let let assuming if the untrusted party also provides
obviously for any handoffs chain. each handoff builds on the previous. on each care must be taken that if the relayer for the validator set updates goes down it can simply if the process relaying the changes to the validator set goes down pros
cons
open questionstransaction on who pays for gas? since the validator set doesn't change too often we can run the relay and top it up if needed. |
In particular, this will require writing some kind of daemon for validators to run to create the signatures. The double-handoff problem you touch on briefly is a little worse than you describe: Accepting the first handoff relayed to the home chain as canonical causes a race between malicious foreign-chain validators and the rest of the world. So instead handoffs should be accepted for some time period after the first for an epoch to reduce timing constraints. There might be an incentive misalignment similar to the nothing-at-stake problem: the message can only safely be relayed once the change of validators on the foreign chain has been finalized. But once that change is finalized, those validators no longer have an obligation to behave honestly. So there isn't much reason for them not to give a handoff of a bad set or not give one at all. What we could do is
I think this establishes an equilibrium where the validators are incentivized to create only the single valid handoff. Unfortunately creates a delay of I haven't thought of a recovery strategy for what can happen if two competing (but both "valid") handoffs are relayed to the home chain. Followers of the foreign chain can reconcile the fork under a weakly-subjective security model, as most of the network will already have finalized the first handoff and will refuse to reorganize to the second. But the main chain is incapable of checking finality proofs on the foreign chain, so it can't reconcile the fork. although even if we had a smart contract light client of the foreign chain I don't think the issue is solved -- both forks are "at-a-glance" valid and it becomes a race between the malicious validators and the rest of the world again. Given that that scenario can only occur iff the current validator set are irrational (at least according to this equilibrium) I think we can ignore it for now. But a mitigation strategy would still be really useful in case it doesn't hold against second-order concerns. |
https://github.com/paritytech/parity/wiki/Validator-Set#contracts
The text was updated successfully, but these errors were encountered: