Grant RFC: Bitcoin SPV Utils

bitcoin-spv for CKB

bitcoin-spv is a set of libraries for working with Bitcoin from other chains. It enables cross-chain communication like swaps, relays, and bridges. Currently, it is available in Solidity, Go, Rust, Python, and ES6+. We’d like to add a C-implementation targeted at CKB.

Summa aims to make cross-chain development simple and ubiquitous. We maintain a suite of open-source libraries that support dozens of chains, and work on interoperability projects with Bitcoin, Etherereum, Cosmos, Near, and Celo.

You can find us on Github, Medium, and Twitter.


  • A minimal C library targeting RISC-V that can:

    • Parse and validate Bitcoin headers
    • Parse, validate, and measure work of Bitcoin header chains
    • Validate Merkle inclusion proofs for transactions
    • Validate pre-parsed Bitcoin transactions
    • Extract information from transaction inputs and outputs
  • Extensive unit-tests to ensure API-compatibility with other versions

  • An example CKB lock-script implementing a Stateless Swap with Bitcoin

    • Allows anyone to sell CKB for BTC in a trust-minimized way
    • Uses Stateless SPVs to verify Bitcoin payment
    • Parses Nervos payment information from the Bitcoin transaction
    • Does not include wallet software or UI capable of making trades
  • A blog post guide to unit testing C using libcheck, and testing CKB Scripts in Rust using the CKB core libraries.

We have a significant amount of work done, and expect to have a complete version with tests and documentation by the end of February.