【翻訳記事】ブロックチェーン開発の信頼すべきガイド(後半)

最終更新日:2020年11月12日

レバテックキャリアは
ITエンジニア・Webクリエイター専門の転職エージェントです

Haseeb Qureshi氏がブログで投稿した記事「The authoritative guide to blockchain development (Posted Jan 28, 2018)」を翻訳してご紹介しています。
なお、この記事は原著者の許諾を得て翻訳・掲載しています。


Ethereum(イーサリアム)とスマートコントラクトプログラミング

ブロックチェーンを構築してビットコインの力学を理解しましたね。今度はEthereumを掘り下げてみましょう。

ブロックチェーンとプルーフオブワークがどのようにpeer-to-peerネットワーク内の分散型ビザンチン・フォールトトレラントなコンセンサスを達成しているかを理解しました。しかし、決済ネットワークは、そのようなブロックチェーン上で実行できるアプリケーションの一つに過ぎません。2013年、Ethereumの創始者であるVitalik Buterin(ヴィタリック・ブテリン)はこう考えました。「分散型コンピュータを実装するためにブロックチェーンを使用した場合どうなるのだろう?」

Ethereumのロゴ画像

Ethereumでは、この分散仮想マシン上でプログラムを実行するためにマイナー(採掘者)に支払いを行います。つまり、チューリング完全なプログラミング言語(ビットコインスクリプトとは異なります)を使用して任意の計算を実行できるのです。決済関連のアプリケーションも含まれているため、Ethereumはビットコインの機能の上位セットを可能にし、イノベーションのルネッサンスを生み出しています。

これは、スマートコントラクト(そのような仮想マシン上で動作するプログラムの名前)をもたらしてくれます。スマートコントラクトは、プログラムの実行に応じてブロックチェーンのクリプトカレンシーと直接やり取りできます。つまり、自動的に実行する金融コントラクトを作成することができるのです。それは大胆なアイデアであり、一旦このプログラミングモデルを採用すれば、あらゆる種類のSFのような未来的なことができます。

Ethereumによって、ICOと開発者がブロックチェーンに押し寄せました。Ethereumはビットコインの次(2番目)に大きなクリプトカレンシーであり、2番目に人気が高いプラットフォームの開発者の10倍以上が集まり、最強の開発チーム、最も成熟したツール、そしてICOとプロジェクトの大部分を有しています。また、業界で最もサポートされており、これからもきっとそうでしょう。おそらく、ブロックチェーンの開発をしている人ならば、Ethereumスマートコントラクト用のコードを書くはずです。(そのコードを書かなくても、この分野で何が起こっているのかを理解することは絶対に不可欠です。)

まず、このビデオはEthereumをより詳細かつ高レベルに説明しています。

Ethereumの背後にある考え方は、暗号経済学のイノベーションの波を生み出しました。あなたは、DAO(分散型・自律型の組織)に関する考え方と、それらが示唆しているすべてのSFの熱狂夢に足を踏み入れるべきです。

さて、ファンタジーはもう大丈夫ですね。技術をさらに掘り下げてみましょう。

これは、Preethi KasireddyによるEthereumのイエローペーパー(事件などをセンセーショナルに扱う記事)とその内部情報の素晴らしいまとめです。Ethereumは、ビットコインのUTXOモデルではなくアカウントモデルを使用しています。なぜアカウントモデルを使えばスマートコントラクトを書くのがより簡単になるのかすぐに理解できるはずです。

他の技術と同様に、Ethereumと仲良くなる最善の方法は、いくつかの小さなプロジェクトを構築することです。

Ethereumの支配的なプログラミング言語は、静的に型付けされたJavaScript風の言語であるSolidityです。これは欠点や疑わしい設計上の選択が多い言語です。リリース可能になればViperのようなロバスト性を持つ言語がSolidityに取って代わるでしょうが、現在のところ、スマートコントラクトプログラミングの共通言語はSolidityです。基本的にEthereumのJavaScriptなので、Solidity(とその落とし穴)を学ぶ必要があります。

Solidityの開発を始めるために、CryptoZombiesの全チュートリアルを作業することをお勧めします。これは、Solidityプログラミングの基礎を教えてくれる、楽しくて高品質のCodecademy風のチュートリアルです。

Webサイト「CryptoZombies」の画像

興味が高まってきたはずなので、今こそ自分で開発するときです。

Ethereumの「hello world(プログラミングの最初)」はERC-20準拠のトークンの構築です。最初のチュートリアルとして、プロセスを一通り説明しているこのガイドをお勧めします。

