<?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>DEV Community: Scryve</title>
    <description>The latest articles on DEV Community by Scryve (@scryve).</description>
    <link>https://dev.to/scryve</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%2F3932908%2Fd47f5143-6885-49cd-99f4-541b88ef747e.jpg</url>
      <title>DEV Community: Scryve</title>
      <link>https://dev.to/scryve</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/scryve"/>
    <language>en</language>
    <item>
      <title>@scryve-tools: Unified wallet auth and CKB utilities for TypeScript</title>
      <dc:creator>Scryve</dc:creator>
      <pubDate>Fri, 15 May 2026 10:15:26 +0000</pubDate>
      <link>https://dev.to/scryve/scryve-tools-unified-wallet-auth-and-ckb-utilities-for-typescript-4m2j</link>
      <guid>https://dev.to/scryve/scryve-tools-unified-wallet-auth-and-ckb-utilities-for-typescript-4m2j</guid>
      <description>&lt;p&gt;For the last six months I’ve been building on Nervos CKB and repeatedly hitting the same low‑level plumbing issues:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wallet auth flows for CKB, EVM, and BTC.&lt;/li&gt;
&lt;li&gt;Witness encoding and xUDT math.&lt;/li&gt;
&lt;li&gt;Spore NFT metadata and payment splitting.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of writing the same glue code every time, I packaged it up into &lt;code&gt;@scryve-tools&lt;/code&gt; — a set of TypeScript utilities that make CKB feel more like a “normal” Web3 SDK.&lt;/p&gt;

&lt;h3&gt;
  
  
  What’s in the package
&lt;/h3&gt;

&lt;p&gt;Currently, &lt;code&gt;@scryve-tools&lt;/code&gt; includes five focused packages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;@scryve-tools/ckb-wallet-auth&lt;/code&gt;&lt;br&gt;&lt;br&gt;
Challenge‑response authentication for CKB, EVM, BTC, and JoyID wallets. It handles nonce stores, rate limiting, and OmniLock address derivation under a single interface.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;@scryve-tools/ckb-witness-data&lt;/code&gt;&lt;br&gt;&lt;br&gt;
Embed structured data into transaction witnesses at near‑zero capacity cost — about 2,000,000× cheaper than storing it in cells.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;@scryve-tools/ckb-spore-seal&lt;/code&gt;&lt;br&gt;&lt;br&gt;
Utilities for generating Spore NFT “DNA” from inputs and ensuring consistent metadata layout.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;@scryve-tools/ckb-payment-split&lt;/code&gt;&lt;br&gt;&lt;br&gt;
Splits payments and fees across multiple outputs in a clean, reusable way.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;@scryve-tools/ckb-xudt&lt;/code&gt;&lt;br&gt;&lt;br&gt;
Utilities for working with xUDT token amounts and balances.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you prefer one big import, you can pull everything from a single bundle:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; @scryve-tools/ckb-sdk @ckb-ccc/core
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;walletAuth&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;witnessData&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;sporeSeal&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;paymentSplit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;xudtPayment&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@scryve-tools/ckb-sdk&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or install only what you need — each package is standalone and MIT‑licensed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why this exists
&lt;/h3&gt;

&lt;p&gt;CKB’s Cell Model is powerful but also opaque compared with EVM‑style SDKs. The cell‑based UTXO model and custom lock scripts are flexible, but they also mean you end up wiring the same patterns over and over: how to sign, verify, encode, and account for tokens.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;@scryve-tools&lt;/code&gt;’s mission is simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reduce the “typing tax” when you’re already thinking about business logic.&lt;/li&gt;
&lt;li&gt;Give CKB devs the same kind of small, focused utilities you get on EVM, but tuned to CKB’s cell‑based model.&lt;/li&gt;
&lt;li&gt;Encourage reuse and consistent patterns across builders and platforms.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of these utilities have been battle‑tested in the Scryve platform over the last several months before we split them out and open‑sourced them [1].&lt;/p&gt;

&lt;h3&gt;
  
  
  Who this is for
&lt;/h3&gt;

&lt;p&gt;If you’re:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Building a CKB‑first dApp,&lt;/li&gt;
&lt;li&gt;Adding Spore NFTs to an existing product,&lt;/li&gt;
&lt;li&gt;Or experimenting with multi‑chain identity and payments,&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;@scryve-tools&lt;/code&gt; is designed to sit under your own UX layer rather than replace it. The focus is on the things that are boring and repetitive, so you can ship your actual product faster.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to get started
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Repo: &lt;code&gt;github.com/scryve-tools&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Install: &lt;code&gt;npm install @scryve-tools/ckb-sdk @ckb-ccc/core&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you hit a rough edge, please open issues or PRs. The repo is MIT‑licensed, and the goal is for this to evolve collaboratively with the global dev community.&lt;/p&gt;

</description>
      <category>ckb</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>nervos</category>
    </item>
  </channel>
</rss>
