序文アーキテクチャ設計の実装として、ブロックチェーンは他の基本言語やプラットフォームの知識ベースとはまったく異なります。ブロックチェーンは暗号通貨の背後にある技術であり、VRや仮想現実と同等に最も人気のある技術の1つです。それ自体は新しい技術ではありません。 Ajaxと同様に技術的なアーキテクチャとも言えるので、アーキテクチャ設計の観点からブロックチェーンの技術的な実装についてお話しします。 どのプログラミング言語が得意であっても、この設計を参考にしてブロックチェーン製品を実装できます。同時に、関連する知識グラフやシステムを整理し、誰もが体系的に学習・研究できるように支援します。 基本概念ブロックチェーンの概念は最近非常に人気があります。ビットコインなどの暗号通貨の実装に由来していますが、現在ではこの技術は徐々にさまざまな分野で活用されるようになっています。ブロックチェーン技術とは何ですか?この問題を直感的に理解するために、Google Earth の例を例えとして使うことができます。 Ajax は新しい技術ではありませんが、組み合わせることで Google Earth という製品が生まれます。同様に、ブロックチェーンも新しい技術ではありませんが、暗号化と復号化の技術、P2Pネットワークなどと組み合わせることでビットコインが誕生しました。技術者、特に Web 開発エンジニアが Ajax テクノロジについて初めて知ったのは、Google Earth の優れた効果に魅了されたからです。そして今、歴史は繰り返されている。多くの人々がビットコインの驚異的な発展に魅了され、その背後にある技術であるブロックチェーンを研究し始めています。 ブロックチェーンはもともと、ビットコインなどの暗号通貨がデータを保存するための独自の方法でした。これは、大量のトランザクション情報を保存するために使用される自己参照データ構造です。各記録は後ろから前へ順にリンクされており、オープンで透明性があり、改ざん防止機能があり、追跡が容易です。実際、この特性はビットコイン全体の特性も直接反映しているため、暗号通貨の背後にある技術的実装を要約するためにブロックチェーンを使用することは非常に直感的で適切です。ブロックチェーンは技術であり、暗号通貨はそれによって開発され実装される製品の一種です(トークンを含むブロックチェーン製品と含まないブロックチェーン製品を含む)。これらを同一視したり混同したりしないでください。暗号通貨と比較すると、ブロックチェーンという名前はトークンの概念を放棄し、より比喩的、技術的、非政治的なものとなり、技術として研究され推進されるのにより適したものとなっています。 そのため、ブロックチェーンのみについて語る場合は、オープンで透明性があり、追跡可能なデータを実現する製品のアーキテクチャ設計手法であるブロックチェーン技術を指しており、広義のブロックチェーンとみなすことができます。特定の製品におけるブロックチェーンについて話す場合、ビットコインに似たデータ保存方法、おそらくデータベース設計、またはファイルベースの設計を指すことがありますが、これらは狭義のブロックチェーンと見なされます。大まかに言えば、ブロックチェーン技術には、ピアツーピアネットワークの設計、暗号化技術の適用、分散アルゴリズムの実装、データストレージ技術の使用という 4 つの側面が含まれている必要があります。その他の側面としては、分散ストレージ、機械学習、VR、モノのインターネット、ビッグデータなどが挙げられます。狭義のブロックチェーンは、データストレージ技術、データベースやファイル操作などのみを対象としています。この記事のブロックチェーンは、広義のブロックチェーンを指します。 アーキテクチャ図アーキテクチャ設計の観点から見ると、ブロックチェーンはプロトコル層、拡張層、アプリケーション層の 3 つのレベルに簡単に分けることができます。このうち、プロトコル層はストレージ層とネットワーク層に分けられ、これらは独立していますが切り離すことはできません。図に示すように: プロトコル層いわゆるプロトコル層は、最も低いレベルのテクノロジーを指します。このレベルは通常、コンピューターのオペレーティング システムに似た完全なブロックチェーン製品です。ネットワーク ノードを維持し、呼び出し用の API のみを提供します。通常、当局はシンプルなクライアント(一般にウォレットと呼ばれる)を提供します。このクライアントウォレットの機能も非常にシンプルです。アドレスの作成、署名の検証、支払いの送金、残高の確認などのみが可能です。このレベルがすべての基礎となります。ネットワーク環境を構築し、トランザクション チャネルを確立し、ノード報酬ルールを策定します。何を取引したいのか、何をしたいのかについては、聞かないし、聞くこともできません。代表的なものとしては、もちろんビットコイン、ライトコインなど様々な二次トークンがあり、本書で紹介されているイーシュコインもその一つです。このレベルは、この段階で開発者が集まる場所であり、暗号通貨がまだ初期段階にあることを示しています。 使用されるテクノロジーの面では、プロトコル層には主に、ネットワーク プログラミング、分散アルゴリズム、暗号化署名、およびデータ ストレージ テクノロジーの 4 つの側面が含まれます。分散アルゴリズムは基本的にビジネス ロジックの実装に属し、どの言語でも実行できるため、ネットワーク プログラミング能力はプログラミング言語を選択する際の主な考慮事項となります。暗号化署名技術は直接的で使い方が簡単です(本内の関連する暗号化と復号化の記事をお読みください。自由に遊ぶことは推奨されておらず、過度なコーディングロジックはありません)。データベース技術も主に使用レベルにあります。開発において難しい点は、ポイントツーポイントネットワークと並行処理の実装のみです。そのため、強力なネットワークプログラミング機能とシンプルな並行処理を備えた言語が特に好まれます。そのため、ブロックチェーンアプリケーションの開発ではNodejsがますます人気になり、Go言語も徐々に台頭しています。 上記のアーキテクチャ設計図では、このレイヤーをさらにストレージレイヤーとネットワークレイヤーに分割しました。データストレージは比較的独立しており、選択の自由度が高く、個別に議論することができます。選択の原則は、パフォーマンスと使いやすさに他なりません。システム全体のパフォーマンスは、主にネットワークまたはデータ ストレージの I/O パフォーマンスに依存することがわかっています。ネットワーク I/O の最適化の余地はあまりありませんが、ローカル データ ストレージの I/O は最適化できます。例えば、ビットコインでは読み書き性能が良いと言われるGoogleのLevelDBを選択しましたが、多くの機能は開発者自身が実装する必要があります。現在、業界を悩ませている大きな問題は、暗号通貨の取引量が現在の中央集権型決済システム(銀行など)の取引量よりもはるかに少ないことです。 I/Oに加えて、総合的なブレークスルーが必要です。 ピアツーピアネットワークを実現する過程では、分散アルゴリズムや暗号化署名などを使用する必要があるため、当然ネットワーク層の課題であり、コーディングの焦点と難しさでもあります。書籍「Nodejs 暗号通貨開発」全体では、基本的にこの部分の内容が共通しています。もちろん、ピアツーピアネットワークの実装を分離し、ノード検索、データ転送、検証のロジックを分離し、コンセンサスアルゴリズム、暗号化署名、データストレージなどの操作をまとめてコア層を形成する人もいます。どのように組み合わせても、これら 2 つの部分は最もコアかつ最下位レベルの部分であり、プロトコル層の内容となります。 拡張レイヤーこのレベルはコンピュータ ドライバーに似ており、ブロックチェーン製品をより実用的にするように設計されています。現在、2つのカテゴリーがあります。 1つは、法定通貨を暗号通貨に交換するための重要なチャネルであるさまざまな取引市場です。実装が簡単で、すぐに収益が得られ、コストも低いですが、リスクも高くなります。 2つ目は、ある特定の方向への拡大を実現することです。たとえば、Yishu サイドチェーンに基づいて、サードパーティの出版組織、フォーラム Web サイト、その他のコンテンツ制作者にカスタマイズされたサービスを提供できます。特に注目すべきは、誰もが最もよく耳にする「スマート コントラクト」という概念が、拡張レベルでの典型的なアプリケーション開発であるということです。いわゆる「スマート コントラクト」とは、「プログラム可能な契約」または「契約インテリジェンス」のことです。ここでの「インテリジェンス」とは、実行におけるインテリジェンスを指します。つまり、一定の条件が満たされると、証券の自動振替、自動支払いなど、契約が自動的に実行されるというものです。まだ比較的成熟した製品はありませんが、これがブロックチェーン技術の重要な発展方向になることは否定できません。 拡張層で使用される技術には制限がなく、前述の分散ストレージ、機械学習、VR、モノのインターネット、ビッグデータなど、多くのものを含めることができます。プロトコル層から完全に分離できるため、プログラミング言語の選択はより自由になり、プログラミング言語はプロトコル層で使用される開発言語とは別のものでもかまいません。開発中は、トランザクション中にプロトコル層とやりとりする場合を除き、他の時間にプロトコル層の開発と混在しないようにしてください。この層はアプリケーション層に近いため、B/S アーキテクチャ製品におけるサーバーとして理解することもできます。これにより、アーキテクチャ設計がより科学的になり、ブロックチェーンのデータが小さくなり、ネットワークの独立性が高まるだけでなく、拡張レイヤーの開発が制約を受けないことも保証されます。 この観点から見ると、ブロックチェーンは金融業界だけでなく、あらゆる種類の製品の構築と開発に使用できます。将来的には、基盤となるプロトコルがより完璧になるにつれて、第三者による支払いを必要とするあらゆる製品がブロックチェーン技術を便利に利用できるようになります。所有権の確認、信用調査、追跡可能性を必要とするあらゆる情報は、ブロックチェーンの助けを借りて実現できます。個人的には、この目標はすぐに達成されるはずだと考えています。 アプリケーション層このレベルは、コンピューター内のさまざまなソフトウェア プログラムに似ています。一般の人が実際に直接使用できる製品です。 B/S アーキテクチャ製品におけるブラウザ側 (Browser) とも捉えられます。現在このレベルのアプリケーションはほとんどありません。ブロックチェーン技術が一般の人々の生活に急速に浸透し、一般大衆に役立つよう、市場に活気を与え、真の拡大の勢いを生み出すようなアプリケーションが緊急に必要とされています。誰もが使用するさまざまな種類のライトウォレット(クライアント)は、アプリケーション層で最も単純で最も典型的なアプリケーションと考えるべきです。 Yishu はまもなく、典型的なアプリケーション層製品である Yishu ネットワークに基づくドキュメントコラボレーションツールをリリースする予定です。 現在のブロックチェーン技術の開発の限界により、Yishu はプロトコル層から始めてアプリケーション層をターゲットにすることしかできず、サードパーティの開発者向けに拡張層を強力にサポートしています。そうすることで、欲張りになることも、実装できないことも避けることができ、真に合理的な開発ルートとなります。プロトコル層や拡張層のみの開発では、アプリケーション層を真に理解・検証することができないため、現実離れした内容となり、サードパーティの開発者にとって使いにくくなってしまいます。アプリケーション層だけを考慮すると、市場で本当に堅牢で使いやすいプロトコル層または拡張層製品を見つけることはできません。したがって、私たちは全力を尽くし、完全にオープンソースとオープンな姿勢を採用し、コミュニティの力を活用して協力して有意義なことを行うしかありません。これは、中国のブロックチェーン技術の発展と技術蓄積への小さな貢献とも言えます。 プログラミング実装多くの友人は、自分の技術的背景を組み合わせて上記のアーキテクチャ設計を理解することに慣れています。ここでは参考までに、いくつかの製品を特定のプログラミング言語と組み合わせて簡単に紹介します。 (1)C/C++ これら二つの言語は克服できないものです。開発中にボトルネックが発生すると、基本的にはそのボトルネックが見つかります。当然、最初に紹介されるべきなのは彼らです。同時に、ブロックチェーン技術の元祖であるビットコイン(プロトコル層)はC++言語を使用して開発されており、今のところビットコインよりも成功したブロックチェーン製品はありません。したがって、開発にどの言語を使用するかに関係なく、この業界に正式に参入する前に、まずビットコインを勉強する必要があります。公式の Bitcoin クライアント ウォレットは Qt を使用し、サードパーティのウォレットは Python で開発されています。特に、サードパーティによってコンパイルされた開発ライブラリ(Api パッケージ)の多くは Nodejs で設計されています。ビットコインのアーキテクチャは基本的に上記のアーキテクチャ設計と同じです。さらに、コンセンサスアルゴリズムはプルーフオブワークメカニズム(PoW)を採用しているため、特別なマイニングプロセスもいくつかあります。他の競合コインはビットコインのブランチから直接派生しているため、プログラミング言語は同じであり、特定のテクノロジの選択と技術的な実装に改善がある可能性があります。たとえば、Litecoin は他の暗号化アルゴリズムを使用します。 公式サイト: https://bitcoin.org/ ソースコードリポジトリ: https://github.com/bitcoin Nodejs プラットフォームの強力なネットワーク プログラミング機能と、js スクリプト言語のシンプルさとスピードにより、当然ながらブロックチェーン分野では欠かせないものとなっています。 Yishu はそのようなブロックチェーン製品であり、Yishu Coin はそのプロトコル層です。これは有名な Express 開発フレームワークを使用し、http プロトコルに基づいて開発されています。同時に、Delegated Proof of Stake(DPoS)メカニズムを採用し、アルゴリズムの改善によりトランザクション処理が軽量化され、処理能力が大幅に向上しました。強力なコラボレーション メカニズムを提供し、デジタル出版と著作権保護を容易にし、サイド チェーン機能を拡張するため、あらゆる分散型アプリケーションをこれに基づいて開発することができ、プロの著者、ブロガー、開発者に多くの利便性を提供します。書籍「Nodejs 暗号通貨開発」ではソースコードが完全に公開されており、ブロックチェーンの基本概念からコード実装、基本原則から開発設計のアイデアまで、比較的詳細に探求されています。これまでのところ、ブロックチェーン技術の実装をプロトコルレベルから詳細に説明した書籍はほとんどありません。これもその一つです。 公式サイト: http://ebookchain.org/ ソースコードリポジトリ: https://github.com/Ebookcoin Python 言語愛好家であれば、Ethereum の Python 実装を勉強することをお勧めします。 The Dao 事件により大きな論争を巻き起こしましたが、技術的な実装の観点からは学ぶ価値はあります。 Ethereum は、分散アプリケーションの開発と管理のためのプラットフォームとして公式に位置付けられており、その主な焦点は「スマート コントラクト」と、そのためのカスタマイズされたプログラミング言語である Solidity です。 Ethereum の中核となるのは Ethereum Virtual Machine (EVM) であり、これによりユーザーは希望どおりに操作を作成できます。 Ethereum は、Go、Java、Python など複数の言語での実装を提供します。 Python ベースの実装は主に 3 つの部分で構成されます。Pyethapp はクライアント部分です。 pyethereum は、ブロックチェーン、Ethereum シミュレーター、マイニングなどの機能を実現するコアライブラリです。 pydevp2p は、ノード検出、契約コード送信、暗号化署名などの機能を実現するピアツーピア ネットワーク ライブラリです。これら 3 つの組み合わせは完全なブロックチェーン実装であり、後者の 2 つのコア ライブラリが一緒にプロトコル層を構成します。さらに、go-ethereum は Go 言語の完全な実装です。 Ethereum(J) は、あらゆる Java/Scala プロジェクトに埋め込むことができるライブラリとして提供される純粋な Java 実装です。クライアント側では、Rust、Ruby、Javascriptなどの言語での実装もあります。 公式サイト: https://ethereum.org/ ソースコードリポジトリ: https://github.com/ethereum/pyethapp マルチコア時代では、Go言語が非常に人気があります。同期方式で高い同時実行性を簡単に実現できます。特に分散システム、ネットワーク プログラミングなどの分野で広く使用されています。そのため、ブロックチェーン開発の分野でもGo言語を使ったプロジェクトは数多く存在します。その中には、Linux Foundation が主導し、そのバージョンライブラリが Fabric と呼ばれる HyperLeger も含まれています。このプロジェクトは、許可型ブロックチェーン(ビットコインの強力なネットワーク効果を再現できない可能性のあるアプローチ)をサポートする、新世代のトランザクション アプリケーション用のオープンな分散型台帳標準を作成することを目指しています。 Fabric の開発環境は、VirtualBox 仮想マシン上に構築されています。デプロイメント環境は、ネットワーク上で独自に構築することも、BlueMix に直接デプロイすることもできます。デプロイメント方法は Docker 化が可能で、Go と JavaScript を使用したスマート コントラクトの開発をサポートします。 PBFT 分散アルゴリズムを採用し、ネットワークプログラミングでは P2P 通信に gRPC を使用し、プロトコルバッファを使用して送信するデータ構造をシリアル化します。アーキテクチャ設計の面では、Fabric は Bitcoin などのブロックチェーン製品とは異なるかもしれませんが、上記の基本的なコンポーネントは依然として不可欠です。 公式サイト: https://www.hyperledger.org/ ソースコードリポジトリ: https://github.com/hyperledger ナレッジグラフ上記の分析に従うと、ブロックチェーンとは何か、そしてそれをどのように実装するかを理解できます。ちなみに、プログラミングの技術的な知識を整理すると、おのずともっと明確になります。 私の個人的な理解に基づいて、ブロックチェーンに関連する知識を次の 5 つの側面に分類します。 (1)基礎知識 ブロックチェーンは新しい技術であり、その背後には多数の新しい概念と理論が関連しています。この知識はコーディングに直接反映されるものではありませんが、ブロックチェーンを理解し、ブロックチェーン技術を習得するための基礎知識となります。したがって、ブロックチェーン技術に欠かせない要素となるはずです。この部分では、基本的な概念から始まり、ブロックチェーンの基本的な知識をすべて網羅できる動作原理について説明します。 (2)技術的実施 ブロックチェーンはテクノロジーですが、上記の分析から、それはアーキテクチャアプリケーションであるべきであり、アーキテクチャの実装が私たちの知識ベースの中核となるべきであることがわかります。ご覧のとおり、どのブロックチェーン製品でも、プロトコル層にはピアツーピア ネットワーク、暗号化された署名、データ ストレージ、分散アルゴリズムの 4 つの部分が含まれている必要があります。アプリケーション層では、ウォレットやクライアント ブラウザーなどの基本的なアプリケーションも提供する必要があります。したがって、この部分を分離することが合理的です。 拡張レイヤーでは、ブロックチェーン技術を金融、モノのインターネット、ネットワークセキュリティ、著作権保護、電子商取引などのさまざまなアプリケーションに接続できます。ここでは多くの既存の技術を使用できます。しかし、ブロックチェーンとどう組み合わせるか、業界横断的な利用をどう実現するかは、当然この部分の研究テーマです。したがって、ここにリストされている、またはここに含まれる技術は、技術実装の重要な部分とみなされるべきです。 (3)開発環境 ブロックチェーンは複数のテクノロジーを組み合わせたものであり、独自の複雑さを伴います。一部のアプリケーションは開発環境に大きく依存します。開発者がすぐに作業を開始するには、開発ツールと環境の構築が重要です。 (4)プロジェクト実践 わずか数年で、すでに世界には何千ものブロックチェーン製品が存在し、その多くは革新的なアプリケーションであると言われています。優れたオープンソース製品やプロジェクト実践は、学習や研究に最適な教材です。 (5)開発文書 言うまでもなく、各製品には独自の開発ドキュメントが存在します。もう 1 つは、思いやりのある開発者によってコンパイルおよび要約されたリソースによって、クエリ時間を大幅に節約できることです。 この知識体系を考えていたとき、主に考えていたのは、読者がこれらのタグに従って記事を読むことでブロックチェーン技術を素早く習得し、最終的にはブロックチェーン製品の開発と実装に取り掛かることができるかどうかでした。また、特定のプログラミング言語や特定の分野に関連する単語は意図的に避けています。区別できるのは、これらのノードの下の対応する記事タグだけです。したがって、これらのカテゴリは非常に中立的であるように見えます。分類方法として、ビットコイン、競合コイン、スマートコントラクト、デジタル資産、スマート資産などの特定分野での実装を使用することも検討しましたが、読者の思考を制限してしまうのではないかと懸念しています。同時に、ブロックチェーンの発展に伴い、このマップは修正され続けます。ここで、この記事を読んだ友人たちが貴重な提案をしてくれて、ブロックチェーンに関するこの知識分類マップがより科学的で合理的、そしてより使いやすいものになることを期待して、訴えたいと思います。 要約するこの記事では、ブロックチェーン技術の基本的なアーキテクチャについて説明しました。これは実装方法の 1 つにすぎないことを再度強調する必要があります。すべてのブロックチェーン製品がこのようになるわけではありません。私たちもさらなるイノベーションを期待しており、必ずや登場すると信じています。プログラミング実装では、いくつかのプログラミング言語とその代表的な製品をリストします。プロトコル層の技術は比較的低レベルであるため、導入または議論する必要がある既製のフレームワークは多くありません。同時に、具体的な技術的な詳細を数行で明確に列挙することはできません。幸いなことに、これらの製品はオープンソース製品です。独自の技術的背景を組み合わせて、さらに対応する製品のソースコードを表示することで、謎をすぐに理解することができます。 |
<<: ビットコイン決済サービスのスタートアップBitwalaはメキシコと日本への進出を計画しており、テスターには5ユーロの割引を提供する。
>>: EYが金取引市場に参入、ブロックチェーン金決済ツールを開発
トルコの無料第 2 レベル ドメイン名サービス プロバイダーである site.ac は、世界中のユー...
カナダの投資管理会社ナインポイント・パートナーズは、同社のビットコイン・トラストの株式のトロント証券...
BaseFee が急激に上昇すると、Filecoin マイナーは取引手数料を支払えなくなる可能性が...
このチュートリアルでは以下について説明します1. 使用前にE3マイニングマシンを確認する2. E3マ...
暗号通貨マイニングの需要が旺盛なため、グラフィック カード業界は過去 2 年間にわたり活況を呈し続け...
2018年の10月か11月に、友人が私のところに来て、半年近く停止していたマイニングマシンをどうし...
ビットコインの価格が高騰し続ける中、価値の高い電子通貨としてのビットコインはますます注目を集めていま...
元SkypeのCOOであるマイケル・ジャクソン氏は、現在、Mangrove Capital Part...
原題:「ライトシルバー」が「プリンス」BCHに反撃主流の暗号資産が次々と上昇し始めており、フォーク後...
先ほど終了したコア開発者会議で、開発者は、10月9日正午頃のロプステンテストネットワークブロック高4...
8月30日、オンチェーンスケーリングカンファレンスが再び開催され、ビットコインチェーンをスケーリン...
5月6日、上海第一中級人民法院(以下、上海第一中級法院)は、ビットコインをめぐる対外財産損害賠償紛...
ドージコインは10年以上にわたってミームコインブームの中心であり、過去7日間だけで95%の増加など、...
資産デジタル化の開発コンセプトに基づくブロックチェーン プロジェクト資産チェーン、トークンACC は...