Skip to content

Integration of the light client #82

@blasrodri

Description

@blasrodri

Signature verification of the block - integration of the circuit

The prover takes:

  • N signatures
  • N messages
  • N public keys

and gives a proof that those N signatures are correct.

We cannot assume that all validators in the validator set will sign correctly (or that they will always sign every block we care about).

So we need a mechanism in which > 2/3 of the total voting power of validators sign.

In that case, we can feed the following code
https://github.com/ComposableFi/yui-ibc-solidity-private/blob/main/contracts/clients/utils/Tendermint.sol#L221C1-L270C6

with the list of public keys that are part of the batch that's been proven.

What does the relayer do?

  1. Assembles a list of commits that have valid signature and sum them all, ensuring that > 2/3 of the voting power has been gathered
  2. Stops when it has N valid signatures that satisfies (1)
  3. Calls the prover with the input from (2)
  4. Sends a proof to the IBC smart contract with the bitmap of the validators that belong to the batch that was submitted to the prover.

IBC Contract

In the verifyCommitLight function

  1. Ensures that the N public keys tally > 2/3 of total voting power.
  2. Call the verifier
  3. if (1) + (2) are correct, returns true, else returns false

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions