Bitcoinのコードを見直すのが好きです

6月19日、Chaincodeの開発者John Newberyが、開発者のグループを集めてbitcoinのコードの変更案を調べました。

インターネットリレーチャット(IRC)を介して行われている話題は、不正な鉱山労働者のグループがbitcoinのマネーサプライを膨らませるのを防ぐのに役立つ変更が、セキュリティリスクや悪影響が限定的なプラスの変更かどうかでした。 Newberyの目標は、そのようなコードのレビューに関して彼が知っていることを伝えることです。

この「タイムワープ攻撃」の阻止は堅実な変化でしたか?

「タイムワープは、難易度調整ブロックを将来に、そして次のブロックを現在に戻すことでこれを悪用しています」とNewberyは書き、攻撃ベクトルを説明しました。

しかし、Newberyがこれらのセッションをまったく開催しているという事実は、プロジェクトのトップのコーダーがプロジェクトをより包括的なものにすることに懸命に取り組んできた一例であるため、bitcoinの開発者コミュニティの成熟の兆候と見なすことができます。コードをレビューするプロセスについては、これまでオープンで詳細な議論はされていません。

Newberyは、 Bitcoin Core Review Clubを開始して、変更を確認し、それが暗号通貨に有益であるかどうかを判断する方法に関するヒントをコーダーに提供しました。会議記録は毎週ウェブサイトに掲載されています。

これが可能であるのは、bitcoinのコードがオープンソースであり、インターネットに接続している人なら誰でもGitHubに常駐しているか、あるいは変更さえも可能だからです。このプロセスにより、かつては「 モノリシックBLOB 」と呼ばれていたコード担当者から、開発者にとって重要度の低いバグでも読みやすくなったソフトウェアへのプロジェクトが推進されました。人々は常にそれを改善しようとしています。それを将来のお金のためにふさわしいコードベースにするという高い目標を掲げています。

だから、bitcoinのコードに貢献している人の一人になることも可能です。プロプライエタリコードとは異なり、そのコードは誰でも閲覧および使用できます – 「オープンソース」として知られているもの。

「プログラマブルマネー」と呼ばれる1つの理由は、他のデジタルマネーとは異なり、正しい知識を持っていれば誰でも新しいコード機能を追加することができるということです。コードベースを習得する方法の1つは、それが実際に機能し、バグを引き起こさないこと、または不幸なことにビットコインネットワークを誤って半分に分割しないことを確認するために送信するコードプログラマをレビューしてテストすることです。

しかし、コードのページと何百もの提案された変更を見ると、どこから始めればいいのかわかりません。

「今週のIRCクラブは、Bitcoin Coreプルリクエストのレビューを手助けしたいけれど、プロセスを威圧的なものにしたい人のためのものです。」とクラブのウェブサイトは続けて説明しています。

「プルリクエストを確認してテストすることが、Bitcoin Coreへの貢献を始めるための最良の方法ですが、どこから始めればよいのかを知ることは困難です。何百ものオープンプル要求があり、その多くは多くの文脈的知識を必要とし、そして貢献者や査読者はしばしばなじみのない用語を使用します。」

そのため、このデジタル通貨のコードは誰でも見たり変更したりできるようになっていますが、必ずしもそう簡単にはいきません。何を検討するべきかを知るためには練習が必要です。

これがプロセスの概要です。

誰でもできる

はじめに、ユーザーはあらゆる種類のオープンソースコードプロジェクトをホストするWebサイト、GitHubにアクセスできます。特にBitcoin Core、ほとんどのユーザーが実行する基盤となるbitcoinソフトウェアの実装用のものがあります。

GitHubにはたくさんのことがあることに気付くでしょうが、コードのレビューは基本的に「 プルリクエスト 」、つまりエコシステム全体の開発者がレビューのために提出した一連の変更を検討しています。

つまり、コードを説明するドキュメントを読みやすくすることからbitcoinのパフォーマンスを向上させることまで、まだ正式にコードベースに追加されるには検討されていない300の変更があります。

