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

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

10月15日のCounterpartyのアップデートの内容は?

10月15日にCounterpartyがアップデートされたようですが、EthereumのMetropolisに隠れてあまり話題になっていないようなので内容をサラッと書いておきます。

トランザクションサイズの削減(CIP11)

Counterpartyのすべてのトランザクションのサイズを3バイト削減するアップデートが行われました。さらに次のCIP9のおかげで実質20バイト程度削減されています。最小でもトランザクションのサイズは250バイト程度なので、ほぼ誤差で必要手数料の差の違いを感じることはないでしょうが、サイズが減るに越したことはありません。

送信時のdust(ゴミ)BTCが不要に(CIP9)

これまでCounterpartyではトークンの送信時などで必ず5430satoshiを同時に送信する必要がありました。それが今回のアップデートで全く必要なくなりました。

昔は5430satoshiというと微々たる額でほとんど気にはならなかったのですが、BTCの価格高騰の影響で5430satoshiも30円程度となり決して無視できない額となっていました。ちなみにCounterpartyのリリース文だと40%から45%の手数料削減とか書かれていますが、おそらくこの5430satoshiを手数料に含めて考えたときに、それが必要なくなるので40%-45%安くなるという意味であって、前述のとおりマイナーに支払う手数料はあまり変わらないと思われます。

もしかしたらトークンが送られてくると5430satoshiもついてくるので、ちょっと嬉しい・・・と思っていた人もいるかもしれませんが、実際には少額のゴミBTC(dust)が集まるとそのdustをまとめて送金するときに莫大な手数料がかかることがあるので、必要手数料が高騰している状況だとdustは文字通り邪魔になることがよくありました。

CIP9は「Enhanced Send」と呼ばれており、アップデート後もこの機能をオフにして従来通りのdustを付加するトランザクションを実行することもできるようです。

なお、dustが不要になったことにより、ビットコインのブロックエクスプローラ上からはトークンの送信先がわからなくなっているのでご注意ください。一見するとただBTCを自分のアドレスに送り返しているだけのように見えるはずです。

メモ添付機能の追加(CIP9&CIP12)

Counterparty以外のトークン発行系のプラットフォームだと当たり前のようにある機能ですが、今回Counterpartyにも追加されました。34バイト(全角17文字)という制限はありますが、送金時にメッセージも送りたい・・・という人は意外と多かったかもしれません。

開発としては取引所のコスト削減をメインターゲットしているようです。取引所が顧客を判別する方法としては、顧客ごとに入金用アドレスを割り当てる方法と、入金用アドレスは統一して顧客ごとに固有の識別子をメモで送ってもらう方法の二種類があるかと思います。

前者だと大量のアドレスに散らばったBTCを集める必要があり、手数料もかかるので、よりコストが大きいと考えられます。今回のアップデートでメモで識別する方法が可能となりました。

ちなみに、入金にメモの添付が必要なアルトコイン系の取引を行う方は経験があるかもしれませんが、万が一メモの添付を忘れてしまうと取引所側がだれの入金なのが判別できず、取引所内の自分の口座に残高が反映されないのでサポートに連絡をとるしかない・・・というトラブルが発生します。これを防ぐために、特定のアドレスについてメモの添付がないと受け取りを拒絶し、ネットワーク上で送金が成功しないような仕組みもCIP12により導入されました。

なお、メモに関してはまだ多くのウォレットが機能を未導入のようなので、ウォレット側のアップデート待ちという状況のようです。先週リリースされたCounterpartyのデスクトップウォレットであるFreewallet.ioには一応メモ送信機能がすでについているようですが、試してみたところ受け取っても(ブロックエクスプローラ上でしか)メモの表示ができないので、まだ使えるものではありませんでした。

今後のアップデートとか

今後(先月のリリースだと11月後半予定)は、一つのトランザクションで複数のトークンやユーザーに同時に送信できる機能追加や、Segwitにも対応する予定のようです。

実はここしばらくは手数料10円以下でもSegwitを使わなくても、BTCないしCPトークンの送信が普通にすぐ承認されるような状況が続いているのですが、いつまた高騰しはじめるかわかりませんし、どちらも手数料の大幅削減につながるので期待したいところです。

オフチェーンが実用化されないと・・・

