ビットコインの送金UXに一石を投じるeasypaysyとPayNymの比較
安土さんの技術ブログに先を越されてしまいましたが、今月初めにビットコインのUXを向上するeasypaysyというプロトコルのホワイトペーパーが発表されました。
easypaysyが改善しようとしているのはビットコインアドレスという仕組みのUXなのですが、似た機能としてSamourai Walletが実装したPayNymsというものがあります。今回のコラムでは双方の特徴を紹介し比較します。
EASYPAYSY
ビットコインアドレスは使い回しが推奨されない上に、人間にとって読みづらいです。実際、送金のたびにドキドキする人も多いでしょう。また、頻繁に送金する相手から毎回新しいアドレスを教えてもらうのも面倒です。easypaysyはこれらの問題を改善するために可読性の高い「アカウント」を使って扱いやすさとセキュリティを両立しようと提案されたプロトコルです。
技術的な詳細は冒頭で紹介した安土さんのブログに任せて、ここでは概要を説明します。
easypaysyを使うと、ユーザーは自身が保有する鍵2つを使った2-of-2マルチシグアドレスから送金することで次のようなアカウント名を取得できます:
btc@cancel-mind.exhibit/motion
この場合はBIP39のワードにエンコードされてますが、数字だと
btc@543847.636/577
となり、形式はアカウント名を取得するトランザクションについての
ブロックチェーン@ブロック番号.トランザクション順位/チェックサム
です。
チェックサムは本当は4単語(3桁の数字4組)ありますが、最初の単語を入力するだけで本体の誤りを検出することができます。本当に心配なら、4単語すべてを使って検証することもできます。
このアカウント名が指し示すトランザクションにOP_RETURNを使って格納されている識別子に、「どのような種類のトランザクションを受け付けるか」が決めてあります。最初に2-of-2マルチシグアドレスを使ってアカウントを取得する理由はここにあり、それは公開された2つの公開鍵に「認証鍵」「受け取り鍵」という機能を持たせるためです。
考案者が提案する4種類は以下です:
「単純にそのアドレスに送る」
「直接連絡してアドレスをもらう(認証鍵を使った署名つき)」
「送金者が受け取り鍵を活用し相手の新しいアドレスを生成して送金する」
「(同上+受信に気づきやすくなる工夫がある)」
つまり、easypaysyはbtc@abandon-chair.table/jazzのようなアカウント名を受け取るだけで、どのように送金を行えばいいかの情報まで受け取ることができるプロトコルで、指定された支払い方法によってはウォレットが支払先のアドレスを勝手に新規生成してくれるものです。(「受け取り鍵」はここで活用されています。)
したがって、簡単に言えばeasypaysyはブロックチェーン上のアカウントと、そのアカウントのへの送金方法を示すプロトコルです。
ちなみに、送金先のアドレスを生成するというのは新鮮に感じますが、ビットコインではあまり流行っていないステルスアドレスの仕組みを使っています。ネットの海を探したら2014年の大石さんのスライドが見つかりました。
PAYNYMS (BIP47 PAYMENT CODES)
Samourai Walletに実装されているPayNymsは、BIP47に則ってウォレットが生成できる不変の「ペイメントコード(PM8T~)」を加工してIDと画像を生成する機能です。
まず、BIP47とは、シードから多数の秘密鍵を導出するHDウォレット(階層的決定性ウォレット)において、セキュリティやプライバシーを妥協せずに公開できるペイメントコードを生成する方法を示したものです。送金元と送金先が両方BIP47に対応していれば、初回に一方のペイメントコードを伝えるトランザクションを発行した後はペイメントコードだけでプライバシーを守りつつ取引できます。(送金者にいちいち新しいアドレスを教える必要はなく、勝手に新しいアドレスに送られてくる)
ここでも、前述したステルスアドレスの仕組みが利用されてます。
PayNymsはこのペイメントコードからPayNymというIDとロボットの画像を生成する機能で、Samourai Walletが独自に提供するものです。ロボットの画像、CryptoKittiesみたいでかわいいので、公開されてるPayNymを集めた名簿サイトを覗いてみてください。仕方ないですが、独自規格なのが残念です。
比較
PayNyms/BIP47とeasypaysyの機能的な共通点は以下のとおりです。
・ユーザーIDが生成でき、アカウントベースの使用感が実現できる
・人間にとって認知しやすいアカウント表示(単語・画像など)
・ステルスアドレスを使用することができるしかし、総合的にはeasypaysyが優秀と思える点が多いです。・PayNymsはステルスアドレス限定な上に、双方が使う必要がある(easypaysyは相手を選ばなく、「普通の」送金も受け付けられる)
・BIP47は同じ相手と繰り返し取引しなければ、コストに見合うメリットがない(ペイメントコードを伝えるのに1トランザクション必要なため)が、easypaysyのアカウントは半永久的に使える上に更新もできる
・easypaysyはアカウントがブロックチェーン上に存在するので、認証局などブロックチェーンを利用したサービスと連携できる。巷で流行ってるブロックチェーンアイデンティティってやつですね。
まとめ
easypaysyはビットコイン上でアカウントのような仕組みを実現するプロトコルとして柔軟な機能を実現でき、現在でも使用できるという点においては非常に優秀なアイデアだと思います。ほかのサービスとの連携可能性も広がるのも面白いです。ただし、貴重なブロックチェーン上のスペースを割く必要があるので、広く普及することは難しいかもしれません。
一方でPayNymsはIDやロボット画像のわかりやすさなどは良くできていると思いましたが、使用できるシチュエーションが限られているためこちらも普及には難があるかもしれません。プライバシー最重要視で売り込んでいるSamourai Walletらしい機能だということには間違いありません。
バニティアドレスにはそこまで興味ないですが、ウォレット内でPayNymsとかCryptoKittiesみたいなアイコンを生成できるならバニティアイコンを生成して遊びたいです。
次の記事
読者になる
一緒に新しい世界を探求していきましょう。
ディスカッション