pokt-network/pocket

[IBC] Implement ICS-23 allowing for the verification of SMT proofs

h5law opened this issue · 0 comments

h5law commented

Objective

Implement ICS-23 (vector commitments) including the serialisable data types that will allow for the proof generation and verification of membership/non-membership proofs based on elements in the IBC stores.

The implementation of ICS-23 should utilise cosmos/ics23 and the types it defines to carry out verification of serialisable proofs without the need for the underlying tree structure.

Origin Document

Issue #794

Goals

  • Integrate cosmos/ics23 proof verification into Pocket V1s IBC module
  • Create helper functions to convert SparseMerkleProof types into the relevent cosmos/ics23 types

Deliverable

  • Implement ICS-23 fully with its various methods and types
    • Utilise cosmos/ics23 where possible
  • Create helper functions to convert SparseMerkleProof objects into the relevant cosmos/ics23 types
  • Add unit tests covering this functionality

Non-goals / Non-deliverables

  • Change any existing SMT proof logic

General issue deliverables

  • Update the appropriate CHANGELOG(s)
  • Update any relevant local/global README(s)
  • Update relevant source code tree explanations
  • Add or update any relevant or supporting mermaid diagrams

Testing Methodology

  • Task specific tests or benchmarks: make ...
  • New tests or benchmarks: make ...
  • All tests: make test_all
  • LocalNet: verify a LocalNet is still functioning correctly by following the instructions at docs/development/README.md
  • k8s LocalNet: verify a k8s LocalNet is still functioning correctly by following the instructions here

Creator: @h5law
Co-Owners: @h5law