実際は安い手数料で送れても、ふつうのビットコインウォレットも含めてほとんどのウォレットの手数料の自動調整機能の精度が微妙だったりして、最適な手数料を選ぶにはある程度勉強して自分でどの程度の手数料が最適か考えなければいけません。ビットコイン決済もCPもそうですが、一般層に普及するには一般ユーザーのそもそもの必要手数料を大幅に削減するオフチェーン取引が必須だと感じます。

参考サイトなど

counterparty-lib 9.55.3 released! | Counterparty

Segwitアドレスについて復習

segwit2xやらがそろそろ目前?になってきたようですが、先月先々月あたりからまだ全然情報を追えていないのでとりあえず復習シリーズ。

segwitがアクティベートされたのはずいぶん昔に感じてしまう方もいるかもしれませんが、8月24日、まだ1か月半程度で対応ウォレットもまだ非常に少ない状況です。

現在対応している主要ウォレットは、おそらくハードウェアウォレットのTrezor、Ledgerとウェブウォレット(運営側とのマルチシグ)のGreen Address(Greenbits)のみです。その他一部取引所とかウェブウォレットのBitGoなども対応しているようです。

segwitに対応したElectrumの次バージョンが間もなく出る予定なので、そちらを試してから書いてもよかったのですが、リリースが延期し続けているので、もうgithubから自分でコンパイルして次バージョンのbcからはじまるsegwitウォレットを一応試したので書いてみます。

Segwitアドレスを使うメリット

大前提として、segwitが有効化されても、segwitアドレスにBTCを移動させてそのアドレス上のBTCを使わないと、segwitを利用したことにはならず今までと全く変わりありません。

segwit自体のメリットは過去の記事やほかのサイトを参考にしていただければ良いかと思いますが、エンドユーザーがsegwitアドレスを使うことの最大のメリットは手数料が安いということにつきます。

トランザクションの構成によって変わってくるので、個別の送金に対しては一概には言えませんが、トランザクションの中の署名が占める割合は総平均で大体60%程度で、従来の半分程度の手数料で安く送れることが期待できます。

最近は時々ネットワークが空いている状態になっており、タイミングを見計らって手動で手数料設定すればsegwitでなくてもかなり安く送れることも多いのですが、全般的に安くなるのは大きなメリットでしょう。ちなみに後で説明するbcアドレスから試しにBTCを送金したら1円の手数料でも6ブロック程度ですぐに承認されました。とはいえまあこれもネットワークが空いている影響が大きいので参考程度にお考え下さい。

細かい話をはじめると、セキュリティ的に優れてるとかも一応ありますが、今の1からはじまるアドレスが危険というわけでは全くありませんし、普通のユーザーが気にするレベルの話ではありません。

Segwitアドレスの種類

3からはじまるアドレス(P2SH)

3からはじまるsegwitのアドレス。今まではマルチシグネチャアドレスでもこのアドレス形式が利用されており、一見マルチシグと区別ができません。マルチシグアドレスが自動的にそのままsegwit対応になるわけではないので、マルチシグネチャウォレットを使っている場合でも、新しいsegwitアドレスに送らないとsegwitを利用することはできません。

現在はすべてのウォレットが3からはじまるアドレスへの送金には対応しているので、segwitアドレスの生成に対応しているソフトでウォレットを作れば、すぐにこのsegwitアドレス宛にBTCを移してsegwitを利用することができます。

bcからはじまるアドレス(bech32、BIP173)

f:id:jpbitcoin:20171012183850p:plain

bcからはじまるsegwit専用のアドレス。segwit専用とはされていますが、今までのアドレスと大きく仕様を変えており、見た目としては大文字小文字の区別をなくしてコンパクトにしたり、segwitとは関係なく(base58から)アドレスそのものの改善が図られています。今後シュノア署名などが導入された際にもbech32が利用される可能性は高いと思われます。

アドレスとして優れているので、今後はbech32がメインでP2SHのsegwitアドレスはあくまで移行期間中のものと考えるのが良いと思います。ただbech32を規定するBIP173はまだdraft状態ですし、対応ウォレットはゼロです。

対応ウォレットでなければ送ることができないので、bcアドレスを生成してもそこにBTCは送れないことになります(bech32のアドレス内のBTCを外部を送ることはできるので、BTCが取り出せなくなってしまうことはありません。)。