Remixはブラウザ内のSolidityエディタとコンパイラです。これは基本的にEthereum開発の補助輪なので、残りの演習をRemixで作業することをお勧めします。また、ローカルのブロックチェーンを設定し、Ethereumのツーリングの感覚を得ることも有用です。このチュートリアルは、エンドツーエンドのブロックチェーンに関する知識を一通り説明し、その要素を順に説明しています。

次に、投票システムを構築することをお勧めします。僕はこれをEthereumのToDoアプリと呼んでいます。Karl Floerschは、コミットを明らかにするセキュアな投票システムを構築する方法を説明する素晴らしいチュートリアルを用意しています。

では中期試験の時間です。2人のプレーヤーがコインフリップに賭けることができる、セキュアなコイン投げゲームを構築してください。今回は、チュートリアルはありません。自分の力でやってみてください。可能性のある攻撃について考えてみましょう。プレーヤーはどのような形で不正行為をすることができますか?プレーヤーが正直に遊ぶことを保証できますか?ここにいくつかのヒントがあります

スマートコントラクトのセキュリティ

ブロックチェーン開発には、セキュリティが絶対に不可欠です。スマートコントラクトは、DAOハックParityウォレットハックParityウォレットハック2(親しみを込めて愛称を付けられたこのハックは、オリジナルTシャツまであります)といった悲惨なハッキングに悩まされています。もしあなたがプロダクションスマートコントラクトを書くつもりなら、これら3つのハッキングに関するすべての分析を必ず読まなければなりません。

実のところ、スマートコントラクトを正しく動かすのは極めて難しいのです。これらの正確な攻撃を防ぐためにプログラミングツールチェーンが改善されていますが、最終的にはプログラマーのエラーが原因でした。また、フロントランニングセキュアなランダムネスの生成など、スマートコントラクトプログラミングから生じる多くの微妙でわかりにくいバグもあります。

スマートコントラクト開発者として、セキュリティを最も重要なものとして扱わなければなりません。スマートコントラクトプログラミングでは、「素早く行動し破壊せよ(Facebookの昔のモットー)」ということはありません。つまり、重要な資金の流れを処理するコードは、OyenteSecurifyのような静的アナライザーを介して実行され、徹底的にテストされた後、経験豊かなスマートコントラクト監査員によって監査されるということです。また、OpenZeppelinのオープンソースコントラクトのような、事前に監査されたコンポーネントに頼ってみるべきです。

セキュリティ能力を強化するために、スマートコントラクトの脆弱性を見つけて攻撃するゲームであるOpenZeppelinによるThe Ethernautをやってみることをお勧めします。ゲームの多くは、実際で起こるであろうスマートコントラクトに対する本当の攻撃を再現しています。

Phil Daianは、Hack This Contractという優れたスマートコントラクトのハッキングゲームを作っています。

ゲームをやった後は、ConsenSysによってコンパイルされたSmart Contract Best Practices(スマートコントラクトのベストプラクティス)を全部読むことを強くお勧めします。この文書は、あなたのスマートコントラクトプログラミングのキャリアの中で何度もお世話になるでしょう。セキュリティ専門家のさらなる読書に向けて参考文献も読んでみる価値があります。

補助輪を取り外そう

今までのことを行ったならば、Remixを抜けて、本気のSolidity開発向け知識を使い始める準備ができているはずです。

ほとんどの開発者は、テキストエディタ用にVSCodeまたはAtomをお勧めします。まともなSolidityプラグインを持っているからです。ローカルブロックチェーンとやり取りするにはGanache(元TestRPC)が使えますし、(JSベースの)テストを行い、ビルドパイプラインを設定するためにはTruffleフレームワークが使えます。

今こそ、完全な分散型ファイルストアとしてEthereumブロックチェーンよりもはるかに安いコストで使用できるIPFSを使ってみるいい時期です。これは、作成者Juan Benetの簡単な解説です。

EthereumとIPFSのフルノードとやり取りする上でほとんどの開発者が推奨するのはInfuraです。EtherscanETH Gas Stationは、Ethereumネットワーク上で有用なリアルタイム統計を提供しています。

Web3(EthereumをVitalikと共に開発したGavin Wood氏が中心となっている団体)の知識を取り入れたら、エンドツーエンドのDapp(分散型アプリケーション)を配備してみてください。このチュートリアルは、ノードとポストグレスをバックエンドに使用したフルスタック(複数の技術分野についての知識や技能に精通していること)のまとめを提供しています。またこのチュートリアルは、IPFSをパーシステンス(永続)レイヤーとして使用して、完全な分散型アプリケーションを作成する方法を説明します。

