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

推薦する

ビットコイン:トレンドはそれほど悪くなく、主なテーマは依然としてボラティリティです

最近は市場で大きなニュースはなく、全体的なボラティリティは大きくありません。サポートとレジスタンスの...

BTCCマイニングプールのマイナーはAISIトークンの株式を共有する

AiSi コミュニティは、Chong Ge 氏のような初期のブロックチェーン伝道者のグループによって...

ブロックチェーンはビットコインを超えて次のホットな話題となるでしょうか?

導入仮想通貨ビットコインは2009年に発売されて以来、資本市場で求められ、話題になっています。ビット...

経済破綻はビットコインにどのような影響を与えるでしょうか?

著者: GTong画像ソース: Dazhi多くのビットコインファンは世界経済の健全性について楽観的で...

中国中央銀行のデジタル通貨研究所は北京、深セン、蘇州でインターンを募集している。

最近、中国人民銀行デジタル通貨研究所は「デジタル研究スタープログラム」のインターンシップ募集を発表し...

クジラがETHを大量に売却し、数百万ドルを稼ぐ

出典: LongHash暗号資産市場調査チームSantimentのデータによると、3月8日の暴落の前...

VISAのNFTレイアウトは、主要株主のバフェット氏を暗号通貨の「味方」に変えるだろうか?

8月23日、バフェット氏の16番目に大きな保有資産であるVISAは、15ドル相当のイーサリアムでN...

ブロックチェーンは不正投票を防ぐことができるが、現段階では完璧な解決策ではない

11月8日の決戦が近づく中、サイバーセキュリティは2016年米国大統領選挙で最もホットな話題の一つと...

ファイルコインが正式に発表:7月6日にテストネット報酬プランの準備が完了した

この記事は元々 IPFS Force Zoneによって書かれました本日、Github 上で新たなマイ...

Vitalik Token2049 スピーチ: 今後 10 年間の Ethereum の展望 (PPT 付き)

2024年9月18日、イーサリアムの共同創設者であるVitalikは、Token 2049カンファ...

Chain of Thingsブロックチェーントランスポートカンファレンスは、香港サイバーポートと香港サイエンステクノロジーパークの支援を受けています。

クレイジーコメント: 香港のブロックチェーンおよびモノのインターネットのスタートアップ企業 Chai...

呉季涵:詹克団との対立は2018年の解雇騒動の際に勃発した。詹克団は当初、解雇に反対していた。

ビットメインの火曜日の社員会議の議事録によると、呉季漢氏は会議で、自分と戦克団氏は2015年から対立...

2021 年に最もパフォーマンスの良かった暗号資産は何ですか?

時価総額上位2位の暗号資産であるビットコインとイーサリアムは、2021年にそれぞれ67%と450%上...

楽天のアンケートでお金とポイントを稼ぎ、現金報酬と交換しましょう

有料オンラインアンケート調査プラットフォーム「楽天インサイト」は、楽天グループ傘下の専門的な市場調査...