本ページはプロモーションが含まれています
ビットコインで「Segwit(セグウィット)」という機能が実装されるとビットコイン決済ではできる事の幅が広がります。その中の一つに「ペイメントチャネル」という機能があります。「ペイメントチャネル」について初心者の方にも分かるよう技術的な事をなるべく省きながら解説をしていきます。
ペイメントチャネルとは
「ペイメントチャネル(Payment Channel)」とは簡単に言えば「2者間で送受金を何度行っても一度のブロックチェーンへの記載で済む」という技術です。
Payment(ペイメント)=支払い、Channel(チャンネル)=通信路、という意味から分かるように支払いを別の(ブロックチェーンではない)通信路で行おうというイメージです。
ビットコインの支払いというのはブロックチェーンに記載された際に完了します。ブロックチェーンに記載するためにはマイナー(マイニングする人)へ支払う手数料が必要になるので何度も同じ人へ支払いを継続して行いたい場合はその度に手数料がかかってしまい手数料がとても高価になってしまいます。
特に少額の支払いを継続して行う場合は手数料が支払い額よりも高価になってしまう事があります。これはブロックチェーンに取引を記載する手数料が「支払い金額」によって〇〇%と決められているわけではなく「取引データサイズ」によって決められているからです。
このような決済システムにおいてのビットコインの難点を解決するのが「ペイメントチャネル」という技術です。
スポンサー
仕組み
初心者の方にとって仕組みを完璧に理解するのは難解です。何故ならトランザクション(取引データ)の構造や署名の仕組みを理解していなくてはいけないからです。
ですのでここでは概要を掴むための解説をしていきます。
Segwitを利用したペイメントチャネルでは最初に双方のビットコインをまとめた取引データを作成します。今回はBさんのサービスを利用する為にAさんがBさんへ毎月0.1BTCの支払いをしていくと仮定します。
まずAさんBさんそれぞれ1BTCを出しあい計2BTCの入った財布を作成します(話を簡単にするためにお互いがまず1BTC出すと仮定)。その財布はA・Bさんそれぞれが鍵を持っており二人の共同によってのみ取り出す(移動させる)事が可能です。
次に1BTCをAさんへ、1BTCをBさんへ送金する取引データを作成します。
なぜこのような取引データを作成するかと言えば万が一Bさんのサービスが提供されなかったりAさんがすぐに契約を解除しようと思った時にお互いのビットコインが手元に戻るようにしたい為です。
ここでポイントは最初に作成した財布(取引データ)「A+B 2BTC」の署名が無くとも次に作成した「A⇒1BTC B⇒1BTC」の取引データを作成できる事です。
SegwitはSegrated(隔離された) Witness(署名)、つまり簡単に言えば署名無しで取引データを作成する機能があるのです。(署名無しでビットコインを動かす事はできません。最終的に取引を完了させるためには署名が必要です。)
このようにSegwitが実装されている事により(仮)のような形で取引データを作っていく事が可能になります。
「A⇒1BTC B⇒1BTC」の取引データまで作成できたら後は毎月0.1BTCの支払い取引データを作成していくだけです。
※「A⇒1BTC B⇒1BTC」のデータをお互いが管理します。どちらかの契約解除でどちらも元のビットコインを戻してもらう為です。
悪用される事(Aさんの一方的な契約解除など)を防ぐためAさんの持つ「A⇒1BTC B⇒1BTC」の取引データの「A⇒1BTC」には「〇〇期間経過後に移動可能、その期間以内ならB⇒1BTC(つまりB⇒2BTCになる)」等の条件を付加する事で悪用を防ぎます。逆(Bさんの持つ取引データ)にも適用します。
そのようにしておけばBさんが契約を一定期間履行しない場合にAさんはビットコインを取り戻す事ができるようになります。
何度もやり取りをしていく
ここから何度もやり取りをしていく取引データを作成します。
「A⇒0.9BTC B⇒1.1BTC」というデータを作成します。これでAさんからBさんへ0.1BTCが渡ったことになります。
Bさんから一定期間経ってもサービスが届かなかったら前の「Aさん⇒1BTC Bさん⇒1BTC」をブロックチェーンに流す事でその取引が承認され元のビットコインが手元に戻ってくる仕組みになります。
ここでもAさん管理の「A⇒0.9BTC B⇒1.1BTC」とBさん管理の「B⇒1.1BTC A⇒0.9BTC」の二つの取引データを作成しておきます。一定条件を設けてお互いに取引データを持つことでお互いの悪用を防ぎます。
※前の取引データの「A⇒1BTC」には「〇〇期間経過後に移動可能、その期間以内ならB⇒1BTC(つまりB⇒2BTCになる。逆の取引データには逆の条件を付加。)」という条件(Bさん管理の取引データなら逆)があるので一定期間を過ぎていなければその前に作成した取引データ「A⇒1BTC B⇒1BTC」をブロックチェーンに記載するメリットは双方にとってありません。
これを毎月作成していき、契約が終了したところで最後に作成した取引をブロックチェーンに記載します。
※最終取引データをブロックチェーンに記載後、その前に作成した取引データをブロックチェーンに記載しようとしても「二重支払い」(既に使用済みのビットコインを使用している)と見なされるので前の取引データを使用する事が出来なくなります。
すると実際には何度も取引があったのに最後の一度の取引手数料分だけで取引が成立する、というのがSegwitを利用した「ペイメントチャネル」です。
まとめ
ペイメントチャネルというのはSegwitが無くても可能な技術でしたがSegwitが実装される事によって更に利便性が高くなります。オンチェーン(ブロックチェーン上)ではなくオフチェーン(ブロックチェーンの外)で取引ができるようになれば手数料も減り、決済時間も短縮されるのでビットコインの利便性も向上します。
関連記事
Segwit(セグウィット)の使い方・利用方法<初心者向け>
スポンサー
すみません、質問させて頂きたいのですが、0.1BTC を毎月支払っていったというデータはどこに保存されるのでしょうか?そのデータはブロックチェーン上にはまだ乗っていない訳ですよね?
>どら様
コメントいただきありがとうございます。
支払いデータはブロックチェーンには最後まで(契約が終了するまで)乗りません。それまでのデータはビットコインネットワークに配信される前のトランザクション(取引データ)に記載されています。0.1BTC支払ったデータは両者が持ち、それを両者が合意するまではネットワークに送れず安全に保たれます。