自分のプロジェクトを構築する方法

あなたは今、ほとんどの技術に慣れ親しんでいるはずです。今やるべきことは、物事を構築し始め、ブロックチェーンのコミュニティに深く足を踏み込むことです。

第一に、自分のプロジェクトの構築を開始してください。ワクワクするような素晴らしいアイデアがある場合は、それを構築し、他の人にそれをハッキングするように説得してみてください!まだアイデアがないか、自分で汗をかくのは好きでない場合は、貢献を歓迎する多くの高品質なオープンソースプロジェクトがあります。OpenZeppelinはスマートコントラクトを開始するのに適しているかもしれません。

いっそのこと、ファンになれるような、積極的に開発されたプロジェクトを探すことから始めることをお勧めします。プロジェクトのSlackやRocketchatをフォローしてください。開発者は多くの場合簡単にアクセスできます。そのプロジェクトに貢献したいと伝え、いくつかの小さな仕事を求めてください(あるいはGithubで未解決の問題を見つけてください)。

プロトコルとスマートコントラクト開発について説明してきましたが、ブロックチェーン企業では、コア開発者はコア機能を構築する必要があることに注意してください。これらの役割は、多くの場合、ブロックチェーンとのやり取りが必要になりますので、ブロックチェーンがどのように機能するかについての優れたメンタルモデルを持っていることが不可欠です。しかし、ブロックチェーンのベンチャー企業で働く多くのエンジニアの仕事のほとんどはPythonのウェブサーバを構築することやReactフロントエンドを設計することであり、ブロックチェーンとやり取りすることは仕事のほんの一部かもしれません。スマートコントラクト開発に特化する必要はありません。実際には、それはブロックチェーン知識の機能の一部でしかありません。

オープンソースの貢献以外にも、多くのブロックチェーンハッカソンが絶えず開催されています。ほとんどのプロジェクトには参加できるフリーのパブリックなSlackがあり、Ethereum自体のための非常に活動的なGitterチャンネルがあり、そこには多くの開発者がいます。その分野の奥まで進むと、Slackチャンネル、Telegramグループ、Gitterチャンネルのいずれであろうと、最終的にピアグループ(仲間集団)を見つけることができます。それがどこにあっても、仲間を見つけて、学習を続けてください。

ブロックチェーンコミュニティをナビゲートする方法

ブロックチェーンの世界を真の意味で理解するための最良の方法は、どっぷりハマることです。優秀な人たちが過去に書いた文書や作ったビデオを見てください。これは常に新しいドメインを習得しようとする際の僕の戦略であり、それは実を結んだと思っています。

素晴らしいブロックチェーンのコンテンツがたくさんありますが、駄目なコンテンツもあります。僕がおすすめする情報群は以下のとおりです。

メディア

僕がお勧めしたい素晴らしいポッドキャストが3つあります。一つ目は、Software Engineering Daily Blockchainインタビューであり、多くのトピックとクリプトカレンシーに関する優れた技術的な導入を提供しています。また、EpicenterUnchainedもお勧めです。遡って昔のエピソードも聞きたいと思うはずです。将来有望な技術的ポッドキャストにはConspiratusというものもあります。これらを定期視聴することをお勧めします。

いくつかの素晴らしいYoutubeチャンネルもあります(Youtubeにはゴミのような動画もたくさんありますが)。Ethereum Foundationに登録し、Devcon3のプレゼンテーションを見てください。Blockchain at Berkeleyは講義の多くを記録しており、その大部分は優れた技術概要です。Decypher Mediaも、講演、白書レビュー、チュートリアルを掲載しています。Jackson Palmerは週次のまとめに従事しており、これらは技術的ではありませんが非常に均等な形で提示されています。

オンラインの読み物

リアルタイムのブロックチェーンに関するチャットの大部分は、RedditとTwitterの2つの場所で発生しています。Redditの場合、ほとんどのサブレディットは非常にくだらないノイズによって支配されています。r/Ethereumは一貫してまともな品質です(また、特定のクリプトカレンシーには、いくつか見るに値するサブレディットがあります)。ほとんどのサブレディットは主に投機家によって支配されており、見るに値しません。ビットコイン関連のサブレディットは見ない方がいいです。ビットコインのコミュニティは心を蝕むことで有名であり、Redditはそれを拡大しているだけです。