今の1からはじまるアドレスからbcからはじまるアドレスへ直接BTCを送って移行することは技術的・仕様的には可能ですが、試しにbech32のアドレスへの送金をブロックエクスプローラで見ても、アドレスの詳細が表示できなかったり、アドレスそのものが表示されなかったりとウォレット以外もまだまだ未対応な状況なので、実験目的ではなく普通にsegwitを利用したいならP2SHの3からはじまるアドレスを利用するのが無難でしょう。

f:id:jpbitcoin:20171012184407p:plain

ちなみにElectrumの次バージョンは現時点ではP2SHのウォレット生成には対応しておらず、segwitウォレットを選択すると強制的にbech32のbcからはじまるアドレスになるので、なかなかsegwitウォレットは選択しづらいかもしれません。

3からはじまるアドレス、P2SH形式のアドレスが実装された時も、多くのウォレットが対応し送れるようになったのも2,3年程度かかったようなので、bech32への移行も少なくとも1年、数年程度は見ておく必要があるのかなと思います。

まとめ

今回のsegwit導入により新しいアドレス形式が導入され、必須ではないもののビットコインでは初めてアドレス移行が推奨される状況となりました。今後も新しい署名形式が導入された際などはアドレスを移行する必要がでてくるかもしれません。

segwitに関してはとりあえず3からはじまるP2SHに移行、いずれbcからはじまるbech32へ、という感じでしょう。

参考サイト

bips/bip-0173.mediawiki at master · bitcoin/bips · GitHub

 

技術に興味がある上級者向けの情報収集法~ビットコインはここが面白い

先月から今月にかけてBitcoin Cash誕生、Segwit実装、中国(+韓国)のICO・取引所規制、・・・と様々なニュースがありました。しかし、正直なところニュースの見出しを読むくらいで全然情報は追えておらず、こちらが教えてほしいくらいなので今日は時事とは関係ないちょっとマニアックな話でもしたいと思います。

ビットコインの(技術的な)情報収集のしやすさ

ビットコインが優れているところ、あるいは面白いところは、いろいろあるかと思いますが、個人的にある意味一番重要なのがこの情報収集のしやすさです。

オープンソース+開発者が多い+コミュニティが開放的

その理由は大前提としてオープンソースであること。そして他の暗号通貨との最も大きい違いは、開発者の多さとコミュニティが開放的であるということです。

オープンソースのプロジェクトは暗号通貨の世界では当たり前ですが、極端な話開発者が一人しかいなければ、どのようなコードを実装するかは開発者の脳内でしか議論が行われないわけで、その過程というのは第三者には全く分かりません。

対して開発者が非常に多いビットコインでは、必ずgithub上でpull requestの申請が行われ承認を受けた上で実装されますし、大きな変更を伴うようないわゆるBIPでは必ずメーリングリスト上で提案・議論が行われます。

また、ビットコインの主要開発者による定例のミーティングはすべて公開で行われ、その内容はすべて無料で公開されており、非常に透明性が高いものになっています。

コードを読む必要がない

インターネット上にすべて公開されているこれらの議論を読めばだれでも無料で最先端の技術情報を追えるので、情報収集をする側にとってはビットコインは圧倒的に優れていると感じます。

また、そのおかげもあって最先端で難しい内容以外にも初歩的でかつ詳細な情報もインターネット上で入手できるので、コードを読まないでも手軽にかなり深いところまで理解しやすいのが最もビットコインの面白いところです。

前提知識

前置きはこれぐらいにして、自分が行っている技術的な内容の情報収集法を書いていきたいと思います。

英語

残念ながら、まず英語を読める能力は必須です。情報が日本語よりも英語のほうが多いから・・・というよりも、根本的に議論はどうしても英語で行われるので、英語を使わざるを得ません。いくら今後日本語の情報が増えても、最先端の議論が世界中の人々により日本語で行われるぐらい日本語が世界中に広まらない限り、英語が必要なことは変わらないでしょう。

ビットコインの基礎知識

英語だけ出来ても、専門用語ばかりのビットコインは最初は正直訳が分からないと思います。

書籍

