見出し画像

ATOM 解説 #Cosmos

すいすいです。
最近ATOMについて調べたり教わったりしたのでまとめてみようと思います。
翻訳しながらの部分も多く分かりずらかったら申し訳ありません。

Cosmosに興味がある人はクワダさんをフォローしておくといいです。

またこの記事はCosmosの立ち回り方の解説は一切していないので、そっちが気になる方はLemさんのこちらの記事が参考になると思います。

ATOMの概要

ATOMはGaia(通称CosmosHub)のネイティブトークンで、ガス代の支払い、セキュリティの貢献とガバナンスに使用できます。
CosmosHubはCosmosSDK(Tendermint Core)で作られたIBC(チェーンをまたいでトークンを送受信する通信規格)を搭載しているだけのチェーンです。

ATOMの収益と価値

現在のところATOMはほとんど収益を上げていません。
本来意図されたユーティリティとしてはInterchain Routerというもので、直接IBC Channelを全部のチェーンに対して張るのは不効率なので、CosmosHUBに張れば辿り着きたいチェーンにルーティングし、その代わりにルーティング時に手数料を貰うというものです。

またIBC通信で悪意のあるチェーンが他のチェーンのトークンを偽装する可能性があり、現在はIBCでは各チェーンは受信するトークンをそのチェーンのネイティブのものだけに絞っています。
(例えばOsmosisでJUNOを受け取る場合はJUNOからしか受け付けておらず、TerraやKujiraなど第三者からは受け取ってない。)

つまり全てと安全に繋がろうとすると大変な労力がかかり、チェーンが増えると安全性と利便性は両立出来ません。

そこで信用できる第三者のチェーンとして間にCosmosHUBを挟みます。
そうすることでCosmosHUB1つに接続するだけで他のCosmosHUBに接続する全てのチェーンと安全性を確保してIBC通信が出来るようになります。

ただし今のチェーン数なら直接需要のあるチェーンにチャネル張ればいいので現状意味はあまりありません。

今後IBC接続するチェーンが増え、組み合わせ爆発が起これば本来の意図通り機能する可能性はありますが、現状では判断できないと思います。

あとはATOMがCosmosの新エコシステムに投資するので、ATOMに投資することで新エコシステムに投資することになる、そして新エコシステム稼働時に出資者であるATOMホルダーにエアドロップが貰える可能性があり、それを期待してATOMを保有する人も多いです。

そしてProposal#72でCosmosのCommunityFundからの出資が決まったInterchain Securityというものがあり、Cosmosの新しいチェーンがバリデーターを整備してセキュリティを確保するまでのあいだGaiaのValidator借りられるというものが開発中です。

これが実装されると新チェーンがGaia(ATOM)と同じSecurityでChain立上げできるようになります。
新規プロジェクトがCosmosでプロジェクトを開始しやすい環境を作るのに役に立ちます。

発行主体

