Zapsとは?
Zapsとは何か、Zapsの仕組み、NostrクライアントでZapsを使うために必要なものは何かについて説明します。
§ 基礎
Zapsについて考える最も簡単な方法は、Zapsは単なるチップであるということです。チップはLightning networkを介して光速で送金され、基本的にトランザクション手数料は無料です。
Nostrプロトコルの初期は、ライトニング・インボイスをノートに記載するのが一般的でした。NIP-57が実装されて以来、ZapsはNostrノート内で価値を伝達する主な方法となりました。NIP-57の実装内容とZapの仕組みについて詳しく見ていきましょう。
§ NIP-57
NIP-57とは、Zapsがどのように実装されるべきかを示したドキュメントです。kind 9735(Zap)とkind 9734(Zapリクエスト)という2つの新しいノートを作成します。この2つのkindを組み合わせることで、NostrクライアントがLNURLサーバーにZapインボイスを要求し、それに対して支払うことができるようになります。NIP-57の仕様では、Zapの支払いを受金するライトニング・ウォレットが、リレーに送信するノートを作成する方法についても説明しています。
💡面白いことに、Zapsに使われているkindノートは、ライトニングが使っているネットワークポート(9735)と同じなのです。
§ Zapsの仕組み
ここでは技術的な深い話はしませんが、好奇心旺盛な人のために、Zapsの基本的な仕組みについて見てみましょう。
- クライアント(Damus、Iris、Amethystなど)の小さな⚡アイコンをクリックまたはタップすると、最初にクライアントが、Zapしようとしている人のライトニング・ウォレットの前にあるLNURL serverにpingを送ります。最初の依頼は、“こんにちは、アリスにsatoshi(サトシ)をあげたいのですが “というようなものです。
- LNURLサーバーはそれに応答し、もしアリスのウォレットがZapsをサポートしていれば、そのことをクライアントに伝え、アリスの公開鍵を送信/確認します。
- この時点で、クライアントはZapリクエスト(kind 9734ノート)をまとめるために、Zapしたいプロフィールやノートに関するデータ、金額、ノートをブロードキャストするリレー、および他のいくつかの事柄を含む少しの作業を行います。これは事実上、LNURLサーバーからのインボイス・リクエストです。
- LNURLサーバーは要求されたインボイスで応答します。
- この時点で、クライアントはそのインボイスをユーザーのライトニング・ウォレットに渡し、支払いを受けます。ブラウザでAlbyのようなウォレットを使用している場合(そして予算を設定している場合)、このプロセスは非常に素早く行われます。
- ユーザーによって支払われると、受金者のウォレットはkind 9735ノートを作成し、Zapリクエストで先に指定されたリレーにそれをブロードキャストします。
- このノートを受け取ったリレーは、接続しているクライアントに対してZapを伝えることができ、クライアントはUI上でユーザーに対してZapを表示することができます。
そして、このすべてがほんの数秒で行われ、ほんのわずかなコストしかかかりません。
§ Zapsの送受信方法は?
Nostr上で他のユーザーをZapするには、たった2つのものさえ準備すればOKです:
- Zapと互換性のあるライトニング・ウォレット(AlbyやWallet of Satoshiのような)
- Zapsをを実装しているクライアント(Damus、Amethyst、IrisまたはSnortなど)
その他に必要なことは、Nostrのプロフィールにライトニング・アドレスが設定されていることです。これがZapsを受信するアドレスです。
Zapsを受け取るためにプロフィールに設定したウォレット/アドレスとは別のものでも、Zapsの支払いは可能です。
例えば、次のようなことを想像してみてください:
- NostrのプロフィールにStacker Newsのライトニング・アドレスが設定されている場合、このアドレスにZapされたサトシが届きます。
- ウェブブラウザで、Irisをクライアントとして使用し、Chrome拡張機能でAlbyウォレットを使用してZapsの支払いを行います。
- スマホでは、Damusをクライアントとして使用し、Wallet of Satoshiアプリを使ってZapsの支払いを行います。