The Coffee Times

シゴト・英語・テクノロジー・人生の楽しみ方を発信してます

Cosmosのマルチトークンモデルについて

メルマガ「Bspeak!」から一部抜粋した内容になります。これ以外も書いているので、よかったら登録してみてください。

www.mag2.com

 

Cosmosという異なるブロックチェーン間で互換性をもたせようとするプロジェクトがあります。Cosmosにおけるトークンについて説明していきます。

 

Stakingとしてのトークン:Atom

まずCosmosはいろんなチェーンをHubが管理をします。Hubが管理するチェーンはZoneと言われます。(外側の丸)

     f:id:CoffeeTimes:20180113214845p:plain

 

CosmosではPoSというコンセンサスアルゴリズムを採用しているため、ブロックを提案・生成する「Validator」という役割は、トークンの保有量で決まり、報酬としてトークンがもらえます。

        f:id:CoffeeTimes:20180113215210p:plain

 

ここにおけるトークンとは、ICOを実施した「Atom」というトークンになります。これがネットワークを維持するためのインセンティブとなります。

 

       f:id:CoffeeTimes:20180113215034p:plain

 

Cosmos Hub内に合計100 Atomあるとしたら、10 Atom持っているValidator10%の確率で「報酬を貰えるValidator」に選ばれます。

(厳密には、一度生成するブロックを提案(propose)して、他のValidatorの投票で決定がされるため、選ばれたValidatorは、Proposerと呼ばれます。)

 

マルチトークンによる手数料支払い

さてここまでは一般的なPoSブロックチェーンと同様なのですが、手数料に関わるトークン設計については、Cosmosはまったく新しい設計がされています。

普通、送金などでネットワークを使用するときの「手数料」は1種類のトークンで支払われます。BitcoinブロックチェーンであればBTCが、EthereumチェーンであればETHが、NEMであればXEMNEOであればGASが手数料として支払われます。

しかしCosmos Hubブロックチェーンでは他のブロックチェーンと異なり、「ホワイトリスト」に載っている複数のトークンを、手数料として使うことができます。

 

1つのHub(最初はCosmos Hubのみですが)につき、手数料トークンの一覧である「ホワイトリスト」というのが存在します。Cosmos Hubのローンチ時点のリストにはAtomPhotonの2つのトークンが設定されます。

Atomは先程いったネットワークを維持するための報酬トークンです(Stakingトークンと言われたりします)。

ただこのAtomだけが手数料として使われ流動性を高くしてしまうと、市場から安くたくさん買えるようになってしまいます。すると最悪の場合、「攻撃者が33%以上のAtomを買い占め、攻撃者の都合のいい意思決定だけをする」という可能性が高くなってしまいます。

したがってStakingだけの用途に限定し流動性を低くするため、手数料用のトークンとしてPhotonというトークンを導入します。(もちろん選ぼうとすればAtomを手数料として使えます。特にローンチ時点は、トークンが他にないので、そうする必要がでてきます。)

しかし、いろんなチェーンが繋がっていけば、Cosmos Hub内にいるValidatorたちのガバナンス(投票など)によって、ホワイトリストトークンが追加されていきます。

ここでガバナンスをしてから追加するという方式をとっている理由は、手数料もValidatorに報酬として渡されるからです。Validatorとしてどのトークンならもらいたいか、というコンセンサスを取る必要があります。

(そういったガバナンスに参加できることのメリットを増やすことで、ガバナンスに参加したいAtomが必要ネットワークが維持される・堅牢になる、という設計になっています。)

 

異なるトークン手数料で、Validatorはどのようにトランザクションを選ぶか

では、Validatorは、数あるトランザクションの中から、どのトランザクションを優先的に選ぶでしょうか。Bitcoinネットワークであれば、ユーザが設定する手数料が同じBTCなので、どのトランザクションの手数料が高いか判断することができ、高いものから優先的に処理をしていきます。そのほうが報酬が高いからです。

しかしCosmos Hubの場合は、BTCだけじゃなく、いろいろなトークンが手数料として使われている中で、Validatorはどう優先付けをするのでしょうか。


Validatorたちが「いろんなトークンを手数料としてトランザクションを横並びにしたときに、処理するとお得なのは、この順番だね」と同意するためには、誰かが運営しているオラクルからの情報に頼るか、オンチェーンのDEX(分散型の取引所)から、「今いくらで取り引きされてるか」という価格の情報を引っ張ってくる必要がでてきます。
(オラクルは、メルマガ1号で説明。)

