gitmyhub

cpp-sdk

C++ ★ 11k updated 11mo ago

A C++ SDK and CLI for deploying and transacting with Quip post-quantum Ethereum wallet contracts, using Winternitz hash-based signatures instead of standard elliptic curve cryptography.

C++CMakeOpenSSLlibcurlEthereumsetup: hardcomplexity 5/5

This repository is a C++ software development kit (SDK) for interacting with Quip, a system of smart contracts on Ethereum-compatible blockchains. Smart contracts are programs that run on a blockchain and manage cryptocurrency or data according to predefined rules. The Quip contracts are wallet contracts: programs that hold and move funds on the Ethereum network.

The distinctive feature of Quip is its use of post-quantum signatures. Standard Ethereum transactions are signed using elliptic curve cryptography, which could in theory be broken by a sufficiently powerful quantum computer. Quip instead uses Winternitz one-time signatures, a type of signature scheme based on hash functions. Hash functions are generally considered resistant to quantum computers, making Winternitz signatures post-quantum secure.

The SDK provides a C++ library and a command-line tool called quip-cli. With it you can deploy a new Quip wallet, transfer funds, execute calls to other smart contracts, change the wallet's owner, and check balances. Every operation passes a post-quantum public key and signature alongside the standard Ethereum private key, which is how the smart contract verifies the caller is the legitimate owner.

It works with local development networks using the Hardhat development tool, as well as real Ethereum testnets and mainnets including Base. You configure it by pointing it at an RPC URL (a connection to an Ethereum node) and providing the address of the deployed QuipFactory contract.

Building the project requires CMake 3.10 or newer, a C++17 compiler, libcurl, and OpenSSL 3.0 or newer. The project is licensed under AGPL-3.0. A companion library called hashsigs-cpp, also from the Quip Network organization, handles generating the post-quantum keypairs and signatures.

Where it fits