ビットコインの情報サイトの運営者ブログ

サイトには掲載していない仮想通貨に関する時事的な情報や個人的な感想など。中級者以上向け。

Ardorとその子チェーンIgnisとICOについて

何回か書いているNxt,Ardor関連記事。7月の終わりにArdorとその子チェーンIgnis(FNXから改名)についてのホワイトペーパーが公開され、つい数日前にIgnisのICOが始まりました。このブログで何回か取り上げてきたこともあり、改めて記事を書いておきます。

ホワイトペーパーは英語しかありませんが、あまり細かい技術的な内容には触れず難しい数式もなくかなりわかりやすいようにまとまっているので、できればそちらを参照することをおすすめします。

Ardorの概要

大まかな内容は以前の関連記事を見てください。Ardorトークンの配布は終わっており、現在はNxt内の分散型取引所または普通の外部取引所から入手することができます。

Ardorの子チェーンは企業などが自由に立ち上げることができ、セキュリティを親チェーンのArdorに任せながらも自由に安全に各企業のブロックチェーンを運用できるということを売りにしています。その最初の一つの子チェーンとしてArdorの開発チームによって立ち上げられICOが始まっているのが、Ignisです。

以前の記事の中ではArdorの最大のコンセプトは「サイドチェーン」です、と書いており、Nxt(Ardor)の開発チームもサイドチェーンという言葉を使っていたのですが、実際はサイドチェーンとは違うことが明らかになりました。

サイドチェーンについて

開発チームもホワイトペーパーの中で、サイドチェーンとは区別・比較しており、Side Chainsに対して「(Ardor) Child Chains」という言葉を使っています。

特に、この手の新しい言葉の意味は明確な定義が決まっているわけではなく、流動的ではありますが、ホワイトペーパーのなかでは、サイドチェーンという言葉を「それぞれが独立したブロックチェーンでお互いのチェーンが何らかのペグで結びつけられているもの」、というような意味で使っています。

Ardorのホワイトペーパー以外の場所でもこの説明は一般的であると思われます。サイドチェーンというとLiskとか、あるいはRootstockとかLiquidのような新規ブロックチェーンがよく話題にあがります。しかしそれ以外にも、例えばビットコインとイーサリアムのチェーンをペグしてBTCとETHを相互交換できるようにしよう、みたいな話もあって、もしそれが実現されれば、ビットコインがイーサリアムのサイドチェーンになったとかイーサリアムがビットコインのサイドチェーンになったみたいな言い方もできるわけです。

つまり、Rootstockとビットコインの間の関係のように親子関係のようになっている場合もありますが、そうではない場合もあり基本的にはそれぞれが「独立したブロックチェーン」でさえあれば、サイドチェーンになりうるわけです。逆に言うと、サイドチェーンはそれ自体は独立したブロックチェーンであり、どうしてもブロック生成のためのコンセンサスアルゴリズムが必要となり、特に新しくブロックチェーンを立ち上げる場合はそれをPoWにしてビットコインとのMerged Mining(同時採掘)であったり、プライベート(コンソーシアム)チェーン的にして特定の企業間のノードによる承認でブロックを生成したりする必要があるわけです。

子チェーンから親チェーンArdorへのbundleによる複数「チェーン」方式

そのようなサイドチェーンの一般的な定義に照らし合わせると、親チェーンArdorと子チェーンは全くサイドチェーンではありません。そもそも子チェーンは「ブロックチェーン」ではありません。

ブロックチェーン構造としてはArdorチェーンの一本のみです。ArdorのチェーンはNxtやWavesと同様にPoSをコンセンサスアルゴリズムとする普通のブロックチェーンで、PoSによりブロックが生成されトランザクションが確認されていきます。

子チェーンにはブロックという概念がなくブロック生成者、いわゆるマイナー的な役割を果たす人のことを「bundler」と呼んでいます。bundlerの役割は子チェーンのネットワーク内の複数のトランザクションを集めて、Ardorチェーンの一つのトランザクションにまとめてArdorネットワークに送信、Ardorのブロックによりトランザクションを承認させることです。この一連の作業が「bundle」と呼ばれています。そのため、子チェーンの実態はブロックの連なりではなく、単なるトランザクションの連なりであり、それぞれのトランザクションが一本のArdorチェーンのブロックに取り込まれているだけといえます。

つまり子チェーンのbundlerは通常のブロック生成を行うマイナーとは違い、取引手数料としてARDRを支払う必要があります。代わりに子チェーン内の基軸トークンを集めるため、そのトークンの価値が取引手数料ARDRの価値を上回れば、bundlerには報酬が発生することになりますが、そうでない場合は、bundlerをやっても損をするだけということになります。

これではbundlerになるインセンティブが低すぎて、子チェーンのトランザクションが全く承認されなくなってしまうようにも一見思われますが、Ardorとしてはビジネスとして企業が子チェーンを立ち上げることを主眼に置いており、bundlerというのは一種のシステム運用コストであるとも説明されています。

実際に複数の独立したブロックチェーンを立ち上げることになるサイドチェーンとは違い、一本のブロックチェーンなので、一般的に考えればサイドチェーンよりスケーリング能力は低いと考えられます。しかし、親チェーンArdorのブロックの子チェーンのトランザクションデータには細かい情報(例えばIgnis内でAからBへ2IGNIS送金)は保存されず、子チェーンの運用ノードのみによってその情報が保存されるので、一からブロックチェーンをダウンロードするとき、全チェーンの全トランザクションをダウンロードする必要がなく普通のブロックチェーンよりもスケーリングに優れているとされています(承認時にはArdorのPoSマイナーによって全チェーンの全トランザクションが検証されますが、1440ブロック以前の子チェーンのトランザクション情報は破棄されるようです。)。

また、サイドチェーンとは違い子チェーンの取引承認はすべてメインのArdorチェーンによってなされるので、どのように子チェーンのブロックを生成するかなどを考える必要がなく、全ての子チェーンがArdorに依存でき一定のセキュリティが保障されるともしています。その他として、子チェーンのトランザクションにはその子チェーンの基軸トークンのみを手数料として支払う(→bundlerへ)必要があり、エンドユーザーは子チェーンの基軸トークン以外のトークンを買って手数料として支払う必要がないので、子チェーンを立ち上げるビジネスとしてはより自由な運用が行いやすいということもメリットとしてあげられています。また、実態としては一本のブロックチェーンなので、ブロックチェーン上のトークンの自由な交換が行いやすく、Nxtでは出来なかったトークン間の分散型取引もできるようになるようです。

ICOの混乱

ということで現在はArdorの最初の子チェーンIgnisのICOが行われています。日本語ページもあるので詳細はICOページを参考にしてください(最新情報が更新される英語ページも要参照)。

大ざっぱに説明すると、ICOは5期間に分かれ10月14日まで開催されます。Ardorの立ち上げはICO終了後二週間はされないことになっているので、早くてもスタートは11月ということになり計画の発表当初の予定より遅れることとなりました。

IGNISトークンは、ICOの参加者の他にもNxtの保有者にも配布されます。レートはICOより低いですが、NxtとIGNISの両方を持つことができるので、もしArdorスタート後にNxtが一定の価格を保てばICOよりも有利ということにもなり得ます。ただし、Nxtのブロックチェーンは一年間しか開発チームによりサポートされないことが発表されていますし、スタート後Ardorに致命的な問題でも起きない限りNxtが長く生き残る可能性は低いのではないかと思われます。

改めてICOの話に戻ると、現在は8/5から8/10の最初の期間でさらにその最初の6日間を12回の期間に分けてICOを行っています。日本時間で毎日15:45~16:15、3:45~4:15の期間のいつかの時点から各ラウンドをスタートということになっています。

しかし、IgnisのICOでは各段階でトークンの販売上限があり、最初と2回目の期間のICOで同じ一つのアカウントにすべてのIGNIS(各ラウンドで500万JELDA=500万IGNIS=200万NXT=約3000万円)を購入されてしまうという事件が起きました。この事態に多くのNxtコミュニティの人が不公平だとNxtのredditや公式フォーラムがかなり荒れている状態です。IgnisのICOは基本的にNxtウォレットから参加するもので、自分でツールでも開発しない限り開催直後にしかトランザクションが送信できないようになっているのですが、これを受けてNxtのクライアントの新バージョンがリリースされ自分がフルノードであれば開催前からでもトランザクションを予約しておいて送信できる機能が追加されました。

