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%上昇した

推薦する

暗号通貨投資の専門家:機関投資家はビットコインの価格を極めて高い水準に押し上げるだろう

ビットコインの価格が新たな高値を更新しているが、その強気相場はまもなく終了するのだろうか?ゼロキャッ...

デジタル資産の盗難はよく起こります。自分の資産の安全を確保するにはどうすればよいでしょうか?

デジタル資産の盗難事件は頻繁に発生しており、そのセキュリティは常に熱い議論の的となっています。ビット...

ビットコインは弱いトレンドを反転させておらず、短期的な重要な抵抗は10370である。

OKEx無期限契約(BTC/USDT)のデータによると、9月2日の急落以来、新たな安値を更新し続け...

ブロックチェーンが連邦準備制度理事会の第16回年次金融業界政策会議のテーマに

著者: ManjiMasha今月初め、ワシントンDCで3日間にわたる第16回年次金融業界政策会議が開...

BTC スタンプの簡単な分析: ビットコイン NFT の新しいアウトレット

BTC スタンプと呼ばれる新しいビットコイン NFT 実装が作成され、最初の 20 日間で、この方法...

マイニングマシンの生と死の10年: それは「富の創造の神話」か、それとも「欲望の深淵」か?

「マイニング マシン」(この記事ではビットコイン マイニング マシンについて言及しています)業界は...

ハードフォークコード開発のこの重要な瞬間に、DAO トークン保有者に何が起こるのでしょうか?

この投稿は DAO トークン保有者向けであり、ハードフォークがあなたにどのような影響を与えるかを詳し...

ETCは5月24日にハードフォークアップグレードを実施し、難易度爆弾を取り除く予定である。

イーサリアムクラシック(ETC)は、ETHをPOSに切り替えるように設計された「難易度爆弾」を削除す...

インド準備銀行がブロックチェーン技術を公に支持

ビットコイン業界で活躍する人々にとって、最近いくつかの出来事が起こり、これらすべてが意味を持ち始めま...

コインゾーントレンド: 今週のビッグデータに基づくビットコインの価格動向 (2017-01-11)

振幅は縮小し続け、正中線の方向は1. 市場動向<br/>今日は2017年1月11日です。...

OCC銀行憲章によりビットコイン取引所に特別な銀行資格が付与される

クレイジーな解説:米国財務省傘下の通貨監督庁の公式サイトは、デジタル通貨取引所に特別な銀行ライセンス...

ビットコイン機関投資家が復帰:10万ドル以上の取引が年間最高を記録

ビットコインの現在の上場投資信託(ETF)主導の強気相場では、10万ドルを超える大規模な取引が復活し...

エルサルバドルの偉大な実験 + Taproot のアップグレード: ビットコインの衰退しつつある支払い機能は復活できるか?

ウー氏は著者にこう語った |ポプラの木この号の編集者 |コリン・ウービットコインが「世界通貨」なのか...