基礎知識を学ぶにはやっぱり本が一番安定でしょう。最近は、日本語でも技術的な内容が書かれた書籍が出ているようですが、全然読めておらずどれがいいか分からないので、今後、いろいろと読んでレビューでも書ければいいと思っています。とりあえず「Mastering Bitcoin」がよくまとまっているのでおすすめです。

ウェブサイト

書籍以外になるとインターネット上から情報を収集するしかありません。入門者向けの記事は日本語でもいくつかあるので、適当に探してもらえばよいかと思いますが、最も広く詳細にまとまっているのがBitcoin wikiです。中にはちょっと怪しかったり古い記事もありますが、wikiとは言ってもビットコインの開発者も編集していますので、誰が書いたか分からないようなそこらへんのサイトの説明記事よりは十分信頼できるかと思います。

個人的にも、ビットコインを調べ始めた当時は書籍が皆無でインターネット上で調べるしかなかったので、このBitcoin wikiを中心に、補完的にbitcointalkやIRCで詳しい人やコア開発者の話を見たり聞いたりして、いろいろ基礎知識を覚えていきました。

情報収集場所

本題の情報収集場所について。最新の議論が行われていますが、毎日のように見ているとキリがないので、気になった話題についてまとまって時間がある時に見るくらいです。誰よりも早く常に最先端の情報を入手したいとかでなければ、普段は適当にニュース記事を見るくらいで気になったら以下のようなソースで深く調べるくらいで十分だと思います。

github

https://github.com/bitcoin/bitcoin

まずは実際にコードが公開・実装されるgithub。issuesやpull requestsを見ると稀によく理解していない人の疑問がかかれいてその回答が非常に参考になる・・・ということもあるのですが、大半は(一見)重要ではないものなので、実際は他のサイトのソース元として引用されているときや、新しいクライアントが出た際の変更履歴に貼られているリンクを見るくらいです。

メーリングリスト

https://lists.linuxfoundation.org/pipermail/bitcoin-dev/

今後のビットコインに関する提案やそれに対する議論が行われている場です。BIPが作成される際は必ずここのメーリングリストに投稿され、議論された後番号が割り当てられます。

すべて読んでいると時間がいくらあっても足りないので、これも実際には時間がある時に面白そうな内容を見たり、他のサイトからのリンクで見るぐらいです。

IRC

https://botbot.me/freenode/bitcoin-core-dev/

毎週IRCで定例のミーティングが行れています。日本時間の深夜なので、アジア圏に住んでいる開発者はどうしても参加しにくく、一部の主要な開発者のみで議論が行われています。生ログを見ると頻繁に略語が使われたりして分かりにくいことが多いので、最近更新されていないようですが、以下のまとめを見るのがお勧めです。

https://bitcoincore.org/en/meetings/

SNSなど

古くはbitcointalk、最近はredditやtwitter、あるいはQ&A形式のstackexchangeなどがあります。これらのサイトでは書き込む敷居が低いせいもあって質の低い不正確な情報もあったりするので、githubとかメーリングリストとか他のところでもそうなんですが特に投稿者を見ることが重要です。個人的にはコア開発者とか一部の人間しかほぼ信用してません。開発者の中でもその論理飛躍しすぎじゃない?とかUnlimited憎し?でちょっと極端だな・・・とかいう投稿もあったりするのでいろんな人の投稿を見て判断するのが良いと思います。

twitterをやっている開発者もいますが、文字数制限があったり、前後の文脈が非常にわかりづらかったりして、議論をしたり技術的な内容を話すのには向いておらず、ほぼ見てません。

まとめ

ということで、普段はニュースサイトの見出しやらで概要を理解して深く知りたい内容だけ、上の4つで調べる・・・という感じになっています。たまにこのブログのように技術的な内容をまとめた記事もあって最初のとっかかりとしては非常に助かるのですが、できれば結局ソース元を見るのが早いし間違えも少ないことが多いです。

アルトコイン

では、アルトコインはどうなの?というと、やっぱり人が少ないという影響が最も大きいせいか、情報量が少なく深く知るのは大変です。アルトコインの記事を書く際にはどうしても公式が発信している内容をそのまままとめて翻訳するみたいな感じになっています。

