<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Sergey Ovcharenko</title>
    <description>The latest articles on Forem by Sergey Ovcharenko (@sergey_ovcharenko_74bf887).</description>
    <link>https://forem.com/sergey_ovcharenko_74bf887</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3845408%2F49adf8e3-d462-4eba-8543-e6d20785dbdb.jpg</url>
      <title>Forem: Sergey Ovcharenko</title>
      <link>https://forem.com/sergey_ovcharenko_74bf887</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/sergey_ovcharenko_74bf887"/>
    <language>en</language>
    <item>
      <title>A Litecoin Wallet That Remembers Nothing</title>
      <dc:creator>Sergey Ovcharenko</dc:creator>
      <pubDate>Thu, 09 Apr 2026 07:58:43 +0000</pubDate>
      <link>https://forem.com/sergey_ovcharenko_74bf887/a-litecoin-wallet-that-remembers-nothing-24ff</link>
      <guid>https://forem.com/sergey_ovcharenko_74bf887/a-litecoin-wallet-that-remembers-nothing-24ff</guid>
      <description>&lt;p&gt;In a &lt;a href="https://dev.to/sergey_ovcharenko_74bf887/ritual-protocol-a-key-as-an-action-not-an-object-7cb"&gt;previous article&lt;/a&gt; we introduced Ritual Protocol. Today we look at how it works in a real application.&lt;/p&gt;

&lt;p&gt;Imagine: you need a new address on a blockchain network, or you want to access an existing one. You place some runes, point to London at 12:47, and tap a sequence of emojis. That's it. Cold wallet ready. No custodial nonsense, everything by the book — the way Satoshi intended. The only difference is that you don't need to remember or store a seed phrase. It's deterministically derived from your ritual.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe0jdmjmt8fo8r715yqa1.png" alt=" " width="513" height="934"&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  No Storage
&lt;/h2&gt;

&lt;p&gt;A typical wallet generates a key on first launch and saves it somewhere. A file, a database, an encrypted vault — doesn't matter. There's a place that needs to be protected, that can be lost, that can be stolen.&lt;/p&gt;

&lt;p&gt;This wallet saves nothing. At all. Every time you need access — you reproduce it.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Ritual
&lt;/h2&gt;

&lt;p&gt;From a cryptographic standpoint, the protocol recommends at least 80 bits of ritual entropy. But the app doesn't restrict you. If you want a "Vatican City 12:00" address — just open it and use it.&lt;/p&gt;




&lt;h2&gt;
  
  
  A Regular Wallet Inside
&lt;/h2&gt;

&lt;p&gt;After the ritual, a completely ordinary wallet opens. Address, balance, transaction history. You can receive and send LTC. Fees are calculated automatically, there's a MAX button, and both Litecoin address formats are supported.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8ba46p0mvq4i74ale7nq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8ba46p0mvq4i74ale7nq.png" alt=" " width="503" height="929"&gt;&lt;/a&gt;&lt;br&gt;
The only difference is how you got here. And the fact that once you close the app — the key no longer exists anywhere.&lt;/p&gt;




&lt;h2&gt;
  
  
  Disclaimer
&lt;/h2&gt;

&lt;p&gt;This wallet was built as a demonstration of Ritual Protocol's capabilities and a test of its viability in everyday use. All bugs found during testing have been fixed — but please use this software responsibly and for its intended purpose.&lt;/p&gt;




&lt;p&gt;Source code on GitHub: &lt;a href="https://github.com/runetcom2014/LTC-Wallet" rel="noopener noreferrer"&gt;https://github.com/runetcom2014/LTC-Wallet&lt;/a&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>go</category>
      <category>cryptocurrency</category>
    </item>
    <item>
      <title>Ritual Protocol: a key as an action, not an object</title>
      <dc:creator>Sergey Ovcharenko</dc:creator>
      <pubDate>Sat, 28 Mar 2026 13:12:11 +0000</pubDate>
      <link>https://forem.com/sergey_ovcharenko_74bf887/ritual-protocol-a-key-as-an-action-not-an-object-7cb</link>
      <guid>https://forem.com/sergey_ovcharenko_74bf887/ritual-protocol-a-key-as-an-action-not-an-object-7cb</guid>
      <description>&lt;p&gt;Every secret storage system is only as secure as the storage itself. Someone steals your password database — they steal everything. Someone compromises your keystore — they compromise everything. You can encrypt the storage, split keys, add authentication factors — but the fundamental problem remains: the key exists as an object, and objects can be stolen.&lt;/p&gt;

&lt;p&gt;Ritual Protocol takes a different approach. The key is not stored. It is reproduced through a sequence of actions — a ritual. Same actions, same parameters — same 32 bytes out. Every time. No storage — no attack vector tied to its compromise.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;A ritual is an ordered set of rites. Each rite has a type and parameters. Order matters: sequences [A, B, C] and [C, B, A] produce different keys.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rite types
&lt;/h2&gt;

&lt;p&gt;V1 defines six rite types. They can be combined in any order and repeated — each repetition increases entropy.&lt;/p&gt;

&lt;p&gt;The rites are intentionally varied — a text string, a symbol sequence, a file slice, a star map, a city and time, runes on a grid. The idea is that every user has their own natural way to create a unique and reproducible ritual. Some will remember a symbol sequence, some will use a file and an offset, some will use a city and time combination with personal meaning.&lt;/p&gt;

&lt;p&gt;Full description of each type with entropy formulas is in the specification.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finalization
&lt;/h2&gt;

&lt;p&gt;And that's really all there is to it. "I like it. Simple, easy to remember." — J.S.&lt;/p&gt;

&lt;p&gt;Each rite is hashed independently through SHA256, then the hashes are folded sequentially — rite order affects the result, this is an intentional property of the protocol.&lt;/p&gt;

&lt;p&gt;The final state is run through three KDFs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Argon2id (64 MB, t=3, p=4) → scrypt (128 MB) → BLAKE2b-256
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Three algorithms were chosen deliberately — each has a different memory access pattern. This makes it harder to build specialized hardware for brute force. Each brute force attempt costs as much memory and time as a legitimate finalization.&lt;/p&gt;

&lt;p&gt;At 80 bits of ritual entropy, the effective security is approximately 126 bits — the difference is the computational cost of the KDF chain.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;The protocol is intentionally minimal — exactly 32 bytes out and nothing more. What to do with them is the environment's concern. The reference implementation in Go compiles to .dll/.so with a simple C API, which makes it easy to plug the core into almost anything. There's a pretty decent demo in the examples.&lt;/p&gt;

&lt;p&gt;Licensing: the author, as a responsible member of the open source community, hereby contributes this humble piece to the betterment of mankind. Personal use is free. If you're building a business on it — you know where to find us.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/runetcom2014/ritual-protocol" rel="noopener noreferrer"&gt;https://github.com/runetcom2014/ritual-protocol&lt;/a&gt;&lt;br&gt;
Specification: &lt;a href="https://zenodo.org/records/19090391" rel="noopener noreferrer"&gt;https://zenodo.org/records/19090391&lt;/a&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>go</category>
      <category>encryption</category>
    </item>
  </channel>
</rss>