現時点では、開発者はこれらの変更を承認するかどうかを決定しようとしています。問題は、正式にコードベースに追加する必要があるかどうかを判断するためにコード変更をレビューするのに十分な経験を持っている開発者が限られていることです。このため、あるBitcoin Coreの寄稿者は、かつてプルリクエストのリストを「 クールなアイデアの墓地 」と表現していました

だからこそ、Newberyはこのプロセスに沿って手助けしようとしています。

それでは、実際にどのように変更を検討するのでしょうか。 Newberyがクラブのウェブサイトで説明しているように、「 Bitcoin Coreへの貢献ガイド 」を見たり、C ++をいじったりするような、始めるためのいくつかの重要なステップがあります、プログラミング言語Bitcoin Coreが書かれています。

次は単に見直す変更を選ぶことです。 300を超えるプルリクエストが生きてキックしている状態で、どこから始めるのでしょうか。まだコードベースを知らない人のための最良の選択は、特に「最初の良い問題」とラベル付けされたコード変更です。

事前準備が終わったら、開発者はリポジトリのクローンを作成するか、gitを使用してコードベースのコピーを自分のコンピュータに作成し、変更が予定どおりに機能することをテストできるようにする必要があります。

コードベース全体をあなたのコンピュータにコピーするのは簡単なコマンドだけです。

そこから、プルリクエストを確認できます。それから、開発者はすべての「テスト」を実行して、コードの変更が誤って別のコードをトリップアップさせないようにしてから、残りのコードの確認に進むべきです。

レビュー担当者の心の中

レビューアは何について考える必要がありますか?

まず、高レベルの懸念があります。変更を行うべきかどうか、特に重要な変更を行うかどうかの決定は、基本的に「大まかなコンセンサス」に基づいています。つまり、ほとんどの積極的な貢献者が変更を加えるべきであることに同意します。

別のクラブ例会で、ニューベリー次のように述べています。

“プルリクエストを開くことについての私の考え:誰もあなたにレビューを負っていません。あなたのコードをレビューする人は誰でもあなたを支持しています。プルリクエストを開くと、レビュー時間について他のプルリクエストと競合しています。」

「他の人があなたのpull requestがどれほど役に立つと思うか疑問がある場合は、#bitcoin-core-devで直接質問するか、他の貢献者に直接質問してください。」ビットコインコア開発へ。

そうは言っても、開発者は変更が追加する価値があるかどうかについて常に同意するわけではありません。ある週、開発者たちは議論の多いコードの変更に集中しました。他の人はまだそれが有用であるかもしれないと主張しながら、ある人は悪いのが善を上回ると主張しました。

しかし、そのアイデアが一般的に良いものであったとしても、下位レベルの問題もあります。バグはありますか?コードの変更には、コードの変更が計画どおりに機能することを確認するテストが含まれていますか?これらは、多くの検討時間が回答に費やされる質問です。

たとえば、5月29日の会議( ここで完全な記録を見つけることができます)では、開発者はbitcoinノードのWallet部分のパフォーマンス強化について調べました。

仮名 'Ariard'で寄稿した寄稿者は、彼らが時間の経過とともに開発したレビュープロセスを経て会議を導きました。 「私は最初にどの種類のPRであるかを特定しようとしました。ドキュメント、コードスタイル、バグ修正、新機能、またはテストの追加です。開発者は、この事実を知っていることが、あなたが最初にコミットを読む方法、レビューに必要な時間、そしてどのような種類のテストが必要かを導くことになるだろう」と述べた。

別のレビューアが指摘したところによると、コードの実行にかかる時間を前後に確認するだけで、改善が見られました。 「私の10000キーのインポートは8分から3秒xDになりました」と別のユーザーが「jb55」という名前で言っています。

会議の議事録には、このプロセスを合理化して見直しを容易にする方法に関する他のさまざまなヒントがさらに散らばっています。次の2、3のセクションは、bitcoinのテクニカルライターであり寄稿者のDavid Hardingによるものです。

コンセンサス・アーカイブによるアダム・バック画像