Skip to content
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
107 lines (59 sloc) 3.31 KB

Holochain Whitepaper

Two canoncial types of Distributed Systems (with overlap being common):

agent centric

Agents share independently evolving data realities.

  • Holochain
  • git


Nodes gossip to create shared data reality.

  • Bitcoin


Ν = {n1,n2,...nn}

N nodes or agents

S ∋ {σ1,σ2...,σi }

Sn is the state of node n

σiSn : σi = {Xi,Di}

Xi is a hash-chain

D is a set of non-hash chain data elements

H is a cryptographically secure hash function

t is a transaction

τ is a state transition function

τ(σi,t) = (τx(Xi,t), τD(Di,t))

τx(Xi,t) = Xi+1

Xi+1 = Xi ∪ {xi+1} = {x1,...,xi,xi+1}

x1 = {h,t}

h = {H(t),y}

y = {H(xj) | j < i}

h is a header

Di+1 = τD(σi, t)

V is a validation ; and V(t,v) verifies the validity of t and only if valid calls a state transition function, τ, for t.

v is extra validation data

I is the input or stimulus function

I(t) takes t, evaluates t using V, if valid, uses τ to transform S

P is a processing function

P(x) can create t and trigger V and τ; and P is triggered by state changes or passage of time.

C is a channel that allows all nodes in N to communicate, where each n has a unique address An

An is a unique address for n

{C,N} is the network

E is the evolution function

E(i) changes functions V,I,P

Formalism Usage

Model separately key aspects of agents.

  1. Separate agent's state into {X,D}. Part X (cryptographically secured hash-chain) and part D (arbitrary data)
  2. V(t,v) - Validate V new transactions t
  3. τX and τD to change internal S or {X,D} of the agent

Distinguish between:

  1. τ(t,v) triggered by external events, stimuli, received through I(t)
  2. node's internal processing P(x) ∴ (V || τ) called with t being internally created

Key Properties of Distributed Systems

An is the address for Node n

pkn is the public key for Node n

  1. trusted — Call N for which any function T, V, P, E are reliably known and known to be identical for N
  2. secure — Call channel C where messages in transit can be trusted to arrive exactly as sent
  3. authenticatedAn = H(pkn) — all messages include a digital signature of the message signed by sender
  4. content addressable — data element accessible by it's hash

trustless system — Assume untrusted nodes, use cryptography, H, to verify, V, trust

intrinsic data integrity — locus of trust is on state data instead of other nodes

You can’t perform that action at this time.