開発チームの迅速な対応にコミュニティは好印象ではあるものの、つい先ほど行われたラウンドも1アカウントが486万IGNISを買い占め計5アカウントしか買えなかった状況になっており、また不満が出てきてもおかしくはありません。

ということで、最初のNXT配布が不公平だと常に批判を受けてきたNxtですが、Ignisでも同様に批判されてしまう可能性が出てきています。IGNISトークン自体はPoSのセキュリティとは無関係なのでトークン買い占めで51%攻撃が・・・みたいなリスクまではありませんが、ICO期間全体から見ればまだまだ最初の期間でなんともいえないものの、スムーズに不満無くスタートできるかは不透明な状況になっています。

もしArdorに期待していてIgnisのICOに参加したいという人がいれば、単純にIgnisのICOに参加するのではなく、Ignisは諦めて親チェーンのARDRを買うとか、今のうちにNxtを売っておいてNxt保有者へのIgnis配布を狙って一番安い時期に買い戻すことを目指すとかいろいろ選択肢を検討してもいいかもしれません。

Bitcoin Cashの状況とウォレット対応のまとめ

日本時間の8月2日午前3時過ぎに1MBを超えるBitcoin Cashのブロック#478559が採掘され、ビットコインからビットコインキャッシュが分岐しました。

どうなるかまだまだ不安定な状況であり、サイトに乗せるにはまだちょっと厳しいのでブログに状況をまとめておきます。取引所については、特に書かないので各取引所公式や他のサイト・ブログを参照してください。

安定状態になるまでは随時更新していく予定ですが、1日~数日に1回程度のチェック&更新となると思うので、最新情報は各公式サイトや他のサイト・ブログ等も参考にしてください。

Bitcoin Cashのブロックチェーンの状況確認

トランザクション(送金)の確認状況やブロックの採掘状況などは上記のブロックエクスプローラを参照してください。Bitcoin cashの公式サイトにはblockchairへのリンクが貼られていますが、同サイトはやや不安定なようなので複数のサイトで確認したほうが良いと思われます。

現在の状況など

日本時間8月1日22時14分16分に採掘された#478558を起点にブロックチェーンが分岐しました。Bitcoin Cashとしての最初のブロック#478559はかなり後の約5時間後に採掘され(ハッシュレートが元のビットコインと比較して著しく低いことや最初のブロックは1MB以上でなければならない仕様などが時間がかかった原因)、現在までに12ブロックが採掘されています。記事執筆時点では再びブロックが長時間採掘されない状態が続いています。

Bitcoin Cashには通常のビットコインの2週間毎のdifficulty(採掘難易度)調整のほかに、6ブロック採掘するのに12時間以上かかった場合に20%difficultyが減少する仕様が備わっているので、difficultyを下げるために意図的に投与するハッシュレートを下げている可能性もあります。マイナーが諦めて撤退してこのまま永遠に採掘されず実質的に消滅してしまう可能性もゼロではありません。

2017/8/3 追記:

その後十数ブロックが採掘されdifficultyも75%程度低下しました。依然としてビットコインのブロック生成間隔の約10分からは程遠く、1確認には数十分から数時間の長い時間を要しています。

2017/8/4 追記:

その後、ブロックの採掘間隔がかなり狭くなり、ほぼ1時間に1回から数回、時々数時間間隔が空いて採掘が行われるようになっています。スムーズな送金ができるようになってきましたが、確認数は変わらず多めにとることをおすすめします。

いずれにしても現在のBitcoin Cashは1ブロック採掘する、つまり1確認が行われるのに数時間以上かかる場合があり、ハッシュレートの分布も非常に偏っていることが予測されるため、51%攻撃により送金がなかったことにされるリスクなどが通常より高まっています(51%攻撃は完了したはずの送金がキャンセルされてしまうだけでコインが消滅することはありません。)。

そのためBitcoin Cashの安全な送金には数十確認程度待つのが確実で、現在は対応ウォレットも非常に少ないので必要なければ急いで送金しないことをおすすめします。

特にハードウェアウォレットなどセキュリティに優れているコールドウォレットのパスフレーズを、Bitcoin Cash未対応だからといってすぐに他の対応ウォレットへインポートしようとするのはセキュリティが著しく低下するのでおすすめしません。

Bitcoin Cashに対応しているウォレット(新ウォレット)

ブロックチェーンすべてをダウンロードするBTCのBitcoin Coreにあたるウォレットです。必要容量が100GBを超えPCスペック等によっては同期に数日以上かかることもあるので、よく理解している人以外利用はおすすめしません。

Bitcoin ABCよりも前のClassicやXT等含め過去のビットコインからのフォークプロジェクトのすべてがBitcoin Cash対応のバージョンをリリースしたというのはなかなか興味深いです。Bitcoin Cashは基本的にBitcoin ABCに沿っているので使用するならBitcoin ABCが無難かと思います。

PC用ウォレットElectrumのBCC対応版のソフトです。悪意のあるソースコードは確認されていませんが、インストール版の作成者は元のElectrumの開発陣とは全く関係のない匿名の人なので信頼性がまだ低くソースコードからビルドできる上級者以外は現時点での使用はおすすめしません。

ウイルス・マルウェア的な挙動は確認されていませんが、まだマルチシグネチャに対応していないことやBCCチェーンではなくBTCチェーンに接続する不具合などが存在するため、残高が正しく反映されなかったり送金時にエラーが出る場合があったりソフトとしては不安定な状況のようです(公式サイトもごく少量のテスト目的だけで使用することを推奨)。

これらのウォレットは派生前の既存のBitcoin Core、Electrumのファイルを上書きするようなのでそれぞれインストール済みの人は注意。

追記:Electron Cashが上書きするのはソースからビルドした場合のみのようなので、通常のバージョンは問題ありません。ただし、同PCにインストールした場合はElectrumのファイルをElectron Cashのフォルダにコピーする挙動が確認されており、Electrum公式の声明ではセキュリティ上別PCにインストールすることを推奨しています。

Bitcoin Cashに対応しているウォレット(従来からのウォレット)

  • Trezor(バグにより現在は未対応状態)8/4にバグ修正されて使えるようになりました。
  • Ledger
  • Coinomi
  • Breadwallet(8/16追記:一部機能のみ追加)

現在はハードウェアウォレットのTrezor及びLedger、Android用モバイルウォレットCoinomiのみが対応しています。既に上記のウォレットを使っている人はリンク先に対応方法が書かれているので参照してください。

ちょっと全ウォレットの対応方法を細かく書く余裕は無いのでこの記事での操作方法の詳細は省略。

Trezorはリンク先の説明を見ながら「Trezor Beta Wallet」など各リンクを辿っていけばできるかと思います。Ledgerも直観的にできると思います。CoinomiはBitcoin Cashの追加時に「ADVANCED SETTINGS」を選択して、Derivation Path欄に「M/44H/0H/0H」と入力する必要があります。

8/16追記:breadwalletに8/1以前からbreadwalletでビットコインを保管していたユーザーのみ対象にBitcoin Cashを引き出せる機能が追加されました。設定メニューの「advanced」から引き出し先のビットコインアドレスを指定することで引き出す(送金する)ことが可能です。

他に対応ウォレットが出てきたらマイナーなソフトでも追加予定。

Bitcoin Cashに未対応のウォレット

今後対応可能性あり

不明

  • Mycelium

当面対応予定なし

主要ウォレットのみですが、Keepkeyはまもなく、Jaxxはかなり前向き、breadwalletはBCCが一定の支持を得て生き残ったらという条件付きで対応版を出すかも、という感じです。

Electrum、Copay、Blockchain.info、GreenAdressなどは少なくとも当面は対応を期待するのは難しいと思われる声明を発表しています。

現在未対応のウォレットからBCCを引き出すには

最初に書いたように現在はBCCのブロックチェーンそのものが不安定な状況にあり対応ウォレットもかなり限られているため、急ぎの必要がなければ何もしないことをおすすめします。

