From 733e1577dcd9f25a944ce06ecb4daf0c859a59ae Mon Sep 17 00:00:00 2001 From: hanfel-dovned <95324536+hanfel-dovned@users.noreply.github.com> Date: Tue, 23 Jun 2026 11:14:45 -0700 Subject: [PATCH 1/5] Add UIP-137 draft for Suite C Comet self-attesation packets --- .DS_Store | Bin 0 -> 6148 bytes UIPS/UIP-0137.md | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 .DS_Store create mode 100644 UIPS/UIP-0137.md diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..37391ca61f5fd50487a19eaa4d6819c880f4bbb0 GIT binary patch literal 6148 zcmeHKJx{|h5IvV5g1U5M^vrW|?`ztsT5j4UY~|D2Vt#P>e3tuHKl-;fJ#Lt8&by#FT~M9nEe=on zzJA_O^Z0UCTV9K8+ONDr{w(i)I0OHi0n}`ka;)gRGvEw31D_1=`4G_< zlVPVQM+Z820ssq`MWD;&78uz8Oop8zERdj~Kn)G{#0VM=d$f7Uuv64<3X&P?Smuw% zOVFz|g(%Z0Bt`F?0cRj*U{8k=uK(xwl?EUAd5Djk0cT*x7zjmGS2KK+)z)vH$F(-1 wU7@k?yp9zJbScF^Da9D@IdUXU^+(p>PllZ$uflc-2l_=o2=UGt_yq>u0e_M~3IG5A literal 0 HcmV?d00001 diff --git a/UIPS/UIP-0137.md b/UIPS/UIP-0137.md new file mode 100644 index 0000000..004084a --- /dev/null +++ b/UIPS/UIP-0137.md @@ -0,0 +1,43 @@ +--- +uip: "137" +title: Self-Attestation Packets for Suite C Comets +description: Suite C comet self-attestation for expanded PKI pointers +author: ~hanfel-dovned +status: Draft +type: Standards Track +category: Kernel +created: 2026-06-23 +--- + +## Abstract + +UIP-136 introduced Suite C comets as Urbit IDs whose networking keys are tweaked with a pointer to an arbitrary PKI. Upon contact with a Suite C comet, a ship will check Jael for that comet's presence and ack or nack accordingly. + +However, this design requires ships to run background watcher agents for each PKI, which depending on PKI implementation may be inefficient or even impossible. To solve this, we introduce a self-attestation packet for Suite C comets, akin to the self-attestation packet for Suite B comets, containing additional PKI pointer data that makes it possible to more generally validate identity on first contact. + +## Motivation + +In Groundwire's initial Bitcoin protocol, we expected all ships to index and parse Bitcoin blocks to find Groundwire PKI events encoded as on-chain data. However, we've discovered that most Bitcoin wallets don't allow this on-chain data to be broadcast in the first place, requiring us to either build a bespoke wallet app for comet custody (with inevitably worse security than the state of the art and incompatible UX for existing Bitcoiners) or change how we encode data on-chain. + +In a nutshell, we can enforce that all Bitcoin comets do in fact attest to their identity on Bitcoin by secretly encoding PKI operations within Taproot commit transactions and then sharing Merkle proofs of those attestations' presence off-chain without ever revealing the operation on-chain. We can store this sequence of Merkle proofs on the user's ship and send them to new peers on first contact in a self-attestation packet. + +## Specification + +Upon receiving a Suite C self-attestation packet, Ames needs to pass it to some validation agent to either accept it or reject it as a valid Urbit ID. The sending comet's tweaked networking key contains a `domain=@tas` corresponding to this agent. + +A mapping from domain to agent is set by passing an `%anex` task to Jael, which we introduce in this UIP (alongside tasks for deleting and modifying mappings). Upon installing a new PKI handler desk, its main agent will typically set this in `++on-init`. + +When Ames receives a Suite C self-attestation packet from an alien, it passes it to Jael via the newly-introduced `%writ` task. Jael then either dispatches it to the appropriate agent or nacks if the domain is non-existent. The agent then performs the validation and gives the new point's data to Jael as a `%fact`. When the sending ship tries to contact the receiving ship again, the receiving ship's Ames will see it in Jael and thus will establish normal contact. + +## Backwards Compatibility + +This update will network breach the existing few dozen Groundwire comets. This is consistent with the premise of the Groundwire alpha launch which specified that identities would not yet be permanent. + +## Status + +An [in-progress implementation branch](https://github.com/gwbtc/urbit/compare/gw/next/kelvin/408...cyc/cc_) exists in the Groundwire foundation's urbit repo. + +## Copyright + +Copyright and related rights waived via CC0. + From 60ee7d04405003dfd76bd10332df77b8666add5c Mon Sep 17 00:00:00 2001 From: hanfel-dovned <95324536+hanfel-dovned@users.noreply.github.com> Date: Tue, 23 Jun 2026 11:15:01 -0700 Subject: [PATCH 2/5] Add UIP-137 draft for Suite C Comet self-attesation packets --- .DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 37391ca61f5fd50487a19eaa4d6819c880f4bbb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKJx{|h5IvV5g1U5M^vrW|?`ztsT5j4UY~|D2Vt#P>e3tuHKl-;fJ#Lt8&by#FT~M9nEe=on zzJA_O^Z0UCTV9K8+ONDr{w(i)I0OHi0n}`ka;)gRGvEw31D_1=`4G_< zlVPVQM+Z820ssq`MWD;&78uz8Oop8zERdj~Kn)G{#0VM=d$f7Uuv64<3X&P?Smuw% zOVFz|g(%Z0Bt`F?0cRj*U{8k=uK(xwl?EUAd5Djk0cT*x7zjmGS2KK+)z)vH$F(-1 wU7@k?yp9zJbScF^Da9D@IdUXU^+(p>PllZ$uflc-2l_=o2=UGt_yq>u0e_M~3IG5A From b62a4badee060aabd9c00c0ba209460d3d31eb7f Mon Sep 17 00:00:00 2001 From: hanfel-dovned <95324536+hanfel-dovned@users.noreply.github.com> Date: Wed, 24 Jun 2026 14:52:10 -0700 Subject: [PATCH 3/5] rename UIP --- UIPS/{UIP-0137.md => UIP-comet-attestation.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename UIPS/{UIP-0137.md => UIP-comet-attestation.md} (100%) diff --git a/UIPS/UIP-0137.md b/UIPS/UIP-comet-attestation.md similarity index 100% rename from UIPS/UIP-0137.md rename to UIPS/UIP-comet-attestation.md From 7468e7c82c174c241d354b97bfbe4961a619891b Mon Sep 17 00:00:00 2001 From: hanfel-dovned <95324536+hanfel-dovned@users.noreply.github.com> Date: Wed, 24 Jun 2026 15:47:22 -0700 Subject: [PATCH 4/5] fix typo in link to implementation --- UIPS/UIP-comet-attestation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UIPS/UIP-comet-attestation.md b/UIPS/UIP-comet-attestation.md index 004084a..fee3fa7 100644 --- a/UIPS/UIP-comet-attestation.md +++ b/UIPS/UIP-comet-attestation.md @@ -35,7 +35,7 @@ This update will network breach the existing few dozen Groundwire comets. This i ## Status -An [in-progress implementation branch](https://github.com/gwbtc/urbit/compare/gw/next/kelvin/408...cyc/cc_) exists in the Groundwire foundation's urbit repo. +An [in-progress implementation branch](https://github.com/gwbtc/urbit/compare/gw/next/kelvin/408...cyc/cc) exists in the Groundwire Foundation's urbit repo. ## Copyright From 4f6c554933eeed08c6a83f5bedbf132f7c95c80e Mon Sep 17 00:00:00 2001 From: hanfel-dovned <95324536+hanfel-dovned@users.noreply.github.com> Date: Wed, 24 Jun 2026 16:23:43 -0700 Subject: [PATCH 5/5] use RFC 2119/8174 language --- UIPS/UIP-comet-attestation.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/UIPS/UIP-comet-attestation.md b/UIPS/UIP-comet-attestation.md index fee3fa7..d57a407 100644 --- a/UIPS/UIP-comet-attestation.md +++ b/UIPS/UIP-comet-attestation.md @@ -23,11 +23,13 @@ In a nutshell, we can enforce that all Bitcoin comets do in fact attest to their ## Specification -Upon receiving a Suite C self-attestation packet, Ames needs to pass it to some validation agent to either accept it or reject it as a valid Urbit ID. The sending comet's tweaked networking key contains a `domain=@tas` corresponding to this agent. +The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 and RFC 8174. -A mapping from domain to agent is set by passing an `%anex` task to Jael, which we introduce in this UIP (alongside tasks for deleting and modifying mappings). Upon installing a new PKI handler desk, its main agent will typically set this in `++on-init`. +Upon receiving a Suite C self-attestation packet, Ames MUST pass it to some validation agent to either accept it or reject it as a valid Urbit ID. The sending comet's tweaked networking key MUST contain a `domain=@tas` corresponding to this agent. -When Ames receives a Suite C self-attestation packet from an alien, it passes it to Jael via the newly-introduced `%writ` task. Jael then either dispatches it to the appropriate agent or nacks if the domain is non-existent. The agent then performs the validation and gives the new point's data to Jael as a `%fact`. When the sending ship tries to contact the receiving ship again, the receiving ship's Ames will see it in Jael and thus will establish normal contact. +A mapping from domain to agent is set by passing an `%anex` task to Jael, which we introduce in this UIP (alongside tasks for deleting and modifying mappings). Upon installing a new PKI handler desk, its main agent SHOULD set this in `++on-init`. + +When Ames receives a Suite C self-attestation packet from an alien, it MUST pass it to Jael via the newly-introduced `%writ` task. Jael MUST then either dispatch it to the appropriate agent or nack if the domain is non-existent. The agent SHOULD then perform the validation and give the new point's data to Jael as a `%fact`. When the sending ship tries to contact the receiving ship again, the receiving ship's Ames will see it in Jael and thus will establish normal contact. ## Backwards Compatibility