しかしそのようなことは現実的ではないため、Cosmosでは、すべてのValidatorが合意をするのではなく、ブロックを生成することになったValidatorが、「自分の考えで優先付けを決める」ことができるようにしています。

それぞれのValidatorは自分の考えで決めるといっても、どのように、違うトークンを横並びにして順番を決めるのかを見ていきましょう。

 

それぞれのValidatorは、configファイル(設定ファイル)をもち、そこに自分の好きな重み付けをしていきます。この重みを使って、Proposerになったときに選ぶトランザクションの優先付けができます。

このconfigファイルは、初期設定では、AtomPhotonを含み、以下のように同じ重みになっています。

---Configファイル---
Atom:1
Photon:1
------------------------

それをvalidator運営者は好きに変更することができます。(例えば以下のように)

---Configファイル---
Atom7
Photon5
------------------------

いろんなチェーンがつながり、Cosmos Hubのガバナンス(Validatorたちの投票など)によって、手数料として使えるトークンが追加されると、以下のようになります。ここではBTCETHが追加されたとします。

---Configファイル---
Atom:7
Photon:5
BTC:0
ETH:0
------------------------

その後、設定ファイルをいじることで、好きな重みに変更ができます。

---Configファイル---
Atom:7
Photon:5
BTC5000
ETH0.2
------------------------

好きな取引所のAPIを使ったり、組み合わせ、定期的にこれを更新するという設定もできますし、APIがなければ、オンチェーンの取引所から最近取引された実際の価値をひっぱってきて、重み付けができます。

 

例えば、手数料が0.5BTCトランザクション13000 ETHトランザクションがあったとします。高いほうが、お得ですから、Validatorはどちらが高いかを、configファイルの重みをみて、比べます。

上のconfigファイルに設定していたとすると、

BTC5000という重みが設定されているので、5000×0.5BTC2500

ETH0.2という重みが設定されているので、0.2×13000ETH2600

となります。そうすると2つ目のほうが割がいいので、優先されてブロックに承認されるようになります。

 

このモデルの良い点

あるトークンを、チェーンの差異をなくし、「ブロックチェーンAからブロックチェーンBに送る」というのが一番使われるCosmosの使い道なので、ユーザもその送るトークンで手数料を払いたいはずです。わざわざ転送のためのPhotonAtomを取引所で買ってくるという煩雑な手順をなくすことができます。

そうすることで、Hubの実用性が増し、Cosmosが運営するCosmos Hubの他に、いろんなところでHubがでてきて、どんどんブロックチェーンが繋がっていく可能性があります。

   f:id:CoffeeTimes:20180113215300p:plain 

 

そしてどのトークンを手数料として使うかは、ユーザが使うソフトウェアのウォレットや、アプリ(Dapps)上で選べるようになり、ユーザは、手数料を意識しなくなるかもしれません。

さらにユーザにとってのみならず、Validatorにとっても良いことがあります。どのトークンを優先的に受け取るかについて、Validatorに主権があるという点です。

好きな通貨を選べるし、面倒であれば、configファイルはデフォルトのままにして、AtomPhotonのみ受け取るようにしておけば良いのです。

---Configファイル---
Atom:7
Photon:5
BTC:0
ETH0
------------------------

 

White Paper:https://cosmos.network/about/whitepaper

暗号通貨のクリプトメルマガを始めた

暗号通貨のクリプトメルマガを始めました。無料です。

ブログで解説する記事も増えてきたし、何か人とは違った形で発信してみたかったのがきっかけです。

また元Microsoftの中島聡さんのメルマガに感動していたので、同じようにテキストとスマホの相性をいかした情報を発信をしてみたいと思いました。

メルマガと聞くと超怪しいですが、真面目に綴っていきます。

 

基本構成は以下です。

 

・Last Week in Crypto

海外のニュース記事や、論文の紹介

 

・今週の学び

専門用語のテクニカルレベルの解説

 

・相場コーナー

相場で面白かった点を考察

 

・Q&A

 

これ以外にも、何かあれば書いていきます。

長く続けることを目標に、ゆるくやっていきます。毎週、月曜朝6時30分に届けるようにやってみます。ゆるく。

 

第1号は、明日12月25日クリスマスの日になります。w

 

 

「チャネルファクトリー」はペイメントチャネルをより効率的にしうる

 

Bitcoinはスケーラビリティ問題に直面していて、マイクロペイメントチャネルがさばけるトランザクションレートとスピードを上げるので、解決策になりえる、と言われています。しかし、すべてが解決というわけではなく課題もあります。

例えば、マイクロペイメントチャネルは固定の額の資金を、それぞれのチャネルのマルチシグウォレットに入れておく必要があり、チャネルを作るとき・閉じるときにそれぞれトランザクションが必要になる、などです。

