<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <updated>2026-10-24T06:52:36Z</updated>
  <generator>https://nostr.now</generator>

  <title>Nostr notes by </title>
  <author>
    <name></name>
  </author>
  <link rel="self" type="application/atom+xml" href="https://nostr.now/npub1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzqujme.rss" />
  <link href="https://nostr.now/npub1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzqujme" />
  <id>https://nostr.now/npub1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzqujme</id>
  <icon></icon>
  <logo></logo>


  <title>Nostr notes on relay2.inkan.cc</title>
  <link href="https://nostr.now/r/relay2.inkan.cc" />
  <link rel="self" type="application/atom+xml" href="https://nostr.now/r/relay2.inkan.cc.rss" />
  <id>https://nostr.now/r/relay2.inkan.cc</id>
  <icon></icon>
  <logo></logo>



  <entry>
    <id>https://nostr.now/nevent1qqsttklue8mvn73djd3d2xgts50yj9h55p0gpu6y4aj0yu3s5upx07gpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yv83j8qs</id>
    
      <title type="html">If RBTC traded at 50 cents while Bitcoin is at 80k, this would ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsttklue8mvn73djd3d2xgts50yj9h55p0gpu6y4aj0yu3s5upx07gpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yv83j8qs" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsplefhhk2vz7dwaxxtrrw50vmvh7q9vn0se62yeq6arjla7dstplqpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtc0c0ece&#39;&gt;nevent1q…0ece&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;If RBTC traded at 50 cents while Bitcoin is at 80k, this would presumably mean that people think there&amp;#39;s something seriously wrong with the bridge. The value of RBTC just seems to reflect people&amp;#39;s view of the integrity of the pegging mechanism and the trustworthiness of the pegnatories. By contrast, the value of Bitcoin or Ethereum reflects people&amp;#39;s view of the security, usefulness and future of the chain itself. It feels like, in the case of Bitcoin and Ethereum there&amp;#39;s more overlap between those who are defending these chains and those who have their economic interests bound up in them, and there&amp;#39;s less of a single point of failure, but I guess I&amp;#39;ll need to look into this more. Also it&amp;#39;s of course perfectly fair to predict that things will get better in the future with BitVM, but the prediction doesn&amp;#39;t substitute for what it presently is.
    </content>
    <updated>2026-10-24T06:52:36Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqspun8gx349p86hyrwzkuq0h39mykcvnhqamsgkfjlxrteu9kdtgscpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvhjfuwl</id>
    
      <title type="html">I think I&amp;#39;ve never met a plumber. I wonder if they are nice ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqspun8gx349p86hyrwzkuq0h39mykcvnhqamsgkfjlxrteu9kdtgscpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvhjfuwl" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvr4kpw9eh9s3ufz70sqs4laap08gkju9yz8d9pjy8yjglt3kcd9gpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsyyvrqq&#39;&gt;nevent1q…vrqq&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I think I&amp;#39;ve never met a plumber. I wonder if they are nice people.
    </content>
    <updated>2026-10-23T10:00:50Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqstqey0ltxvwpfzuw5hjm86ape6663j7e3agmyj09kqc453hun0qfcpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvmujgd7</id>
    
      <title type="html">Google Maps is the reason I got a smartphone 14 years ago. I saw ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqstqey0ltxvwpfzuw5hjm86ape6663j7e3agmyj09kqc453hun0qfcpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvmujgd7" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqqqxxu7ca57c6clkhrqphj5fvzmzvd307y4r88hkzwd70zveyznspz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsgmsf3z&#39;&gt;nevent1q…sf3z&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Google Maps is the reason I got a smartphone 14 years ago. I saw it on a friend&amp;#39;s phone and thought oh it would be useful to have that. As far as I know, it&amp;#39;s the only distinctive product Google ever made.
    </content>
    <updated>2026-10-23T07:11:53Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsy5gcrys0hxfl9rktgldgvh765f7vchsvck9gsd3ftmme7epxpfygpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvqynsl5</id>
    
      <title type="html">Humans moving from memory to writing seems quite similar to what ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsy5gcrys0hxfl9rktgldgvh765f7vchsvck9gsd3ftmme7epxpfygpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvqynsl5" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqqqqqcdnjqyyzrjxtck3k3f7glsddn6kkugw2zravs089dr6ssyqppemhxue69uhkummn9ekx7mp0s2ynhj&#39;&gt;nevent1q…ynhj&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Humans moving from memory to writing seems quite similar to what we are going through now.&lt;br/&gt;&lt;br/&gt;&amp;#34;this discovery of yours will create forgetfulness in the learners&amp;#39; souls, because they will not use their memories; they will trust to the external written characters and not remember of themselves.&amp;#34;&lt;br/&gt;&lt;br/&gt;With AI, they will not use their cognitive abilities; they will entrust thinking to external processes and not think themselves.&lt;br/&gt;&lt;br/&gt;So what seemed like a intelligence-enhancing drug turns out to be a drug that induces intellectual numbness.&lt;br/&gt;&lt;br/&gt;I think psychologists call it cognitive offloading.
    </content>
    <updated>2026-10-21T13:58:41Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqszw7p5ng24ptjfyedsvy042ms5u0whqe6ejslr5yk2cpgpj58w9gspz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yv2lry59</id>
    
      <title type="html">With rootstock, I guess the main discomfort really does come from ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqszw7p5ng24ptjfyedsvy042ms5u0whqe6ejslr5yk2cpgpj58w9gspz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yv2lry59" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqwtu9n305w8neq3n40puy3988veczy4quycugtdv8dj8e90at6vqpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsc5jm2e&#39;&gt;nevent1q…jm2e&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;With rootstock, I guess the main discomfort really does come from the fact that its funding isn&amp;#39;t endogenous, its being pegged to Bitcoin. Looking into this a bit further, it seems like the pegnatories aren&amp;#39;t anonymous happily, but it&amp;#39;s still unclear why one would want to trust a handful of companies with peg-outs. This feature makes it seem rather fragile.
    </content>
    <updated>2026-10-23T07:01:54Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsruyhk3725purvgl3y90quzlqlvsqmcm6l0maryama7cu6sylgalcpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvxguwee</id>
    
      <title type="html">I think I agree, it requires a modest amount of effort and a ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsruyhk3725purvgl3y90quzlqlvsqmcm6l0maryama7cu6sylgalcpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvxguwee" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsg3emsn7ca64z39m05yua9ar4pufppcwkelkwwe44xjaa0lelj4dqpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtctq7vvz&#39;&gt;nevent1q…7vvz&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I think I agree, it requires a modest amount of effort and a willingness to direct ones attention to it from time to time, as do many things in life. Like learning a bit of algebra or trigonometry, or maybe playing the piano or volleyball with some basic proficiency. Humans don&amp;#39;t usually do these things of their own accord, so we create special educational environments with a carefree atmosphere that allows them to open their minds towards these things. There is no reason that basic asymmetric cryptography shouldn&amp;#39;t be part of this.&lt;br/&gt;&lt;br/&gt;Now all that said, I&amp;#39;m embarrassed to admit that I myself don&amp;#39;t know a lot about entropy generation, don&amp;#39;t know what a &amp;#34;descriptor for multisig&amp;#34; is, and don&amp;#39;t know what &amp;#34;m/4/0/0/1&amp;#34; refers to. That&amp;#39;s not to say that these are abtruse concepts, I guess just that I haven&amp;#39;t encountered them or at least not in a way where I felt like I had to think about them.
    </content>
    <updated>2026-10-22T13:16:16Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsdkq5cfy2y7wzxgz2ccqs49x3dhgfkdxag828duhy4xtcmqat9l9cpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvfa3k6l</id>
    
      <title type="html">On the one hand there&amp;#39;s zero demand, and on the other hand ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsdkq5cfy2y7wzxgz2ccqs49x3dhgfkdxag828duhy4xtcmqat9l9cpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvfa3k6l" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqwtu9n305w8neq3n40puy3988veczy4quycugtdv8dj8e90at6vqpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsc5jm2e&#39;&gt;nevent1q…jm2e&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;On the one hand there&amp;#39;s zero demand, and on the other hand just a couple of hours ago I came across yet another post proclaiming that &amp;#34;[k]ey rotation is an existential problem that cries out for an answer.&amp;#34;&lt;br/&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/naddr1qvzqqqr4gupzpef89h53f0fsza2ugwdc3e54nfpun5nxfqclpy79r6w8nxsk5yp0qythwumn8ghj7un9d3shjtnswf5k6ctv9ehx2ap0qy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qzjddjhjttjda6xzarfdahz6ctwvskhwetz94hkvtt5wf6hxapdw35x2ttnd9khqmr9wd6z6ur0wdekjcnvv5khxmmvw46xjmmw946x7ttp94c8yetnwd5kueedwpex7cnvv4ksuew6eg&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;naddr1qv…w6eg&lt;/a&gt;&lt;/span&gt;&lt;br/&gt; &lt;/div&gt; &lt;p&gt;I&amp;#39;m going to take a stab at one of the most difficult and important problems in freedom technology: key rotation. Can web of trust help? If so, how?&lt;/p&gt;

&lt;p&gt;The canonical use case will be that of a compromised nostr nsec. Suppose Alice wakes up one morning to discover that her nsec has been compromised by a scammer who is sending DMs to all of her contacts asking for sats. She needs the community to know that this nsec is compromised, she needs to spin up a new nsec, she needs the community to know that this is her new replacement nsec, and she needs to do all of this ASAP. How does she proceed?&lt;/p&gt;

&lt;p&gt;My guiding principle is something that deserves a name, but doesn&amp;#39;t to my knowledge have one, so I&amp;#39;ll just call it Occam&amp;#39;s Design Principle:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“&lt;em&gt;A product should be made as simple as possible, but not simpler.&lt;/em&gt;”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Our solution requires Alice to communicate this catastrophe to people who know her in the real world so that they can relay it to the community. So for starters, she will tell her friends Bob, Charlie, Dave, etc that her old nsec is compromised. Optionally, she will also provide them with a replacement pubkey corresponding to a new nsec, presuming she has created a new one and wishes the community to know it.&lt;/p&gt;

&lt;p&gt;Obviously this is an imperfect solution, but there is no perfect solution, and we desire to keep things simple. Improvements will come later.&lt;/p&gt;

&lt;h2 id=&#34;the-proposed-solution-2&#34;&gt;The Proposed Solution&lt;/h2&gt;

&lt;p&gt;We require no new event kinds or new NIPs, other than the &lt;a href=&#34;https://nostrhub.io/naddr1qvzqqqrcvypzpef89h53f0fsza2ugwdc3e54nfpun5nxfqclpy79r6w8nxsk5yp0qyt8wumn8ghj7un9d3shjtnswf5k6ctv9ehx2aqqzdjx2cm9de68yctvd9ax2epdd35hxarnwrn9hx&#34;&gt;Decentralized Lists&lt;/a&gt; Custom NIP.&lt;/p&gt;

&lt;h6 id=&#34;declaration-of-the-key-rotation-attestation-list-2&#34;&gt;Declaration of the Key Rotation Attestation List&lt;/h6&gt;

&lt;p&gt;Step 1 is to declare a new type of attestation that Bob, Charlie, Dave, etc. can use to effect the attestation described above. This only needs to be done once.&lt;/p&gt;

