Skip to main content

Confidential Data Store

Introduction

This document provides an overview of the Confidential Data Store, an essential component of the SUAVE protocol. The Confidential Store serves as a secure and privacy-focused storage system, by exposing a key-value store for safeguarding confidential bid-related data. Only those with appropriate permissions (peekers) can access the stored data, thus ensuring privacy and control.

Architecture Diagram

TODO: high-level diagram

Core Components

ConfidentialStore

From our suave-geth reference implementation, LocalConfidentialStore serves as the foundation for the Confidential Store. Implemented as a thread-safe struct, it provides secure access to bid data.

TODO: This section is very implementation specific, worth it to generalzie a bit

type LocalConfidentialStore struct {
lock sync.Mutex
bids map[suave.BidId]ACData
}

ACData struct holds the bid information and a dataMap that retains the confidential bid data.

type ACData struct {
bid suave.Bid
dataMap map[string][]byte
}

SUAVE Mempool

MempoolOnConfidentialStore operates directly with the Confidential Store, ensuring private handling of bid transactions. It serves as an interim storage for transactions that await blockchain inclusion.

type MempoolOnConfidentialStore struct {
cs suave.ConfidentialStoreBackend
}

Interface Definitions

TODO: Elaborate on other necessary interfaces

Data Management

Initialization & Access Control

To maintain data integrity, the initialization process ensures that only valid bids are registered. Data access is strictly regulated, allowing only authorized peekers to interact with the data.

Store & Retrieve Processes

Confidential data can be safely stored using the Store method and later retrieved with the Retrieve method. Both operations are tightly controlled, ensuring privacy.

Security and Confidentiality

TODO: Document security concerns (confidential data isn't actually confidential right now)