Briolette is an experimental framework for researching offline digital currency designs.

Overview

Briolette - experimental framework for offline-enabled digital currency

Briolette is an experimental framework for researching offline digital currency designs.  This project is a proof-of-concept only and does not reflect a completed system nor a finalized design.  Its purpose is solely for research and experimentation. This is not an officially supported Google product.

Overview

At a high level, the current proof of concept is striving to enable cash-like properties:

  • Direct value exchanges between parties without an online intermediary
  • Transactions settle with near-finality
  • Settled funds may be instantly re-spent
  • Traceability is based on the exchanged coins, not the holder’s identity or account
  • Small value transactions are not prohibitively expensive to process

while realizing the benefits of being digital:

  • Direct exchange can be performed online as easily as offline
  • Multiple types of funds may exist in parallel (such as sovereign tokens and conditional tokens)
  • Business logic may be attached to transacted funds where limited respendability and online intermediation is acceptable 

There are a number of features that make up briolette's core design:

  • The cryptographic protocol can evolve – it must provide a set of core functionality to the surrounding system and be realizable on existing hardware, if possible.
  • Detecting and revoking double spenders is scalable – revocation can occur at different points in the system which enable hierarchical revocation capabilities.
  • Offline and online are one system – by creating one system with direct exchange, system operation controls and incentives create one large scale system to reason about, not two.

Every "wallet" carries a private secret which can have its public portion, or credential, randomized. Transference of tokens depends on valid credentials which are locked in, or committed to, by the prior holder of the token upon transference.  The prior holder must transfer the token using the credential that they themselves received the token on.  This creates a verifiable chain of history between these random credentials that are not directly linked to the participants. The credentials themselves have controlled linkability which provides different privacy properties from transactional and global system perspectives.  The current prototype is built around ECDAA, using this implementation.  Further research on the underlying crypto approach under way to improve on ECDAA.

See the theory of operation for a more detailed description of how the system operates.

See the design concepts for a more detailed discussion of the underlying design objectives and how the proof of concept attempts to meet them.

Building

System dependencies

Your system will need to have the Rust programming language installed -- version 1.68.0 or newer.

Additionally, see xaptum/ecdaa for any system requirements for building AMCL or ECDAA, such as libtss2.

Building

The easiest way to build is to use the utils.sh bash helper:

cd src
source utils.sh
build_external
build

Running

If you are using utils.sh, simply run

start_servers

This will start all the servers in an order that ensures all data creation occurs in the right order. Additionally, it will perform one 2 token transaction.

Simulation

src/simulation/ carries a simple simulation system. To build:

cd src/simulation/briolettesim
cargo build

To run: ./target/debug/briolette-sim

All scenario configuration is currently hard-coded.

Contributions, etc

Please see docs for details.

You might also like...
An experimental fork of a16z's Helios Ethereum client which can run its network traffic over the Nym mixnet

Helios (Nym mixnet fork) Helios is a fully trustless, efficient, and portable Ethereum light client written in Rust. This fork of Helios includes nasc

experimental package manager for node.js

pacquet Experimental package manager for node.js written in rust. Disclaimer: This is mostly a playground for me to learn Rust and understand how pack

CosmOS - experimental operating system written in Rust.

CosmOS A simple operating system written in Rust. Table of Contents CosmOS Setup QEMU Run OS dev resources General Bootloader Setup Linux Arch pacman

Easy to use cryptographic framework for data protection: secure messaging with forward secrecy and secure data storage. Has unified APIs across 14 platforms.
Easy to use cryptographic framework for data protection: secure messaging with forward secrecy and secure data storage. Has unified APIs across 14 platforms.

Themis provides strong, usable cryptography for busy people General purpose cryptographic library for storage and messaging for iOS (Swift, Obj-C), An

An extensible open-source framework for creating private/permissioned blockchain applications

Exonum Status: Project info: Community: Exonum is an extensible open-source framework for creating blockchain applications. Exonum can be used to crea

Bindings to the macOS Security.framework

macOS/iOS Security framework for Rust Documentation Bindings to the Apple's Security.framework. Allows use of TLS and Keychain from Rust. License Lice

⚓ Solana Sealevel Framework

Anchor ⚓ Anchor is a framework for Solana's Sealevel runtime providing several convenient developer tools. Rust eDSL for writing Solana programs IDL s

A framework for creating PoC's for Solana Smart Contracts in a painless and intuitive way

Solana PoC Framework DISCLAIMER: any illegal usage of this framework is heavily discouraged. Most projects on Solana offer a more than generous bug bo

Microunit is a decentralized unit orchestration framework.

Microunit is a decentralized unit orchestration framework.

Owner
Google
Google ❤️ Open Source
Google
Rust implementation of {t,n}-threshold ECDSA (elliptic curve digital signature algorithm).

Multi-party ECDSA This project is a Rust implementation of {t,n}-threshold ECDSA (elliptic curve digital signature algorithm). Threshold ECDSA include

[ZenGo X] 706 Jan 5, 2023
An open source, high performance limit order book for the Seaport smart contracts. Implemented in Rust using ethers-rs, this offers a turnkey option for digital asset marketplaces.

Quay Quay is an open source, high performance backend for the Seaport smart contracts. The project is implemented in Rust, using Postgres as a storage

Valorem Labs Inc. 169 Jun 23, 2023
Bitcoin PSBT signer, descriptor exporter and more for offline devices.

KeeChain Description KeeChain is a Bitcoin application to transform your offline computer in an AirGap Signing Device (aka Hardware Wallet). Getting s

Yuki Kishimoto 3 Dec 15, 2022
Glommio Messaging Framework (GMF) is a high-performance RPC system designed to work with the Glommio framework.

Glommio Messaging Framework (GMF) The GMF library is a powerful and innovative framework developed for facilitating Remote Procedure Calls (RPCs) in R

Mohsen Zainalpour 29 Jun 13, 2023
EXPERIMENTAL: Bitcoin Core Prometheus exporter based on User-Space, Statically Defined Tracing and eBPF.

bitcoind-observer An experimental Prometheus metric exporter for Bitcoin Core based on Userspace, Statically Defined Tracing and eBPF. This demo is ba

0xB10C 24 Nov 8, 2022
Experimental binary transparency for pacman with sigstore and rekor

pacman-bintrans This is an experimental implementation of binary transparency for pacman, the Arch Linux package manager. This project was originally

null 80 Dec 23, 2022
An experimental rust zksnarks compiler with embeeded bellman-bn128 prover

Za! An experimental port of the circom zk-SNARK compiler in Rust with embedded bellman-bn128 prover. I created it as a PoC port of the existing JavaSc

adria0.eth 39 Aug 26, 2022
Rust implementation of the Matter protocol. Status: Experimental

matter-rs: The Rust Implementation of Matter Build Building the library: $ cd matter $ cargo build Building the example: $ cd matter $ RUST_LOG="matt

Connectivity Standards Alliance 12 Jan 5, 2023
Write Extism plugins in JavaScript (Experimental)

Extism JavaScript PDK Note: This is very experimental. If you are interested in helping or following development, join the #js-pdk room in our discord

Extism 6 Jan 18, 2023
Avalanche primitive types in Rust (experimental)

AvalancheGo Compatibility Crate Version(s) AvalancheGo Version(s) Protocol Version v0.0.134-155 v1.9.2,v1.9.3 19 v0.0.156-176 v1.9.4 20 v0.0.177-200 v

Ava Labs 26 Feb 4, 2023