cycles-quartz/cosmwasm/README.md
Ethan Buchman 5464e83ac9
Dusterbloom/docs getting started wasmd (#223)
Co-authored-by: Peppi Littera <giuseppe@informal.systems>
2024-09-29 00:52:44 -04:00

2.5 KiB

Quartz CosmWasm Packages

This repository contains a collection of packages designed to facilitate the development of CosmWasm smart contracts for Quartz apps.

Packages

1. quartz-cw

The quartz-cw package offers a high-level framework for building attestation-aware smart contracts by wrapping CosmWasm messages in TEE attestations (e.g. DCAP).

  • Defines Attested<M, A> wrapper for a message and its attestation
  • Supports a MockAttestation type for development ease
  • Implements session management for secure communication between contract and enclave The quartz-cw package handles actual DCAP verification within smart contracts by calling the standalone quartz-dcap-verifier and tcbinfo contracts.

2. quartz-dcap-verifier

Your personal DCAP detective! This package is a standalone smart contract for verifying DCAP attestations that can be called by other contracts.

  • Thin wrapper for standalone smart contract around the functionality provided in the quartz-tee-ra package
  • Provides query and execute entry points for attestation checks

3. quartz-tee-ra

This quartz-tee-ra handles Intel SGX remote attestation for both EPID and DCAP protocols.

  • Verifies EPID and DCAP attestations
  • Provides core types and structures for SGX quotes
  • Implements cryptographic verification of attestation reports

4. tcbinfo

The tcbinfo package manages and verifies TCB information crucial for maintaining enclave security.

  • Stores and retrieves TCB information
  • Verifies TCB signatures and certificates
  • Provides a CosmWasm contract for TCB management

5. wasmd-client

The wasmd-client package offers a Rust client interface for interacting with Wasmd nodes.

  • Defines traits for querying and executing CosmWasm contracts
  • Provides utilities for deploying and interacting with contracts

Examples

Check out the integration_tests modules in each package for usage examples and best practices!

Contributing

We welcome contributions from the community! If you find any issues or have suggestions for improvement, please open an issue or submit a pull request. Make sure to follow the contribution guidelines outlined in the repository.

Contact

If you have any questions or need further assistance, please reach out to us at quartz.support@informal.systems.