BlockchainのInteroperabilityの分類（Plasma/ICS(IBC)/ILP/Atomic Swap）とか🍛

きっかけはこれ

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">SFC Advent Calendar 2019 - Qiita<br><br>めっちゃ枠余ってるので誰か<br><br>カレーの作り方でもいいですよ <a href="https://t.co/grBycPzBbk">https://t.co/grBycPzBbk</a></p>&mdash; ogiwara (@designpatterngf) <a href="https://twitter.com/designpatterngf/status/1199970880203280385?ref_src=twsrc%5Etfw">November 28, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

🍊「じゃあカレーについて書くか〜」

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">おいしいカレーの作り方書きます <a href="https://t.co/fzxNy6klsM">https://t.co/fzxNy6klsM</a></p>&mdash; みかん🍊 (@Mikan_SFC) <a href="https://twitter.com/Mikan_SFC/status/1200226976402792449?ref_src=twsrc%5Etfw">November 29, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">Qiitaであまり情報技術と関係ない事を書くと削除されるのを忘れてました…<br><br>ごめんなさい… <a href="https://t.co/5qOse2n95t">https://t.co/5qOse2n95t</a></p>&mdash; ogiwara (@designpatterngf) <a href="https://twitter.com/designpatterngf/status/1200242858634039296?ref_src=twsrc%5Etfw">November 29, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


🍊「ん？ダメなん？」


https://help.qiita.com/ja/articles/qiita-community-guideline
>プログラミングに関する記事を投稿しよう
Qiitaは「プログラミングに関する知識を記録・共有するためのサービス」です。プログラマーが興味を持つものではなく、プログラミングに関する記事を投稿しましょう。

うん、ダメそう
ってことでおまけで書くことも考えましたがなんか申し訳ないので普通に書きます。

この記事は[SFC Advent Calendar 2019](https://qiita.com/jyu0414/items/52ce2573ccfdd0a42e45)の12/3の記事です。

# ブロックチェーンってなーに
何にも知らない人はこれでも読んでください。発明者であるSatoshi Nakamotoの書いた原論がなんだかんだ一番わかりやすいです。
https://bitcoin.org/files/bitcoin-paper/bitcoin_jp.pdf

# インターオペラビリティ（相互互換性）とは

名前のまんまなんですが、クッソ簡単にいうとブロックチェーンをつなげるってことです。これまでブロックチェーンがそれぞれ独立してでしかなかったものをつなげようというやつです。正確な定義等はなく雰囲気で使われてます()（スマートコントラクトのVMが共通しているから移植しやすい云々とはまた別の話です）

で、分類的としてはこんな感じに考えてます
 

- Swap Type
- PegToken Type

#swap Type
概念：「特に既存の中央集権的な取引所を介することなく、ブロックチェーンAに存在するトークンAとブロックチェーンBに存在するトークンBを交換する仕組み」

例）

- ILP：https://zoom-blc.com/ripple-interledger-protocol
- Atomic Swap(BTC)：https://zoom-blc.com/atomic-swap
- RenVM：https://chaos.renproject.io/ 
- SwingBy：https://swingby.network/

できること：（ブロックチェーン以外も含む）価値の交換
できないこと：他のシステム上にペグされたコインを作る


### 課題
トークン交換の流動性をどのように確保するのか（既存の取引所の方がUXは優れているのでは）

ILP：Market Maker Program？
RenVM：[Uniswap](https://bit-pr.com/uniswap-decentralized-token-exchange-ethereum/)みたいににトークンをプールさせるインセンティブを持たせる。
SwingBy：[Binance Chain](https://www.binance.org/)（世界最大級の中央集権取引所が出している分散型(？)取引所）の流動性を使う？

中央集権的な仕組みのSwap Protocolは中央集権取引所にあたる？

# PegToken Type
概念：「チェーンAにあるトークンAをロックして、チェーンBにそれと1:1のトークンBを新たに生成してチェーンB上にトークンA'を表現する仕組み」

例）
（中央集権）

- WBTC
- Rootstock
- Liquid Network

（非中央集権）

- Cosmos（Inter-Chain Standard/Inter-Blockchain Communication）
- Polkadot
- DriveChain
- Plasma（Verifierが中央集権で設計しても悪い行いができない仕組みなのでこちらに分類。ただ最近はOptimatic Rollupの方が盛ん...?）


できること：他のシステム上にペグされたコインを作る
できないこと：価値の交換（オプション機能として存在）



### 課題
- 単純なPegTokenの場合セキュリティーはVerifierに依存する。（中央集権タイプのWBTCなら、BTCを管理しているBitGo、Cosomos HubならStakeされているトークンの1/3以上が悪い行いに使われないこと）
- PlasmaとかはたとえL2チェーンのVerifierが悪意を持っていてもMass Exitとかを行えばよいが
     - メインチェーンのセキュリティーや仕様に依存する。（それでもずいぶんマシではあるが）
     - 完全に独立した二つチェーンをつなげる仕組みではない。（子チェーンと表現されるように。親チェーンのスケーリングの一環？）

解決策：セキュリティーを上げるしかない（非中央集権タイプならStaking Ratio、Token Distributionなどの攻撃コストをあげる、中央集権なら適切な鍵管理）



# Swap TypeとPeg Typeのコラボレーション

例）![IMG_20191009_175037.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/541057/a3645933-8bcb-573f-fa61-886a124cdb7f.jpeg)
（補足説明）
Zone：Cosmos NetworkないでHubにつながっているチェーンのこと
Hub：Peg Tokenの移動を管理するチェーンのこと

### 課題
例えば左上かのゾーンから右下のZoneに行くのにかかるのは
Zone1→Hub1→Hub2→Zone2
くらい。これはそれぞれのチェーンにて承認を待たないといけないので結構かかる。（各チェーンで10秒として40秒？）

### 解決策
ILPとかの仕組みを使って、即座にSwapすればいいのでは？（これなら確実にファイナリティを得られるチェーン同士とかなら1ブロックチェーン内部のtxの承認待ちだけですむ。）流動性プロバイダーが少しの手数料とって行う。

# さいごに
おいしいカレー🍛の作り方は[ぼくのTwitter](https://twitter.com/Mikan_SFC )に2019/12/25まで期間限定で固定しておきます〜