Ethereum シリアル (IX): C++ クライアントのインストールとカスタマイズ (III)

Ethereum シリアル (IX): C++ クライアントのインストールとカスタマイズ (III)

走る

引数なしで eth を実行すると、ノードがパブリック ブロックチェーンに同期されます。別のブロックチェーンを作成したり、別のブロックチェーンと同期したりすることも可能です (eth を使用したカスタム ブロックチェーンを参照)。

ノードとのやり取りは、geth または Ethereum コンソールを使用して行うことができます。

gethの使用

Ethereumコンソールの使用

Ethereum コンソールは、実行中の eth/geth ノードに接続し、web3 オブジェクトへのアクセスを提供する node.js アプリケーションです。

注: https://github.com/ethereum/ethereum-console

npm を使用してインストールできます:

知らせ:

 1
2
 > npm インストール -g イーサリアムコンソール
>ethコンソール

知らせ:

使用法:

 1
 ethconsole [javascript ファイル] [ipc ソケット]

ipc経由でEthereumノードに接続し、グローバル変数web3経由でリモート制御します(web3.adminも表示されます)。パラメータが指定されていない場合は、デフォルトのipcソケットに接続します。

対話モードに入ります。

パラメータ:

指定された IPC ソケットに接続します (.ipc で終わらない場合は、ipc:// を使用します)

指定された .js で終わる JavaScript ファイルを非対話形式で実行します。

コンソールを終了するには、スクリプトで process.exit() を呼び出す必要があります。

モジュールとは何ですか?

メインの実行可能ファイルは何ですか?

  1. eth コマンドライン Ethereum フルノード、RPC 経由で制御可能。

  2. 契約とユーザーインターフェースの開発、テスト、ブロックチェーンへの展開のためのmix IDE

  3. solc Solidity コマンドラインコンパイラ。

  4. lllc LLL コマンドラインコンパイラ。

非推奨の実行ファイル。まもなく廃止されます

  1. AlethZero Ethereum と対話するための包括的な Qt ベースのグラフィカル ユーザー インターフェイス (最小限のサポートを受けます)。

  2. EthKey キー管理 CLI。

さまざまなモジュールとは何ですか?

  • AlethZero - Ethereum と対話するための Qt ベースのグラフィカル ユーザー インターフェイス。最小限のサポートを受けます。

  • libethereum - コンセンサス エンジン、ブロックチェーン ダウンロード、仮想マシンなど、Ethereum Web3 部分に関連するモジュール。

– ethkey: 独立したキー管理

– ethminer: スタンドアロン ethash マイナー

– ethvm: スタンドアロンの Ethereum 仮想マシン実行機能

– evmjit: Ethereum 仮想マシン ライブラリ ジャストインタイム コンパイラ

– libethash: ethashマイニングのプルーフオブワークアルゴリズムの実装

– libethash-cl: GPU マイニング用の ethash マイニング コード (OpenCL)

– libethashseal: プルーフ・オブ・ワーク シーリング エンジンの汎用ラッパー。すべてのethashベースのチェーンの元の状態も含まれています

– libethcore: コアデータ構造と概念のコレクション

– libethereum: メインのコンセンサス エンジン (Ethereum 仮想マシンを除く)。状態とブロックチェーンのクラスを含む

– libevm: Ethereum 仮想マシン実装 (インタープリター)。

– libevmasm: Ethereum 仮想マシン アセンブリ ツール。オプティマイザーも含まれています。

- libevmcore: Ethereum 仮想マシン、オペコード、ガスコストなどの低レベルのデータ構造。

– liblll: 低レベルのLISP風言語コンパイラとアセンブラ

- libnatspec: natspec スクリプト評価ツール (確認情報)

– libtestutils: コードをテストするためのユーティリティ

– lllc: LLLコンパイラのコマンドラインインターフェース

  • libweb3core – Web3 コア ライブラリ、ネットワーク、エンコード、デコード、基本データ アーキテクチャ。

– ベンチ: ツリー構造のベンチマーク

– libdevcore: データアーキテクチャ、ユーティリティ、rlp、ツリー構造、インメモリデータベース

– libdevcrypto: 暗号化プリミティブ、libsecp256k1 および libcrypto++ に依存

– libp2p: コアピアツーピアネットワーク実装(特定のサブプロトコルを除く)

– rlp: スタンドアロン rlp エンコーダ/デコーダ

  • mix – 分散型アプリケーション統合開発環境

  • solidity – Solidity コンパイラ

– docs: ドキュメントは http://solidity.readthedocs.org/ にあります

– libsolidity: 実際の実装

– 分析: 参照解決、型チェック… (拡張 AST アノテーション)

– ast: 抽象構文木と型システム

– codegen: コメント付きASTからアセンブリコードを生成する

– 形式的: 形式的検証

– インターフェース: libsolidity ユーザー向けの外部インターフェース

– 解析: パーサー (コメントなしの AST を作成)

- solc: コマンドラインコンパイラ

  • web3.js - JavaScript 分散アプリケーション フレームワーク ライブラリ (RPC/IPC 経由でバックエンドに接続)

  • webthree – 実際のクライアント/ノード実装 ("eth")

– eth: コマンドラインクライアント/ノード

– libjsconsole: 廃止された eth にアクセスするための JavaScript コンソール。nodejs アプリに置き換えられます。

– libjsengine: libjsconsole の潜在的なエンジン。近々削除される予定です。

– libweb3jsonrpc: http および IPC (unix ソケット、windows パイプ) コネクタを提供する json-rpc サーバー側エンドポイント

– libwebthree: Ethereum、swarm/ipfs、whisper 用のサービス コネクタ

– libwhisper: ウィスパー実装

  • webthree-helpers – ビルドシステムといくつかの外部依存関係

– cmake: インタラクティブな依存関係の指示を含むシステムcmakeファイルのビルド

– utils: 外部依存関係

# json_spirit: Boost の Spirit ライブラリの JSON パーサー

# libscrypt: scrypt 実装

# secp256k1: SECP 256k1 ECDSA 署名アルゴリズムの実装

cpp-ethereumの自動セットアップ

この文書を書いている時点では、すべての cpp-ethereum 自動化は、http://52.28.164.97 でホストされている Jerkins インスタンスによって実行されています。

このセットアップには http://ethbuilds.com の「便利なエイリアス」がありますが、これは Ethereum Foundation ではなく Bob Summerwill 個人が所有しており、将来的には何かを指すことになるかもしれません。

これは、Go および Python ビルドの Ethereum ダウンロード ページの例に相当します。

2 つの異なる自動化システムが存在するのは理想的ではなく、歴史的な理由によるものです。すべての Ethereum Foundation プロジェクトを単一の継続的な自動化セットアップに統合することは理にかなっていますが、膨大な作業が必要になります。議論中です。 C++ コードベースのリポジトリの再編成が完了すると、より使いやすくなるはずです。

現在の Jenkins の設定では、継続的インテグレーションを形式化するという目標が達成されておらず、これが主な弱点となっています。 HEAD の C++ ビルドが有効か壊れているかを確認するためにアクセスできる単一の URL はありません。プライベート リポジトリが有効か壊れているかを確認するためにリポジトリごとにアクセスできる URL すらありません。

また、リリースしていたリポジトリのセットが有効か壊れているかを知るための、webthree-umbrella の自動化全体が失われました。

プルリクエストの自動化が可能です。これらは、依存するリポジトリの開発ブランチに対して構築されます。複数のリポジトリに関係する変更をテストする場合、それらの依存関係の代替ブランチを指定するためのメカニズムがあります。しかし、破損していました。

これは PR 自動化のための Jenkins プロジェクトです。これらは、新しい PR が作成されるか、既存の PR ブランチの内容が更新されるたびに、Github Webhook を介して自動的にトリガーされます。

  1. alethzero-prs – alethzero による PR テスト

  2. libethereum-prs - libethereum の PR テスト

  3. libweb3core-prs – libweb3core の PR テスト

  4. mix-prs – ミックスのPRテスト

  5. solidity-prs – solidity の PR テスト

  6. webthree-helpers-prs – webthree-helpers の PR テスト

  7. webthree-prs – webthree の PR テスト

他にも Jenkins プロジェクトがいくつかあります。

  1. ethbinaries-develop および ethbinaries-release – 開発リリース webthree-umbrella の Windows および OS X バイナリを生成するプロジェクト。開発プロジェクトは世界標準時の夜間に毎晩実行されます。プロジェクトをリリースして手動で実行します。

  2. ppa-build-develop および ppa-build-release - ソース、ビルド ステップ、およびバイナリをパッケージ化するプロジェクト。ビルド ステップは Launchpad にプッシュされ、そこでビルドされ、成功した場合はバイナリが世界にプッシュされます。開発プログラムは、世界標準時の夜間に毎晩実行されます。手動で実行するプロジェクトをリリースします。

  3. solidity-emscripten – Emscripten 用にコンパイルされた Solidity。これは、以下にリストされている共通ターゲットを呼び出すビルド ターゲットです。開発プログラムは、世界標準時の夜間に毎晩実行されます。

  4. update-umbrella - webthree-umbrella プロジェクト内のサブモジュールを更新するために手動で実行できるユーティリティ プロジェクト。すぐに削除されます。夜間でも手動で作動します。以下のプロジェクトは有効な「リソース ライブラリ」であり、上記の「ユーザー向け」プロジェクトを構築するために使用されます。

  5. ethbinaries-build – ethbinaries-develop および ethbinaries-release と一緒に使用します。

  6. project-build – すべての PR プロジェクトに使用されます。

  7. project-test – すべての PR プロジェクト用。

  8. pullrequest_parser – すべての PR プロジェクトに使用されます。

  9. solidity-emscripten-publisher – solidity-emscripten 用。

ボブはこれらの Jenkins ターゲットが何であるか全く知りません。それらは排除される可能性があります。

  1. コードカバレッジ実行

私たちは、自動化における「魔法の要素」を減らすために、自動化スクリプトを Jenkins から Git に移行するよう意識的に取り組んでいます。まだ作業中ですが、自動化に使用する主要なスクリプトをいくつか紹介します。

  1. homebrew/prepare_receipt.sh – Homebrew 用にビルド

  2. scripts/build_emscripten.sh – Emscripten バイナリをビルドします (browser-solidity 用)

  3. scripts/ethbinaries.sh – Windows および OS X バイナリをビルドします

  4. scripts/ethbuild.sh – ビルドコード(全プラットフォーム)

  5. scripts/ethtests.sh – テストを実行します (すべてのプラットフォーム)

  6. scripts/ppabuild.sh – PPA のバンドルをビルドします

しかし、Jenkins 内にはまだ孤立したスクリプトがいくつか残っています。

  1. Windows PowerShell で Eth ZIP を作成する – win_eth.zip の作成に使用

  2. github_issue_mover.py – cpp-ethereum から webthree-umbrella ライブラリにイベントを移動するためのスクリプト

新しい Jenkins スレーブをセットアップするのは悪夢のようなプロセスです。 OS X スレーブを追加する方法は次のとおりです。他のプラットフォームではプロセスが異なりますが、まだそうする必要はありません。

  1. 適切なオペレーティング ソフトウェアをインストールします (Bob は Apple ID でログインする必要があります)

  2. Macストアから最新のXcodeをインストールする

  3. Homebrewをインストールする

- Xcode選択ライセンスに同意する

– 醸造アップデート

– 醸造アップデート

– まず最初にインストールします (http://www.ethdocs.org/en/latest/ethereum-clients/cpp-ethereum/building-from-source/osx.html)

– Rubyをインストールする

—– https://github.com/rbenv/rbenv#homebrew-on-mac-os-x を参照してください

—– rbenv をインストールします

—–rbenv 初期化

—– Rbenv 1.9.3-p551 をインストール

—– ~/.bash_profile に eval “$(rbenv init –)” を追加します。

- Java Web Start を使用してスレーブに接続する (セキュリティ設定を下げる必要があります)

– デバイスの PATH を Jenkins のノードの構成フィールドにコピーして貼り付けます。

—– 例: /Users/administrator/.rbenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

既知の問題

  1. 標準化された施設の欠如

  2. ウェブ3傘ビルドの欠如

  3. 自動Windowsテストなし

  4. 壊れたクロスリポジトリ PR

  5. サスペンションテスト

  6. 不完全なテストセット

  7. 「ethereum/tests」を実行しましたか?

  8. 「ethereum/rpc-tests」を実行しましたか?

  9. Windows ボックスでは Windows 7 Home Edition が実行されています。 RDC アクセスがありません。

  10. Visual Studio 2013 を実行します。

  11. VS2015 で Windows 10 を実行する必要があります。ターゲットは Windows 7 です。

  12. 有効なEl Capitanバイナリはまだありません

  13. ループごとにHomebrew/PPAアップデートを行う人はいない

  14. クリーンビルドをしたことがありませんか?

次回は「Ethereumシリーズ(10):Go、Java、Python、Ruby、JSクライアント入門」を紹介します。

「Ethereum Homestead ドキュメント」の翻訳と校正に協力してくれた Chaoxi チームの Azure と Bob に感謝します。


<<:  米国の信用組合がCUレジャーブロックチェーンアライアンスを立ち上げ

>>:  ウォールストリートニュース:中国の買い手が再び力強い購入を行い、ビットコインの価格は短期的に10%上昇した

推薦する

暗号通貨コミュニティはFilecoinに注目している

汎用ブロックチェーンは、暗号化とインセンティブ構造の組み合わせに依存しており、これにより、集中管理を...

日本のみずほ銀行は銀行デジタル通貨を開発し、IBMと協力してブロックチェーンの即時決済をテストする

日本の大手銀行であるみずほフィナンシャルグループとテクノロジー大手のIBMは、IBMがLinux F...

ドイツ銀行協会:ブロックチェーンは証券市場に革命を起こす可能性がある

Coindeskによると、11月19日、ドイツ銀行協会(Bankenverband)は最近、ブロック...

Filecoin は大手マイナーを公式にテストに招待しており、注目すべき重要なポイントが 6 つあります。

RFP: PBレベルのマイナーテストプロジェクト名: 大型鉱山テスト提案カテゴリ: 鉱業提案者: ...

オーストラリアのスタートアップ企業が数分で結果が出る投票システムの開発に取り組む

クレイジーな解説:オーストラリアの政治情勢は混沌としており、選挙結果は衝撃的です。 2014年にはオ...

IBM がブロックチェーンに賭けているのはなぜですか? Hyperledger プロジェクトの目的は何ですか?

世界的テクノロジー大手IBMは最近、サンフランシスコで開催されたブロックチェーンカンファレンスに参加...

バングラデシュ中央銀行がビットコインを違法と宣言、警察がトレーダー数人を逮捕開始

バングラデシュの法執行機関は、同国では依然として暗号通貨が違法であるため、ビットコインを使用および取...

IBMが大規模な商用ブロックチェーンプロジェクトを立ち上げ、取引紛争解決の効率が数倍向上

ビッグブルーIBMは、ビットコインの基盤となるオンライン台帳であるブロックチェーンの最大級の商用アプ...

ビットコインのマイニングは本当に電気の無駄なのでしょうか?

ビットコインは分散型のピアツーピアシステムです。ネットワークには「中央」サーバーや制御ポイントは存在...

イーサリアムの可能性はスポットETFの承認だけではない

イーサリアムスポットETFが承認された後、イーサリアムに対する全員一致の弱気感情は変化した。イーサリ...

CFTC委員長が改めて主張:BTCとETHは商品である

仮想通貨市場の規制をめぐる米国証券取引委員会(SEC)と商品先物取引委員会(CFTC)の権力闘争によ...

ビットコインは再び人気が出るでしょうか?ノーベル経済学賞受賞者のロバート・シラーはそれが可能だと信じている

ノーベル賞受賞経済学者ロバート・シラー氏はCNBCテレビの視聴者に対し、ビットコインは再び「爆発」す...

Visaは、パートナーが法定通貨取引を決済するためにイーサリアム(ETH)ブロックチェーンを使用できるようにする予定である。

大手クレジットプロバイダーの #Visa# は、パートナーがイーサリアム (ETH) ブロックチェー...