# Quartz CosmWasm (quartz-contract-core) Quartz CosmWasm (quartz-contract-core) is a high-level framework for building attestation-aware smart contracts on CosmWasm. It provides a robust foundation for developing secure, Intel SGX-based contracts with built-in remote attestation support. ## Features - `Attested` wrapper for a message and its attestation - MockAttestation type for development ease - Session management for secure communication between contract and enclave - Verify DCAP attestations (by calling `dcap-verifier` and `tcbinfo` contracts) - Mock SGX support for testing environments See also the [spec.md](./SPEC.md) ## Installation Add `quartz-contract-core` to your `Cargo.toml`: ```toml [dependencies] quartz-contract-core = { path = "../packages/quartz-contract-core" } ``` ## Usage Here's a basic example of how to use `quartz-contract-core` in your CosmWasm contract: ```rust use quartz_cw::prelude::*; use cosmwasm_std::{DepsMut, Env, MessageInfo, Response}; pub fn execute( deps: DepsMut, env: Env, info: MessageInfo, msg: QuartzExecuteMsg, ) -> Result { match msg { QuartzExecuteMsg::Attested(attested_msg) => { // Handle attested message // Verification of the attestation is done automatically let result = attested_msg.handle(deps, env, info)?; Ok(result) }, // Other message handlers... } } ``` ## Key Components 1. `Attested`: A wrapper struct for holding a message and its attestation. 2. `Attestation`: A trait for attestation types (DCAP, Mock). 3. `HasUserData`: A trait for extracting user data from attestations. 4. `RawHandler`: A trait for handling raw messages. ## Configuration You can enable mock SGX support for testing by adding the `mock-sgx` feature to your `Cargo.toml`: ```toml [dependencies] quartz-contract-core = { path = "../packages/quartz-contract-core", features = ["mock-sgx"] } ``` ## Testing To run the tests: ```sh cargo test ```