From dfb09f3beeca3ffb6b148696d7eaaa119ff277e9 Mon Sep 17 00:00:00 2001 From: Sam Gwilym Date: Mon, 3 Jun 2024 12:54:37 +0100 Subject: [PATCH 1/8] Add Earthstar emblem --- willowtest/assets/earthstar/emblem.png | Bin 0 -> 52809 bytes willowtest/specs/earthstar/es6_spec.ts | 5 ++++- 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 willowtest/assets/earthstar/emblem.png diff --git a/willowtest/assets/earthstar/emblem.png b/willowtest/assets/earthstar/emblem.png new file mode 100644 index 0000000000000000000000000000000000000000..19f8b6d3a9d60ec617779a15e8e012e25e683d11 GIT binary patch literal 52809 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 Date: Mon, 3 Jun 2024 13:35:19 +0100 Subject: [PATCH 2/8] Add tag encoding section --- willowtest/specs/earthstar/es6_spec.ts | 42 +++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/willowtest/specs/earthstar/es6_spec.ts b/willowtest/specs/earthstar/es6_spec.ts index cc9a0cd..3d01be8 100644 --- a/willowtest/specs/earthstar/es6_spec.ts +++ b/willowtest/specs/earthstar/es6_spec.ts @@ -1,6 +1,6 @@ import { Expression } from "macro"; import { link, path, pinformative, quotes, site_template } from "../../main.ts"; -import { code, em, hr, img, pre } from "../../../h.ts"; +import { br, code, em, hr, img, pre, var_ } from "../../../h.ts"; import { hsection, table_of_contents } from "../../../hsection.ts"; import { r, rs, R } from "../../../defref.ts"; import { marginale, sidenote } from "../../../marginalia.ts"; @@ -70,6 +70,46 @@ export const es6_spec: Expression = site_template( pinformative("An ", def({id: "es6_identity", singular: "identity identifier"}), " is a ", r("cinn25519"), "<4, 4> public key."), pinformative("A ", def({id: "es6_namespace", singular: "namespace identifier"}), " is a ", r("cinn25519"), "<1, 15> public key."), + + hsection("es6_id_tags", "Tag encodings", [ + + pinformative("Identifiers have (optional) ", def({ + id: "tag_encoding", + singular: "tag encoding", + plural: "tag encodings" + }, 'tag encodings'), ', which encode identifiers as more legible strings, e.g. ', code("@suzy.b3kxcquuxuckzqcovqhtk32ncj6aiixk46zg6pkfocdkhpst4selq"), "."), + + pinformative("To encode an identifier to a ", r('tag_encoding', 'tag,'), + lis( + ["let ", def_value('tag_sigil', "sigil"), ' be ', + lis( + [code('@'), ' if the identifier is a ', r('es6_identity'), ', or,'], + [code('+'), ' if the identifier is a ', r("es6_namespace"), " for a ", r("communal_namespace"), ', or,'], + [code("-"), " if the identifier is a ", r("es6_namespace"), " for an ", r("owned_namespace"),] + ), + ], + [ + "let ", def_value('tag_shortname', "shortname"), " be the the identifier's ", r("cinn_shortname"), "," + ], + [ + "let ", def_value('tag_b32_pub_key', "b32_pub_key"), " be the identifier's ", r("cinn_pk_pk"), ", encoded as a ", link("RFC4648 Base32 string", "https://www.rfc-editor.org/rfc/rfc4648#section-6"), em(" without padding characters and prepended by the character", code('b')), "." + ], + [ + "And interpolate them into a single string of the format", + br(), + code( + "{", + r("tag_sigil", "sigil"), + "}{", + r("tag_shortname", 'shortname'), + "}.{", + r("tag_b32_pub_key", 'b32_pub_key'), + "}" + ) + ] + ), + ), + ]) ]), ]), From 97583eac6ec16927530d9a979b81ec9d1ae79da8 Mon Sep 17 00:00:00 2001 From: Sam Gwilym Date: Mon, 3 Jun 2024 13:48:07 +0100 Subject: [PATCH 3/8] Add friendly path addendum --- willowtest/specs/earthstar/es6_spec.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/willowtest/specs/earthstar/es6_spec.ts b/willowtest/specs/earthstar/es6_spec.ts index 3d01be8..efea21f 100644 --- a/willowtest/specs/earthstar/es6_spec.ts +++ b/willowtest/specs/earthstar/es6_spec.ts @@ -331,6 +331,16 @@ a04fc7...c37466...|91715a...f0eef3...|000000... |000000... |00`), ]), + hsection("es6_friendly_paths", "Friendly paths", [ + pinformative("While Willow's ", rs("Path"), " are defined as sequences of bytestrings, Earthstar defines a subset of these as human-readable ", def({ + id: "es6_friendly_path", + singular: "friendly path", + plural: "friendly paths", + }, "friendly paths"), "."), + pinformative("A path may be considered ", r("es6_friendly_path", 'friendly'), " if every byte of its bytestrings belong to the set of ascii encodings of the following characters: ", code("-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_"), ", that is, alphanumerics and ", code("-"), ", ", code("."), ", and ", code("_"), "."), + pinformative("This makes it possible to provide legible encodings of paths, e.g. ", path('blog', 'recipes', 'chocolate_pizza'), ", and to input paths using a keyboard.") + ]), + img(asset("earthstar/emblem.png"), `An Earthstar emblem: A stylised drawing of three Earthstars (a type of mushroom) sitting on a mossy knoll, with a silhoette of a rabbit in the background, all next to a hand-lettered cursive of the word "Meadowcap".`), ], ); From f17db0fb7f800010284124c2c1cf74e6a994bec8 Mon Sep 17 00:00:00 2001 From: Sam Gwilym Date: Mon, 3 Jun 2024 13:48:51 +0100 Subject: [PATCH 4/8] Remove old path restrictions --- willowtest/specs/earthstar/es6_spec.ts | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/willowtest/specs/earthstar/es6_spec.ts b/willowtest/specs/earthstar/es6_spec.ts index efea21f..adc8a5c 100644 --- a/willowtest/specs/earthstar/es6_spec.ts +++ b/willowtest/specs/earthstar/es6_spec.ts @@ -23,10 +23,6 @@ export const es6_spec: Expression = site_template( "This document specifies version 6 of the ", link("Earthstar protocol", "https://earthstar-project.org/"), ". The protocol behind Earthstar is an instantiation of ", link_name("willow", "Willow"), ": the Earthstar data model is a particular instantiation of the ", link_name("data_model", "Willow data model"), ", using an instantiation of ", link_name("meadowcap", "Meadowcap"), " for access control, and synchronising data with the ", link_name("sync", "WGPS"), "." ), - pinformative( - "In addition to fixing a specific set of protocol parameters for Willow, Earthstar restricts the set of bytes that may appear in ", rs("Path"), " to the ascii encodings of the following characters: ", code("-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_"), ", that is, alphanumerics and ", code("-"), ", ", code("."), ", and ", code("_"), "." - ), - pinformative( "We assume familiarity with Willow and specify Earthstar by giving instantiations of all of Willow's protocol parameters." ), @@ -127,8 +123,7 @@ export const es6_spec: Expression = site_template( ), pinformative( - "The ", r("max_component_length"), " is 64, the ", r("max_component_count"), " is 16, and the ", r("max_path_length"), " is 1024. Remember that Earthstar only allows bytes that are ascii encodings of the following characters in paths: ", code("-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_"), "." - ), + "The ", r("max_component_length"), " is 64, the ", r("max_component_count"), " is 16, and the ", r("max_path_length"), " is 1024."), pinformative( "The type ", r("PayloadDigest"), " is the type of unsigned 256-bit integers, the total order we use is the numeric one." From 3fafaaed4e1650b734e99f7c0b312c19b02263e0 Mon Sep 17 00:00:00 2001 From: Sam Gwilym Date: Mon, 3 Jun 2024 13:57:35 +0100 Subject: [PATCH 5/8] Add Earthstar to specs page --- willowtest/specs/earthstar/es6_spec.ts | 6 ++++-- willowtest/specs/specifications.ts | 8 ++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/willowtest/specs/earthstar/es6_spec.ts b/willowtest/specs/earthstar/es6_spec.ts index adc8a5c..b810f59 100644 --- a/willowtest/specs/earthstar/es6_spec.ts +++ b/willowtest/specs/earthstar/es6_spec.ts @@ -1,9 +1,9 @@ import { Expression } from "macro"; import { link, path, pinformative, quotes, site_template } from "../../main.ts"; -import { br, code, em, hr, img, pre, var_ } from "../../../h.ts"; +import { br, code, em, img, pre } from "../../../h.ts"; import { hsection, table_of_contents } from "../../../hsection.ts"; import { r, rs, R } from "../../../defref.ts"; -import { marginale, sidenote } from "../../../marginalia.ts"; +import { marginale } from "../../../marginalia.ts"; import { link_name } from "../../../linkname.ts"; import { def } from "../../../defref.ts"; import { def_parameter_value, def_value, lis, def_fn } from "../../main.ts"; @@ -15,6 +15,8 @@ export const es6_spec: Expression = site_template( { title: "Earthstar Specification", name: "es6_spec", + status: "proposal", + status_date: "03.06.2024", }, [ table_of_contents(7), diff --git a/willowtest/specs/specifications.ts b/willowtest/specs/specifications.ts index 88e8075..5c2cfa2 100644 --- a/willowtest/specs/specifications.ts +++ b/willowtest/specs/specifications.ts @@ -39,6 +39,14 @@ export const specifications: Expression = site_template( link_name("resource_control", "Multiplexing and Flow Control"), ), ), + + pinformative("And until we build our own fancy cross-domain referencing system, this site is the temporary home for:"), + + nav( + lis( + [link_name("es6_spec", "Earthstar"), ": a recommended set of parameters for the Willow protocol."] + ) + ), surpress_output(def_type("U64", "U64", ["The type of unsigned 64 bit integers, that is, the type of natural numbers greater than or equal to ", code("0"), " and strictly less than ", code("2^64"), "."])), surpress_output(def_type("U8", "U8", ["The type of unsigned 8 bit integers, that is, the type of natural numbers greater than or equal to ", code("0"), " and strictly less than ", code("256"), "."])), From c8839187acaf34c7427bda18190b235176ff01bd Mon Sep 17 00:00:00 2001 From: Sam Gwilym Date: Mon, 3 Jun 2024 16:16:36 +0100 Subject: [PATCH 6/8] It just IS friendly, you fool --- willowtest/specs/earthstar/es6_spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/willowtest/specs/earthstar/es6_spec.ts b/willowtest/specs/earthstar/es6_spec.ts index b810f59..dcff3d6 100644 --- a/willowtest/specs/earthstar/es6_spec.ts +++ b/willowtest/specs/earthstar/es6_spec.ts @@ -334,7 +334,7 @@ a04fc7...c37466...|91715a...f0eef3...|000000... |000000... |00`), singular: "friendly path", plural: "friendly paths", }, "friendly paths"), "."), - pinformative("A path may be considered ", r("es6_friendly_path", 'friendly'), " if every byte of its bytestrings belong to the set of ascii encodings of the following characters: ", code("-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_"), ", that is, alphanumerics and ", code("-"), ", ", code("."), ", and ", code("_"), "."), + pinformative("A path is considered ", r("es6_friendly_path", 'friendly'), " if every byte of its bytestrings belong to the set of ascii encodings of the following characters: ", code("-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_"), ", that is, alphanumerics and ", code("-"), ", ", code("."), ", and ", code("_"), "."), pinformative("This makes it possible to provide legible encodings of paths, e.g. ", path('blog', 'recipes', 'chocolate_pizza'), ", and to input paths using a keyboard.") ]), From 86fdbb01c46c91e5f36a683c70f10d5eae24e733 Mon Sep 17 00:00:00 2001 From: Sam Gwilym Date: Mon, 3 Jun 2024 16:17:49 +0100 Subject: [PATCH 7/8] =?UTF-8?q?Let=E2=80=99s=20be=20cautious.=20For=20now.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- willowtest/specs/specifications.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/willowtest/specs/specifications.ts b/willowtest/specs/specifications.ts index 5c2cfa2..62b0968 100644 --- a/willowtest/specs/specifications.ts +++ b/willowtest/specs/specifications.ts @@ -44,7 +44,7 @@ export const specifications: Expression = site_template( nav( lis( - [link_name("es6_spec", "Earthstar"), ": a recommended set of parameters for the Willow protocol."] + [link_name("es6_spec", "Earthstar"), ": a friendly set of parameters for the Willow protocol."] ) ), From 066998a0161eb53f30b17185391f327368ec7bb0 Mon Sep 17 00:00:00 2001 From: Aljoscha Meyer Date: Mon, 3 Jun 2024 19:25:32 +0200 Subject: [PATCH 8/8] Earthstar spec minor langauge fixes --- willowtest/specs/earthstar/es6_spec.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/willowtest/specs/earthstar/es6_spec.ts b/willowtest/specs/earthstar/es6_spec.ts index dcff3d6..a75d444 100644 --- a/willowtest/specs/earthstar/es6_spec.ts +++ b/willowtest/specs/earthstar/es6_spec.ts @@ -63,7 +63,7 @@ export const es6_spec: Expression = site_template( ]), hsection("es6_ids", "Identifiers", [ - pinformative("Various concepts in Earthstar use ", r("cinn25519"), " as identifiers."), + pinformative("Two concepts in Earthstar use ", r("cinn25519"), " as identifiers."), pinformative("An ", def({id: "es6_identity", singular: "identity identifier"}), " is a ", r("cinn25519"), "<4, 4> public key."), @@ -217,7 +217,7 @@ export const es6_spec: Expression = site_template( )), pinformative( - "The type ", r("SubspaceCapability"), " is the type of ", rs("McSubspaceCapability"), " for out instantiation of Meadowcap. So in particular, the type ", r("sync_subspace_receiver"), " is that of ", rs("es6_identity"), ", and the type ", r("sync_subspace_signature"), " is that of ", r("user_signature_scheme"), " signatures." + "The type ", r("SubspaceCapability"), " is the type of ", rs("McSubspaceCapability"), " for our instantiation of Meadowcap. So in particular, the type ", r("sync_subspace_receiver"), " is that of ", rs("es6_identity"), ", and the type ", r("sync_subspace_signature"), " is that of ", r("user_signature_scheme"), " signatures." ), ]), @@ -250,7 +250,7 @@ export const es6_spec: Expression = site_template( ), pinformative( - "The ", r("transform_payload"), " algorithm deterministically maps each ", r("Payload"), " to its ", link("Bao Combined Encoding", "https://github.com/oconnor663/bao/blob/master/docs/spec.md#combined-encoding-format"), ", excluding its first eight bytes (which would encode the length)." + "The ", r("transform_payload"), " algorithm deterministically maps each ", r("Payload"), " to its ", link("Bao Combined Encoding", "https://github.com/oconnor663/bao/blob/master/docs/spec.md#combined-encoding-format"), ", excluding the first eight bytes of the combined encoding (which would encode the length)." ), pinformative( @@ -267,7 +267,7 @@ export const es6_spec: Expression = site_template( ]), hsection("es6_wgps_encoding", "Encoding Parameters", [ - pinformative("Whenever any encoding function needs to encode a ", r("cinn25519"), "public key, use ", r("encode_cinn_pk"), ". Whenever any encoding functino needs to encode a signature or a digest, just use the signature or the digest itself (they already are sequences of bytes)."), + pinformative("Whenever any encoding function needs to encode a ", r("cinn25519"), "public key, use ", r("encode_cinn_pk"), ". Whenever any encoding function needs to encode a signature or a digest, just use the signature or the digest itself (they already are sequences of bytes)."), pinformative( "The ", r("encode_group_member"), " function encodes each ", r("PsiGroup"), " member (i.e., each Edwards25519 curve point) ", link("according to RFC8032", "https://datatracker.ietf.org/doc/html/rfc8032#section-5.1.2"), "." @@ -278,7 +278,7 @@ export const es6_spec: Expression = site_template( ), pinformative( - "The ", r("encode_sync_subspace_signature"), " function maps each ", r("sync_subspace_signature"), "(i.e., each ed25519 signature, which is already a sequence of bytes) to itself." + "The ", r("encode_sync_subspace_signature"), " function maps each ", r("sync_subspace_signature"), " (i.e., each ed25519 signature, which is already a sequence of bytes) to itself." ), pinformative( @@ -286,7 +286,7 @@ export const es6_spec: Expression = site_template( ), pinformative( - "The ", r("encode_sync_signature"), " function maps each ", r("sync_signature"), "(i.e., each ed25519 signature, which is already a sequence of bytes) to itself." + "The ", r("encode_sync_signature"), " function maps each ", r("sync_signature"), " (i.e., each ed25519 signature, which is already a sequence of bytes) to itself." ), pinformative( @@ -298,11 +298,11 @@ export const es6_spec: Expression = site_template( ), pinformative( - "The ", r("encode_dynamic_token"), " function maps each ", r("DynamicToken"), "(i.e., each ed25519 signature, which is already a sequence of bytes) to itself." + "The ", r("encode_dynamic_token"), " function maps each ", r("DynamicToken"), " (i.e., each ed25519 signature, which is already a sequence of bytes) to itself." ), pinformative( - "The ", r("encode_fingerprint"), " function maps each ", r("Fingerprint"), "(which is already a sequence of bytes) to itself." + "The ", r("encode_fingerprint"), " function maps each ", r("Fingerprint"), " (which is already a sequence of bytes) to itself." ), ]), @@ -315,7 +315,7 @@ export const es6_spec: Expression = site_template( a04fc7...c37466...|91715a...f0eef3...|000000... |000000... |00`), pinformative( - marginale(["We will add offset conversion formulae here once we get to implementing this ourselves. Right now, the Earthstar implementation is a beta version that performs no payload transformations. If you want to implement Bao support for Earthstar/Willow, whether in an implementation of your own, or in the reference implementation, please reach out."]), + marginale(["We will add offset conversion formulae here once we get to implementing this ourselves. Right now, the Earthstar implementation is a beta version that performs no payload transformations. If you want to implement Bao support for Earthstar/Willow, whether in an implementation of your own or in the reference implementation, please reach out."]), "A pre-order offset of ", code("0"), " corresponds to byte zero (the start of the root parent node), a pre-order offset of ", code("1"), " corresponds to byte 64 (the start of the left parent node), a pre-order offset of ", code("2"), " corresponds to byte 128 (the start of the first chunk), a pre-order offset of ", code("3"), " corresponds to byte 1152 (the start of the second chunk), and a pre-order offset of ", code("4"), " corresponds to byte 3176 (the start of the last chunk). It is impossible to specify positions ", em("inside"), " a parent node or chunk.", ),