それらの課題に取り組む研究がいくつかされていますが、最近発行されたスイスの大学・Blockstream著の論文である提案がされました。ブロックチェーンとペイメントチャネルの間に新しいレイヤーを実装するというものです。

 

 

 

 

マイクロペイメントチャネルとは何か?

この論文では、マイクロペイメントチャネル・ネットワークでの課題を2つあげています。1つ目はブロックチェーンのキャパシティ、2つ目がチャネル開閉のためのウォレットにロックされた資金です。

これらに対する解決策を見る前に、マイクロペイメントチャネルについて説明します。(図は後日追加するかもです)

現在はビットコインブロックチェーンは、非常に少額のビットコインの支払い(マイクロペイメント)を何度も送ることができません。現在は最大ブロックウェイト(ブロックの容量)が4MBなため、平均・秒間10トランザクション以下になってしまいます。

 

ペイメントチャネルでは、まず送信者と受信者が鍵を持つマルチシグのウォレットに固定の額の資金をロックします。そして、ブロックチェーントランザクションを送ることでチャネルが開きます。次にこのチャネル内で、送信者が支払いを何度でも実施することができます。これらの支払いはブロックチェーンに刻まれれるわけではなく(つまりオフチェーンで行われ)、両者のみが関与する支払いです。

 

そしてこのチャネルが閉じたら、「最終的にどうなったか」という残高になるように、結果だけがビットコインブロックチェーンに送られます。

これが、マイクロペイメントチャネルの大まかな概要です。より改良された実装が、ライトニングネットワークで、双方向のペイメントチャネル実装が可能になります。

 

数千というトランザクションがチャネル開閉のための2回のトランザクションのみになるため、大幅な改善といえます。しかしまだこれでも、ブロックチェーンではない既存ペイメントシステムに匹敵するほどにはなりません。

チャネルは2者間でのみ存在するので、もし20人グループのうちそれぞれが、5つのチャネルを開きたいとき、100回ものトランザクションが必要になってしまいます。

さらに、あらかじめロックした資金を超えた場合の解決策がまだありません。

 

 

解決策:チャネルファクトリーについて

この論文で提案されているのは、解決策として新しいレイヤーを組み込むというものです。論文には、「ブロックチェーンとペイメントチャネルネットワークの間にレイヤーを作る。そのレイヤーはチャネルファクトリー(channel factories)と呼び、それにより、関わっている2者が素早く資金のやり取りをできる」とあります。

 

ここで1つ目のレイヤー(ブロックチェーン)と3つ目のレイヤー(ペイメントチャネル)はすでにあるもので、1つ目は資金をロックし、3つ目は実際の送金を行います。提案されている2つ目のレイヤーは、チャネル工場という名の通り、複数が関わるマイクロペイメントチャネルの挙動を管理し、ペイメントチャネルの資金が枯渇しそうになったときに、それを補填するようなことができます。論文では、20個のノードと100のチャネルがあった場合に、90%の節減ができると計算しているようです。

 

チャネルを開閉のその度にトランザクションを作るのではなく、論文の手法では、1回のトランザクションで複数のチャネルを作ることができると書いています。資金は従来のような特定のウォレットではなく、共有ウォレットにロックされるため、このようなことが可能です。さらに資金は、受信者のアドレスのついたメッセージを送るだけで、オフチェーンの送金が可能なようです。

論文で言及されているリスクとしては、グループ内のユーザがチャネルファクトリー(第2のレイヤー)を閉じることができるという点です。人数の大きなグループでは利便性が制限される可能性があります。

また、受信者が署名しないという可能性があります。論文では、タイムロックを設けるか、反則者に罰則を与えるなどの対策が書かれています。タイムロックのほうが効果的なため現在はそちらに注力する可能性が高いようです。つまりタイムロックの時間がすぎたら、現在のチャネルの状態がブロックチェーンにブロードキャストされ(情報が送信され)、チャネルを閉じる、そして罰則はなし、というルールです。 

資金の安全性についてはリスクはないようです。マルチシグのウォレットが、関わっている人すべての署名がされない限り資金は使われないためです。

 

概念的な部分も多いので、研究が進み、また自分の理解がさらに進んだら更新していきます。 

 

https://www.tik.ee.ethz.ch/file/a20a865ce40d40c8f942cf206a7cba96/Scalable_Funding_Of_Blockchain_Micropayment_Networks%20(1).pdf

This New Scaling Layer Could Make Payment Channels Ten Times More Effective — Bitcoin Magazine