Twitterはさらに良いものと悪いものの寄せ集めです。良くも悪くも、ほとんどのブロックチェーンに携わる人はTwitterを使用しています。ブロックチェーンのTwitterは当初僕にとって謎の存在でしたが、僕は最終的にTwitterブロックチェーンの人の非公式なオントロジー(存在論)を開発しました。僕の経験に基づいて分類すると、5種類のブロックチェーンの性格タイプがあります。それは、構築者、起業家、ジャーナリスト、トレーダー、「思想的指導者」です。

疫病のような「思想的指導者」は避けてください。起業家タイプは大丈夫かもしれませんが、彼らは主に誇大妄想的な人物として行動したり、自分のプロジェクトについてつぶやいています。投資家タイプは主に価格や誇大広告的なプロジェクトについてつぶやくので、興味があるなら見てみるといいかもしれません。ジャーナリストタイプはその日の主要なニュース項目に関してつぶやく傾向があります。リアルタイム分析が必要な場合を除き(多分必要ないと思います)、あまり見ないことをお勧めします。あなたが積極的なトレーダーであれば、それは重要かもしれませんが、ブロックチェーンを構築しようとするならば、ほとんどのリアルタイムの情報は気を散らすだけです。

構築者に最も注意を払ってください。彼らは現在最も重要な人たちで、技術を促進している人たちです。

各カテゴリの代表者を数人紹介します(あなたのTwitterフィードに追加したい場合、これらの人たちがフォローしている人を最初に検索してみてください)。

構築者

起業家

投資家

ジャーナリスト

(もちろん僕はこのリストに載っていませんが、僕のこともフォローしてください。)

先ほど述べたように、TwitterやRedditを見るのは最小限に抑えることをお勧めします。あなたがジャーナリストでもデイトレーダーでもない場合は、リアルタイムチャットのFirehose(Twitterの全公開ツイートをリアルタイムに取得可能な機能)は必要ありません。重要な情報は非同期的に目の前に現れるものです。注目市場に翻弄されることなく好きな時間に見ることができる、最も重要な日次/週次ニュースをまとめているニュースダイジェストがいくつかあります。

最も重要なクリプトカレンシーニュースの日次ダイジェストが見たいならば、Inside Bitcoinを購読することをお勧めします(Bitcoin以外の情報もカバーしています)。トークンプロジェクトの場合、Token Economyに優れた週次記事があり、Week in EthereumにEthereumエコシステムで開発者に焦点を当てた記事があります。

これ以外に、リアルタイムニュースを監視する必要はありません。構築や学習に重点を置いてください。

また、最高のブログをフォローしたいですよね。長文式のコンテンツは、支出に見合う最高の価値がある傾向があります。以下のブログをフォローすることをお勧めします。

  • Vitalik Buterin:優れたブロックチェーンと暗号経済学分析(古いブログの記事もすべて読んでください。Vitalikは一世紀に一人の思考者として広く認識されています)
  • Hacking, Distributed:コーネル大学研究者によるブロックチェーンセキュリティ分析
  • Unenumerated:社会におけるクリプトカレンシーの役割に関する挑戦的で折衷的なエッセイが掲載されたNick Szaboの有名ブログ
  • Money Stuff:市場、財務、ブロックチェーンのニュースに対する斬新で洞察に満ちた分析を行っているMatt LevineによるBloombergシンジケーション
  • Vlad Zamfir:国家的および公的なブロックチェーンに関する穏やかで慎重な意見
  • Chris Burniske:クリプトカレンシー資産の価値を評価する優れたブログ記事
  • Jamesson Lopp:ブロックチェーンのエコシステムを構築するソフトウェアエンジニアの立場から書いた、素晴らしい技術的記事
  • Great Wall of Numbers:特に企業におけるブロックチェーンマニアの冷静かつ断固としたTim Swansonによる解体新書

(また、繰り返しますが、このリストに含まれてはいないものの僕のブログも読んでください。)

書籍とコース

この分野の学習にさらに構造化されたアプローチが必要な場合は、いくつかの高品質な本とコースがあります(低品質のものもたくさんあります)。