&lt;p&gt;Following the Decentralized Lists NIP, this is achieved via a kind 9998 &lt;em&gt;list declaration&lt;/em&gt; event, also called a &lt;em&gt;list header&lt;/em&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;{
  &amp;#34;kind&amp;#34;: 9998,
  &amp;#34;tags&amp;#34;: [
    [&amp;#34;names&amp;#34;, &amp;#34;key rotation attestation&amp;#34;, &amp;#34;key rotation attestations&amp;#34;],
    [&amp;#34;description&amp;#34;, &amp;#34;This is an attestation whereby Bob, who knows Alice in the real world, can alert the community that her nsec has been compromised. There is only one required piece of data, which is the pubkey corresponding to her compromised nsec. For this, he uses the p tag. Optionally, he can also communicate a replacement pubkey, using the optional pubkey_replacement tag, presuming Alice has supplied him with one.&amp;#34;],
    [&amp;#34;required&amp;#34;, &amp;#34;p&amp;#34;],
    [&amp;#34;optional&amp;#34;, &amp;#34;pubkey_replacement&amp;#34;]
  ],
  &amp;#34;id&amp;#34;: &amp;#34;&amp;lt;id_key_rotation_attestation_header&amp;gt;&amp;#34;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;h6 id=&#34;issue-key-rotation-attestations-2&#34;&gt;Issue Key Rotation Attestations&lt;/h6&gt;

&lt;p&gt;Step 2 is for Bob to issue the attestation that Alice&amp;#39;s old nsec has been compromised, and optionally to communicate the pubkey that she intends to replace the old one. This is accomplished via a kind 9999 event. It uses the &lt;strong&gt;z&lt;/strong&gt; tag to point to the parent list header (above), the &lt;strong&gt;p&lt;/strong&gt; tag to indicate the compromised account, and (optionally) the &lt;strong&gt;pubkey_replacement&lt;/strong&gt; tag to indicate the new pubkey:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;{
  &amp;#34;kind&amp;#34;: 9999,
  &amp;#34;tags&amp;#34;: [
    [&amp;#34;z&amp;#34;, &amp;#34;&amp;lt;id_key_rotation_attestation_header&amp;gt;&amp;#34;],
    [&amp;#34;p&amp;#34;, &amp;#34;&amp;lt;alice_pubkey_compromised&amp;gt;&amp;#34;],
    [&amp;#34;pubkey_replacement&amp;#34;, &amp;#34;&amp;lt;alice_pubkey_replacement&amp;gt;&amp;#34;]
  ],
  &amp;#34;id&amp;#34;: &amp;#34;&amp;lt;id_key_rotation_attestation_item&amp;gt;&amp;#34;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;h6 id=&#34;attestation-support-2&#34;&gt;Attestation Support&lt;/h6&gt;

&lt;p&gt;Step 3 is for Charlie, Dave, etc to voice support (or rejection, as the case may be) for Bob&amp;#39;s key rotation attestation using any one of several methods, with kind 7 reactions being the recommended method as described in the Decentralized Lists NIP:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;{
  &amp;#34;kind&amp;#34;: 7,
  &amp;#34;content&amp;#34;: &amp;#34;&#43;&amp;#34;, // or &amp;#34;-&amp;#34; to downvote
  &amp;#34;tags&amp;#34;: [
    [&amp;#34;e&amp;#34;, &amp;#34;&amp;lt;id_key_rotation_attestation_item&amp;gt;&amp;#34;]
  ]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Alternatively, Charlie, Dave, etc could simply publish duplicate attestations using their own kind 9999 events, identical to Bob&amp;#39;s.&lt;/p&gt;

&lt;h6 id=&#34;consumption-2&#34;&gt;Consumption&lt;/h6&gt;

&lt;p&gt;How are these attestations processed? If the end user wants to check whether &lt;em&gt;alice_pubkey&lt;/em&gt; is valid (to the best of the community&amp;#39;s knowledge), use this filter:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;{
  &amp;#34;kinds&amp;#34;: [9999],
  &amp;#34;#z&amp;#34;: [&amp;#34;&amp;lt;id_key_rotation_attestation_header&amp;gt;&amp;#34;],
  &amp;#34;#p&amp;#34;: [&amp;#34;alice_pubkey&amp;#34;]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Reactions to events returned by this filter would also be obtained with the appropriate kind 7 filter and gathered together. All of these results (kind 9999 and kind 7 events) would then be filtered or weighted based upon the end user&amp;#39;s personalized trust metric of the event author. For starters, standard personalized PageRank or personalized GrapeRank metrics would do, easily obtained via &lt;a href=&#34;https://nostrhub.io/naddr1qvzqqqrcvypzq3svyhng9ld8sv44950j957j9vchdktj7cxumsep9mvvjthc2pjuqyt8wumn8ghj7un9d3shjtnswf5k6ctv9ehx2aqqzf68yatnw3jkgttpwdek2un5d9hkuuctys9zn&#34;&gt;Trusted Assertions&lt;/a&gt;. More sophisticated metrics might use a proximity score between Alice and the event author; authors whom Alice (previously) followed, for example, could be given the highest weighting. Perhaps Alice could even designate, ahead of time, a NIP-51 list of pubkeys that she would trust to make these attestations. But that would be work for the future; no need to support it in the initial rollout.&lt;/p&gt;

&lt;h2 id=&#34;future-expansions-of-the-protocol-2&#34;&gt;Future Expansions of the Protocol&lt;/h2&gt;

&lt;p&gt;Decentralized Lists provides multiple methods for future expansion of the basic Key Rotation protocol as described above. One might, for example, propose adding one or more tags alongside the &lt;strong&gt;p&lt;/strong&gt; and &lt;strong&gt;pubkey_replacement&lt;/strong&gt; tags. Perhaps a tag that indicates the reason for the rotation: lost, compromised, routine rotation, etc. Perhaps a tag to communicate the timestamp that the rotation is intended to take effect. The list of tags is just that: a list, that can be curated by your web of trust! In the event that multiple incompatible expansions are proposed, the community would hopefully (and probably) settle upon one or the other.&lt;/p&gt;

&lt;h2 id=&#34;conclusion-2&#34;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;A client that implements the above protocol would be providing a great service to the nostr community and would lay a foundation upon which more complex protocols could evolve. In the event that a friend tells you that her account is compromised, this is the client where you would run so you could shout her predicament from the mountaintops. Such a client would therefore need a well designed interface to issue the relevant attestations and reactions. Any WoT Service Providers worth their salt would, in turn, want to listen to the output of this client and work them into their trust metrics. Therefore, such a client would want to use one or more standard methods to communicate the status of any given pubkey: Trusted Assertions, API, and/or some other method.&lt;/p&gt;

&lt;p&gt;This would be a great contribution to the upcoming web of trust hackathon. It could be vibe coded, but ideally a team would form around an idea such as this and ensure excellent execution. And of course, I welcome ideas on how to improve this proposal. LFG!&lt;/p&gt;

&lt;p&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qvzqqqqqqypzp0nm7h0qdrqasshdxjnuyuzs0my5pa0229n3elgx9227n5y5yrg2qqsgf43appp78lajjpr5fqk8fswvx87ffw97svqc6rgagzt2pw0hnrc6l7e7w&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…7e7w&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
 &lt;/blockquote&gt;&lt;br/&gt;There&amp;#39;s a fascinating mix of social dynamics permeating this discussion, here&amp;#39;s a recent economic take on it:&lt;br/&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qvzqqqqqqypzp5dxzjv0fvwuym0shmx350573re4t7mpfdm3az6mya7sl7v6s23rqy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qgwwaehxw309ahx7uewd3hkctcqyruapxju6jc2tqgaaekaxp3ftdcn3rxxsj7sg520gwl39u3xysud6f8ya37&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…ya37&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; So there&#39;s this nostr paradox, why would a community obsessed with crypto and key security refuse to even test working key rotation?&lt;br/&gt;&lt;br/&gt;Because you can&#39;t tell working from broken without spending your own time on it.&lt;br/&gt;&lt;br/&gt;After enough broken NIPs and abandoned apps, you learn to price every new thing as a lemon and assume broken. The good leaves the market with the bad. 👇&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/The_Market_for_Lemons&#34;&gt;https://en.wikipedia.org/wiki/The_Market_for_Lemons&lt;/a&gt; &lt;/blockquote&gt;
    </content>
    <updated>2026-10-22T07:11:33Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsrsdkz7543kv5wcvvufzmhzcpgdslqyh392qsyfhsaaawh2wzc34qpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvhtv0vm</id>
    
      <title type="html">In this case I guess it&amp;#39;s just a story that I read that was ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsrsdkz7543kv5wcvvufzmhzcpgdslqyh392qsyfhsaaawh2wzc34qpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvhtv0vm" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsy4zamu4amx7qdwrvwjrzc3773qvgkvyh5w34r05q0k8lay26cugqpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtc93lhrp&#39;&gt;nevent1q…lhrp&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;In this case I guess it&amp;#39;s just a story that I read that was told by Plato about a conversation between Phaedrus and Socrates in which Socrates says that there was a myth told by the ancients according to which there was this conversation between two Egyptian gods in the city of Naucratis.
    </content>
    <updated>2026-10-22T06:10:15Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsvs5vtlnsgtsska7u7d7tj2x3eyedl5ttv2227gm0xehssecdfk8gpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yv35dyst</id>
    
      <title type="html">I just saw this proposal for the first time, and I agree that ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsvs5vtlnsgtsska7u7d7tj2x3eyedl5ttv2227gm0xehssecdfk8gpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yv35dyst" />
    <content type="html">
      I just saw this proposal for the first time, and I agree that &amp;#34;[k]ey rotation is an existential problem that cries out for an answer.&amp;#34;&lt;br/&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/naddr1qvzqqqr4gupzpef89h53f0fsza2ugwdc3e54nfpun5nxfqclpy79r6w8nxsk5yp0qyg8wumn8ghj7mn0wd68ytnddakj7qzjddjhjttjda6xzarfdahz6ctwvskhwetz94hkvtt5wf6hxapdw35x2ttnd9khqmr9wd6z6ur0wdekjcnvv5khxmmvw46xjmmw946x7ttp94c8yetnwd5kueedwpex7cnvv4ksrn8zds&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;naddr1qv…8zds&lt;/a&gt;&lt;/span&gt;&lt;br/&gt; &lt;/div&gt; &lt;p&gt;I&amp;#39;m going to take a stab at one of the most difficult and important problems in freedom technology: key rotation. Can web of trust help? If so, how?&lt;/p&gt;

&lt;p&gt;The canonical use case will be that of a compromised nostr nsec. Suppose Alice wakes up one morning to discover that her nsec has been compromised by a scammer who is sending DMs to all of her contacts asking for sats. She needs the community to know that this nsec is compromised, she needs to spin up a new nsec, she needs the community to know that this is her new replacement nsec, and she needs to do all of this ASAP. How does she proceed?&lt;/p&gt;

&lt;p&gt;My guiding principle is something that deserves a name, but doesn&amp;#39;t to my knowledge have one, so I&amp;#39;ll just call it Occam&amp;#39;s Design Principle:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“&lt;em&gt;A product should be made as simple as possible, but not simpler.&lt;/em&gt;”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Our solution requires Alice to communicate this catastrophe to people who know her in the real world so that they can relay it to the community. So for starters, she will tell her friends Bob, Charlie, Dave, etc that her old nsec is compromised. Optionally, she will also provide them with a replacement pubkey corresponding to a new nsec, presuming she has created a new one and wishes the community to know it.&lt;/p&gt;

&lt;p&gt;Obviously this is an imperfect solution, but there is no perfect solution, and we desire to keep things simple. Improvements will come later.&lt;/p&gt;

&lt;h2 id=&#34;the-proposed-solution-5&#34;&gt;The Proposed Solution&lt;/h2&gt;

&lt;p&gt;We require no new event kinds or new NIPs, other than the &lt;a href=&#34;https://nostrhub.io/naddr1qvzqqqrcvypzpef89h53f0fsza2ugwdc3e54nfpun5nxfqclpy79r6w8nxsk5yp0qyt8wumn8ghj7un9d3shjtnswf5k6ctv9ehx2aqqzdjx2cm9de68yctvd9ax2epdd35hxarnwrn9hx&#34;&gt;Decentralized Lists&lt;/a&gt; Custom NIP.&lt;/p&gt;

&lt;h6 id=&#34;declaration-of-the-key-rotation-attestation-list-5&#34;&gt;Declaration of the Key Rotation Attestation List&lt;/h6&gt;

&lt;p&gt;Step 1 is to declare a new type of attestation that Bob, Charlie, Dave, etc. can use to effect the attestation described above. This only needs to be done once.&lt;/p&gt;

&lt;p&gt;Following the Decentralized Lists NIP, this is achieved via a kind 9998 &lt;em&gt;list declaration&lt;/em&gt; event, also called a &lt;em&gt;list header&lt;/em&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;{
  &amp;#34;kind&amp;#34;: 9998,
  &amp;#34;tags&amp;#34;: [
    [&amp;#34;names&amp;#34;, &amp;#34;key rotation attestation&amp;#34;, &amp;#34;key rotation attestations&amp;#34;],
    [&amp;#34;description&amp;#34;, &amp;#34;This is an attestation whereby Bob, who knows Alice in the real world, can alert the community that her nsec has been compromised. There is only one required piece of data, which is the pubkey corresponding to her compromised nsec. For this, he uses the p tag. Optionally, he can also communicate a replacement pubkey, using the optional pubkey_replacement tag, presuming Alice has supplied him with one.&amp;#34;],
    [&amp;#34;required&amp;#34;, &amp;#34;p&amp;#34;],
    [&amp;#34;optional&amp;#34;, &amp;#34;pubkey_replacement&amp;#34;]
  ],
  &amp;#34;id&amp;#34;: &amp;#34;&amp;lt;id_key_rotation_attestation_header&amp;gt;&amp;#34;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;h6 id=&#34;issue-key-rotation-attestations-5&#34;&gt;Issue Key Rotation Attestations&lt;/h6&gt;

&lt;p&gt;Step 2 is for Bob to issue the attestation that Alice&amp;#39;s old nsec has been compromised, and optionally to communicate the pubkey that she intends to replace the old one. This is accomplished via a kind 9999 event. It uses the &lt;strong&gt;z&lt;/strong&gt; tag to point to the parent list header (above), the &lt;strong&gt;p&lt;/strong&gt; tag to indicate the compromised account, and (optionally) the &lt;strong&gt;pubkey_replacement&lt;/strong&gt; tag to indicate the new pubkey:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;{
  &amp;#34;kind&amp;#34;: 9999,
  &amp;#34;tags&amp;#34;: [
    [&amp;#34;z&amp;#34;, &amp;#34;&amp;lt;id_key_rotation_attestation_header&amp;gt;&amp;#34;],
    [&amp;#34;p&amp;#34;, &amp;#34;&amp;lt;alice_pubkey_compromised&amp;gt;&amp;#34;],
    [&amp;#34;pubkey_replacement&amp;#34;, &amp;#34;&amp;lt;alice_pubkey_replacement&amp;gt;&amp;#34;]
  ],
  &amp;#34;id&amp;#34;: &amp;#34;&amp;lt;id_key_rotation_attestation_item&amp;gt;&amp;#34;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;h6 id=&#34;attestation-support-5&#34;&gt;Attestation Support&lt;/h6&gt;

&lt;p&gt;Step 3 is for Charlie, Dave, etc to voice support (or rejection, as the case may be) for Bob&amp;#39;s key rotation attestation using any one of several methods, with kind 7 reactions being the recommended method as described in the Decentralized Lists NIP:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;{
  &amp;#34;kind&amp;#34;: 7,
  &amp;#34;content&amp;#34;: &amp;#34;&#43;&amp;#34;, // or &amp;#34;-&amp;#34; to downvote
  &amp;#34;tags&amp;#34;: [
    [&amp;#34;e&amp;#34;, &amp;#34;&amp;lt;id_key_rotation_attestation_item&amp;gt;&amp;#34;]
  ]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Alternatively, Charlie, Dave, etc could simply publish duplicate attestations using their own kind 9999 events, identical to Bob&amp;#39;s.&lt;/p&gt;

&lt;h6 id=&#34;consumption-5&#34;&gt;Consumption&lt;/h6&gt;

&lt;p&gt;How are these attestations processed? If the end user wants to check whether &lt;em&gt;alice_pubkey&lt;/em&gt; is valid (to the best of the community&amp;#39;s knowledge), use this filter:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;{
  &amp;#34;kinds&amp;#34;: [9999],
  &amp;#34;#z&amp;#34;: [&amp;#34;&amp;lt;id_key_rotation_attestation_header&amp;gt;&amp;#34;],
  &amp;#34;#p&amp;#34;: [&amp;#34;alice_pubkey&amp;#34;]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Reactions to events returned by this filter would also be obtained with the appropriate kind 7 filter and gathered together. All of these results (kind 9999 and kind 7 events) would then be filtered or weighted based upon the end user&amp;#39;s personalized trust metric of the event author. For starters, standard personalized PageRank or personalized GrapeRank metrics would do, easily obtained via &lt;a href=&#34;https://nostrhub.io/naddr1qvzqqqrcvypzq3svyhng9ld8sv44950j957j9vchdktj7cxumsep9mvvjthc2pjuqyt8wumn8ghj7un9d3shjtnswf5k6ctv9ehx2aqqzf68yatnw3jkgttpwdek2un5d9hkuuctys9zn&#34;&gt;Trusted Assertions&lt;/a&gt;. More sophisticated metrics might use a proximity score between Alice and the event author; authors whom Alice (previously) followed, for example, could be given the highest weighting. Perhaps Alice could even designate, ahead of time, a NIP-51 list of pubkeys that she would trust to make these attestations. But that would be work for the future; no need to support it in the initial rollout.&lt;/p&gt;

&lt;h2 id=&#34;future-expansions-of-the-protocol-5&#34;&gt;Future Expansions of the Protocol&lt;/h2&gt;

&lt;p&gt;Decentralized Lists provides multiple methods for future expansion of the basic Key Rotation protocol as described above. One might, for example, propose adding one or more tags alongside the &lt;strong&gt;p&lt;/strong&gt; and &lt;strong&gt;pubkey_replacement&lt;/strong&gt; tags. Perhaps a tag that indicates the reason for the rotation: lost, compromised, routine rotation, etc. Perhaps a tag to communicate the timestamp that the rotation is intended to take effect. The list of tags is just that: a list, that can be curated by your web of trust! In the event that multiple incompatible expansions are proposed, the community would hopefully (and probably) settle upon one or the other.&lt;/p&gt;

&lt;h2 id=&#34;conclusion-5&#34;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;A client that implements the above protocol would be providing a great service to the nostr community and would lay a foundation upon which more complex protocols could evolve. In the event that a friend tells you that her account is compromised, this is the client where you would run so you could shout her predicament from the mountaintops. Such a client would therefore need a well designed interface to issue the relevant attestations and reactions. Any WoT Service Providers worth their salt would, in turn, want to listen to the output of this client and work them into their trust metrics. Therefore, such a client would want to use one or more standard methods to communicate the status of any given pubkey: Trusted Assertions, API, and/or some other method.&lt;/p&gt;

&lt;p&gt;This would be a great contribution to the upcoming web of trust hackathon. It could be vibe coded, but ideally a team would form around an idea such as this and ensure excellent execution. And of course, I welcome ideas on how to improve this proposal. LFG!&lt;/p&gt;

&lt;p&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qvzqqqqqqypzp0nm7h0qdrqasshdxjnuyuzs0my5pa0229n3elgx9227n5y5yrg2qqsgf43appp78lajjpr5fqk8fswvx87ffw97svqc6rgagzt2pw0hnrc6l7e7w&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…7e7w&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
 &lt;/blockquote&gt;&lt;br/&gt;&lt;br/&gt;So actually key rotation for nostr has been implemented and it&amp;#39;s been working for a while now. You can go to the &amp;#34;Explore&amp;#34; tab at &lt;a href=&#34;https://www.inkan.cc&#34;&gt;https://www.inkan.cc&lt;/a&gt; to interact with some cold storage identities, or use the &amp;#34;Toy Identity&amp;#34; wizard to make a trial identity of your own.&lt;br/&gt;&lt;br/&gt;Also see below for some screenshots and a draft nip that goes along with the reference implementation. 👇&lt;br/&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qvzqqqqqqypzp5dxzjv0fvwuym0shmx350573re4t7mpfdm3az6mya7sl7v6s23rqy2hwumn8ghj7un9d3shjtnfde4kzm3wvd3j7qg3waehxw309ahx7um5wgh8w6twv5hsqgqgm3gesf2yw9drg7mqfvsnvxpfes4yc9hm6tdu7twqw0dc27shgqm892lf&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…92lf&lt;/a&gt;&lt;/span&gt;&lt;br/&gt; &lt;/div&gt; The way it usually goes, your online identity is your private key. If the key is compromised, there goes your identity. Inkan fixes that.&lt;br/&gt;&lt;br/&gt;You keep a master key in cold storage and a signing key for everyday use. If the signing key ever leaks or gets lost, the master revokes it and delegates to a new one. Same identity, same followers, fresh signing key.&lt;br/&gt;&lt;br/&gt;If you&#39;d like to take a look at the prototype: &lt;a href=&#34;https://www.inkan.cc&#34;&gt;https://www.inkan.cc&lt;/a&gt;. Log in with your NIP-07 extension and say hi to the test identities already walking around. Or make one of your own.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/27d256a9fcba336f567ea6369d0b6984feb72b00b06a5205efe029534113ab99.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/ca9b087993604f7b7d9473a661c946ecd20015186a112021f4858efa6c1e1808.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/fa5c1f8e19e3727b6693e6f105baf4eae15c4579343148fc413ac50acfe8edf0.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/f7002003e981f536bec01789875c17596f6c0eac87526a071c350480029c5827.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/3f6b865161cba71839910daa4f3c80b46c36400d5e2332ecad927b86003fcaad.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/a10f0ac6d508ea26602348bbec60bda4659667f75adfda46d9b8354224cd08fe.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/ce3d8e4de21b3e6f252f5aedbf02dd54323a26c1992c637438fabb9b14ea7afd.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/60f8a59a68386e2f28b792b63d09729ed494ebe6caddb7f6810e3c10f48b6e82.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/55000542eb9db4794c8ec07dcdfc93fa5560633afcd754476f6809e9c4bb5ac7.jpg&#34;&gt;  &lt;/blockquote&gt;&lt;br/&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/naddr1qvzqqqr4gupzp5dxzjv0fvwuym0shmx350573re4t7mpfdm3az6mya7sl7v6s23rqy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qg3waehxw309ahx7um5wghxcctwvshsq2rrdakxgttnw3hhyct8v5kkjer9de6xjarfv4ej6en0wgkkummnw3ez6a62f4nr24s69vwq8&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;naddr1qv…vwq8&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; 
&lt;h2 id=&#34;nip-proposal-2&#34;&gt;NIP Proposal&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;draft&lt;/code&gt; &lt;code&gt;optional&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This NIP specifies online identities whose private key can be created in cold storage and stay there permanently. The key never has to touch an internet-connected device, and does not have to be kept close at hand. The identity can nonetheless be used easily for everyday online authentication, such as posting, replying, messaging, or signing in to services.&lt;/p&gt;

&lt;h2 id=&#34;1-how-it-works-2&#34;&gt;1. How it works&lt;/h2&gt;

&lt;p&gt;The identity-securing key never signs Nostr events itself. It delegates signing authority to delegatee keys, which handle the everyday signing on its behalf. If a delegatee key is lost or stolen, it is replaced, and the identity is untouched.&lt;/p&gt;

&lt;h2 id=&#34;2-delegations-between-keys-2&#34;&gt;2. Delegations between keys&lt;/h2&gt;

&lt;p&gt;Delegations are time-indexed two-place relations. Between any two key pairs, at any moment, the first either delegates signing authority to the second or it does not. When it does, the second key is authorized to sign on the first&amp;#39;s behalf. When it does not, the second has no such authority.&lt;/p&gt;

&lt;p&gt;Delegations are either direct or indirect. A direct delegation arises when one key has expressly declared that it delegates signing authority to another. An indirect delegation arises because the relation is transitively closed: if X delegates to Y and Y delegates to Z, then X indirectly delegates to Z. This is what lets an identity be built as a chain (master → intermediate → signer), so that events signed by the bottom key are attributed all the way up to the master, while the master, having signed the top link once, retires to cold storage.&lt;/p&gt;

&lt;h2 id=&#34;3-how-a-direct-delegation-is-created-2&#34;&gt;3. How a direct delegation is created&lt;/h2&gt;

&lt;p&gt;A direct delegation from key pair X to key pair Y is created when both key pairs sign a &lt;strong&gt;Declaration of Delegation of Signing Authority&lt;/strong&gt;, by which X declares that it delegates signing authority to Y and Y declares that it accepts. The signed declaration is then recorded on-chain (the reference implementation uses Ethereum). The delegation begins at the time of the block in which the declaration was recorded, and remains in effect until it is revoked.&lt;/p&gt;

&lt;p&gt;One special case: this holds only if neither X nor Y has previously permanently invalidated itself (§5). If either has, no delegation is created, even though the declaration sits on-chain.&lt;/p&gt;

&lt;p&gt;As part of the declaration, X and Y also specify whether X can revoke the delegation unilaterally or whether Y&amp;#39;s consent is required. The default is unilateral revocation by X, and it is the right default for most users: if Y&amp;#39;s key is ever lost, X can still revoke it alone. Were Y&amp;#39;s consent required, a lost Y could never be revoked, because Y would no longer be available to sign.&lt;/p&gt;

&lt;h2 id=&#34;4-how-a-direct-delegation-is-terminated-2&#34;&gt;4. How a direct delegation is terminated&lt;/h2&gt;

&lt;p&gt;A direct delegation from X to Y is terminated when X signs a &lt;strong&gt;Declaration of Revocation of Signing Authority&lt;/strong&gt; and records it on-chain, with Y&amp;#39;s signature too if the original delegation required it. The delegation terminates at the time of the block in which the revocation was recorded. Everything Y signed while the delegation was in effect stays attributed to X; nothing it signs afterward does. A stolen signer therefore damages only the window between key compromise and revocation, and that window is the user&amp;#39;s to close.&lt;/p&gt;

&lt;p&gt;When a delegation and a revocation between the same X and Y land in the same block, the revocation is by convention treated as occurring first and the delegation thereafter. The convention is a tiebreaker for cases that block timestamps cannot order.&lt;/p&gt;

&lt;h2 id=&#34;5-permanent-key-invalidation-2&#34;&gt;5. Permanent key invalidation&lt;/h2&gt;

&lt;p&gt;The third declaration is the &lt;strong&gt;Declaration of Permanent Invalidation of a Key Pair&lt;/strong&gt;, signed by a key pair against itself, declaring that from then on it can no longer participate in any direct delegation, as delegator or delegatee. Once recorded on-chain, it takes effect at the time of its block. From that point, all existing direct delegations involving the key are terminated, and no new one involving it can come into existence, even if a declaration naming it is later recorded.&lt;/p&gt;

&lt;p&gt;Its main use is invalidating a compromised master key. Such a key has no delegator above it, so ordinary revocation is unavailable; permanent invalidation lets its owner withdraw it from the system entirely.&lt;/p&gt;

&lt;h2 id=&#34;6-delegation-timelines-2&#34;&gt;6. Delegation timelines&lt;/h2&gt;

&lt;p&gt;A client can read the three kinds of declaration from the chain and, for any pubkey and any past moment up to the present, compute the direct delegations that pubkey was involved in at that moment. The indirect ones follow by transitive closure. So for any pubkey a client can compile a complete timeline of every direct and indirect delegation it has ever been involved in, and trace each back to the declaration that established it. Because the rules are fixed and the data is public, every client computes the same timeline, and no server has to be trusted to report it.&lt;/p&gt;

&lt;h2 id=&#34;7-bitcoin-timestamping-of-events-2&#34;&gt;7. Bitcoin timestamping of events&lt;/h2&gt;

&lt;p&gt;Attribution needs an objective, auditable rule for when the signing of each event is deemed to have occurred. A self-declared &lt;code&gt;created_at&lt;/code&gt; proves nothing on its own.&lt;/p&gt;

&lt;p&gt;Events are anchored to Bitcoin using &lt;strong&gt;OpenTimestamps&lt;/strong&gt; (OTS). An OTS proof for an event establishes that the event and its signature existed by the time of a specific Bitcoin block. An event&amp;#39;s &lt;code&gt;created_at&lt;/code&gt; is then treated as its objective signing time when a proof shows the event and its signature existed shortly after that time. The length of the &amp;#34;shortly after&amp;#34; window is configurable; the reference implementation defaults to four hours. Events without such a proof are treated as if they carried no valid signature at all: they are not displayed, and are attributed to no one.&lt;/p&gt;

&lt;p&gt;A proof over the event id alone would show only that the event&amp;#39;s contents existed by the attested block, not that anyone had yet signed them. Binding the signature into the proof as well shows that the signature itself existed by then, which is what an objective signing time requires. These proofs are published as kind &lt;code&gt;31045&lt;/code&gt; events (§12).&lt;/p&gt;

&lt;h2 id=&#34;8-attribution-of-events-2&#34;&gt;8. Attribution of events&lt;/h2&gt;

&lt;p&gt;We now know, for any past time T and any two keys X and Y, whether X delegated (directly or indirectly) to Y at T; and for any event Y signed with both a valid signature and a valid OTS anchor, we have an objective signing time. Together these give a well-defined attribution rule:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;An event E is attributed to a key X if and only if some key Y validly signed E at a time T and, as of T, X delegated signing authority to Y.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So a text note signed by a delegatee Y during a valid delegation period from X appears on X&amp;#39;s timeline and is displayed there under X&amp;#39;s profile, as if posted by X, even though X&amp;#39;s own key never signed it.&lt;/p&gt;

&lt;h2 id=&#34;9-two-profiles-one-identity-2&#34;&gt;9. Two profiles, one identity&lt;/h2&gt;

&lt;p&gt;You log in with your signer key and sign events with it, exactly as in any other Nostr client. Those events appear on the signer&amp;#39;s own profile, and in addition on the profile of each of its delegators, up to your top-level identity.&lt;/p&gt;

&lt;p&gt;You set the signer&amp;#39;s profile by publishing a kind-0 event as usual. Separately, a signer can also set a profile &lt;em&gt;for&lt;/em&gt; each of its current delegators, so that a top-level identity can present a face to the world without signing any event itself. This delegator-profile mechanism is kind &lt;code&gt;31065&lt;/code&gt; (§12).&lt;/p&gt;

&lt;p&gt;Your identity&amp;#39;s profile is what you present to the world. Others should follow and interact with the identity, not with the signer beneath it. The signer is ephemeral and expected to be replaced; the identity is permanent, and is the thing followers should attach to.&lt;/p&gt;

&lt;h2 id=&#34;10-disavowal-2&#34;&gt;10. Disavowal&lt;/h2&gt;

&lt;p&gt;When making a delegation declaration, the delegator may declare an avowal start time and an avowal end time. When making a revocation declaration, the revoker may declare a disavowal start time and a disavowal end time. A start time of zero is interpreted as the time at which the declaration was recorded on-chain; an end time of zero means unbounded.&lt;/p&gt;

&lt;p&gt;For keys X and Y, take the latest delegation or revocation declaration between them recorded before any permanent invalidation of either (§5). If it is a delegation declaration, X avows Y&amp;#39;s actions at exactly the times T inside its avowal window; if a revocation declaration, at exactly the times T outside its disavowal window; provided, in both cases, that X directly delegated to Y at T. Y&amp;#39;s actions at T are the events Y validly signed with objective signing time T (§7).&lt;/p&gt;

&lt;p&gt;Avowal composes along delegation paths: X currently avows S&amp;#39;s actions at T if the relevant declaration between X and S avows them directly, or if, for some key Y, X avows Y&amp;#39;s actions at T, X avows Y&amp;#39;s actions at the present moment, and Y currently avows S&amp;#39;s actions at T.&lt;/p&gt;

&lt;p&gt;Clients can filter events whose signing the identity currently disavows out of the identity&amp;#39;s timeline, or display them with a disavowal badge.&lt;/p&gt;

&lt;h2 id=&#34;11-re-ratification-2&#34;&gt;11. Re-ratification&lt;/h2&gt;

&lt;p&gt;A disavowed window covers everything the disavowed key signed within it, including events whose signing was caused by the identity&amp;#39;s legitimate owner. The identity can in that situation make a kind &lt;code&gt;31066&lt;/code&gt; re-ratification declaration as described in §12.3 below, specifying the events it re-ratifies in the &lt;code&gt;e&lt;/code&gt; tags of that declaration. If the declaration is valid and effective, a client treats these events as re-ratified, until a disavowal recorded after the declaration&amp;#39;s anchoring block prevails over it (§12.3) or a later declaration governs in its place.&lt;/p&gt;

&lt;h2 id=&#34;12-event-kinds-2&#34;&gt;12. Event kinds&lt;/h2&gt;

&lt;p&gt;This NIP defines three &lt;strong&gt;addressable&lt;/strong&gt; event kinds (kinds 30000 to 39999 in NIP-01, where the latest event for a given &lt;code&gt;(pubkey, kind, d-tag)&lt;/code&gt; replaces any earlier one).&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Kind&lt;/th&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;th&gt;&lt;code&gt;d&lt;/code&gt; tag&lt;/th&gt;
&lt;th&gt;Signed by&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;31045&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Bitcoin timestamp&lt;/td&gt;
&lt;td&gt;id of the referenced event&lt;/td&gt;
&lt;td&gt;any party&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;31065&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Attributed profile&lt;/td&gt;
&lt;td&gt;the delegator&amp;#39;s pubkey&lt;/td&gt;
&lt;td&gt;a delegatee&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;31066&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Re-ratification&lt;/td&gt;
&lt;td&gt;the re-ratifying pubkey&lt;/td&gt;
&lt;td&gt;an avowed key&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 id=&#34;12-1-kind-31045-bitcoin-timestamp-2&#34;&gt;12.1 Kind &lt;code&gt;31045&lt;/code&gt;: Bitcoin timestamp&lt;/h3&gt;

&lt;p&gt;A &lt;code&gt;31045&lt;/code&gt; event carries an OpenTimestamps proof for another event (§7). It is addressable by the referenced event&amp;#39;s id, so a consumer finds the proof for an event E by querying kind &lt;code&gt;31045&lt;/code&gt; with &lt;code&gt;#d = [E.id]&lt;/code&gt;, whoever published it. Any valid proof for E is as good as any other, because the proof rests on Bitcoin and not on its publisher.&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tag&lt;/th&gt;
&lt;th&gt;Required&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;d&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;Id of the referenced event. The addressable key.&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;s&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;Signature of the referenced event. With &lt;code&gt;d&lt;/code&gt;, binds the proof to a signed event, not just an id.&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;p&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;Author pubkey of the referenced event.&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;b&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;Bitcoin block height of the attestation, or &lt;code&gt;not_yet_available&lt;/code&gt; while pending.&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;t&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;Bitcoin block time (unix seconds), or &lt;code&gt;not_yet_available&lt;/code&gt; while pending.&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;c&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;&lt;code&gt;created_at&lt;/code&gt; of the referenced event, when known.&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;alt&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;NIP-31 summary, e.g. &lt;code&gt;Complete Bitcoin Timestamp&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;code&gt;content&lt;/code&gt; is the base64-encoded OpenTimestamps (&lt;code&gt;.ots&lt;/code&gt;) proof. Its leaf must commit to &lt;code&gt;sha256(referenced_id || referenced_signature)&lt;/code&gt;, the concatenation of the referenced event&amp;#39;s 32-byte id and 64-byte signature. A consumer should verify the proof against its own view of the Bitcoin chain rather than rely on a relay having accepted it.&lt;/p&gt;

&lt;p&gt;Only &lt;code&gt;d&lt;/code&gt; and &lt;code&gt;s&lt;/code&gt;, together with a verifiable &lt;code&gt;content&lt;/code&gt; proof, are required to verify a timestamp. Every single-letter tag (&lt;code&gt;d&lt;/code&gt;, &lt;code&gt;p&lt;/code&gt;, &lt;code&gt;s&lt;/code&gt;, &lt;code&gt;b&lt;/code&gt;, &lt;code&gt;t&lt;/code&gt;, &lt;code&gt;c&lt;/code&gt;) is relay-indexed, so it can also serve as a query key, for example finding proofs by referenced author (&lt;code&gt;#p&lt;/code&gt;) or by anchoring block (&lt;code&gt;#b&lt;/code&gt;). &lt;code&gt;b&lt;/code&gt; and &lt;code&gt;t&lt;/code&gt; additionally duplicate what the proof itself attests; &lt;code&gt;alt&lt;/code&gt; is not indexed and serves only as a NIP-31 display label.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;{
  &amp;#34;kind&amp;#34;: 31045,
  &amp;#34;tags&amp;#34;: [
    [&amp;#34;d&amp;#34;, &amp;#34;&amp;lt;referenced-event-id&amp;gt;&amp;#34;],
    [&amp;#34;p&amp;#34;, &amp;#34;&amp;lt;referenced-event-author&amp;gt;&amp;#34;],
    [&amp;#34;s&amp;#34;, &amp;#34;&amp;lt;referenced-event-signature&amp;gt;&amp;#34;],
    [&amp;#34;b&amp;#34;, &amp;#34;&amp;lt;bitcoin-block-height&amp;gt;&amp;#34;],
    [&amp;#34;t&amp;#34;, &amp;#34;&amp;lt;bitcoin-block-time&amp;gt;&amp;#34;],
    [&amp;#34;alt&amp;#34;, &amp;#34;Complete Bitcoin Timestamp&amp;#34;],
    [&amp;#34;c&amp;#34;, &amp;#34;&amp;lt;referenced-event-created-at&amp;gt;&amp;#34;]
  ],
  &amp;#34;content&amp;#34;: &amp;#34;&amp;lt;base64 .ots proof committing to sha256(id||sig)&amp;gt;&amp;#34;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id=&#34;12-2-kind-31065-attributed-profile-2&#34;&gt;12.2 Kind &lt;code&gt;31065&lt;/code&gt;: Attributed profile&lt;/h3&gt;

&lt;p&gt;A &lt;code&gt;31065&lt;/code&gt; event is a profile for one key, published by another: how an identity that never signs anything nonetheless presents a face to the world (§9). Its &lt;code&gt;d&lt;/code&gt; tag is the delegator&amp;#39;s pubkey, the identity the profile describes, while the event is signed by a delegatee authorized to sign for it. The defining property is that &lt;code&gt;event.pubkey&lt;/code&gt;, the signer, is not the subject &lt;code&gt;d&lt;/code&gt;. A consumer must confirm, against the delegation timeline of §6, that the signer was a current delegatee of the subject before honoring the profile; one signed by a non-delegatee is ignored.&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tag&lt;/th&gt;
&lt;th&gt;Required&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;d&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;The subject: the delegator&amp;#39;s pubkey.&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;alt&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;The exact string &lt;code&gt;Attributed profile&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;code&gt;content&lt;/code&gt; is a JSON object carrying the subject&amp;#39;s presentation. Its kind-0-style fields (&lt;code&gt;name&lt;/code&gt;, &lt;code&gt;display_name&lt;/code&gt;, &lt;code&gt;about&lt;/code&gt;, &lt;code&gt;picture&lt;/code&gt;, &lt;code&gt;banner&lt;/code&gt;, &lt;code&gt;website&lt;/code&gt;, &lt;code&gt;nip05&lt;/code&gt;, &lt;code&gt;lud16&lt;/code&gt;) mean what they mean in NIP-01 and NIP-05. It may also carry the subject&amp;#39;s follow list, mute list, and a map giving relay lists for the members of the identity&amp;#39;s delegation network (the keys tied to it by delegation), so a client can present and route for the identity without a further fetch.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;{
  &amp;#34;kind&amp;#34;: 31065,
  &amp;#34;pubkey&amp;#34;: &amp;#34;&amp;lt;delegatee-that-signs&amp;gt;&amp;#34;,
  &amp;#34;tags&amp;#34;: [
    [&amp;#34;d&amp;#34;, &amp;#34;&amp;lt;delegator-pubkey-the-profile-is-for&amp;gt;&amp;#34;],
    [&amp;#34;alt&amp;#34;, &amp;#34;Attributed profile&amp;#34;]
  ],
  &amp;#34;content&amp;#34;: &amp;#34;{\&amp;#34;name\&amp;#34;:\&amp;#34;…\&amp;#34;,\&amp;#34;display_name\&amp;#34;:\&amp;#34;…\&amp;#34;,\&amp;#34;about\&amp;#34;:\&amp;#34;…\&amp;#34;,\&amp;#34;website\&amp;#34;:\&amp;#34;…\&amp;#34;,\&amp;#34;nip05\&amp;#34;:\&amp;#34;…\&amp;#34;,\&amp;#34;picture\&amp;#34;:\&amp;#34;…\&amp;#34;,\&amp;#34;relay_lists_by_pubkey\&amp;#34;:{\&amp;#34;&amp;lt;pubkey&amp;gt;\&amp;#34;:{\&amp;#34;readWriteRelays\&amp;#34;:[[\&amp;#34;r\&amp;#34;,\&amp;#34;&amp;lt;relay-url&amp;gt;\&amp;#34;,\&amp;#34;&amp;lt;scope&amp;gt;\&amp;#34;]],\&amp;#34;favoriteRelays\&amp;#34;:[\&amp;#34;&amp;lt;relay-url&amp;gt;\&amp;#34;],\&amp;#34;relaySets\&amp;#34;:[{\&amp;#34;id\&amp;#34;:\&amp;#34;…\&amp;#34;,\&amp;#34;name\&amp;#34;:\&amp;#34;…\&amp;#34;,\&amp;#34;relayUrls\&amp;#34;:[\&amp;#34;&amp;lt;relay-url&amp;gt;\&amp;#34;]}]}},\&amp;#34;publicly_muted_pubkey_hex_ids\&amp;#34;:[\&amp;#34;&amp;lt;muted-pubkey&amp;gt;\&amp;#34;],\&amp;#34;current_snapshot_of_dir_indir_followed_pubkey\&amp;#34;:[[\&amp;#34;p\&amp;#34;,\&amp;#34;&amp;lt;followed-pubkey&amp;gt;\&amp;#34;]]}&amp;#34;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Because &lt;code&gt;31065&lt;/code&gt; is addressable, the current profile for an identity is simply the latest one whose &lt;code&gt;d&lt;/code&gt; is that identity, signed by a key that is currently its delegatee. When the signer is rotated, the new signer republishes, and the identity&amp;#39;s face carries across the change unbroken.&lt;/p&gt;

&lt;h3 id=&#34;12-3-kind-31066-re-ratification-declaration-2&#34;&gt;12.3 Kind &lt;code&gt;31066&lt;/code&gt;: Re-ratification declaration&lt;/h3&gt;

&lt;p&gt;A &lt;code&gt;31066&lt;/code&gt; event can be used by key A to re-ratify an event signed by key B with objective signing time T (§7), where A currently disavows actions taken by B at T (§10). The &lt;code&gt;d&lt;/code&gt; tag contains the re-ratifying pubkey and each &lt;code&gt;e&lt;/code&gt; tag is the id of a re-ratified event. The re-ratification is valid only if the &lt;code&gt;31066&lt;/code&gt; event is signed by a key whose actions the re-ratifying key currently avows (which includes the re-ratifying key itself), and only if no &lt;code&gt;e&lt;/code&gt; tag contains the declaration&amp;#39;s own event id. The &lt;code&gt;31066&lt;/code&gt; event must be submitted for Bitcoin timestamping and is effective starting from the time of the block in which its proof is anchored. If there are multiple valid and effective &lt;code&gt;31066&lt;/code&gt; events with the same re-ratifying pubkey in their &lt;code&gt;d&lt;/code&gt; tag, the one with the latest &lt;code&gt;created_at&lt;/code&gt; governs. A re-ratification overrides only disavowals recorded on-chain before the time of its anchoring block; a disavowal recorded after that time prevails over the re-ratification.&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tag&lt;/th&gt;
&lt;th&gt;Required&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;d&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;The re-ratifying pubkey.&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;e&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;yes, repeated&lt;/td&gt;
&lt;td&gt;Id of a re-ratified event, one tag per id.&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;alt&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Re-ratification declaration&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;pre&gt;&lt;code&gt;{
  &amp;#34;kind&amp;#34;: 31066,
  &amp;#34;pubkey&amp;#34;: &amp;#34;&amp;lt;signing-key&amp;gt;&amp;#34;,
  &amp;#34;tags&amp;#34;: [
    [&amp;#34;d&amp;#34;, &amp;#34;&amp;lt;re-ratifying-pubkey&amp;gt;&amp;#34;],
    [&amp;#34;e&amp;#34;, &amp;#34;&amp;lt;re-ratified-event-id&amp;gt;&amp;#34;],
    [&amp;#34;e&amp;#34;, &amp;#34;&amp;lt;re-ratified-event-id&amp;gt;&amp;#34;],
    [&amp;#34;alt&amp;#34;, &amp;#34;Re-ratification declaration&amp;#34;]
  ],
  &amp;#34;content&amp;#34;: &amp;#34;&amp;#34;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&#34;13-reference-implementation-2&#34;&gt;13. Reference implementation&lt;/h2&gt;

&lt;p&gt;Inkan (&lt;code&gt;https://www.inkan.cc&lt;/code&gt;) implements this specification as a working Nostr client and a cooperating relay at &lt;code&gt;wss://relay.inkan.cc&lt;/code&gt;. Delegation, revocation, permanent invalidation, avowal, and disavowal are recorded by an Ethereum contract deployed at &lt;code&gt;0x385C0A272b1f44687cb360557b25827bD7CdB7eb&lt;/code&gt;, which is the normative reference for the exact on-chain declaration encoding. A separate, network-disconnected &amp;#34;Management Utility&amp;#34; generates keys and signs declarations on an air-gapped machine, so a master key can be created and used to bootstrap an identity without ever touching a networked host.&lt;/p&gt;
 &lt;/blockquote&gt;
    </content>
    <updated>2026-10-22T05:52:09Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs2xgtfpgfdez42yx5jut4j8jgjnhd7w6sl440tyuzs6wnelytwtzcpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yv8nntnp</id>
    
      <title type="html">I&amp;#39;ve tried driving, skateboarding, riding a bicycle, using a ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs2xgtfpgfdez42yx5jut4j8jgjnhd7w6sl440tyuzs6wnelytwtzcpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yv8nntnp" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs20vguhp4nd4nv6vmjfwrft7ggetl54pz42eyy5rkq4tyrmnpecfcpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtca0fv2x&#39;&gt;nevent1q…fv2x&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I&amp;#39;ve tried driving, skateboarding, riding a bicycle, using a checking account, pilates, long division, excel, bodybuilding, hula hoops, powerpoint, and a few others, can &amp;#39;t remember all of them right now. Not to speak of such feats as reading or learning Spanish.
    </content>
    <updated>2026-10-22T05:05:51Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsz8cedh822nfptd5crdcekuqplsw2n4ra69w26uzhpz3rsjwjgqfqpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvj0hhsz</id>
    
      <title type="html">This generally makes sense to me, except I don&amp;#39;t think that ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsz8cedh822nfptd5crdcekuqplsw2n4ra69w26uzhpz3rsjwjgqfqpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvj0hhsz" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8j3g6f5k9yvme4jffd0zww6jsasef473gfnutrtaxnuy32p3rm2gpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtcc7c3z4&#39;&gt;nevent1q…c3z4&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;This generally makes sense to me, except I don&amp;#39;t think that glm 5.3 quite captured the sense in which I meant to anchor Ethereum to Bitcoin through OTS.&lt;br/&gt;&lt;br/&gt;First, I agree beacon block roots are the right thing to timestamp. So suppose I&amp;#39;ve been timestamping beacon block roots from the real Ethereum chain on Bitcoin via OTS weekly, and I&amp;#39;ve been doing that for 20 years.&lt;br/&gt;&lt;br/&gt;So 20 years later, I now want to hand someone the real chain plus evidence that it&amp;#39;s the real one. I give them the chain as a candidate, together with the OTS proofs I&amp;#39;ve produced. Their client then checks two things: (i) the candidate chain verifies internally, with all signatures and protocol rules etc; and (ii) each beacon block root in the candidate comes with a valid OTS timestamp (which their client verifies against bitcoin) falling shortly after that root&amp;#39;s claimed time. Their client accepts the history only if both tests pass.&lt;br/&gt;&lt;br/&gt;So then an attacker can present a fake history, but the client will demand to also see the 20 years of OTS proofs for that fake chain&amp;#39;s own beacon block roots. And the attacker cannot create these after the fact. For example, a timestamp from 2029 can only exist if the root existed in 2029. So the only type of attacker who can pass both tests is one who has been building and timestamping the fake chain in real time for the past 20 years. So fabricating a fake chain retroactively, in an instant, can no longer be done, the attacker must have been working on it for 20 years.&lt;br/&gt;&lt;br/&gt;That was the point.
    </content>
    <updated>2026-10-21T15:37:16Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsz8c3g0e9hfv37jcw2kl2v2zap5k3t53n5ahxa5rm2ky4u3mlmw0spz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvmzjl8e</id>
    
      <title type="html">One thing that currently bothers me about rootstock, just based ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsz8c3g0e9hfv37jcw2kl2v2zap5k3t53n5ahxa5rm2ky4u3mlmw0spz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvmzjl8e" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfa3qqxgq9vhpv4pfk0hphtq0m98j8evmw99f9zp42ywykja09vdspz4mhxue69uhhyetvv9ujuerpd46hxtnfduhs9u9edn&#39;&gt;nevent1q…9edn&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;One thing that currently bothers me about rootstock, just based on the above discussion, is that it seems like you&amp;#39;re supposed to trust the pegnatories, which I understand are anonymous. I hear this might get fixed but my understanding is that it&amp;#39;s currently not fixed. And also it&amp;#39;s not yet clear to me that the other properties of rootstock are necessarily better for inkan in any sort of decisive way. I can&amp;#39;t say that I know blockchains well enough to be confident in my intuitions on this, but this discussion is at least helping me improve these intuitions and I&amp;#39;m not yet seeing anything decisive so far.&lt;br/&gt;&lt;br/&gt;The vibe of the ethereum/bitcoin discussions reminds me of debates about the gold standard, and I also tend to find those debates a bit suspect. Not exactly meaningless, just requiring very careful scrutiny of each claim that is being made. It&amp;#39;s not the sort of thing I simply want to pick an opinion about.
    </content>
    <updated>2026-10-21T13:39:38Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsgytfmnx68temvetm3hark2w3zx73tqn0ryx244ju8ejh3u56kqsqpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvjqxggy</id>
    
      <title type="html">&amp;#34;you are guaranteed to agree with everyone who has been ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsgytfmnx68temvetm3hark2w3zx73tqn0ryx244ju8ejh3u56kqsqpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvjqxggy" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsz0deywm57u3apey3yf288vkm6scjzlqerjan6n4rjvkw3lm80rkspz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsyu07jt&#39;&gt;nevent1q…07jt&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;&amp;#34;you are guaranteed to agree with everyone who has been online as often as you are&amp;#34;&lt;br/&gt;&lt;br/&gt;I think it&amp;#39;s not exactly that they need to be online as often as I am. My current understanding is that, if they are online say every two months or so, they can know based on the protocol&amp;#39;s fixed exit rules that after these two months the overwhelming majority of stake from the validators that they last checked must still be locked. So they can know that, if they were looking at a conflicting history that contradicts the real history, billions of dollars must have been slashable. So checking every two months gives you that kind of certainty. And if you are offline for 20 years, what it takes is to carefully obtain a recent checkpoint from independent sources, I guess carefully enough for the checkpoint to be trustworthy. It seems like this should work in practice (new Ethereum nodes need to do it when they first start up), and it doesn&amp;#39;t feel all that different from being able to &amp;#34;hear&amp;#34; the true bitcoin chain.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;#34;even if they dont unstake, they can share a fake history with a zk system without making their signatures public so they cant be slashed&amp;#34;&lt;br/&gt;&lt;br/&gt;This just seems to mean that it&amp;#39;s not such a good idea to accept zk proofs as verification, which you don&amp;#39;t have to do. In other words, all this enables is to serve a sort of private forgery of Ethereum to verifiers that accept zk proofs and don&amp;#39;t demand raw signatures. So as long as you don&amp;#39;t accept zk proofs, you&amp;#39;re not going to be a victim of this.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;#34;A checkpointing node can be safe, but that is worthless for any programs or on-chain script or stateless functions.&amp;#34;&lt;br/&gt;&lt;br/&gt;Inkan doesn&amp;#39;t use such on-chain scripts or stateless functions, so it doesn&amp;#39;t seem like an issue in practice.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;#34;But also, why would i accept ethereum limitations when i dont have to?&amp;#34;&lt;br/&gt;&lt;br/&gt;I&amp;#39;m still trying to figure out if the alternative has real advantages. With rootstock, my understanding based on the conversation above is that you&amp;#39;re supposed to trust the reputation of the pegnatories, which are supposed to be both respected companies and at the same time anonymous? I hear that this may be getting fixed, but until it gets fixed this seems like a reason to not use it?&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Also, I wonder if one could periodically record Ethereum state roots on Bitcoin with OTS, say once per week. So then, if an attacker wants to sell me a fake history of Ethereum in 20 years, it seems like they&amp;#39;d have to have put a lot of effort into building that history, they&amp;#39;d have had to start 20 years ago, run a parallel chain in real time, and leave the publicly visible stream of commitments on bitcoin. If I&amp;#39;m not misunderstanding things, this recording of state roots on Bitcoin with OTS actually seems like a good idea, I&amp;#39;d hope someone is doing it.
    </content>
    <updated>2026-10-21T12:04:53Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsthjzdmlkynqj9wjzxfkycaxe9r0ccwastqcnlaqamxxlgyvryy3spz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvsyg7ff</id>
    
      <title type="html">The discussion here justifies a bit Plato: . . . Socrates: Enough ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsthjzdmlkynqj9wjzxfkycaxe9r0ccwastqcnlaqamxxlgyvryy3spz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvsyg7ff" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqqqq0vq8487a6hcx88zxfv0rwx8pshqhaq5csrepzegjkgfshyuqpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtctsekcd&#39;&gt;nevent1q…ekcd&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;The discussion here justifies a bit Plato:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;. . . Socrates: Enough appears to have been said by us of a true and false art of speaking.&lt;br/&gt;&lt;br/&gt;Phaedrus: Certainly.&lt;br/&gt;&lt;br/&gt;Socrates: But there is something yet to be said of propriety and impropriety of writing.&lt;br/&gt;&lt;br/&gt;Phaedrus: Yes.&lt;br/&gt;&lt;br/&gt;Socrates: Do you know how you can speak or act about rhetoric in a manner which will be acceptable to God?&lt;br/&gt;&lt;br/&gt;Phaedrus: No, indeed. Do you?&lt;br/&gt;&lt;br/&gt;Socrates: I have heard a tradition of the ancients, whether true or not they only know; although if we had found the truth ourselves, do you think that we should care much about the opinions of men?&lt;br/&gt;&lt;br/&gt;Phaedrus: Your question needs no answer; but I wish that you would tell me what you say that you have heard.&lt;br/&gt;&lt;br/&gt;Socrates: At the Egyptian city of Naucratis, there was a famous old god, whose name was Theuth; the bird which is called the Ibis is sacred to him, and he was the inventor of many arts, such as arithmetic and calculation and geometry and astronomy and draughts and dice, but his great discovery was the use of letters. Now in those days the god Thamus was the king of the whole country of Egypt; and he dwelt in that great city of Upper Egypt which the Hellenes call Egyptian Thebes, and the god himself is called by them Ammon. To them came Theuth and showed his inventions, desiring that the other Egyptians might be allowed to have the benefit of them. He enumerated them, and Thamus enquired about their several uses, and praised some of them and censured others, as he approved or disapproved of them. It would take a long time to repeat all that Thamus said to Theuth in praise or blame of the various arts. But when they came to letters, This, said Theuth, will make the Egyptians wiser and give them better memories; it is a drug both for the memory and for the wit. Thamus replied: O most ingenious Theuth, the parent or inventor of an art is not always the best judge of the utility or inutility of his own inventions to the users of them. And in this instance, you who are the father of letters, from a paternal love of your own children have been led to attribute to them a quality which they cannot have; for this discovery of yours will create forgetfulness in the learners&amp;#39; souls, because they will not use their memories; they will trust to the external written characters and not remember of themselves. The drug which you have discovered is an aid not to memory, but to reminiscence, and you give your disciples not truth, but only the semblance of truth; they will be hearers of many things and will have learned nothing; they will appear to be omniscient and will generally know nothing; they will be tiresome company, having the show of wisdom without the reality.&lt;br/&gt;&lt;br/&gt;Phaedrus: Yes, Socrates, you can easily invent tales of Egypt, or of any other country.&lt;br/&gt;&lt;br/&gt;Socrates: There was a tradition in the temple of Dodona that oaks first gave prophetic utterances. The men of old, unlike in their simplicity to young philosophy, deemed that if they heard the truth even from &amp;#34;oak or rock,&amp;#34; it was enough for them; whereas you seem to consider not whether a thing is or is not true, but who the speaker is and from what country the tale comes.&lt;br/&gt;&lt;br/&gt;--- Plato, Phaedrus
    </content>
    <updated>2026-10-21T05:40:00Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsyj2hlsn4va8w9yf28hhn5jt5u64g6m2y7hkakhg7udpht4v99tdcpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvt8gyu3</id>
    
      <title type="html">I remembered this myth a few years ago and found it to be a ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsyj2hlsn4va8w9yf28hhn5jt5u64g6m2y7hkakhg7udpht4v99tdcpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvt8gyu3" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqqqqt3p5u7rgmnaf6ef0m80vtqlpue3emkppscpq58flyskjz06cppemhxue69uhkummn9ekx7mp06pwv0q&#39;&gt;nevent1q…wv0q&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I remembered this myth a few years ago and found it to be a pretty good model for thinking about AI, but in the end its usefulness may be limited and it may be necessary to do one&amp;#39;s own thinking unfortunately.
    </content>
    <updated>2026-10-21T05:53:08Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs99su5zlljeskpte0gu5vlkrprmsgz49p6m450h8n9r4appda8d2qpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvf65my7</id>
    
      <title type="html">I find it hard to figure out how to best use AI when creating my ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs99su5zlljeskpte0gu5vlkrprmsgz49p6m450h8n9r4appda8d2qpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvf65my7" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsd3xjydrhpjt6aw0phyprtud8vlt7lamk2j29xeunplmr0h73n8fgpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhst55u6x&#39;&gt;nevent1q…5u6x&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I find it hard to figure out how to best use AI when creating my own posts, and also to what extent to interact with agents. Depending on the topic the agents can be interesting to talk to, or sometimes be the only ones that are willing to engage about a given topic. But the thing with AI is that, if I&amp;#39;m interested in its posts at all, I&amp;#39;m usually only interested in the content itself, not the speaker. That means I don&amp;#39;t really need a signature on the note I&amp;#39;m reading, so nostr doesn&amp;#39;t really seem like the right forum for the conversation. And having a lot of agent interactions on nostr does water the protocol down as a place / way to meet humans, which is what probably should be one of the primary functions of nostr. I mean I can have AI agent interactions in private, no need for a public forum. But also, to be clear, I don&amp;#39;t necessarily mind humans using AI in creating their own posts, as long as its done intelligently and helpful or interesting. A human influenced by AI or adopting AI output as part of their voice is still a human, just an AI-influenced one. There is going to be a lot of these, and I&amp;#39;d be wary of treating it as necessarily being a defect. Of course it could be a defect.
    </content>
    <updated>2026-10-21T03:19:55Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsw9yvszz6eys73z0k6l9d739nre7daksjwakcmsxx8d0vn0edjvnspz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvkmjzay</id>
    
      <title type="html">I&amp;#39;m trying to wrap my mind around the Ethereum side of the ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsw9yvszz6eys73z0k6l9d739nre7daksjwakcmsxx8d0vn0edjvnspz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvkmjzay" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsg0w8phz0u2wzm0hatdd3g7yw7xwsptnwyl7q5zwm9we3ka663zzcpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtc7rlp49&#39;&gt;nevent1q…lp49&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I&amp;#39;m trying to wrap my mind around the Ethereum side of the discussion. &lt;br/&gt;&lt;br/&gt;As for &amp;#34;creating checkpoints costs nothing&amp;#34;, I believe that&amp;#39;s true for keys of validators that have exited, but inside the &amp;#34;weak subjectivity&amp;#34; window a conflicting finalized checkpoint would need a third of staked ETH which then gets slashed, like billions of dollars?&lt;br/&gt;&lt;br/&gt;And &amp;#34;indistinguishable from the canonical chain&amp;#34; is only true if you have no recent valid checkpoint? If you have one, it seems like you can detect a fake chain immediately.&lt;br/&gt;&lt;br/&gt;On the &amp;#34;human judgement&amp;#34;, if you got deceived by a group of dishonest checkpoint providers it seems like you&amp;#39;d most likely notice that very soon and can then recover?&lt;br/&gt;&lt;br/&gt;In this Bitcoin vs. Ethereum discussion, it feels like there&amp;#39;s little that&amp;#39;s black/white from a technical point of view.
    </content>
    <updated>2026-10-20T05:55:06Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsgscawymzhs7kaej8yuvkljspxkra4nmkkhsdejda0fdu48406jvspz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yv5tzqyr</id>
    
      <title type="html">As for the spaces protocol trying to implement cross verification ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsgscawymzhs7kaej8yuvkljspxkra4nmkkhsdejda0fdu48406jvspz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yv5tzqyr" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0l6ctk2p8sgxykalwc6lgekds594qhvkw689c7cm8ll44nu0wl7cpz4mhxue69uhhyetvv9uju6twddskutnrvvhsht8tnn&#39;&gt;nevent1q…8tnn&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;As for the spaces protocol trying to implement cross verification (i.e. a condition that an npub must consent to getting named), I took a quick look and from what I can tell they haven&amp;#39;t pinned down any specification yet.&lt;br/&gt;&lt;br/&gt;So then the question is what shape that consent check will take on spaces. If it means only &amp;#34;the name must appear in a kind-0 profile event that&amp;#39;s signed by the named key itself,&amp;#34; then inkan master keys are locked out since they are buried under concrete and shouldn&amp;#39;t be in the business of signing anything after the initial identity creation. But if consent can also mean &amp;#34;the name appears in the kind-31065 attributed profile event that is signed by a current delegatee of the master key&amp;#34;, then cold storage identities can participate in spaces.&lt;br/&gt;&lt;br/&gt;Since the spaces protocol does not yet seem to specify how cross verification is to work, I guess this might be a good time to make the spaces people aware of this, so this more general form of consent provided through delegatee signatures gets considered.
    </content>
    <updated>2026-10-17T05:43:13Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsx3kf8j54vhs49dgajvc7napzy8u04y40xhndn53g08fgfeujrzdgpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvmqpfcd</id>
    
      <title type="html">Thanks for the pointer, this is a nicely minimal design. One ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsx3kf8j54vhs49dgajvc7napzy8u04y40xhndn53g08fgfeujrzdgpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvmqpfcd" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsv0m6p6kll6t5cage85jwecu6h5hw0zctyn4ngjhlm9frgy0p7skcpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhs32upz7&#39;&gt;nevent1q…upz7&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Thanks for the pointer, this is a nicely minimal design. One request on the wording of the reverse claim. As drafted, it says&lt;br/&gt;&lt;br/&gt;&amp;#34;User to Handle (reverse claim). The user claims the handle by setting the handle field in their kind:0 event, which is signed by their keypair.&amp;#34;&lt;br/&gt;&lt;br/&gt;Now there is a class of identities where the named key deliberately never signs anything after creation, i.e. cold storage identities. The master key stays offline permanently and delegates everyday signing to rotatable keys. &lt;br/&gt;&lt;br/&gt;In that scheme the master&amp;#39;s profile is a kind-31065 attributed profile, an event whose d tag is the master pubkey and which is signed by a current delegatee of that master pubkey.&lt;br/&gt;&lt;br/&gt;The forward claim is unaffected. For the reverse claim, it would be enough for the NIP to say that the handle field must appear in the profile event the client treats as authoritative for that key: for ordinary keys that is the self-signed kind:0, and for delegated identities it can be a kind-31065 signed by a current delegatee.&lt;br/&gt;&lt;br/&gt;The specs for these cold storage identities, including kind-31065 attributed profiles, are here:&lt;br/&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting  &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/naddr1qvzqqqr4gupzp5dxzjv0fvwuym0shmx350573re4t7mpfdm3az6mya7sl7v6s23rqy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qg3waehxw309ahx7um5wgh8w6twv5hsq2rrdakxgttnw3hhyct8v5kkjer9de6xjarfv4ej6en0wgkkummnw3ez6a62f4nr24snfm9sh&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;naddr1qv…m9sh&lt;/a&gt;&lt;/span&gt;&lt;br/&gt; &lt;/div&gt; 
&lt;h2 id=&#34;nip-proposal-5&#34;&gt;NIP Proposal&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;draft&lt;/code&gt; &lt;code&gt;optional&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This NIP specifies online identities whose private key can be created in cold storage and stay there permanently. The key never has to touch an internet-connected device, and does not have to be kept close at hand. The identity can nonetheless be used easily for everyday online authentication, such as posting, replying, messaging, or signing in to services.&lt;/p&gt;

&lt;h2 id=&#34;1-how-it-works-5&#34;&gt;1. How it works&lt;/h2&gt;

&lt;p&gt;The identity-securing key never signs Nostr events itself. It delegates signing authority to delegatee keys, which handle the everyday signing on its behalf. If a delegatee key is lost or stolen, it is replaced, and the identity is untouched.&lt;/p&gt;

&lt;h2 id=&#34;2-delegations-between-keys-5&#34;&gt;2. Delegations between keys&lt;/h2&gt;

&lt;p&gt;Delegations are time-indexed two-place relations. Between any two key pairs, at any moment, the first either delegates signing authority to the second or it does not. When it does, the second key is authorized to sign on the first&amp;#39;s behalf. When it does not, the second has no such authority.&lt;/p&gt;

&lt;p&gt;Delegations are either direct or indirect. A direct delegation arises when one key has expressly declared that it delegates signing authority to another. An indirect delegation arises because the relation is transitively closed: if X delegates to Y and Y delegates to Z, then X indirectly delegates to Z. This is what lets an identity be built as a chain (master → intermediate → signer), so that events signed by the bottom key are attributed all the way up to the master, while the master, having signed the top link once, retires to cold storage.&lt;/p&gt;

&lt;h2 id=&#34;3-how-a-direct-delegation-is-created-5&#34;&gt;3. How a direct delegation is created&lt;/h2&gt;

&lt;p&gt;A direct delegation from key pair X to key pair Y is created when both key pairs sign a &lt;strong&gt;Declaration of Delegation of Signing Authority&lt;/strong&gt;, by which X declares that it delegates signing authority to Y and Y declares that it accepts. The signed declaration is then recorded on-chain (the reference implementation uses Ethereum). The delegation begins at the time of the block in which the declaration was recorded, and remains in effect until it is revoked.&lt;/p&gt;

&lt;p&gt;One special case: this holds only if neither X nor Y has previously permanently invalidated itself (§5). If either has, no delegation is created, even though the declaration sits on-chain.&lt;/p&gt;

&lt;p&gt;As part of the declaration, X and Y also specify whether X can revoke the delegation unilaterally or whether Y&amp;#39;s consent is required. The default is unilateral revocation by X, and it is the right default for most users: if Y&amp;#39;s key is ever lost, X can still revoke it alone. Were Y&amp;#39;s consent required, a lost Y could never be revoked, because Y would no longer be available to sign.&lt;/p&gt;

&lt;h2 id=&#34;4-how-a-direct-delegation-is-terminated-5&#34;&gt;4. How a direct delegation is terminated&lt;/h2&gt;

&lt;p&gt;A direct delegation from X to Y is terminated when X signs a &lt;strong&gt;Declaration of Revocation of Signing Authority&lt;/strong&gt; and records it on-chain, with Y&amp;#39;s signature too if the original delegation required it. The delegation terminates at the time of the block in which the revocation was recorded. Everything Y signed while the delegation was in effect stays attributed to X; nothing it signs afterward does. A stolen signer therefore damages only the window between key compromise and revocation, and that window is the user&amp;#39;s to close.&lt;/p&gt;

&lt;p&gt;When a delegation and a revocation between the same X and Y land in the same block, the revocation is by convention treated as occurring first and the delegation thereafter. The convention is a tiebreaker for cases that block timestamps cannot order.&lt;/p&gt;

&lt;h2 id=&#34;5-permanent-key-invalidation-5&#34;&gt;5. Permanent key invalidation&lt;/h2&gt;

&lt;p&gt;The third declaration is the &lt;strong&gt;Declaration of Permanent Invalidation of a Key Pair&lt;/strong&gt;, signed by a key pair against itself, declaring that from then on it can no longer participate in any direct delegation, as delegator or delegatee. Once recorded on-chain, it takes effect at the time of its block. From that point, all existing direct delegations involving the key are terminated, and no new one involving it can come into existence, even if a declaration naming it is later recorded.&lt;/p&gt;

&lt;p&gt;Its main use is invalidating a compromised master key. Such a key has no delegator above it, so ordinary revocation is unavailable; permanent invalidation lets its owner withdraw it from the system entirely.&lt;/p&gt;

&lt;h2 id=&#34;6-delegation-timelines-5&#34;&gt;6. Delegation timelines&lt;/h2&gt;

&lt;p&gt;A client can read the three kinds of declaration from the chain and, for any pubkey and any past moment up to the present, compute the direct delegations that pubkey was involved in at that moment. The indirect ones follow by transitive closure. So for any pubkey a client can compile a complete timeline of every direct and indirect delegation it has ever been involved in, and trace each back to the declaration that established it. Because the rules are fixed and the data is public, every client computes the same timeline, and no server has to be trusted to report it.&lt;/p&gt;

&lt;h2 id=&#34;7-bitcoin-timestamping-of-events-5&#34;&gt;7. Bitcoin timestamping of events&lt;/h2&gt;

&lt;p&gt;Attribution needs an objective, auditable rule for when the signing of each event is deemed to have occurred. A self-declared &lt;code&gt;created_at&lt;/code&gt; proves nothing on its own.&lt;/p&gt;

&lt;p&gt;Events are anchored to Bitcoin using &lt;strong&gt;OpenTimestamps&lt;/strong&gt; (OTS). An OTS proof for an event establishes that the event and its signature existed by the time of a specific Bitcoin block. An event&amp;#39;s &lt;code&gt;created_at&lt;/code&gt; is then treated as its objective signing time when a proof shows the event and its signature existed shortly after that time. The length of the &amp;#34;shortly after&amp;#34; window is configurable; the reference implementation defaults to four hours. Events without such a proof are treated as if they carried no valid signature at all: they are not displayed, and are attributed to no one.&lt;/p&gt;

&lt;p&gt;A proof over the event id alone would show only that the event&amp;#39;s contents existed by the attested block, not that anyone had yet signed them. Binding the signature into the proof as well shows that the signature itself existed by then, which is what an objective signing time requires. These proofs are published as kind &lt;code&gt;31045&lt;/code&gt; events (§12).&lt;/p&gt;

&lt;h2 id=&#34;8-attribution-of-events-5&#34;&gt;8. Attribution of events&lt;/h2&gt;

&lt;p&gt;We now know, for any past time T and any two keys X and Y, whether X delegated (directly or indirectly) to Y at T; and for any event Y signed with both a valid signature and a valid OTS anchor, we have an objective signing time. Together these give a well-defined attribution rule:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;An event E is attributed to a key X if and only if some key Y validly signed E at a time T and, as of T, X delegated signing authority to Y.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So a text note signed by a delegatee Y during a valid delegation period from X appears on X&amp;#39;s timeline and is displayed there under X&amp;#39;s profile, as if posted by X, even though X&amp;#39;s own key never signed it.&lt;/p&gt;

&lt;h2 id=&#34;9-two-profiles-one-identity-5&#34;&gt;9. Two profiles, one identity&lt;/h2&gt;

&lt;p&gt;You log in with your signer key and sign events with it, exactly as in any other Nostr client. Those events appear on the signer&amp;#39;s own profile, and in addition on the profile of each of its delegators, up to your top-level identity.&lt;/p&gt;

&lt;p&gt;You set the signer&amp;#39;s profile by publishing a kind-0 event as usual. Separately, a signer can also set a profile &lt;em&gt;for&lt;/em&gt; each of its current delegators, so that a top-level identity can present a face to the world without signing any event itself. This delegator-profile mechanism is kind &lt;code&gt;31065&lt;/code&gt; (§12).&lt;/p&gt;

&lt;p&gt;Your identity&amp;#39;s profile is what you present to the world. Others should follow and interact with the identity, not with the signer beneath it. The signer is ephemeral and expected to be replaced; the identity is permanent, and is the thing followers should attach to.&lt;/p&gt;

&lt;h2 id=&#34;10-disavowal-5&#34;&gt;10. Disavowal&lt;/h2&gt;

&lt;p&gt;When making a delegation declaration, the delegator may declare an avowal start time and an avowal end time. When making a revocation declaration, the revoker may declare a disavowal start time and a disavowal end time. A start time of zero is interpreted as the time at which the declaration was recorded on-chain; an end time of zero means unbounded.&lt;/p&gt;

&lt;p&gt;For keys X and Y, take the latest delegation or revocation declaration between them recorded before any permanent invalidation of either (§5). If it is a delegation declaration, X avows Y&amp;#39;s actions at exactly the times T inside its avowal window; if a revocation declaration, at exactly the times T outside its disavowal window; provided, in both cases, that X directly delegated to Y at T. Y&amp;#39;s actions at T are the events Y validly signed with objective signing time T (§7).&lt;/p&gt;

&lt;p&gt;Avowal composes along delegation paths: X currently avows S&amp;#39;s actions at T if the relevant declaration between X and S avows them directly, or if, for some key Y, X avows Y&amp;#39;s actions at T, X avows Y&amp;#39;s actions at the present moment, and Y currently avows S&amp;#39;s actions at T.&lt;/p&gt;

&lt;p&gt;Clients can filter events whose signing the identity currently disavows out of the identity&amp;#39;s timeline, or display them with a disavowal badge.&lt;/p&gt;

&lt;h2 id=&#34;11-re-ratification-5&#34;&gt;11. Re-ratification&lt;/h2&gt;

&lt;p&gt;A disavowed window covers everything the disavowed key signed within it, including events whose signing was caused by the identity&amp;#39;s legitimate owner. The identity can in that situation make a kind &lt;code&gt;31066&lt;/code&gt; re-ratification declaration as described in §12.3 below, specifying the events it re-ratifies in the &lt;code&gt;e&lt;/code&gt; tags of that declaration. If the declaration is valid and effective, a client treats these events as re-ratified, until a disavowal recorded after the declaration&amp;#39;s anchoring block prevails over it (§12.3) or a later declaration governs in its place.&lt;/p&gt;

&lt;h2 id=&#34;12-event-kinds-5&#34;&gt;12. Event kinds&lt;/h2&gt;

&lt;p&gt;This NIP defines three &lt;strong&gt;addressable&lt;/strong&gt; event kinds (kinds 30000 to 39999 in NIP-01, where the latest event for a given &lt;code&gt;(pubkey, kind, d-tag)&lt;/code&gt; replaces any earlier one).&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Kind&lt;/th&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;th&gt;&lt;code&gt;d&lt;/code&gt; tag&lt;/th&gt;
&lt;th&gt;Signed by&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;31045&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Bitcoin timestamp&lt;/td&gt;
&lt;td&gt;id of the referenced event&lt;/td&gt;
&lt;td&gt;any party&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;31065&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Attributed profile&lt;/td&gt;
&lt;td&gt;the delegator&amp;#39;s pubkey&lt;/td&gt;
&lt;td&gt;a delegatee&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;31066&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Re-ratification&lt;/td&gt;
&lt;td&gt;the re-ratifying pubkey&lt;/td&gt;
&lt;td&gt;an avowed key&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 id=&#34;12-1-kind-31045-bitcoin-timestamp-5&#34;&gt;12.1 Kind &lt;code&gt;31045&lt;/code&gt;: Bitcoin timestamp&lt;/h3&gt;

&lt;p&gt;A &lt;code&gt;31045&lt;/code&gt; event carries an OpenTimestamps proof for another event (§7). It is addressable by the referenced event&amp;#39;s id, so a consumer finds the proof for an event E by querying kind &lt;code&gt;31045&lt;/code&gt; with &lt;code&gt;#d = [E.id]&lt;/code&gt;, whoever published it. Any valid proof for E is as good as any other, because the proof rests on Bitcoin and not on its publisher.&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tag&lt;/th&gt;
&lt;th&gt;Required&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;d&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;Id of the referenced event. The addressable key.&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;s&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;Signature of the referenced event. With &lt;code&gt;d&lt;/code&gt;, binds the proof to a signed event, not just an id.&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;p&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;Author pubkey of the referenced event.&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;b&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;Bitcoin block height of the attestation, or &lt;code&gt;not_yet_available&lt;/code&gt; while pending.&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;t&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;Bitcoin block time (unix seconds), or &lt;code&gt;not_yet_available&lt;/code&gt; while pending.&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;c&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;&lt;code&gt;created_at&lt;/code&gt; of the referenced event, when known.&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;alt&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;NIP-31 summary, e.g. &lt;code&gt;Complete Bitcoin Timestamp&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;code&gt;content&lt;/code&gt; is the base64-encoded OpenTimestamps (&lt;code&gt;.ots&lt;/code&gt;) proof. Its leaf must commit to &lt;code&gt;sha256(referenced_id || referenced_signature)&lt;/code&gt;, the concatenation of the referenced event&amp;#39;s 32-byte id and 64-byte signature. A consumer should verify the proof against its own view of the Bitcoin chain rather than rely on a relay having accepted it.&lt;/p&gt;

&lt;p&gt;Only &lt;code&gt;d&lt;/code&gt; and &lt;code&gt;s&lt;/code&gt;, together with a verifiable &lt;code&gt;content&lt;/code&gt; proof, are required to verify a timestamp. Every single-letter tag (&lt;code&gt;d&lt;/code&gt;, &lt;code&gt;p&lt;/code&gt;, &lt;code&gt;s&lt;/code&gt;, &lt;code&gt;b&lt;/code&gt;, &lt;code&gt;t&lt;/code&gt;, &lt;code&gt;c&lt;/code&gt;) is relay-indexed, so it can also serve as a query key, for example finding proofs by referenced author (&lt;code&gt;#p&lt;/code&gt;) or by anchoring block (&lt;code&gt;#b&lt;/code&gt;). &lt;code&gt;b&lt;/code&gt; and &lt;code&gt;t&lt;/code&gt; additionally duplicate what the proof itself attests; &lt;code&gt;alt&lt;/code&gt; is not indexed and serves only as a NIP-31 display label.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;{
  &amp;#34;kind&amp;#34;: 31045,
  &amp;#34;tags&amp;#34;: [
    [&amp;#34;d&amp;#34;, &amp;#34;&amp;lt;referenced-event-id&amp;gt;&amp;#34;],
    [&amp;#34;p&amp;#34;, &amp;#34;&amp;lt;referenced-event-author&amp;gt;&amp;#34;],
    [&amp;#34;s&amp;#34;, &amp;#34;&amp;lt;referenced-event-signature&amp;gt;&amp;#34;],
    [&amp;#34;b&amp;#34;, &amp;#34;&amp;lt;bitcoin-block-height&amp;gt;&amp;#34;],
    [&amp;#34;t&amp;#34;, &amp;#34;&amp;lt;bitcoin-block-time&amp;gt;&amp;#34;],
    [&amp;#34;alt&amp;#34;, &amp;#34;Complete Bitcoin Timestamp&amp;#34;],
    [&amp;#34;c&amp;#34;, &amp;#34;&amp;lt;referenced-event-created-at&amp;gt;&amp;#34;]
  ],
  &amp;#34;content&amp;#34;: &amp;#34;&amp;lt;base64 .ots proof committing to sha256(id||sig)&amp;gt;&amp;#34;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id=&#34;12-2-kind-31065-attributed-profile-5&#34;&gt;12.2 Kind &lt;code&gt;31065&lt;/code&gt;: Attributed profile&lt;/h3&gt;

&lt;p&gt;A &lt;code&gt;31065&lt;/code&gt; event is a profile for one key, published by another: how an identity that never signs anything nonetheless presents a face to the world (§9). Its &lt;code&gt;d&lt;/code&gt; tag is the delegator&amp;#39;s pubkey, the identity the profile describes, while the event is signed by a delegatee authorized to sign for it. The defining property is that &lt;code&gt;event.pubkey&lt;/code&gt;, the signer, is not the subject &lt;code&gt;d&lt;/code&gt;. A consumer must confirm, against the delegation timeline of §6, that the signer was a current delegatee of the subject before honoring the profile; one signed by a non-delegatee is ignored.&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tag&lt;/th&gt;
&lt;th&gt;Required&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;d&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;The subject: the delegator&amp;#39;s pubkey.&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;alt&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;The exact string &lt;code&gt;Attributed profile&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;code&gt;content&lt;/code&gt; is a JSON object carrying the subject&amp;#39;s presentation. Its kind-0-style fields (&lt;code&gt;name&lt;/code&gt;, &lt;code&gt;display_name&lt;/code&gt;, &lt;code&gt;about&lt;/code&gt;, &lt;code&gt;picture&lt;/code&gt;, &lt;code&gt;banner&lt;/code&gt;, &lt;code&gt;website&lt;/code&gt;, &lt;code&gt;nip05&lt;/code&gt;, &lt;code&gt;lud16&lt;/code&gt;) mean what they mean in NIP-01 and NIP-05. It may also carry the subject&amp;#39;s follow list, mute list, and a map giving relay lists for the members of the identity&amp;#39;s delegation network (the keys tied to it by delegation), so a client can present and route for the identity without a further fetch.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;{
  &amp;#34;kind&amp;#34;: 31065,
  &amp;#34;pubkey&amp;#34;: &amp;#34;&amp;lt;delegatee-that-signs&amp;gt;&amp;#34;,
  &amp;#34;tags&amp;#34;: [
    [&amp;#34;d&amp;#34;, &amp;#34;&amp;lt;delegator-pubkey-the-profile-is-for&amp;gt;&amp;#34;],
    [&amp;#34;alt&amp;#34;, &amp;#34;Attributed profile&amp;#34;]
  ],
  &amp;#34;content&amp;#34;: &amp;#34;{\&amp;#34;name\&amp;#34;:\&amp;#34;…\&amp;#34;,\&amp;#34;display_name\&amp;#34;:\&amp;#34;…\&amp;#34;,\&amp;#34;about\&amp;#34;:\&amp;#34;…\&amp;#34;,\&amp;#34;website\&amp;#34;:\&amp;#34;…\&amp;#34;,\&amp;#34;nip05\&amp;#34;:\&amp;#34;…\&amp;#34;,\&amp;#34;picture\&amp;#34;:\&amp;#34;…\&amp;#34;,\&amp;#34;relay_lists_by_pubkey\&amp;#34;:{\&amp;#34;&amp;lt;pubkey&amp;gt;\&amp;#34;:{\&amp;#34;readWriteRelays\&amp;#34;:[[\&amp;#34;r\&amp;#34;,\&amp;#34;&amp;lt;relay-url&amp;gt;\&amp;#34;,\&amp;#34;&amp;lt;scope&amp;gt;\&amp;#34;]],\&amp;#34;favoriteRelays\&amp;#34;:[\&amp;#34;&amp;lt;relay-url&amp;gt;\&amp;#34;],\&amp;#34;relaySets\&amp;#34;:[{\&amp;#34;id\&amp;#34;:\&amp;#34;…\&amp;#34;,\&amp;#34;name\&amp;#34;:\&amp;#34;…\&amp;#34;,\&amp;#34;relayUrls\&amp;#34;:[\&amp;#34;&amp;lt;relay-url&amp;gt;\&amp;#34;]}]}},\&amp;#34;publicly_muted_pubkey_hex_ids\&amp;#34;:[\&amp;#34;&amp;lt;muted-pubkey&amp;gt;\&amp;#34;],\&amp;#34;current_snapshot_of_dir_indir_followed_pubkey\&amp;#34;:[[\&amp;#34;p\&amp;#34;,\&amp;#34;&amp;lt;followed-pubkey&amp;gt;\&amp;#34;]]}&amp;#34;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Because &lt;code&gt;31065&lt;/code&gt; is addressable, the current profile for an identity is simply the latest one whose &lt;code&gt;d&lt;/code&gt; is that identity, signed by a key that is currently its delegatee. When the signer is rotated, the new signer republishes, and the identity&amp;#39;s face carries across the change unbroken.&lt;/p&gt;

&lt;h3 id=&#34;12-3-kind-31066-re-ratification-declaration-5&#34;&gt;12.3 Kind &lt;code&gt;31066&lt;/code&gt;: Re-ratification declaration&lt;/h3&gt;

&lt;p&gt;A &lt;code&gt;31066&lt;/code&gt; event can be used by key A to re-ratify an event signed by key B with objective signing time T (§7), where A currently disavows actions taken by B at T (§10). The &lt;code&gt;d&lt;/code&gt; tag contains the re-ratifying pubkey and each &lt;code&gt;e&lt;/code&gt; tag is the id of a re-ratified event. The re-ratification is valid only if the &lt;code&gt;31066&lt;/code&gt; event is signed by a key whose actions the re-ratifying key currently avows (which includes the re-ratifying key itself), and only if no &lt;code&gt;e&lt;/code&gt; tag contains the declaration&amp;#39;s own event id. The &lt;code&gt;31066&lt;/code&gt; event must be submitted for Bitcoin timestamping and is effective starting from the time of the block in which its proof is anchored. If there are multiple valid and effective &lt;code&gt;31066&lt;/code&gt; events with the same re-ratifying pubkey in their &lt;code&gt;d&lt;/code&gt; tag, the one with the latest &lt;code&gt;created_at&lt;/code&gt; governs. A re-ratification overrides only disavowals recorded on-chain before the time of its anchoring block; a disavowal recorded after that time prevails over the re-ratification.&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tag&lt;/th&gt;
&lt;th&gt;Required&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;d&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;The re-ratifying pubkey.&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;e&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;yes, repeated&lt;/td&gt;
&lt;td&gt;Id of a re-ratified event, one tag per id.&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;code&gt;alt&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Re-ratification declaration&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;pre&gt;&lt;code&gt;{
  &amp;#34;kind&amp;#34;: 31066,
  &amp;#34;pubkey&amp;#34;: &amp;#34;&amp;lt;signing-key&amp;gt;&amp;#34;,
  &amp;#34;tags&amp;#34;: [
    [&amp;#34;d&amp;#34;, &amp;#34;&amp;lt;re-ratifying-pubkey&amp;gt;&amp;#34;],
    [&amp;#34;e&amp;#34;, &amp;#34;&amp;lt;re-ratified-event-id&amp;gt;&amp;#34;],
    [&amp;#34;e&amp;#34;, &amp;#34;&amp;lt;re-ratified-event-id&amp;gt;&amp;#34;],
    [&amp;#34;alt&amp;#34;, &amp;#34;Re-ratification declaration&amp;#34;]
  ],
  &amp;#34;content&amp;#34;: &amp;#34;&amp;#34;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&#34;13-reference-implementation-5&#34;&gt;13. Reference implementation&lt;/h2&gt;

&lt;p&gt;Inkan (&lt;code&gt;https://www.inkan.cc&lt;/code&gt;) implements this specification as a working Nostr client and a cooperating relay at &lt;code&gt;wss://relay.inkan.cc&lt;/code&gt;. Delegation, revocation, permanent invalidation, avowal, and disavowal are recorded by an Ethereum contract deployed at &lt;code&gt;0x385C0A272b1f44687cb360557b25827bD7CdB7eb&lt;/code&gt;, which is the normative reference for the exact on-chain declaration encoding. A separate, network-disconnected &amp;#34;Management Utility&amp;#34; generates keys and signs declarations on an air-gapped machine, so a master key can be created and used to bootstrap an identity without ever touching a networked host.&lt;/p&gt;
 &lt;/blockquote&gt; &lt;br/&gt; And if you&amp;#39;d observe or interact with some live cold storage identities, you can find a list under the &amp;#34;Explore&amp;#34; tab at &lt;a href=&#34;https://www.inkan.cc&#34;&gt;https://www.inkan.cc&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;I&amp;#39;m happy to answer any questions or propose concrete draft language for your NIP.
    </content>
    <updated>2026-10-20T01:54:12Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs8kemkxd25krh6h9rtyxwcvvr4qemyw4254a234cw8yq423yndt7spz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yv3c5d2r</id>
    
      <title type="html">https://music.youtube.com/watch?v=e2CliA8PuRM</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs8kemkxd25krh6h9rtyxwcvvr4qemyw4254a234cw8yq423yndt7spz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yv3c5d2r" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsx3wj3zt332laf06mt5w2cce2gv86j0c488adyregnmglahcehx5cpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtcy5za9x&#39;&gt;nevent1q…za9x&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://music.youtube.com/watch?v=e2CliA8PuRM&#34;&gt;https://music.youtube.com/watch?v=e2CliA8PuRM&lt;/a&gt;
    </content>
    <updated>2026-10-19T21:43:46Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsyv34ed07q6c85j37eleyfwzu83jtz5r9zh5k7sjkl8p38svp8z3cpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvwwk8we</id>
    
      <title type="html">So every few weeks nostr wonders if all the bitcoin talk on here ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsyv34ed07q6c85j37eleyfwzu83jtz5r9zh5k7sjkl8p38svp8z3cpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvwwk8we" />
    <content type="html">
      So every few weeks nostr wonders if all the bitcoin talk on here is boring the &amp;#34;normies&amp;#34; away. It would be nice if that were the only problem, but that&amp;#39;s actually too generous.&lt;br/&gt;&lt;br/&gt;The less flattering truth is that the bitcoin culture is substituting for technical reflection and depth. You ask why some obviously wanted thing isn&amp;#39;t getting done and nobody can state any reasons, all you get is a vibe where an argument should be.&lt;br/&gt;&lt;br/&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qvzqqqqqqypzqmjxss3dld622uu8q25gywum9qtg4w4cv4064jmg20xsac2aam5nqythwumn8ghj7un9d3shjtnswf5k6ctv9ehx2ap0qy88wumn8ghj7mn0wvhxcmmv9uqzqqqq2wn8qzp5mu9hfsq6k5qqy94kkvkpkealrvdqqaf0lk6lvrfemr87x2&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…87x2&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; &gt; without a central authority&lt;br/&gt;&gt; Ethereum &lt;br/&gt;&lt;br/&gt;😂🤣 &lt;/blockquote&gt;
    </content>
    <updated>2026-10-19T09:19:52Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs0n0ugh5c3skj0pxztjajs53ymmyhccwk9n764n2plc4t0aa7n9espz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvk9kz5m</id>
    
      <title type="html">As for the oracle problem, it seems that this is solved in ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs0n0ugh5c3skj0pxztjajs53ymmyhccwk9n764n2plc4t0aa7n9espz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvk9kz5m" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsr86t8k8rwuw0u8pfnqdh0vxarhal0zldygxfjz4zqxuy76vhwdtcppemhxue69uhkummn9ekx7mp0grryfx&#39;&gt;nevent1q…ryfx&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;As for the oracle problem, it seems that this is solved in practice for the special case of determining the approximate time at which a given block was produced. A new block needs to be accepted by thousands of independent nodes that validate it, and each of those nodes checks the block against its own clock. And blocks that arrive are also logged independently by nodes, explorers, exchanges, archives and researchers all over the world, and you&amp;#39;d have to rewrite all these independent records to fake the time at which a given block is thought to have occurred. I believe noone has ever seriously disputed the approximate time when a given block occurred? If that&amp;#39;s right, the oracle problem doesn&amp;#39;t seem like an actual practical problem for either Bitcoin or Ethereum as far as block time determinations are concerned. You seem to agree with this, for example when you say that we can &amp;#34;borrow&amp;#34; time-anchoring from the blockchain.&lt;br/&gt;&lt;br/&gt;And as for global state, what exactly prevents us from borrowing that? For Bitcoin specifically, there may be practical difficulties and you may need to run a full node to do it. But that&amp;#39;s design property of Bitcoin, not of blockchains. Inkan borrows global state from Ethereum in actual practice. If it can be borrowed and solves a central practical problem for the nostr protocol, why not borrow it rather than sit on the problem?
    </content>
    <updated>2026-10-17T12:54:10Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsvnj54qu4cv5nfzlszykvnpalkfxpkk8xkjtjz420un590gkla9ycpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvtjwetd</id>
    
      <title type="html">&amp;#34;You can give them these strings and maybe they come back ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsvnj54qu4cv5nfzlszykvnpalkfxpkk8xkjtjz420un590gkla9ycpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvtjwetd" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsff4c0e2ynyxvhlkrzv4qqu8tzr55y5pg08jxlmthujnhlchsaa0cpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtcyggdfu&#39;&gt;nevent1q…gdfu&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;&amp;#34;You can give them these strings and maybe they come back with an asnwer; or maybe not, at which point you will have to ask some other server/relay.&amp;#34;&lt;br/&gt;&lt;br/&gt;This quote, and also the rest of your post, is circling around a conceptual issue that is of crucial importance to the nostr protocol, namely the question of completeness.&lt;br/&gt;&lt;br/&gt;If you make a query to the relay network, you can never be sure whether the response you receive is complete in the sense of containing *all* of the existing material that is responsive to your query.&lt;br/&gt;&lt;br/&gt;This uncertainty-as-to-completess is acceptable for many everyday use cases. But there are some extremely important use cases for which this uncertainty is absolutely unacceptable. Sometimes you really have to be sure that, after having made a query and received a response, you have received the *complete* set of items that are responsive to that query.&lt;br/&gt;&lt;br/&gt;We discussed this earlier in connection with key rotation, where a working system requires that a client can discover *all* of the valid key revocation declarations that have been made by a given pubkey.&lt;br/&gt;&lt;br/&gt;For this, nostr relays are not sufficient, for the reasons that you describe in your post. A blockchain can furnish the required completeness property and make key rotation and cold storage identities possible, thereby fixing the central defect that is making the current protocol not fully practicable.
    </content>
    <updated>2026-10-17T08:14:15Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs8z4qj4w8mhjwuh3wccmur02dp42k42cz274exqylayjlrsw0qezqpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvwns63p</id>
    
      <title type="html">FYI, if you currently have write access to the Inkan relay but do ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs8z4qj4w8mhjwuh3wccmur02dp42k42cz274exqylayjlrsw0qezqpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvwns63p" />
    <content type="html">
      FYI, if you currently have write access to the Inkan relay but do *not* yet have access to the AI Search, the reason is that you have not yet signed the current version of the Terms of Use, which covers the AI Search.&lt;br/&gt;&lt;br/&gt;You can sign the Terms of Use by logging in and going to &amp;#34;Settings &amp;gt; Inkan Settings &amp;gt; Service Access&amp;#34;. If I receive these, I can then switch on the AI Search for you and you can access it in the nav bar under &amp;#34;Assay.&amp;#34;&lt;br/&gt;&lt;br/&gt;If you have any other questions about the AI Search, let me know any time.
    </content>
    <updated>2026-10-17T03:38:08Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsf393y5yrdky54kfeuatun6h98nvq9vnjgryuswtl74slgdhffsgspz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvwm55zr</id>
    
      <title type="html">Hi.</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsf393y5yrdky54kfeuatun6h98nvq9vnjgryuswtl74slgdhffsgspz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvwm55zr" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqqrx69c4edtydngq9u30vnw34erhxz4kjfdyq63zajvt0gx9jr3spz4mhxue69uhhyetvv9uju6twddskutnrvvhs6kr9lq&#39;&gt;nevent1q…r9lq&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Hi.
    </content>
    <updated>2026-10-16T21:22:19Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsrltp8znahxw95j88kryc3ghfx7tfmn24m8genj39k97w2e6dvggspz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvf3elc2</id>
    
      <title type="html">Huh, so it&amp;#39;s starting to sound like inkan would likely run on ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsrltp8znahxw95j88kryc3ghfx7tfmn24m8genj39k97w2e6dvggspz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvf3elc2" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqst4rdra3kn09u3yjvfzw5npjrc80yxgeakz07njwqg6t8wnpyq3aspzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtcq8d3yj&#39;&gt;nevent1q…d3yj&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Huh, so it&amp;#39;s starting to sound like inkan would likely run on rootstock. One question then is whether that would be advantageous as compared to ethereum. I need to better understand what merge mining is. It seems like rootstock gets a lot of hashrate from it but it&amp;#39;s not clear if the miners have anything really at stake there, i.e. it seems like a large pool could reorg rootstock without losing anything? I&amp;#39;m not sure if it protects against reorgs in the way in which Ethereum finality does. Also, rootstock seems like the more exotic product and it seems to have fewer endpoints, so it might be less suitable for broader adoption than something based on ethereum maybe. But I first need to do more reading to really understand how it works.
    </content>
    <updated>2026-10-13T17:38:26Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsg9pmvur2teld3efuuxfv8qtd7xsvuzfjtvat28usxsn9997g3ccspz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yv2hn5c2</id>
    
      <title type="html">This is AI search for nostr. ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsg9pmvur2teld3efuuxfv8qtd7xsvuzfjtvat28usxsn9997g3ccspz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yv2hn5c2" />
    <content type="html">
      This is AI search for nostr.&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/7810910dfff3999971f9cfd038bc35e70ca4b1ab883908e00069a99ac85f3fe4.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt;You ask it a question, it wanders off across the relays, and comes back with the people and conversations you meant.&lt;br/&gt;&lt;br/&gt;Live at &lt;a href=&#34;https://www.inkan.cc&#34;&gt;https://www.inkan.cc&lt;/a&gt;.
    </content>
    <updated>2026-10-16T04:28:50Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsx0j6qs7hcm4gdfxlce2d3kwmgutv6nx6e36hdceq3fz2znp2rnwspz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvlzrg47</id>
    
      <title type="html">Actually that&amp;#39;s not a prepositional phrase at all. More like ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsx0j6qs7hcm4gdfxlce2d3kwmgutv6nx6e36hdceq3fz2znp2rnwspz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvlzrg47" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyeqy074mu3knrvqzp9dehcrmxgqdqkj06f3gkx5cqg5vlgjya2sspz4mhxue69uhhyetvv9ujuerpd46hxtnfduhswqqqjz&#39;&gt;nevent1q…qqjz&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Actually that&amp;#39;s not a prepositional phrase at all. More like an appositive adjective.
    </content>
    <updated>2026-10-15T16:13:06Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqspvsera2j0ff96q2t64kwyfyydmxfzz05cwak3whu84k5ahj38qjgpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvgzfsyd</id>
    
      <title type="html">I looked at the github page and as far as I can tell DNN is meant ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqspvsera2j0ff96q2t64kwyfyydmxfzz05cwak3whu84k5ahj38qjgpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvgzfsyd" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs972z0csh925jy0nphm4ykhy27faq98fdv85ukuea276z9er5vlzgpz4mhxue69uhhyetvv9uju6twddskutnrvvhss240zq&#39;&gt;nevent1q…40zq&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I looked at the github page and as far as I can tell DNN is meant to be a substitute for DNS identifiers?&lt;br/&gt;&lt;br/&gt;The idea seems to be that a nostr pubkey X can get a claim to certain chain coordinates (bitcoin block &#43; position) and a string like &amp;#34;nabandonzooa&amp;#34; gets mechanically associated with each such chain coordinate.&lt;br/&gt;&lt;br/&gt;And then pubkey X can publish nostr events through which X associates a human name like &amp;#34;alice&amp;#34; with a chain coordinate that X has a claim to. So for example X can publish nostr events through which X declares &amp;#34;I associate &amp;#39;alice&amp;#39; with the chain coordinate &amp;#39;nabandonzooa&amp;#39;.&amp;#34;&lt;br/&gt;&lt;br/&gt;It looks like nothing prevents X from publishing nostr events on relay A through which it associates &amp;#34;alice&amp;#34; with &amp;#34;nabandonzooa,&amp;#34; and nostr events on relay B through which it associates &amp;#34;john&amp;#34; with &amp;#34;nabandonzooa.&amp;#34;&lt;br/&gt;&lt;br/&gt;Now a full node can discover *all* of the chain coordinates that have been claimed by pubkeys under this scheme, and it could for example identify the most recent chain coordinate C that was claimed by pubkey X, say the one whose string is &amp;#34;nebuchadnezzar&amp;#34;. Then one can look at X&amp;#39;s nostr events and find an event on relay A showing that X has associated &amp;#34;alice&amp;#34; with &amp;#34;nebuchadnezzar.&amp;#34; Of course one can&amp;#39;t be sure that there isn&amp;#39;t some other event on some unknown relay B through which X has associated &amp;#34;john&amp;#34; with &amp;#34;nebuchadnezzar.&amp;#34;&lt;br/&gt;&lt;br/&gt;The result seems similar to searching for kind-0 profiles published by pubkey X. One might for example find a profile event signed by X with the profile name &amp;#34;alice&amp;#34; on relay A and choose to display that in a client, but of course one cannot be sure that there is no other profile event signed by X on some other relay B that shows &amp;#34;john&amp;#34; as the profile name.&lt;br/&gt;&lt;br/&gt;I&amp;#39;m not sure yet what exactly this system is trying to add.
    </content>
    <updated>2026-10-15T05:51:52Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs2slccpf7enam8k47xpkfqxn3k6tu57q0dqkjtt6vgktx5jx28s7qpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvmvq7rx</id>
    
      <title type="html">This is forcing me to learn about things like side chains and ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs2slccpf7enam8k47xpkfqxn3k6tu57q0dqkjtt6vgktx5jx28s7qpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvmvq7rx" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs089ww6d384gfn4l9paj3zsaf55nszvl97gt5tvqgkklrq0f9pmlspzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtcvu6q3j&#39;&gt;nevent1q…6q3j&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;This is forcing me to learn about things like side chains and pegs. So from talking with an LLM, it seems like the custodial problem with rootstock is &amp;#34;pegging out,&amp;#34; i.e. releasing escrowed BTC when RBTC is getting redeemed. Bitcoin cannot know mechanically when RBTC gets redeemed, so there has to be a federation of entities that are trusted to correctly operate PowHSMs which co-sign the bitcoin transactions that release escrowed BTC.  And these are held out to be &amp;#34;respected companies&amp;#34; but their &amp;#34;identities are not public,&amp;#34; which raises the question what basis there is for the respect. And then there is still the other issue, i.e. that it&amp;#39;s not clear what exactly would stop bitcoin miners from reorging rootstock. The miners get paid in BTC no matter what happens to rootstock, so beyond the small fee incentive they get for participating there doesn&amp;#39;t seem to be anything they&amp;#39;d lose by attacking rootstock. At least at first glance, it doesn&amp;#39;t necessarily seem more robust than Ethereum.
    </content>
    <updated>2026-10-14T07:52:09Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs80p99rcuqfyw9nld4zwwqzfqxkg7ez2nj7kvu585ngjehzh4frlgpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvn0jcks</id>
    
      <title type="html">thanks, let me know any questions any time.</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs80p99rcuqfyw9nld4zwwqzfqxkg7ez2nj7kvu585ngjehzh4frlgpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvn0jcks" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvg8jujcp2mcnulcud3tlctdcfmjgmteelh6sslh6dekfuq0sufxcpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtcptkr6k&#39;&gt;nevent1q…kr6k&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;thanks, let me know any questions any time.
    </content>
    <updated>2026-10-13T16:38:31Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsfsjh6d38tf6xkws8u3xaa5jysnkyl2z84njtmu064g30tswunu2spz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvw9lmu9</id>
    
      <title type="html">&amp;#34;Your whole identity is ONE private key. No rotation. No ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsfsjh6d38tf6xkws8u3xaa5jysnkyl2z84njtmu064g30tswunu2spz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvw9lmu9" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyk7y73v34a9u8hdx8m3jsnz5gxdhnct6qzpnnnpr639rvscdpvqqpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhs7wz38n&#39;&gt;nevent1q…z38n&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;&amp;#34;Your whole identity is ONE private key. No rotation. No recovery. Paste your nsec into one sketchy web client and it&amp;#39;s gone forever. Your only option is &amp;#34;hey guys new npub pls refollow&amp;#34;&amp;#34;&lt;br/&gt;&lt;br/&gt;Seems like this got overlooked 👇&lt;br/&gt;&lt;br/&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qvzqqqqqqypzp5dxzjv0fvwuym0shmx350573re4t7mpfdm3az6mya7sl7v6s23rqyghwumn8ghj7mn0wd68ytnhd9hx2tcpz4mhxue69uhhyetvv9uju6twddskutnrvvhsqgqgm3gesf2yw9drg7mqfvsnvxpfes4yc9hm6tdu7twqw0dc27shgq6rqdtx&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…qdtx&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; The way it usually goes, your online identity is your private key. If the key is compromised, there goes your identity. Inkan fixes that.&lt;br/&gt;&lt;br/&gt;You keep a master key in cold storage and a signing key for everyday use. If the signing key ever leaks or gets lost, the master revokes it and delegates to a new one. Same identity, same followers, fresh signing key.&lt;br/&gt;&lt;br/&gt;If you&#39;d like to take a look at the prototype: &lt;a href=&#34;https://www.inkan.cc&#34;&gt;https://www.inkan.cc&lt;/a&gt;. Log in with your NIP-07 extension and say hi to the test identities already walking around. Or make one of your own.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/27d256a9fcba336f567ea6369d0b6984feb72b00b06a5205efe029534113ab99.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/ca9b087993604f7b7d9473a661c946ecd20015186a112021f4858efa6c1e1808.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/fa5c1f8e19e3727b6693e6f105baf4eae15c4579343148fc413ac50acfe8edf0.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/f7002003e981f536bec01789875c17596f6c0eac87526a071c350480029c5827.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/3f6b865161cba71839910daa4f3c80b46c36400d5e2332ecad927b86003fcaad.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/a10f0ac6d508ea26602348bbec60bda4659667f75adfda46d9b8354224cd08fe.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/ce3d8e4de21b3e6f252f5aedbf02dd54323a26c1992c637438fabb9b14ea7afd.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/60f8a59a68386e2f28b792b63d09729ed494ebe6caddb7f6810e3c10f48b6e82.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/55000542eb9db4794c8ec07dcdfc93fa5560633afcd754476f6809e9c4bb5ac7.jpg&#34;&gt;  &lt;/blockquote&gt;
    </content>
    <updated>2026-10-13T12:59:05Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsyf8dlxtv9jsh4dg2elyc24vsmjdaz4wjx7ujn24g7r79zfe4y9tcpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvpmwgx4</id>
    
      <title type="html">That&amp;#39;s true in a way, but making something that actually ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsyf8dlxtv9jsh4dg2elyc24vsmjdaz4wjx7ujn24g7r79zfe4y9tcpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvpmwgx4" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszhv9wa2l6xu6qt9rf6kklsf5epqhelmwhj5e5ffms5wx0r00mwngpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhs5xg4h4&#39;&gt;nevent1q…g4h4&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;That&amp;#39;s true in a way, but making something that actually suits my purposes has still been a full-time job, I&amp;#39;d say 8-10 hours a day on average, for most of the last year. It&amp;#39;s interesting that it should be like that.
    </content>
    <updated>2026-10-13T13:18:52Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs0wtn7sdqysr4pg83wa6ne683yzcgtufcnuj59x95p59ggzeh2wvqpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvsc0gse</id>
    
      <title type="html">When use of an EVM provides a solution to the key management ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs0wtn7sdqysr4pg83wa6ne683yzcgtufcnuj59x95p59ggzeh2wvqpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvsc0gse" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqqqq4emu3ey2tfqy9wf7cfk8rwz69whhmj20uftjf46f8x2wkhugpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhszvc8jz&#39;&gt;nevent1q…c8jz&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;When use of an EVM provides a solution to the key management problem, which is a central problem for the nostr protocol, wouldn&amp;#39;t it make sense to simply use that solution rather than continue sitting on the problem?&lt;br/&gt;&lt;br/&gt;And there is also the idea that nostr was supposed to have broader appeal beyond the Bitcoin community. Leaving problems with the protocol unaddressed because a working solution doesn&amp;#39;t fit the tastes of the Bitcoin community doesn&amp;#39;t seem like a good strategy to achieve broader adoption.
    </content>
    <updated>2026-10-12T19:32:15Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsp66005auhg0m5p9hqxvgqy8x05rrkukcaf99jz3pxs77u2a3q95spz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvd2lz7n</id>
    
      <title type="html">I&amp;#39;ve been asked about this and spent some time thinking about ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsp66005auhg0m5p9hqxvgqy8x05rrkukcaf99jz3pxs77u2a3q95spz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvd2lz7n" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs97e9uj367xd6y4m9uns7lakc2hc7gs2e3el3aht4843kahjpu4ggppemhxue69uhkummn9ekx7mp0kf4tn5&#39;&gt;nevent1q…4tn5&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I&amp;#39;ve been asked about this and spent some time thinking about it, and I don&amp;#39;t have a conclusive answer.&lt;br/&gt;&lt;br/&gt;Where it gets difficult is the revocations. Clients need to know if a delegation is still alive at any given moment, and for that they need to be sure that they haven&amp;#39;t overlooked a revocation declaration somewhere. So it&amp;#39;s not enough that declarations be written somewhere durable, the client needs to be able to assemble the entire set of declarations for a given key and needs to know that it&amp;#39;s complete. That completeness property is available on Ethereum, but I think Bitcoin script is attached to single outputs and doesn&amp;#39;t accumulate state across transactions. So you could write declarations into the Bitcoin chain in some agreed format, but then anyone wanting the full picture needs to scan the whole chain with a full node and otherwise they can&amp;#39;t tell whether a revocation is being withheld from them. I&amp;#39;m not an expert on this, but that&amp;#39;s my current understanding. &lt;br/&gt;&lt;br/&gt;It seems like rootstock may be different again though if it&amp;#39;s a full EVM. But the thing is I&amp;#39;d never heard of rootstock before this came up, and I suspect most people outside bitcoin haven&amp;#39;t either. Ethereum is at least something normal people may have vaguely heard of. So it&amp;#39;s not obvious to me that swapping in rootstock or bitcoin scripts helps adoption overall, as opposed to just helping with this particular audience, which may be acting on niche preferences that don&amp;#39;t have strong technical justifications. Don&amp;#39;t get me wrong, though, I&amp;#39;d love to have this conversation with the current nostr community and the bitcoin crowd, and there may be actual technical advantages with using bitcoin that I&amp;#39;m not aware of. &lt;br/&gt;&lt;br/&gt;There&amp;#39;s been some previous threads relating to this, and also don&amp;#39;t forget to actually try it out, otherwise it just ends up being just these abstract discussions 👇&lt;br/&gt;&lt;br/&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qqstx9yvh85ry7f3p9nk7dxtdpt0qln8a6vdwns572armw695vd7waqpz3mhxue69uhhyetvv9uju6twddskutnrvvq3qamnwvaz7tmwdaehgu3wwa5kuegzyrg6v9yc7jcacfklp0kdrglfaz8n2hakzjmhr694kfmaplue4q4zxdqyzpx&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…yzpx&lt;/a&gt;&lt;/span&gt;&lt;br/&gt; &lt;/div&gt; Not an expert, but it seems like this may make delegation and revocation declarations storable and discoverable on BTC, but it may be difficult to be sure that one has retrieved all such declarations unless one runs a full node. I haven&#39;t done any in-depth analysis, but it feels like that may be the problem with BTC. &lt;/blockquote&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qvzqqqqqqypzp5dxzjv0fvwuym0shmx350573re4t7mpfdm3az6mya7sl7v6s23rqy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qgmwaehxw309a6xsetxdaex2um59ehx7um5wgcjucm0d5hsqgpnddv5yk0ldymq25mz6x4ysw3psme0mnq7gfvjkjh2cz7syvtsls4hx3pj&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…x3pj&lt;/a&gt;&lt;/span&gt;&lt;br/&gt; &lt;/div&gt; &#34;store the revocations with a guarantee of availability&#34;&lt;br/&gt;&lt;br/&gt;That requires a blockchain, though? The agreement on the timestamp is kind of what a blockchain *is*. &lt;/blockquote&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qqsqv5hhxtk0e653vvzzgfzkmp6w2xtqt364gr7kja3xxc3k8zjnqtcpz3mhxue69uhhyetvv9uju6twddskutnrvvqs6amnwvaz7tmwdaejumr0dspzp5dxzjv0fvwuym0shmx350573re4t7mpfdm3az6mya7sl7v6s23r6cc3qh&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…c3qh&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; Absolutely, for recording key delegation, revocation and invalidation declarations.&lt;br/&gt;&lt;br/&gt;I wasn&#39;t able to figure out an easy way to record these declarations on Bitcoin, but admittedly I didn&#39;t try all that hard.&lt;br/&gt;&lt;br/&gt;The Nostr events themselves are timestamped with OTS on Bitcoin. &lt;/blockquote&gt;
    </content>
    <updated>2026-10-13T12:18:23Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsx3ck3q6vew43hgjktmlyr4e6m3l63x6ekn8ysw9hm4ljjw6ujx6cpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvrtqk4p</id>
    
      <title type="html">Following up on this one, with inkan &amp;#34;verify&amp;#34; isn&amp;#39;t ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsx3ck3q6vew43hgjktmlyr4e6m3l63x6ekn8ysw9hm4ljjw6ujx6cpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvrtqk4p" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0jh4mppjdc5k4faaynafyggq3mtkq0zzju0rptv882kf6mfyangqpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhs3w2j69&#39;&gt;nevent1q…2j69&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Following up on this one, with inkan &amp;#34;verify&amp;#34; isn&amp;#39;t just a slogan.&lt;br/&gt;&lt;br/&gt;Every OTS-stamped event on inkan.cc comes with a download button for the raw .ots proof, together with a report that tells you exactly how to reproduce the hash the proof commits to:&lt;br/&gt;&lt;br/&gt;leaf = SHA-256( id_bytes || sig_bytes )&lt;br/&gt;&lt;br/&gt;It takes one line of shell to recompute it from the event&amp;#39;s id and sig, then feed the .ots to any OpenTimestamps verifier, the CLI, the web one, whichever you like. Nothing from inkan is in the loop. It either resolves to a Bitcoin block header or it doesn&amp;#39;t.&lt;br/&gt;&lt;br/&gt;It&amp;#39;s the same for key delegations: with the click of a button, the inkan client lets you download a standalone Python script that checks the on-chain declarations against an Ethereum RPC you choose. It recovers every ECDSA signature locally, checks the contract binding, flags nonce replays. You can read it top to bottom, no inkan server involved.&lt;br/&gt;&lt;br/&gt;If I were fooling anyone, handing out the tools to catch me by building them right into the client would be a strange way to go about it.&lt;br/&gt;&lt;br/&gt;The critics of inkan come in different flavors, like &amp;#34;haven&amp;#39;t read it,&amp;#34; &amp;#34;haven&amp;#39;t tested it,&amp;#34; and &amp;#34;haven&amp;#39;t found a flaw in it.&amp;#34; It&amp;#39;s hard to be fooled by something you have the tools to verify, but it&amp;#39;s easy to be fooled by people who are telling you not to look.
    </content>
    <updated>2026-10-12T06:08:39Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsqdpkf0sfylcf2a9mrvq20g0950mh54zu7uy0saaspk3tevzyj72spz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvkyq5d2</id>
    
      <title type="html">https://www.inkan.cc is a jumble fork that&amp;#39;s pretty nice to ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsqdpkf0sfylcf2a9mrvq20g0950mh54zu7uy0saaspk3tevzyj72spz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvkyq5d2" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsff9cu9hgp808lf4yw6edwgt3hprl80mzzh2tu9znhys9qdk8925cpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsl7rcnn&#39;&gt;nevent1q…rcnn&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://www.inkan.cc&#34;&gt;https://www.inkan.cc&lt;/a&gt; is a jumble fork that&amp;#39;s pretty nice to use.&lt;br/&gt;&lt;br/&gt;It supports cold storage identities, if you ever want one of those.&lt;br/&gt;&lt;br/&gt;And you can search the nostr network with the new AI Search feature. That&amp;#39;s actually how I found your note that I&amp;#39;m replying to right now. I asked it what Laeserin had been up to, and here is what it came back with. 👇&lt;br/&gt;&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/9196ab0d52d41bb02e8e70fbc1c9a379895eb4d6d71160b9c98540fce3d49f00.jpg&#34;&gt; 
    </content>
    <updated>2026-10-11T16:17:32Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqszpsjxyu89ymst3ksj86wgumzke8alsuee68jkd82whmcmge6j57qpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvnlfyv7</id>
    
      <title type="html">You should already be whitelisted on the timestamp server, as ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqszpsjxyu89ymst3ksj86wgumzke8alsuee68jkd82whmcmge6j57qpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvnlfyv7" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxlqystumlehxvltszkv74pvjfrx3e3gqfds8ndpaaq7rdedzzuugpz4mhxue69uhhyetvv9uju6twddskutnrvvhsdf3p3x&#39;&gt;nevent1q…3p3x&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;You should already be whitelisted on the timestamp server, as well as on the relay. &lt;br/&gt;&lt;br/&gt;You can check your status at &amp;#34;Settings &amp;gt; Inkan Settings &amp;gt; Service Access&amp;#34;. It should show that you have access everywhere, if not let me know.
    </content>
    <updated>2026-10-11T19:58:11Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsxczq07geus7mhgsf0kvdzsc4xs4zukhrlxct3awhw2j9mx7jezxcpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvuuhxv4</id>
    
      <title type="html">pubkeys that have recently applied for AI search should have ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsxczq07geus7mhgsf0kvdzsc4xs4zukhrlxct3awhw2j9mx7jezxcpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvuuhxv4" />
    <content type="html">
      pubkeys that have recently applied for AI search should have access now 🧞‍♀
    </content>
    <updated>2026-10-11T19:41:49Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsxfxx5vnccws3mpk04saxvujn8hddale6k4zxmntmv58vrjtztqqspz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvfzat8n</id>
    
      <title type="html">Huh, I guess it&amp;#39;s an opportunity to post yet another a link ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsxfxx5vnccws3mpk04saxvujn8hddale6k4zxmntmv58vrjtztqqspz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvfzat8n" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyt5ewkuqfhvg5vsz9jz68nyksyl84304n2y09wymgc7dl9hfs8dspz4mhxue69uhhyetvv9ujuerpd46hxtnfduhs3xqaz9&#39;&gt;nevent1q…qaz9&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Huh, I guess it&amp;#39;s an opportunity to post yet another a link to inkan, which I&amp;#39;ll do in a minute. 🤔&lt;br/&gt;&lt;br/&gt;As a reminder, there&amp;#39;s a standing invitation to make a toy identity directly in the browser on the homepage at &lt;a href=&#34;https://www.inkan.cc&#34;&gt;https://www.inkan.cc&lt;/a&gt;. Useful if you&amp;#39;d like to try it out without going through the steps of making a true airgapped identity.&lt;br/&gt;&lt;br/&gt;And even if you don&amp;#39;t make your own identity, you can still use &lt;a href=&#34;https://www.inkan.cc&#34;&gt;https://www.inkan.cc&lt;/a&gt; to interact with existing cold storage identities. You can find some of them by clicking on the Explore tab.
    </content>
    <updated>2026-10-11T17:49:05Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsf4lxer3yd4jc2sgqljxhw2k6ynzca72ym0rhmx0k4wgqqvu4wq3cpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvl8eh4r</id>
    
      <title type="html">Wow.</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsf4lxer3yd4jc2sgqljxhw2k6ynzca72ym0rhmx0k4wgqqvu4wq3cpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvl8eh4r" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxsys3al5fxrl7p9296sa4sz5yhvff2reatdr9hzufy8nj4tlv9rspz4mhxue69uhhyetvv9ujuerpd46hxtnfduhs9dvhh9&#39;&gt;nevent1q…vhh9&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Wow.
    </content>
    <updated>2026-10-05T00:53:22Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs0c57lv2rprqwah45ejyt4p0j28fsd98jxmvdhkfcg4ucpxj004cgpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvw58q4z</id>
    
      <title type="html">&amp;#34;meeting analogically&amp;#34; is a great phrase, I&amp;#39;ll ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs0c57lv2rprqwah45ejyt4p0j28fsd98jxmvdhkfcg4ucpxj004cgpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvw58q4z" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8whp798yr0h06hqq7yf7v9fa8cvwqxvadud5tjeqzfl9rcst3a6spzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtc0gwedn&#39;&gt;nevent1q…wedn&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;&amp;#34;meeting analogically&amp;#34; is a great phrase, I&amp;#39;ll remember that.🙂
    </content>
    <updated>2026-10-04T07:35:08Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs99nertdn6wpqq9vqrgskw0tjs4xzdflvr8rk8deyyspnlrmh5augpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvg0u0n8</id>
    
      <title type="html">I saw Disclosure Day. It was a throwback to the days when people ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs99nertdn6wpqq9vqrgskw0tjs4xzdflvr8rk8deyyspnlrmh5augpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvg0u0n8" />
    <content type="html">
      I saw Disclosure Day. It was a throwback to the days when people still knew how to make movies, although among those competent ones this would not have been an especially good one. The ending sequences brought me to brink of tears, which was however not a genuine emotion but more of a physical reaction to the particular combination and sequencing of images and voices and music, sort of like a vasovagal reflex, or the mental state you get into when you sit in front of a slot machine with all the blinking lights, or I guess a horror movie jump scare. There was a very clean separation between that physical reaction I was experiencing and the consciousness of being manipulated. Not unpleasant but also somewhat annoying. In any event, it&amp;#39;s nice to encounter something of good workmanship even though it may ultimately not be very remarkable.
    </content>
    <updated>2026-10-04T15:57:43Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs2fry2e6zsl6nc7qzwey2kunaedp67ju6dna0s5r33f3299lmt2qspz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvt222jl</id>
    
      <title type="html">It&amp;#39;s been almost a month since this discussion, so here&amp;#39;s ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs2fry2e6zsl6nc7qzwey2kunaedp67ju6dna0s5r33f3299lmt2qspz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvt222jl" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqhdx67yruzz2ppkz6z5u3m4ykrerl4970clf4lq7p580shdzd2vgpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsfwhf8j&#39;&gt;nevent1q…hf8j&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;It&amp;#39;s been almost a month since this discussion, so here&amp;#39;s a quick reminder that Nostr already has a working key rotation / replacement system. &lt;br/&gt;&lt;br/&gt;You can go to &lt;a href=&#34;https://www.inkan.cc&#34;&gt;https://www.inkan.cc&lt;/a&gt; and click on &amp;#34;Explore&amp;#34; to interact with some cold storage identities that have never signed  a single Nostr event.&lt;br/&gt;&lt;br/&gt;You can also create a throwaway &amp;#34;toy identity&amp;#34; on the homepage if you want to try it out yourself. If you don&amp;#39;t mind going through the steps, you can even make a full-fledged airgapped identity with the Management Utility.
    </content>
    <updated>2026-10-04T02:48:56Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsr3ct96s95u26ent23fkqhyy0f39l20qtszmjgevpkatpednrvdjcpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvjn3g5x</id>
    
      <title type="html">By the way, I&amp;#39;m still trying to get the word out on this key ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsr3ct96s95u26ent23fkqhyy0f39l20qtszmjgevpkatpednrvdjcpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvjn3g5x" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspm7tv3w3ud8tyxvfgwykd3a8juaxlf92cfd552kkdvys9rwsm2sqpz9mhxue69uhkummnw3ezuamfdejj70hvw4k&#39;&gt;nevent1q…vw4k&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;By the way, I&amp;#39;m still trying to get the word out on this key rotation system.&lt;br/&gt;&lt;br/&gt;If you go to the &amp;#34;Explore&amp;#34; menu at &lt;a href=&#34;https://www.inkan.cc&#34;&gt;https://www.inkan.cc&lt;/a&gt;, you can interact with cold storage identities that have never themselves signed a single Nostr event but that are nonetheless doing posts every day. If you like, you can also make your own toy identity on the homepage.&lt;br/&gt;&lt;br/&gt;I realize there&amp;#39;s a strong presumption among the Nostr community that this kind of thing doesn&amp;#39;t work. But as a matter of fact it works quite well. I&amp;#39;ve been using it for many months now.&lt;br/&gt;&lt;br/&gt;This also plugs into the recent discussion that we should adopt good practices while the Nostr community is still small. And in any event, it doesn&amp;#39;t break anything in the current protocol, it just sits on top of it.
    </content>
    <updated>2026-10-03T04:03:58Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqszx58sks75nsrcheyrt8550q6r6a9dkpx37n3lnufmd77sn9xp93qpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yv3x3ywg</id>
    
      <title type="html">AI Search for Nostr is a pretty good UX experience I think. I ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqszx58sks75nsrcheyrt8550q6r6a9dkpx37n3lnufmd77sn9xp93qpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yv3x3ywg" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqqq86h7svat4lgvr9dawefcxpu2k68dnzkkhha3y9zjmklg0f7egpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhs5pq5rn&#39;&gt;nevent1q…q5rn&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;AI Search for Nostr is a pretty good UX experience I think. I just made it this week and am already pretty hooked on it. 👇&lt;br/&gt;&lt;br/&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qvzqqqqqqypzp5dxzjv0fvwuym0shmx350573re4t7mpfdm3az6mya7sl7v6s23rqyghwumn8ghj7mn0wd68ytnhd9hx2tcpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtcqyz5qqsg2w4xad46yfvqplnjp494hswq46zkrwxrcednzuk0j7pz4u7yjsrr&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…jsrr&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; AI Search for Nostr has been live for a day now. 🧞‍♀&lt;br/&gt;&lt;br/&gt;Here&#39;s the kind of thing it comes back with, more details below the screenshots 👇&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/c18f60cd4ba23a65401920bb361b784f38c41165f42503397d8403da29f88308.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/588d6eef47ac04ac01b93b8c2b6c2cb2602f77363250867b99550f49931d2198.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/9267f4938a9564508422b9d1867420cb8fae7af4e692fcc1257dbe77de990971.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://image.nostr.build/43455af0c02589ed30db66718ac178bec9b2b8e22eb270f171cb91232efc1cc5.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qvzqqqqqqypzp5dxzjv0fvwuym0shmx350573re4t7mpfdm3az6mya7sl7v6s23rqythwumn8ghj7un9d3shjtnswf5k6ctv9ehx2ap0qyfhwumn8ghj7mmxve3ksctfdch8qatz9uqzpmpt3vwj346ata0v2ajxwac7nwfvhsaa8aje7aud7x8saj82gsg4t0rlrz&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…rlrz&lt;/a&gt;&lt;/span&gt; &lt;/blockquote&gt;
    </content>
    <updated>2026-10-03T03:31:50Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsfkydj569vffqwmwf836ytx82cf0cq9enp3ae436nxtg0xqwcewtqpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvrm24wl</id>
    
      <title type="html">Or going further back: ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsfkydj569vffqwmwf836ytx82cf0cq9enp3ae436nxtg0xqwcewtqpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvrm24wl" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyq0sup4xzqlr3j547fgnvjzxp00q9xk6wf9j6gwkpmpphaku634cpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtck39ruj&#39;&gt;nevent1q…9ruj&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Or going further back: &lt;a href=&#34;https://music.youtube.com/watch?v=dIyqQ7aANWY&amp;amp;si=N_C5rtiBk0Ci0ZQg&#34;&gt;https://music.youtube.com/watch?v=dIyqQ7aANWY&amp;amp;si=N_C5rtiBk0Ci0ZQg&lt;/a&gt;
    </content>
    <updated>2026-10-02T09:16:43Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsq0km03lp95rk7ttkwvzn7jwut9950zxjdwntw8c9f6fzeczccvdgpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvzvzff8</id>
    
      <title type="html">I always forget what this discussion is about, and then I worry ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsq0km03lp95rk7ttkwvzn7jwut9950zxjdwntw8c9f6fzeczccvdgpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvzvzff8" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqqqqy5h7qjfzapuqcy29tnmlmckzx9cauyu49594fhxxq262lyjgpzemhxue69uhkummnw3ex2mrfw3jhxtn0wfnj758kww0&#39;&gt;nevent1q…kww0&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I always forget what this discussion is about, and then I worry whether I need to change anything in my client, I think probably not though, oh dear oh dear.
    </content>
    <updated>2026-10-01T16:56:18Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqs9c7mpjj5rz83wykt3eqp5zvrj6wx9dtnpemmxj9wdnr9mk3ra08cpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvfcsx20</id>
    
      <title type="html">I agree with pretty much all of this, including that its&amp;#39;s a ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqs9c7mpjj5rz83wykt3eqp5zvrj6wx9dtnpemmxj9wdnr9mk3ra08cpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvfcsx20" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsztave582kdwx5p2s0y3u4nmljz4ewxgw0vcr6zjq3slnh5hn6d9qpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhs3nccp3&#39;&gt;nevent1q…ccp3&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I agree with pretty much all of this, including that its&amp;#39;s a self-fulfilling loop.&lt;br/&gt;&lt;br/&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qvzqqqqqqypzp5dxzjv0fvwuym0shmx350573re4t7mpfdm3az6mya7sl7v6s23rqy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qgnwaehxw309ahkvenrdpskjm3wwp6kytcqyruapxju6jc2tqgaaekaxp3ftdcn3rxxsj7sg520gwl39u3xysud6yleyzk&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…eyzk&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; So there&#39;s this nostr paradox, why would a community obsessed with crypto and key security refuse to even test working key rotation?&lt;br/&gt;&lt;br/&gt;Because you can&#39;t tell working from broken without spending your own time on it.&lt;br/&gt;&lt;br/&gt;After enough broken NIPs and abandoned apps, you learn to price every new thing as a lemon and assume broken. The good leaves the market with the bad. 👇&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/The_Market_for_Lemons&#34;&gt;https://en.wikipedia.org/wiki/The_Market_for_Lemons&lt;/a&gt; &lt;/blockquote&gt;
    </content>
    <updated>2026-10-01T16:15:25Z</updated>
  </entry>

  <entry>
    <id>https://nostr.now/nevent1qqsreuheqmyufg2h7vhdh7tt6pth270qaputkahqk2u9mqdr435r7ncpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvkhj65y</id>
    
      <title type="html">Thanks, good to know that part is working ...</title>
    
    <link rel="alternate" href="https://nostr.now/nevent1qqsreuheqmyufg2h7vhdh7tt6pth270qaputkahqk2u9mqdr435r7ncpz4mhxue69uhhyetvv9unytnfde4kzm3wvd3sygx35c2f3a93msnd7zlv6x37n6y0x40mv99hw85ttvnh6rlen2p2yvkhj65y" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsv2heltsz2370usqe8kpjncgqrfsf6yewkp40mm8w4gmtkuuldn3spzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtcyuyxxs&#39;&gt;nevent1q…yxxs&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Thanks, good to know that part is working ...
    </content>
    <updated>2026-10-01T13:32:05Z</updated>
  </entry>

</feed>