Expand description
§arcis
A standard library of types and functions for writing MPC circuits with the Arcis framework. This crate provides the essential building blocks for developing encrypted computations, including type definitions, cryptographic primitives, and utility functions commonly needed in MPC circuit development.
§Usage
use arcis::*;
#[encrypted]
mod circuits {
use arcis::*;
pub struct InputValues {
v1: u8,
v2: u8,
}
#[instruction]
pub fn add_together(input_ctxt: Enc<Shared, InputValues>) -> Enc<Shared, u16> {
let input = input_ctxt.to_arcis();
let sum = input.v1 as u16 + input.v2 as u16;
input_ctxt.owner.from_arcis(sum)
}
}§Main Exports
§Types
Enc<C, T>- Generic encrypted data wrapper.Ccan beSharedorMxe,Tcan be any supported type.Shared- Shared secret cipher implementationArcisX25519Pubkey- A X25519 Pubkey used to encrypt and decrypt messagesMxe- MXE (Multi-party eXecution Environment) cipherPack<T>- Used to pack data so they take less spaceArcisRNG- Random number generator
§Re-exports
- All arcis standard library functions and types
- Procedural macros
#[encrypted]and#[instruction]
Macros§
- arcis_
static_ panic - If this macro is ever run by the interpreter, it will produce a compile error.
Structs§
- Arcis
Ed25519 Signature - Arcis
Math - ArcisRNG
- This struct gives access to randomness operations.
- Arcis
X25519 Pubkey - The Arcis x25519 pubkey.
- Base
Field25519 - Represents integers modulo 2^255 - 19.
- Enc
- Encrypted data that allows to store data on chain which can only be converted by its owner.
- EncData
- Linear
Regression - Logistic
Regression - MXESigning
Key - Mxe
- Owner of secret data. Decrypting data owned by this owner requires participation from all nodes that comprise the MXE cluster.
- Pack
- A struct to pack data together so that they take less place on chain.
- SHA3_
256 - SHA3_
512 - Secret
Key - Serialized
Solana Public Key - Shared
- Owner for shared data between the owner of a public key and the MXE.
- Signing
Key - Solana
Public Key - Verifying
Key
Traits§
- Cipher
- Trait for
SharedandMxe. Provides the.from_arcis(data)method. - Reveal
- Call
.reveal()to tell the compiler to reveal that piece of data. Cannot be called in conditional execution (insideifbranches when the compiler does not know the branch at compile-time).
Functions§
- box_
from_ slice - Creates a
Box<[T]>from a&[T]by cloning all items. - expit
- Standard logistic function.
- logit
- Inverse of the standard logistic function.
Attribute Macros§
- encrypted
- Tells our arcis compiler to create encrypted instructions that mimic the rust module you wrote.
Use
#[instruction]to mark the functions that will be the entry points. - encrypted_
library - Validates an arcis library, trying to find errors.
Allows to build a library that can be used in
#[encrypted]instructions. - instruction
- An
#[instruction]. Should be inside an#[encrypted]module.