非対応ウォレットから対応ウォレットに移すには秘密鍵かパスフレーズを対応ウォレットにインポートする必要があります。ただそのままインポートすると現在ウォレット上にあるBTCのセキュリティが低下するので、面倒ですが前もって今持っているウォレットから別のウォレットにすべて送金した上で作業を行うことをおすすめします。以下は大まかな作業の流れ。

  1. 新しくBTC用のウォレットを作成、忘れずに新しいウォレットのパスフレーズをメモ
  2. 元のウォレットから新しく作成したウォレットにBTCを全て送金(プライバシー保護のため、必要であれば複数回に分けて送金)
  3. BCC保管用のウォレットを作成(特にElectron Cashなど信頼性がまだ低かったり既存のウォレットを上書きする可能性のあるソフトはBTC含め他のコインを保管していない別PCに保管することを推奨)
  4. BTC残高ゼロの元のウォレットのパスフレーズを対応ウォレットにインポート

大体こんな流れになります。パスフレーズのインポートにはパスフレーズの互換性の問題で不可能なものもあるので注意。その場合は送金手数料を払って秘密鍵を全て読み取って送金しなければならない可能性もあります。

各ウォレットのパスフレーズの互換性の状況については書こうと思っているのですが、まとまっているデータがなさそうで一つ一つ調べなければならなさそうなのでしばらくの間お待ちを。

今はBCCを送金するつもりがなくても、同じウォレット・アドレスにBTCとBCCが含まれているのが気持ち悪かったり都合が悪い場合には前もって分けておくのも一つの方法かと思います。

現在マルチシグネチャに対応しているウォレットがほぼ無いのでマルチシグネチャアドレス上のBCCを引き出すことは現時点ではかなり難しいです(Bitcoin ABCなどのBitcoin Core派生の対応ウォレットなら恐らく可能です)まだ実際には未確認ですがElectron Cashで対応しているようです(8月4日追記)。

(8月4日追加)各ウォレットへのインポート方法

Bitcoin Cashのブロックチェーン自体は確認時間が短くなってきたので、対応ウォレットへの移し方を書きます。大体の流れは先の1から4を参考に、ここでは4のインポート方法について具体的に説明します。

現時点で未対応ウォレットからインポートできる現実的なBCC(BCH)対応ウォレットソフトはAndroid用モバイルウォレットのCoinomiとPC用ウォレットのElectron Cashの二択です。Electron Cashは依然として信頼性には劣りますし、Coinomiはインポートが難しい場合があるので、変わらず急ぎでなければ放置しておくことをおすすめします。

なお、ここでの説明対象のBCC(BCH)未対応ウォレットはCopay、breadwallet、Jaxx、mycelium、blockchain.info、Electrumの6種類。他は使用者が少なさそうなのでとりあえず省略。コメント欄に書いてもらえれば随時追加します。

ハードウェアウォレットのKeepkeyもこれらにインポート可能ですが正直セキュリティが著しく低下することになるのでおすすめしません。Keepkey自体が対応するまで待ちましょう。

ペーパーウォレットやオフラインPCのコールドウォレット、マルチシグの場合、あるいは万が一多額のBTCがオンラインのモバイルウォレットとかPCウォレットに入っている場合は少なくともBTCを別ウォレットに避難させたうえでBCC(BCH)取り出しを行いましょう(そもそも多額のBTCがセキュリティの低いウォレットに入っている場合は、早めにハードウェアウォレットとかにBTCを移しておきましょう)。

Coinomi

Coinomiの場合は、先の1~3の手順のようにBTCを避難しなくても大丈夫といえば大丈夫だと思います。特に同じAndroid上のウォレットに保管している場合は、個人的にあまり大きな問題とならないとは思いますが、一応セキュリティがやや低下することだけは念頭において自己責任で行ってください。

復元フレーズのインポート

一からウォレットを作成することになるので、Coinomiを既にインストールしている場合は「設定」の「ウォレットを復旧する」から今のウォレットを削除する必要があります。もし既に別のアルトコイン等を保管している場合は、削除前に避難させるか復元フレーズを確実にメモしてあることを確認してください。

Coinomiにインポートできる主なウォレットは次のとおり。

Copay(英語復元フレーズのみ)、breadwallet(英語復元フレーズのみ)、Jaxx、mycelium、blockchain.info

ほとんどの方は、Copayとbreadwalletのフレーズは日本語だと思うので、実質的にCopayとbreadwalletとElectrumの復元フレーズはCoinomiはインポートできないといっていいです。

手順は、

1.ウォレットを新規作成

2.BCC(BCH)を移したい元ウォレットの復元フレーズを入力

3.最初のコインの追加画面で何もせず、後から「BitcoinCash」を選択(誤って選択した場合は長押しして削除アイコンから削除)。

4.「ADVANCED SETTINGS」に「M/44H/0H/0H」を入力して追加。ただし、breadwallet(英語フレーズのみ可)の場合は「M/0H」を入力。

これで完了。BCC(BCH)の残高が反映されているはずなので自由に送金してください。

秘密鍵のインポート

復元フレーズではなく秘密鍵・プライベートキーを直接インポートする方法です。ウォレットソフトによっては秘密鍵を表示できないものもあるので、その場合はインポートできません。例えば、Copayとbreadwalletはアプリ内で秘密鍵を表示できないので、実質的にできないと思っていいでしょう(正確に言えば別ツールを使えば取り出すことが可能ですが、そこまで説明する余裕が無いので省略・・・。)。

Electrumを使用している場合は、秘密鍵をCoinomiにインポートすることが可能です。ただし、あまりにも多くのアドレスにBTCが散らばっている場合は大きな手間となり送金手数料もかかるので、ご注意ください。

手順としては、

1.(新しくインストールする場合のみ)ウォレットを新規作成

2.Bitcoin Cashを追加

3.メニューの「ウォレットをスイープする」を選択

4.秘密鍵を読み取り

でインポート可能です。この場合は、インポートというよりCoinomiウォレットに送金というかたちになるので、手数料が必要となります。多くのアドレスにBCC(BCH)が散らばっている場合は現実的ではありません。

Electron Cash

PC用ウォレットのElectron Cash。普通に動く報告が多くありますが、変わらず信頼性は不十分で安全なウォレットとはまだいえないので(特に注目度が高い今の状況だと第三者にElectron Cashのウェブサイトがハックされて悪意のあるソフトをダウンロードさせられるリスクも低くないです。前に書いたファイルが改ざんされていないか検証する方法も参考に。Electron Cash関連の署名データ)、十分注意してBTCとBCC(BCH)を分離したうえで元々コインを保管しているのとは別PCにインストールすることをおすすめします。

BTCは前もって分離しておくことで盗難を防げますが、BCC(BCH)はどうしようもないので、BCC(BCH)が盗まれちゃっても許せる人はElectron Cashを使いましょう。

Electron Cashの操作方法は基本的にはElectrumと同じなので、サイトのElectrumの説明ページも参考にしてください。

Electron Cashへはすべてのウォレットのインポートが可能です。

復元フレーズのインポート

1.新しくウォレットを作成

2.「standard wallet」を選択

3.「I already have a seed」を選択

4.復元フレーズを入力

5.(以降は元ウォレットがElectrum以外の場合)「Options」の「BIP39シード」にチェック

