Abric-language-kotlin 2021 -

For researchers and advanced practitioners in MPC and ZK, Abricot offers a clean, expressive syntax to prototype and analyze protocols before committing to low-level implementations. As the field of secure computation matures, tools like Abricot may become essential for building the next generation of privacy-preserving applications. Note: Because abricot-language-kotlin may be an internal or less-documented project, always refer to its official repository for the most accurate and up-to-date syntax and features. This article is based on common patterns in cryptographic DSLs and the described architecture of similar systems.

Abricot introduces Secret<T> as a type that cannot be observed by the runtime unless explicitly declassified or reconstructed via MPC. This enables automatic tracking of information flow.

Then write your first protocol:

Write protocols like this:

// After receiving, subtract the incoming random receiveAll() val finalShares = parties.indices.map i -> val prev = (i - 1 + parties.size) % parties.size sub(newShares[i], randoms[prev]) abric-language-kotlin

// Not actual syntax but representative of Abricot style val secretSharing = protocol val s = secretInput(dealer, "secret") val shares = split(s, 3, 5) // 3-out-of-5 sharing send(shares[0] to alice) send(shares[1] to bob) // ...

1. What is Abricot? Abricot (not to be confused with the fruit "abricot" meaning apricot in French) is a research-oriented embedded DSL written in Kotlin. Its primary goal is to allow cryptographers and protocol designers to describe, analyze, and generate implementations of secure multiparty computation (MPC) protocols and zero-knowledge proofs (ZKPs) at a high level of abstraction. For researchers and advanced practitioners in MPC and

// Locally refresh: new_share = old_share + random_share - random_share_from_prev val newShares = parties.indices.map i -> add(oldShares[i], randoms[i])