kofre.protocol

Members list

Concise view

Type members

Classlikes

case class AEAD[S, A](cyphertext: S, metadata: A)

Attributes

Graph
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Self type
case class BoundedCounter(reservations: PosNegCounter, allocations: GrowOnlyCounter, participants: Set[Id])

Attributes

Companion:
object
Graph
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any

Attributes

Companion:
class
Graph
Supertypes
trait Product
trait Mirror
class Object
trait Matchable
class Any
Self type
case class RaftState[T](participants: Set[Id], leaderVotes: Set[Vote], valueProposals: Set[Propose[T]])

Attributes

Companion:
object
Graph
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
object RaftState

Attributes

Companion:
class
Graph
Supertypes
trait Product
trait Mirror
class Object
trait Matchable
class Any
Self type

A Rubis (Rice University Bidding System) is a Delta CRDT modeling an auction system.

A Rubis (Rice University Bidding System) is a Delta CRDT modeling an auction system.

Bids can only be placed on auctions that were previously opened and with a previously registered userId. When an auction is closed, concurrently placed bids are still accepted and may thus change the winner of the auction. To prevent two replicas from concurrently registering the same userId, requests for registering a new userId must be resolved by a central replica using resolveRegisterUser.

This auction system was in part modeled after the Rice University Bidding System (RUBiS) proposed by Cecchet et al. in "Performance and Scalability of EJB Applications", see here

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Self type

Types

type EnCRDT[S] = Set[AEAD[S, VectorClock]]
type Secret = String

Value members

Concrete methods

def decrypt[S, A](aead: AEAD[S, A], key: Secret): Option[S]
def encrypt[S, A](data: S, metadata: A, key: Secret): AEAD[S, A]

Givens

Givens

given encrdtLattice[S]: encrdtLattice[S]

Extensions

Extensions

extension [S](c: EnCRDT[S])
def recombine(key: Secret)(using Lattice[S]): Option[S]
def send(data: S, key: Secret, replicaID: Id): EnCRDT[S]