例えばある程度ちゃんと書かれているホワイトペーパーを読んでいても、細かい部分で疑問が生まれたりして、運よくフォーラムに同じ疑問が書かれているという場合以外、それを解決する手段がコードを読んで理解するかslackで直接開発者に聞く・・・とかしかありません。

一つのコインだけ調べるならそれでもいいのですが、何十となると正直そこまでやってられませんし、アルトコインのうちどれが優れてるの?と聞かれてもすべてのコインについて深いところまで理解できていないので、分かりませんとしか言えません。

ビットコインと違って柔軟に変更がしやすいアルトコインはいろいろ技術的に面白い内容も多く好きなのですが、情報収集のしやすさという点では、やはりビットコインが圧倒的だと感じます。

価格よりも技術が面白い

ということでビットコインを投資・投機で楽しむだけではなく技術面も楽しんでみてはどうでしょうか。

価格を気にし始めると常に最新の情報を追わなければならず、しかもその情報も真偽があやしい・・・。規制問題でいろいろとニュースが今も流れているようですが、中国・韓国当局の動きなんて取材しないとわからないし取材しても正確には全貌は分からないのでは?と思って自分は結果が見えてくるまで噂話はほとんどスルーしています。

対して技術的な内容はほぼすべてが無料でオープンになっていますし、好きな時にマイペースに調べることができます。

皆さんもニュースで消耗せず技術を楽しんでみてはいかがでしょうか。

【独自トークン】Waves上にもトークンを作りました

お知らせなので短めに。

複数のプラットフォームでいただいた寄付の見返りにトークンをお返しする企画を実施中ですが、最近はWavesの開発が活発で伸びてきている感じなので、Waves上にもトークンを作成しました。

同時にWAVESによる寄付も受け付け始めました。トークンはただの記念みたいなものであまり価値のあるものではないですが、寄付をしていただいてトークンを保有している方には気持ち程度で(需要はかなり少なさそうですが・・・)、ウォレット更新のお知らせのメルマガを月1回お送りしています。今月よりWavesウォレットの更新情報も配信しています。

興味のある方は以下のサイト内のページより詳細をどうぞ。

コメントや寄付のお願い(独自トークン企画) | Bitcoin日本語情報サイト

※ビットコイン2.0という言葉が完全に死語になりつつあるので、変えようと思いつつも良い代案が思いつかずにそのままになっています・・・。

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追記:一部機能のみ追加)
  • Keepkey(8/30追記)
  • BTC.com(8/30追記)
  • Copay(9/28追記)

現在はハードウェアウォレットの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」から引き出し先のビットコインアドレスを指定することで引き出す(送金する)ことが可能です。

8/30追記:更新が遅くなりましたがウェブウォレットのBTC.comでも対応されました。ウォレットとしては有名どころではないものの従来からのウォレットなので信頼性は低くはありませんが、あくまでウェブウォレットでセキュリティ面では劣るので、インポート前にBTCを別のウォレットに避難させておくのがより安全です。モバイルアプリもリリースされています。BIP44のウォレット(mycelium、Copay、blockchain.infoなど)のみインポート可能です。未確認ですが日本語パスフレーズのCopayはインポート不可かもしれません。

9/28追記:従来対応予定なしとしていたCopayにも追加されました。メニューの「設定」から「Bitcoin Cash Support」を有効にするとウォレットを追加できます。

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

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

今後対応可能性あり

不明

  • Mycelium

当面対応予定なし

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

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

Blockchain.infoは8/22から8週間以内にBitcoin Cashに対応する旨の声明を発表しました。8/1以前から保管していたユーザー限定で対応するかそれ以外のユーザーにも対応するかは不明です。

Copayは対応予定なしとしていましたが、9/28にBitcoin Cashに対応しました。

現在未対応のウォレットから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はインポートが難しい場合があるので、変わらず急ぎでなければ放置しておくことをおすすめします。

8/30追記:ウェブウォレットのBTC.comでも対応しています。Copay、Jaxx、Mycelium、blockchain.infoのパスフレーズのみインポート可能です(Copayの日本語フレーズは未確認)。

なお、ここでの説明対象の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などのオフチェーンネットワークの環境が整うまで待ったほうがいいのではないでしょうか。ネットワークの混乱を引き起こすリスクが高いことをやってまで一時しのぎの対策をやる必要がどこまであるのか疑問に思います。

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

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