6.そのまま(m/44'/0'/0')次へ進み終了。breadwalletの場合は「m/0'」に変更して次に進む。

これで完了です。なお、Electrumでマルチシグや二段階認証ウォレットを作成していた場合は、「standard wallet」で各対応ウォレットにして二つ以上のseedから復元するようにしてください。

秘密鍵のインポート

Androidを持っていなくてCoinomiが使えない場合や、大量の秘密鍵をインポートしたい場合はElectron Cashが便利です。

メニューの「ウォレット」→「プライベートキー」→「ビットコイン預け入れ」からインポートしたい秘密鍵をすべて入力、送金してください。

Segwit/フォーク問題の簡単なまとめと私見

もう何か月も前から盛り上がってるタイトルの話題。非常に多くの日本語記事がでているため、このブログでは完全スルーしようか迷いましたが、他に今月書ける記事のネタもなさそうなので今更な話も含めて書いていきます。

記事自体はなるべく網羅的に書きますが、すべて説明すると1記事には収まらないので概要/詳細・最新情報等、内容の理解には他のブログ・サイトも参照してもらえればと思います(取り上げる人が増えたのと同時に、雰囲気だけで書いていそうな怪しい記事も多く見られるようになりましたが・・・。)。

問題の背景:スケーラビリティ問題とsegwit

現在のビットコインは1ブロックのサイズに最大1MBという制限があるため、取引可能処理量に限界があり、送金データがすぐにブロックに取り込まれず、設定手数料が低いと送金完了に何日もかかってしまうことがある状況になっています。理論上の現在のビットコインの処理能力は7tps(取引/秒)であり、実際の処理能力はわずか最大2,3tps程度と言われています。

※理論上の数字はすべての取引データのサイズが最小であるという仮定。

このため、現在進行形で発生している送金完了の遅延も影響して、1MB制限を撤廃・引き上げをしようという動きがあります。ただし、この制限を撤廃するにはハードフォークというビットコインネットワークへの参加者への多大な負担やリスクを伴う方法が必要で、ブロックチェーン全体のサイズ上昇というデメリットも存在するため、気軽に行えるものではなくコミュニティが分裂しています。

そんな中出てきた一つの対応策で2016年の11月頃から採用プロセスがスタートしながらいまだに有効化されていないのがsegwitです。詳細は過去の記事参照。実際にはスケーラビリティ問題への対策が主目的ではなく、あくまでも副次的効果とも言えるものですが、segwitにより実質的に2MBまでブロックサイズが上昇することになります。

segwitの有効化にはそもそもマイナーの95%が準備完了のシグナルを出す必要がありますが、今日にいたるまで最大でも5,60%程度しかないので、未だに有効化されていません。segwitに反対する理由には、マイナーの手数料収入も含めたsegwitの技術そのものに対する反対、開発者・開発者グループに対する政治的反対、ブロックサイズ制限上昇要求のための取引材料、ASICBOOSTなどの陰謀論がかった話も含めて様々な情報が出てきており、はっきり言って正確なことは分かりません。

いずれにしてもsegwitがなかなか有効化されないことから、ブロックサイズ制限の上昇も含めてコミュニティの様々な方面からいろいろな動きが今年に入って出てくるようになりました。

BIP91(Segwit2x)

採用プロセスを現行のBIP9(閾値95%)そのままではなく、80%まで閾値を下げてオリジナルのSegwit(BIP141)を実装しようという提案がBIP91です。時系列的には最新の動きで、多くのビットコイン企業が5月23日に賛同を示した協定であるsegwit2xがこのBIP91を利用することから話題に上がるようになりました。segwit2xには前半の「segwit」部分であるBIP91とは全く別に、後半の「2x」でsegwitの有効化の半年以内にブロックサイズを2MBに引き上げるハードフォークを実施する協定が含まれています(あくまで政治的協定というだけで、BIP91と2MBハードフォークの間に技術的な関連性は全くありません)。

segwit2xの賛同者には非常に多くのビットコイン関連の大企業が含まれていますが、開発体制、従来のビットコインの参照クライアントと比較してコードのレビュー・テスト期間が非常に短いことや、2MBハードフォークに対する反対論からコア開発コミュニティの賛同者は皆無でその他ユーザーからも賛同を得られているとは全く言えない状況となっています。

BIP91の仕様は、336ブロック(2,3日)のうちの80%がブロックの中のversionbitsという欄のbit4にシグナルを出した後、bit1(BIP9によるsegwit採用プロセス)にシグナルを出していないブロックを拒絶するというもので、BIP91チェーンとして100%(つまりBIP9の閾値95%以上)のシグナルを達成することでsegwitを有効化しようとするものです。

昨日あたりから既にbit4へのシグナルを出すマイナーが多数出てきており、もう1週間以内ないし少なくとも今月内にはBIP91が発動してsegwitが有効化される可能性が最も高くなってきました。コミュニティでは8月1日というワードがやたら強調されていますが、このBIP91はUASF(BIP148)の仕様と本質的には変わらないものであり、BIP91が発動すれば7月中にも断続的にBIP148によるものと同様のブロックチェーンの再構成(reorg)が発生する可能性があるので、少なくとも送金完了とみなすまで1確認だけではなく6確認程度待つなどの対応をおすすめします。

とはいえ、BIP91は80%のハッシュレートという点が「保証」されているので、BIP148で考えられる混乱の可能性よりはずっと小さいものです。ただし、bit4へのシグナルを出すのは簡単で、シグナルを出しているマイナーが実際に「BIP91発動時に非segwitブロックを拒否するソフト(segwit2xまたはCoreにBIP91を導入したパッチ)」を導入しているかはわからず、80%のハッシュレートは偽で実際は50%以下しかBIP91を適用していませんでした、なんてこともあり得るので実際にその時になってみないとはっきりとしたことは言えません。

また、BIP91はわずか336ブロックという非常に短い期間であるため、ハッシュレートの偏りがある可能性があり、10000ブロックぐらい平均すると60%ぐらいのハッシュレートしかないのに、336ブロックでは80%を超えてしまった・・・となるリスクもあります。

その他テスト期間があまりにも短いためバグ等が発生せず本当にちゃんと動くの?といった不安も囁かれています。

BIP148(UASF)

時系列的には最初で、shaolinfryという匿名の人が提案し、一部の開発者やユーザーが支持しているのがBIP148です。数か月経ってもsegwitのシグナル率が全く上昇しないことから、特定の日にbit1にシグナルを出していないブロックはマイナーのハッシュレートに関係なく拒絶してしまおうというもので、その日が8月1日に設定されています。根本の仕組みとしては、BIP91から80%の閾値を取り除いたものとも言えます。

特定の日にソフトフォークを実行する方式(flag-day activation)は初期のビットコインでも実施されていたもので、「UASFは元々のビットコインのフォーク方式だ」と主張する人もいますが、BIP148は単純なUASFではなく非bit1シグナルのブロックを拒絶するという過激な仕様を含んでいるため、正確には全く同一とは言えません。

BIP148は必ずしもハッシュレートによらない代わりに、economic majorityと呼ばれる取引所・決済サービス・ウォレットなどの経済的に重要なノードの大多数の賛成が安全な実行には必要不可欠であり、支援者と思われる人が作成したUASFのサイトでもそうでない限りはBIP148のノードを止めるように推奨しています。ただし、segwit2xの発表によりeconomic majorityからの支持を得る可能性は絶望的となった状況下でもBIP148の支持者は強行する姿勢を崩しておらず、BIP148が発動した場合は、一時的にしてもブロックチェーンの分岐が発生する危険性がかなり高くなっています。

BIP91が失敗に終わり、BIP148が発動するような状況になった場合は、上のようなリスクに加え次の次で書くBitcoin ABCによるハードフォークの可能性、さらにはそれによるBIP148チェーンのPoWアルゴリズム変更のハードフォークなど、もはや訳の分からない複雑な話も出てきています。

なお、UASF(User Activated Soft Fork)という言葉の下に「ユーザーこそが正義」というユーザーにとってはある種惹かれやすいBIP148支持の運動がRedditやtwitterなどで一部広がっていますが、主要なCore開発者たちの多くは冷静な見方をしており、ネットワークの混乱の可能性が高く危険な提案であることから、メーリングリストではBIP148を支持しないという意見(gmaxwellsdaftuar)を表明しているほか、開発チームのIRCの定例ミーティングでもeconomic majorityの支持がない限りは支持しないという意見が大勢を占めていて、強行派のluke-jrが議論では孤立していました。

BIP149(UASF)

BIP148の支持者の中にはsegwitを有効化させるにはBIP148しかない!とずっと主張している人も多く見られましたが、代替案となる第二のUASFとも言えるのがBIP149です。3ヶ月ぐらい前にも本ブログではBIP149の方法が最も安全で可能性も高い(残念ながら可能性はかなり低くなってしまいました)と書いており、個人的には最も良いと思う提案です。

BIP149では、現在のBIP9によるsegwitの採用プロセスが切れる11月以降に再度採用プロセスを実施し、その間に95%の閾値を超えない限りはハッシュレートに関係なく特定の日付でsegwitを有効化しようとするものです。BIP148とは違い、非bit1シグナルのブロックを拒絶する仕様は含まれていないので、ネットワークの分裂が発生する可能性が低いと考えられます。

コードを書いたりレビュー・テストの期間も含めると、BIP149が発動しsegwitが有効化されるのは実質的に来年末あるいは2年後になってしまう可能性もありますが、それでも構わないと思っています(コア開発者でBIP148支持のluke-jrは現在2018/7/4に有効化が設定されているBIP149は期間が短すぎて逆に危険と指摘していますが、まだあくまでも提案段階なので、必要であれば期間を変更して長くとれば問題ないと思います。)。

Bitcoin ABC(UAHF)

BIP148を阻止するとしてマイニング企業のBitmain主導?で立ち上げられたのがBitcoin ABCです。ただし、Bitmainはsegwit2xにも賛同しており、BIP91が失敗しBIP148が発動した場合のみ8月1日に立ち上げるとされています。

ABCの略語はAdjustable Blocksize Cap、つまり調整可能なブロックサイズ上限ということで、可変的なブロックサイズを実現するBitcoin Unlimitedの流れを汲んでいます。当然変更はハードフォークとなり、さらにSegwitは一切採用しないという特徴もあります。

segwitを支持するsegwit2xにも賛成しているBitmainは、完全に矛盾しており理由が謎ですし、ASICBOOSTがsegwit反対の根拠だと考えている人はcovert ASICBOOST非対応のsegwit2x(BIP91→BIP141)を賛成するはずがないという考えの下、実は直前までsegwit2xに賛成している振りをしていて最終的には反対に寝返ってBIP148を発動させてBitcoin ABCによるハードフォークを8月1日に実行するのでは?という話も出ています。

素直に現在の状況を読み取れば、BIP91が成功して8月1日には何も起こらないということになるのですが、最新ではBitcoin CashというBitcoin ABCと同様の8月1日ハードフォークの動きが出てきており、BIP91がどうなろうとその時になるまでどうなるか断言できなくなってしまっています。

追記:Bitcoin Cashはreplay protection付きの平和的ハードフォーク?情報が出たばっかりで詳細は全然調べられていないので、ここらへんの最新のことは他のサイト・ブログにお任せします。

ユーザーはどうすればいい?

この話もいろんなサイト・ブログで書かれていますが、重要なので改めて。ハードフォークが起きてもブロックチェーンの再構成(reorg)が起きる状況になっても、とりあえずユーザーとしては送金を控えたり、いつもより確認数を長くとることなどが重要です。実際にいつまで控えるかとかどうしても送金したい場合はどうすればいいかとかは、その時になってみないとわからないので、情報を集めてくださいとしか言えません。

保管場所は、ハードウェアウォレットを推している記事をやたら多く見ますが、取引所以外の秘密鍵を保管しているウォレットであれば、フォークによるリスクは全く変わりません(正確に言えばウォレットソフトごとの仕様や接続先のノードによって変わってきますが、実際にフォークが発生してみないと具体的にどのウォレットが良いとかいうのは難しいです。送金非推奨のウォレットでも秘密鍵ないしパスフレーズがあれば他の対応ウォレットから送金できます。)。

強いて言えばフルノードであれば、混乱時でも使いやすいメリットはありますが、小銭・普段使い用に保管しているモバイルウォレットのBTCをわざわざハードウェアウォレットに移す意味は少ないと思われます。

取引所もハードフォーク時に一方のコインしか受け取れないリスクがあることを十分理解していれば、個人の価値観に基づいて信用してそのままでもいいと思います(複数チェーンのコインに価値が付いた場合、全く配ってくれないという可能性は正直そこまで高くないとは思いますが、配布に時間がかかり他の取引所でハードフォークコインを売るためになかなか送金できない・・・という可能性は十分あり得ると思います。)。

まとめなど

ということでまだまだ混乱の可能性は十分残されていますが、現状を素直に受け取るとBIP91が成功し、何事もなく8月が過ぎ、議論は数か月後に予定されている2MBハードフォークに移っていきそうな雰囲気となっています。

総合して個人的には、強行姿勢を見せるBIP148も拙速なスケジュールでsegwit有効化とハードフォークを目指すsegwit2xも、どちらも我慢や忍耐が足りていないと感じています。Bitcoin ABC系はアルトコインもびっくりの急ごしらえハードフォークスケジュールで、正直理解できません。

まず、segwitでは有効化されれば開発者も含めてCore側からは実質的にブロックサイズが2MBに上昇するという意見がありますが、それには新しいsegwitアドレス形式をユーザーが使う必要があり、フルに2MBを利用するには全送金がsegwitアドレスを利用していなければなりません。短期的に見れば2MBには程遠く達せずあまりスケーリング的には影響はない可能性は十分にあり、2MBに拡張したところで効果がどれだけあるか疑問な上、現状lightning networkも後はsegwitさえ実装すれば後はフル稼働できるといったものではまだないはずなので、ネットワークの混乱を許容してまで急いでsegwitを導入する必要がどこまであるのか分かりません。

2MBハードフォークに関しては目の前に迫ったときに改めて書こうかと思いますが、スケジュールが短すぎるのに加えて、半年以内に2MBという結論に至った根拠が見えず、とりあえず雰囲気でなんとなく決めてしまったようにしか思えません。

そもそも論として、少なくとも現状のビットコインは高いボラティリティ、確認まで最低約10分、一般ユーザーの知識不足と相まって既存の通貨と比較した高い盗難・紛失リスクなど、投機以外の一般ユーザーの利用としては送金遅延や手数料問題が解決したとしても全く準備が整っていないように思われます。企業側がビットコインの普及を推し進めたりユーザー離れを防ぐために、送金遅延の解消のためのブロックサイズ上限上昇のインセンティブを働かせるのは理解できますが、少なくともLightning Networkなどのオフチェーンネットワークの環境が整うまで待ったほうがいいのではないでしょうか。ネットワークの混乱を引き起こすリスクが高いことをやってまで一時しのぎの対策をやる必要がどこまであるのか疑問に思います。

ビットコインは特定の企業が開発しているものではなく開発者に給料も支払われずボランティアで開発されているがゆえに、いろいろとスピードが遅いこともあり、合意形成が困難でこれほどまでのコミュニティの分裂が発生しています。完全な非中央集権は絵に描いた餅であり、分散型のデメリットは多く存在するものの、しかし、別の面からみればそれが一番のビットコインの強みとも考えられます。

一部のベンチャーキャピタルやマイニング企業主導の迅速な開発・決断ができるコインはそれはそれでいいと思いますが、それでもビットコインをそのように扱うのは非常にもったいなく、そうすることにより数多ある単なるアルトコインの一つにビットコインの地位が下がってしまうとしか思えません。実は個人的な経済的思想としては自分はアンチビットコインの立場になるのですが、開発コミュニティの重要性とか分散型とは何かとかビットコインの価値とはとか経済や哲学の話はまたいつか別の機会に。

ひそかに大きな仕様変更があったSteemは今後どうなる?

スタート時から何回か取り上げているSteemですが、かなり大きな変更があり1年前ごろに書いた昔の記事の情報が完全に間違いになってしまっているので改めて最新の情報を書いておきます。

最後の記事からの動き

創設者が脱退

今年初めにSteemの創設者であるDaniel Larimerが開発チームから脱退しました。彼はBitSharesの創設者でもあって、去年の初めにBitSharesチームから抜け、今年はSteemからも抜け・・・ということになります。Steemからの脱退を発表したのは、「今後もうSteemには投稿もしません」と突然の謎の引退宣言をSteem上に投稿したのが最初であり、当時は物議を醸しましたが、その後訂正しチームからは抜けたものの現在も普通にユーザーとして記事をSteemに投稿しています。

脱退の理由はEOSという新しいスマートコントラクトプラットフォームの開発のためのようです。最近スケーラビリティ関連で悩まされている?Ethereumの対抗馬にもなるようなブロックチェーンであり、プラットフォーム系を昔から重点的に調べている身としては取り上げてみても面白いと思うのですが、流行のERC-20トークン(Ethereumトークン)を利用してICOを行う予定らしくICO紹介みたいになるのもなんだか癪なのでICO期間終了後(約1年後)にでも気が向いたら書くかもしれません。

Steemから脱退したからといってBitSharesほどは大きな影響はなさそうな感じで、現在も残った開発チームにより報酬変更などを行うハードフォークが頻繁に行われているようです。

仕様変更

ホワイトペーパーは現在の時点でまだ訂正されておらず、新規の人にとって現在の情報を見つけるのが非常に大変で問題な気がするのですが、去年の11月末に大きな変更が行われました。

インフレ率(通貨発行量)の変更

最初は年率100%(初年度はそれ以上)新規発行のハイパーインフレ通貨としてスタートしましたが、さすがに不評であったためか、インフレ率が9.5%/年と変更され、さらに0.95%/年になるまで毎年約0.5%インフレ率を低下させる根本的な仕様変更がなされました。超高インフレ率であったため、当初Steemには通貨単位を切り上げる株でいう「株式併合」、通貨でいう「デノミ」という暗号通貨の世界では前代未聞のイベントも予定されていたのですが、直接の言及はないもののそれも実質的には廃止となりそうです。

この変更により、SPではなくSTEEMで長期保有しているとほぼ確実に長期的には値下がりするという元々あった状況がなくなり、トレード目的でSTEEMを購入するのもアリということになりそうです。

f:id:jpbitcoin:20170626195413p:plain

SteemDataより

 

供給量を上図のsupplyを見ると分かりやすいです。去年の末ごろから供給量の伸びがほぼなくなっていることが分かると思います。なお、STEEM自体の供給量は、ユーザーによるSPやSMDなどシステム内の他の通貨との交換状況により変化するので、綺麗な曲線にはなっていません。

 SP→STEEMの変換期間の変更

Steemのハイパーインフレ以上にさらに詐欺っぽい要素が「毎週に1/104回しかSPからSTEEMに変換できない」ことでした。しかし、変更後は毎週1/13を変換でき、約3ヶ月ですべての動かせないSPを他のFiatやコインに変えられるSTEEMに変換可能ということになりました。

これによりSTEEMの流動性が大きく増加し、価格形成にも大きな影響が出たと考えられるので、ホワイトペーパーで書かれていた目標はどこに行ったの?など賛否両論あります。

これらの変更が実際にいい影響となるのか、あるいは悪影響となるのかは分かりませんが、少なくとも第一印象での怪しさは大分軽減されそうです。

その他の仕様変更

同時にその他にも報酬に関わる変更がいくつかなされています。11月末の変更以外にも、全体のエコシステムに関わる変更ではないものの新規登録に関する仕様や細かな報酬に関する変更が今月も含めてしばしば行われているようです。どのような仕組み・構造でどれぐらい報酬が、記事投稿者・コメント投稿者・投票者に配分されるかは、複雑で未だに理解できていないのでこちらも省略します。

今後どうなる?

f:id:jpbitcoin:20170626201946p:plain

SteemDataより

上図は投稿数の変化です。5月初めからのアルトコインバブルに合わせて投稿数が大きく増え、最近の伸びはかなり著しいものがあります。また数年後にどうなっているかは分かりませんが、最初期の滑り出しとしてはまあまあ上手くいっているのではないかという印象です。

今後のさらなる成長には、仕様上やはり暗号通貨そのものの世界への普及が大前提になってしまう感じはします。

Steemにも賛否両論があって、創設者のDaniel Larimerを含めてscamと呼ぶ人もいます。その指摘が真実かどうかは分かりませんが、現在のICOバブルにより実態があるかどうかもあやしいプロジェクトが多く存在している中にあっては、Steemスタートから1年以上たった今でも、ICO・トークンプラットフォームとか単純な通貨用途のブロックチェーン以外では、コンテンツとして実際に既に動いていてユーザーもついている非常に珍しいブロックチェーンであるため、個人的な評価はかなり上がっています。

なんでも実稼働には時間がかかるものだとは思いますが、ちゃんと動いているだけで評価できるという今の悲しい状況を早く脱してくれることを切に願いたいものですね。

(元々そんなに安全なウォレットではないけど)Jaxxの「脆弱性」はそんなに深刻ではないよという話

本日、複数種類のコインを保管できるウォレットで有名なJaxxに脆弱性が見つかりETH,ETC,ZECなど計約40万ドルもの大金が盗まれたとのニュースが流れてきました。

Jaxxウォレット、脆弱性により$400,000ドル相当の暗号通貨が盗まれる

www.cryptocoinsnews.com

一大事ではありますが、FUDとまではいかないもののかなりセンセーショナルな見出しであり、必要以上に深刻なものなのではないかと不安に思う人も多そうですし、内容を正確に理解することでリスク軽減にもつながると思うので軽く捕捉記事を書いておきます。

Jaxxの「脆弱性」とはどんな脆弱性か

脆弱性というと非常に難解な場合もあるのですが、今回は全く難しくはない内容です。大本のソースを読んでもらえればすぐわかると思いますが、一言でいえば「ウォレットのパスフレーズが暗号化されていない」という脆弱性です。

正確に言えば暗号化はされているのですが、ユーザーがそれぞれで暗号化パスワードを設定できるのではなく、元々のソフトのコード内で規定されている同じ暗号化パスワードが常に使用されています。ソースコードを読めばすぐに暗号化パスワードがわかってしまい、すぐにパスフレーズが解読されてしまうために、実質暗号化されていないも同然の状態ということになります。

ただし、これはパスフレーズが暗号化されていないというだけで、「パスフレーズを外部に送信する」みたいな何かソフト自体にとんでもない脆弱性が含まれているということではなく、ウォレットをインストールしている端末自体が不正アクセスを受け、端末内のファイルを外部から見られる状態にならない限り盗まれることはありません

ゼロではないでしょうが、実際にこの脆弱性が原因で資産を盗まれた人は少ないのではないでしょうか。この脆弱性を指摘していた大本のサイトでも、別途自分でウォレットファイルを暗号化することにより脆弱性を修正できると書かかれています。

PCなどの端末がハッキングされてしまえば、ウォレット以外のすべてのファイルも盗まれることを意味します。万が一不用意にテキストファイルなどにパスワードを保管していればそれもすべて盗まれてしまいますし、今回のJaxxの脆弱性がなくユーザー設定のパスワードにより暗号化されていたとしても、ハッキングを受けるほどであれば容易にキーロガーを仕込まれて暗号化パスワードを盗まれ、結局パスフレーズも盗まれてしまうことが考えられます。

また、今回のニュースではPC版のJaxxが被害にあったようですが、他のiPhoneやAndroidでもコードベースは同じだと考えられ、万が一スマートフォンがハッキングされてしまえば、同様に簡単に盗難されてしまうと考えられます。あくまでも一般論としてネット経由のハッキングのリスクがスマートフォンよりもPCのほうが高いということにしかすぎません。

今回のニュースを見てとにかく急いで取引所に移したとしても、取引所のアカウントが不正アクセスを受けて不正送金されるリスクも同様に高いので、正直なところ大きな違いは無いと思います。

オンライン環境下のウォレットはそもそも危険度が高い

今回具体的にどのような手段で盗まれたのかは不明ですが、ハッカーの手間的に個人のPCがハッキングを受ける確率はかなり低いと考えられ、実際的には今後はマルウェアの拡大によって被害が増えていくことが考えられます。万が一パスフレーズを盗むようなウイルスに感染してしまった場合には、パスフレーズが暗号化されていれば多少はリスクが軽減されるかもしれませんが、暗号化されていたとしても資産を失うリスクは高いと思われます。

ということで、そもそも40万ドルもの大金をインターネットに接続されているウォレットに保管するのは、JaxxだろうがMyEtherWalletだろうがMistだろうがBitcoin Coreだろうが正気の沙汰ではありません。

結局どうするのが良いか

とはいえ、さすがにパスフレーズの暗号化すらまともにされていないJaxxはお粗末としか言えませんし、早急の対応が望まれます。※Jaxxは今後対応するつもりがないとの情報も出回っていますが、JaxxのCOOによれば修正対応予定のようです。

もともと小銭程度しかJaxxに保管していない人はそこまで神経質になる必要はない気がしますが、いずれにしても、今回の件をきっかけにより安全な方法での保管を考えるのはいいことです。

結局アドバイスをするならば、ハードウェアウォレットにしておけばいいよ、というのが一番無難な回答になってしまいます。ただし、ハードウェアウォレットも故障や不良品のリスクがありますし、100%安全なものではなく、最終的には12or24単語のパスフレーズをいかにして安全に紛失せずに保管するかという話になってきます。

人によって金銭感覚は違うと思いますが、少なくとも数百万から数千万以上の大金はハードウェアウォレットであっても過信せず、複数の端末・場所に分散保管するということをおすすめします。

ちなみに自分自身はビットコインに関しては、大部分を2PC(オフラインとオンライン環境)とか複数端末間でのマルチシグのウォレットを中心に分散保管しています(マルチシグは複数端末が必要でハードルがやや高いのと、盗難リスクは下がるものの紛失リスクが上がるので万人にはあまりお勧めできない・・・)。その他のアルトコインは種類だけはかなり多いものの量は雀の涙ほどしか持っていなかったので、今まではかなり適当に保管していましたが、最近のアルト全面高により結構な金額になってしまったこともあり、これをきっかけに宝の持ち腐れになっているハードウェアウォレットに移したり対応していないものは別の方法を考えなければ・・・と思っています。

ブロックチェーンに変わる新技術?DAGとは

今日は、ブロックチェーンではなくDAGを構造として用いる暗号通貨についての記事を書いていきます。

DAGとは

DAGとは・・・

有向非巡回グラフ有向非循環グラフ有向無閉路グラフ(ゆうこうひじゅんかいグラフ、: Directed acyclic graph, DAG)とは、グラフ理論における閉路のない有向グラフの事。有向グラフは頂点と有向辺(方向を示す矢印付きの辺)からなり、辺は頂点同士をつなぐが、ある頂点 v から出発し、辺をたどり、頂点 v に戻ってこないのが有向非巡回グラフである。

wikipedia記事より

ということで、よく分からないと思うのでさらに要約すると以下のような図の構造のことをDAGと呼ぶようです。

f:id:jpbitcoin:20170612193656p:plain
Directed acyclic graph - Wikipediaより

 

ブロックチェーンでは、あるブロックに着目すると前と後ろに繋がるブロックが必ず一つでなくてはなりません。対してDAGでは、ブロックチェーンと同じように「向き」があるものの、あるブロックの前後には二つでも三つでも同時に繋がっていていいという特徴があります。

上図ではちょっと分かりにくいですが、単純な一本の直線状のブロックチェーンに対して、DAGは複数の細かい繊維が絡み合ってできた「糸」に例えることも可能です。(実際の糸とは違いDAGではそれぞれの繊維が繋がっています。)

ブロックという固定幅の容器を利用しなくてもよく(ブロックを利用するDAGコインの構想も存在します)、また、ブロックチェーンのような一本の直線状の構造でないことから、DAGはスケーリングに優れており、より多くのトランザクションを処理できる能力に長けているという特徴があります。

早速ですが応用例を見ていきましょう。

応用例

(参考)EthereumのGHOSTプロトコル

実は、Ethereumのブロックチェーンの構造はGHOSTというプロトコルに基づき、「DAG的」なものになっています。かなり制限されたかたちのものであるため、GHOSTの論文の中でDAGという言葉は直接使われていませんが、次の応用例で書いていくDagCoinやIOTAのなかでもDAGの一例として引用されています。

GHOSTプロトコルとは、短いブロックの生成時間・間隔でもセキュリティを高く保つために開発されたものです。一般論として、ブロック間隔が短すぎると最新の採掘ブロックの情報伝達のタイムラグの影響で、マイナーAが1秒前に正しいブロックを採掘できたのにも関わらず、その情報が伝わらないうちにマイナーBも正しいブロックを採掘し、結果的にマイナーAとマイナーBが同時に有効なブロックを採掘するというような状況が頻発します。この状況では一方のマイナーのブロックは孤立ブロック(orphan block)として認識され、全く無駄なものとなりチェーンが分岐することでネットワークのセキュリティ低下にもつながります。また、ハッシュレートの低いマイナーはブロックの生成確率が低いので、同時に孤立ブロックの生成確率がより高くなってしまい、マイニングに関する権限のさらなる集中化の要因の一つにもなっています。

Ethereum(GHOSTプロトコル)では、このような問題を解消するために、同時に採掘された孤立ブロック(Ethereumではuncle blockと呼ばれる)にも採掘者に報酬を与え、uncle blockが完全に無効なものとはならず、有効なブロックチェーン(メインチェーン)を決定する要素の一つとしてブロックチェーンに組み込まれます。Ethereumではビットコインのように単なる「最も長いチェーン」ではなく「最も重いチェーン」がメインチェーンになります。重いというのはより多くのuncle blockがぶら下がっているチェーンという意味です。

uncle blockはブロックの前後には複数のブロックが連なっていてもいいというまさにDAG的なものですが、uncle block内の取引自体は考慮されず、メインチェーンの決定論理とマイナーへの報酬以外に使用はされていないので、あくまでも本質的な構造は枝分かれのない一本のブロックチェーンであることに変わりはなく、普通EthereumをDAG構造のチェーンと見なすことはありません。

ちなみにGHOSTプロトコルの開発者であるAviv ZoharとYonathan SompolinskyによりSPECTREというまさにDAGベースのブロックチェーンも提唱されています。

※EthereumではPoWアルゴリズムEthashにも同じDAGが使われていますが、ブロックチェーン構造の話とは異なるので省略します。

(構想のみ)DagCoin

恐らくインターネット上で最初に構想が発表されたDAG構造の暗号通貨は、Rootstockの現技術者で最近はASICBOOSTの発明者の一人としても有名でSegwit2MB関連でもしばしば名前が出てくるSergio Demian Lernerが、2015年9月に発表したDagCoinと呼ばれるコインです。

ホワイトペーパーのなかでは、DAGチェーンがまとまらずに「発散」してしまう危険性を最も重要視しその対策を中心に記述されていますが、その他の詳細についてはあまり書かれておらず、ホワイトペーパーによる構想のみにとどまっています。

そして、どれだけ影響を受けたのか、あるいは全く参考にはされていないのかは不明ですが、DagCoinとかなり似た仕組みで発表され現在既に稼働されているのが次のIOTAです。

IOTA

f:id:jpbitcoin:20170612205202p:plain

IOTAホワイトペーパーより(リンクは最後にまとめて)

IOTAはInternet of Things(モノのインターネット)産業における暗号通貨として開発、2016年7月にチェーンがスタートして、マイクロペイメント(少額決済)に特化するということを中心の目標としています。マイクロペイメント特化ということで、送金手数料が無料なことが最大の特徴です。

構造は上図を見ていただければお分かりかと思います。DAGの構造をしており、ブロックではなくトランザクション一つ一つが四角で表現されていて、ビットコインのようなブロックサイズの概念がないため、理論上は無限の量のトランザクションを処理することが可能です。

IOTAにおいてDAG構造のことは「Tangle」と呼ばれています。IOTAでは、「トランザクションは前の二つのトランザクションを参照していなければならない」という原則が定められており、この原則によりTangleが生成されています。

取引手数料が無料であるというのが最大の特徴ですが、その理由はビットコインのように取引の承認者である特定の採掘者グループというものが存在せず、利用者一人一人が採掘者(=取引の承認者)であることから来ています。まずトランザクションの生成時には先述のように前の二つのトランザクションを参照(承認)することが必要です。この承認時の作業にまさにビットコインの採掘時と同じように暗号学的な計算、つまりプルーフ・オブ・ワークを行います。Tangleのスタート時にすべてのIOTAトークンが生成されているので、採掘報酬などは一切ありません(ICO時にトークンの分配が完了しています。)。

なお、ほとんどの暗号通貨で取引手数料が導入されている最大の理由が、ネットワークへのスパム攻撃の防止であり、スパム攻撃を危惧する人も多いかもしれません。手数料が無ければノーコストで攻撃し放題という訳です。IOTAでは、そもそものトランザクションの生成条件が、前の二つのトランザクションを承認しなければならない、ということになっているため、スパム攻撃にはPoWが必要となりますし、逆にネットワーク上の未承認の取引を迅速に承認させるための有益な行為にもなるという面白い仕組みになっています。関連して、ネットワークへの参加者が増えれば増えるほど、よりネットワーク自体も高速化し強固なものになっていきます。

ちなみに、IOTAでは(おそらく暗号通貨の中で初めて?)既に量子コンピュータ耐性のWinternitz署名という署名方式が導入されています。将来を見据えた実装といえますが、Winternitz署名においては基本的にアドレスが使い捨てであり、同じアドレスを使用し続けていると徐々に秘密鍵が解読されるリスクが上がってしまうという、プライバシーどころではない危険性があるので注意が必要です。

IOTAのような新しいDAG構造では、いかにして二重支払いを防ぐか、DAGチェーンの分岐・分裂を防ぐかという課題が最重要になるわけですが、まだ完全には理解できておらずホワイトペーパーに書かれていない対応もあるようですし、かなり長くなってしまいそうなこともあるのでここでは省略します。気になる方はホワイトペーパーなどを参照してください。

Byteball

f:id:jpbitcoin:20170612213543p:plain

Byteballホワイトペーパーより(リンクは最後にまとめて)

IOTAに続いて2016年12月にチェーンがスタートしたのがbyteballです。マイクロペイメント特化のIOTAに対してなんでもできるのがbyteballで、現在はウォレットには実装されていないものの、任意のデータを埋め込んだり、トークンを各自で発行できたり、幅広いスマートコントラクトプラットフォームを目指しています。匿名送金の機能も既に実装されており、blackbytesという基軸通貨のbytesとは異なる匿名トークンが配布されています。

構造的には上図のとおりIOTAと同じDAGですが、PoWとDAGを組み合わせたDagCoin→IOTAの流れとは異なり、byteballではPoWが利用されず12人のwitnessという役割のノードが生成した「メインチェーン」をもとにトランザクションに「重み」を付け、二重支払いを防いでいます。witnessによる安定したメインチェーンをもとにすべてのトランザクションが有効かどうか決定されるため、(恐らく悪意を持ったwitnessからの攻撃が成功する場合以外には?)DAGチェーンが再構成されて過去の確認されたトランザクションが改変されてしまうという可能性がゼロであり、一度確認された後になかったことになる可能性もゼロで、ビットコインのようないわゆる確率論的なファイナリティの問題(何確認待っても100%取引が覆されないとは言えない)が発生しないとされています。

byteballのwitnessはBitSharesのDPOSにおける20人前後のwitnessと同じく、ほとんどが善意のwitnessであることをもとに設置されており、何人かが悪意を持っていたとしてもチェーンへの攻撃を防げるほど十分多く、また利用者一人一人がwitnessを評価できるほど十分少ない数ということで、12人が選ばれています。こちらもDPOSと同じくwitnessは自らのプロフィールを公開し選挙のように選ばれ、利用者が不適切と判断すればwitnessから外すことが可能です(ただしDPOSではないので、投票権が基軸トークンのbytesに応じて割り当てられているわけではなく、RippleのValidatorに似ているイメージのように思います。)。

byteballでは取引手数料が当然かかり、取引データ1バイトあたり1byteトークンを支払わなければなりません。支払った手数料はwitnessが報酬として受け取ることになります。

最後に

ということで、DAGコインについて紹介していきました。確かにスケーリングに優れており、ビットコインのようなブロックサイズ問題に悩まされずに済むというのは大きな利点でしょう。

ただし、まだまだ新しく専門的な検証もそこまでされているのか分からず、チェーンのセキュリティはホワイトペーパーどおりにいくのか数十年単位で見た時には未知数ですし、IOTAではつい最近までまともに送金もできない状況であったりうまく分散化をすすめられるか(現在は黎明期であるためにいくつか中央集権的な仕組みを導入しているようです)等の課題もありますし、byteballにはwitnessのシステムの信頼性の他にも取引手数料の単価が固定されていることで、今後投機により価格が高騰した際に実用性に耐えうるか(ホワイトペーパーの中で価格の安定化も述べられていますが個人的には納得できない)などの不安点もあります。

参考サイト

https://eprint.iacr.org/2013/881.pdf

DagCoin: a cryptocurrency without blocks | Bitslog

https://iota.org/IOTA_Whitepaper.pdf

https://byteball.org/Byteball.pdf

Wavesの近況

早いものでもう5月も終わりということで、密かなノルマとしていた月最低1回更新のために月最終日に滑り込み更新しておきます。

今回はちょうどブログの最初の記事でちょっと触れたWavesの近況について。他にも昨年にICOとかアルトコイン系で触れたものもありますが、悲しいことに進捗があまりなくて書くことがないので、なにか書くネタができ次第書きたいと思います。

Wavesって何?

公式ではトークン発行・転送・取引プラットフォームとうたっており、Nxtコミュニティから派生したNxt同様のブロックチェーン/仮想通貨です。

以前の記事でどんなものか書いていたので、詳しくはそちらの記事を参照してください。

近況

本当は技術的なことを書ければよかったのですが、相変わらず最初に発表されたペラペラのホワイトペーパー以外出来ていないようなので、どんな開発の進行状況かを説明するだけにとどめておくことにします。

ICO前は専属の開発チームの中にはフロントエンドの開発者が一名しかいなかったのでかなり開発力に疑問を持っていましたが、いざ始まってみるとそこそこの金額が集まったせいもあってか、開発チームの人数が増え、割と順調に開発が進んでいるようです。

トークン発行機能

Wavesの根本機能なので、ブロックチェーン立ち上げ後早い時期に対応しました。今後は、軽量型クライアントからトークン保有者に配当を簡単に送れる機能や取引手数料をWAVESトークンではなくカスタムトークンで支払えるようになる仕組みも実装する予定らしいです。

ウォレット

PC用の軽量クライアントはもちろんのこと、AndroidやiOS用のウォレットもリリース済です。

ゲートウェイの対応

Wavesは自分のブロックチェーン上でBTCといった他の暗号通貨やUSDなどの法定通貨を扱い交換できることを目指しており、トークン(IOU)というかたちで公式主導で発行されています。

今年に入ってWaves上のBTCトークンを実際のBTCと交換できるゲートウェイに対応したり、EURを現実のユーロと交換できるKYC/AMLを取り入れたゲートウェイに対応しているようです(こちらは現時点だとまだ利用不可?)。

この手のIOUはゲートウェイの破たんリスクがありますが、いろんなところが勝手に発行しているRippleやBitSharesなどのIOUとは違い、公式主導で一本化してやっているので、それらと比較すると割とリスクは低めなIOUと言えるかもしれません。

分散型取引所

トークン間の分散型取引所が既に実装されています。根本機能ですが、リリースから1年を待たず早い段階で実装されたのは好印象でした。

LPoSの実装

WavesではコンセンサスアルゴリズムにProof of Stakeを採用していますが、ビットコインのマイニングプールと同じようなイメージで特定のPoSマイナーに自分のWAVESトークンを貸し出す(リース)ことによりPoSマイニングの報酬の一部が貰えるLPoS(Leased proof of stake)という仕組みが実装されました。

派生元のNxtではかなりの残高を持っていないと、全くブロックが発見できず実質鋳造不可であるという課題があったため、それを解決するためのものだと思われます。NxtでもLPoSは可能なようです。

なお、Wavesでは基軸トークンのWAVESをすべて発行済であるため、報酬は取引手数料分のみとなります。ただし、採掘に成功すると、WAVESだけではなくMiners Reward Token(MRT)というマイナー報酬トークンも貰えます。具体的な仕組みはよく分かりませんが、このトークンはマイナーに関係するブロックチェーンのパラメータ(ブロック生成間隔など?)を変更する際の投票権となるようです。

終わりに

ということで、単なる宣伝記事になってしまいましたが、割と順調に開発が進んでいるようです。金だけ集めておいて何もやっている様子がないとか進捗が遅すぎるプロジェクトがあまりにも多いのでハードルが異常に下がっているせいもありますが、Wavesは割と好印象でした。ただし、トークンプラットフォームといってもCounterparty、Ethereum、NEM、Nxt、BitSharesなど既に多くのものが溢れていますし、それらを追い越して勝てる要素は残念ながらまだ無いように思われます。コミュニティ上には無意識・意識的にかかわらずポジショントーク的な発言がしばしば見られますが、個人的な印象としてはどれも欠点とか不安要素があって、これが将来生き残る!とかいったビジョンは全く見えませんし見当もつきません。

 

今後のブログとしては、6月は久しぶりにアルトコイン系について調べて集中して書こうかと思っています(本当は5月から書きたかったけど全然調べられておらず・・・)。最近の価格高騰も手伝って新しい人は増えているようですが、軽く調べた限り、幸か不幸か英語のホワイトペーパーを読んでまとめるような技術関連も書いている日本語ブログは1年前から全く増えていないような感じなので、まだ需要はあるでしょう。

ビットコインのスケール問題はいろいろ動きがあったようですが、どう転んでも一筋縄ではいかなさそうですし、フォークが目前の危機になる(7月頃?)とか確実に解決の方向に向かいそうであればまた書こうかと思います。