ブロックチェーンの最高の総合教科書は、「Bitcoin and Cryptocurrency Technologies」(プリンストン大学のCourseraコースに付随しています)です。他に僕がこの分野でお勧めする唯一の書籍は、Andreas Antonopoulosによる「Mastering Bitcoin」と、Ethereumの共同設立者Gavin Woodとの共著である「Mastering Ethereum(2018年8月発売予定)」(ともにオライリーが出版)です。また、非技術的な書籍でお勧めするのは、Nathaniel Popperによる「Digital Gold」です。他に一読の価値があるものは、書籍ではなくブログに掲載されていることがほとんどです。この分野のスピードは非常に速いため、重要な人物は書籍を書く時間がほとんどなく、書籍はリリースされるまでに時代遅れになることがよくあります。

この分野の学習にさらに構造化されたアプローチが必要な場合は、いくつかの高品質なコースがあります(低品質のものもたくさんあります)。僕は既にPrinceton Coursera Course(動画はYoutubeにもあります)とUC Berkeley Decalの講義を視聴しています。スマートコントラクト開発を始めたい人向けには、Consensys Academyの評判も良いです。

また僕は、サンフランシスコのBradfield School of Computer Scienceでソフトウェア開発者向けにクリプトカレンシーに関する4週間のセミナーを開催しています。このコースは、セミナースタイルの小規模な集中クラスなため、サンフランシスコだけで開催されており、参加できる人数は限られています。しかし、あなたがサンフランシスコのソフトウェアエンジニアであり、クリプトカレンシーの背後にある理論と実践についてもっと学習したいならば、ぴったりのセミナーかもしれません。

仕事の獲得

前述のとおり、ブロックチェーンのベンチャー企業は人材の雇用に躍起になっています。ここまでの知識を獲得し、僕が提案したことの半分でも行えば、あなたは恐らく既にこの分野で雇用されるでしょう。AngelListは、クリプトカレンシー分野で仕事を獲得する方法について素晴らしい記事を書いています。

ブロックチェーン関連求人には、いくつかの優れた求人収集サイトがあります。

また、以下の特に有望なブロックチェーンのベンチャー企業が、開発者を雇用しています。

クリプトカレンシー開発者向けの市場にはさらに多くの大企業が存在します。

  • Coinbase(クリプトカレンシーのGoogle):常に狂ったように雇用しています
  • StellarRipple:企業にとって身近なクリプトカレンシーの仕事がしたい場合
  • Square:いくつかのブロックチェーンを統合しましたが、外部から雇用しているかどうかはわかりません
  • IBMVisa、またはJP Morgan:古き良き企業の門を叩きたい場合

(この特定の会社リストは、僕が住んでいる湾岸地帯中心なので、あなたの役に立つかはわかりません。でも求人収集サイトはもっとグローバルですよ。)

しかし僕の考えでは、会社に入社する最善の方法は、ワクワクするようなプロジェクトを見つけて、直接彼らにコンタクトを取ることです。ほとんどのブロックチェーンチームは、遠隔地に住んでいる最適な人材を雇用する意思があります。多くの開発者はTwitter、Github、またはパブリックSlackチャンネルを使って簡単にアクセスできます。あなたのポートフォリオが充実していて、技術的な能力を示すことができ、何らかのイニシアチブを示すならば、ほとんどの人は感銘を受けるでしょう。

僕が持っている知識はこれが全てです。上記のことをすべて済ませたら、準備万端のはずです。そして、あなたはおそらく僕よりずっと先を行っているでしょう。

The rabbit wormhole(ウサギの穴(不思議の国への入り口)とワームホール(二つの離れた領域を直接結び付けるトンネルのような時空構造)を組み合わせた造語)

僕が示した知識はちょうど出発点です。クリプトカレンシーはまだ初期段階ですが、人が取り組むことができる最も急速に進化する分野だと考えています。僕はこのガイドが1年もすれば時代遅れになると確信しています。ここで紹介しきれなかった素晴らしいプロジェクトがたくさんあります。しかし、この分野に参入すれば、あなたは直にそのプロジェクトを見つけるでしょう。

探求を続けてください。改善し続けてください。学習し続けてください。

そして、あなたが僕たちの世界に加わってくれることを願っています。

Haseebより

Nadav HollanderとIvan Bogatyyに心からの感謝を送ります。

前半へ<<<



CREDIT:原著者の許諾のもと翻訳・掲載しています。

[原文]The authoritative guide to blockchain development (Posted Jan 28, 2018) by Haseeb Qureshi


プロのアドバイザーがあなたのお悩みや疑問にお答えします

- 転職個別相談会開催中 -

相談内容を選択してください

※転職活動や求人への応募を強制することはありません

人気の求人特集

内定率が高い

人気の記事

スキルアップ記事トップへ