The Willow Protocol

When I came across the willow protocol, I was astonished by its simplicity and how it approaches one of the modern, distributed computing problem.

And, did I mention their website is probably the best example for how to write protocol specifications. Pardon me RFCs!

What is the need of this protocol. Following lines definitely caught my eyes:

We made Willow to be a credible solution to digital networking in an uncertain era. It must be resilient in the times we’re forced to scale down, whether that’s due to a temporary loss of signal, natural disaster, or war.

As a person who deals with natural disaster related events – I got keen to understand how it works and possibly how to utilize this in our projects.

I headed to their page that compares itself with other protocols such as IPFS, Velid, Content-Addressed Storage and several many.

Willow is a family of specifications.

  1. Data Model – a system for giving structured names to bytestrings.
  2. Meadowcap – A capability system for controlling access to willow data.

func StripString(s: String) => String {

}

Willow Data Model

So you define a meaningful, hierarchial names to arbitraty sequence of bytes. And such meaninful names live in subspaces. Willow allows various ways of managing who gets to write to which subspace, from simple per-user access control to sophisticated capability of streams.

Willow model essentially a three-dimensional data model.

So imagine a three dimensional array on which the sequence of bytestrings live.

Now to further isolate, Willow also has namespaces. Imagine that you want to share a bunch of photos with your nears and dears but some to only your family members. The namespaces provide a very interesting isolation to the subspaces.

insert a diagram

Let’s understand some more definitions:

Definitions

One thing I like about Willow is that it does not make any assumptions. Rather it leaves entirely upto you. For example – what if I want to keep the namespaces hidden, meaning, I don’t want it to have any human readable value to it. Rather a bunch of garbish text. It is possible as Willow does not assume anything.

This is way Willow could be called as higher order protocol

Parameters

Capabilities