最初はTendermint(https://tendermint.com/
ただしその頃の主体は事実上解散していて、今はコミュニティ主体。

Ignite(https://ignite.com/)などが中心的ではあるが、主体といえる組織はなくそれぞれValidatorになるなどして一員として開発されている。

コンセンサスアルゴリズムの特徴

PoSブロックチェーンです。
上位175のバリデーターによって検証されます。
バリデーターのweightは、担保としてロックされたステーキングトークン(ATOM)の量によって決まります。
ブロックのコミットには総ステーキング枚数の内2/3以上のATOMを保有するバリデーターがコミットする必要があります。

ATOMのコンセンサスアルゴリズムのフローは大きく分けて3つあります。

https://engineering.mercari.com/blog/entry/2018-06-04-130000/

1、Propose
上位175のバリデーターによってブロックの提案、投票が行われます。異なるバリデータによって交代交代で提案が行われるようにラウンドロビン方式で提案者が選ばれます。
このラウンドロビン方式の選出は関数として実装されており、誰が提案者となるのかは決定論的に証明可能で、選択される頻度は保有するATOM量に比例します。

2、Pre-Vote
提案されたブロックに対する一回目の投票ステップ。ここで言う投票とは実際にはブロードキャストで送られてきたブロックに対しての署名です。
このステップでは2/3以上コミット力のあるバリデータからの投票が集まるまで待ち状態となります。2/3以上の投票が集まれば即座に次のステップに移行しますが、集まるまでは制限時間まで待ち続けます。

3、Pre-Commit
一回目の投票で2/3以上の投票が集まったブロックに対する二回目の投票ステップ。
ここでさらに2/3以上のバリデータにより投票されればブロックチェーンに新規コミットされ、ABCIのConsensusコネクションが発生します。
二度目の投票で注目しなければいけないのが2/3以上の投票が集まらなかった場合です。この場合2度目の投票であるpre-commitを対象ブロックに対して行ったバリデータはロックされます。バリデータはロックされたブロック、もしくは2/3以上の投票をpre-vote(1回目の投票)で得た新規のブロック以外には投票できなくなります。
これによって各バリデータがpre-commitステップで投票できる対象ブロックは常に1つになります。

決定的ファイナリティがある。
ブロックが巻き戻される確率は厳密にゼロ

ハッシュアルゴリズム:SHA256
署名アルゴリズム:SignedMsgType

51%攻撃などの悪意ある攻撃に対しての対策

PoSチェーンでブロックコミットに2/3以上の投票が必要なので51%攻撃ではないのですが、いわゆる51%攻撃への対策です。

悪意のあるトランザクションを承認するためにはATOMを大量に保有する必要があり、現在すでに190,683,872枚のATOMがステークされて、これは現在の発行枚数の約65%になります。

新しく悪意を持って参入してきてもステーク枚数全体の2/3のATOMを集めることが出来ません。
仮に2/3のATOMを集めて不正な取引を実行したとしても、自身の保有する大量のATOMの価値が落ちることになるので攻撃のメリットが小さくなります。攻撃力を持つバリデーターほど攻撃のメリットがなくなる仕組みになっていると思います。
ATOMの時価総額の大きさがGaiaのセキュリティに深く関わっています。

また1つのバリデーターが34%以上のコミットパワーを集めた場合ブロック生成がとまるように設計されています。
つまり新規ブロック生成には最低でも3つ以上のバリデーターの承認が必要で、独占的にブロックを承認することが出来ないですし、1人が悪意を持ってブロック生成を止めることも出来ない仕組みになっています。

Terraの場合はUSTの需要に応じてネイティブトークンのLunaが無限にMINTされる仕組みがあったため数時間という短い期間でステーキングされているLunaの何倍ものLunaが流通してしまいました。
ATOMにこういった急激に発行量が増える仕組みはなく俗にいう51%攻撃に強い設計であると言えると思います。

報酬付与の計算

ATOMをCosmosHub内でバリデーターにデリゲートすることでステーク報酬を受け取れます。

報酬は新たに作成(MINT)されたAtomで支払われます。

年間のインフレ率はステーク量の2/3を目標に計算されます。ネットワーク内のステーク量がアトム総供給量の2/3未満の場合、インフレ率は20%に達するまで上昇します。ステーク比率が2/3以上であれば、インフレ率は7%になるまで低下します。

つまり、債券の出資比率がアトム総供給量の2/3未満の状態が長く続くと、債券を持たないアトム保有者のアトム価値は年間20%(複利計算)下落すると予想されます。

ブロック報酬は、全バリデーターの投票権に比例して分配されます。つまり各バリデーターが報酬ごとに ATOM を獲得してもすべてのバリデーターが同じ比率を維持し続けることになります。

DDoS攻撃など、スパムからの攻撃耐性

バリデータはネットワークがDDoS攻撃に耐えられるようにする責任があります。

バリデーターが接続するフルノードは、自身が運用しているか、社会的に知 られている他のバリデータが運用しているため、信頼できるフルノードに限らなければ なりません。
バリデーターは通常データセンターで動作します。ほとんどのデータセンターは主要なクラウドプロバイダーのネットワークに 直接接続できるようになっています。
バリデーターはそのリンクを利用してクラウド上のセントリーノードに接続することができます。これによりサービス拒否の負担がバリデータのノードからセントリーノードに直接移行し、既存のノードへの攻撃を軽減するために新しいセントリーノードの起動や活性化が必要となる場合があります。

セントリーノードは素早く起動したり、IPアドレスを変更したりすることができます。
セントリーノードへのリンクはプライベートIP空間にあるためインターネットベースの攻撃はそれらを直接妨害することはできません。これによりバリデーターのブロック提案と投票が常にネットワークの残りの部分に到達することが保証されます。


DDoS攻撃は、攻撃者があるIPアドレスにインターネットトラフィックの洪水を送り、そのIPアドレスにあるサーバーがインターネットに接続できないようにすることで発生します。

攻撃者はネットワークをスキャンし様々な検証ノードのIPアドレスを知ろうとし、トラフィックを殺到させることで通信を切断させます。

これらのリスクを軽減するために推奨される方法の1つは、バリデータがセントリーノードアーキテクチャーを使用してネットワークトポロジーを慎重に構成することです。

バリデーターは自らが運用するフルノードまたは社会的に知り合った 他のバリデーターが運用する信頼できるフルノードにのみ接続することが期待され ます。
バリデーターは通常データセンターで実行される。ほとんどのデータセンターは主要なクラウドプロバイダーのネットワークに直接接続することができます。

バリデーターはこのリンクを利用して、クラウド上のセントリーノードに接続することができます。
この緩和策によりサービス拒否の負担がバリデータのノードから直接セントリーノードに移り既存のノードへの攻撃を緩和するために新しいセントリーノードを起動またはアクティブ化することが必要になる場合があります。

セントリーノードは素早く起動したり、IPアドレスを変更したりすることができます。セントリーノードへのリンクはプライベートIP空間にあるためインターネットベースの攻撃はセントリーノードを直接妨害することができません。
この戦略によりブロックの提案と投票がネットワークの残りの部分に到達する確率が非常に高くなることが保証されます。

www.DeepL.com/Translator(無料版)で翻訳しました。

ダブルスペンド防止に関する仕様

Double signingが発生した場合、そのバリデーターにペナルティが課せられます。
デリゲートされているATOMの5%がスラッシュされます。
このペナルティを受けたバリデーターの信用は失われるので、ATOMのデリゲートは大幅に減ります(普通の人はもうデリゲートしなくなるでしょう。最近だとEVMOSで10%のスラッシュが発生して、界隈の人も結構巻き込まれていたようでした)。
危険性のあるバリデーターが淘汰されていく仕組みになっています。

またスラッシュでいうと、バリデーターのダウンタイムが10分あると0.01%のスラッシュがあります。
これは割と気が付いてないだけでくらってる人が多いのではないかと思っています。
バリデーターがうっかりアップデートを見逃しててダウンタイムが発生してスラッシュ、、なんてことも普通にあります。
ガバナンスの投票率が悪いなど情報を追えてなさそうなバリデーターは要注意です。

まとめ

僕がATOMについて調べたことをまとめてみました。
間違っていたところ、他にも気になるところがあればTwitterなどで話しかけていただければ追記しようと思います!!

CosmosHub2.0?とかでリキッドステーキングなども今年の下半期に予定されています。
これが実装されるとATOMを担保に発行する過剰担保型ステーブルコインの使い勝手がよくなり、さらにCosmosHub自体のセキュリティも向上することが期待できます。

他にも色々あるようですがCosmosHubはCosmWasm搭載のガバナンスを否決したり、ルーティングに特化することにストイックです。(CosmWasmを乗せるとブロックボリュームが大きくなりバリデーターの負担が増し、チェーンが不安定になることに繋がるとか。。分からんですが処理能力も少し落ちるんですかね。)

ソースはクワダさんですが今のところ秒間5000トランザクションで、約束の日に向けてさらに処理能力を向上させる研究がされています。

余計な機能は不要。
ルーティングだけするのだ。

といった感じでしょうか。

また理解が深まったら追記しようと思います。


この記事が気に入ったらサポートをしてみませんか?