Abric-language-kotlin High Quality May 2026
// 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) // ...
// build.gradle.kts dependencies implementation("fr.ens.abricot:abricot-core:0.5.0") implementation("fr.ens.abricot:backend-mpc:0.5.0") abric-language-kotlin
val protocol = protocol val x = input(alice) val y = input(bob) val z = add(x, y) output(z, charlie) // Not actual syntax but representative of Abricot
// Locally refresh: new_share = old_share + random_share - random_share_from_prev val newShares = parties.indices.map i -> add(oldShares[i], randoms[i]) "secret") val shares = split(s
output(finalShares, parties)
val proactiveRefresh = protocol val parties = listOf(p1, p2, p3) val oldShares = inputShares(parties) // Each party generates a random blinding share val randoms = parties.map randomShare()
// Send random contributions to the next party parties.indices.forEach i -> val next = (i + 1) % parties.size send(randoms[i] to parties[next])
